}
function openMenu(theID) {
- document.getElementById(theID).style.display = "block"
+ var el = document.getElementById(theID)
+ if (el) {
+ el.style.display = "block";
+ }
}
function closeMenu(theID) {
- document.getElementById(theID).style.display = "none"
+ var el = document.getElementById(theID)
+ if (el) {
+ el.style.display = "none";
+ }
}
function decodeHtml(html) {
/* setup comment textarea buttons */
/* comment textarea buttons needs some "data-*" attributes to work:
* data-role="insert-formatting" : to mark the element as a formatting button
- * data-comment="<string>" : string for "Comment", used by insertFormatting() function
* data-bbcode="<string>" : name of the bbcode element to insert. insertFormatting() will insert it as "[name][/name]"
* data-id="<string>" : id of the comment, used to find other comment-related element, like the textarea
* */
$('body').on('click','[data-role="insert-formatting"]', function(e) {
e.preventDefault();
var o = $(this);
- var comment = o.data('comment');
var bbcode = o.data('bbcode');
var id = o.data('id');
if (bbcode=="img") {
Dialog.doImageBrowser("comment", id);
return;
}
- insertFormatting(comment, bbcode, id);
+ insertFormatting(bbcode, id);
});
/* event from comment textarea button popups */
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
textarea.value = textarea.value.substring(0, start) + bbcode + textarea.value.substring(end, textarea.value.length);
+ $(textarea).trigger('change');
});
input.val(val);
});
- /* setup field_richtext */
- setupFieldRichtext();
-
/* popup menus */
function close_last_popup_menu() {
if(last_popup_menu) {
var nnm = $("#nav-notifications-menu");
nnm.html(notifications_all + notifications_mark);
- var notification_lastitem = parseInt(localStorage.getItem("notification-lastitem"));
+ var lastItemStorageKey = "notification-lastitem:" + localUser;
+ var notification_lastitem = parseInt(localStorage.getItem(lastItemStorageKey));
var notification_id = 0;
+
+ // Insert notifs into the notifications-menu
$(data.notifications).each(function(key, notif){
var text = notif.message.format('<span class="contactname">' + notif.name + '</span>');
var contact = ('<a href="' + notif.url + '"><span class="contactname">' + notif.name + '</span></a>');
var html = notifications_tpl.format(
notif.href, // {0} // link to the source
notif.photo, // {1} // photo of the contact
- text, // {2} // preformatted text (autor + text)
+ text, // {2} // preformatted text (autor + text)
notif.date, // {3} // date of notification (time ago)
- seenclass, // {4} // visited status of the notification
+ seenclass, // {4} // visited status of the notification
new Date(notif.timestamp*1000), // {5} // date of notification
notif.url, // {6} // profile url of the contact
notif.message.format(contact), // {7} // preformatted html (text including author profile url)
- '' // {8} // Deprecated
+ '' // {8} // Deprecated
);
nnm.append(html);
});
+
+ // Desktop Notifications
$(data.notifications.reverse()).each(function(key, e){
notification_id = parseInt(e.timestamp);
- if (notification_lastitem !== null && notification_id > notification_lastitem) {
+ if (notification_lastitem !== null && notification_id > notification_lastitem && Number(e.seen) === 0) {
if (getNotificationPermission() === "granted") {
var notification = new Notification(document.title, {
body: decodeHtml(e.message.replace('→ ', '').format(e.name)),
});
notification_lastitem = notification_id;
- localStorage.setItem("notification-lastitem", notification_lastitem)
+ localStorage.setItem(lastItemStorageKey, notification_lastitem)
$("img[data-src]", nnm).each(function(i, el){
// Add src attribute for images with a data-src attribute
$.jGrowl(message, {sticky: false, theme: 'info', life: 5000});
});
- /* update the js scrollbars */
+ // Update the js scrollbars
$('#nav-notifications-menu').perfectScrollbar('update');
});
}
});
+ // Scroll to the next/previous thread when pressing J and K
+ $(document).keydown(function (event) {
+ var threads = $('.thread_level_1');
+ if ((event.keyCode === 74 || event.keyCode === 75) && !$(event.target).is('textarea, input')) {
+ var scrollTop = $(window).scrollTop();
+ if (event.keyCode === 75) {
+ threads = $(threads.get().reverse());
+ }
+ threads.each(function(key, item) {
+ var comparison;
+ var top = $(item).offset().top - 100;
+ if (event.keyCode === 74) {
+ comparison = top > scrollTop + 1;
+ } else if (event.keyCode === 75) {
+ comparison = top < scrollTop - 1;
+ }
+ if (comparison) {
+ $('html, body').animate({ scrollTop: top }, 200);
+ return false;
+ }
+ });
+ }
+ });
+
// Set an event listener for infinite scroll
if(typeof infinite_scroll !== 'undefined') {
$(window).scroll(function(e){
function preview_post() {
$("#jot-preview").val("1");
$("#jot-preview-content").show();
- tinyMCE.triggerSave();
$.post(
"item",
$("#profile-jot-form").serialize(),
});
}
-
-// code from http://www.tinymce.com/wiki.php/How-to_implement_a_custom_file_browser
-function fcFileBrowser (field_name, url, type, win) {
- /* TODO: If you work with sessions in PHP and your client doesn't accept cookies you might need to carry
- the session name and session ID in the request string (can look like this: "?PHPSESSID=88p0n70s9dsknra96qhuk6etm5").
- These lines of code extract the necessary parameters and add them back to the filebrowser URL again. */
-
-
- var cmsURL = baseurl+"/fbrowser/"+type+"/";
-
- tinyMCE.activeEditor.windowManager.open({
- file : cmsURL,
- title : 'File Browser',
- width : 420, // Your dimensions may differ - toy around with them!
- height : 400,
- resizable : "yes",
- inline : "yes", // This parameter only has an effect if you use the inlinepopups plugin!
- close_previous : "no"
- }, {
- window : win,
- input : field_name
- });
- return false;
- }
-
-function setupFieldRichtext(){
- tinyMCE.init({
- theme : "advanced",
- mode : "specific_textareas",
- editor_selector: "fieldRichtext",
- plugins : "bbcode,paste, inlinepopups",
- theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor,formatselect,code",
- theme_advanced_buttons2 : "",
- theme_advanced_buttons3 : "",
- theme_advanced_toolbar_location : "top",
- theme_advanced_toolbar_align : "center",
- theme_advanced_blockformats : "blockquote,code",
- theme_advanced_resizing : true,
- paste_text_sticky : true,
- entity_encoding : "raw",
- add_unload_trigger : false,
- remove_linebreaks : false,
- //force_p_newlines : false,
- //force_br_newlines : true,
- forced_root_block : 'div',
- convert_urls: false,
- content_css: baseurl+"/view/custom_tinymce.css",
- theme_advanced_path : false,
- file_browser_callback : "fcFileBrowser",
- });
-}
-
-
/**
* sprintf in javascript
* "{0} and {1}".format('zero','uno');