e.tipTip({defaultPosition: pos, edgeOffset: 8});
});*/
+ /* 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") {
+ $.colorbox({href: baseurl + "/fbrowser/image/?mode=minimal#comment-"+id, iframe:true,innerWidth:'500px',innerHeight:'400px'})
+ return;
+ }
+
+ insertFormatting(comment, bbcode, id);
+ });
+
+ /* 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) {
+ console.log("on", id);
+ $.colorbox.close();
+ var textarea = document.getElementById("comment-edit-text-" +id);
+ var start = textarea.selectionStart;
+ var end = textarea.selectionEnd;
+ textarea.value = textarea.value.substring(0, start) + bbcode + textarea.value.substring(end, textarea.value.length);
+ });
+
/* setup onoff widgets */
nnm = $("#nav-notifications-menu");
nnm.html(notifications_all + notifications_mark);
//nnm.attr('popup','true');
-
- var notification_lastitem = localStorage.getItem("notification-lastitem");
- var notification_id = 0;
-
- eNotif.children("note").each(function(){
+
+ var notification_lastitem = parseInt(localStorage.getItem("notification-lastitem"));
+ var notification_id = 0;
+ eNotif.children("note").each(function(){
e = $(this);
- text = e.text().format("<span class='contactname'>"+e.attr('name')+"</span>");
- html = notifications_tpl.format(e.attr('href'),e.attr('photo'), text, e.attr('date'), e.attr('seen'));
+ var text = e.text().format("<span class='contactname'>"+e.attr('name')+"</span>");
+ var seenclass = (e.attr('seen')==1)?"notify-seen":"notify-unseen";
+ var html = notifications_tpl.format(e.attr('href'),
+ e.attr('photo'), // {0}
+ text, // {1}
+ e.attr('date'), // {2}
+ seenclass, // {3}
+ new Date(e.attr('timestamp')*1000) // {4}
+ );
nnm.append(html);
-
- notification_id = e.attr('href').match(/\d+$/)[0];
-
- if (notification_lastitem!== null && notification_id>notification_lastitem) {
- notification_lastitem = notification_id;
+ });
+ $(eNotif.children("note").get().reverse()).each(function(){
+ e = $(this);
+ notification_id = parseInt(e.attr('timestamp'));
+ if (notification_lastitem!== null && notification_id > notification_lastitem) {
if (getNotificationPermission()==="granted") {
var notification = new Notification(document.title, {
body: e.text().replace('→ ','').format(e.attr('name')),
- icon: e.attr('photo')
+ icon: e.attr('photo'),
});
- // TODO (yet unsupported by most browsers):
- // Implement notification.onclick()
+ notification['url'] = e.attr('href');
+ notification.addEventListener("click", function(ev){
+ window.location = ev.target.url;
+ });
}
- }
-
+ }
+
});
- if (notification_lastitem===null) notification_lastitem = notification_id;
- localStorage.setItem("notification-lastitem", notification_lastitem)
+ notification_lastitem = notification_id;
+ localStorage.setItem("notification-lastitem", notification_lastitem)
$("img[data-src]", nnm).each(function(i, el){
// Add src attribute for images with a data-src attribute
// notification permission settings in localstorage
// set by settings page
function getNotificationPermission() {
- if (window.Notification === undefined) {
+ if (window["Notification"] === undefined) {
return null;
}
if (Notification.permission === 'granted') {
- return localStorage.getItem('notification-permissions');
+ var val = localStorage.getItem('notification-permissions');
+ if (val === null) return 'denied';
+ return val;
} else {
return Notification.permission;
}