www/common/share/share.js

Code
Comments
Other
Rev Date Author Line
7604 25 Feb 19 nicklas 1 /* $Id $
7604 25 Feb 19 nicklas 2   ------------------------------------------------------------------
7604 25 Feb 19 nicklas 3   Copyright (C) 2012 Nicklas Nordborg
7604 25 Feb 19 nicklas 4
7604 25 Feb 19 nicklas 5   This file is part of BASE - BioArray Software Environment.
7604 25 Feb 19 nicklas 6   Available at http://base.thep.lu.se/
7604 25 Feb 19 nicklas 7
7604 25 Feb 19 nicklas 8   BASE is free software; you can redistribute it and/or
7604 25 Feb 19 nicklas 9   modify it under the terms of the GNU General Public License
7604 25 Feb 19 nicklas 10   as published by the Free Software Foundation; either version 3
7604 25 Feb 19 nicklas 11   of the License, or (at your option) any later version.
7604 25 Feb 19 nicklas 12
7604 25 Feb 19 nicklas 13   BASE is distributed in the hope that it will be useful,
7604 25 Feb 19 nicklas 14   but WITHOUT ANY WARRANTY; without even the implied warranty of
7604 25 Feb 19 nicklas 15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
7604 25 Feb 19 nicklas 16   GNU General Public License for more details.
7604 25 Feb 19 nicklas 17
7604 25 Feb 19 nicklas 18   You should have received a copy of the GNU General Public License
7604 25 Feb 19 nicklas 19   along with BASE. If not, see <http://www.gnu.org/licenses/>.
7604 25 Feb 19 nicklas 20   ------------------------------------------------------------------
7604 25 Feb 19 nicklas 21
7604 25 Feb 19 nicklas 22   @author Nicklas
7604 25 Feb 19 nicklas 23 */
7604 25 Feb 19 nicklas 24 'use strict';
7604 25 Feb 19 nicklas 25
7604 25 Feb 19 nicklas 26 var Share = function()
7604 25 Feb 19 nicklas 27 {
7604 25 Feb 19 nicklas 28   var EVERYONE_ID;
7604 25 Feb 19 nicklas 29   var SHARE_TO_EVERYONE;
7604 25 Feb 19 nicklas 30   var USE_RESTRICTED_WRITE;
7604 25 Feb 19 nicklas 31   var Permission = {};
7604 25 Feb 19 nicklas 32   
7604 25 Feb 19 nicklas 33   var share = {};
7604 25 Feb 19 nicklas 34   
7604 25 Feb 19 nicklas 35   share.initPage = function()
7604 25 Feb 19 nicklas 36   {
7604 25 Feb 19 nicklas 37     Permission.READ = Data.int('page-data', 'read');
7604 25 Feb 19 nicklas 38     Permission.USE = Data.int('page-data', 'use');
7604 25 Feb 19 nicklas 39     Permission.RESTRICTED_WRITE = Data.int('page-data', 'restricted-write');
7604 25 Feb 19 nicklas 40     Permission.WRITE = Data.int('page-data', 'write');
7604 25 Feb 19 nicklas 41     Permission.DELETE = Data.int('page-data', 'delete');
7604 25 Feb 19 nicklas 42     Permission.SET_OWNER = Data.int('page-data', 'set-owner');
7604 25 Feb 19 nicklas 43     Permission.SET_PERMISSION = Data.int('page-data', 'set-permission');
7604 25 Feb 19 nicklas 44
7604 25 Feb 19 nicklas 45     // Dialog buttons
7604 25 Feb 19 nicklas 46     Buttons.addClickHandler('close', App.closeWindow);
7604 25 Feb 19 nicklas 47     Buttons.addClickHandler('btnSave', share.save);
7604 25 Feb 19 nicklas 48     
7604 25 Feb 19 nicklas 49     Buttons.addClickHandler('btnAddUsers', share.addUsers);
7604 25 Feb 19 nicklas 50     Events.addEventHandler('btnAddUsers', 'base-selected', share.addUserCallback);
7604 25 Feb 19 nicklas 51     Buttons.addClickHandler('btnAddGroups', share.addGroups);
7604 25 Feb 19 nicklas 52     Events.addEventHandler('btnAddGroups', 'base-selected', share.addGroupCallback);
7604 25 Feb 19 nicklas 53     Buttons.addClickHandler('btnAddProjects', share.addProjects);
7604 25 Feb 19 nicklas 54     Events.addEventHandler('btnAddProjects', 'base-selected', share.addProjectCallback);
7604 25 Feb 19 nicklas 55     Buttons.addClickHandler('btnAddPermissionTemplates', share.addPermissionTemplates);
7604 25 Feb 19 nicklas 56     Events.addEventHandler('btnAddPermissionTemplates', 'base-selected', share.addPermissionTemplateCallback);
7604 25 Feb 19 nicklas 57     Events.addEventHandler('members', 'base-removed', share.itemRemoved);
7604 25 Feb 19 nicklas 58
7604 25 Feb 19 nicklas 59     // Permission checkboxes
7604 25 Feb 19 nicklas 60     Events.addEventHandler('read', 'click', share.permissionsOnClick);
7604 25 Feb 19 nicklas 61     Events.addEventHandler('use', 'click', share.permissionsOnClick);
7604 25 Feb 19 nicklas 62     Events.addEventHandler('restricted_write', 'click', share.permissionsOnClick);
7604 25 Feb 19 nicklas 63     Events.addEventHandler('write', 'click', share.permissionsOnClick);
7604 25 Feb 19 nicklas 64     Events.addEventHandler('delete', 'click', share.permissionsOnClick);
7604 25 Feb 19 nicklas 65     Events.addEventHandler('setOwner', 'click', share.permissionsOnClick);
7604 25 Feb 19 nicklas 66     Events.addEventHandler('setPermission', 'click', share.permissionsOnClick);
7604 25 Feb 19 nicklas 67     Events.addEventHandler('members', 'change', share.membersOnChange);
7604 25 Feb 19 nicklas 68
7604 25 Feb 19 nicklas 69     EVERYONE_ID = Data.int('page-data', 'everyone-id');
7604 25 Feb 19 nicklas 70     SHARE_TO_EVERYONE = Data.int('page-data', 'share-to-everyone');
7604 25 Feb 19 nicklas 71     USE_RESTRICTED_WRITE = Data.int('page-data', 'use-restricted-write');
7604 25 Feb 19 nicklas 72   }
7604 25 Feb 19 nicklas 73
7604 25 Feb 19 nicklas 74   /**
7604 25 Feb 19 nicklas 75     Event handler that update the permission checkboxes depending
7604 25 Feb 19 nicklas 76     on the currently selected item in the list.
7604 25 Feb 19 nicklas 77   */
7604 25 Feb 19 nicklas 78   share.membersOnChange = function()
7604 25 Feb 19 nicklas 79   {
7604 25 Feb 19 nicklas 80     var frm = document.forms['share'];
7604 25 Feb 19 nicklas 81     var item = frm.members[frm.members.selectedIndex].item;
7604 25 Feb 19 nicklas 82     if (item && item.id)
7604 25 Feb 19 nicklas 83     {
7604 25 Feb 19 nicklas 84       var isTemplate = item.type == 'PERMISSIONTEMPLATE';
7604 25 Feb 19 nicklas 85       var isEveryone = item.id == EVERYONE_ID && item.type == 'GROUP';
7604 25 Feb 19 nicklas 86       share.checkPermissions(item.value, isEveryone, isTemplate);
7604 25 Feb 19 nicklas 87     }
7604 25 Feb 19 nicklas 88   }
7604 25 Feb 19 nicklas 89
7604 25 Feb 19 nicklas 90   /**
7604 25 Feb 19 nicklas 91     Event handler for the permission checkboxes that modify the permissions
7604 25 Feb 19 nicklas 92     on all selected users/groups/projects in the list
7604 25 Feb 19 nicklas 93   */
7604 25 Feb 19 nicklas 94   share.permissionsOnClick = function(event)
7604 25 Feb 19 nicklas 95   {
7604 25 Feb 19 nicklas 96     var target = event.currentTarget;
7604 25 Feb 19 nicklas 97     var frm = document.forms['share'];
7604 25 Feb 19 nicklas 98     
7604 25 Feb 19 nicklas 99     share.correctPermissions(target.checked);
7604 25 Feb 19 nicklas 100     var permissionCode = share.getPermissionCode();
7604 25 Feb 19 nicklas 101     var permissionText = share.getPermissionText(permissionCode)
7604 25 Feb 19 nicklas 102     for (var i = 0; i < frm.members.length; i++)
7604 25 Feb 19 nicklas 103     {
7604 25 Feb 19 nicklas 104       var option = frm.members[i];
7604 25 Feb 19 nicklas 105       if (option.selected && option.item && option.item.id)
7604 25 Feb 19 nicklas 106       {
7604 25 Feb 19 nicklas 107         var item = option.item;
7604 25 Feb 19 nicklas 108         var disabled = item.type == 'PERMISSIONTEMPLATE' || (item.id == EVERYONE_ID && item.type == 'GROUP' && !SHARE_TO_EVERYONE);
7604 25 Feb 19 nicklas 109         if (!disabled)
7604 25 Feb 19 nicklas 110         {
7604 25 Feb 19 nicklas 111           option.item.value = permissionCode;
7604 25 Feb 19 nicklas 112           var text = option.text.replace(/\[.*\]/, '['+permissionText+']');
7604 25 Feb 19 nicklas 113           option.text = text;
7604 25 Feb 19 nicklas 114         }
7604 25 Feb 19 nicklas 115       }
7604 25 Feb 19 nicklas 116     }
7604 25 Feb 19 nicklas 117   }
7604 25 Feb 19 nicklas 118
7604 25 Feb 19 nicklas 119   /**
7604 25 Feb 19 nicklas 120     Collected the modified permissions and submit the form.
7604 25 Feb 19 nicklas 121   */
7604 25 Feb 19 nicklas 122   share.save = function()
7604 25 Feb 19 nicklas 123   {
7604 25 Feb 19 nicklas 124     var frm = document.forms['share'];
7604 25 Feb 19 nicklas 125     Link.exportActions('members', '!');
7604 25 Feb 19 nicklas 126     frm.submit();
7604 25 Feb 19 nicklas 127   }
7604 25 Feb 19 nicklas 128
7604 25 Feb 19 nicklas 129   /**
7604 25 Feb 19 nicklas 130     Open a popup dialog for selecting users.
7604 25 Feb 19 nicklas 131   */
7604 25 Feb 19 nicklas 132   share.addUsers = function(event)
7604 25 Feb 19 nicklas 133   {
7604 25 Feb 19 nicklas 134     var users = Link.getIdsInList('members', 'USER');
7604 25 Feb 19 nicklas 135     var url = '&exclude='+users.join(',');
7604 25 Feb 19 nicklas 136     url += '&permission=READ';
7604 25 Feb 19 nicklas 137     Dialogs.selectItem('USER', event.currentTarget.id, 1, url);
7604 25 Feb 19 nicklas 138   }
7604 25 Feb 19 nicklas 139   
7604 25 Feb 19 nicklas 140   /**
7604 25 Feb 19 nicklas 141     Callback that add more users to the list.
7604 25 Feb 19 nicklas 142   */
7604 25 Feb 19 nicklas 143   share.addUserCallback = function(event)
7604 25 Feb 19 nicklas 144   {
7604 25 Feb 19 nicklas 145     var permissionCode = share.getPermissionCode();
7604 25 Feb 19 nicklas 146     var permissionString = share.getPermissionText(permissionCode);
7604 25 Feb 19 nicklas 147     
7604 25 Feb 19 nicklas 148     event.detail.name += ' ['+permissionString+']';
7604 25 Feb 19 nicklas 149     event.detail.value = permissionCode;
7604 25 Feb 19 nicklas 150     event.detail.originalValue = 0;
7604 25 Feb 19 nicklas 151     
7604 25 Feb 19 nicklas 152     Link.addItem('members', 'USER', event.detail);
7604 25 Feb 19 nicklas 153     if (event.detail.remaining == 0)
7604 25 Feb 19 nicklas 154     {
7604 25 Feb 19 nicklas 155       share.membersOnChange();
7604 25 Feb 19 nicklas 156     }
7604 25 Feb 19 nicklas 157   }
7604 25 Feb 19 nicklas 158
7604 25 Feb 19 nicklas 159   /**
7604 25 Feb 19 nicklas 160     Open a popup dialog for selecting groups.
7604 25 Feb 19 nicklas 161   */
7604 25 Feb 19 nicklas 162   share.addGroups = function(event)
7604 25 Feb 19 nicklas 163   {
7604 25 Feb 19 nicklas 164     var groups = Link.getIdsInList('members', 'GROUP');
7604 25 Feb 19 nicklas 165     if (!SHARE_TO_EVERYONE)
7604 25 Feb 19 nicklas 166     {
7604 25 Feb 19 nicklas 167       groups[groups.length] = EVERYONE_ID;
7604 25 Feb 19 nicklas 168     }
7604 25 Feb 19 nicklas 169     var url = '&exclude='+groups.join(',');
7604 25 Feb 19 nicklas 170     url += '&permission=READ';
7604 25 Feb 19 nicklas 171     Dialogs.selectItem('GROUP', event.currentTarget.id, 1, url);
7604 25 Feb 19 nicklas 172   }
7604 25 Feb 19 nicklas 173   
7604 25 Feb 19 nicklas 174   /**
7604 25 Feb 19 nicklas 175     Callback that add more groups to the list.
7604 25 Feb 19 nicklas 176   */
7604 25 Feb 19 nicklas 177   share.addGroupCallback = function(event)
7604 25 Feb 19 nicklas 178   {
7604 25 Feb 19 nicklas 179     var permissionCode = share.getPermissionCode();
7604 25 Feb 19 nicklas 180     var permissionString = share.getPermissionText(permissionCode);
7604 25 Feb 19 nicklas 181     
7604 25 Feb 19 nicklas 182     event.detail.name += ' ['+permissionString+']';
7604 25 Feb 19 nicklas 183     event.detail.value = permissionCode;
7604 25 Feb 19 nicklas 184     event.detail.originalValue = 0;
7604 25 Feb 19 nicklas 185     
7604 25 Feb 19 nicklas 186     Link.addItem('members', 'GROUP', event.detail);
7604 25 Feb 19 nicklas 187     if (event.detail.remaining == 0)
7604 25 Feb 19 nicklas 188     {
7604 25 Feb 19 nicklas 189       share.membersOnChange();
7604 25 Feb 19 nicklas 190     }
7604 25 Feb 19 nicklas 191   }
7604 25 Feb 19 nicklas 192
7604 25 Feb 19 nicklas 193   /**
7604 25 Feb 19 nicklas 194     Open a popup dialog for selecting projects.
7604 25 Feb 19 nicklas 195   */
7604 25 Feb 19 nicklas 196   share.addProjects = function(event)
7604 25 Feb 19 nicklas 197   {
7604 25 Feb 19 nicklas 198     var projects = Link.getIdsInList('members', 'PROJECT');
7604 25 Feb 19 nicklas 199     var url = '&exclude='+projects.join(',');
7604 25 Feb 19 nicklas 200     Dialogs.selectItem('PROJECT', event.currentTarget.id, 1, url);
7604 25 Feb 19 nicklas 201   }
7604 25 Feb 19 nicklas 202   
7604 25 Feb 19 nicklas 203   /**
7604 25 Feb 19 nicklas 204     Callback that add more projects to the list.
7604 25 Feb 19 nicklas 205   */
7604 25 Feb 19 nicklas 206   share.addProjectCallback = function(event)
7604 25 Feb 19 nicklas 207   {
7604 25 Feb 19 nicklas 208     var permissionCode = share.getPermissionCode();
7604 25 Feb 19 nicklas 209     var permissionString = share.getPermissionText(permissionCode);
7604 25 Feb 19 nicklas 210     
7604 25 Feb 19 nicklas 211     event.detail.name += ' ['+permissionString+']';
7604 25 Feb 19 nicklas 212     event.detail.value = permissionCode;
7604 25 Feb 19 nicklas 213     event.detail.originalValue = 0;
7604 25 Feb 19 nicklas 214     
7604 25 Feb 19 nicklas 215     Link.addItem('members', 'PROJECT', event.detail);
7604 25 Feb 19 nicklas 216     if (event.detail.remaining == 0)
7604 25 Feb 19 nicklas 217     {
7604 25 Feb 19 nicklas 218       share.membersOnChange();
7604 25 Feb 19 nicklas 219     }
7604 25 Feb 19 nicklas 220   }
7604 25 Feb 19 nicklas 221   
7604 25 Feb 19 nicklas 222   /**
7604 25 Feb 19 nicklas 223     Open a popup dialog for selecting permission templates.
7604 25 Feb 19 nicklas 224   */
7604 25 Feb 19 nicklas 225   share.addPermissionTemplates = function(event)
7604 25 Feb 19 nicklas 226   {
7604 25 Feb 19 nicklas 227     var templates = Link.getIdsInList('members', 'PERMISSIONTEMPLATE');
7604 25 Feb 19 nicklas 228     var url = '&exclude='+templates.join(',');
7604 25 Feb 19 nicklas 229     Dialogs.selectItem('PERMISSIONTEMPLATE', event.currentTarget.id, 1, url);
7604 25 Feb 19 nicklas 230   }
7604 25 Feb 19 nicklas 231   
7604 25 Feb 19 nicklas 232   /**
7604 25 Feb 19 nicklas 233     Callback that add more permission templates to the list.
7604 25 Feb 19 nicklas 234   */
7604 25 Feb 19 nicklas 235   share.addPermissionTemplateCallback = function(event)
7604 25 Feb 19 nicklas 236   {
7604 25 Feb 19 nicklas 237     Link.addItem('members', 'PERMISSIONTEMPLATE', event.detail);
7604 25 Feb 19 nicklas 238     if (event.detail.remaining == 0)
7604 25 Feb 19 nicklas 239     {
7604 25 Feb 19 nicklas 240       share.membersOnChange();
7604 25 Feb 19 nicklas 241     }
7604 25 Feb 19 nicklas 242   }
7604 25 Feb 19 nicklas 243
7604 25 Feb 19 nicklas 244   /**
7604 25 Feb 19 nicklas 245     Set the permission value to 0 when an item is removed
7604 25 Feb 19 nicklas 246   */
7604 25 Feb 19 nicklas 247   share.itemRemoved = function(event)
7604 25 Feb 19 nicklas 248   {
7604 25 Feb 19 nicklas 249     event.detail.item.value = 0;
7604 25 Feb 19 nicklas 250   }
7604 25 Feb 19 nicklas 251   
7604 25 Feb 19 nicklas 252   /**
7604 25 Feb 19 nicklas 253     Get a textual description of the permissions that are included in
7604 25 Feb 19 nicklas 254     the given permission code.
7604 25 Feb 19 nicklas 255   */
7604 25 Feb 19 nicklas 256   share.getPermissionText = function(permissionCode)
7604 25 Feb 19 nicklas 257   {
7604 25 Feb 19 nicklas 258     var s = '';
7604 25 Feb 19 nicklas 259     if (permissionCode > 0)
7604 25 Feb 19 nicklas 260     {
7604 25 Feb 19 nicklas 261       s += permissionCode & Permission.READ ? "R" : "-";
7604 25 Feb 19 nicklas 262       s += permissionCode & Permission.USE ? "U" : "-";
7604 25 Feb 19 nicklas 263       if (USE_RESTRICTED_WRITE)
7604 25 Feb 19 nicklas 264       {
7604 25 Feb 19 nicklas 265         s += permissionCode & Permission.RESTRICTED_WRITE ? "A" : "-";
7604 25 Feb 19 nicklas 266       }
7604 25 Feb 19 nicklas 267       s += permissionCode & Permission.WRITE ? "W" : "-";
7604 25 Feb 19 nicklas 268       s += permissionCode & Permission.DELETE ? "D" : "-";
7604 25 Feb 19 nicklas 269       s += permissionCode & Permission.SET_OWNER ? "O" : "-";
7604 25 Feb 19 nicklas 270       s += permissionCode & Permission.SET_PERMISSION ? "P" : "-";
7604 25 Feb 19 nicklas 271     }
7604 25 Feb 19 nicklas 272     else
7604 25 Feb 19 nicklas 273     {
7604 25 Feb 19 nicklas 274       s = 'varying';
7604 25 Feb 19 nicklas 275     }
7604 25 Feb 19 nicklas 276     return s;
7604 25 Feb 19 nicklas 277   }
7604 25 Feb 19 nicklas 278   
7604 25 Feb 19 nicklas 279   /**
7604 25 Feb 19 nicklas 280     Get the permission code from the checked checkboxes.
7604 25 Feb 19 nicklas 281   */
7604 25 Feb 19 nicklas 282   share.getPermissionCode = function()
7604 25 Feb 19 nicklas 283   {
7604 25 Feb 19 nicklas 284     var c = 0;
7604 25 Feb 19 nicklas 285     var frm = document.forms['share'];
7604 25 Feb 19 nicklas 286     if (frm['read'].checked) c += Permission.READ;
7604 25 Feb 19 nicklas 287     if (frm['use'].checked) c += Permission.USE;
7604 25 Feb 19 nicklas 288     if (frm['restricted_write'].checked) c += Permission.RESTRICTED_WRITE;
7604 25 Feb 19 nicklas 289     if (frm['write'].checked) c += Permission.WRITE;
7604 25 Feb 19 nicklas 290     if (frm['delete'].checked) c += Permission.DELETE;
7604 25 Feb 19 nicklas 291     if (frm['set_owner'].checked) c += Permission.SET_OWNER;
7604 25 Feb 19 nicklas 292     if (frm['set_permission'].checked) c += Permission.SET_PERMISSION;
7604 25 Feb 19 nicklas 293     return c;
7604 25 Feb 19 nicklas 294   }
7604 25 Feb 19 nicklas 295   
7604 25 Feb 19 nicklas 296   /**
7604 25 Feb 19 nicklas 297     The permissions are related and we need to check or uncheck permissions
7604 25 Feb 19 nicklas 298     depending on what was currently changed.
7604 25 Feb 19 nicklas 299   */
7604 25 Feb 19 nicklas 300   share.correctPermissions = function(checked)
7604 25 Feb 19 nicklas 301   {
7604 25 Feb 19 nicklas 302     var frm = document.forms['share'];
7604 25 Feb 19 nicklas 303     if (checked)
7604 25 Feb 19 nicklas 304     {
7604 25 Feb 19 nicklas 305       frm['write'].checked = frm['write'].checked || frm['delete'].checked || frm['set_owner'].checked || frm['set_permission'].checked;
7604 25 Feb 19 nicklas 306       frm['restricted_write'].checked = frm['restricted_write'].checked || frm['write'].checked;
7604 25 Feb 19 nicklas 307       frm['use'].checked = frm['use'].checked || frm['write'].checked;
7604 25 Feb 19 nicklas 308       frm['read'].checked = frm['read'].checked || frm['use'].checked || frm['restricted_write'].checked;
7604 25 Feb 19 nicklas 309     }
7604 25 Feb 19 nicklas 310     else
7604 25 Feb 19 nicklas 311     {
7604 25 Feb 19 nicklas 312       frm['use'].checked = frm['use'].checked && frm['read'].checked;
7604 25 Feb 19 nicklas 313       frm['restricted_write'].checked = frm['restricted_write'].checked && frm['read'].checked;
7604 25 Feb 19 nicklas 314       frm['write'].checked = frm['write'].checked && frm['use'].checked && frm['restricted_write'].checked;
7604 25 Feb 19 nicklas 315       frm['delete'].checked = frm['delete'].checked && frm['write'].checked;
7604 25 Feb 19 nicklas 316       frm['set_owner'].checked = frm['set_owner'].checked && frm['write'].checked;
7604 25 Feb 19 nicklas 317       frm['set_permission'].checked = frm['set_permission'].checked && frm['write'].checked;
7604 25 Feb 19 nicklas 318     }
7604 25 Feb 19 nicklas 319   }
7604 25 Feb 19 nicklas 320
7604 25 Feb 19 nicklas 321   /**
7604 25 Feb 19 nicklas 322     Update the permission checkboxes so that they reflect the given
7604 25 Feb 19 nicklas 323     permission code. Permissions from teplates or the EVERYONE group
7604 25 Feb 19 nicklas 324     may disable the permissions.
7604 25 Feb 19 nicklas 325   */
7604 25 Feb 19 nicklas 326   share.checkPermissions = function(permissionCode, isEveryone, isTemplate)
7604 25 Feb 19 nicklas 327   {
7604 25 Feb 19 nicklas 328     var frm = document.forms['share'];
7604 25 Feb 19 nicklas 329     frm['read'].checked = permissionCode & Permission.READ;
7604 25 Feb 19 nicklas 330     frm['use'].checked = permissionCode & Permission.USE;
7604 25 Feb 19 nicklas 331     frm['restricted_write'].checked = permissionCode & Permission.RESTRICTED_WRITE;
7604 25 Feb 19 nicklas 332     frm['write'].checked = permissionCode & Permission.WRITE;
7604 25 Feb 19 nicklas 333     frm['delete'].checked = permissionCode & Permission.DELETE;
7604 25 Feb 19 nicklas 334     frm['set_owner'].checked = permissionCode & Permission.SET_OWNER;
7604 25 Feb 19 nicklas 335     frm['set_permission'].checked = permissionCode & Permission.SET_PERMISSION;
7604 25 Feb 19 nicklas 336
7604 25 Feb 19 nicklas 337     var disabled = isTemplate || (isEveryone && !SHARE_TO_EVERYONE);
7604 25 Feb 19 nicklas 338     frm['read'].disabled = disabled;
7604 25 Feb 19 nicklas 339     frm['use'].disabled = disabled;
7604 25 Feb 19 nicklas 340     frm['restricted_write'].disabled = disabled || !USE_RESTRICTED_WRITE;
7604 25 Feb 19 nicklas 341     frm['write'].disabled = disabled;
7604 25 Feb 19 nicklas 342     frm['delete'].disabled = disabled;
7604 25 Feb 19 nicklas 343     frm['set_owner'].disabled = disabled;
7604 25 Feb 19 nicklas 344     frm['set_permission'].disabled = disabled;
7604 25 Feb 19 nicklas 345     if (isEveryone && !SHARE_TO_EVERYONE)
7604 25 Feb 19 nicklas 346     {
7604 25 Feb 19 nicklas 347       Doc.show('share_disabled');
7604 25 Feb 19 nicklas 348     }
7604 25 Feb 19 nicklas 349     else
7604 25 Feb 19 nicklas 350     {
7604 25 Feb 19 nicklas 351       Doc.hide('share_disabled');
7604 25 Feb 19 nicklas 352     }
7604 25 Feb 19 nicklas 353   }
7604 25 Feb 19 nicklas 354   
7604 25 Feb 19 nicklas 355   return share;
7604 25 Feb 19 nicklas 356 }();
7604 25 Feb 19 nicklas 357
7604 25 Feb 19 nicklas 358 Doc.onLoad(Share.initPage);
7604 25 Feb 19 nicklas 359
7604 25 Feb 19 nicklas 360