From 9fa0956966288392c3e4eb85c6d1c2c0be9464d9 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Tue, 19 Jul 2011 16:17:58 +0200 Subject: [PATCH] New jot acl selector --- images/default-group-mm.jpg.png | Bin 0 -> 598 bytes images/search_18.png | Bin 0 -> 3302 bytes include/acl.js | 236 ++++++++++++++++++++++++++++++ include/acl_selectors.php | 17 ++- include/main.js | 17 ++- mod/acl.php | 94 ++++++++++++ view/acl_selector.tpl | 24 +++ view/head.tpl | 2 + view/jot-header.tpl | 5 +- view/theme/duepuntozero/style.css | 154 ++++++++++--------- view/theme/loozah/style.css | 143 ++++++++++-------- 11 files changed, 556 insertions(+), 136 deletions(-) create mode 100644 images/default-group-mm.jpg.png create mode 100644 images/search_18.png create mode 100644 include/acl.js create mode 100644 mod/acl.php create mode 100644 view/acl_selector.tpl diff --git a/images/default-group-mm.jpg.png b/images/default-group-mm.jpg.png new file mode 100644 index 0000000000000000000000000000000000000000..bfc8b335a79900f030c282b2899fc3cae3f9bfce GIT binary patch literal 598 zcmV-c0;&CpP)*sQs{hRzI*+BBiB)U@$f| z#?yxl*cJ$os=W0`$YN&B+UGW7@$I|e70iAO=znm_+>@2v7LqxXIfQ-a49|OR637$q zI}r8&tF?U^@p1}&2%`^>rvg+v*sSyg$YRKr63*9$${|xz>sl zdiUV^;07>%gzoqP*s^pmjRneLm1g`IYzMjqWNM^8p0aHQ$?FF!@VDTjN$rk~O4aC0{T@b-`qYO4n=-=yXnM1mef1}YgIG#e# zh0dUs^+Sk;60}{YN(qiW)>*i|{1#7O*~k89D#}7mO(?+XSyR!Q!0^4IbUdxocw#II z2JiNzF%59KfN0c)E~iRw{7ET#cMuNhXcxcQaNB{Pqp>`Kw|Tp>d8(N`(-c4%*bZc? z_WGd@M{u>PYX+Lz?wj+_gGFOy+BC;ga{(7)bQ_<4Xww)SaQ(|*$JM#nLp!Mb?R2p$ zn0&1_vL)=w%g}=b(f&&9*gW*Q_d!HN6fF`|50& kUk8IO&`sbV((fPbF9U(EkUx)l(*OVf07*qoM6N<$g2F%ziU0rr literal 0 HcmV?d00001 diff --git a/images/search_18.png b/images/search_18.png new file mode 100644 index 0000000000000000000000000000000000000000..5397396708c0445739fb1af0bdd42f0e8c9c0c71 GIT binary patch literal 3302 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 literal 0 HcmV?d00001 diff --git a/include/acl.js b/include/acl.js new file mode 100644 index 0000000000..41b9b19064 --- /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 = 5; that.nh = 5; + + 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(""); + }); + $(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.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 = "
"+that.item_tpl+"
"; + 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 c3e26082e3..99de67d649 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 .= '
'; $o .= '
'; $o .= '
' . t('Visible To:') . '
' . t('everybody') . '
'; @@ -272,7 +272,20 @@ function populate_acl($user = null,$celeb = false) { $o .= '
' . "\r\n"; $o .= '
'; $o .= '
' . "\r\n"; - $o .= '
' . "\r\n"; + $o .= '
' . "\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 896c611d5c..040e9695e0 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); +}; diff --git a/mod/acl.php b/mod/acl.php new file mode 100644 index 0000000000..352c487195 --- /dev/null +++ b/mod/acl.php @@ -0,0 +1,94 @@ + "g", + "photo" => "images/default-group-mm.jpg", + "name" => $g['name'], + "id" => intval($g['id']), + "uids" => array_map("intval", explode(",",$g['uids'])) + ); + } + + + $r = q("SELECT `id`, `name`, `micro`, `network` FROM `contact` + WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `notify` != '' + $sql_extra + ORDER BY `name` ASC ", + intval(local_user()) + ); + foreach($r as $g){ + $contacts[] = array( + "type" => "c", + "photo" => $g['micro'], + "name" => $g['name'], + "id" => intval($g['id']), + "network" => $g['network'] + ); + } + + + + + $items = array_merge($groups, $contacts); + + $o = array( + 'tot' => $tot, + 'start' => $start, + 'count' => $count, + 'items' => $items, + ); + + echo json_encode($o); + + killme(); +} + + diff --git a/view/acl_selector.tpl b/view/acl_selector.tpl new file mode 100644 index 0000000000..3379f5764c --- /dev/null +++ b/view/acl_selector.tpl @@ -0,0 +1,24 @@ +
+ + $showall +
+
+
+
+ +
+ + + + diff --git a/view/head.tpl b/view/head.tpl index ff66997e7c..f26e41b514 100644 --- a/view/head.tpl +++ b/view/head.tpl @@ -12,6 +12,8 @@ + +