- function openClose(theID) {
- if(document.getElementById(theID).style.display == "block") {
- document.getElementById(theID).style.display = "none"
- }
- else {
- document.getElementById(theID).style.display = "block"
- }
- }
+ function openClose(listID) {
+/* if(document.getElementById(theID).style.display == "block") {
+ document.getElementById(theID).style.display = "none"
+ }
+ else {
+ document.getElementById(theID).style.display = "block"
+ }*/
+ listID = "#" + listID.replace(/:/g, "\\:");
+ listID = listID.replace(/\./g, "\\.");
+ listID = listID.replace(/@/g, "\\@");
+
+ if($(listID).is(":visible")) {
+ $(listID).hide();
+ $(listID+"-wrapper").show();
+ }
+ else {
+ $(listID).show();
+ $(listID+"-wrapper").hide();
+ }
+ }
- function openMenu(theID) {
- document.getElementById(theID).style.display = "block"
- }
+ function openMenu(theID) {
+ document.getElementById(theID).style.display = "block"
+ }
- function closeMenu(theID) {
- document.getElementById(theID).style.display = "none"
- }
+ function closeMenu(theID) {
+ document.getElementById(theID).style.display = "none"
+ }
var src = null;
var prev = null;
var livetime = null;
- var msie = false;
var stopped = false;
var totStopped = false;
var timer = null;
$(function() {
$.ajaxSetup({cache: false});
- msie = $.browser.msie ;
-
+ collapseHeight();
+
/* setup tooltips *//*
$("a,.tt").each(function(){
var e = $(this);
if (e.hasClass("ttright")) pos="right";
e.tipTip({defaultPosition: pos, edgeOffset: 8});
});*/
-
-
-
+
+
+
/* setup onoff widgets */
$(".onoff input").each(function(){
val = $(this).val();
id = $(this).attr("id");
$("#"+id+"_onoff ."+ (val==0?"on":"off")).addClass("hidden");
-
+
});
$(".onoff > a").click(function(event){
- event.preventDefault();
+ event.preventDefault();
var input = $(this).siblings("input");
var val = 1-input.val();
var id = input.attr("id");
input.val(val);
//console.log(id);
});
-
- /* setup field_richtext */
- setupFieldRichtext();
/* popup menus */
function close_last_popup_menu(e) {
$('html').click(function(e) {
close_last_popup_menu(e);
});
-
+
// fancyboxes
- $("a.popupbox").fancybox({
- 'transitionIn' : 'none',
- 'transitionOut' : 'none'
+ $("a.popupbox").colorbox({
+ 'inline' : true,
+ 'transition' : 'elastic'
});
-
+
/* notifications template */
var notifications_tpl= unescape($("#nav-notifications-template[rel=template]").html());
var notifications_all = unescape($('<div>').append( $("#nav-notifications-see-all").clone() ).html()); //outerHtml hack
var notifications_mark = unescape($('<div>').append( $("#nav-notifications-mark-all").clone() ).html()); //outerHtml hack
var notifications_empty = unescape($("#nav-notifications-menu").html());
-
+
/* nav update event */
$('nav').bind('nav-update', function(e,data){;
var invalid = $(data).find('invalid').text();
var home = $(data).find('home').text();
if(home == 0) { home = ''; $('#home-update').removeClass('show') } else { $('#home-update').addClass('show') }
$('#home-update').html(home);
-
+
var intro = $(data).find('intro').text();
if(intro == 0) { intro = ''; $('#intro-update').removeClass('show') } else { $('#intro-update').addClass('show') }
$('#intro-update').html(intro);
var mail = $(data).find('mail').text();
if(mail == 0) { mail = ''; $('#mail-update').removeClass('show') } else { $('#mail-update').addClass('show') }
$('#mail-update').html(mail);
-
+
var intro = $(data).find('intro').text();
if(intro == 0) { intro = ''; $('#intro-update-li').removeClass('show') } else { $('#intro-update-li').addClass('show') }
$('#intro-update-li').html(intro);
$('#mail-update-li').html(mail);
var eNotif = $(data).find('notif')
-
+
if (eNotif.children("note").length==0){
$("#nav-notifications-menu").html(notifications_empty);
} else {
html = notifications_tpl.format(e.attr('href'),e.attr('photo'), text, e.attr('date'), e.attr('seen'));
nnm.append(html);
});
+
+ $("img[data-src]", nnm).each(function(i, el){
+ // Add src attribute for images with a data-src attribute
+ // However, don't bother if the data-src attribute is empty, because
+ // an empty "src" tag for an image will cause some browsers
+ // to prefetch the root page of the Friendica hub, which will
+ // unnecessarily load an entire profile/ or network/ page
+ if($(el).data("src") != '') $(el).attr('src', $(el).data("src"));
+ });
}
notif = eNotif.attr('count');
if (notif>0){
}
if(notif == 0) { notif = ''; $('#notify-update').removeClass('show') } else { $('#notify-update').addClass('show') }
$('#notify-update').html(notif);
-
+
var eSysmsg = $(data).find('sysmsgs');
eSysmsg.children("notice").each(function(){
text = $(this).text();
- $.jGrowl(text, { sticky: true, theme: 'notice' });
+ $.jGrowl(text, { sticky: false, theme: 'notice', life: 3000 }); // originally: sticky: true,
});
eSysmsg.children("info").each(function(){
text = $(this).text();
- $.jGrowl(text, { sticky: false, theme: 'info', life: 1500 });
+ $.jGrowl(text, { sticky: false, theme: 'info', life: 1000 });
});
-
+
});
-
-
- NavUpdate();
+
+
+ NavUpdate();
// Allow folks to stop the ajax page updates with the pause/break key
$(document).keydown(function(event) {
if(event.keyCode == '8') {
}
}
});
-
-
+
+
});
function NavUpdate() {
$(data).find('result').each(function() {
// send nav-update event
$('nav').trigger('nav-update', this);
-
-
+
+
// start live update
-
+
if($('#live-network').length) { src = 'network'; liveUpdate(); }
if($('#live-profile').length) { src = 'profile'; liveUpdate(); }
if($('#live-community').length) { src = 'community'; liveUpdate(); }
if($('#live-notes').length) { src = 'notes'; liveUpdate(); }
- if($('#live-display').length) {
+ if($('#live-display').length) { src = 'display'; liveUpdate(); }
+ /*if($('#live-display').length) {
if(liking) {
liking = 0;
- window.location.href=window.location.href
+ window.location.href=window.location.href
}
- }
+ }*/
if($('#live-photos').length) {
if(liking) {
liking = 0;
- window.location.href=window.location.href
+ window.location.href=window.location.href
}
}
-
-
-
+
+
+
});
}) ;
}
}
function liveUpdate() {
- if((src == null) || (stopped) || (! profile_uid)) { $('.like-rotator').hide(); return; }
+ if((src == null) || (stopped) || (typeof profile_uid == 'undefined') || (! profile_uid)) { $('.like-rotator').hide(); return; }
if(($('.comment-edit-text-full').length) || (in_progress)) {
if(livetime) {
clearTimeout(livetime);
}
- livetime = setTimeout(liveUpdate, 10000);
+ livetime = setTimeout(liveUpdate, 5000);
return;
}
if(livetime != null)
in_progress = true;
var udargs = ((netargs.length) ? '/' + netargs : '');
- var update_url = 'update_' + src + udargs + '&p=' + profile_uid + '&page=' + profile_page + '&msie=' + ((msie) ? 1 : 0);
+ var update_url = 'update_' + src + udargs + '&p=' + profile_uid + '&page=' + profile_page;
$.get(update_url,function(data) {
in_progress = false;
// add a new thread
- $('.tread-wrapper',data).each(function() {
+ $('.toplevel_item',data).each(function() {
var ident = $(this).attr('id');
if($('#' + ident).length == 0 && profile_page == 1) {
$('#' + prev).after($(this));
}
else {
+ // Find out if the hidden comments are open, so we can keep it that way
+ // if a new comment has been posted
+ var id = $('.hide-comments-total', this).attr('id');
+ if(typeof id != 'undefined') {
+ id = id.split('-')[3];
+ var commentsOpen = $("#collapsed-comments-" + id).is(":visible");
+ }
+
$('img',this).each(function() {
$(this).attr('src',$(this).attr('dst'));
});
+ //vScroll = $(document).scrollTop();
+ $('html').height($('html').height());
$('#' + ident).replaceWith($(this));
+
+ if(typeof id != 'undefined') {
+ if(commentsOpen) showHideComments(id);
+ }
+ $('html').height('auto');
+ //$(document).scrollTop(vScroll);
}
+
+ // Add Colorbox for viewing Network page images
+ $("#" + ident + " .wall-item-body a img").each(function(){
+ var aElem = $(this).parent();
+ var imgHref = aElem.attr("href");
+
+ // We need to make sure we only put a Colorbox on links to Friendica images
+ // We'll try to do this by looking for links of the form
+ // .../photo/ab803d8eg08daf85023adfec08(-0.jpg) (with nothing more following), in hopes
+ // that that will be unique enough
+ if(imgHref.match(/\/photo\/[a-fA-F0-9]+(-[0-9]\.[\w]+?)?$/)) {
+
+ // Add a unique class to all the images of a certain post, to allow scrolling through
+ var cBoxClass = $(this).closest(".wall-item-body").attr("id") + "-lightbox";
+ $(this).addClass(cBoxClass);
+
+ aElem.colorbox({
+ maxHeight: '90%',
+ photo: true,
+ rel: cBoxClass
+ });
+ }
+ });
+
prev = ident;
});
});
$('#' + prev).after($(this));
}
- else {
- $('#' + ident + ' ' + '.wall-item-ago').replaceWith($(this).find('.wall-item-ago'));
+ else {
+ $('#' + ident + ' ' + '.wall-item-ago').replaceWith($(this).find('.wall-item-ago'));
if($('#' + ident + ' ' + '.comment-edit-text-empty').length)
$('#' + ident + ' ' + '.wall-item-comment-wrapper').replaceWith($(this).find('.wall-item-comment-wrapper'));
$('#' + ident + ' ' + '.hide-comments-total').replaceWith($(this).find('.hide-comments-total'));
$(this).attr('src',$(this).attr('dst'));
});
}
- prev = ident;
+ prev = ident;
});*/
-
+
$('.like-rotator').hide();
if(commentBusy) {
commentBusy = false;
$('body').css('cursor', 'auto');
}
/* autocomplete @nicknames */
- $(".comment-edit-form textarea").contact_autocomplete(baseurl+"/acl");
+ $(".comment-edit-form textarea").editor_autocomplete(baseurl+"/acl");
+
+ collapseHeight();
+
+ // setup videos, since VideoJS won't take care of any loaded via AJAX
+ if(typeof videojs != 'undefined') videojs.autoSetup();
});
}
- function imgbright(node) {
+ function collapseHeight(elems) {
+ var elemName = '.wall-item-body:not(.divmore)';
+ if(typeof elems != 'undefined') {
+ elemName = elems + ' ' + elemName;
+ }
+ $(elemName).each(function() {
+ if($(this).height() > 450) {
+ $('html').height($('html').height());
+ $(this).divgrow({ initialHeight: 400, showBrackets: false, speed: 0 });
+ $(this).addClass('divmore');
+ $('html').height('auto');
+ }
+ });
+ }
+
+ /*function imgbright(node) {
$(node).removeClass("drophide").addClass("drop");
}
function imgdull(node) {
$(node).removeClass("drop").addClass("drophide");
- }
+ }*/
- // Since our ajax calls are asynchronous, we will give a few
- // seconds for the first ajax call (setting like/dislike), then
+ // Since our ajax calls are asynchronous, we will give a few
+ // seconds for the first ajax call (setting like/dislike), then
// run the updater to pick up any changes and display on the page.
- // The updater will turn any rotators off when it's done.
+ // The updater will turn any rotators off when it's done.
// This function will have returned long before any of these
// events have completed and therefore there won't be any
// visible feedback that anything changed without all this
unpause();
$('#like-rotator-' + ident.toString()).show();
$.get('like/' + ident.toString() + '?verb=' + verb, NavUpdate );
-// if(timer) clearTimeout(timer);
-// timer = setTimeout(NavUpdate,3000);
liking = 1;
}
$('#star-' + ident).addClass('hidden');
$('#unstar-' + ident).removeClass('hidden');
}
- else {
+ else {
$('#starred-' + ident).addClass('unstarred');
$('#starred-' + ident).removeClass('starred');
$('#star-' + ident).removeClass('hidden');
$('#unstar-' + ident).addClass('hidden');
}
-// $('#like-rotator-' + ident).hide();
+// $('#like-rotator-' + ident).hide();
});
}
commentBusy = true;
$('body').css('cursor', 'wait');
$("#comment-preview-inp-" + id).val("0");
- $.post(
- "item",
+ $.post(
+ "item",
$("#comment-edit-form-" + id).serialize(),
function(data) {
if(data.success) {
window.location.href=data.reload;
}
},
- "json"
- );
- return false;
+ "json"
+ );
+ return false;
}
function preview_comment(id) {
$("#comment-preview-inp-" + id).val("1");
$("#comment-edit-preview-" + id).show();
- $.post(
- "item",
+ $.post(
+ "item",
$("#comment-edit-form-" + id).serialize(),
function(data) {
if(data.preview) {
-
+
$("#comment-edit-preview-" + id).html(data.preview);
$("#comment-edit-preview-" + id + " a").click(function() { return false; });
}
},
- "json"
- );
- return true;
+ "json"
+ );
+ return true;
}
+ function showHideComments(id) {
+ if( $("#collapsed-comments-" + id).is(":visible")) {
+ $("#collapsed-comments-" + id).hide();
+ $("#hide-comments-" + id).html(window.showMore);
+ }
+ else {
+ $("#collapsed-comments-" + id).show();
+ $("#hide-comments-" + id).html(window.showFewer);
+ collapseHeight("#collapsed-comments-" + id);
+ }
+ }
+
function preview_post() {
$("#jot-preview").val("1");
$("#jot-preview-content").show();
- tinyMCE.triggerSave();
- $.post(
- "item",
+ $.post(
+ "item",
$("#profile-jot-form").serialize(),
function(data) {
- if(data.preview) {
+ if(data.preview) {
$("#jot-preview-content").html(data.preview);
$("#jot-preview-content" + " a").click(function() { return false; });
}
},
- "json"
- );
+ "json"
+ );
$("#jot-preview").val("0");
- return true;
+ return true;
}
$('body .fakelink').css('cursor', 'wait');
$.get('group/' + gid + '/' + cid + "?t=" + sec_token, function(data) {
$('#group-update-wrapper').html(data);
- $('body .fakelink').css('cursor', 'auto');
+ $('body .fakelink').css('cursor', 'auto');
});
}
$('body .fakelink').css('cursor', 'wait');
$.get('profperm/' + gid + '/' + cid, function(data) {
$('#prof-update-wrapper').html(data);
- $('body .fakelink').css('cursor', 'auto');
+ $('body .fakelink').css('cursor', 'auto');
});
}
});
}
-
-// 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",
- 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 : '',
- 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');
+/**
+ * sprintf in javascript
+ * "{0} and {1}".format('zero','uno');
**/
String.prototype.format = function() {
var formatted = this;