aboutsummaryrefslogtreecommitdiffstats
path: root/view/js/main.js
diff options
context:
space:
mode:
Diffstat (limited to 'view/js/main.js')
-rw-r--r--view/js/main.js115
1 files changed, 94 insertions, 21 deletions
diff --git a/view/js/main.js b/view/js/main.js
index 085bc8d0d..e91bd914d 100644
--- a/view/js/main.js
+++ b/view/js/main.js
@@ -44,6 +44,17 @@ $(document).ready(function() {
$(document).on('click', '.conversation-settings-link', getConversationSettings);
$(document).on('click', '#settings_module_ajax_submit', postConversationSettings);
+ $(document).on('click focus', '.comment-edit-form textarea', function(e) {
+ if(! this.autocomplete_handled) {
+ /* autocomplete @nicknames */
+ $(this).editor_autocomplete(baseurl+"/acl?f=&n=1");
+ /* autocomplete bbcode */
+ $(this).bbco_autocomplete('bbcode');
+
+ this.autocomplete_handled = true;
+ }
+ });
+
var tf = new Function('n', 's', 'var k = s.split("/")['+aStr['plural_func']+']; return (k ? k : s);');
jQuery.timeago.settings.strings = {
@@ -220,6 +231,10 @@ function handle_comment_form(e) {
$('#' + emptyCommentElm).removeAttr('tabindex');
$('#' + emptySubmitElm).removeAttr('tabindex');
form.find(':not(.comment-edit-text)').hide();
+ form.find(':input[name=parent]').val(emptyCommentElm.replace(/\D/g,''));
+ var btn = form.find(':button[type=submit]').html();
+ form.find(':button[type=submit]').html(btn.replace(/<[^>]*>/g, '').trim());
+ form.find(':button[type=submit]').prop('title', '');
}
});
@@ -239,7 +254,11 @@ function handle_comment_form(e) {
},10000);
});
- function commentSaveChanges(convId,isFinal = false) {
+ function commentSaveChanges(convId, isFinal) {
+
+ if(typeof isFinal === 'undefined')
+ isFinal = false;
+
if(auto_save_draft) {
tmp = $('#' + emptyCommentElm).val();
if(tmp) {
@@ -385,12 +404,12 @@ function viewsrc(id) {
function showHideComments(id) {
if( $('#collapsed-comments-' + id).is(':visible')) {
$('#collapsed-comments-' + id + ' .autotime').timeago('dispose');
- $('#collapsed-comments-' + id).slideUp();
+ $('#collapsed-comments-' + id).hide();
$('#hide-comments-' + id).html(aStr.showmore);
$('#hide-comments-total-' + id).show();
} else {
$('#collapsed-comments-' + id + ' .autotime').timeago();
- $('#collapsed-comments-' + id).slideDown();
+ $('#collapsed-comments-' + id).show();
$('#hide-comments-' + id).html(aStr.showfewer);
$('#hide-comments-total-' + id).hide();
}
@@ -453,6 +472,9 @@ function notificationsUpdate(cached_data) {
$.get(pingCmd,function(data) {
// Put the object into storage
+ if(! data)
+ return;
+
sessionStorage.setItem('notifications_cache', JSON.stringify(data));
var fnotifs = [];
@@ -544,7 +566,7 @@ function handleNotificationsItems(notifyType, data) {
notify_menu.html('');
$(data).each(function() {
- html = notifications_tpl.format(this.notify_link,this.photo,this.name,this.message,this.when,this.hclass,this.b64mid,this.notify_id,this.thread_top,this.unseen,this.private_forum);
+ html = notifications_tpl.format(this.notify_link,this.photo,this.name,this.addr,this.message,this.when,this.hclass,this.b64mid,this.notify_id,this.thread_top,this.unseen,this.private_forum);
notify_menu.append(html);
});
@@ -558,7 +580,8 @@ function handleNotificationsItems(notifyType, data) {
if(filter) {
$('#nav-' + notifyType + '-menu .notification').each(function(i, el){
var cn = $(el).data('contact_name').toString().toLowerCase();
- if(cn.indexOf(filter) === -1)
+ var ca = $(el).data('contact_addr').toString().toLowerCase();
+ if(cn.indexOf(filter) === -1 && ca.indexOf(filter) === -1)
$(el).addClass('d-none');
else
$(el).removeClass('d-none');
@@ -715,6 +738,7 @@ function updateConvItems(mode,data) {
title.replace(/\s+$/, '');
if (title) {
savedTitle = title + " " + savedTitle;
+ document.title = title;
}
}
}
@@ -750,12 +774,7 @@ function updateConvItems(mode,data) {
mediaPlaying = false;
});
- /* autocomplete @nicknames */
- $(".comment-edit-form textarea").editor_autocomplete(baseurl+"/acl?f=&n=1");
- /* autocomplete bbcode */
- $(".comment-edit-form textarea").bbco_autocomplete('bbcode');
-
- var bimgs = ((preloadImages) ? false : $(".wall-item-body img").not(function() { return this.complete; }));
+ var bimgs = $(".wall-item-body img, .wall-photo-item img").not(function() { return this.complete; });
var bimgcount = bimgs.length;
if (bimgcount) {
@@ -763,22 +782,38 @@ function updateConvItems(mode,data) {
bimgcount--;
if (! bimgcount) {
collapseHeight();
+
+ if(bParam_mid && mode === 'replace')
+ scrollToItem();
+
+ $(document.body).trigger("sticky_kit:recalc");
}
});
} else {
collapseHeight();
+
+ if(bParam_mid && mode === 'replace')
+ scrollToItem();
+
+ $(document.body).trigger("sticky_kit:recalc");
}
+}
+
+function scrollToItem() {
// auto-scroll to a particular comment in a thread (designated by mid) when in single-thread mode
// use the same method to generate the submid as we use in ThreadItem,
// base64_encode + replace(['+','='],['','']);
+ if(justifiedGalleryActive)
+ return;
+
var submid = ((bParam_mid.length) ? bParam_mid : 'abcdefg');
var encoded = ((submid.substr(0,4) == 'b64.') ? true : false);
var submid_encoded = ((encoded) ? submid.substr(4) : window.btoa(submid));
submid_encoded = submid_encoded.replace(/[\+\=]/g,'');
- if($('.item_' + submid_encoded).length && !$('.item_' + submid_encoded).hasClass('toplevel_item') && mode == 'replace') {
+ if($('.item_' + submid_encoded).length && !$('.item_' + submid_encoded).hasClass('toplevel_item')) {
if($('.collapsed-comments').length) {
var scrolltoid = $('.collapsed-comments').attr('id').substring(19);
$('#collapsed-comments-' + scrolltoid + ' .autotime').timeago();
@@ -786,11 +821,9 @@ function updateConvItems(mode,data) {
$('#hide-comments-' + scrolltoid).html(aStr.showfewer);
$('#hide-comments-total-' + scrolltoid).hide();
}
- $('html, body').animate({ scrollTop: $('.item_' + submid_encoded).offset().top - $('nav').outerHeight() }, 'slow');
+ $('html, body').animate({ scrollTop: $('.item_' + submid_encoded).offset().top - $('nav').outerHeight(true) }, 'slow');
$('.item_' + submid_encoded).addClass('item-highlight');
}
-
- $(document.body).trigger("sticky_kit:recalc");
}
function collapseHeight() {
@@ -831,10 +864,10 @@ function collapseHeight() {
});
var collapsedContentHeight = Math.ceil($("#region_2").height());
- contentHeightDiff = origContentHeight - collapsedContentHeight;
+ contentHeightDiff = liking ? 0 : origContentHeight - collapsedContentHeight;
console.log('collapseHeight() - contentHeightDiff: ' + contentHeightDiff + 'px');
- if(i){
+ if(i && !liking){
var sval = position - cDiff + ($(".divgrow-showmore").outerHeight() * i);
console.log('collapsed above viewport count: ' + i);
$(window).scrollTop(sval);
@@ -887,7 +920,12 @@ function liveUpdate(notify_id) {
if((src === null) || (stopped) || (! profile_uid)) { $('.like-rotator').hide(); return; }
- if(($('.comment-edit-text.expanded').length) || (in_progress) || (mediaPlaying)) {
+ // if auto updates are enabled and a comment box is open,
+ // prevent live updates until the comment is submitted
+
+ var lockUpdates = (($('.comment-edit-text.expanded').length && (! bParam_static)) ? true : false);
+
+ if(lockUpdates || in_progress || mediaPlaying) {
if(livetime) {
clearTimeout(livetime);
}
@@ -980,7 +1018,7 @@ function liveUpdate(notify_id) {
$("#profile-jot-text-loading").hide();
// adjust scroll position if new content was added above viewport
- if(update_mode === 'update') {
+ if(update_mode === 'update' && !justifiedGalleryActive) {
$(window).scrollTop($(window).scrollTop() + $("#region_2").height() - orgHeight + contentHeightDiff);
}
@@ -1110,8 +1148,44 @@ function doprofilelike(ident, verb) {
$.get('like/' + ident + '?verb=' + verb, function() { window.location.href=window.location.href; });
}
+function doreply(parent, ident, owner, hint) {
+ var form = $('#comment-edit-form-' + parent.toString());
+ form.find('input[name=parent]').val(ident);
+ var i = form.find('button[type=submit]');
+ var btn = i.html().replace(/<[^>]*>/g, '').trim();
+ i.html('<i class="fa fa-reply" ></i> ' + btn);
+ i.prop('title', hint);
+ form.find('textarea').val("@{" + owner + "} ");
+ $('#comment-edit-text-' + parent.toString()).focus();
+}
+
+function doscroll(parent, hidden) {
+ var x = '#hide-comments-outer-' + hidden.toString();
+ var back = $('#back-to-reply');
+ if(back.length == 0)
+ var pos = $(window).scrollTop();
+ else
+ var pos = back.attr('href').replace(/[^\d|\.]/g,'');
+ if($(x).length !== 0) {
+ x = $(x).attr("onclick").replace(/\D/g,'');
+ var c = '#collapsed-comments-' + x;
+ if($(c).length !== 0 && (! $(c).is(':visible'))) {
+ showHideComments(x);
+ pos += $(c).height();
+ }
+ }
+ back.remove();
+ var id = $('[data-mid="' + parent + '"]');
+ $('html, body').animate({scrollTop:(id.offset().top) - 50}, 'slow');
+ $('<a href="javascript:doscrollback(' + pos + ');" id="back-to-reply" class="float-right" title="' + aStr['to_reply'] + '"><i class="fa fa-angle-double-down">&nbsp;&nbsp;&nbsp;</i></a>').insertBefore('#wall-item-info-' + id.attr('id').replace(/\D/g,''));
+}
-function dropItem(url, object) {
+function doscrollback(pos) {
+ $('#back-to-reply').remove();
+ $(window).scrollTop(pos);
+}
+
+function dropItem(url, object) {
var confirm = confirmDelete();
if(confirm) {
@@ -1123,7 +1197,6 @@ function dropItem(url, object) {
});
});
return true;
-
}
else {
return false;