[Koha-patches] [PATCH] granular permissions - setting user permissions
Galen Charlton
galen.charlton at liblime.com
Thu Apr 10 18:37:45 CEST 2008
Adjusted the user permissions editing page as follows:
* Replaced table with a list
* Implemented a tree control using the jQuery Treeview plugin
* When CheckSpecificUserPermissions is ON, if a module
flag has specific (i.e., children) permissions, allow
them to be edited - this is where the tree control
comes in.
* Added some hooks and an initial stab at the CSS
to style the permissions editor tree.
---
.../intranet-tmpl/prog/en/css/staff-global.css | 17 +++-
.../prog/en/modules/members/member-flags.tmpl | 116 +++++++++++++++++---
.../prog/en/modules/tools/tools-home.tmpl | 30 +++++
3 files changed, 147 insertions(+), 16 deletions(-)
diff --git a/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css b/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css
index d38138b..0fe2548 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css
+++ b/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css
@@ -1549,4 +1549,19 @@ tr.transfered td {
}
.waitinghere {
color : #669900;
-}
\ No newline at end of file
+}
+
+/* Permissions Labels */
+label.permissioncode:before {
+ content: "(";
+}
+label.permissioncode:after {
+ content: ")";
+}
+label.permissioncode {
+ font-style : italic;
+}
+span.permissiondesc {
+ font-weight : normal;
+}
+
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/member-flags.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/members/member-flags.tmpl
index bee7b09..13093e5 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/member-flags.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/member-flags.tmpl
@@ -1,6 +1,72 @@
<!-- TMPL_INCLUDE NAME="doc-head-open.inc" -->
<title>Koha › Patrons › Set Privileges for <!-- TMPL_VAR NAME="surname" -->, <!-- TMPL_VAR NAME="firstname" --></title>
<!-- TMPL_INCLUDE NAME="doc-head-close.inc" -->
+<link rel="stylesheet" href="<!-- TMPL_VAR NAME="themelang" -->/css/treeview/jquery.treeview.css"/>
+<script type="text/javascript" src="<!-- TMPL_VAR name="themelang" -->/lib/jquery/plugins/jquery.treeview.pack.js"></script>
+<!-- set up tree -->
+<script type="text/javascript">
+ $(document).ready(function() {
+ $("#permissionstree").treeview({animated: "fast", collapsed: true});
+ });
+</script>
+<!-- manage checking/unchecking parent permissions -->
+<script type="text/javascript">
+ var originalChildStates = {}; /* keep track of subpermission checkbox values
+ so that user can recover from accidentally
+ toggling a parent/module permission */
+ function selectChildren(parentInput) {
+ var childListId = parentInput.id + '-children';
+ var list = document.getElementById(childListId);
+ var children = [];
+ if (list) {
+ var inputs = list.getElementsByTagName('input');
+ for (var i = 0; i < inputs.length; i++) {
+ if (inputs[i].type == 'checkbox') {
+ children.push(inputs[i]);
+ }
+ }
+
+ }
+ return children;
+ }
+
+ function toggleChildren(parentInput) {
+ var children = selectChildren(parentInput);
+ if (children.length == 0) {
+ return;
+ }
+ var checked = parentInput.checked;
+ if (checked && parentInput.parentNode.className == 'expandable') {
+ /* expand the tree */
+ $(".hitarea", parentInput.parentNode).click();
+ }
+ for (var i = 0; i < children.length; i++) {
+ if (checked) {
+ originalChildStates[children[i].id] = children[i].checked;
+ children[i].checked = checked;
+ } else {
+ if (children[i].id in originalChildStates) {
+ children[i].checked = originalChildStates[children[i].id];
+ } else {
+ children[i].checked = checked;
+ }
+ }
+ }
+ }
+
+ function toggleParent(childInput) {
+ originalChildStates[childInput.id] = childInput.checked;
+ if (childInput.checked) {
+ return;
+ }
+ var parentId = childInput.parentNode.parentNode.id.replace(/-children$/, '');;
+ var parentInput = document.getElementById(parentId);
+ if (parentInput) {
+ parentInput.checked = false;
+ }
+ }
+
+</script>
</head>
<body>
<!-- TMPL_INCLUDE NAME="header.inc" -->
@@ -19,26 +85,46 @@
<input type="hidden" name="member" id="borrowernumber" value="<!-- TMPL_VAR NAME="borrowernumber" -->" />
<input type="hidden" name="newflags" value="1" />
<h1>Set Privileges for <!-- TMPL_VAR NAME="surname" -->, <!-- TMPL_VAR NAME="firstname" --></h1>
-<table>
- <tr><th scope="col">Flag</th><th scope="col">Name</th><th scope="col">Description</th></tr>
+ <!-- <ul id="permissionstree"><li class="root">All privileges<ul> -->
+ <ul id="permissionstree" class="treeview-grey">
+ <!-- <li class="folder-close">One level down<ul> -->
<!-- TMPL_LOOP NAME="loop" -->
- <tr>
- <td>
+ <!-- TMPL_IF NAME="expand" -->
+ <li class="open">
+ <!-- TMPL_ELSE -->
+ <li>
+ <!-- /TMPL_IF -->
<!-- TMPL_IF NAME="checked" -->
- <input type="checkbox" id="flag-<!-- TMPL_VAR NAME="bit" -->" name="flag-<!-- TMPL_VAR NAME="bit" -->" checked="checked" />
+ <input type="checkbox" id="flag-<!-- TMPL_VAR NAME="bit" -->" name="flag" value="<!-- TMPL_VAR NAME="flag" -->" checked="checked" onchange="toggleChildren(this)" />
<!-- TMPL_ELSE -->
- <input type="checkbox" id="flag-<!-- TMPL_VAR NAME="bit" -->" name="flag-<!-- TMPL_VAR NAME="bit" -->" />
+ <input type="checkbox" id="flag-<!-- TMPL_VAR NAME="bit" -->" name="flag" value="<!-- TMPL_VAR NAME="flag" -->" onchange="toggleChildren(this)" />
+ <!-- /TMPL_IF -->
+ <label class="permissioncode" for="flag-<!-- TMPL_VAR NAME="bit" -->"><!-- TMPL_VAR NAME="flag" --></label>
+ <span class="permissiondesc"><!-- TMPL_VAR NAME="flagdesc" --></span>
+ <!-- TMPL_IF NAME="sub_perm_loop" -->
+ <ul id="flag-<!-- TMPL_VAR NAME="bit" -->-children">
+ <!-- TMPL_LOOP NAME="sub_perm_loop" -->
+ <li>
+ <!-- TMPL_IF NAME="checked" -->
+ <input type="checkbox" id="<!-- TMPL_VAR NAME="id" -->"
+ name="flag" value="<!-- TMPL_VAR NAME="perm" -->" checked="checked" onchange="toggleParent(this)" />
+ <!-- TMPL_ELSE -->
+ <input type="checkbox" id="<!-- TMPL_VAR NAME="id" -->"
+ name="flag" value="<!-- TMPL_VAR NAME="perm" -->" onchange="toggleParent(this)" />
+ <!-- /TMPL_IF -->
+ <label class="permissioncode" for="<!-- TMPL_VAR NAME="id" -->"><!-- TMPL_VAR NAME="code" --></label>
+ <span class="permissiondesc"><!-- TMPL_VAR NAME="description" --></span>
+ </li>
+ <!-- /TMPL_LOOP -->
+ </ul>
+ </li>
+ <!-- TMPL_ELSE -->
+ </li>
<!-- /TMPL_IF -->
- </td>
- <td>
- <label for="flag-<!-- TMPL_VAR NAME="bit" -->"><!-- TMPL_VAR NAME="flag" --></label>
- </td>
- <td>
- <!-- TMPL_VAR NAME="flagdesc" -->
- </td>
- </tr>
<!-- /TMPL_LOOP -->
- </table>
+ <!-- </ul></li> -->
+ <!-- </ul></li></ul> -->
+ </ul>
<fieldset class="action"><input type="submit" value="Set Flags" /> <a class="cancel" href="/cgi-bin/koha/members/moremember.pl?borrowernumber=<!-- TMPL_VAR NAME="borrowernumber" -->">Cancel</a></fieldset>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tmpl
index c93966e..2faa5cf 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tmpl
@@ -14,57 +14,87 @@
<div class="yui-u first">
<dl>
+ <!-- TMPL_IF NAME="CAN_user_tools_edit_news" -->
<dt><a href="/cgi-bin/koha/tools/koha-news.pl">News</a></dt>
<dd>Write news for the OPAC and staff interfaces</dd>
+ <!-- /TMPL_IF -->
+ <!-- TMPL_IF NAME="CAN_user_tools_label_creator" -->
<dt><a href="/cgi-bin/koha/labels/label-home.pl">Label and Patron Card Creator</a></dt>
<dd>Create printable labels and barcodes from catalog data and patron cards from patron data</dd>
+ <!-- /TMPL_IF -->
+ <!-- TMPL_IF NAME="CAN_user_tools_edit_calendar" -->
<dt><a href="/cgi-bin/koha/tools/holidays.pl">Calendar</a></dt>
<dd>Define days when the library is closed</dd>
+ <!-- /TMPL_IF -->
+ <!-- TMPL_IF NAME="CAN_user_tools_moderate_comments" -->
<dt><a href="/cgi-bin/koha/reviews/reviewswaiting.pl">Comments</a></dt>
<dd>Moderate patron comments</dd>
+ <!-- /TMPL_IF -->
</dl>
</div>
<div class="yui-u">
<dl>
+ <!-- TMPL_IF NAME="CAN_user_tools_edit_notices" -->
<dt><a href="/cgi-bin/koha/tools/letter.pl">Notices</a></dt>
<dd>Define notices (print and email notification messages for overdues, etc.)</dd>
+ <!-- /TMPL_IF -->
+ <!-- TMPL_IF NAME="CAN_user_tools_edit_notice_status_triggers" -->
<dt><a href="/cgi-bin/koha/tools/overduerules.pl">Overdue notice/status triggers</a></dt>
<dd>Set notice/status triggers for overdue items</dd>
+ <!-- /TMPL_IF -->
+ <!-- TMPL_IF NAME="CAN_user_tools_view_system_logs" -->
<dt><a href="/cgi-bin/koha/tools/viewlog.pl">Log viewer</a></dt>
<dd>Browse the system logs</dd>
+ <!-- /TMPL_IF -->
+ <!-- TMPL_IF NAME="CAN_user_tools_inventory" -->
<dt><a href="/cgi-bin/koha/tools/inventory.pl">Inventory/stocktaking</a></dt>
<dd>Perform inventory (stocktaking) of your catalogue</dd>
+ <!-- /TMPL_IF -->
</dl>
</div>
<div class="yui-u">
<dl>
+ <!-- TMPL_IF NAME="CAN_user_tools_stage_marc_import" -->
<dt><a href="/cgi-bin/koha/tools/stage-marc-import.pl">Stage MARC Records For Import</a></dt>
<dd>Stage MARC records into the reservoir.</dd>
+ <!-- /TMPL_IF -->
+ <!-- TMPL_IF NAME="CAN_user_tools_manage_staged_marc" -->
<dt><a href="/cgi-bin/koha/tools/manage-marc-import.pl">Manage Staged MARC Records</a></dt>
<dd>Managed staged MARC records, including completing and reversing imports</dd>
+ <!-- /TMPL_IF -->
+ <!-- TMPL_IF NAME="CAN_user_tools_export_catalog" -->
<dt><a href="/cgi-bin/koha/tools/export.pl">Export bibliographic and holdings</a></dt>
<dd>Export bibliographic and holdings data</dd>
+ <!-- /TMPL_IF -->
+ <!-- TMPL_IF NAME="CAN_user_tools_import_patrons" -->
<dt><a href="/cgi-bin/koha/tools/import_borrowers.pl">Import patrons</a></dt>
<dd>Import patron data</dd>
+ <!-- /TMPL_IF -->
+ <!-- TMPL_IF NAME="CAN_user_tools_delete_anonymize_patrons" -->
<dt><a href="/cgi-bin/koha/tools/cleanborrowers.pl">Patrons (anonomize, bulk-delete)</a></dt>
<dd>Delete old borrowers and anonymize circulation history (deletes borrower reading history)</dd>
+ <!-- /TMPL_IF -->
+ <!-- TMPL_IF NAME="CAN_user_tools_batch_upload_patron_images" -->
<dt><a href="/cgi-bin/koha/tools/picture-upload.pl">Upload patron images</a></dt>
<dd>Upload patron images in batch or one at a time</dd>
+ <!-- /TMPL_IF -->
+ <!-- TMPL_IF NAME="CAN_user_tools_schedule_tasks" -->
<dt><a href="/cgi-bin/koha/tools/scheduler.pl">Task Scheduler</a></dt>
<dd>Schedule tasks to run</dd>
+ <!-- /TMPL_IF -->
</dl>
</div>
--
1.5.5.rc0.16.g02b00
More information about the Koha-patches
mailing list