X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=js%2Futil.js;h=9c727e9a5376b2cde9d5d9a2418ea57988dc6af0;hb=fa5ed04139cdcbb3beeb63b80536b0ab58760322;hp=110c386daef9d94b196dc6e009ce5cbd0f204d9a;hpb=11f43637b23f09a5f167f461bc8a5ae1a6dd689d;p=quix0rs-gnu-social.git diff --git a/js/util.js b/js/util.js index 110c386dae..9c727e9a53 100644 --- a/js/util.js +++ b/js/util.js @@ -308,7 +308,6 @@ var SN = { // StatusNet * @fixme cookieValue is a global variable, but probably shouldn't be * @fixme saving the location cache cookies should be split out * @fixme some error messages are hardcoded english: needs i18n - * @fixme special-case for bookmarklet is confusing and uses a global var "self". Is this ok? * * @param {jQuery} form: jQuery object whose first element is a form * @@ -394,11 +393,6 @@ var SN = { // StatusNet if (errorResult.length > 0) { showFeedback('error', errorResult.text()); } else { - if ($('body')[0].id == 'bookmarklet') { - // @fixme self is not referenced anywhere? - self.close(); - } - var commandResult = $('#' + SN.C.S.CommandResult, data); if (commandResult.length > 0) { showFeedback('success', commandResult.text()); @@ -439,7 +433,7 @@ var SN = { // StatusNet .css({display: 'none'}) .fadeIn(2500); SN.U.NoticeWithAttachment($('#' + notice.id)); - SN.U.switchInputFormTab("placeholder"); + SN.U.switchInputFormTab(null); } } else { // Not on a timeline that this belongs on? @@ -755,8 +749,7 @@ var SN = { // StatusNet SN.U.NoticeInlineReplyTrigger(notice); return false; }); - $('li.notice-reply-comments a') - .on('click', function () { + $(document).on('click', 'li.notice-reply-comments a', function () { var url = $(this).attr('href'); var area = $(this).closest('.threaded-replies'); $.get(url, {ajax: 1}, function (data, textStatus, xhr) { @@ -779,7 +772,7 @@ var SN = { // StatusNet * */ NoticeRepeat: function () { - $('.form_repeat').on('click', function (e) { + $('body').on('click', '.form_repeat', function (e) { e.preventDefault(); SN.U.NoticeRepeatConfirmation($(this)); @@ -863,18 +856,16 @@ var SN = { // StatusNet return; } - var attachment_more = notice.find('.attachment.more'); - if (attachment_more.length > 0) { - $(attachment_more[0]).click(function () { - var m = $(this); - m.addClass(SN.C.S.Processing); - $.get(m.attr('href') + '/ajax', null, function (data) { - m.parent('.entry-content').html($(data).find('#attachment_view .entry-content').html()); - }); + $(document).on('click','.attachment.more',function () { + var m = $(this); + m.addClass(SN.C.S.Processing); + $.get(m.attr('href'), {ajax: 1}, function (data) { + m.parent('.e-content').html($(data).find('#attachment_view .e-content').html()); + }); + + return false; + }); - return false; - }).attr('title', SN.msg('showmore_tooltip')); - } }, /** @@ -1183,18 +1174,22 @@ var SN = { // StatusNet } } } else { - var cookieValue = JSON.parse($.cookie(SN.C.S.NoticeDataGeoCookie)); - - form.find('[name=lat]').val(cookieValue.NLat); - form.find('[name=lon]').val(cookieValue.NLon); - form.find('[name=location_ns]').val(cookieValue.NLNS); - form.find('[name=location_id]').val(cookieValue.NLID); - form.find('[name=notice_data-geo]').prop('checked', cookieValue.NDG); - - SN.U.NoticeGeoStatus(form, cookieValue.NLN, cookieValue.NLat, cookieValue.NLon, cookieValue.NLNU); - label - .attr('title', NoticeDataGeo_text.ShareDisable + ' (' + cookieValue.NLN + ')') - .addClass('checked'); + try { + var cookieValue = JSON.parse($.cookie(SN.C.S.NoticeDataGeoCookie)); + + form.find('[name=lat]').val(cookieValue.NLat); + form.find('[name=lon]').val(cookieValue.NLon); + form.find('[name=location_ns]').val(cookieValue.NLNS); + form.find('[name=location_id]').val(cookieValue.NLID); + form.find('[name=notice_data-geo]').prop('checked', cookieValue.NDG); + + SN.U.NoticeGeoStatus(form, cookieValue.NLN, cookieValue.NLat, cookieValue.NLon, cookieValue.NLNU); + label + .attr('title', NoticeDataGeo_text.ShareDisable + ' (' + cookieValue.NLN + ')') + .addClass('checked'); + } catch (e) { + console.log('Parsing error:', e); + } } } else { removeNoticeDataGeo(); @@ -1331,7 +1326,7 @@ var SN = { // StatusNet */ Get: function () { var cookieValue = $.cookie(SN.C.S.StatusNetInstance); - if (cookieValue !== null) { + if (cookieValue !== undefined) { return JSON.parse(cookieValue); } return null; @@ -1363,7 +1358,7 @@ var SN = { // StatusNet var profileLink = $('#nav_profile a').attr('href'); if (profileLink) { - var authorUrl = $(notice).find('.vcard.author a.url').attr('href'); + var authorUrl = $(notice).find('.h-card.p-author').attr('href'); if (authorUrl == profileLink) { if (action == 'all' || action == 'showstream') { // Posts always show on your own friends and profile streams. @@ -1376,7 +1371,7 @@ var SN = { // StatusNet // Mismatch between id-based and name-based user/group links currently complicates // the lookup, since all our inline mentions contain the absolute links but the // UI links currently on the page use malleable names. - + return false; }, @@ -1387,14 +1382,11 @@ var SN = { // StatusNet * * @param {String} tag */ - switchInputFormTab: function (tag) { - // The one that's current isn't current anymore - $('.input_form_nav_tab.current').removeClass('current'); - if (tag == 'placeholder') { - // Hack: when showing the placeholder, mark the tab - // as current for 'Status'. - $('#input_form_nav_status').addClass('current'); - } else { + switchInputFormTab: function (tag, setFocus) { + if (typeof setFocus === 'undefined') { setFocus = true; } + // The one that's current isn't current anymore + $('.input_form_nav_tab.current').removeClass('current'); + if (tag != null) { $('#input_form_nav_' + tag).addClass('current'); } @@ -1406,15 +1398,24 @@ var SN = { // StatusNet return; } - $('.input_form.current').removeClass('current'); - $('#input_form_' + tag) - .addClass('current') - .find('.ajax-notice').each(function () { - var form = $(this); - SN.Init.NoticeFormSetup(form); - }) - .find('.notice_data-text').focus(); - }, + $('.input_form.current').removeClass('current'); + if (tag == null) { + // we're done here, no new inputform to focus on + return false; + } + + var noticeForm = $('#input_form_' + tag) + .addClass('current') + .find('.ajax-notice').each(function () { + var form = $(this); + SN.Init.NoticeFormSetup(form); + }); + if (setFocus) { + noticeForm.find('.notice_data-text').focus(); + } + + return false; + }, showMoreMenuItems: function (menuid) { $('#' + menuid + ' .more_link').remove(); @@ -1439,28 +1440,14 @@ var SN = { // StatusNet // SN.Init.NoticeFormSetup() will get run // when forms get displayed for the first time... - // Hack to initialize the placeholder at top - $('#input_form_placeholder input.placeholder').focus(function () { - SN.U.switchInputFormTab("status"); + // Initialize the input form field + $('#input_form_nav .input_form_nav_tab.current').each(function () { + current_tab_id = $(this).attr('id').substring('input_form_nav_'.length); + SN.U.switchInputFormTab(current_tab_id, false); }); // Make inline reply forms self-close when clicking out. $('body').on('click', function (e) { - var currentForm = $('#content .input_forms div.current'); - if (currentForm.length > 0) { - if ($('#content .input_forms').has(e.target).length == 0) { - // If all fields are empty, switch back to the placeholder. - var fields = currentForm.find('textarea, input[type=text], input[type=""]'); - var anything = false; - fields.each(function () { - anything = anything || $(this).val(); - }); - if (!anything) { - SN.U.switchInputFormTab("placeholder"); - } - } - } - var openReplies = $('li.notice-reply'); if (openReplies.length > 0) { var target = $(e.target); @@ -1483,7 +1470,6 @@ var SN = { // StatusNet // Infield labels for notice form inputs. $('.input_forms fieldset fieldset label').inFieldLabels({ fadeOpacity:0 }); - } },