diff options
author | friendica <info@friendica.com> | 2015-03-15 16:51:35 -0700 |
---|---|---|
committer | friendica <info@friendica.com> | 2015-03-15 16:51:35 -0700 |
commit | d7a6dae3cbf88cfc579674caa694a01f4e54ab89 (patch) | |
tree | 8d76a3635a61fedf57ff74442311bb3453d84a26 | |
parent | 6da40fc559f540e67802f771411aa9f85dc8d64d (diff) | |
parent | e780dada832acbb9d46870178f9a6488f4e265d9 (diff) | |
download | volse-hubzilla-d7a6dae3cbf88cfc579674caa694a01f4e54ab89.tar.gz volse-hubzilla-d7a6dae3cbf88cfc579674caa694a01f4e54ab89.tar.bz2 volse-hubzilla-d7a6dae3cbf88cfc579674caa694a01f4e54ab89.zip |
Merge https://github.com/friendica/red into pending_merge
-rw-r--r-- | include/account.php | 151 | ||||
-rw-r--r-- | view/js/acl.js | 202 | ||||
-rw-r--r-- | view/js/autocomplete.js | 146 | ||||
-rw-r--r-- | view/js/main.js | 1832 | ||||
-rw-r--r-- | view/js/mod_chat.js | 10 | ||||
-rw-r--r-- | view/js/mod_directory.js | 11 | ||||
-rw-r--r-- | view/js/mod_events.js | 51 | ||||
-rw-r--r-- | view/js/mod_filestorage.js | 10 | ||||
-rw-r--r-- | view/js/mod_mitem.js | 16 | ||||
-rw-r--r-- | view/js/mod_photos.js | 15 | ||||
-rw-r--r-- | view/js/mod_register.js | 54 | ||||
-rw-r--r-- | view/js/mod_settings.js | 14 | ||||
-rw-r--r-- | view/js/ratings.js | 14 | ||||
-rw-r--r-- | view/theme/redbasic/js/redbasic.js | 71 |
14 files changed, 1259 insertions, 1338 deletions
diff --git a/include/account.php b/include/account.php index 5793c2724..caac0b178 100644 --- a/include/account.php +++ b/include/account.php @@ -523,9 +523,7 @@ function downgrade_accounts() { $basic = get_config('system','default_service_class'); - foreach($r as $rr) { - if(($basic) && ($rr['account_service_class']) && ($rr['account_service_class'] != $basic)) { $x = q("UPDATE account set account_service_class = '%s', account_expires = '%s' where account_id = %d", @@ -550,97 +548,96 @@ function downgrade_accounts() { } - -// check service_class restrictions. If there are no service_classes defined, everything is allowed. -// if $usage is supplied, we check against a maximum count and return true if the current usage is -// less than the subscriber plan allows. Otherwise we return boolean true or false if the property -// is allowed (or not) in this subscriber plan. An unset property for this service plan means -// the property is allowed, so it is only necessary to provide negative properties for each plan, -// or what the subscriber is not allowed to do. - - +/** + * @brief Check service_class restrictions. + * + * If there are no service_classes defined, everything is allowed. + * If $usage is supplied, we check against a maximum count and return true if + * the current usage is less than the subscriber plan allows. Otherwise we + * return boolean true or false if the property is allowed (or not) in this + * subscriber plan. An unset property for this service plan means the property + * is allowed, so it is only necessary to provide negative properties for each + * plan, or what the subscriber is not allowed to do. + * + * Like account_service_class_allows() but queries directly by account rather + * than channel. Service classes are set for accounts, so we look up the + * account for the channel and fetch the service class restrictions of the + * account. + * + * @see account_service_class_allows() if you have a channel_id already + * @see service_class_fetch() + * + * @param int $uid The channel_id to check + * @param string $property The service class property to check for + * @param string|boolean $usage (optional) The value to check against + * @return boolean + */ function service_class_allows($uid, $property, $usage = false) { - $a = get_app(); - if($uid == local_channel()) { - $service_class = $a->account['account_service_class']; - } - else { - $r = q("select account_service_class as service_class - from channel c, account a - where c.channel_account_id=a.account_id and c.channel_id= %d limit 1", - intval($uid) - ); - if($r !== false and count($r)) { - $service_class = $r[0]['service_class']; - } - } - if(! x($service_class)) - return true; // everything is allowed - - $arr = get_config('service_class',$service_class); - if(! is_array($arr) || (! count($arr))) - return true; + $limit = service_class_fetch($uid, $property); - if($usage === false) - return ((x($arr[$property])) ? (bool) $arr[$property] : true); - else { - if(! array_key_exists($property,$arr)) - return true; + if($limit === false) + return true; // No service class set => everything is allowed - return (((intval($usage)) < intval($arr[$property])) ? true : false); + if($usage === false) { + // We use negative values for not allowed properties in a subscriber plan + return ((x($limit)) ? (bool) $limit : true); + } else { + return (((intval($usage)) < intval($limit)) ? true : false); } } /** - * @brief Checks service class restrictions by account_id. + * @brief Check service class restrictions by account. * - * Like service_class_allows() but queries by account rather than channel. + * If there are no service_classes defined, everything is allowed. + * If $usage is supplied, we check against a maximum count and return true if + * the current usage is less than the subscriber plan allows. Otherwise we + * return boolean true or false if the property is allowed (or not) in this + * subscriber plan. An unset property for this service plan means the property + * is allowed, so it is only necessary to provide negative properties for each + * plan, or what the subscriber is not allowed to do. * - * @see service_class_allows() + * Like service_class_allows() but queries directly by account rather than channel. * - * @param int $aid account_id - * @param string $property - * @param int|boolean $usage, default false - * @return boolean + * @see service_class_allows() if you have a channel_id instead of an account_id + * @see account_service_class_fetch() * - * @todo Can't we use here internally account_service_class_fetch() to reduce duplicate code? + * @param int $aid The account_id to check + * @param string $property The service class property to check for + * @param int|boolean $usage, (optional) The value to check against + * @return boolean */ function account_service_class_allows($aid, $property, $usage = false) { - $r = q("select account_service_class as service_class from account where account_id = %d limit 1", - intval($aid) - ); - if($r !== false and count($r)) { - $service_class = $r[0]['service_class']; - } - if(! x($service_class)) - return true; // everything is allowed + $limit = account_service_class_fetch($aid, $property); - $arr = get_config('service_class', $service_class); - if(! is_array($arr) || (! count($arr))) - return true; + if($limit === false) + return true; // No service class is set => everything is allowed - if($usage === false) - return ((x($arr[$property])) ? (bool) $arr[$property] : true); - else { - if(! array_key_exists($property, $arr)) - return true; - - return (((intval($usage)) < intval($arr[$property])) ? true : false); + if($usage === false) { + // We use negative values for not allowed properties in a subscriber plan + return ((x($limit)) ? (bool) $limit : true); + } else { + return (((intval($usage)) < intval($limit)) ? true : false); } } /** - * @brief Fetches a service class for a channel_id and property. + * @brief Queries a service class value for a channel and property. + * + * Service classes are set for accounts, so look up the account for this channel + * and fetch the service classe of the account. * - * This method not just checks if a service class is allowed like service_class_allows(), - * but also returns the service class value. * If no service class is available it returns false and everything should be * allowed. * - * @param int $uid channel_id - * @param string $property + * @see account_service_class_fetch() + * + * @param int $uid The channel_id to query + * @param string $property The service property name to check for * @return boolean|int + * + * @todo Should we merge this with account_service_class_fetch()? */ function service_class_fetch($uid, $property) { $a = get_app(); @@ -668,8 +665,18 @@ function service_class_fetch($uid, $property) { return((array_key_exists($property, $arr)) ? $arr[$property] : false); } -// like service_class_fetch but queries by account rather than channel - +/** + * @brief Queries a service class value for an account and property. + * + * Like service_class_fetch() but queries by account rather than channel. + * + * @see service_class_fetch() if you have channel_id. + * @see account_service_class_allows() + * + * @param int $aid The account_id to query + * @param string $property The service property name to check for + * @return boolean|int + */ function account_service_class_fetch($aid, $property) { $r = q("select account_service_class as service_class from account where account_id = %d limit 1", @@ -692,7 +699,7 @@ function account_service_class_fetch($aid, $property) { function upgrade_link($bbcode = false) { - $l = get_config('service_class','upgrade_link'); + $l = get_config('service_class', 'upgrade_link'); if(! $l) return ''; if($bbcode) @@ -710,4 +717,4 @@ function upgrade_message($bbcode = false) { function upgrade_bool_message($bbcode = false) { $x = upgrade_link($bbcode); return t('This action is not available under your subscription plan.') . (($x) ? ' ' . $x : '') ; -} +}
\ No newline at end of file diff --git a/view/js/acl.js b/view/js/acl.js index 152ff6490..626d1a750 100644 --- a/view/js/acl.js +++ b/view/js/acl.js @@ -1,18 +1,18 @@ -function ACL(backend_url, preset){ +function ACL(backend_url, preset) { that = this; - + that.url = backend_url; - + that.kp_timer = null; - - if (preset==undefined) preset = []; + + if (preset === undefined) preset = []; that.allow_cid = (preset[0] || []); that.allow_gid = (preset[1] || []); that.deny_cid = (preset[2] || []); that.deny_gid = (preset[3] || []); that.group_uids = []; that.nw = 4; //items per row. should be calulated from #acl-list.width - + that.list_content = $("#acl-list-content"); that.item_tpl = unescape($(".acl-list-item[rel=acl-template]").html()); that.showall = $("#acl-showall"); @@ -20,8 +20,8 @@ function ACL(backend_url, preset){ // set the initial ACL lists in case the enclosing form gets submitted before the ajax loader completes. that.on_submit(); - if (preset.length==0) that.showall.removeClass("btn-default").addClass("btn-warning"); - + if (preset.length === 0) that.showall.removeClass("btn-default").addClass("btn-warning"); + /*events*/ $(document).ready(function() { @@ -36,66 +36,63 @@ function ACL(backend_url, preset){ that.on_submit(); // }, 5000 ); }); - } // no longer called on submit - call to update whenever a change occurs to the acl list. -ACL.prototype.on_submit = function(){ +ACL.prototype.on_submit = function() { aclfileds = $("#acl-fields").html(""); - $(that.allow_gid).each(function(i,v){ + $(that.allow_gid).each(function(i,v) { aclfileds.append("<input type='hidden' name='group_allow[]' value='"+v+"'>"); }); - $(that.allow_cid).each(function(i,v){ + $(that.allow_cid).each(function(i,v) { aclfileds.append("<input type='hidden' name='contact_allow[]' value='"+v+"'>"); }); - $(that.deny_gid).each(function(i,v){ + $(that.deny_gid).each(function(i,v) { aclfileds.append("<input type='hidden' name='group_deny[]' value='"+v+"'>"); }); - $(that.deny_cid).each(function(i,v){ + $(that.deny_cid).each(function(i,v) { aclfileds.append("<input type='hidden' name='contact_deny[]' value='"+v+"'>"); }); -// alert(aclfileds); //areYouSure jquery plugin: recheck the form here $('form').trigger('checkform.areYouSure'); +}; -} - -ACL.prototype.search = function(){ +ACL.prototype.search = function() { var srcstr = $("#acl-search").val(); that.list_content.html(""); - that.get(0,100, srcstr); -} + that.get(0, 100, srcstr); +}; -ACL.prototype.on_search = function(event){ +ACL.prototype.on_search = function(event) { if (that.kp_timer) clearTimeout(that.kp_timer); that.kp_timer = setTimeout( that.search, 1000); -} +}; -ACL.prototype.on_showall = function(event){ - event.preventDefault() +ACL.prototype.on_showall = function(event) { + event.preventDefault(); event.stopPropagation(); - - if (that.showall.hasClass("btn-warning")){ + + if (that.showall.hasClass("btn-warning")) { return false; } that.showall.removeClass("btn-default").addClass("btn-warning"); - + that.allow_cid = []; that.allow_gid = []; that.deny_cid = []; that.deny_gid = []; - + that.update_view(); that.on_submit(); - + return false; -} +}; -ACL.prototype.on_button_show = function(event){ - event.preventDefault() - event.stopImmediatePropagation() +ACL.prototype.on_button_show = function(event) { + event.preventDefault(); + event.stopImmediatePropagation(); event.stopPropagation(); /*that.showall.removeClass("selected"); @@ -104,11 +101,13 @@ ACL.prototype.on_button_show = function(event){ that.set_allow($(this).parent().attr('id')); that.on_submit(); + return false; -} -ACL.prototype.on_button_hide = function(event){ - event.preventDefault() - event.stopImmediatePropagation() +}; + +ACL.prototype.on_button_hide = function(event) { + event.preventDefault(); + event.stopImmediatePropagation(); event.stopPropagation(); /*that.showall.removeClass("selected"); @@ -117,48 +116,49 @@ ACL.prototype.on_button_hide = function(event){ that.set_deny($(this).parent().attr('id')); that.on_submit(); + return false; -} +}; -ACL.prototype.set_allow = function(itemid){ +ACL.prototype.set_allow = function(itemid) { type = itemid[0]; - id = itemid.substr(1); - switch(type){ + id = itemid.substr(1); + switch(type) { case "g": - if (that.allow_gid.indexOf(id)<0){ - that.allow_gid.push(id) + if (that.allow_gid.indexOf(id)<0) { + that.allow_gid.push(id); }else { that.allow_gid.remove(id); } if (that.deny_gid.indexOf(id)>=0) that.deny_gid.remove(id); break; case "c": - if (that.allow_cid.indexOf(id)<0){ - that.allow_cid.push(id) + if (that.allow_cid.indexOf(id)<0) { + that.allow_cid.push(id); } else { that.allow_cid.remove(id); } - if (that.deny_cid.indexOf(id)>=0) that.deny_cid.remove(id); + if (that.deny_cid.indexOf(id)>=0) that.deny_cid.remove(id); break; } that.update_view(); -} +}; -ACL.prototype.set_deny = function(itemid){ +ACL.prototype.set_deny = function(itemid) { type = itemid[0]; - id = itemid.substr(1); - switch(type){ + id = itemid.substr(1); + switch(type) { case "g": - if (that.deny_gid.indexOf(id)<0){ - that.deny_gid.push(id) + if (that.deny_gid.indexOf(id)<0) { + that.deny_gid.push(id); } else { that.deny_gid.remove(id); } if (that.allow_gid.indexOf(id)>=0) that.allow_gid.remove(id); break; case "c": - if (that.deny_cid.indexOf(id)<0){ - that.deny_cid.push(id) + if (that.deny_cid.indexOf(id)<0) { + that.deny_cid.push(id); } else { that.deny_cid.remove(id); } @@ -166,67 +166,63 @@ ACL.prototype.set_deny = function(itemid){ break; } that.update_view(); -} +}; -ACL.prototype.update_view = function(){ - if (that.allow_gid.length==0 && that.allow_cid.length==0 && - that.deny_gid.length==0 && that.deny_cid.length==0){ +ACL.prototype.update_view = function() { + if (that.allow_gid.length === 0 && that.allow_cid.length === 0 && + that.deny_gid.length === 0 && that.deny_cid.length === 0) { that.showall.removeClass("btn-default").addClass("btn-warning"); /* jot acl */ - $('#jot-perms-icon').removeClass('icon-lock').addClass('icon-unlock'); - $('#jot-public').show(); - $('.profile-jot-net input').attr('disabled', false); - if(typeof editor != 'undefined' && editor != false) { - $('#profile-jot-desc').html(ispublic); - } - + $('#jot-perms-icon').removeClass('icon-lock').addClass('icon-unlock'); + $('#jot-public').show(); + $('.profile-jot-net input').attr('disabled', false); + if(typeof editor !== 'undefined' && editor !== false) { + $('#profile-jot-desc').html(ispublic); + } } else { - that.showall.removeClass("btn-warning").addClass("btn-default"); - /* jot acl */ - $('#jot-perms-icon').removeClass('icon-unlock').addClass('icon-lock'); - $('#jot-public').hide(); - $('.profile-jot-net input').attr('disabled', 'disabled'); - $('#profile-jot-desc').html(' '); + that.showall.removeClass("btn-warning").addClass("btn-default"); + /* jot acl */ + $('#jot-perms-icon').removeClass('icon-unlock').addClass('icon-lock'); + $('#jot-public').hide(); + $('.profile-jot-net input').attr('disabled', 'disabled'); + $('#profile-jot-desc').html(' '); } - $("#acl-list-content .acl-list-item").each(function(){ + $("#acl-list-content .acl-list-item").each(function() { $(this).removeClass("groupshow grouphide"); }); - - $("#acl-list-content .acl-list-item").each(function(){ + $("#acl-list-content .acl-list-item").each(function() { itemid = $(this).attr('id'); type = itemid[0]; - id = itemid.substr(1); - + id = itemid.substr(1); + btshow = $(this).children(".acl-button-show").removeClass("btn-success").addClass("btn-default"); bthide = $(this).children(".acl-button-hide").removeClass("btn-danger").addClass("btn-default"); - - switch(type){ + + switch(type) { case "g": var uclass = ""; - if (that.allow_gid.indexOf(id)>=0){ + if (that.allow_gid.indexOf(id)>=0) { btshow.removeClass("btn-default").addClass("btn-success"); bthide.removeClass("btn-danger").addClass("btn-default"); uclass="groupshow"; } - if (that.deny_gid.indexOf(id)>=0){ + if (that.deny_gid.indexOf(id)>=0) { btshow.removeClass("btn-success").addClass("btn-default"); bthide.removeClass("btn-default").addClass("btn-danger"); - uclass="grouphide"; + uclass = "grouphide"; } - - $(that.group_uids[id]).each(function(i,v) { + $(that.group_uids[id]).each(function(i, v) { if(uclass == "grouphide") $("#c"+v).removeClass("groupshow"); - if(uclass != "") { + if(uclass !== "") { var cls = $("#c"+v).attr('class'); - if( cls == undefined) + if( cls === undefined) return true; var hiding = cls.indexOf('grouphide'); if(hiding == -1) $("#c"+v).addClass(uclass); } }); - break; case "c": if (that.allow_cid.indexOf(id)>=0){ @@ -236,45 +232,41 @@ ACL.prototype.update_view = function(){ if (that.deny_cid.indexOf(id)>=0){ btshow.removeClass("btn-success").addClass("btn-default"); bthide.removeClass("btn-default").addClass("btn-danger"); - } + } } - }); - -} +}; - -ACL.prototype.get = function(start,count, search){ +ACL.prototype.get = function(start, count, search) { var postdata = { - start:start, - count:count, - search:search, - } - + start: start, + count: count, + search: search, + }; + $.ajax({ - type:'POST', + type: 'POST', url: that.url, data: postdata, dataType: 'json', - success:that.populate + success: that.populate }); -} +}; -ACL.prototype.populate = function(data){ +ACL.prototype.populate = function(data) { var height = Math.ceil(data.items.length / that.nw) * 42; that.list_content.height(height); $(data.items).each(function(){ html = "<div class='acl-list-item {4} {7} {5}' title='{6}' id='{2}{3}'>"+that.item_tpl+"</div>"; html = html.format(this.photo, this.name, this.type, this.xid, '', this.self, this.link, this.taggable); - if (this.uids!=undefined) that.group_uids[this.id] = this.uids; + if (this.uids !== undefined) that.group_uids[this.id] = this.uids; //console.log(html); that.list_content.append(html); }); - $("#acl-list-content .acl-list-item img[data-src]").each(function(i, el){ + $("#acl-list-content .acl-list-item img[data-src]").each(function(i, el) { // Replace data-src attribute with src attribute for every image $(el).attr('src', $(el).data("src")); $(el).removeAttr("data-src"); }); that.update_view(); -} - +};
\ No newline at end of file diff --git a/view/js/autocomplete.js b/view/js/autocomplete.js index b93cc16b3..e077dc88d 100644 --- a/view/js/autocomplete.js +++ b/view/js/autocomplete.js @@ -4,7 +4,7 @@ * require jQuery, jquery.textcomplete */ function contact_search(term, callback, backend_url, type, extra_channels, spinelement) { - if(spinelement){ + if(spinelement) { $(spinelement).spin('tiny'); } // Check if there is a cached result that contains the same information we would get with a full server-side search @@ -12,13 +12,13 @@ function contact_search(term, callback, backend_url, type, extra_channels, spine if(!(bt in contact_search.cache)) contact_search.cache[bt] = {}; var lterm = term.toLowerCase(); // Ignore case - for(t in contact_search.cache[bt]) { + for(var t in contact_search.cache[bt]) { if(lterm.indexOf(t) >= 0) { // A more broad search has been performed already, so use those results $(spinelement).spin(false); // Filter old results locally - var matching = contact_search.cache[bt][t].filter(function (x) { return (x.name.toLowerCase().indexOf(lterm) >= 0 || (typeof x.nick !== 'undefined' && x.nick.toLowerCase().indexOf(lterm) >= 0)); }); // Need to check that nick exists because groups don't have one + var matching = contact_search.cache[bt][t].filter(function (x) { return (x.name.toLowerCase().indexOf(lterm) >= 0 || (typeof x.nick !== 'undefined' && x.nick.toLowerCase().indexOf(lterm) >= 0)); }); // Need to check that nick exists because groups don't have one matching.unshift({taggable:false, text: term, replace: term}); - setTimeout(function() { callback(matching)} , 1); // Use "pseudo-thread" to avoid some problems + setTimeout(function() { callback(matching); } , 1); // Use "pseudo-thread" to avoid some problems return; } } @@ -28,17 +28,17 @@ function contact_search(term, callback, backend_url, type, extra_channels, spine count:100, search:term, type:type, - } + }; if(typeof extra_channels !== 'undefined' && extra_channels) postdata['extra_channels[]'] = extra_channels; - + $.ajax({ type:'POST', url: backend_url, data: postdata, dataType: 'json', - success:function(data){ + success: function(data){ // Cache results if we got them all (more information would not improve results) // data.count represents the maximum number of items if(data.items.length -1 < data.count) { @@ -57,18 +57,18 @@ contact_search.cache = {}; function contact_format(item) { // Show contact information if not explicitly told to show something else if(typeof item.text === 'undefined') { - var desc = ((item.label) ? item.nick + ' ' + item.label : item.nick) + var desc = ((item.label) ? item.nick + ' ' + item.label : item.nick); if(typeof desc === 'undefined') desc = ''; if(desc) desc = ' ('+desc+')'; - return "<div class='{0}' title='{4}'><img src='{1}'><span class='contactname'>{2}</span><span class='dropdown-sub-text'>{3}</span><div class='clear'></div></div>".format(item.taggable, item.photo, item.name, desc, item.link) + return "<div class='{0}' title='{4}'><img src='{1}'><span class='contactname'>{2}</span><span class='dropdown-sub-text'>{3}</span><div class='clear'></div></div>".format(item.taggable, item.photo, item.name, desc, item.link); } else - return "<div>"+item.text+"</div>" + return "<div>" + item.text + "</div>"; } function editor_replace(item) { if(typeof item.replace !== 'undefined') { - return '$1$2'+item.replace; + return '$1$2' + item.replace; } // $2 ensures that prefix (@,@!) is preserved @@ -77,7 +77,8 @@ function editor_replace(item) { // 16 chars is also the minimum length in the backend (otherwise it's interpreted as a local id). if(id.length > 16) id = item.id.substring(0,16); - return '$1$2'+item.nick.replace(' ','') + '+' + id + ' '; + + return '$1$2' + item.nick.replace(' ', '') + '+' + id + ' '; } function basic_replace(item) { @@ -94,76 +95,71 @@ function submit_form(e) { /** * jQuery plugin 'editor_autocomplete' */ -(function( $ ){ +(function( $ ) { $.fn.editor_autocomplete = function(backend_url, extra_channels) { - if (typeof extra_channels === 'undefined') extra_channels = false; - - // Autocomplete contacts - contacts = { - match: /(^|\s)(@\!*)([^ \n]+)$/, - index: 3, - search: function(term, callback) { contact_search(term, callback, backend_url, 'c', extra_channels, spinelement=false); }, - replace: editor_replace, - template: contact_format, - } - - smilies = { - match: /(^|\s)(:[a-z]{2,})$/, - index: 2, - search: function(term, callback) { $.getJSON('/smilies/json').done(function(data) { callback($.map(data, function(entry) { return entry['text'].indexOf(term) === 0 ? entry : null })) }) }, - template: function(item) { return item['icon'] + item['text'] }, - replace: function(item) { return "$1"+item['text'] + ' '; }, - } - this.attr('autocomplete','off'); - this.textcomplete([contacts,smilies],{className:'acpopup',zIndex:1020}); - }; + if (typeof extra_channels === 'undefined') extra_channels = false; + + // Autocomplete contacts + contacts = { + match: /(^|\s)(@\!*)([^ \n]+)$/, + index: 3, + search: function(term, callback) { contact_search(term, callback, backend_url, 'c', extra_channels, spinelement=false); }, + replace: editor_replace, + template: contact_format, + }; + + smilies = { + match: /(^|\s)(:[a-z]{2,})$/, + index: 2, + search: function(term, callback) { $.getJSON('/smilies/json').done(function(data) { callback($.map(data, function(entry) { return entry.text.indexOf(term) === 0 ? entry : null; })); }); }, + template: function(item) { return item.icon + item.text; }, + replace: function(item) { return "$1" + item.text + ' '; }, + }; + this.attr('autocomplete','off'); + this.textcomplete([contacts,smilies], {className:'acpopup', zIndex:1020}); + }; })( jQuery ); /** * jQuery plugin 'search_autocomplete' */ -(function( $ ){ +(function( $ ) { $.fn.search_autocomplete = function(backend_url) { - - // Autocomplete contacts - contacts = { - match: /(^@)([^\n]{2,})$/, - index: 2, - search: function(term, callback) { contact_search(term, callback, backend_url, 'x', [], spinelement='#nav-search-spinner'); }, - replace: basic_replace, - template: contact_format, - } - this.attr('autocomplete','off'); - var a = this.textcomplete([contacts],{className:'acpopup',maxCount:100,zIndex: 1020,appendTo:'nav'}); - - a.on('textComplete:select', function(e,value,strategy) { submit_form(this); }); - - }; + // Autocomplete contacts + contacts = { + match: /(^@)([^\n]{2,})$/, + index: 2, + search: function(term, callback) { contact_search(term, callback, backend_url, 'x', [], spinelement='#nav-search-spinner'); }, + replace: basic_replace, + template: contact_format, + }; + this.attr('autocomplete', 'off'); + var a = this.textcomplete([contacts], {className:'acpopup', maxCount:100, zIndex: 1020, appendTo:'nav'}); + a.on('textComplete:select', function(e, value, strategy) { submit_form(this); }); + }; })( jQuery ); -(function( $ ){ +(function( $ ) { $.fn.contact_autocomplete = function(backend_url, typ, autosubmit, onselect) { - - if(typeof typ === 'undefined') typ = ''; - if(typeof autosubmit === 'undefined') autosubmit = false; - - // Autocomplete contacts - contacts = { - match: /(^)([^\n]+)$/, - index: 2, - search: function(term, callback) { contact_search(term, callback, backend_url, typ,[], spinelement=false); }, - replace: basic_replace, - template: contact_format, - } - - this.attr('autocomplete','off'); - var a = this.textcomplete([contacts],{className:'acpopup',zIndex:1020}); - - if(autosubmit) - a.on('textComplete:select', function(e,value,strategy) { submit_form(this); }); - - if(typeof onselect !== 'undefined') - a.on('textComplete:select',function(e,value,strategy) { onselect(value); }); - }; -})( jQuery ); - + if(typeof typ === 'undefined') typ = ''; + if(typeof autosubmit === 'undefined') autosubmit = false; + + // Autocomplete contacts + contacts = { + match: /(^)([^\n]+)$/, + index: 2, + search: function(term, callback) { contact_search(term, callback, backend_url, typ,[], spinelement=false); }, + replace: basic_replace, + template: contact_format, + }; + + this.attr('autocomplete','off'); + var a = this.textcomplete([contacts], {className:'acpopup', zIndex:1020}); + + if(autosubmit) + a.on('textComplete:select', function(e,value,strategy) { submit_form(this); }); + + if(typeof onselect !== 'undefined') + a.on('textComplete:select', function(e, value, strategy) { onselect(value); }); + }; +})( jQuery );
\ No newline at end of file diff --git a/view/js/main.js b/view/js/main.js index 68a140a33..d86b74345 100644 --- a/view/js/main.js +++ b/view/js/main.js @@ -1,483 +1,448 @@ - function confirmDelete() { return confirm(aStr['delitem']); } +function confirmDelete() { return confirm(aStr.delitem); } - function commentOpenUI(obj,id) { +function commentOpenUI(obj, id) { + $(document).unbind( "click.commentOpen", handler ); - $(document).unbind( "click.commentOpen", handler ); - - var handler = function() { - if(obj.value == aStr['comment']) { - obj.value = ''; - $("#comment-edit-text-" + id).addClass("comment-edit-text-full").removeClass("comment-edit-text-empty"); - // Choose an arbitrary tab index that's greater than what we're using in jot (3 of them) - // The submit button gets tabindex + 1 - $("#comment-edit-text-" + id).attr('tabindex','9'); - $("#comment-edit-submit-" + id).attr('tabindex','10'); - $("#comment-tools-" + id).show(); - } - }; - - $(document).bind( "click.commentOpen", handler ); - - } + var handler = function() { + if(obj.value == aStr.comment) { + obj.value = ''; + $("#comment-edit-text-" + id).addClass("comment-edit-text-full").removeClass("comment-edit-text-empty"); + // Choose an arbitrary tab index that's greater than what we're using in jot (3 of them) + // The submit button gets tabindex + 1 + $("#comment-edit-text-" + id).attr('tabindex','9'); + $("#comment-edit-submit-" + id).attr('tabindex','10'); + $("#comment-tools-" + id).show(); + } + }; - function commentCloseUI(obj,id) { + $(document).bind( "click.commentOpen", handler ); +} - $(document).unbind( "click.commentClose", handler ); +function commentCloseUI(obj, id) { + $(document).unbind( "click.commentClose", handler ); - var handler = function() { - if(obj.value == '') { - obj.value = aStr['comment']; - $("#comment-edit-text-" + id).removeClass("comment-edit-text-full").addClass("comment-edit-text-empty"); - $("#comment-edit-text-" + id).removeAttr('tabindex'); - $("#comment-edit-submit-" + id).removeAttr('tabindex'); - $("#comment-tools-" + id).hide(); - } - }; - - $(document).bind( "click.commentClose", handler ); + var handler = function() { + if(obj.value === '') { + obj.value = aStr.comment; + $("#comment-edit-text-" + id).removeClass("comment-edit-text-full").addClass("comment-edit-text-empty"); + $("#comment-edit-text-" + id).removeAttr('tabindex'); + $("#comment-edit-submit-" + id).removeAttr('tabindex'); + $("#comment-tools-" + id).hide(); + } + }; - } + $(document).bind( "click.commentClose", handler ); +} - function commentOpen(obj,id) { - if(obj.value == aStr['comment']) { - obj.value = ''; - $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); - $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); - $("#mod-cmnt-wrap-" + id).show(); - openMenu("comment-tools-" + id); - return true; - } - return false; +function commentOpen(obj, id) { + if(obj.value == aStr.comment) { + obj.value = ''; + $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); + $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); + $("#mod-cmnt-wrap-" + id).show(); + openMenu("comment-tools-" + id); + return true; } + return false; +} - function commentClose(obj,id) { - if(obj.value == '') { - obj.value = aStr['comment']; - $("#comment-edit-text-" + id).removeClass("comment-edit-text-full"); - $("#comment-edit-text-" + id).addClass("comment-edit-text-empty"); - $("#mod-cmnt-wrap-" + id).hide(); - closeMenu("comment-tools-" + id); - return true; - } - return false; +function commentClose(obj, id) { + if(obj.value === '') { + obj.value = aStr.comment; + $("#comment-edit-text-" + id).removeClass("comment-edit-text-full"); + $("#comment-edit-text-" + id).addClass("comment-edit-text-empty"); + $("#mod-cmnt-wrap-" + id).hide(); + closeMenu("comment-tools-" + id); + return true; } + return false; +} - function showHideCommentBox(id) { - if( $('#comment-edit-form-' + id).is(':visible')) { - $('#comment-edit-form-' + id).hide(); - } - else { - $('#comment-edit-form-' + id).show(); - } +function showHideCommentBox(id) { + if( $('#comment-edit-form-' + id).is(':visible')) { + $('#comment-edit-form-' + id).hide(); + } else { + $('#comment-edit-form-' + id).show(); } +} - function commentInsert(obj,id) { - var tmpStr = $("#comment-edit-text-" + id).val(); - if(tmpStr == '$comment') { - tmpStr = ''; - $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); - $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); - openMenu("comment-tools-" + id); - } - var ins = $(obj).html(); - ins = ins.replace('<','<'); - ins = ins.replace('>','>'); - ins = ins.replace('&','&'); - ins = ins.replace('"','"'); - $("#comment-edit-text-" + id).val(tmpStr + ins); +function commentInsert(obj, id) { + var tmpStr = $("#comment-edit-text-" + id).val(); + if(tmpStr == '$comment') { + tmpStr = ''; + $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); + $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); + openMenu("comment-tools-" + id); } + var ins = $(obj).html(); + ins = ins.replace('<','<'); + ins = ins.replace('>','>'); + ins = ins.replace('&','&'); + ins = ins.replace('"','"'); + $("#comment-edit-text-" + id).val(tmpStr + ins); +} +function insertbbcomment(comment, BBcode, id) { + // allow themes to override this + if(typeof(insertFormatting) != 'undefined') + return(insertFormatting(comment, BBcode, id)); - function insertbbcomment(comment,BBcode,id) { - // allow themes to override this - if(typeof(insertFormatting) != 'undefined') - return(insertFormatting(comment,BBcode,id)); - - var urlprefix = ((BBcode == 'url') ? '#^' : ''); - - var tmpStr = $("#comment-edit-text-" + id).val(); - if(tmpStr == comment) { - tmpStr = ""; - $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); - $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); - openMenu("comment-tools-" + id); - $("#comment-edit-text-" + id).val(tmpStr); - } + var urlprefix = ((BBcode == 'url') ? '#^' : ''); - textarea = document.getElementById("comment-edit-text-" +id); - if (document.selection) { - textarea.focus(); - selected = document.selection.createRange(); - selected.text = urlprefix+"["+BBcode+"]" + selected.text + "[/"+BBcode+"]"; - } else if (textarea.selectionStart || textarea.selectionStart == "0") { - var start = textarea.selectionStart; - var end = textarea.selectionEnd; - textarea.value = textarea.value.substring(0, start) + urlprefix+"["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length); - } - return true; + var tmpStr = $("#comment-edit-text-" + id).val(); + if(tmpStr == comment) { + tmpStr = ""; + $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); + $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); + openMenu("comment-tools-" + id); + $("#comment-edit-text-" + id).val(tmpStr); } - function inserteditortag(BBcode) { - // allow themes to override this - if(typeof(insertEditorFormatting) != 'undefined') - return(insertEditorFormatting(BBcode)); - - textarea = document.getElementById('profile-jot-text'); - if (document.selection) { - textarea.focus(); - selected = document.selection.createRange(); - selected.text = urlprefix+"["+BBcode+"]" + selected.text + "[/"+BBcode+"]"; - } else if (textarea.selectionStart || textarea.selectionStart == "0") { - var start = textarea.selectionStart; - var end = textarea.selectionEnd; - textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length); - } - return true; + textarea = document.getElementById("comment-edit-text-" +id); + if (document.selection) { + textarea.focus(); + selected = document.selection.createRange(); + selected.text = urlprefix+"["+BBcode+"]" + selected.text + "[/"+BBcode+"]"; + } else if (textarea.selectionStart || textarea.selectionStart == "0") { + var start = textarea.selectionStart; + var end = textarea.selectionEnd; + textarea.value = textarea.value.substring(0, start) + urlprefix+"["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length); } + return true; +} +function inserteditortag(BBcode) { + // allow themes to override this + if(typeof(insertEditorFormatting) != 'undefined') + return(insertEditorFormatting(BBcode)); + + textarea = document.getElementById('profile-jot-text'); + if (document.selection) { + textarea.focus(); + selected = document.selection.createRange(); + selected.text = urlprefix+"["+BBcode+"]" + selected.text + "[/"+BBcode+"]"; + } else if (textarea.selectionStart || textarea.selectionStart == "0") { + var start = textarea.selectionStart; + var end = textarea.selectionEnd; + textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length); + } + return true; +} +function insertCommentURL(comment, id) { + reply = prompt(aStr.linkurl); + if(reply && reply.length) { + reply = bin2hex(reply); + $('body').css('cursor', 'wait'); + $.get('parse_url?binurl=' + reply, function(data) { + var tmpStr = $("#comment-edit-text-" + id).val(); + if(tmpStr == comment) { + tmpStr = ""; + $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); + $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); + openMenu("comment-tools-" + id); + $("#comment-edit-text-" + id).val(tmpStr); + } - function insertCommentURL(comment,id) { - - reply = prompt(aStr['linkurl']); - if(reply && reply.length) { - reply = bin2hex(reply); - $('body').css('cursor', 'wait'); - $.get('parse_url?binurl=' + reply, function(data) { - var tmpStr = $("#comment-edit-text-" + id).val(); - if(tmpStr == comment) { - tmpStr = ""; - $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); - $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); - openMenu("comment-tools-" + id); - $("#comment-edit-text-" + id).val(tmpStr); - } - - textarea = document.getElementById("comment-edit-text-" +id); - textarea.value = textarea.value + data; - $('body').css('cursor', 'auto'); - - }); - } - return true; + textarea = document.getElementById("comment-edit-text-" +id); + textarea.value = textarea.value + data; + $('body').css('cursor', 'auto'); + }); } + return true; +} +function viewsrc(id) { + $.colorbox({href: 'viewsrc/' + id, maxWidth: '80%', maxHeight: '80%' }); +} +function qCommentInsert(obj, id) { + var tmpStr = $("#comment-edit-text-" + id).val(); + if(tmpStr == aStr.comment) { + tmpStr = ''; + $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); + $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); + openMenu("comment-edit-submit-wrapper-" + id); + } + var ins = $(obj).val(); + ins = ins.replace('<','<'); + ins = ins.replace('>','>'); + ins = ins.replace('&','&'); + ins = ins.replace('"','"'); + $("#comment-edit-text-" + id).val(tmpStr + ins); + $(obj).val(''); +} - - function viewsrc(id) { - $.colorbox({href: 'viewsrc/' + id, maxWidth: '80%', maxHeight: '80%' }); +function showHideComments(id) { + if( $('#collapsed-comments-' + id).is(':visible')) { + $('#collapsed-comments-' + id + ' .autotime').timeago('dispose'); + $('#collapsed-comments-' + id).slideUp(); + $('#hide-comments-' + id).html(aStr.showmore); + $('#hide-comments-total-' + id).show(); + } else { + $('#collapsed-comments-' + id + ' .autotime').timeago(); + $('#collapsed-comments-' + id).slideDown(); + $('#hide-comments-' + id).html(aStr.showfewer); + $('#hide-comments-total-' + id).hide(); } +} - function qCommentInsert(obj,id) { - var tmpStr = $("#comment-edit-text-" + id).val(); - if(tmpStr == aStr['comment']) { - tmpStr = ''; - $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); - $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); - openMenu("comment-edit-submit-wrapper-" + id); - } - var ins = $(obj).val(); - ins = ins.replace('<','<'); - ins = ins.replace('>','>'); - ins = ins.replace('&','&'); - ins = ins.replace('"','"'); - $("#comment-edit-text-" + id).val(tmpStr + ins); - $(obj).val(''); +function openClose(theID) { + if(document.getElementById(theID).style.display == "block") { + document.getElementById(theID).style.display = "none"; + } else { + document.getElementById(theID).style.display = "block"; } +} - function showHideComments(id) { - if( $('#collapsed-comments-' + id).is(':visible')) { - $('#collapsed-comments-' + id + ' .autotime').timeago('dispose'); - $('#collapsed-comments-' + id).slideUp(); - $('#hide-comments-' + id).html(aStr['showmore']); - $('#hide-comments-total-' + id).show(); - } - else { - $('#collapsed-comments-' + id + ' .autotime').timeago(); - $('#collapsed-comments-' + id).slideDown(); - $('#hide-comments-' + id).html(aStr['showfewer']); - $('#hide-comments-total-' + id).hide(); - } +function closeOpen(theID) { + if(document.getElementById(theID).style.display == "none") { + document.getElementById(theID).style.display = "block"; + } else { + document.getElementById(theID).style.display = "none"; } +} +function openMenu(theID) { + document.getElementById(theID).style.display = "block"; +} + +function closeMenu(theID) { + document.getElementById(theID).style.display = "none"; +} - function openClose(theID) { - if(document.getElementById(theID).style.display == "block") { - document.getElementById(theID).style.display = "none" - } - else { - document.getElementById(theID).style.display = "block" - } - } - - function closeOpen(theID) { - if(document.getElementById(theID).style.display == "none") { - document.getElementById(theID).style.display = "block" - } - else { - document.getElementById(theID).style.display = "none" - } - } - - function openMenu(theID) { - document.getElementById(theID).style.display = "block" - } - - function closeMenu(theID) { - document.getElementById(theID).style.display = "none" - } - - function markRead(notifType) { +function markRead(notifType) { $.get('ping?f=&markRead='+notifType); if(timer) clearTimeout(timer); $('#' + notifType + '-update').html(''); timer = setTimeout(NavUpdate,2000); - } +} - function markItemRead(itemId) { +function markItemRead(itemId) { $.get('ping?f=&markItemRead='+itemId); $('.unseen-wall-indicator-'+itemId).hide(); - } - - - - var src = null; - var prev = null; - var livetime = null; - var msie = false; - var stopped = false; - var totStopped = false; - var timer = null; - var pr = 0; - var liking = 0; - var in_progress = false; - var langSelect = false; - var commentBusy = false; - var last_popup_menu = null; - var last_popup_button = null; - var scroll_next = false; - var next_page = 1; - var page_load = true; - var loadingPage = true; - var pageHasMoreContent = true; - var updateCountsOnly = false; - var divmore_height = 400; - var last_filestorage_id = null; - - $(function() { - $.ajaxSetup({cache: false}); - - msie = false; // $.browser.msie ; - - var e = document.getElementById('content-complete'); - if(e) - pageHasMoreContent = false; - - /* 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(); - var input = $(this).siblings("input"); - var val = 1-input.val(); - var id = input.attr("id"); - $("#"+id+"_onoff ."+ (val==0?"on":"off")).addClass("hidden"); - $("#"+id+"_onoff ."+ (val==1?"on":"off")).removeClass("hidden"); - input.val(val); - //console.log(id); - }); - - /* setup field_richtext */ - setupFieldRichtext(); +} - /* Turn elements with one of our special rel tags into popup menus */ - /* CHANGES: let bootstrap handle popups and only do the loading here */ - - $('a[rel^=#]').click(function(e){ - manage_popup_menu(this,e); - return; - }); +var src = null; +var prev = null; +var livetime = null; +var msie = false; +var stopped = false; +var totStopped = false; +var timer = null; +var pr = 0; +var liking = 0; +var in_progress = false; +var langSelect = false; +var commentBusy = false; +var last_popup_menu = null; +var last_popup_button = null; +var scroll_next = false; +var next_page = 1; +var page_load = true; +var loadingPage = true; +var pageHasMoreContent = true; +var updateCountsOnly = false; +var divmore_height = 400; +var last_filestorage_id = null; + +$(function() { + $.ajaxSetup({cache: false}); + + msie = false; // $.browser.msie ; - $('span[rel^=#]').click(function(e){ - manage_popup_menu(this,e); - return; - }); + var e = document.getElementById('content-complete'); + if(e) + pageHasMoreContent = false; + /* 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(); + var input = $(this).siblings("input"); + var val = 1-input.val(); + var id = input.attr("id"); + $("#"+id+"_onoff ."+ (val==0?"on":"off")).addClass("hidden"); + $("#"+id+"_onoff ."+ (val==1?"on":"off")).removeClass("hidden"); + input.val(val); + //console.log(id); + }); - function manage_popup_menu(w,e) { - menu = $( $(w).attr('rel') ); + /* setup field_richtext */ + setupFieldRichtext(); - /* notification menus are loaded dynamically - * - here we find a rel tag to figure out what type of notification to load */ - var loader_source = $(menu).attr('rel'); - - if(typeof(loader_source) != 'undefined' && loader_source.length) { - notify_popup_loader(loader_source); - } + /* Turn elements with one of our special rel tags into popup menus */ + /* CHANGES: let bootstrap handle popups and only do the loading here */ + + $('a[rel^=#]').click(function(e){ + manage_popup_menu(this, e); + return; + }); + + $('span[rel^=#]').click(function(e){ + manage_popup_menu(this, e); + return; + }); + + function manage_popup_menu(w,e) { + menu = $( $(w).attr('rel') ); + + /* notification menus are loaded dynamically + * - here we find a rel tag to figure out what type of notification to load */ + + var loader_source = $(menu).attr('rel'); + + if(typeof(loader_source) != 'undefined' && loader_source.length) { + notify_popup_loader(loader_source); } + } - // fancyboxes - // Is this actually used anywhere? - $("a.popupbox").colorbox({ - 'transition' : 'elastic' - }); - - - - NavUpdate(); - // Allow folks to stop the ajax page updates with the pause/break key - $(document).keydown(function(event) { - if(event.keyCode == '8') { - var target = event.target || event.srcElement; - if (!/input|textarea/i.test(target.nodeName)) { - return false; - } + // fancyboxes + // Is this actually used anywhere? + $("a.popupbox").colorbox({ + 'transition' : 'elastic' + }); + + NavUpdate(); + // Allow folks to stop the ajax page updates with the pause/break key + $(document).keydown(function(event) { + if(event.keyCode == '8') { + var target = event.target || event.srcElement; + if (!/input|textarea/i.test(target.nodeName)) { + return false; } - if(event.keyCode == '34') { - if((pageHasMoreContent) && (! loadingPage)) { - $('#more').hide(); - $('#no-more').hide(); - - next_page++; - scroll_next = true; - loadingPage = true; - - if(($('.directory-end').length == 0) && ($('.photos-end').length == 0)) - liveUpdate(); - else - pageUpdate(); - return true; - } + } + if(event.keyCode == '34') { + if((pageHasMoreContent) && (! loadingPage)) { + $('#more').hide(); + $('#no-more').hide(); + + next_page++; + scroll_next = true; + loadingPage = true; + + if(($('.directory-end').length == 0) && ($('.photos-end').length == 0)) + liveUpdate(); + else + pageUpdate(); + return true; } + } - if(event.keyCode == '19' || (event.ctrlKey && event.which == '32')) { - event.preventDefault(); - if(stopped == false) { - stopped = true; - if (event.ctrlKey) { - totStopped = true; - } - $('#pause').html('<img src="images/pause.gif" alt="pause" style="border: 1px solid black;" />'); - } else { - unpause(); + if(event.keyCode == '19' || (event.ctrlKey && event.which == '32')) { + event.preventDefault(); + if(stopped === false) { + stopped = true; + if (event.ctrlKey) { + totStopped = true; } + $('#pause').html('<img src="images/pause.gif" alt="pause" style="border: 1px solid black;" />'); } else { - if (!totStopped) { - unpause(); - } + unpause(); } - }); - - + } else { + if (!totStopped) { + unpause(); + } + } }); +}); - function NavUpdate() { - - if(liking) - $('.like-rotator').spin(false); - - if(! stopped) { - - var pingCmd = 'ping' + ((localUser != 0) ? '?f=&uid=' + localUser : ''); +function NavUpdate() { + if(liking) + $('.like-rotator').spin(false); - $.get(pingCmd,function(data) { - - if(data.invalid == 1) { - window.location.href=window.location.href - } + if(! stopped) { + var pingCmd = 'ping' + ((localUser != 0) ? '?f=&uid=' + localUser : ''); + $.get(pingCmd,function(data) { + if(data.invalid == 1) { + window.location.href=window.location.href; + } - if(! updateCountsOnly) { - // start live update + if(! updateCountsOnly) { + // start live update - if($('#live-network').length) { src = 'network'; liveUpdate(); } - if($('#live-channel').length) { src = 'channel'; liveUpdate(); } - if($('#live-home').length) { src = 'home'; liveUpdate(); } - if($('#live-display').length) { src = 'display'; liveUpdate(); } - if($('#live-search').length) { src = 'search'; liveUpdate(); } + if($('#live-network').length) { src = 'network'; liveUpdate(); } + if($('#live-channel').length) { src = 'channel'; liveUpdate(); } + if($('#live-home').length) { src = 'home'; liveUpdate(); } + if($('#live-display').length) { src = 'display'; liveUpdate(); } + if($('#live-search').length) { src = 'search'; liveUpdate(); } - if($('#live-photos').length) { - if(liking) { - liking = 0; - window.location.href=window.location.href - } + if($('#live-photos').length) { + if(liking) { + liking = 0; + window.location.href=window.location.href; } } + } - updateCountsOnly = false; - - if(data.network == 0) { - data.network = ''; - $('.net-update').removeClass('show') - } - else { - $('.net-update').addClass('show') - } - $('.net-update').html(data.network); + updateCountsOnly = false; - if(data.home == 0) { data.home = ''; $('.home-update').removeClass('show') } else { $('.home-update').addClass('show') } - $('.home-update').html(data.home); - + if(data.network == 0) { + data.network = ''; + $('.net-update').removeClass('show'); + } else { + $('.net-update').addClass('show'); + } + $('.net-update').html(data.network); - if(data.intros == 0) { data.intros = ''; $('.intro-update').removeClass('show') } else { $('.intro-update').addClass('show') } - $('.intro-update').html(data.intros); + if(data.home == 0) { data.home = ''; $('.home-update').removeClass('show'); } else { $('.home-update').addClass('show'); } + $('.home-update').html(data.home); - if(data.mail == 0) { data.mail = ''; $('.mail-update').removeClass('show') } else { $('.mail-update').addClass('show') } - $('.mail-update').html(data.mail); - + if(data.intros == 0) { data.intros = ''; $('.intro-update').removeClass('show'); } else { $('.intro-update').addClass('show'); } + $('.intro-update').html(data.intros); - if(data.notify == 0) { data.notify = ''; $('.notify-update').removeClass('show') } else { $('.notify-update').addClass('show') } - $('.notify-update').html(data.notify); + if(data.mail == 0) { data.mail = ''; $('.mail-update').removeClass('show'); } else { $('.mail-update').addClass('show'); } + $('.mail-update').html(data.mail); - if(data.register == 0) { data.register = ''; $('.register-update').removeClass('show') } else { $('.register-update').addClass('show') } - $('.register-update').html(data.register); + if(data.notify == 0) { data.notify = ''; $('.notify-update').removeClass('show'); } else { $('.notify-update').addClass('show'); } + $('.notify-update').html(data.notify); - if(data.events == 0) { data.events = ''; $('.events-update').removeClass('show') } else { $('.events-update').addClass('show') } - $('.events-update').html(data.events); + if(data.register == 0) { data.register = ''; $('.register-update').removeClass('show'); } else { $('.register-update').addClass('show'); } + $('.register-update').html(data.register); - if(data.events_today == 0) { data.events_today = ''; $('.events-today-update').removeClass('show') } else { $('.events-today-update').addClass('show'); $('.events-update').html(data.events + '*'); } - $('.events-today-update').html(data.events_today); + if(data.events == 0) { data.events = ''; $('.events-update').removeClass('show'); } else { $('.events-update').addClass('show'); } + $('.events-update').html(data.events); - if(data.birthdays == 0) { data.birthdays = ''; $('.birthdays-update').removeClass('show') } else { $('.birthdays-update').addClass('show'); } - $('.birthdays-update').html(data.birthdays); + if(data.events_today == 0) { data.events_today = ''; $('.events-today-update').removeClass('show'); } else { $('.events-today-update').addClass('show'); $('.events-update').html(data.events + '*'); } + $('.events-today-update').html(data.events_today); - if(data.birthdays_today == 0) { data.birthdays_today = ''; $('.birthdays-today-update').removeClass('show') } else { $('.birthdays-today-update').addClass('show'); $('.birthdays-update').html(data.birthdays + '*'); } - $('.birthdays-today-update').html(data.birthdays_today); + if(data.birthdays == 0) { data.birthdays = ''; $('.birthdays-update').removeClass('show'); } else { $('.birthdays-update').addClass('show'); } + $('.birthdays-update').html(data.birthdays); - if(data.all_events == 0) { data.all_events = ''; $('.all_events-update').removeClass('show') } else { $('.all_events-update').addClass('show') } - $('.all_events-update').html(data.all_events); - if(data.all_events_today == 0) { data.all_events_today = ''; $('.all_events-today-update').removeClass('show') } else { $('.all_events-today-update').addClass('show'); $('.all_events-update').html(data.all_events + '*'); } - $('.all_events-today-update').html(data.all_events_today); + if(data.birthdays_today == 0) { data.birthdays_today = ''; $('.birthdays-today-update').removeClass('show'); } else { $('.birthdays-today-update').addClass('show'); $('.birthdays-update').html(data.birthdays + '*'); } + $('.birthdays-today-update').html(data.birthdays_today); - $.jGrowl.defaults.closerTemplate = '<div>[ ' + aStr['closeAll'] + ']</div>'; + if(data.all_events == 0) { data.all_events = ''; $('.all_events-update').removeClass('show'); } else { $('.all_events-update').addClass('show'); } + $('.all_events-update').html(data.all_events); - $(data.notice).each(function() { - $.jGrowl(this.message, { sticky: true, theme: 'notice' }); - }); + if(data.all_events_today == 0) { data.all_events_today = ''; $('.all_events-today-update').removeClass('show'); } else { $('.all_events-today-update').addClass('show'); $('.all_events-update').html(data.all_events + '*'); } + $('.all_events-today-update').html(data.all_events_today); - $(data.info).each(function(){ - $.jGrowl(this.message, { sticky: false, theme: 'info', life: 10000 }); - }); + $.jGrowl.defaults.closerTemplate = '<div>[ ' + aStr.closeAll + ']</div>'; - + $(data.notice).each(function() { + $.jGrowl(this.message, { sticky: true, theme: 'notice' }); + }); - }) ; - } - timer = setTimeout(NavUpdate,updateInterval); + $(data.info).each(function(){ + $.jGrowl(this.message, { sticky: false, theme: 'info', life: 10000 }); + }); + }) ; } + timer = setTimeout(NavUpdate, updateInterval); +} - -function updatePageItems(mode,data) { - +function updatePageItems(mode, data) { if(mode === 'append') { $(data).each(function() { @@ -491,11 +456,10 @@ function updatePageItems(mode,data) { var e = document.getElementById('content-complete'); if(e) { - pageHasMoreContent = false; + pageHasMoreContent = false; } collapseHeight(); - } @@ -504,7 +468,6 @@ function updateConvItems(mode,data) { if(mode === 'update') { prev = 'threads-begin'; - $('.thread-wrapper.toplevel_item',data).each(function() { var ident = $(this).attr('id'); @@ -545,18 +508,14 @@ function updateConvItems(mode,data) { next = 'threads-end'; - - $('.thread-wrapper.toplevel_item',data).each(function() { - - var ident = $(this).attr('id'); var commentWrap = $('#'+ident+' .collapsed-comments').attr('id'); var itmId = 0; var isVisible = false; if(typeof commentWrap !== 'undefined') - itmId = commentWrap.replace('collapsed-comments-',''); + itmId = commentWrap.replace('collapsed-comments-', ''); if($('#' + ident).length == 0) { $('img',this).each(function() { @@ -571,7 +530,7 @@ function updateConvItems(mode,data) { } else { $('img',this).each(function() { - $(this).attr('src',$(this).attr('dst')); + $(this).attr('src', $(this).attr('dst')); }); if($('#collapsed-comments-'+itmId).is(':visible')) isVisible = true; @@ -606,18 +565,16 @@ function updateConvItems(mode,data) { $('img',this).each(function() { $(this).attr('src',$(this).attr('dst')); }); - if($('#collapsed-comments-'+itmId).is(':visible')) isVisible = true; $('#' + prev).after($(this)); if(isVisible) showHideComments(itmId); $("> .wall-item-outside-wrapper .autotime, > .thread-wrapper .autotime",this).timeago(); - } prev = ident; }); - + if(loadingPage) { loadingPage = false; } @@ -629,7 +586,6 @@ function updateConvItems(mode,data) { if (title) document.title = title + " - " + document.title; } - } $('.like-rotator').spin(false); @@ -641,472 +597,454 @@ function updateConvItems(mode,data) { /* autocomplete @nicknames */ $(".comment-edit-form textarea").editor_autocomplete(baseurl+"/acl?f=&n=1"); - + var bimgs = $(".wall-item-body img").not(function() { return this.complete; }); var bimgcount = bimgs.length; if (bimgcount) { bimgs.load(function() { - bimgcount--; - if (! bimgcount) { - collapseHeight(); - - } - }); + bimgcount--; + if (! bimgcount) { + collapseHeight(); + } + }); } else { collapseHeight(); } - } - function collapseHeight() { - $(".wall-item-body, .contact-info").each(function() { - if($(this).height() > divmore_height + 10) { - if(! $(this).hasClass('divmore')) { - $(this).readmore({ - collapsedHeight: divmore_height, - moreLink: '<a href="#" class="divgrow-showmore">'+aStr['divgrowmore']+'</a>', - lessLink: '<a href="#" class="divgrow-showmore">'+aStr['divgrowless']+'</a>' - }); - $(this).addClass('divmore'); - } - } - }); - } - - function liveUpdate() { - if(typeof profile_uid === 'undefined') profile_uid = false; /* Should probably be unified with channelId defined in head.tpl */ - if((src == null) || (stopped) || (! profile_uid)) { $('.like-rotator').spin(false); return; } - if(($('.comment-edit-text-full').length) || (in_progress)) { - if(livetime) { - clearTimeout(livetime); +function collapseHeight() { + $(".wall-item-body, .contact-info").each(function() { + if($(this).height() > divmore_height + 10) { + if(! $(this).hasClass('divmore')) { + $(this).readmore({ + collapsedHeight: divmore_height, + moreLink: '<a href="#" class="divgrow-showmore">' + aStr.divgrowmore + '</a>', + lessLink: '<a href="#" class="divgrow-showmore">' + aStr.divgrowless + '</a>' + }); + $(this).addClass('divmore'); } - livetime = setTimeout(liveUpdate, 10000); - return; } - if(livetime != null) - livetime = null; - - prev = 'live-' + src; - - in_progress = true; - - var update_url; - var update_mode; + }); +} - if(scroll_next) { - bParam_page = next_page; - page_load = true; - } - else { - bParam_page = 1; +function liveUpdate() { + if(typeof profile_uid === 'undefined') profile_uid = false; /* Should probably be unified with channelId defined in head.tpl */ + if((src === null) || (stopped) || (! profile_uid)) { $('.like-rotator').spin(false); return; } + if(($('.comment-edit-text-full').length) || (in_progress)) { + if(livetime) { + clearTimeout(livetime); } + livetime = setTimeout(liveUpdate, 10000); + return; + } + if(livetime !== null) + livetime = null; - update_url = buildCmd(); + prev = 'live-' + src; - if(page_load) { - $("#page-spinner").spin('small'); - if(bParam_page == 1) - update_mode = 'replace'; - else - update_mode = 'append'; - } - else - update_mode = 'update'; - - $.get(update_url,function(data) { - page_load = false; - scroll_next = false; - updateConvItems(update_mode,data); - $("#page-spinner").spin(false); - $("#profile-jot-text-loading").spin(false); - - in_progress = false; - - // FIXME - the following lines were added so that almost - // immediately after we update the posts on the page, we - // re-check and update the notification counts. - // As it turns out this causes a bit of an inefficiency - // as we're pinging twice for every update, once before - // and once after. A btter way to do this is to rewrite - // NavUpdate and perhaps LiveUpdate so that we check for - // post updates first and only call the notification ping - // once. - - updateCountsOnly = true; - if(timer) clearTimeout(timer); - timer = setTimeout(NavUpdate,10); - }); + in_progress = true; + var update_url; + var update_mode; + if(scroll_next) { + bParam_page = next_page; + page_load = true; + } + else { + bParam_page = 1; } - function pageUpdate() { - - in_progress = true; + update_url = buildCmd(); - var update_url; - var update_mode; + if(page_load) { + $("#page-spinner").spin('small'); + if(bParam_page == 1) + update_mode = 'replace'; + else + update_mode = 'append'; + } + else + update_mode = 'update'; + + $.get(update_url, function(data) { + page_load = false; + scroll_next = false; + updateConvItems(update_mode,data); + $("#page-spinner").spin(false); + $("#profile-jot-text-loading").spin(false); + + in_progress = false; + + // FIXME - the following lines were added so that almost + // immediately after we update the posts on the page, we + // re-check and update the notification counts. + // As it turns out this causes a bit of an inefficiency + // as we're pinging twice for every update, once before + // and once after. A btter way to do this is to rewrite + // NavUpdate and perhaps LiveUpdate so that we check for + // post updates first and only call the notification ping + // once. + + updateCountsOnly = true; + if(timer) clearTimeout(timer); + timer = setTimeout(NavUpdate,10); + }); +} - if(scroll_next) { - bParam_page = next_page; - page_load = true; - } - else { - bParam_page = 1; - } +function pageUpdate() { - update_url = baseurl + '/' + page_query + '/?f=&aj=1&page=' + bParam_page + extra_args ; + in_progress = true; - $("#page-spinner").spin('small'); - update_mode = 'append'; - - $.get(update_url,function(data) { - page_load = false; - scroll_next = false; - updatePageItems(update_mode,data); - $("#page-spinner").spin(false); - in_progress = false; - }); + var update_url; + var update_mode; + if(scroll_next) { + bParam_page = next_page; + page_load = true; } - - function justifyPhotos() { - justifiedGalleryActive = true; - $('#photo-album-contents').justifiedGallery({ - margins: 3, - border: 0, - ignoreElement: '#page-end', - sizeRangeSuffixes: { - 'lt100': '-2', - 'lt240': '-2', - 'lt320': '-2', - 'lt500': '', - 'lt640': '-1', - 'lt1024': '-0' - } - }).on('jg.complete', function(e){ justifiedGalleryActive = false; }); + else { + bParam_page = 1; } - function justifyPhotosAjax() { - justifiedGalleryActive = true; - $('#photo-album-contents').justifiedGallery('norewind').on('jg.complete', function(e){ justifiedGalleryActive = false; }); - } + update_url = baseurl + '/' + page_query + '/?f=&aj=1&page=' + bParam_page + extra_args ; - function notify_popup_loader(notifyType) { + $("#page-spinner").spin('small'); + update_mode = 'append'; - /* notifications template */ - var notifications_tpl= unescape($("#nav-notifications-template[rel=template]").html()); - var notifications_all = unescape($('<div>').append( $("#nav-" + notifyType + "-see-all").clone() ).html()); //outerHtml hack - var notifications_mark = unescape($('<div>').append( $("#nav-" + notifyType + "-mark-all").clone() ).html()); //outerHtml hack - var notifications_empty = unescape($("#nav-" + notifyType + "-menu").html()); - - var notify_menu = $("#nav-" + notifyType + "-menu"); + $.get(update_url,function(data) { + page_load = false; + scroll_next = false; + updatePageItems(update_mode,data); + $("#page-spinner").spin(false); + in_progress = false; + }); +} - var pingExCmd = 'ping/' + notifyType + ((localUser != 0) ? '?f=&uid=' + localUser : ''); - $.get(pingExCmd,function(data) { +function justifyPhotos() { + justifiedGalleryActive = true; + $('#photo-album-contents').justifiedGallery({ + margins: 3, + border: 0, + ignoreElement: '#page-end', + sizeRangeSuffixes: { + 'lt100': '-2', + 'lt240': '-2', + 'lt320': '-2', + 'lt500': '', + 'lt640': '-1', + 'lt1024': '-0' + } + }).on('jg.complete', function(e){ justifiedGalleryActive = false; }); +} - if(data.invalid == 1) { - window.location.href=window.location.href - } +function justifyPhotosAjax() { + justifiedGalleryActive = true; + $('#photo-album-contents').justifiedGallery('norewind').on('jg.complete', function(e){ justifiedGalleryActive = false; }); +} +function notify_popup_loader(notifyType) { - if(data.notify.length==0){ - $("#nav-" + notifyType + "-menu").html(aStr[nothingnew]); + /* notifications template */ + var notifications_tpl= unescape($("#nav-notifications-template[rel=template]").html()); + var notifications_all = unescape($('<div>').append( $("#nav-" + notifyType + "-see-all").clone() ).html()); //outerHtml hack + var notifications_mark = unescape($('<div>').append( $("#nav-" + notifyType + "-mark-all").clone() ).html()); //outerHtml hack + var notifications_empty = unescape($("#nav-" + notifyType + "-menu").html()); - } else { - $("#nav-" + notifyType + "-menu").html(notifications_all + notifications_mark); + var notify_menu = $("#nav-" + notifyType + "-menu"); - $(data.notify).each(function() { - html = notifications_tpl.format(this.notify_link,this.photo,this.name,this.message,this.when,this.hclass); - $("#nav-" + notifyType + "-menu").append(html); - }); - $(".dropdown-menu img[data-src]").each(function(i, el){ - // Replace data-src attribute with src attribute for every image - $(el).attr('src', $(el).data("src")); - $(el).removeAttr("data-src"); - }); - } - }); + var pingExCmd = 'ping/' + notifyType + ((localUser != 0) ? '?f=&uid=' + localUser : ''); + $.get(pingExCmd, function(data) { - } + if(data.invalid == 1) { + window.location.href=window.location.href; + } + if(data.notify.length == 0){ + $("#nav-" + notifyType + "-menu").html(aStr[nothingnew]); + } else { + $("#nav-" + notifyType + "-menu").html(notifications_all + notifications_mark); - // 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. - // 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 - // trickery. This still could cause confusion if the "like" ajax call - // is delayed and NavUpdate runs before it completes. + $(data.notify).each(function() { + html = notifications_tpl.format(this.notify_link,this.photo,this.name,this.message,this.when,this.hclass); + $("#nav-" + notifyType + "-menu").append(html); + }); + $(".dropdown-menu img[data-src]").each(function(i, el){ + // Replace data-src attribute with src attribute for every image + $(el).attr('src', $(el).data("src")); + $(el).removeAttr("data-src"); + }); + } + }); +} - function dolike(ident,verb) { - unpause(); - $('#like-rotator-' + ident.toString()).spin('tiny'); - $.get('like/' + ident.toString() + '?verb=' + verb, NavUpdate ); - liking = 1; - } +// 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. +// 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 +// trickery. This still could cause confusion if the "like" ajax call +// is delayed and NavUpdate runs before it completes. - function doprofilelike(ident,verb) { - $.get('like/' + ident + '?verb=' + verb, function() { window.location.href=window.location.href; }); - } +function dolike(ident, verb) { + unpause(); + $('#like-rotator-' + ident.toString()).spin('tiny'); + $.get('like/' + ident.toString() + '?verb=' + verb, NavUpdate ); + liking = 1; +} +function doprofilelike(ident, verb) { + $.get('like/' + ident + '?verb=' + verb, function() { window.location.href=window.location.href; }); +} - function dosubthread(ident) { - unpause(); - $('#like-rotator-' + ident.toString()).spin('tiny'); - $.get('subthread/' + ident.toString(), NavUpdate ); - liking = 1; - } +function dosubthread(ident) { + unpause(); + $('#like-rotator-' + ident.toString()).spin('tiny'); + $.get('subthread/' + ident.toString(), NavUpdate ); + liking = 1; +} +function dostar(ident) { + ident = ident.toString(); + $('#like-rotator-' + ident).spin('tiny'); + $.get('starred/' + ident, function(data) { + if(data.result == 1) { + $('#starred-' + ident).addClass('starred'); + $('#starred-' + ident).removeClass('unstarred'); + $('#starred-' + ident).addClass('icon-star-full'); + $('#starred-' + ident).removeClass('icon-star-empty'); + $('#star-' + ident).addClass('hidden'); + $('#unstar-' + ident).removeClass('hidden'); + } + else { + $('#starred-' + ident).addClass('unstarred'); + $('#starred-' + ident).removeClass('starred'); + $('#starred-' + ident).addClass('icon-star-empty'); + $('#starred-' + ident).removeClass('icon-star-full'); + $('#star-' + ident).removeClass('hidden'); + $('#unstar-' + ident).addClass('hidden'); + } + $('#like-rotator-' + ident).spin(false); + }); +} - function dostar(ident) { - ident = ident.toString(); - $('#like-rotator-' + ident).spin('tiny'); - $.get('starred/' + ident, function(data) { - if(data.result == 1) { - $('#starred-' + ident).addClass('starred'); - $('#starred-' + ident).removeClass('unstarred'); - $('#starred-' + ident).addClass('icon-star-full'); - $('#starred-' + ident).removeClass('icon-star-empty'); - $('#star-' + ident).addClass('hidden'); - $('#unstar-' + ident).removeClass('hidden'); - } - else { - $('#starred-' + ident).addClass('unstarred'); - $('#starred-' + ident).removeClass('starred'); - $('#starred-' + ident).addClass('icon-star-empty'); - $('#starred-' + ident).removeClass('icon-star-full'); - $('#star-' + ident).removeClass('hidden'); - $('#unstar-' + ident).addClass('hidden'); - } - $('#like-rotator-' + ident).spin(false); - }); +function getPosition(e) { + var cursor = {x:0, y:0}; + if ( e.pageX || e.pageY ) { + cursor.x = e.pageX; + cursor.y = e.pageY; } - - function getPosition(e) { - var cursor = {x:0, y:0}; - if ( e.pageX || e.pageY ) { - cursor.x = e.pageX; - cursor.y = e.pageY; + else { + if( e.clientX || e.clientY ) { + cursor.x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft; + cursor.y = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop; } else { - if( e.clientX || e.clientY ) { - cursor.x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft; - cursor.y = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop; - } - else { - if( e.x || e.y ) { - cursor.x = e.x; - cursor.y = e.y; - } + if( e.x || e.y ) { + cursor.x = e.x; + cursor.y = e.y; } } - return cursor; } + return cursor; +} - function lockview(event,id) { - $.get('lockview/' + id, function(data) { - $('#panel-' + id).html(data); - }); - } +function lockview(event, id) { + $.get('lockview/' + id, function(data) { + $('#panel-' + id).html(data); + }); +} - function filestorage(event,nick,id) { - $('#cloud-index-' + last_filestorage_id).removeClass('cloud-index-active'); - $('#perms-panel-' + last_filestorage_id).hide().html(''); - $('#file-edit-' + id).spin('tiny'); - delete acl; - $.get('filestorage/' + nick + '/' + id + '/edit', function(data) { - $('#cloud-index-' + id).addClass('cloud-index-active'); - $('#perms-panel-' + id).html(data).show(); - $('#file-edit-' + id).spin(false); - last_filestorage_id = id; - }); - } +function filestorage(event, nick, id) { + $('#cloud-index-' + last_filestorage_id).removeClass('cloud-index-active'); + $('#perms-panel-' + last_filestorage_id).hide().html(''); + $('#file-edit-' + id).spin('tiny'); + // What for do we need this here? + delete acl; + $.get('filestorage/' + nick + '/' + id + '/edit', function(data) { + $('#cloud-index-' + id).addClass('cloud-index-active'); + $('#perms-panel-' + id).html(data).show(); + $('#file-edit-' + id).spin(false); + last_filestorage_id = id; + }); +} - function post_comment(id) { - unpause(); - commentBusy = true; - $('body').css('cursor', 'wait'); - $("#comment-preview-inp-" + id).val("0"); - $.post( - "item", - $("#comment-edit-form-" + id).serialize(), - function(data) { - if(data.success) { - $("#comment-edit-preview-" + id).hide(); - $("#comment-edit-wrapper-" + id).hide(); - $("#comment-edit-text-" + id).val(''); - var tarea = document.getElementById("comment-edit-text-" + id); - if(tarea) - commentClose(tarea,id); - if(timer) clearTimeout(timer); - timer = setTimeout(NavUpdate,1500); - } - if(data.reload) { - window.location.href=data.reload; - } - }, - "json" - ); - return false; - } +function post_comment(id) { + unpause(); + commentBusy = true; + $('body').css('cursor', 'wait'); + $("#comment-preview-inp-" + id).val("0"); + $.post( + "item", + $("#comment-edit-form-" + id).serialize(), + function(data) { + if(data.success) { + $("#comment-edit-preview-" + id).hide(); + $("#comment-edit-wrapper-" + id).hide(); + $("#comment-edit-text-" + id).val(''); + var tarea = document.getElementById("comment-edit-text-" + id); + if(tarea) + commentClose(tarea, id); + if(timer) clearTimeout(timer); + timer = setTimeout(NavUpdate,1500); + } + if(data.reload) { + window.location.href=data.reload; + } + }, + "json" + ); + return false; +} +function preview_comment(id) { + $("#comment-preview-inp-" + id).val("1"); + $("#comment-edit-preview-" + id).show(); + $.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; +} - function preview_comment(id) { - $("#comment-preview-inp-" + id).val("1"); - $("#comment-edit-preview-" + id).show(); - $.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; - } +function importElement(elem) { + $.post( + "impel", + { "element" : elem }, + function(data) { + if(timer) clearTimeout(timer); + timer = setTimeout(NavUpdate,10); + } + ); + return false; +} - function importElement(elem) { - $.post( - "impel", - { "element" : elem }, - function(data) { - if(timer) clearTimeout(timer); - timer = setTimeout(NavUpdate,10); +function preview_post() { + $("#jot-preview").val("1"); + $("#jot-preview-content").show(); +// tinyMCE.triggerSave(); + $.post( + "item", + $("#profile-jot-form").serialize(), + function(data) { + if(data.preview) { + $("#jot-preview-content").html(data.preview); + $("#jot-preview-content" + " a").click(function() { return false; }); } - ); + }, + "json" + ); + $("#jot-preview").val("0"); + return true; +} - return false; - } +function unpause() { + // unpause auto reloads if they are currently stopped + totStopped = false; + stopped = false; + $('#pause').html(''); +} - function preview_post() { - $("#jot-preview").val("1"); - $("#jot-preview-content").show(); -// tinyMCE.triggerSave(); - $.post( - "item", - $("#profile-jot-form").serialize(), - function(data) { - if(data.preview) { - $("#jot-preview-content").html(data.preview); - $("#jot-preview-content" + " a").click(function() { return false; }); - } - }, - "json" - ); - $("#jot-preview").val("0"); - return true; +function bin2hex(s) { + // Converts the binary representation of data to hex + // + // version: 812.316 + // discuss at: http://phpjs.org/functions/bin2hex + // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) + // + bugfixed by: Onno Marsman + // + bugfixed by: Linuxworld + // * example 1: bin2hex('Kev'); + // * returns 1: '4b6576' + // * example 2: bin2hex(String.fromCharCode(0x00)); + // * returns 2: '00' + var v,i, f = 0, a = []; + s += ''; + f = s.length; + + for (i = 0; i<f; i++) { + a[i] = s.charCodeAt(i).toString(16).replace(/^([\da-f])$/,"0$1"); } + return a.join(''); +} - function unpause() { - // unpause auto reloads if they are currently stopped - totStopped = false; - stopped = false; - $('#pause').html(''); - } - - - function bin2hex(s){ - // Converts the binary representation of data to hex - // - // version: 812.316 - // discuss at: http://phpjs.org/functions/bin2hex - // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) - // + bugfixed by: Onno Marsman - // + bugfixed by: Linuxworld - // * example 1: bin2hex('Kev'); - // * returns 1: '4b6576' - // * example 2: bin2hex(String.fromCharCode(0x00)); - // * returns 2: '00' - var v,i, f = 0, a = []; - s += ''; - f = s.length; - - for (i = 0; i<f; i++) { - a[i] = s.charCodeAt(i).toString(16).replace(/^([\da-f])$/,"0$1"); - } - - return a.join(''); - } - - function hex2bin(hex) { - var bytes = [], str; - - for(var i=0; i< hex.length-1; i+=2) - bytes.push(parseInt(hex.substr(i, 2), 16)); - - return String.fromCharCode.apply(String, bytes); - } +function hex2bin(hex) { + var bytes = [], str; - function groupChangeMember(gid, cid, sec_token) { - $('body .fakelink').css('cursor', 'wait'); - $.get('group/' + gid + '/' + cid + "?t=" + sec_token, function(data) { - $('#group-update-wrapper').html(data); - $('body .fakelink').css('cursor', 'auto'); - }); - } + for(var i=0; i< hex.length-1; i+=2) + bytes.push(parseInt(hex.substr(i, 2), 16)); - function profChangeMember(gid,cid) { - $('body .fakelink').css('cursor', 'wait'); - $.get('profperm/' + gid + '/' + cid, function(data) { - $('#prof-update-wrapper').html(data); - $('body .fakelink').css('cursor', 'auto'); - }); - } + return String.fromCharCode.apply(String, bytes); +} - function contactgroupChangeMember(gid,cid) { - $('body').css('cursor', 'wait'); - $.get('contactgroup/' + gid + '/' + cid, function(data) { - $('body').css('cursor', 'auto'); - $('#group-' + gid).toggleClass('icon-check icon-check-empty'); - }); - } +function groupChangeMember(gid, cid, sec_token) { + $('body .fakelink').css('cursor', 'wait'); + $.get('group/' + gid + '/' + cid + "?t=" + sec_token, function(data) { + $('#group-update-wrapper').html(data); + $('body .fakelink').css('cursor', 'auto'); + }); +} +function profChangeMember(gid, cid) { + $('body .fakelink').css('cursor', 'wait'); + $.get('profperm/' + gid + '/' + cid, function(data) { + $('#prof-update-wrapper').html(data); + $('body .fakelink').css('cursor', 'auto'); + }); +} + +function contactgroupChangeMember(gid, cid) { + $('body').css('cursor', 'wait'); + $.get('contactgroup/' + gid + '/' + cid, function(data) { + $('body').css('cursor', 'auto'); + $('#group-' + gid).toggleClass('icon-check icon-check-empty'); + }); +} function checkboxhighlight(box) { - if($(box).is(':checked')) { - $(box).addClass('checkeditem'); - } - else { - $(box).removeClass('checkeditem'); - } + if($(box).is(':checked')) { + $(box).addClass('checkeditem'); + } else { + $(box).removeClass('checkeditem'); + } } // 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; - } + /* 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(){ return; @@ -1138,32 +1076,32 @@ function setupFieldRichtext(){ } -/** - * 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; - for (var i = 0; i < arguments.length; i++) { - var regexp = new RegExp('\\{'+i+'\\}', 'gi'); - formatted = formatted.replace(regexp, arguments[i]); - } - return formatted; + var formatted = this; + for (var i = 0; i < arguments.length; i++) { + var regexp = new RegExp('\\{'+i+'\\}', 'gi'); + formatted = formatted.replace(regexp, arguments[i]); + } + return formatted; }; // Array Remove Array.prototype.remove = function(item) { - to=undefined; from=this.indexOf(item); - var rest = this.slice((to || from) + 1 || this.length); - this.length = from < 0 ? this.length + from : from; - return this.push.apply(this, rest); + to = undefined; + from = this.indexOf(item); + var rest = this.slice((to || from) + 1 || this.length); + this.length = from < 0 ? this.length + from : from; + return this.push.apply(this, rest); }; function previewTheme(elm) { theme = $(elm).val(); $.getJSON('pretheme?f=&theme=' + theme,function(data) { - $('#theme-preview').html('<div id="theme-desc">' + data.desc + '</div><div id="theme-version">' + data.version + '</div><div id="theme-credits">' + data.credits + '</div><a href="' + data.img + '"><img src="' + data.img + '" style="max-width:100%; max-height:300px" alt="' + theme + '" /></a>'); + $('#theme-preview').html('<div id="theme-desc">' + data.desc + '</div><div id="theme-version">' + data.version + '</div><div id="theme-credits">' + data.credits + '</div><a href="' + data.img + '"><img src="' + data.img + '" style="max-width:100%; max-height:300px" alt="' + theme + '"></a>'); }); - } $(document).ready(function() { @@ -1188,32 +1126,27 @@ $(document).ready(function() { numbers : aStr['t17'], }; - $(".autotime").timeago(); $("#toc").toc(); - - }); - function zFormError(elm,x) { - if(x) { - $(elm).addClass("zform-error"); - $(elm).removeClass("zform-ok"); - } - else { - $(elm).addClass("zform-ok"); - $(elm).removeClass("zform-error"); - } +function zFormError(elm,x) { + if(x) { + $(elm).addClass("zform-error"); + $(elm).removeClass("zform-ok"); + } else { + $(elm).addClass("zform-ok"); + $(elm).removeClass("zform-error"); } - +} $(window).scroll(function () { if(typeof buildCmd == 'function') { // This is a content page with items and/or conversations - $('#more').hide(); - $('#no-more').hide(); - + $('#more').hide(); + $('#no-more').hide(); + if($(window).scrollTop() + $(window).height() > $(document).height() - 200) { $('#more').css("top","400"); $('#more').show(); @@ -1254,7 +1187,6 @@ $(window).scroll(function () { } } } - }); var chanviewFullSize = false; @@ -1273,143 +1205,139 @@ function chanviewFull() { } } - function addhtmltext(data) { - data = h2b(data); - addeditortext(data); - } +function addhtmltext(data) { + data = h2b(data); + addeditortext(data); +} +function loadText(textRegion,data) { + var currentText = $(textRegion).val(); + $(textRegion).val(currentText + data); +} - function loadText(textRegion,data) { - var currentText = $(textRegion).val(); - $(textRegion).val(currentText + data); +function addeditortext(data) { + if(plaintext == 'none') { + var currentText = $("#profile-jot-text").val(); + $("#profile-jot-text").val(currentText + data); } + else + tinyMCE.execCommand('mceInsertRawHTML',false,data); +} - - function addeditortext(data) { - if(plaintext == 'none') { - var currentText = $("#profile-jot-text").val(); - $("#profile-jot-text").val(currentText + data); - } - else - tinyMCE.execCommand('mceInsertRawHTML',false,data); +function h2b(s) { + var y = s; + function rep(re, str) { + y = y.replace(re,str); } + rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]"); + rep(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]"); + rep(/<span style=\"color:(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]"); + rep(/<font>(.*?)<\/font>/gi,"$1"); + rep(/<img.*?width=\"(.*?)\".*?height=\"(.*?)\".*?src=\"(.*?)\".*?\/>/gi,"[img=$1x$2]$3[/img]"); + rep(/<img.*?height=\"(.*?)\".*?width=\"(.*?)\".*?src=\"(.*?)\".*?\/>/gi,"[img=$2x$1]$3[/img]"); + rep(/<img.*?src=\"(.*?)\".*?height=\"(.*?)\".*?width=\"(.*?)\".*?\/>/gi,"[img=$3x$2]$1[/img]"); + rep(/<img.*?src=\"(.*?)\".*?width=\"(.*?)\".*?height=\"(.*?)\".*?\/>/gi,"[img=$2x$3]$1[/img]"); + rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]"); + + rep(/<ul class=\"listbullet\" style=\"list-style-type\: circle\;\">(.*?)<\/ul>/gi,"[list]$1[/list]"); + rep(/<ul class=\"listnone\" style=\"list-style-type\: none\;\">(.*?)<\/ul>/gi,"[list=]$1[/list]"); + rep(/<ul class=\"listdecimal\" style=\"list-style-type\: decimal\;\">(.*?)<\/ul>/gi,"[list=1]$1[/list]"); + rep(/<ul class=\"listlowerroman\" style=\"list-style-type\: lower-roman\;\">(.*?)<\/ul>/gi,"[list=i]$1[/list]"); + rep(/<ul class=\"listupperroman\" style=\"list-style-type\: upper-roman\;\">(.*?)<\/ul>/gi,"[list=I]$1[/list]"); + rep(/<ul class=\"listloweralpha\" style=\"list-style-type\: lower-alpha\;\">(.*?)<\/ul>/gi,"[list=a]$1[/list]"); + rep(/<ul class=\"listupperalpha\" style=\"list-style-type\: upper-alpha\;\">(.*?)<\/ul>/gi,"[list=A]$1[/list]"); + rep(/<li>(.*?)<\/li>/gi,"[li]$1[/li]"); + + rep(/<code>(.*?)<\/code>/gi,"[code]$1[/code]"); + rep(/<\/(strong|b)>/gi,"[/b]"); + rep(/<(strong|b)>/gi,"[b]"); + rep(/<\/(em|i)>/gi,"[/i]"); + rep(/<(em|i)>/gi,"[i]"); + rep(/<\/u>/gi,"[/u]"); + + rep(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]"); + rep(/<u>/gi,"[u]"); + rep(/<blockquote[^>]*>/gi,"[quote]"); + rep(/<\/blockquote>/gi,"[/quote]"); + rep(/<hr \/>/gi,"[hr]"); + rep(/<br (.*?)\/>/gi,"\n"); + rep(/<br\/>/gi,"\n"); + rep(/<br>/gi,"\n"); + rep(/<p>/gi,""); + rep(/<\/p>/gi,"\n"); + rep(/ /gi," "); + rep(/"/gi,"\""); + rep(/</gi,"<"); + rep(/>/gi,">"); + rep(/&/gi,"&"); + + return y; +} - function h2b(s) { - var y = s; - function rep(re, str) { - y = y.replace(re,str); - }; - - rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]"); - rep(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]"); - rep(/<span style=\"color:(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]"); - rep(/<font>(.*?)<\/font>/gi,"$1"); - rep(/<img.*?width=\"(.*?)\".*?height=\"(.*?)\".*?src=\"(.*?)\".*?\/>/gi,"[img=$1x$2]$3[/img]"); - rep(/<img.*?height=\"(.*?)\".*?width=\"(.*?)\".*?src=\"(.*?)\".*?\/>/gi,"[img=$2x$1]$3[/img]"); - rep(/<img.*?src=\"(.*?)\".*?height=\"(.*?)\".*?width=\"(.*?)\".*?\/>/gi,"[img=$3x$2]$1[/img]"); - rep(/<img.*?src=\"(.*?)\".*?width=\"(.*?)\".*?height=\"(.*?)\".*?\/>/gi,"[img=$2x$3]$1[/img]"); - rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]"); - - - rep(/<ul class=\"listbullet\" style=\"list-style-type\: circle\;\">(.*?)<\/ul>/gi,"[list]$1[/list]"); - rep(/<ul class=\"listnone\" style=\"list-style-type\: none\;\">(.*?)<\/ul>/gi,"[list=]$1[/list]"); - rep(/<ul class=\"listdecimal\" style=\"list-style-type\: decimal\;\">(.*?)<\/ul>/gi,"[list=1]$1[/list]"); - rep(/<ul class=\"listlowerroman\" style=\"list-style-type\: lower-roman\;\">(.*?)<\/ul>/gi,"[list=i]$1[/list]"); - rep(/<ul class=\"listupperroman\" style=\"list-style-type\: upper-roman\;\">(.*?)<\/ul>/gi,"[list=I]$1[/list]"); - rep(/<ul class=\"listloweralpha\" style=\"list-style-type\: lower-alpha\;\">(.*?)<\/ul>/gi,"[list=a]$1[/list]"); - rep(/<ul class=\"listupperalpha\" style=\"list-style-type\: upper-alpha\;\">(.*?)<\/ul>/gi,"[list=A]$1[/list]"); - rep(/<li>(.*?)<\/li>/gi,"[li]$1[/li]"); - - rep(/<code>(.*?)<\/code>/gi,"[code]$1[/code]"); - rep(/<\/(strong|b)>/gi,"[/b]"); - rep(/<(strong|b)>/gi,"[b]"); - rep(/<\/(em|i)>/gi,"[/i]"); - rep(/<(em|i)>/gi,"[i]"); - rep(/<\/u>/gi,"[/u]"); - - - rep(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]"); - rep(/<u>/gi,"[u]"); - rep(/<blockquote[^>]*>/gi,"[quote]"); - rep(/<\/blockquote>/gi,"[/quote]"); - rep(/<hr \/>/gi,"[hr]"); - rep(/<br (.*?)\/>/gi,"\n"); - rep(/<br\/>/gi,"\n"); - rep(/<br>/gi,"\n"); - rep(/<p>/gi,""); - rep(/<\/p>/gi,"\n"); - rep(/ /gi," "); - rep(/"/gi,"\""); - rep(/</gi,"<"); - rep(/>/gi,">"); - rep(/&/gi,"&"); - - return y; - }; - - - function b2h(s) { - var y = s; - function rep(re, str) { - y = y.replace(re,str); - }; - - rep(/\&/gi,"&"); - rep(/\</gi,"<"); - rep(/\>/gi,">"); - rep(/\"/gi,"""); - - rep(/\n/gi,"<br />"); - rep(/\[b\]/gi,"<strong>"); - rep(/\[\/b\]/gi,"</strong>"); - rep(/\[i\]/gi,"<em>"); - rep(/\[\/i\]/gi,"</em>"); - rep(/\[u\]/gi,"<u>"); - rep(/\[\/u\]/gi,"</u>"); - rep(/\[hr\]/gi,"<hr />"); - rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"<a href=\"$1\">$2</a>"); - rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>"); - rep(/\[img=(.*?)x(.*?)\](.*?)\[\/img\]/gi,"<img width=\"$1\" height=\"$2\" src=\"$3\" />"); - rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />"); - - // FIXME - add zid() - rep(/\[zrl=([^\]]+)\](.*?)\[\/zrl\]/gi,"<a href=\"$1" + '?f=&zid=' + zid + "\">$2</a>"); - rep(/\[zrl\](.*?)\[\/zrl\]/gi,"<a href=\"$1" + '?f=&zid=' + zid + "\">$1</a>"); - rep(/\[zmg=(.*?)x(.*?)\](.*?)\[\/zmg\]/gi,"<img width=\"$1\" height=\"$2\" src=\"$3" + '?f=&zid=' + zid + "\" />"); - rep(/\[zmg\](.*?)\[\/zmg\]/gi,"<img src=\"$1" + '?f=&zid=' + zid + "\" />"); - - rep(/\[list\](.*?)\[\/list\]/gi, '<ul class="listbullet" style="list-style-type: circle;">$1</ul>'); - rep(/\[list=\](.*?)\[\/list\]/gi, '<ul class="listnone" style="list-style-type: none;">$1</ul>'); - rep(/\[list=1\](.*?)\[\/list\]/gi, '<ul class="listdecimal" style="list-style-type: decimal;">$1</ul>'); - rep(/\[list=i\](.*?)\[\/list\]/gi,'<ul class="listlowerroman" style="list-style-type: lower-roman;">$1</ul>'); - rep(/\[list=I\](.*?)\[\/list\]/gi, '<ul class="listupperroman" style="list-style-type: upper-roman;">$1</ul>'); - rep(/\[list=a\](.*?)\[\/list\]/gi, '<ul class="listloweralpha" style="list-style-type: lower-alpha;">$1</ul>'); - rep(/\[list=A\](.*?)\[\/list\]/gi, '<ul class="listupperalpha" style="list-style-type: upper-alpha;">$1</ul>'); - rep(/\[li\](.*?)\[\/li\]/gi, '<li>$1</li>'); - rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<span style=\"color: $1;\">$2</span>"); - rep(/\[size=(.*?)\](.*?)\[\/size\]/gi,"<span style=\"font-size: $1;\">$2</span>"); - rep(/\[code\](.*?)\[\/code\]/gi,"<code>$1</code>"); - rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<blockquote>$1</blockquote>"); - - rep(/\[video\](.*?)\[\/video\]/gi,"<a href=\"$1\">$1</a>"); - rep(/\[audio\](.*?)\[\/audio\]/gi,"<a href=\"$1\">$1</a>"); - - rep(/\[\&\;([#a-z0-9]+)\;\]/gi,'&$1;'); - - rep(/\<(.*?)(src|href)=\"[^hfm](.*?)\>/gi,'<$1$2="">'); - - return y; - }; +function b2h(s) { + var y = s; + function rep(re, str) { + y = y.replace(re,str); + } + rep(/\&/gi,"&"); + rep(/\</gi,"<"); + rep(/\>/gi,">"); + rep(/\"/gi,"""); + + rep(/\n/gi,"<br />"); + rep(/\[b\]/gi,"<strong>"); + rep(/\[\/b\]/gi,"</strong>"); + rep(/\[i\]/gi,"<em>"); + rep(/\[\/i\]/gi,"</em>"); + rep(/\[u\]/gi,"<u>"); + rep(/\[\/u\]/gi,"</u>"); + rep(/\[hr\]/gi,"<hr />"); + rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"<a href=\"$1\">$2</a>"); + rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>"); + rep(/\[img=(.*?)x(.*?)\](.*?)\[\/img\]/gi,"<img width=\"$1\" height=\"$2\" src=\"$3\" />"); + rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />"); + + // FIXME - add zid() + rep(/\[zrl=([^\]]+)\](.*?)\[\/zrl\]/gi,"<a href=\"$1" + '?f=&zid=' + zid + "\">$2</a>"); + rep(/\[zrl\](.*?)\[\/zrl\]/gi,"<a href=\"$1" + '?f=&zid=' + zid + "\">$1</a>"); + rep(/\[zmg=(.*?)x(.*?)\](.*?)\[\/zmg\]/gi,"<img width=\"$1\" height=\"$2\" src=\"$3" + '?f=&zid=' + zid + "\" />"); + rep(/\[zmg\](.*?)\[\/zmg\]/gi,"<img src=\"$1" + '?f=&zid=' + zid + "\" />"); + + rep(/\[list\](.*?)\[\/list\]/gi, '<ul class="listbullet" style="list-style-type: circle;">$1</ul>'); + rep(/\[list=\](.*?)\[\/list\]/gi, '<ul class="listnone" style="list-style-type: none;">$1</ul>'); + rep(/\[list=1\](.*?)\[\/list\]/gi, '<ul class="listdecimal" style="list-style-type: decimal;">$1</ul>'); + rep(/\[list=i\](.*?)\[\/list\]/gi,'<ul class="listlowerroman" style="list-style-type: lower-roman;">$1</ul>'); + rep(/\[list=I\](.*?)\[\/list\]/gi, '<ul class="listupperroman" style="list-style-type: upper-roman;">$1</ul>'); + rep(/\[list=a\](.*?)\[\/list\]/gi, '<ul class="listloweralpha" style="list-style-type: lower-alpha;">$1</ul>'); + rep(/\[list=A\](.*?)\[\/list\]/gi, '<ul class="listupperalpha" style="list-style-type: upper-alpha;">$1</ul>'); + rep(/\[li\](.*?)\[\/li\]/gi, '<li>$1</li>'); + rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<span style=\"color: $1;\">$2</span>"); + rep(/\[size=(.*?)\](.*?)\[\/size\]/gi,"<span style=\"font-size: $1;\">$2</span>"); + rep(/\[code\](.*?)\[\/code\]/gi,"<code>$1</code>"); + rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<blockquote>$1</blockquote>"); + + rep(/\[video\](.*?)\[\/video\]/gi,"<a href=\"$1\">$1</a>"); + rep(/\[audio\](.*?)\[\/audio\]/gi,"<a href=\"$1\">$1</a>"); + + rep(/\[\&\;([#a-z0-9]+)\;\]/gi,'&$1;'); + + rep(/\<(.*?)(src|href)=\"[^hfm](.*?)\>/gi,'<$1$2="">'); + + return y; +} function zid(s) { if((! s.length) || (s.indexOf('zid=') != (-1))) return s; + if(! zid.length) return s; + var has_params = ((s.indexOf('?') == (-1)) ? false : true); var achar = ((has_params) ? '&' : '?'); s = s + achar + 'f=&zid=' + zid; + return s; -} +}
\ No newline at end of file diff --git a/view/js/mod_chat.js b/view/js/mod_chat.js index 88c1cf7d8..6c432742f 100644 --- a/view/js/mod_chat.js +++ b/view/js/mod_chat.js @@ -1,5 +1,8 @@ -$(document).ready(function() { +/** + * JavaScript for mod/chat + */ +$(document).ready(function() { $('#contact_allow, #contact_deny, #group_allow, #group_deny').change(function() { var selstr; $('#contact_allow option:selected, #contact_deny option:selected, #group_allow option:selected, #group_deny option:selected').each( function() { @@ -7,10 +10,9 @@ $(document).ready(function() { $('#jot-perms-icon').removeClass('icon-unlock').addClass('icon-lock'); $('#jot-public').hide(); }); - if(selstr == null) { + if(selstr === null) { $('#jot-perms-icon').removeClass('icon-lock').addClass('icon-unlock'); $('#jot-public').show(); } - }).trigger('change'); -}); +});
\ No newline at end of file diff --git a/view/js/mod_directory.js b/view/js/mod_directory.js index 861900704..90942f9ac 100644 --- a/view/js/mod_directory.js +++ b/view/js/mod_directory.js @@ -1,17 +1,15 @@ function dirdetails(hash) { - $.get('dirprofile' + '?f=&hash=' + hash, function( data ) { $.colorbox({ maxWidth: "80%", maxHeight: "75%", scrolling: false, html: data }); }); } - var ratingVal = 0; var ratingText = ''; var currentHash = ''; function fetchRatings(hash) { - $.get('prate/'+hash, function(data) { + $.get('prate/' + hash, function(data) { if(typeof(data.rating) !== 'undefined') { ratingVal = data.rating; ratingText = data.rating_text; @@ -20,22 +18,21 @@ function fetchRatings(hash) { }); } - function doRatings(hash) { fetchRatings(hash); } function buildRatingForm(hash) { - var html = '<form id="ratings_form" action="prate" method="post"><input type="hidden" name="target" value="'+hash+'" /><div class="rating-desc">'+aStr['rating_desc']+'</div><input id="dir-rating-range" class="directory-slider" type="text" value="'+ratingVal+'" name="rating" style="display: none;" /><div class="rating-text-label">'+aStr['rating_text']+'<input type="text" name="rating_text" class="directory-rating-text" value="'+ratingText+'" /><br /><input name="submit" class="directory-rating-submit" type="submit" value="'+aStr['submit']+'" onclick="postRatings(); return false;"></form><div class="clear"></div><script>$("#dir-rating-range").jRange({ from: -10, to: 10, step: 1, showLabels: false, showScale: true, scale : [ "-10","-5","0","5","10" ], onstatechange: function(v) { $("#dir-rating-range").val(v); } });</script>'; + var html = '<form id="ratings_form" action="prate" method="post"><input type="hidden" name="target" value="'+hash+'" /><div class="rating-desc">' + aStr.rating_desc + '</div><input id="dir-rating-range" class="directory-slider" type="text" value="' + ratingVal + '" name="rating" style="display: none;" /><div class="rating-text-label">' + aStr.rating_text + '<input type="text" name="rating_text" class="directory-rating-text" value="' + ratingText + '" /><br /><input name="submit" class="directory-rating-submit" type="submit" value="' + aStr.submit + '" onclick="postRatings(); return false;"></form><div class="clear"></div><script>$("#dir-rating-range").jRange({ from: -10, to: 10, step: 1, showLabels: false, showScale: true, scale: [ "-10","-5","0","5","10" ], onstatechange: function(v) { $("#dir-rating-range").val(v); } });</script>'; $.colorbox({maxwidth: "50%", maxHeight: "50%", scrolling: false, html: html, close: 'X' }); currentHash = hash; } function postRatings() { - $.post('prate',$('#ratings_form').serialize(),function(data) { + $.post('prate', $('#ratings_form').serialize(), function(data) { $.colorbox.remove(); - $('#edited-'+currentHash).show(); + $('#edited-' + currentHash).show(); },'json'); } diff --git a/view/js/mod_events.js b/view/js/mod_events.js index fc25e4331..270bf798b 100644 --- a/view/js/mod_events.js +++ b/view/js/mod_events.js @@ -1,35 +1,34 @@ +/** + * JavaScript for mod/events + */ $(document).ready( function() { showHideFinishDate(); }); - function showHideFinishDate() { - if( $('#id_nofinish').is(':checked')) - $('#event-finish-wrapper').hide(); - else - $('#event-finish-wrapper').show(); - } - - function eventGetStart() { - //reply = prompt("{{$expirewhen}}", $('#jot-expire').val()); - $('#startModal').modal(); - $('#start-modal-OKButton').on('click', function() { - reply=$('#start-date').val(); - if(reply && reply.length) { +function showHideFinishDate() { + if( $('#id_nofinish').is(':checked')) + $('#event-finish-wrapper').hide(); + else + $('#event-finish-wrapper').show(); +} +function eventGetStart() { + //reply = prompt("{{$expirewhen}}", $('#jot-expire').val()); + $('#startModal').modal(); + $('#start-modal-OKButton').on('click', function() { + reply=$('#start-date').val(); + if(reply && reply.length) { $('#start-text').val(reply); $('#startModal').modal('hide'); } - }) - - - } - function eventGetFinish() { - //reply = prompt("{{$expirewhen}}", $('#jot-expire').val()); - $('#finishModal').modal(); - $('#finish-modal-OKButton').on('click', function() { - reply=$('#finish-date').val(); - if(reply && reply.length) { + }); +} +function eventGetFinish() { + //reply = prompt("{{$expirewhen}}", $('#jot-expire').val()); + $('#finishModal').modal(); + $('#finish-modal-OKButton').on('click', function() { + reply=$('#finish-date').val(); + if(reply && reply.length) { $('#finish-text').val(reply); $('#finishModal').modal('hide'); } - }) - - } + }); +}
\ No newline at end of file diff --git a/view/js/mod_filestorage.js b/view/js/mod_filestorage.js index bee37767f..df04b4a83 100644 --- a/view/js/mod_filestorage.js +++ b/view/js/mod_filestorage.js @@ -1,5 +1,7 @@ +/** + * JavaScript used by mod/filestorage + */ $(document).ready(function() { - $('#contact_allow, #contact_deny, #group_allow, #group_deny').change(function() { var selstr; $('#contact_allow option:selected, #contact_deny option:selected, #group_allow option:selected, #group_deny option:selected').each( function() { @@ -7,11 +9,9 @@ $(document).ready(function() { $('#jot-perms-icon').removeClass('icon-unlock').addClass('icon-lock'); $('#jot-public').hide(); }); - if(selstr == null) { + if(selstr === null) { $('#jot-perms-icon').removeClass('icon-lock').addClass('icon-unlock'); $('#jot-public').show(); } - }).trigger('change'); - -}); +});
\ No newline at end of file diff --git a/view/js/mod_mitem.js b/view/js/mod_mitem.js index 979a15297..e883763df 100644 --- a/view/js/mod_mitem.js +++ b/view/js/mod_mitem.js @@ -1,11 +1,12 @@ +/** + * JavaScript used by mod/mitem. + */ $(document).ready(function() { - - $("a#settings-default-perms-menu").colorbox({ - 'inline' : true, - 'transition' : 'elastic' + $("a#settings-default-perms-menu").colorbox({ + 'inline' : true, + 'transition' : 'elastic' }); - $('#contact_allow, #contact_deny, #group_allow, #group_deny').change(function() { var selstr; $('#contact_allow option:selected, #contact_deny option:selected, #group_allow option:selected, #group_deny option:selected').each( function() { @@ -13,10 +14,9 @@ $(document).ready(function() { $('#jot-perms-icon').removeClass('icon-unlock').addClass('icon-lock'); $('#jot-public').hide(); }); - if(selstr == null) { + if(selstr === null) { $('#jot-perms-icon').removeClass('icon-lock').addClass('icon-unlock'); $('#jot-public').show(); } - }).trigger('change'); -}); +});
\ No newline at end of file diff --git a/view/js/mod_photos.js b/view/js/mod_photos.js index 0526fd1e6..b254370c1 100644 --- a/view/js/mod_photos.js +++ b/view/js/mod_photos.js @@ -1,12 +1,16 @@ +/** + * JavaScript used by mod/photos + */ -var ispublic = aStr['everybody']; +// is this variable used anywhere? +var ispublic = aStr.everybody; $(document).ready(function() { - $(document).ready(function() { + $(document).ready(function() { $("#photo-edit-newtag").contact_autocomplete(baseurl + '/acl', 'p', false, function(data) { $("#photo-edit-newtag").val('@' + data.name); }); - }); + }); $('#contact_allow, #contact_deny, #group_allow, #group_deny').change(function() { var selstr; @@ -15,10 +19,9 @@ $(document).ready(function() { $('#jot-perms-icon').removeClass('icon-unlock').addClass('icon-lock'); $('#jot-public').hide(); }); - if(selstr == null) { + if(selstr === null) { $('#jot-perms-icon').removeClass('icon-lock').addClass('icon-unlock'); $('#jot-public').show(); } - }).trigger('change'); -}); +});
\ No newline at end of file diff --git a/view/js/mod_register.js b/view/js/mod_register.js index 839c91911..95bc7bbbb 100644 --- a/view/js/mod_register.js +++ b/view/js/mod_register.js @@ -1,29 +1,29 @@ - $(document).ready(function() { - $("#register-email").blur(function() { - var zreg_email = $("#register-email").val(); - $.get("register/email_check.json?f=&email=" + encodeURIComponent(zreg_email),function(data) { - $("#register-email-feedback").html(data.message); - zFormError("#register-email-feedback",data.error); - }); - }); - $("#register-password").blur(function() { - if(($("#register-password").val()).length < 6 ) { - $("#register-password-feedback").html(aStr['pwshort']); - zFormError("#register-password-feedback",true); - } - else { - $("#register-password-feedback").html(""); - zFormError("#register-password-feedback",false); - } - }); - $("#register-password2").blur(function() { - if($("#register-password").val() != $("#register-password2").val()) { - $("#register-password2-feedback").html(aStr['pwnomatch']); - zFormError("#register-password2-feedback",true); - } - else { - $("#register-password2-feedback").html(""); - zFormError("#register-password2-feedback",false); - } +$(document).ready(function() { + $("#register-email").blur(function() { + var zreg_email = $("#register-email").val(); + $.get("register/email_check.json?f=&email=" + encodeURIComponent(zreg_email), function(data) { + $("#register-email-feedback").html(data.message); + zFormError("#register-email-feedback",data.error); }); }); + $("#register-password").blur(function() { + if(($("#register-password").val()).length < 6 ) { + $("#register-password-feedback").html(aStr.pwshort); + zFormError("#register-password-feedback", true); + } + else { + $("#register-password-feedback").html(""); + zFormError("#register-password-feedback", false); + } + }); + $("#register-password2").blur(function() { + if($("#register-password").val() != $("#register-password2").val()) { + $("#register-password2-feedback").html(aStr.pwnomatch); + zFormError("#register-password2-feedback", true); + } + else { + $("#register-password2-feedback").html(""); + zFormError("#register-password2-feedback", false); + } + }); +});
\ No newline at end of file diff --git a/view/js/mod_settings.js b/view/js/mod_settings.js index e144ed6cd..9c1821494 100644 --- a/view/js/mod_settings.js +++ b/view/js/mod_settings.js @@ -1,5 +1,9 @@ +/** + * JavaScript used by mod/settings + */ -var ispublic = aStr['everybody'] ; +// is this used anywhere? +var ispublic = aStr.everybody; $(document).ready(function() { $('form').areYouSure({'addRemoveFieldsMarksDirty':true}); // Warn user about unsaved settings @@ -19,13 +23,11 @@ $(document).ready(function() { $('#jot-perms-icon').removeClass('icon-unlock').addClass('icon-lock'); $('#jot-public').hide(); }); - if(selstr == null) { + if(selstr === null) { $('#jot-perms-icon').removeClass('icon-lock').addClass('icon-unlock'); $('#jot-public').show(); } - }).trigger('change'); - }); /** @@ -132,7 +134,5 @@ function channel_privacy_macro(n) { $('#id_profile_in_directory_onoff .on').removeClass('hidden'); $('#id_profile_in_directory_onoff .off').addClass('hidden'); $('#id_profile_in_directory').val(1); - } - -} +}
\ No newline at end of file diff --git a/view/js/ratings.js b/view/js/ratings.js index 3d48ecca5..5ce4c0d00 100644 --- a/view/js/ratings.js +++ b/view/js/ratings.js @@ -4,7 +4,7 @@ var ratingText = ''; var currentHash = ''; function fetchRatings(hash) { - $.get('prate/'+hash, function(data) { + $.get('prate/' + hash, function(data) { if(typeof(data.rating) !== 'undefined') { ratingVal = data.rating; ratingText = data.rating_text; @@ -13,22 +13,20 @@ function fetchRatings(hash) { }); } - function doRatings(hash) { fetchRatings(hash); } function buildRatingForm(hash) { - var html = '<form id="ratings_form" action="prate" method="post"><input type="hidden" name="target" value="'+hash+'" /><div class="rating-desc">'+aStr['rating_desc']+'</div><input id="dir-rating-range" class="directory-slider" type="text" value="'+ratingVal+'" name="rating" style="display: none;" /><div class="rating-text-label">'+aStr['rating_text']+'<input type="text" name="rating_text" class="directory-rating-text" value="'+ratingText+'" /><br /><input name="submit" class="directory-rating-submit" type="submit" value="'+aStr['submit']+'" onclick="postRatings(); return false;"></form><div class="clear"></div><script>$("#dir-rating-range").jRange({ from: -10, to: 10, step: 1, showLabels: false, showScale: true, scale : [ "-10","-5","0","5","10" ], onstatechange: function(v) { $("#dir-rating-range").val(v); } });</script>'; + var html = '<form id="ratings_form" action="prate" method="post"><input type="hidden" name="target" value="' + hash + '" /><div class="rating-desc">' + aStr.rating_desc + '</div><input id="dir-rating-range" class="directory-slider" type="text" value="' + ratingVal + '" name="rating" style="display: none;" /><div class="rating-text-label">' + aStr.rating_text + '<input type="text" name="rating_text" class="directory-rating-text" value="' + ratingText + '" /><br><input name="submit" class="directory-rating-submit" type="submit" value="' + aStr.submit + '" onclick="postRatings(); return false;"></form><div class="clear"></div><script>$("#dir-rating-range").jRange({ from: -10, to: 10, step: 1, showLabels: false, showScale: true, scale: [ "-10","-5","0","5","10" ], onstatechange: function(v) { $("#dir-rating-range").val(v); } });</script>'; $.colorbox({maxwidth: "50%", maxHeight: "50%", html: html, close: 'X' }); currentHash = hash; } function postRatings() { - $.post('prate',$('#ratings_form').serialize(),function(data) { + $.post('prate', $('#ratings_form').serialize(), function(data) { $.colorbox.remove(); - $('#edited-'+currentHash).show(); - },'json'); -} - + $('#edited-' + currentHash).show(); + }, 'json'); +}
\ No newline at end of file diff --git a/view/theme/redbasic/js/redbasic.js b/view/theme/redbasic/js/redbasic.js index 3db67dc87..c825b0485 100644 --- a/view/theme/redbasic/js/redbasic.js +++ b/view/theme/redbasic/js/redbasic.js @@ -1,52 +1,51 @@ - +/** + * redbasic theme specific JavaScript + */ $(document).ready(function() { + // CSS3 calc() fallback (for unsupported browsers) + $('body').append('<div id="css3-calc" style="width: 10px; width: calc(10px + 10px); display: none;"></div>'); + if( $('#css3-calc').width() == 10) { + $(window).resize(function() { + if($(window).width() < 767) { + $('main').css('width', $(window).width() + 231 ); + } else { + $('main').css('width', '100%' ); + } + }); + } + $('#css3-calc').remove(); // Remove the test element -// CSS3 calc() fallback (for unsupported browsers) -$('body').append('<div id="css3-calc" style="width: 10px; width: calc(10px + 10px); display: none;"></div>'); -if( $('#css3-calc').width() == 10) { - $(window).resize(function() { - if($(window).width() < 767) { - $('main').css('width', $(window).width() + 231 ); - } else { - $('main').css('width', '100%' ); - } + $('#expand-aside').click(function() { + $('#expand-aside-icon').toggleClass('icon-circle-arrow-right').toggleClass('icon-circle-arrow-left'); + $('main').toggleClass('region_1-on'); }); -} -$('#css3-calc').remove(); // Remove the test element -$('#expand-aside').click(function() { - $('#expand-aside-icon').toggleClass('icon-circle-arrow-right').toggleClass('icon-circle-arrow-left'); - $('main').toggleClass('region_1-on'); -}); - -if($('aside').length && $('aside').html().length == 0) { - $('#expand-aside').hide(); -} - -$('#expand-tabs').click(function() { - if(!$('#tabs-collapse-1').hasClass('in')){ - $('html, body').animate({ scrollTop: 0 }, 'slow'); + if($('aside').length && $('aside').html().length === 0) { + $('#expand-aside').hide(); } - $('#expand-tabs-icon').toggleClass('icon-circle-arrow-down').toggleClass('icon-circle-arrow-up'); -}); -if($('#tabs-collapse-1').length == 0) { - $('#expand-tabs').hide(); -} + $('#expand-tabs').click(function() { + if(!$('#tabs-collapse-1').hasClass('in')){ + $('html, body').animate({ scrollTop: 0 }, 'slow'); + } + $('#expand-tabs-icon').toggleClass('icon-circle-arrow-down').toggleClass('icon-circle-arrow-up'); + }); + if($('#tabs-collapse-1').length === 0) { + $('#expand-tabs').hide(); + } }); - $(document).ready(function(){ var doctitle = document.title; function checkNotify() { var notifyUpdateElem = document.getElementById('notify-update'); if(notifyUpdateElem !== null) { - if(notifyUpdateElem.innerHTML != "") - document.title = "("+notifyUpdateElem.innerHTML+") " + doctitle; - else - document.title = doctitle; + if(notifyUpdateElem.innerHTML !== "") + document.title = "(" + notifyUpdateElem.innerHTML + ") " + doctitle; + else + document.title = doctitle; } - }; + } setInterval(function () {checkNotify();}, 10 * 1000); -}); +});
\ No newline at end of file |