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.html(notifications_all + notifications_mark);
//nnm.attr('popup','true');
- var notification_lastitem = localStorage.getItem("notification-lastitem");
- var notification_first_id = 0;
- var notification_id;
+ 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) {
- if (notification_first_id===0) notification_first_id = 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") {
- console.log("notification", e.text().replace('→ ','').format(e.attr('name')));
var notification = new Notification(document.title, {
body: e.text().replace('→ ','').format(e.attr('name')),
icon: e.attr('photo'),
- data: e.attr('href')
});
- // close notification after 5 secs.
- // see https://developer.mozilla.org/en-US/docs/Web/API/Notifications_API/Using_the_Notifications_API#Closing_notifications
- //setTimeout(notification.close.bind(notification), 5000);
-
+ notification['url'] = e.attr('href');
notification.addEventListener("click", function(ev){
- window.location = ev.target.data;
+ window.location = ev.target.url;
});
}
}
- if (notification_id == notification_lastitem) {
- if (notification_first_id===0) notification_first_id = notification_id;
- notification_lastitem = null;
- }
-
});
- if (notification_first_id!==0) notification_lastitem = notification_first_id;
+ notification_lastitem = notification_id;
localStorage.setItem("notification-lastitem", notification_lastitem)
$("img[data-src]", nnm).each(function(i, el){