diff options
author | Friendika <info@friendika.com> | 2011-07-19 17:24:09 -0700 |
---|---|---|
committer | Friendika <info@friendika.com> | 2011-07-19 17:24:09 -0700 |
commit | 1d35d1e5a1c807ea391d7958657b13a6bb471a0b (patch) | |
tree | d88d1b83d21c39c3d53758549c28ffed0d41f7f7 /include | |
parent | 0b8aaef09cd9ff455a027b082c79d1590bce9da9 (diff) | |
parent | 0a3ae96093a1fd81414b4fceaf65d4e98efda26c (diff) | |
download | volse-hubzilla-1d35d1e5a1c807ea391d7958657b13a6bb471a0b.tar.gz volse-hubzilla-1d35d1e5a1c807ea391d7958657b13a6bb471a0b.tar.bz2 volse-hubzilla-1d35d1e5a1c807ea391d7958657b13a6bb471a0b.zip |
Merge pull request #141 from fabrixxm/newacl
New jot ACL selector
Diffstat (limited to 'include')
-rw-r--r-- | include/acl.js | 236 | ||||
-rw-r--r-- | include/acl_selectors.php | 17 | ||||
-rw-r--r-- | include/main.js | 17 |
3 files changed, 264 insertions, 6 deletions
diff --git a/include/acl.js b/include/acl.js new file mode 100644 index 000000000..a0a1f5dd8 --- /dev/null +++ b/include/acl.js @@ -0,0 +1,236 @@ +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); + $(".acl-button-show").live('click', that.on_button_show); + $(".acl-button-hide").live('click', 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("<input type='hidden' name='group_allow[]' value='"+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){ + aclfileds.append("<input type='hidden' name='group_deny[]' value='"+v+"'>"); + }); + $(that.deny_cid).each(function(i,v){ + aclfileds.append("<input type='hidden' name='contact_deny[]' value='"+v+"'>"); + }); +} + +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.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.updateview(); + + return false; +} + +ACL.prototype.on_button_show = function(event){ + 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.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 = parseInt(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.updateview(); +} + +ACL.prototype.set_deny = function(itemid){ + type = itemid[0]; + id = parseInt(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.updateview(); +} + +ACL.prototype.updateview = function(){ + 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('lock').addClass('unlock'); + $('#jot-public').show(); + $('.profile-jot-net input').attr('disabled', false); + + } else { + that.showall.removeClass("selected"); + /* jot acl */ + $('#jot-perms-icon').removeClass('unlock').addClass('lock'); + $('#jot-public').hide(); + $('.profile-jot-net input').attr('disabled', 'disabled'); + } + + $("#acl-list-content .acl-list-item").each(function(){ + itemid = $(this).attr('id'); + type = itemid[0]; + id = parseInt(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){ + $("#c"+v).removeClass("groupshow grouphide").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 = "<div class='acl-list-item {4} {5}' id='{2}{3}'>"+that.item_tpl+"</div>"; + html = html.format( this.photo, this.name, this.type, this.id, '', this.network ); + if (this.uids!=undefined) that.group_uids[this.id] = this.uids; + //console.log(html); + that.list_content.append(html); + }); + that.updateview(); +} + diff --git a/include/acl_selectors.php b/include/acl_selectors.php index c3e26082e..99de67d64 100644 --- a/include/acl_selectors.php +++ b/include/acl_selectors.php @@ -239,7 +239,7 @@ function populate_acl($user = null,$celeb = false) { array_walk($deny_gid,'fixacl'); } - $o = ''; + /*$o = ''; $o .= '<div id="acl-wrapper">'; $o .= '<div id="acl-permit-outer-wrapper">'; $o .= '<div id="acl-permit-text">' . t('Visible To:') . '</div><div id="jot-public">' . t('everybody') . '</div>'; @@ -272,7 +272,20 @@ function populate_acl($user = null,$celeb = false) { $o .= '<div id="acl-deny-end"></div>' . "\r\n"; $o .= '</div>'; $o .= '</div>' . "\r\n"; - $o .= '<div id="acl-wrapper-end"></div>' . "\r\n"; + $o .= '<div id="acl-wrapper-end"></div>' . "\r\n";*/ + + $tpl = get_markup_template("acl_selector.tpl"); + $o = replace_macros($tpl, array( + '$showall'=> t("Visible to everybody"), + '$show' => t("show"), + '$hide' => t("don't show"), + '$allowcid' => json_encode($allow_cid), + '$allowgid' => json_encode($allow_gid), + '$denycid' => json_encode($deny_cid), + '$denygid' => json_encode($deny_gid), + )); + + return $o; } diff --git a/include/main.js b/include/main.js index 896c611d5..040e9695e 100644 --- a/include/main.js +++ b/include/main.js @@ -53,8 +53,11 @@ //console.log(id); }); + /* setup field_richtext */ + setupFieldRichtext(); + /* load tinyMCE if needed and setup field_richtext */ - if(typeof tinyMCE == "undefined") { + /*if(typeof tinyMCE == "undefined") { window.tinyMCEPreInit = { suffix:"", base: baseurl+"/library/tinymce/jscripts/tiny_mce/", @@ -62,8 +65,8 @@ }; $.getScript(baseurl +"/library/tinymce/jscripts/tiny_mce/tiny_mce_src.js", setupFieldRichtext); } else { - setupFieldRichtext(); - } + }*/ + /* nav update event */ @@ -364,7 +367,6 @@ function setupFieldRichtext(){ }); } - /** * sprintf in javascript * "{0} and {1}".format('zero','uno'); @@ -377,3 +379,10 @@ String.prototype.format = function() { } 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); +}; |