Bug 9439 - Enforce superlibrarian mutual exclusivity of other permissions
authorDavid Cook <dcook@prosentient.com.au>
Tue, 22 Jan 2013 00:47:43 +0000 (11:47 +1100)
committerJared Camins-Esakov <jcamins@cpbibliography.com>
Fri, 1 Feb 2013 16:30:35 +0000 (11:30 -0500)
Basically, when you check the checkbox for the superlibrarian permission
in the patron record, it will disable and uncheck all the other
permission checkboxes. When you uncheck the checkbox for the
superlibrarian permission, it will renable those boxes. There is also
some JS code there to ensure that the other boxes are disabled when
returning to the change permission screen (i.e. the patch is not just a
click handler).

In the event that the checkboxes for superlibrarian and other
permissions are already checked, the user will be shown a pop-up window
explaining that the superlibrarian permission is mutually exclusive to
the others (since it already includes the others) and that the
permissions for that patron will then be reset to just include the
superlibrarian permission.

Comment: Tested on master. Works as described.

Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>
Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com>
koha-tmpl/intranet-tmpl/prog/en/modules/members/member-flags.tt

index dfb22cf..46ae7df 100644 (file)
@@ -7,6 +7,37 @@
 <script type="text/javascript">
     $(document).ready(function() {
         $("#permissionstree").treeview({animated: "fast", collapsed: true});
+
+        // Enforce Superlibrarian Privilege Mutual Exclusivity
+        if($('input[id="flag-0"]:checked').length){
+            if ($('input[name="flag"]:checked').length > 1){
+                alert('Inconsistency Detected!\n\nThe superlibrarian privilege is mutually exclusive of other privileges, as it includes them all.\n\nThis patron\'s privileges will now be reset to include only superlibrarian.');
+            }
+
+            $('input[name="flag"]').each(function() {
+                if($(this).attr('id') != "flag-0"){
+                    $(this).attr('disabled', 'disabled');
+                    $(this).removeAttr('checked', 'checked');
+                }
+            });
+        }
+
+        $('input#flag-0').click(function() {
+            if($('input[id="flag-0"]:checked').length){
+                $('input[name="flag"]').each(function() {
+                    if($(this).attr('id') != "flag-0"){
+                        $(this).attr('disabled', 'disabled');
+                        $(this).removeAttr('checked', 'checked');
+                    }
+                });
+            }
+            else {
+                $('input[name="flag"]').each(function() {
+                    $(this).removeAttr('disabled', 'disabled');
+                });
+            }
+        });
+
     });
 </script>
 <!-- manage checking/unchecking parent permissions -->