Translator documentation added/updated.
Whitespace updates.
'author' => 'Evan Prodromou',
'homepage' => 'http://status.net/wiki/Plugin:BlankAdPlugin',
'rawdescription' =>
+ // TRANS: Plugin description.
_m('Plugin for testing ad layout.'));
return true;
}
} else {
common_debug("Blogspamnet results = " . $response);
if (preg_match('/^ERROR(:(.*))?$/', $response, $match)) {
- throw new ServerException(sprintf(_m("Error from %1$s: %2$s"), $this->baseUrl, $match[2]), 500);
+ // TRANS: Server exception thrown when blogspam.net returns error status.
+ // TRANS: %1$s is the base URL, %2$s is the error (unknown contents; no period).
+ throw new ServerException(sprintf(_m('Error from %1$s: %2$s'), $this->baseUrl, $match[2]), 500);
} else if (preg_match('/^SPAM(:(.*))?$/', $response, $match)) {
- throw new ClientException(sprintf(_m("Spam checker results: %s"), $match[2]), 400);
+ // TRANS: Server exception thrown when blogspam.net returns spam status.
+ // TRANS: Does not end with period because of unknown contents for %s (spam match).
+ throw new ClientException(sprintf(_m('Spam checker results: %s'), $match[2]), 400);
} else if (preg_match('/^OK$/', $response)) {
// don't do anything
} else {
- throw new ServerException(sprintf(_m("Unexpected response from %1$s: %2$s"), $this->baseUrl, $response), 500);
+ // TRANS: Server exception thrown when blogspam.net returns an unexpected status.
+ // TRANS: %1$s is the base URL, %2$s is the response (unknown contents; no period).
+ throw new ServerException(sprintf(_m('Unexpected response from %1$s: %2$s'), $this->baseUrl, $response), 500);
}
}
return true;
'author' => 'Evan Prodromou, Brion Vibber',
'homepage' => 'http://status.net/wiki/Plugin:BlogspamNet',
'rawdescription' =>
+ // TRANS: Plugin description.
_m('Plugin to check submitted notices with blogspam.net.'));
return true;
}
*
* @see DB_DataObject
*/
-
class Bookmark extends Memcached_DataObject
{
public $__table = 'bookmark'; // table name
* @return User_greeting_count object found, or null for no hits
*
*/
-
function staticGet($k, $v=null)
{
return Memcached_DataObject::staticGet('Bookmark', $k, $v);
* @return Bookmark object found, or null for no hits
*
*/
-
function pkeyGet($kv)
{
return Memcached_DataObject::pkeyGet('Bookmark', $kv);
*
* @return array array of column definitions
*/
-
function table()
{
return array('id' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
'title' => DB_DATAOBJECT_STR,
'description' => DB_DATAOBJECT_STR,
'uri' => DB_DATAOBJECT_STR,
- 'created' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE +
+ 'created' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE +
DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL);
}
*
* @return array list of key field names
*/
-
function keys()
{
return array_keys($this->keyTypes());
*
* @return array associative array of key definitions
*/
-
function keyTypes()
{
return array('id' => 'K',
*
* @return array magic three-false array that stops auto-incrementing.
*/
-
function sequenceKey()
{
return array(false, false, false);
/**
* Get a bookmark based on a notice
- *
+ *
* @param Notice $notice Notice to check for
*
* @return Bookmark found bookmark or null
*/
-
function getByNotice($notice)
{
return self::staticGet('uri', $notice->uri);
*
* @return Bookmark bookmark found or null
*/
-
static function getByURL($profile, $url)
{
$nb = new Bookmark();
-
+
$nb->profile_id = $profile->id;
$nb->url = $url;
*
* @return Notice saved notice
*/
-
static function saveNew($profile, $title, $url, $rawtags, $description,
$options=null)
{
$nb = self::getByURL($profile, $url);
if (!empty($nb)) {
+ // TRANS: Client exception thrown when trying to save a new bookmark that already exists.
throw new ClientException(_m('Bookmark already exists.'));
}
if (array_key_exists('uri', $options)) {
$other = Bookmark::staticGet('uri', $options['uri']);
if (!empty($other)) {
+ // TRANS: Client exception thrown when trying to save a new bookmark that already exists.
throw new ClientException(_m('Bookmark already exists.'));
}
}
try {
$user = User::staticGet('id', $profile->id);
- $shortUrl = File_redirection::makeShort($url,
+ $shortUrl = File_redirection::makeShort($url,
empty($user) ? null : $user);
} catch (Exception $e) {
// Don't let this stop us.
$shortUrl = $url;
}
- // @todo FIXME: i18n documentation.
- // TRANS: %1$s is a title, %2$s is a short URL, %3$s is a description,
+ // TRANS: Bookmark content.
+ // TRANS: %1$s is a title, %2$s is a short URL, %3$s is the bookmark description,
// TRANS: %4$s is space separated list of hash tags.
$content = sprintf(_m('"%1$s" %2$s %3$s %4$s'),
$title,
$description,
implode(' ', $hashtags));
+ // TRANS: Rendered bookmark content.
+ // TRANS: %1$s is a URL, %2$s the bookmark title, %3$s is the bookmark description,
+ // TRANS: %4$s is space separated list of hash tags.
$rendered = sprintf(_m('<span class="xfolkentry">'.
'<a class="taggedlink" href="%1$s">%2$s</a> '.
'<span class="description">%3$s</span> '.
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
-
class BookmarkPlugin extends MicroAppPlugin
{
const VERSION = '0.1';
*
* @return boolean hook value
*/
-
function onUserRightsCheck($profile, $right, &$result)
{
if ($right == self::IMPORTDELICIOUS) {
*
* @return boolean hook value; true means continue processing, false means stop.
*/
-
function onCheckSchema()
{
$schema = Schema::get();
*
* @return boolean hook value
*/
-
function onEndShowStyles($action)
{
$action->cssLink($this->path('bookmark.css'));
*
* @return boolean hook value; true means continue processing, false means stop.
*/
-
function onAutoload($cls)
{
$dir = dirname(__FILE__);
*
* @return boolean hook value; true means continue processing, false means stop.
*/
-
function onRouterInitialized($m)
{
$m->connect('main/bookmark/new',
* Add our two queue handlers to the queue manager
*
* @param QueueManager $qm current queue manager
- *
+ *
* @return boolean hook value
*/
-
function onEndInitializeQueueManager($qm)
{
$qm->connect('dlcsback', 'DeliciousBackupImporter');
* Plugin version data
*
* @param array &$versions array of version data
- *
+ *
* @return value
*/
-
function onPluginVersion(&$versions)
{
$versions[] = array('name' => 'Sample',
'author' => 'Evan Prodromou',
'homepage' => 'http://status.net/wiki/Plugin:Bookmark',
'rawdescription' =>
+ // TRANS: Plugin description.
_m('Simple extension for supporting bookmarks.'));
return true;
}
*
* @return boolean hook value
*/
-
function onStartLoadDoc(&$title, &$output)
{
if ($title == 'bookmarklet') {
return true;
}
-
-
/**
* Show a link to our delicious import page on profile settings form
*
*
* @return boolean hook value
*/
-
function onEndProfileSettingsActions($action)
{
$user = common_current_user();
-
+
if (!empty($user) && $user->hasRight(self::IMPORTDELICIOUS)) {
$action->elementStart('li');
$action->element('a',
array('href' => common_local_url('importdelicious')),
+ // TRANS: Link text in proile leading to import form.
_m('Import del.icio.us bookmarks'));
$action->elementEnd('li');
}
*
* @return Notice resulting notice.
*/
-
static private function _postRemoteBookmark(Ostatus_profile $author,
Activity $activity)
{
'url' => $bookmark->link,
'is_local' => Notice::REMOTE_OMB,
'source' => 'ostatus');
-
+
return self::_postBookmark($author->localProfile(), $activity, $options);
}
*
* @return true if it's a Post of a Bookmark, else false
*/
-
static private function _isPostBookmark($activity)
{
return ($activity->verb == ActivityVerb::POST &&
* When a notice is deleted, delete the related Bookmark
*
* @param Notice $notice Notice being deleted
- *
+ *
* @return boolean hook value
*/
-
function deleteRelated($notice)
{
$nb = Bookmark::getByNotice($notice);
*
* @return Notice resulting notice
*/
-
function saveNoticeFromActivity($activity, $profile, $options=array())
{
$bookmark = $activity->objects[0];
$relLinkEls = ActivityUtils::getLinks($bookmark->element, 'related');
if (count($relLinkEls) < 1) {
+ // TRANS: Client exception thrown when a bookmark is formatted incorrectly.
throw new ClientException(_m('Expected exactly 1 link '.
'rel=related in a Bookmark.'));
}
$attachments = $notice->attachments();
if (count($attachments) != 1) {
+ // TRANS: Server exception thrown when a bookmark has multiple attachments.
throw new ServerException(_m('Bookmark notice with the '.
'wrong number of attachments.'));
}
}
$object->extra[] = array('link', $attrs, null);
-
+
// Attributes of the thumbnail, if any
$thumbnail = $target->getThumbnail();
if (count($atts) < 1) {
// Something wrong; let default code deal with it.
- throw new Exception("That can't be right.");
+ // TRANS: Exception thrown when a bookmark has no attachments.
+ throw new Exception(_m('Bookmark has no attachments.'));
}
$att = $atts[0];
if (!empty($replies) || !empty($tags)) {
$out->elementStart('ul', array('class' => 'bookmark-tags'));
-
+
foreach ($replies as $reply) {
$other = Profile::staticGet('id', $reply);
$out->elementStart('li');
foreach ($tags as $tag) {
$out->elementStart('li');
- $out->element('a',
+ $out->element('a',
array('rel' => 'tag',
'href' => Notice_tag::url($tag)),
$tag);
$avatar = $profile->getAvatar(AVATAR_MINI_SIZE);
- $out->element('img',
+ $out->element('img',
array('src' => ($avatar) ?
$avatar->displayUrl() :
Avatar::defaultImage(AVATAR_MINI_SIZE),
$out->raw(' '); // avoid for AJAX XML compatibility
$out->elementStart('span', 'vcard author'); // hack for belongsOnTimeline; JS needs to be able to find the author
- $out->element('a',
+ $out->element('a',
array('class' => 'url',
'href' => $profile->profileurl,
'title' => $profile->getBestName()),
function appTitle()
{
- return _m('Bookmark');
+ // TRANS: Application title.
+ return _m('TITLE','Bookmark');
}
}
* Copyright (C) 2010, StatusNet, Inc.
*
* Form for adding a new bookmark
- *
+ *
* PHP version 5
*
* This program is free software: you can redistribute it and/or modify
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
-
class BookmarkForm extends Form
{
private $_title = null;
*
* @return void
*/
-
function __construct($out=null, $title=null, $url=null, $tags=null,
$description=null)
{
*
* @return int ID of the form
*/
-
function id()
{
return 'form_new_bookmark';
*
* @return string class of the form
*/
-
function formClass()
{
return 'form_settings ajax-notice';
*
* @return string URL of the action
*/
-
function action()
{
return common_local_url('newbookmark');
*
* @return void
*/
-
function formData()
{
$this->out->elementStart('fieldset', array('id' => 'new_bookmark_data'));
$this->li();
$this->out->input('title',
+ // TRANS: Field label on form for adding a new bookmark.
_m('LABEL','Title'),
$this->_title,
- _m('Title of the bookmark'));
+ // TRANS: Field title on form for adding a new bookmark.
+ _m('Title of the bookmark.'));
$this->unli();
$this->li();
$this->out->input('url',
+ // TRANS: Field label on form for adding a new bookmark.
_m('LABEL','URL'),
- $this->_url,
- _m('URL to bookmark'));
+ $this->_url,
+ // TRANS: Field title on form for adding a new bookmark.
+ _m('URL to bookmark.'));
$this->unli();
$this->li();
$this->out->input('tags',
+ // TRANS: Field label on form for adding a new bookmark.
_m('LABEL','Tags'),
- $this->_tags,
- _m('Comma- or space-separated list of tags'));
+ $this->_tags,
+ // TRANS: Field title on form for adding a new bookmark.
+ _m('Comma- or space-separated list of tags.'));
$this->unli();
$this->li();
$this->out->input('description',
+ // TRANS: Field label on form for adding a new bookmark.
_m('LABEL','Description'),
- $this->_description,
- _m('Description of the URL'));
+ $this->_description,
+ // TRANS: Field title on form for adding a new bookmark.
+ _m('Description of the URL.'));
$this->unli();
$this->out->elementEnd('ul');
function formActions()
{
+ // TRANS: Button text for action to save a new bookmark.
$this->out->submit('submit', _m('BUTTON', 'Save'));
}
}
*
* @return void
*/
-
function showTitle()
{
- // TRANS: Title for mini-posting window loaded from bookmarklet.
- // TRANS: %s is the StatusNet site name.
- $this->element('title',
- null, sprintf(_m('Bookmark on %s'),
+ $this->element('title',
+ // TRANS: Title for mini-posting window loaded from bookmarklet.
+ // TRANS: %s is the StatusNet site name.
+ null, sprintf(_m('Bookmark on %s'),
common_config('site', 'name')));
}
*
* @return void
*/
-
function showHeader()
{
$this->elementStart('div', array('id' => 'header'));
/**
* Hide the core section of the page
- *
+ *
* @return void
*/
-
function showCore()
{
}
*
* @return void
*/
-
function showFooter()
{
}
* Copyright (C) 2010, StatusNet, Inc.
*
* Importer class for Delicious.com backups
- *
+ *
* PHP version 5
*
* This program is free software: you can redistribute it and/or modify
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
-
class DeliciousBackupImporter extends QueueHandler
{
/**
*
* @return string transport string
*/
-
function transport()
{
return 'dlcsback';
*
* @return boolean success value
*/
-
function handle($data)
{
list($user, $body) = $data;
$dls = $doc->getElementsByTagName('dl');
if ($dls->length != 1) {
- throw new ClientException(_m("Bad import file."));
+ // TRANS: Client exception thrown when a file upload is incorrect.
+ throw new ClientException(_m('Bad import file.'));
}
$dl = $dls->item(0);
common_log(LOG_INFO, 'Skipping the <p> in the <dl>.');
break;
default:
- common_log(LOG_WARNING,
+ common_log(LOG_WARNING,
"Unexpected element $child->tagName ".
" found in import.");
}
/**
* Import a single bookmark
- *
+ *
* Takes a <dt>/<dd> pair. The <dt> has a single
* <a> in it with some non-standard attributes.
- *
+ *
* A <dt><dt><dd> sequence will appear as a <dt> with
- * anothe <dt> as a child. We handle this case recursively.
+ * anothe <dt> as a child. We handle this case recursively.
*
* @param User $user User to import data as
* @param DOMElement $dt <dt> element
*
* @return Notice imported notice
*/
-
function importBookmark($user, $dt, $dd = null)
{
$as = $dt->getElementsByTagName('a');
if ($as->length == 0) {
+ // TRANS: Client exception thrown when a bookmark in an import file is incorrectly formatted.
throw new ClientException(_m("No <A> tag in a <DT>."));
}
$private = $a->getAttribute('private');
if ($private != 0) {
+ // TRANS: Client exception thrown when a bookmark in an import file is private.
throw new ClientException(_m('Skipping private bookmark.'));
}
$this->fixListItem($node);
}
}
-
}
* Copyright (C) 2010, StatusNet, Inc.
*
* Importer class for Delicious.com bookmarks
- *
+ *
* PHP version 5
*
* This program is free software: you can redistribute it and/or modify
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
-
class DeliciousBookmarkImporter extends QueueHandler
{
/**
*
* @return string 'dlcsbkmk'
*/
-
function transport()
{
return 'dlcsbkmk';
/**
* Handle the data
- *
+ *
* @param array $data associative array of user & bookmark info from DeliciousBackupImporter::importBookmark()
*
* @return boolean success value
*/
-
function handle($data)
{
$profile = Profile::staticGet('id', $data['profile_id']);
* Copyright (C) 2010 StatusNet, Inc.
*
* Import a bookmarks file as notices
- *
+ *
* PHP version 5
*
* This program is free software: you can redistribute it and/or modify
/**
* Get the bookmarks file as a string
- *
+ *
* Uses the -f or --file parameter to open and read a
* a bookmarks file
*
}
if (!file_exists($filename)) {
- throw new Exception("No such file '$filename'.");
+ // TRANS: Exception thrown when a file upload cannot be found.
+ // TRANS: %s is the file that could not be found.
+ throw new Exception(sprintf(_m('No such file "%s".'),$filename));
}
if (!is_file($filename)) {
- throw new Exception("Not a regular file: '$filename'.");
+ // TRANS: Exception thrown when a file upload is incorrect.
+ // TRANS: %s is the irregular file.
+ throw new Exception(sprintf(_m('Not a regular file: "%s".'),$filename));
}
if (!is_readable($filename)) {
- throw new Exception("File '$filename' not readable.");
+ // TRANS: Exception thrown when a file upload is not readable.
+ // TRANS: %s is the file that could not be read.
+ throw new Exception(sprintf(_m('File "%s" not readable.'),$filename));
}
// TRANS: %s is the filename that contains a backup for a user.
- printfv(_m("Getting backup from file \"%s\".")."\n", $filename);
+ printfv(_m('Getting backup from file "%s".')."\n", $filename);
$html = file_get_contents($filename);
$html = getBookmarksFile();
$qm = QueueManager::get();
-
+
$qm->enqueue(array($user, $html), 'dlcsback');
} catch (Exception $e) {
* Copyright (C) 2010, StatusNet, Inc.
*
* Import del.icio.us bookmarks backups
- *
+ *
* PHP version 5
*
* This program is free software: you can redistribute it and/or modify
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
-
class ImportdeliciousAction extends Action
{
protected $success = false;
*
* @return string page title
*/
-
function title()
{
+ // TRANS: Title for page to import del.icio.us bookmark backups on.
return _m("Import del.icio.us bookmarks");
}
*
* @return boolean true
*/
-
function prepare($argarray)
{
parent::prepare($argarray);
$cur = common_current_user();
if (empty($cur)) {
+ // TRANS: Client exception thrown when trying to import bookmarks without being logged in.
throw new ClientException(_m('Only logged-in users can '.
'import del.icio.us backups.'),
403);
}
if (!$cur->hasRight(BookmarkPlugin::IMPORTDELICIOUS)) {
+ // TRANS: Client exception thrown when trying to import bookmarks without having the rights to do so.
throw new ClientException(_m('You may not restore your account.'), 403);
}
*
* @return void
*/
-
function handle($argarray=null)
{
parent::handle($argarray);
/**
* Queue a file for importation
- *
+ *
* Uses the DeliciousBackupImporter class; may take a long time!
*
* @return void
*/
-
function importDelicious()
{
$this->checkSessionToken();
if (!isset($_FILES[ImportDeliciousForm::FILEINPUT]['error'])) {
+ // TRANS: Client exception thrown when trying to import bookmarks and upload fails.
throw new ClientException(_m('No uploaded file.'));
}
return;
case UPLOAD_ERR_FORM_SIZE:
throw new ClientException(
- // TRANS: Client exception.
+ // TRANS: Client exception thrown when an uploaded file is too large.
_m('The uploaded file exceeds the MAX_FILE_SIZE directive' .
' that was specified in the HTML form.'));
return;
case UPLOAD_ERR_PARTIAL:
@unlink($_FILES[ImportDeliciousForm::FILEINPUT]['tmp_name']);
- // TRANS: Client exception.
+ // TRANS: Client exception thrown when a file was only partially uploaded.
throw new ClientException(_m('The uploaded file was only' .
' partially uploaded.'));
return;
case UPLOAD_ERR_NO_FILE:
// No file; probably just a non-AJAX submission.
+ // TRANS: Client exception thrown when a file upload has failed.
throw new ClientException(_m('No uploaded file.'));
return;
case UPLOAD_ERR_NO_TMP_DIR:
- // TRANS: Client exception thrown when a temporary folder is not present
+ // TRANS: Client exception thrown when a temporary folder is not present.
throw new ClientException(_m('Missing a temporary folder.'));
return;
case UPLOAD_ERR_CANT_WRITE:
- // TRANS: Client exception thrown when writing to disk is not possible
+ // TRANS: Client exception thrown when writing to disk is not possible.
throw new ClientException(_m('Failed to write file to disk.'));
return;
case UPLOAD_ERR_EXTENSION:
- // TRANS: Client exception thrown when a file upload has been stopped
+ // TRANS: Client exception thrown when a file upload has been stopped.
throw new ClientException(_m('File upload stopped by extension.'));
return;
default:
common_log(LOG_ERR, __METHOD__ . ": Unknown upload error " .
$_FILES[ImportDeliciousForm::FILEINPUT]['error']);
- // TRANS: Client exception thrown when a file upload operation has failed
+ // TRANS: Client exception thrown when a file upload operation has failed.
throw new ClientException(_m('System error uploading file.'));
return;
}
try {
if (!file_exists($filename)) {
- throw new ServerException("No such file '$filename'.");
+ // TRANS: Server exception thrown when a file upload cannot be found.
+ // TRANS: %s is the file that could not be found.
+ throw new ServerException(sprintf(_m('No such file "%s".'),$filename));
}
-
+
if (!is_file($filename)) {
- throw new ServerException("Not a regular file: '$filename'.");
+ // TRANS: Server exception thrown when a file upload is incorrect.
+ // TRANS: %s is the irregular file.
+ throw new ServerException(sprintf(_m('Not a regular file: "%s".'),$filename));
}
-
+
if (!is_readable($filename)) {
- throw new ServerException("File '$filename' not readable.");
+ // TRANS: Server exception thrown when a file upload is not readable.
+ // TRANS: %s is the file that could not be read.
+ throw new ServerException(sprintf(_m('File "%s" not readable.'),$filename));
}
-
- common_debug(sprintf(_m("Getting backup from file '%s'."), $filename));
+
+ common_debug(sprintf("Getting backup from file '%s'.", $filename));
$html = file_get_contents($filename);
*
* @return void
*/
-
function showContent()
{
if ($this->success) {
$this->element('p', null,
+ // TRANS: Success message after importing bookmarks.
_m('Bookmarks have been imported. Your bookmarks should now appear in search and your profile page.'));
} else if ($this->inprogress) {
$this->element('p', null,
+ // TRANS: Busy message for importing bookmarks.
_m('Bookmarks are being imported. Please wait a few minutes for results.'));
} else {
$form = new ImportDeliciousForm($this);
*
* @return boolean is read only action?
*/
-
function isReadOnly($args)
{
return !$this->isPost();
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
-
class ImportDeliciousForm extends Form
{
const FILEINPUT = 'deliciousbackupfile';
/**
* Constructor
- *
+ *
* Set the encoding type, since this is a file upload.
*
* @param HTMLOutputter $out output channel
*
* @return ImportDeliciousForm this
*/
-
function __construct($out=null)
{
parent::__construct($out);
*
* @return string the form's class
*/
-
function formClass()
{
return 'form_import_delicious';
*
* @return string the form's action URL
*/
-
function action()
{
return common_local_url('importdelicious');
/**
* Output form data
- *
+ *
* Really, just instructions for doing a backup.
*
* @return void
*/
-
function formData()
{
$this->out->elementStart('p', 'instructions');
+ // TRANS: Form instructions for importing bookmarks.
$this->out->raw(_m('You can upload a backed-up '.
'delicious.com bookmarks file.'));
-
+
$this->out->elementEnd('p');
$this->out->elementStart('ul', 'form_data');
/**
* Buttons for the form
- *
+ *
* In this case, a single submit button
*
* @return void
function formActions()
{
$this->out->submit('submit',
+ // TRANS: Button text on form to import bookmarks.
_m('BUTTON', 'Upload'),
'submit',
null,
- _m('Upload the file'));
+ // TRANS: Button title on form to import bookmarks.
+ _m('Upload the file.'));
}
}
* Copyright (C) 2010, StatusNet, Inc.
*
* Add a new bookmark
- *
+ *
* PHP version 5
*
* This program is free software: you can redistribute it and/or modify
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
-
class NewbookmarkAction extends Action
{
protected $user = null;
*
* @return string Action title
*/
-
function title()
{
+ // TRANS: Title for action to create a new bookmark.
return _m('New bookmark');
}
*
* @return boolean true
*/
-
function prepare($argarray)
{
parent::prepare($argarray);
$this->user = common_current_user();
if (empty($this->user)) {
- throw new ClientException(_m("Must be logged in to post a bookmark."),
+ // TRANS: Client exception thrown when trying to create a new bookmark while not logged in.
+ throw new ClientException(_m('Must be logged in to post a bookmark.'),
403);
}
*
* @return void
*/
-
function handle($argarray=null)
{
parent::handle($argarray);
*
* @return void
*/
-
function newBookmark()
{
if ($this->boolean('ajax')) {
}
try {
if (empty($this->title)) {
+ // TRANS: Client exception thrown when trying to create a new bookmark without a title.
throw new ClientException(_m('Bookmark must have a title.'));
}
if (empty($this->url)) {
+ // TRANS: Client exception thrown when trying to create a new bookmark without a URL.
throw new ClientException(_m('Bookmark must have an URL.'));
}
$this->xw->startDocument('1.0', 'UTF-8');
$this->elementStart('html');
$this->elementStart('head');
- // TRANS: Page title after sending a notice.
- $this->element('title', null, _m('Notice posted'));
+ // TRANS: Page title after posting a bookmark.
+ $this->element('title', null, _m('Bookmark posted'));
$this->elementEnd('head');
$this->elementStart('body');
$this->showNotice($saved);
*
* @return void
*/
-
function showContent()
{
if (!empty($this->error)) {
*
* @return boolean is read only action?
*/
-
function isReadOnly($args)
{
if ($_SERVER['REQUEST_METHOD'] == 'GET' ||
}
}
}
-
\ No newline at end of file
* Copyright (C) 2010, StatusNet, Inc.
*
* Notice stream of notices with a given attachment
- *
+ *
* PHP version 5
*
* This program is free software: you can redistribute it and/or modify
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
-
class NoticebyurlAction extends Action
{
protected $url = null;
*
* @return boolean true
*/
-
function prepare($argarray)
{
parent::prepare($argarray);
-
+
$this->file = File::staticGet('id', $this->trimmed('id'));
if (empty($this->file)) {
- throw new ClientException(_m('Unknown URL'));
+ // TRANS: Client exception thrown when an unknown URL is provided.
+ throw new ClientException(_m('Unknown URL.'));
}
$pageArg = $this->trimmed('page');
*
* @return string page title
*/
-
function title()
{
if ($this->page == 1) {
- return sprintf(_m("Notices linking to %s"), $this->file->url);
+ // TRANS: Title of notice stream of notices with a given attachment (first page).
+ // TRANS: %s is the URL.
+ return sprintf(_m('Notices linking to %s'), $this->file->url);
} else {
- return sprintf(_m("Notices linking to %1$s, page %2$d"),
+ // TRANS: Title of notice stream of notices with a given attachment (all but first page).
+ // TRANS: %1$s is the URL, %2$s is the page number.
+ return sprintf(_m('Notices linking to %1$s, page %2$d'),
$this->file->url,
$this->page);
}
*
* @return void
*/
-
function handle($argarray=null)
{
$this->showPage();
*
* @return void
*/
-
function showContent()
{
$nl = new NoticeList($this->notices, $this);
*
* @return boolean is read only action?
*/
-
function isReadOnly($args)
{
return true;
*
* @return string etag http header
*/
-
function etag()
{
return null;
function getNotice()
{
-
$this->id = $this->trimmed('id');
$this->bookmark = Bookmark::staticGet('id', $this->id);