X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Fnewnotice.php;h=3e601ae3628ce1c71151e91569d63666faa49e64;hb=382e4d2cdbd2dbfa211077fb9bce35441b8743cd;hp=ca6355cbffdc64faccee35ae39407458d44451f0;hpb=7dd46222a86a54be9d268a36291b795087fbd5c8;p=quix0rs-gnu-social.git diff --git a/actions/newnotice.php b/actions/newnotice.php index ca6355cbff..3e601ae362 100644 --- a/actions/newnotice.php +++ b/actions/newnotice.php @@ -47,13 +47,11 @@ require_once INSTALLDIR . '/lib/mediafile.php'; * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ - class NewnoticeAction extends Action { /** * Error message, if any */ - var $msg = null; /** @@ -63,9 +61,9 @@ class NewnoticeAction extends Action * * @return string page title */ - function title() { + // TRANS: Page title for sending a new notice. return _('New notice'); } @@ -82,18 +80,21 @@ class NewnoticeAction extends Action * * @return void */ - function handle($args) { if (!common_logged_in()) { + // TRANS: Client error displayed trying to send a notice while not logged in. $this->clientError(_('Not logged in.')); } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { // check for this before token since all POST and FILES data // is losts when size is exceeded if (empty($_POST) && $_SERVER['CONTENT_LENGTH']) { - $this->clientError(sprintf(_('The server was unable to handle ' . - 'that much POST data (%s bytes) due to its current configuration.'), - $_SERVER['CONTENT_LENGTH'])); + // TRANS: Client error displayed when the number of bytes in a POST request exceeds a limit. + // TRANS: %s is the number of bytes of the CONTENT_LENGTH. + $msg = _m('The server was unable to handle that much POST data (%s byte) due to its current configuration.', + 'The server was unable to handle that much POST data (%s bytes) due to its current configuration.', + intval($_SERVER['CONTENT_LENGTH'])); + $this->clientError(sprintf($msg,$_SERVER['CONTENT_LENGTH'])); } parent::handle($args); @@ -125,14 +126,16 @@ class NewnoticeAction extends Action * * @return void */ - function saveNewNotice() { $user = common_current_user(); assert($user); // XXX: maybe an error instead... $content = $this->trimmed('status_textarea'); + $options = array(); + Event::handle('StartSaveNewNoticeWeb', array($this, $user, &$content, &$options)); if (!$content) { + // TRANS: Client error displayed trying to send a notice without content. $this->clientError(_('No content!')); return; } @@ -150,18 +153,19 @@ class NewnoticeAction extends Action return; } - $content_shortened = common_shorten_links($content); + $content_shortened = $user->shortenLinks($content); if (Notice::contentTooLong($content_shortened)) { - $this->clientError(sprintf(_('That\'s too long. '. - 'Max notice size is %d chars.'), + // TRANS: Client error displayed when the parameter "status" is missing. + // TRANS: %d is the maximum number of character for a notice. + $this->clientError(sprintf(_m('That\'s too long. Maximum notice size is %d character.', + 'That\'s too long. Maximum notice size is %d characters.', + Notice::maxContent()), Notice::maxContent())); } - $replyto = $this->trimmed('inreplyto'); - #If an ID of 0 is wrongly passed here, it will cause a database error, - #so override it... - if ($replyto == 0) { - $replyto = 'false'; + $replyto = intval($this->trimmed('inreplyto')); + if ($replyto) { + $options['reply_to'] = $replyto; } $upload = null; @@ -169,21 +173,20 @@ class NewnoticeAction extends Action if (isset($upload)) { - $content_shortened .= ' ' . $upload->shortUrl(); + if (Event::handle('StartSaveNewNoticeAppendAttachment', array($this, $upload, &$content_shortened, &$options))) { + $content_shortened .= ' ' . $upload->shortUrl(); + } + Event::handle('EndSaveNewNoticeAppendAttachment', array($this, $upload, &$content_shortened, &$options)); if (Notice::contentTooLong($content_shortened)) { $upload->delete(); - $this->clientError( - sprintf( - _('Max notice size is %d chars, including attachment URL.'), - Notice::maxContent() - ) - ); + $this->clientError(sprintf(_m('Maximum notice size is %d character, including attachment URL.', + 'Maximum notice size is %d characters, including attachment URL.', + Notice::maxContent()), + Notice::maxContent())); } } - $options = array('reply_to' => ($replyto == 'false') ? null : $replyto); - if ($user->shareLocation()) { // use browser data if checked; otherwise profile data if ($this->arg('notice_data-geo')) { @@ -216,12 +219,14 @@ class NewnoticeAction extends Action Event::handle('EndNoticeSaveWeb', array($this, $notice)); } + Event::handle('EndSaveNewNoticeWeb', array($this, $user, &$content_shortened, &$options)); if ($this->boolean('ajax')) { header('Content-Type: text/xml;charset=utf-8'); $this->xw->startDocument('1.0', 'UTF-8'); $this->elementStart('html'); $this->elementStart('head'); + // TRANS: Page title after sending a notice. $this->element('title', null, _('Notice posted')); $this->elementEnd('head'); $this->elementStart('body'); @@ -251,11 +256,11 @@ class NewnoticeAction extends Action * * @return void */ - function ajaxErrorMsg($msg) { $this->startHTML('text/xml;charset=utf-8', true); $this->elementStart('head'); + // TRANS: Page title after an AJAX error occurs on the send notice page. $this->element('title', null, _('Ajax Error')); $this->elementEnd('head'); $this->elementStart('body'); @@ -264,6 +269,30 @@ class NewnoticeAction extends Action $this->elementEnd('html'); } + /** + * Show an Ajax-y notice form + * + * Goes back to the browser, where it's shown in a popup. + * + * @param string $msg Message to show + * + * @return void + */ + function ajaxShowForm() + { + $this->startHTML('text/xml;charset=utf-8', true); + $this->elementStart('head'); + $this->element('title', null, _('New notice')); + $this->elementEnd('head'); + $this->elementStart('body'); + + $form = new NoticeForm($this); + $form->show(); + + $this->elementEnd('body'); + $this->elementEnd('html'); + } + /** * Formerly page output * @@ -278,11 +307,14 @@ class NewnoticeAction extends Action * * @return void */ - function showForm($msg=null) { - if ($msg && $this->boolean('ajax')) { - $this->ajaxErrorMsg($msg); + if ($this->boolean('ajax')) { + if ($msg) { + $this->ajaxErrorMsg($msg); + } else { + $this->ajaxShowForm(); + } return; } @@ -297,7 +329,6 @@ class NewnoticeAction extends Action * * @return void */ - function showNoticeForm() { $content = $this->trimmed('status_textarea'); @@ -326,7 +357,6 @@ class NewnoticeAction extends Action * * @todo maybe show some instructions? */ - function showPageNotice() { if ($this->msg) { @@ -343,11 +373,9 @@ class NewnoticeAction extends Action * * @return void */ - function showNotice($notice) { $nli = new NoticeListItem($notice, $this); $nli->show(); } } -