From 0c85c9748096d625ae9baa29fb9aad48bab3a208 Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 4 Jan 2014 03:58:21 -0800 Subject: move js files from core --- view/js/acl.js | 270 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 270 insertions(+) create mode 100644 view/js/acl.js (limited to 'view/js/acl.js') diff --git a/view/js/acl.js b/view/js/acl.js new file mode 100644 index 000000000..906b28354 --- /dev/null +++ b/view/js/acl.js @@ -0,0 +1,270 @@ +function ACL(backend_url, preset){ + that = this; + + that.url = backend_url; + + that.kp_timer = null; + + 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"); + + if (preset.length==0) that.showall.addClass("selected"); + + /*events*/ + that.showall.click(that.on_showall); + $(document).on('click','.acl-button-show',that.on_button_show); + $(document).on('click','.acl-button-hide',that.on_button_hide); + $("#acl-search").keypress(that.on_search); + $("#acl-wrapper").parents("form").submit(that.on_submit); + + /* startup! */ + that.get(0,100); +} + +ACL.prototype.on_submit = function(){ + aclfileds = $("#acl-fields").html(""); + $(that.allow_gid).each(function(i,v){ + aclfileds.append(""); + }); + $(that.allow_cid).each(function(i,v){ + aclfileds.append(""); + }); + $(that.deny_gid).each(function(i,v){ + aclfileds.append(""); + }); + $(that.deny_cid).each(function(i,v){ + aclfileds.append(""); + }); +} + +ACL.prototype.search = function(){ + var srcstr = $("#acl-search").val(); + that.list_content.html(""); + that.get(0,100, srcstr); +} + +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() + event.stopPropagation(); + + if (that.showall.hasClass("selected")){ + return false; + } + that.showall.addClass("selected"); + + that.allow_cid = []; + that.allow_gid = []; + that.deny_cid = []; + that.deny_gid = []; + + that.update_view(); + + return false; +} + +ACL.prototype.on_button_show = function(event){ + event.preventDefault() + event.stopImmediatePropagation() + event.stopPropagation(); + + /*that.showall.removeClass("selected"); + $(this).siblings(".acl-button-hide").removeClass("selected"); + $(this).toggleClass("selected");*/ + + that.set_allow($(this).parent().attr('id')); + + return false; +} +ACL.prototype.on_button_hide = function(event){ + event.preventDefault() + event.stopImmediatePropagation() + event.stopPropagation(); + + /*that.showall.removeClass("selected"); + $(this).siblings(".acl-button-show").removeClass("selected"); + $(this).toggleClass("selected");*/ + + that.set_deny($(this).parent().attr('id')); + + return false; +} + +ACL.prototype.set_allow = function(itemid){ + type = itemid[0]; + id = itemid.substr(1); + switch(type){ + case "g": + 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) + } else { + that.allow_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){ + type = itemid[0]; + id = itemid.substr(1); + switch(type){ + case "g": + 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) + } else { + that.deny_cid.remove(id); + } + if (that.allow_cid.indexOf(id)>=0) that.allow_cid.remove(id); + break; + } + that.update_view(); +} + +ACL.prototype.update_view = function(){ + var jotpermslock; + var jotpermsunlock; + if (document.jotpermslock == null) { + jotpermslock = 'lock'; + } else { + jotpermslock = document.jotpermslock; + } + if (document.jotpermsunlock == null) { + jotpermsunlock = 'unlock'; + } else { + jotpermsunlock = document.jotpermsunlock; + } + if (that.allow_gid.length==0 && that.allow_cid.length==0 && + that.deny_gid.length==0 && that.deny_cid.length==0){ + that.showall.addClass("selected"); + /* jot acl */ + $('#jot-perms-icon').removeClass(jotpermslock).addClass(jotpermsunlock); + $('#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("selected"); + /* jot acl */ + $('#jot-perms-icon').removeClass(jotpermsunlock).addClass(jotpermslock); + $('#jot-public').hide(); + $('.profile-jot-net input').attr('disabled', 'disabled'); + $('#profile-jot-desc').html(' '); + } + $("#acl-list-content .acl-list-item").each(function(){ + $(this).removeClass("groupshow grouphide"); + }); + + $("#acl-list-content .acl-list-item").each(function(){ + itemid = $(this).attr('id'); + type = itemid[0]; + id = itemid.substr(1); + + btshow = $(this).children(".acl-button-show").removeClass("selected"); + bthide = $(this).children(".acl-button-hide").removeClass("selected"); + + switch(type){ + case "g": + var uclass = ""; + if (that.allow_gid.indexOf(id)>=0){ + btshow.addClass("selected"); + bthide.removeClass("selected"); + uclass="groupshow"; + } + if (that.deny_gid.indexOf(id)>=0){ + btshow.removeClass("selected"); + bthide.addClass("selected"); + uclass="grouphide"; + } + + $(that.group_uids[id]).each(function(i,v) { + if(uclass == "grouphide") + $("#c"+v).removeClass("groupshow"); + if(uclass != "") { + var cls = $("#c"+v).attr('class'); + 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){ + btshow.addClass("selected"); + bthide.removeClass("selected"); + } + if (that.deny_cid.indexOf(id)>=0){ + btshow.removeClass("selected"); + bthide.addClass("selected"); + } + } + + }); + +} + + +ACL.prototype.get = function(start,count, search){ + var postdata = { + start:start, + count:count, + search:search, + } + + $.ajax({ + type:'POST', + url: that.url, + data: postdata, + dataType: 'json', + success:that.populate + }); +} + +ACL.prototype.populate = function(data){ + var height = Math.ceil(data.tot / that.nw) * 42; + that.list_content.height(height); + $(data.items).each(function(){ + html = "
"+that.item_tpl+"
"; + html = html.format( this.photo, this.name, this.type, this.xid, '', this.network, this.link, this.taggable ); + if (this.uids!=undefined) that.group_uids[this.id] = this.uids; + //console.log(html); + that.list_content.append(html); + }); + that.update_view(); +} + -- cgit v1.2.3 From 41df51a8151a5c1f35abe3c04f94e43b673e29ff Mon Sep 17 00:00:00 2001 From: friendica Date: Mon, 6 Jan 2014 17:10:53 -0800 Subject: add "self" to access control lists with special marking to indicate it's special (for instance you can't really deny access to yourself). But this lets us make something private to our eyes only; whatever it may be. --- view/js/acl.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'view/js/acl.js') diff --git a/view/js/acl.js b/view/js/acl.js index 906b28354..84b080de2 100644 --- a/view/js/acl.js +++ b/view/js/acl.js @@ -259,8 +259,8 @@ ACL.prototype.populate = function(data){ var height = Math.ceil(data.tot / that.nw) * 42; that.list_content.height(height); $(data.items).each(function(){ - html = "
"+that.item_tpl+"
"; - html = html.format( this.photo, this.name, this.type, this.xid, '', this.network, this.link, this.taggable ); + html = "
"+that.item_tpl+"
"; + 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; //console.log(html); that.list_content.append(html); -- cgit v1.2.3