From 0da75125974b19c4a5bd2173fd57927b1e1b8e07 Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth Date: Fri, 6 Mar 2015 20:22:01 +0100 Subject: [PATCH] No separate placeholder input element for replyforms Also we're moving the rendering of these out into a separate plugin. Not done yet, some javascript should be moved out as well. --- js/util.js | 62 +++++++------------------------------- lib/default.php | 1 + lib/threadednoticelist.php | 47 +---------------------------- 3 files changed, 13 insertions(+), 97 deletions(-) diff --git a/js/util.js b/js/util.js index 2611d8515a..9001a401c2 100644 --- a/js/util.js +++ b/js/util.js @@ -620,37 +620,18 @@ var SN = { // StatusNet var parentNotice = notice; var stripForm = true; // strip a couple things out of reply forms that are inline - // Find the threaded replies view we'll be adding to... var list = notice.closest('.notices'); - if (list.closest('.old-school').length) { - // We're replying to an old-school conversation thread; - // use the old-style ping into the top form. - SN.U.switchInputFormTab("status"); - replyForm = $('#input_form_status').find('form'); - stripForm = false; - } else if (list.hasClass('threaded-replies')) { + if (list.hasClass('threaded-replies')) { // We're replying to a reply; use reply form on the end of this list. - // We'll add our form at the end of this; grab the root notice. - parentNotice = list.closest('.notice'); - - // See if the form's already open... - replyForm = $('.notice-reply-form', list); } else { // We're replying to a parent notice; pull its threaded list - // and we'll add on the end of it. Will add if needed. - list = $('ul.threaded-replies', notice); + // and we'll add on the end of it. Will add the threaded list if needed. + var list = $('ul.threaded-replies', notice); if (list.length == 0) { - SN.U.NoticeInlineReplyPlaceholder(notice); - list = $('ul.threaded-replies', notice); - } else { - placeholder = $('li.notice-reply-placeholder', notice); - if (placeholder.length == 0) { - SN.U.NoticeInlineReplyPlaceholder(notice); - } + list = $(''); + notice.append(list); + list = notice.find('ul.threaded-replies'); } - - // See if the form's already open... - replyForm = $('.notice-reply-form', list); } var nextStep = function () { @@ -681,15 +662,15 @@ var SN = { // StatusNet text[0].setSelectionRange(len, len); } }; + + // See if the form's already open... + replyForm = $('.notice-reply-form', list); if (replyForm.length > 0) { // Update the existing form... nextStep(); } else { - // Hide the placeholder... - placeholder = list.find('li.notice-reply-placeholder').hide(); - // Create the reply form entry at the end - var replyItem = $('li.notice-reply', list); + var replyItem = $('li.notice-reply > form', list); if (replyItem.length == 0) { replyItem = $('
  • '); @@ -721,34 +702,13 @@ var SN = { // StatusNet } }, - NoticeInlineReplyPlaceholder: function (notice) { - var list = notice.find('ul.threaded-replies'); - if (list.length == 0) { - list = $(''); - notice.append(list); - list = notice.find('ul.threaded-replies'); - } - var placeholder = $('
  • ' + - '' + - '
  • '); - placeholder.find('input') - .val(SN.msg('reply_placeholder')); - list.append(placeholder); - }, - /** * Setup function -- DOES NOT apply immediately. * - * Sets up event handlers for inline reply mini-form placeholders. * Uses 'on' rather than 'live' or 'bind', so applies to future as well as present items. */ NoticeInlineReplySetup: function () { - $('li.notice-reply-placeholder input') - .on('focus', function () { - var notice = $(this).closest('li.notice'); - SN.U.NoticeInlineReplyTrigger(notice); - return false; - }); + // Expand conversation links $(document).on('click', 'li.notice-reply-comments a', function () { var url = $(this).attr('href'); var area = $(this).closest('.threaded-replies'); diff --git a/lib/default.php b/lib/default.php index 0e6ad7b9fd..9926f6aa7a 100644 --- a/lib/default.php +++ b/lib/default.php @@ -309,6 +309,7 @@ $default = 'AntiBrute' => array(), 'Bookmark' => array(), 'ClientSideShorten' => array(), + 'DefaultLayout' => array(), 'Directory' => array(), 'DirectMessage' => array(), 'EmailAuthentication' => array(), diff --git a/lib/threadednoticelist.php b/lib/threadednoticelist.php index 18d13505c8..9eaf6493c6 100644 --- a/lib/threadednoticelist.php +++ b/lib/threadednoticelist.php @@ -253,14 +253,8 @@ class ThreadedNoticeListItem extends NoticeListItem } } - if ($threadActive && Profile::current() instanceof Profile) { - // @fixme do a proper can-post check that's consistent - // with the JS side - $item = new ThreadedNoticeListReplyItem($this->notice, $this->out); - $item->show(); - } - $this->out->elementEnd('ul'); Event::handle('EndShowThreadedNoticeTail', array($this, $this->notice, $notices)); + $this->out->elementEnd('ul'); } } @@ -381,45 +375,6 @@ class ThreadedNoticeListMoreItem extends NoticeListItem } } -/** - * Placeholder for reply form... - * Same as get added at runtime via SN.U.NoticeInlineReplyPlaceholder - */ -class ThreadedNoticeListReplyItem extends NoticeListItem -{ - /** - * recipe function for displaying a single notice. - * - * This uses all the other methods to correctly display a notice. Override - * it or one of the others to fine-tune the output. - * - * @return void - */ - function show() - { - $this->showStart(); - $this->showMiniForm(); - $this->showEnd(); - } - - /** - * start a single notice. - * - * @return void - */ - function showStart() - { - $this->out->elementStart('li', array('class' => 'notice-reply-placeholder')); - } - - function showMiniForm() - { - $this->out->element('input', array('class' => 'placeholder', - // TRANS: Field label for reply mini form. - 'value' => _('Write a reply...'))); - } -} - /** * Placeholder for showing repeats... */