Merge pull request #931 from dawnbreak/master

Some JavaScript cleanups.
This commit is contained in:
RedMatrix 2015-03-16 10:51:15 +11:00
commit e780dada83
14 changed files with 1308 additions and 1387 deletions

View file

@ -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
$limit = service_class_fetch($uid, $property);
$arr = get_config('service_class',$service_class);
if(! is_array($arr) || (! count($arr)))
return true;
if($limit === false)
return true; // No service class 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 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
* @see service_class_allows() if you have a channel_id instead of an account_id
* @see account_service_class_fetch()
*
* @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
*
* @todo Can't we use here internally account_service_class_fetch() to reduce duplicate code?
*/
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 : '') ;
}
}

View file

@ -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()
return false;
};
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){
return false;
};
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('&nbsp;');
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('&nbsp;');
}
$("#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();
}
};

View file

@ -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;
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,
}
// 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});
};
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;
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,
};
// 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});
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(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 );

File diff suppressed because it is too large Load diff

View file

@ -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');
});
});

View file

@ -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');
}

View file

@ -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');
}
})
}
});
}

View file

@ -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');
});
});

View file

@ -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');
});
});

View file

@ -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');
});
});

View file

@ -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);
}
});
});

View file

@ -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);
}
}
}

View file

@ -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');
}

View file

@ -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
$('#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');
// 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
$('#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');
}
$('#expand-tabs-icon').toggleClass('icon-circle-arrow-down').toggleClass('icon-circle-arrow-up');
});
if($('#tabs-collapse-1').length === 0) {
$('#expand-tabs').hide();
}
$('#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);
});
});