]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
ECML permissions frontend presents a whitelist instead of a black list.
authorbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
Fri, 16 Apr 2010 17:20:53 +0000 (17:20 +0000)
committerbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
Fri, 16 Apr 2010 17:20:53 +0000 (17:20 +0000)
git-svn-id: http://code.elgg.org/elgg/trunk@5779 36083f99-b078-4883-b0ff-0f9b5a30f544

mod/ecml/actions/save_permissions.php
mod/ecml/languages/en.php
mod/ecml/views/default/ecml/admin/css.php
mod/ecml/views/default/ecml/admin/ecml_admin.php

index 490a8928be26c2348314e07192a253f544c7a71a..3aecd95857354a6d485b62656362296f64b83eac 100644 (file)
@@ -9,7 +9,28 @@
  * @link http://elgg.org/
  */
 
-$perms = get_input('perms', array());
+$whitelist = get_input('whitelist', array());
+$keywords = $CONFIG->ecml_keywords;
+$views = $CONFIG->ecml_parse_views;
+
+// the front end uses a white list but the backend uses a
+// blacklist for performance and extensibility.
+// gotta convert.
+$perms = array();
+
+foreach ($views as $view => $view_info) {
+       foreach ($keywords as $keyword => $keyword_info) {
+
+               // don't need to add perms for restricted keywords
+               // because those perms are checked separately
+               if (isset($keyword_info['restricted'])) {
+                       continue;
+               }
+               if (!isset($whitelist[$view]) || !in_array($keyword, $whitelist[$view])) {
+                       $perms[$view][] = $keyword;
+               }
+       }
+}
 
 if (set_plugin_setting('ecml_permissions', serialize($perms), 'ecml')) {
        system_message(elgg_echo('ecml:admin:permissions_saved'));
index 2b9b9118b70b89f55a89f96fa37293bcc64d6879..505dbcf631be388f8b79b8b42f8836c10781b6ea 100644 (file)
@@ -71,6 +71,7 @@ grid below.
 
        'ecml:admin:permissions_saved' => 'ECML permissions saved.',
        'ecml:admin:cannot_save_permissions' => 'Cannot save ECML permissions!',
+       'ecml:admin:restricted' => 'Restricted',
 
 
 );
index 960941a0375e48d23054e8ac401efcb89e24a0c4..1431074f0bb031a9e81c530af9193f10a60a3745 100644 (file)
@@ -14,4 +14,7 @@
 }
 .ecml_row_even {
 
+}
+.ecml_restricted {
+       color: #555;
 }
\ No newline at end of file
index 0bd7793c8c189f19a5a14963d4f109161daee396..36ad11f933515217ab2c9bf72189cf65f53993e6 100644 (file)
@@ -35,21 +35,30 @@ $form_body .= '</tr>';
 $odd = 'odd';
 foreach ($keywords as $keyword => $keyword_info) {
        $keyword_desc = $keyword_info['description'];
-       $form_body .= "
-       <tr class=\"ecml_row_$odd\">
-               <td class=\"ecml_keyword_desc\"><acronym class=\"ecml_keyword ecml_check_all\" title=\"$keyword_desc\">$keyword</acronym></td>
-";
+       if (isset($keyword_info['restricted'])) {
+               $restricted = elgg_echo('ecml:admin:restricted');
+               $form_body .= "
+               <tr class=\"ecml_row_$odd\">
+                       <td class=\"ecml_keyword_desc\"><acronym class=\"ecml_keyword ecml_restricted\" title=\"$keyword_desc\">$keyword ($restricted)</acronym></td>
+               ";
+       } else {
+               $form_body .= "
+               <tr class=\"ecml_row_$odd\">
+                       <td class=\"ecml_keyword_desc\"><acronym class=\"ecml_keyword ecml_check_all\" title=\"$keyword_desc\">$keyword</acronym></td>
+               ";
+       }
        foreach ($views as $view => $view_info) {
                // if this is restricted and we're not on the specified view don't allow changes
                // since we don't save this, no need to pass a name
-               if (isset($keyword_info['restricted']) && !in_array($view, $keyword_info['restricted'])) {
-                       $form_body .= "<td><input type=\"checkbox\" checked=\"checked\" disabled=\"disabled\"/></td>";
+               if (isset($keyword_info['restricted'])) {
+                       $checked = (in_array($view, $keyword_info['restricted'])) ? 'checked="checked"' : '';
+                       $form_body .= "<td><input type=\"checkbox\" $checked name=\"whitelist[$view][]\" value=\"$keyword\" disabled=\"disabled\"/></td>";
                } else {
-                       $checked = (in_array($keyword, $perms[$view])) ? 'checked="checked"' : '';
+                       $checked = (!in_array($keyword, $perms[$view])) ? 'checked="checked"' : '';
 
                        // ooook. input/checkboxes isn't overly useful.
                        // do it ourself.
-                       $form_body .= "<td><input type=\"checkbox\" name=\"perms[$view][]\" value=\"$keyword\" $checked /></td>";
+                       $form_body .= "<td><input type=\"checkbox\" name=\"whitelist[$view][]\" value=\"$keyword\" $checked /></td>";
                }
        }
        $form_body .= '</tr>';
@@ -71,7 +80,7 @@ echo elgg_view('input/form', array(
 
 $(document).ready(function() {
        // append check all link
-       $('.ecml_check_all').before('<input type="checkbox" class="check_all">');
+       $('.ecml_check_all').before('<input type="checkbox" checked="checked" class="check_all">');
 
        $('input.check_all').click(function() {
                // yoinked from