X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=view%2Fjs%2Fmain.js;h=3e0f8307a2b6b81123c4709f78e98e04cf0850ea;hb=969becfc157cded332756f78018a8d9935c9c88a;hp=60337918b4ecd3addb4e4fcdf0dd5382a03df3c3;hpb=235f4eaa89a779c888b5574ea912deec0f5ee78d;p=friendica.git diff --git a/view/js/main.js b/view/js/main.js index 60337918b4..3e0f8307a2 100644 --- a/view/js/main.js +++ b/view/js/main.js @@ -166,7 +166,7 @@ $(function() { /* event from comment textarea button popups */ /* insert returned bbcode at cursor position or replace selected text */ - $("body").on("fbrowser.image.comment", function(e, filename, bbcode, id) { + $('body').on('fbrowser.photo.comment', function(e, filename, bbcode, id) { $.colorbox.close(); var textarea = document.getElementById("comment-edit-text-" +id); var start = textarea.selectionStart; @@ -175,6 +175,17 @@ $(function() { $(textarea).trigger('change'); }); + $(".comment-edit-wrapper textarea, .wall-item-comment-wrapper textarea") + .editor_autocomplete(baseurl + '/search/acl') + .bbco_autocomplete('bbcode'); + + // Ensures asynchronously-added comment forms recognize mentions, tags and BBCodes as well + document.addEventListener("postprocess_liveupdate", function() { + $(".comment-edit-wrapper textarea, .wall-item-comment-wrapper textarea") + .editor_autocomplete(baseurl + '/search/acl') + .bbco_autocomplete('bbcode'); + }); + /* popup menus */ function close_last_popup_menu() { if (last_popup_menu) { @@ -228,7 +239,6 @@ $(function() { }); /* notifications template */ - var notifications_tpl= unescape($("#nav-notifications-template[rel=template]").html()); var notifications_all = unescape($('
').append($("#nav-notifications-see-all").clone()).html()); //outerHtml hack var notifications_mark = unescape($('
').append($("#nav-notifications-mark-all").clone()).html()); //outerHtml hack var notifications_empty = unescape($("#nav-notifications-menu").html()); @@ -279,18 +289,18 @@ $(function() { $('#mail-update-li').html(mail); - $(".sidebar-group-li .notify").removeClass("show"); - $(data.groups).each(function(key, group) { - var gid = group.id; - var gcount = group.count; - $(".group-"+gid+" .notify").addClass("show").text(gcount); + $(".sidebar-circle-li .notify").removeClass("show"); + $(data.circles).each(function(key, circle) { + var gid = circle.id; + var gcount = circle.count; + $(".circle-"+gid+" .notify").addClass("show").text(gcount); }); - $(".forum-widget-entry .notify").removeClass("show"); - $(data.forums).each(function(key, forum) { - var fid = forum.id; - var fcount = forum.count; - $(".forum-"+fid+" .notify").addClass("show").text(fcount); + $(".group-widget-entry .notify").removeClass("show"); + $(data.groups).each(function(key, group) { + var fid = group.id; + var fcount = group.count; + $(".group-"+fid+" .notify").addClass("show").text(fcount); }); if (data.notifications.length == 0) { @@ -304,34 +314,20 @@ $(function() { var notification_id = 0; // Insert notifs into the notifications-menu - $(data.notifications).each(function(key, notification) { - var text = notification.message.format('' + notification.name + ''); - var contact = ('' + notification.name + ''); - var seenclass = (notification.seen == 1) ? "notification-seen" : "notification-unseen"; - var html = notifications_tpl.format( - notification.href, // {0} // link to the source - notification.photo, // {1} // photo of the contact - text, // {2} // preformatted text (autor + text) - notification.date, // {3} // date of notification (time ago) - seenclass, // {4} // visited status of the notification - new Date(notification.timestamp*1000), // {5} // date of notification - notification.url, // {6} // profile url of the contact - notification.message.format(contact), // {7} // preformatted html (text including author profile url) - '' // {8} // Deprecated - ); - nnm.append(html); + $(data.notifications).each(function(key, navNotif) { + nnm.append(navNotif.html); }); // Desktop Notifications - $(data.notifications.reverse()).each(function(key, e) { - notification_id = parseInt(e.timestamp); - if (notification_lastitem !== null && notification_id > notification_lastitem && Number(e.seen) === 0) { + $(data.notifications.reverse()).each(function(key, navNotif) { + notification_id = parseInt(navNotif.timestamp); + if (notification_lastitem !== null && notification_id > notification_lastitem && Number(navNotif.seen) === 0) { if (getNotificationPermission() === "granted") { var notification = new Notification(document.title, { - body: decodeHtml(e.message.replace('→ ', '').format(e.name)), - icon: e.photo, - }); - notification['url'] = e.href; + body: decodeHtml(navNotif.plaintext), + icon: navNotif.contact.photo, + }); + notification['url'] = navNotif.href; notification.addEventListener("click", function(ev) { window.location = ev.target.url; }); @@ -503,7 +499,7 @@ function insertBBCodeInTextarea(BBCode, textarea) { function NavUpdate() { if (!stopped) { - var pingCmd = 'ping?format=json' + ((localUser != 0) ? '&uid=' + localUser : ''); + var pingCmd = 'ping'; $.get(pingCmd, function(data) { if (data.result) { // send nav-update event @@ -536,7 +532,7 @@ function updateConvItems(data) { if ($('#' + ident).length === 0 && (!getUrlParameter('page') && !getUrlParameter('max_id') - && !getUrlParameter('since_id') + && !getUrlParameter('min_id') || getUrlParameter('page') === '1' ) ) { @@ -568,10 +564,6 @@ function updateConvItems(data) { commentBusy = false; $('body').css('cursor', 'auto'); } - /* autocomplete @nicknames */ - $(".comment-edit-form textarea").editor_autocomplete(baseurl + '/search/acl'); - /* autocomplete bbcode */ - $(".comment-edit-form textarea").bbco_autocomplete('bbcode'); } function liveUpdate(src) { @@ -609,8 +601,8 @@ function liveUpdate(src) { if (getUrlParameter('page')) { update_url += '&page=' + getUrlParameter('page'); } - if (getUrlParameter('since_id')) { - update_url += '&since_id=' + getUrlParameter('since_id'); + if (getUrlParameter('min_id')) { + update_url += '&min_id=' + getUrlParameter('min_id'); } if (getUrlParameter('max_id')) { update_url += '&max_id=' + getUrlParameter('max_id'); @@ -620,6 +612,10 @@ function liveUpdate(src) { in_progress = false; update_item = 0; + if ($('.wall-item-body', data).length == 0) { + return; + } + $('.wall-item-body', data).imagesLoaded(function() { updateConvItems(data); @@ -654,66 +650,78 @@ function imgdull(node) { * @param {string} verb The verb of the action * @param {boolean} un Whether to perform an activity removal instead of creation */ -function dolike(ident, verb, un) { +function doActivityItem(ident, verb, un) { unpause(); $('#like-rotator-' + ident.toString()).show(); verb = un ? 'un' + verb : verb; - $.get('like/' + ident.toString() + '?verb=' + verb, NavUpdate); + $.post('item/' + ident.toString() + '/activity/' + verb, NavUpdate); liking = 1; force_update = true; update_item = ident.toString(); } -function dosubthread(ident) { +function doFollowThread(ident) { unpause(); $('#like-rotator-' + ident.toString()).show(); - $.get('subthread/' + ident.toString(), NavUpdate); + $.post('item/' + ident.toString() + '/follow', NavUpdate); liking = 1; + force_update = true; + update_item = ident.toString(); } -function dostar(ident) { +function doStar(ident) { ident = ident.toString(); $('#like-rotator-' + ident).show(); - $.get('starred/' + ident, function(data) { - if (data.match(/1/)) { - $('#starred-' + ident).addClass('starred'); - $('#starred-' + ident).removeClass('unstarred'); + $.post('item/' + ident + '/star') + .then(function(data) { + if (data.state === 1) { + $('#starred-' + ident) + .addClass('starred') + .removeClass('unstarred'); $('#star-' + ident).addClass('hidden'); $('#unstar-' + ident).removeClass('hidden'); } else { - $('#starred-' + ident).addClass('unstarred'); - $('#starred-' + ident).removeClass('starred'); + $('#starred-' + ident) + .addClass('unstarred') + .removeClass('starred'); $('#star-' + ident).removeClass('hidden'); $('#unstar-' + ident).addClass('hidden'); } + }) + .always(function () { $('#like-rotator-' + ident).hide(); }); } -function dopin(ident) { +function doPin(ident) { ident = ident.toString(); $('#like-rotator-' + ident).show(); - $.get('pinned/' + ident, function(data) { - if (data.match(/1/)) { - $('#pinned-' + ident).addClass('pinned'); - $('#pinned-' + ident).removeClass('unpinned'); + $.post('item/' + ident + '/pin') + .then(function(data) { + if (data.state === 1) { + $('#pinned-' + ident) + .addClass('pinned') + .removeClass('unpinned'); $('#pin-' + ident).addClass('hidden'); $('#unpin-' + ident).removeClass('hidden'); } else { - $('#pinned-' + ident).addClass('unpinned'); - $('#pinned-' + ident).removeClass('pinned'); + $('#pinned-' + ident) + .addClass('unpinned') + .removeClass('pinned'); $('#pin-' + ident).removeClass('hidden'); $('#unpin-' + ident).addClass('hidden'); } + }) + .always(function () { $('#like-rotator-' + ident).hide(); }); } -function doignore(ident) { +function doIgnoreThread(ident) { ident = ident.toString(); $('#like-rotator-' + ident).show(); - $.get('item/ignore/' + ident, function(data) { - if (data === 1) { + $.post('item/' + ident + '/ignore', function(data) { + if (data.state === 1) { $('#ignored-' + ident) .addClass('ignored') .removeClass('unignored'); @@ -750,26 +758,23 @@ function getPosition(e) { var lockvisible = false; -function lockview(event,id) { +function lockview(event, type, id) { event = event || window.event; cursor = getPosition(event); if (lockvisible) { - lockviewhide(); + lockvisible = false; + $('#panel').hide(); } else { lockvisible = true; - $.get('lockview/' + id, function(data) { - $('#panel').html(data); - $('#panel').css({'left': cursor.x + 5 , 'top': cursor.y + 5}); - $('#panel').show(); + $.get('permission/tooltip/' + type + '/' + id, function(data) { + $('#panel') + .html(data) + .css({'left': cursor.x + 5 , 'top': cursor.y + 5}) + .show(); }); } } -function lockviewhide() { - lockvisible = false; - $('#panel').hide(); -} - function post_comment(id) { unpause(); commentBusy = true; @@ -862,10 +867,6 @@ function loadScrollContent() { $("#scroll-loader").fadeIn('normal'); - // the page number to load is one higher than the actual - // page number - infinite_scroll.pageno+=1; - match = $("span.received").last(); if (match.length > 0) { received = match[0].innerHTML; @@ -887,25 +888,38 @@ function loadScrollContent() { commented = "0000-00-00 00:00:00"; } - match = $("span.id").last(); + match = $("span.uriid").last(); if (match.length > 0) { - id = match[0].innerHTML; + uriid = match[0].innerHTML; } else { - id = "0"; + uriid = "0"; } // get the raw content from the next page and insert this content // right before "#conversation-end" - $.get(infinite_scroll.reload_uri + '&mode=raw&last_received=' + received + '&last_commented=' + commented + '&last_created=' + created + '&last_id=' + id + '&page=' + infinite_scroll.pageno, function(data) { + $.get({ + url: infinite_scroll.reload_uri, + data: { + 'mode' : 'raw', + 'last_received' : received, + 'last_commented': commented, + 'last_created' : created, + 'last_uriid' : uriid + } + }) + .done(function(data) { $("#scroll-loader").hide(); if ($(data).length > 0) { $(data).insertBefore('#conversation-end'); - lockLoadContent = false; } else { $("#scroll-end").fadeIn('normal'); } document.dispatchEvent(new Event('postprocess_liveupdate')); + }) + .always(function () { + $("#scroll-loader").hide(); + lockLoadContent = false; }); } @@ -932,29 +946,21 @@ function bin2hex(s) { return a.join(''); } -function groupChangeMember(gid, cid, sec_token) { - $('body .fakelink').css('cursor', 'wait'); - $.get('group/' + gid + '/' + cid + "?t=" + sec_token, function(data) { - $('#group-update-wrapper').html(data); - $('body .fakelink').css('cursor', 'auto'); - }); -} - -function profChangeMember(gid,cid) { +function circleChangeMember(gid, cid, sec_token) { $('body .fakelink').css('cursor', 'wait'); - $.get('profperm/' + gid + '/' + cid, function(data) { - $('#prof-update-wrapper').html(data); + $.get('circle/' + gid + '/' + cid + "?t=" + sec_token, function(data) { + $('#circle-update-wrapper').html(data); $('body .fakelink').css('cursor', 'auto'); }); } -function contactgroupChangeMember(checkbox, gid, cid) { +function contactCircleChangeMember(checkbox, gid, cid) { let url; // checkbox.checked is the checkbox state after the click if (checkbox.checked) { - url = 'group/' + gid + '/add/' + cid; + url = 'circle/' + gid + '/add/' + cid; } else { - url = 'group/' + gid + '/remove/' + cid; + url = 'circle/' + gid + '/remove/' + cid; } $('body').css('cursor', 'wait'); $.post(url) @@ -1063,7 +1069,7 @@ var Dialog = { * to the event handler */ doImageBrowser : function (name, id) { - var url = Dialog._get_url("image",name,id); + var url = Dialog._get_url('photo', name, id); return Dialog.show(url); }, @@ -1080,7 +1086,7 @@ var Dialog = { * to the event handler */ doFileBrowser : function (name, id) { - var url = Dialog._get_url("file",name,id); + var url = Dialog._get_url('attachment', name, id); return Dialog.show(url); }, @@ -1089,7 +1095,7 @@ var Dialog = { if (id !== undefined) { hash = hash + "-" + id; } - return baseurl + "/fbrowser/"+type+"/?mode=minimal#"+hash; + return 'media/' + type + '/browser?mode=minimal#' + hash; }, _get_size: function() {