www/admin/plugindefinitions/plugins.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 Plugins = function()
7604 25 Feb 19 nicklas 27 {
7604 25 Feb 19 nicklas 28   var plugins = {};
7604 25 Feb 19 nicklas 29   
7604 25 Feb 19 nicklas 30   var Permission = {};
7604 25 Feb 19 nicklas 31   
7604 25 Feb 19 nicklas 32   /**
7604 25 Feb 19 nicklas 33     Initialize the page.
7604 25 Feb 19 nicklas 34   */
7604 25 Feb 19 nicklas 35   plugins.initPage = function()
7604 25 Feb 19 nicklas 36   {
7604 25 Feb 19 nicklas 37     var pageId = Doc.getPageId();    
7604 25 Feb 19 nicklas 38     if (pageId == 'edit-page')
7604 25 Feb 19 nicklas 39     {
7604 25 Feb 19 nicklas 40       // Save + Close buttons
7604 25 Feb 19 nicklas 41       Buttons.addClickHandler('btnSave', plugins.save);
7604 25 Feb 19 nicklas 42       Buttons.addClickHandler('close', App.closeWindow);
7604 25 Feb 19 nicklas 43       
7604 25 Feb 19 nicklas 44       // Tab validation
7604 25 Feb 19 nicklas 45       TabControl.addTabValidator('settings.info', plugins.validatePlugin);
7604 25 Feb 19 nicklas 46       if (Doc.element('settings.annotations'))
7604 25 Feb 19 nicklas 47       {
7604 25 Feb 19 nicklas 48         TabControl.addTabActivateListener('settings.annotations', Annotations.onSwitchToAnnotationsTab);
7604 25 Feb 19 nicklas 49       }
7604 25 Feb 19 nicklas 50       
7604 25 Feb 19 nicklas 51       // Job agents
7604 25 Feb 19 nicklas 52       plugins.agentSettings = Data.json('page-data', 'agent-settings');
7604 25 Feb 19 nicklas 53
7604 25 Feb 19 nicklas 54       Events.addEventHandler('agents', 'click', plugins.agentsOnClick);
7604 25 Feb 19 nicklas 55       Events.addEventHandler('agents', 'base-selected', plugins.agentsOnClick);
7604 25 Feb 19 nicklas 56       Events.addEventHandler('btnRemoveAgents', 'click', plugins.hideAgentSettings);
7604 25 Feb 19 nicklas 57       
7604 25 Feb 19 nicklas 58       Events.addEventHandler('agentMaxMemory', 'blur', plugins.maxMemoryOnBlur);
7604 25 Feb 19 nicklas 59       Events.addEventHandler('useDefaultMaxMemory', 'click', plugins.useDefaultMaxMemoryOnClick)
7604 25 Feb 19 nicklas 60       Events.addEventHandler('agentTrustedDefault', 'click', plugins.trustedOnClick);
7604 25 Feb 19 nicklas 61       Events.addEventHandler('agentTrustedYes', 'click', plugins.trustedOnClick);
7604 25 Feb 19 nicklas 62       Events.addEventHandler('agentTrustedNo', 'click', plugins.trustedOnClick);
7604 25 Feb 19 nicklas 63       Events.addEventHandler('agentPriorityBoost', 'keypress', Events.integerOnly);
7604 25 Feb 19 nicklas 64       Events.addEventHandler('agentPriorityBoost', 'blur', plugins.priorityBoostOnBlur);
7604 25 Feb 19 nicklas 65
7604 25 Feb 19 nicklas 66       var selectedAgent = Data.get('page-data', 'select-agent');
7604 25 Feb 19 nicklas 67       if (selectedAgent) plugins.selectAgent(selectedAgent);
7604 25 Feb 19 nicklas 68       
7604 25 Feb 19 nicklas 69       // Permissions
7604 25 Feb 19 nicklas 70       Events.addEventHandler('permissionsYes', 'click', plugins.usePermissionsOnClick);
7604 25 Feb 19 nicklas 71       Events.addEventHandler('permissionsNo', 'click', plugins.usePermissionsOnClick);
7604 25 Feb 19 nicklas 72       Events.addEventHandler('permissionsAuto', 'click', plugins.usePermissionsOnClick);
7604 25 Feb 19 nicklas 73       
7604 25 Feb 19 nicklas 74       Events.addEventHandler('itemTypes', 'click', plugins.itemTypesOnClick);
7604 25 Feb 19 nicklas 75       
7604 25 Feb 19 nicklas 76       Events.addEventHandler('grant_create', 'click', plugins.permissionOnClick);
7604 25 Feb 19 nicklas 77       Events.addEventHandler('grant_read', 'click', plugins.permissionOnClick);
7604 25 Feb 19 nicklas 78       Events.addEventHandler('grant_use', 'click', plugins.permissionOnClick);
7604 25 Feb 19 nicklas 79       Events.addEventHandler('grant_restricted_write', 'click', plugins.permissionOnClick);
7604 25 Feb 19 nicklas 80       Events.addEventHandler('grant_write', 'click', plugins.permissionOnClick);
7604 25 Feb 19 nicklas 81       Events.addEventHandler('grant_delete', 'click', plugins.permissionOnClick);
7604 25 Feb 19 nicklas 82       Events.addEventHandler('grant_set_owner', 'click', plugins.permissionOnClick);
7604 25 Feb 19 nicklas 83       Events.addEventHandler('grant_set_permission', 'click', plugins.permissionOnClick);
7604 25 Feb 19 nicklas 84       Events.addEventHandler('deny_create', 'click', plugins.permissionOnClick);
7604 25 Feb 19 nicklas 85       Events.addEventHandler('deny_read', 'click', plugins.permissionOnClick);
7604 25 Feb 19 nicklas 86       Events.addEventHandler('deny_use', 'click', plugins.permissionOnClick);
7604 25 Feb 19 nicklas 87       Events.addEventHandler('deny_restricted_write', 'click', plugins.permissionOnClick);
7604 25 Feb 19 nicklas 88       Events.addEventHandler('deny_write', 'click', plugins.permissionOnClick);
7604 25 Feb 19 nicklas 89       Events.addEventHandler('deny_delete', 'click', plugins.permissionOnClick);
7604 25 Feb 19 nicklas 90       Events.addEventHandler('deny_set_owner', 'click', plugins.permissionOnClick);
7604 25 Feb 19 nicklas 91       Events.addEventHandler('deny_set_permission', 'click', plugins.permissionOnClick);
7604 25 Feb 19 nicklas 92       
7604 25 Feb 19 nicklas 93       Permission.CREATE = Data.int('page-data', 'create');
7604 25 Feb 19 nicklas 94       Permission.READ = Data.int('page-data', 'read');
7604 25 Feb 19 nicklas 95       Permission.USE = Data.int('page-data', 'use');
7604 25 Feb 19 nicklas 96       Permission.RESTRICTED_WRITE = Data.int('page-data', 'restricted-write');
7604 25 Feb 19 nicklas 97       Permission.WRITE = Data.int('page-data', 'write');
7604 25 Feb 19 nicklas 98       Permission.DELETE = Data.int('page-data', 'delete');
7604 25 Feb 19 nicklas 99       Permission.SET_OWNER = Data.int('page-data', 'set-owner');
7604 25 Feb 19 nicklas 100       Permission.SET_PERMISSION = Data.int('page-data', 'set-permission');
7604 25 Feb 19 nicklas 101       
7604 25 Feb 19 nicklas 102       Buttons.addClickHandler('btnSetRequestedPermissions', plugins.setRequestedPermissions);
7604 25 Feb 19 nicklas 103       
7604 25 Feb 19 nicklas 104       plugins.initPermissionLetters();
7604 25 Feb 19 nicklas 105     }
7604 25 Feb 19 nicklas 106     else if (pageId == 'view-page')
7604 25 Feb 19 nicklas 107     {
7604 25 Feb 19 nicklas 108       var itemId = Data.get('page-data', 'item-id');
7604 25 Feb 19 nicklas 109       var attributes = {'item-type': 'PLUGINDEFINITION', 'item-id': itemId};
7604 25 Feb 19 nicklas 110       
7604 25 Feb 19 nicklas 111       Buttons.addClickHandler('btnEdit', Buttons.editItem, attributes);
7604 25 Feb 19 nicklas 112       Buttons.addClickHandler('btnDelete', Buttons.deleteItem, attributes);
7604 25 Feb 19 nicklas 113       Buttons.addClickHandler('btnRestore', Buttons.restoreItem, attributes);
7604 25 Feb 19 nicklas 114       Buttons.addClickHandler('btnUsingItems', Buttons.showUsingItems, attributes);
7604 25 Feb 19 nicklas 115       Buttons.addClickHandler('btnDeletePermanently', Buttons.deleteItemPermanently, attributes);
7604 25 Feb 19 nicklas 116       Buttons.addClickHandler('btnShare', Buttons.shareItem, attributes);
7604 25 Feb 19 nicklas 117       Buttons.addClickHandler('btnSetOwner', Buttons.setOwner, attributes);
7604 25 Feb 19 nicklas 118       Buttons.addClickHandler('btnExport', Buttons.runPlugin, attributes);
7604 25 Feb 19 nicklas 119       Buttons.addClickHandler('btnImport', Buttons.runPlugin, attributes);
7604 25 Feb 19 nicklas 120       Buttons.addClickHandler('btnRunPlugin', Buttons.runPlugin, attributes);
7604 25 Feb 19 nicklas 121       Buttons.addClickHandler('btnNewConfiguration', plugins.newConfiguration, attributes);
7604 25 Feb 19 nicklas 122       Buttons.addClickHandler('btnToggleDisabled', plugins.toggleDisabled);
7604 25 Feb 19 nicklas 123
7604 25 Feb 19 nicklas 124       if (Doc.element('main.annotations'))
7604 25 Feb 19 nicklas 125       {
7604 25 Feb 19 nicklas 126         TabControl.addTabActivateListener('main.annotations', AnnotationsList.loadOnce);
7604 25 Feb 19 nicklas 127       }
7604 25 Feb 19 nicklas 128       TabControl.addTabActivateListener('main.history', History.loadOnce);
7604 25 Feb 19 nicklas 129     }
7604 25 Feb 19 nicklas 130     else if (pageId == 'list-page')
7604 25 Feb 19 nicklas 131     {
7604 25 Feb 19 nicklas 132       var attributes = {'item-type': 'PLUGINDEFINITION'};
7604 25 Feb 19 nicklas 133       var tableAttributes = {'table-id': 'plugins'};
7604 25 Feb 19 nicklas 134       Buttons.addClickHandler('btnNewItem', Buttons.newItem, attributes);
7604 25 Feb 19 nicklas 135       Buttons.addClickHandler('btnDeleteItems', Buttons.deleteItems, tableAttributes);
7604 25 Feb 19 nicklas 136       Buttons.addClickHandler('btnRestoreItems', Buttons.restoreItems, tableAttributes);
7604 25 Feb 19 nicklas 137       Buttons.addClickHandler('btnShareItems', Buttons.shareItems, tableAttributes);
7604 25 Feb 19 nicklas 138       Buttons.addClickHandler('btnSetOwner', Buttons.setOwnerOfItems, tableAttributes);
7604 25 Feb 19 nicklas 139       Buttons.addClickHandler('btnColumns', Buttons.configureColumns, tableAttributes);
7604 25 Feb 19 nicklas 140       Buttons.addClickHandler('btnExport', Buttons.runListPlugin, tableAttributes);
7604 25 Feb 19 nicklas 141       Buttons.addClickHandler('btnImport', Buttons.runListPlugin, tableAttributes);
7604 25 Feb 19 nicklas 142       Buttons.addClickHandler('btnRunPlugin', Buttons.runListPlugin, tableAttributes);
7604 25 Feb 19 nicklas 143       
7604 25 Feb 19 nicklas 144       Buttons.addClickHandler('close', App.closeWindow);
7604 25 Feb 19 nicklas 145       Buttons.addClickHandler('btnOk', Buttons.returnSelected, tableAttributes);
7604 25 Feb 19 nicklas 146     }
7604 25 Feb 19 nicklas 147   }
7604 25 Feb 19 nicklas 148
7604 25 Feb 19 nicklas 149
7604 25 Feb 19 nicklas 150   // Add event handlers to the 'configure' and copy icons
7604 25 Feb 19 nicklas 151   plugins.initElements = function(element, autoInit)
7604 25 Feb 19 nicklas 152   {
7604 25 Feb 19 nicklas 153     if (autoInit == 'new-config')
7604 25 Feb 19 nicklas 154     {
7604 25 Feb 19 nicklas 155       Buttons.addClickHandler(element, plugins.newConfiguration);
7604 25 Feb 19 nicklas 156     }
7604 25 Feb 19 nicklas 157     else if (autoInit == 'configure-plugin')
7604 25 Feb 19 nicklas 158     {
7604 25 Feb 19 nicklas 159       Buttons.addClickHandler(element, plugins.configurePlugin);
7604 25 Feb 19 nicklas 160     }
7604 25 Feb 19 nicklas 161     else if (autoInit == 'configure-agent')
7604 25 Feb 19 nicklas 162     {
7604 25 Feb 19 nicklas 163       Buttons.addClickHandler(element, plugins.configureAgent);
7604 25 Feb 19 nicklas 164     }
7604 25 Feb 19 nicklas 165   }
7604 25 Feb 19 nicklas 166
7604 25 Feb 19 nicklas 167   plugins.newConfiguration = function(event)
7604 25 Feb 19 nicklas 168   {
7604 25 Feb 19 nicklas 169     var pluginId = Data.get(event.currentTarget, 'item-id');
7604 25 Feb 19 nicklas 170     Items.newItem('PLUGINCONFIGURATION', '&plugindefinition_id='+pluginId);
7604 25 Feb 19 nicklas 171   }
7604 25 Feb 19 nicklas 172   
7604 25 Feb 19 nicklas 173   /*
7604 25 Feb 19 nicklas 174     Run the plug-in configuration wizard
7604 25 Feb 19 nicklas 175   */
7604 25 Feb 19 nicklas 176   plugins.configurePlugin = function(event)
7604 25 Feb 19 nicklas 177   {
7604 25 Feb 19 nicklas 178     var configId = Data.int(event.currentTarget, 'item-id');
7604 25 Feb 19 nicklas 179     var url = App.getRoot() + 'common/plugin/index.jsp?ID='+App.getSessionId();
7604 25 Feb 19 nicklas 180     url += '&cmd=ConfigurePlugin';
7604 25 Feb 19 nicklas 181     url += '&pluginconfiguration_id='+configId;
7604 25 Feb 19 nicklas 182     Dialogs.openPopup(url, 'ConfigurePlugin', 750, 500);
7604 25 Feb 19 nicklas 183   }
7604 25 Feb 19 nicklas 184
7604 25 Feb 19 nicklas 185   plugins.configureAgent = function(event)
7604 25 Feb 19 nicklas 186   {
7604 25 Feb 19 nicklas 187     var pluginId = Data.get('page-data', 'item-id');
7604 25 Feb 19 nicklas 188     var agentId = Data.get(event.currentTarget, 'item-id');
7604 25 Feb 19 nicklas 189     Items.editItem('PLUGINDEFINITION', pluginId, '&jobagent_id='+agentId);
7604 25 Feb 19 nicklas 190   }
7604 25 Feb 19 nicklas 191   
7604 25 Feb 19 nicklas 192   plugins.toggleDisabled = function(event)
7604 25 Feb 19 nicklas 193   {
7604 25 Feb 19 nicklas 194     var enable = Data.int(event.currentTarget, 'enable');
7604 25 Feb 19 nicklas 195     var tree = window.parent.frames['tree'];
7604 25 Feb 19 nicklas 196     if (tree && tree.Tree)
7604 25 Feb 19 nicklas 197     {
7604 25 Feb 19 nicklas 198       var iconName = enable ? 'Plugin' : 'PluginDisabled';
7604 25 Feb 19 nicklas 199       var className = Data.get(event.currentTarget, 'plugin-class');
7604 25 Feb 19 nicklas 200       tree.Tree.setIcon(className, iconName);
7604 25 Feb 19 nicklas 201     }
7604 25 Feb 19 nicklas 202     var pluginId = Data.get('page-data', 'item-id');
7604 25 Feb 19 nicklas 203     var iframe = Data.get('page-data', 'iframe');
7604 25 Feb 19 nicklas 204     
7604 25 Feb 19 nicklas 205     var cmd = enable ? 'EnableItem' : 'DisableItem';
7604 25 Feb 19 nicklas 206     var url = 'index.jsp?ID='+App.getSessionId();
7604 25 Feb 19 nicklas 207     url += '&cmd=' + (enable ? 'EnableItem' : 'DisableItem');
7604 25 Feb 19 nicklas 208     url += '&item_id='+pluginId+'&iframe='+iframe;
7604 25 Feb 19 nicklas 209     location.replace(url);
7604 25 Feb 19 nicklas 210   }
7604 25 Feb 19 nicklas 211   
7604 25 Feb 19 nicklas 212   plugins.validatePlugin = function()
7604 25 Feb 19 nicklas 213   {
7604 25 Feb 19 nicklas 214     var frm = document.forms['plugin'];
7604 25 Feb 19 nicklas 215     if (Strings.trim(frm.className.value) == '')
7604 25 Feb 19 nicklas 216     {
7604 25 Feb 19 nicklas 217       Forms.showNotification(frm.className, 'You must enter a class name');
7604 25 Feb 19 nicklas 218       return false;
7604 25 Feb 19 nicklas 219     }
7604 25 Feb 19 nicklas 220     return true;
7604 25 Feb 19 nicklas 221   }
7604 25 Feb 19 nicklas 222   
7604 25 Feb 19 nicklas 223   plugins.save = function()
7604 25 Feb 19 nicklas 224   {
7604 25 Feb 19 nicklas 225     var frm = document.forms['plugin'];
7604 25 Feb 19 nicklas 226     if (TabControl.validateActiveTab('settings'))
7604 25 Feb 19 nicklas 227     {
7604 25 Feb 19 nicklas 228       Link.exportActions('agents');
7604 25 Feb 19 nicklas 229       var agents = Link.getIdsInList(frm.agents, 'JOBAGENT');
7604 25 Feb 19 nicklas 230       
7604 25 Feb 19 nicklas 231       for (var i = 0; i < agents.length; i++)
7604 25 Feb 19 nicklas 232       {
7604 25 Feb 19 nicklas 233         var agentId = agents[i];
7604 25 Feb 19 nicklas 234         var settings = plugins.getAgentSettings(agentId);
7604 25 Feb 19 nicklas 235         if (settings)
7604 25 Feb 19 nicklas 236         {
7604 25 Feb 19 nicklas 237           if (settings.maxMemory)
7604 25 Feb 19 nicklas 238           {
7604 25 Feb 19 nicklas 239             Forms.addHidden(frm, 'maxMemory.'+agentId, settings.maxMemory);
7604 25 Feb 19 nicklas 240           }
7604 25 Feb 19 nicklas 241           Forms.addHidden(frm, 'trusted.'+agentId, settings.trusted);          
7604 25 Feb 19 nicklas 242           Forms.addHidden(frm, 'priorityBoost.'+agentId, settings.priorityBoost);
7604 25 Feb 19 nicklas 243         }
7604 25 Feb 19 nicklas 244       }
7604 25 Feb 19 nicklas 245       Forms.addHidden(frm, 'allAgents', agents.join(','));
7604 25 Feb 19 nicklas 246       if (window.Annotations)
7604 25 Feb 19 nicklas 247       {
7604 25 Feb 19 nicklas 248         Annotations.saveModifiedAnnotationsToForm(frm);
7604 25 Feb 19 nicklas 249       }
7604 25 Feb 19 nicklas 250       frm.submit();
7604 25 Feb 19 nicklas 251     }
7604 25 Feb 19 nicklas 252   }
7604 25 Feb 19 nicklas 253
7604 25 Feb 19 nicklas 254
7604 25 Feb 19 nicklas 255   plugins.getAgentSettings = function(agentId)
7604 25 Feb 19 nicklas 256   {
7604 25 Feb 19 nicklas 257     for (var i = 0; i < plugins.agentSettings.length; i++)
7604 25 Feb 19 nicklas 258     {
7604 25 Feb 19 nicklas 259       if (plugins.agentSettings[i].agentId == agentId)
7604 25 Feb 19 nicklas 260       {
7604 25 Feb 19 nicklas 261         return plugins.agentSettings[i];
7604 25 Feb 19 nicklas 262       }
7604 25 Feb 19 nicklas 263     }
7604 25 Feb 19 nicklas 264     return null;
7604 25 Feb 19 nicklas 265   }
7604 25 Feb 19 nicklas 266
7604 25 Feb 19 nicklas 267   plugins.selectAgent = function(agentId)
7604 25 Feb 19 nicklas 268   {
7604 25 Feb 19 nicklas 269     var frm = document.forms['plugin'];
7604 25 Feb 19 nicklas 270     for (var i = 0; i < frm.agents.length; i++)
7604 25 Feb 19 nicklas 271     {
7604 25 Feb 19 nicklas 272       if (frm.agents[i].item.id == agentId)
7604 25 Feb 19 nicklas 273       {
7604 25 Feb 19 nicklas 274         frm.agents.selectedIndex = i;
7604 25 Feb 19 nicklas 275         plugins.agentsOnClick();
7604 25 Feb 19 nicklas 276         return;
7604 25 Feb 19 nicklas 277       }
7604 25 Feb 19 nicklas 278     }
7604 25 Feb 19 nicklas 279   }
7604 25 Feb 19 nicklas 280
7604 25 Feb 19 nicklas 281   plugins.maxMemoryOnBlur = function()
7604 25 Feb 19 nicklas 282   {
7604 25 Feb 19 nicklas 283     var frm = document.forms['plugin'];
7604 25 Feb 19 nicklas 284     var agentId = frm.agents[frm.agents.selectedIndex].item.id;
7604 25 Feb 19 nicklas 285     var settings = plugins.getAgentSettings(agentId);
7604 25 Feb 19 nicklas 286     if (settings)
7604 25 Feb 19 nicklas 287     {
7604 25 Feb 19 nicklas 288       settings.maxMemory = frm.agentMaxMemory.value;
7604 25 Feb 19 nicklas 289     }
7604 25 Feb 19 nicklas 290   }
7604 25 Feb 19 nicklas 291   
7604 25 Feb 19 nicklas 292   plugins.useDefaultMaxMemoryOnClick = function()
7604 25 Feb 19 nicklas 293   {
7604 25 Feb 19 nicklas 294     var frm = document.forms['plugin'];
7604 25 Feb 19 nicklas 295     var agentId = frm.agents[frm.agents.selectedIndex].item.id;
7604 25 Feb 19 nicklas 296     var settings = plugins.getAgentSettings(agentId);
7604 25 Feb 19 nicklas 297     if (settings)
7604 25 Feb 19 nicklas 298     {
7604 25 Feb 19 nicklas 299       var useDefault = frm.useDefaultMaxMemory.checked;
7604 25 Feb 19 nicklas 300       
7604 25 Feb 19 nicklas 301       settings.maxMemory = useDefault ? null : frm.agentMaxMemory.value;
7604 25 Feb 19 nicklas 302       frm.agentMaxMemory.disabled = useDefault;
7604 25 Feb 19 nicklas 303       if (!frm.agentMaxMemory.disabled) frm.agentMaxMemory.focus();
7604 25 Feb 19 nicklas 304     }
7604 25 Feb 19 nicklas 305   }
7604 25 Feb 19 nicklas 306
7604 25 Feb 19 nicklas 307   
7604 25 Feb 19 nicklas 308   plugins.trustedOnClick = function()
7604 25 Feb 19 nicklas 309   {
7604 25 Feb 19 nicklas 310     var frm = document.forms['plugin'];
7604 25 Feb 19 nicklas 311     var agentId = frm.agents[frm.agents.selectedIndex].item.id;
7604 25 Feb 19 nicklas 312     var settings = plugins.getAgentSettings(agentId);
7604 25 Feb 19 nicklas 313     
7604 25 Feb 19 nicklas 314     if (settings)
7604 25 Feb 19 nicklas 315     {
7604 25 Feb 19 nicklas 316       var selected = Forms.getCheckedRadio(frm.agentTrusted);
7604 25 Feb 19 nicklas 317       if (selected != null)
7604 25 Feb 19 nicklas 318       {
7604 25 Feb 19 nicklas 319         settings.trusted = selected.value;
7604 25 Feb 19 nicklas 320       }
7604 25 Feb 19 nicklas 321     }
7604 25 Feb 19 nicklas 322   }
7604 25 Feb 19 nicklas 323
7604 25 Feb 19 nicklas 324   
7604 25 Feb 19 nicklas 325   plugins.priorityBoostOnBlur = function()
7604 25 Feb 19 nicklas 326   {
7604 25 Feb 19 nicklas 327     var frm = document.forms['plugin'];
7604 25 Feb 19 nicklas 328     var agentId = frm.agents[frm.agents.selectedIndex].item.id;
7604 25 Feb 19 nicklas 329     var settings = plugins.getAgentSettings(agentId);
7604 25 Feb 19 nicklas 330     if (settings)
7604 25 Feb 19 nicklas 331     {
7604 25 Feb 19 nicklas 332       var priorityBoost = parseInt(frm.agentPriorityBoost.value);
7604 25 Feb 19 nicklas 333       if (priorityBoost < 0 || priorityBoost > 10)
7604 25 Feb 19 nicklas 334       {
7604 25 Feb 19 nicklas 335         Forms.showNotification(frm.agentPriorityBoost, 'The priority boost must be between 0 and 10');
7604 25 Feb 19 nicklas 336         return;
7604 25 Feb 19 nicklas 337       }
7604 25 Feb 19 nicklas 338       settings.priorityBoost = priorityBoost;
7604 25 Feb 19 nicklas 339     }
7604 25 Feb 19 nicklas 340   }
7604 25 Feb 19 nicklas 341   
7604 25 Feb 19 nicklas 342   
7604 25 Feb 19 nicklas 343   plugins.agentsOnClick = function()
7604 25 Feb 19 nicklas 344   {
7604 25 Feb 19 nicklas 345     var frm = document.forms['plugin'];
7604 25 Feb 19 nicklas 346     var settings;
7604 25 Feb 19 nicklas 347     if (frm.agents.selectedIndex >= 0)
7604 25 Feb 19 nicklas 348     {
7604 25 Feb 19 nicklas 349       var item = frm.agents[frm.agents.selectedIndex].item;
7604 25 Feb 19 nicklas 350       var agentId = item ? item.id : null;
7604 25 Feb 19 nicklas 351       settings = plugins.getAgentSettings(agentId);
7604 25 Feb 19 nicklas 352     }
7604 25 Feb 19 nicklas 353
7604 25 Feb 19 nicklas 354     if (settings)
7604 25 Feb 19 nicklas 355     {
7604 25 Feb 19 nicklas 356       Doc.show('agentsettings');
7604 25 Feb 19 nicklas 357       
7604 25 Feb 19 nicklas 358       // Set max memory
7604 25 Feb 19 nicklas 359       frm.useDefaultMaxMemory.checked = !settings.maxMemory;
7604 25 Feb 19 nicklas 360       frm.agentMaxMemory.value = settings.maxMemory || '';
7604 25 Feb 19 nicklas 361       frm.agentMaxMemory.disabled = frm.useDefaultMaxMemory.checked;
7604 25 Feb 19 nicklas 362
7604 25 Feb 19 nicklas 363       var defaultMaxMemory = Doc.element('defaultMaxMemory');
7604 25 Feb 19 nicklas 364       defaultMaxMemory.innerHTML = settings.defaultMaxMemory || '<i>not specified</i>';
7604 25 Feb 19 nicklas 365       
7604 25 Feb 19 nicklas 366       // Set trusted
7604 25 Feb 19 nicklas 367       Forms.checkRadio(frm.agentTrusted, settings.trusted);
7604 25 Feb 19 nicklas 368       var defaultTrusted = Doc.element('defaultTrusted');
7604 25 Feb 19 nicklas 369       defaultTrusted.innerHTML = Forms.getCheckedRadio(frm.trusted).value == '0' ? 'no' : 'yes';
7604 25 Feb 19 nicklas 370
7604 25 Feb 19 nicklas 371       // Set priority boost
7604 25 Feb 19 nicklas 372       frm.agentPriorityBoost.value = settings.priorityBoost;
7604 25 Feb 19 nicklas 373     }
7604 25 Feb 19 nicklas 374     else
7604 25 Feb 19 nicklas 375     {
7604 25 Feb 19 nicklas 376       Doc.hide('agentsettings');
7604 25 Feb 19 nicklas 377     }
7604 25 Feb 19 nicklas 378
7604 25 Feb 19 nicklas 379   }
7604 25 Feb 19 nicklas 380
7604 25 Feb 19 nicklas 381   
7604 25 Feb 19 nicklas 382   plugins.hideAgentSettings = function()
7604 25 Feb 19 nicklas 383   {
7604 25 Feb 19 nicklas 384     Doc.hide('agentsettings');
7604 25 Feb 19 nicklas 385   }
7604 25 Feb 19 nicklas 386
7604 25 Feb 19 nicklas 387   plugins.usePermissionsOnClick = function()
7604 25 Feb 19 nicklas 388   {
7604 25 Feb 19 nicklas 389     var frm = document.forms['plugin'];
7604 25 Feb 19 nicklas 390     var use = Forms.getCheckedRadio(frm.use_permissions).value == '1';
7604 25 Feb 19 nicklas 391     frm.itemTypes.disabled = !use;
7604 25 Feb 19 nicklas 392     frm.grant_create.disabled = !use;
7604 25 Feb 19 nicklas 393     frm.grant_read.disabled = !use;
7604 25 Feb 19 nicklas 394     frm.grant_use.disabled = !use;
7604 25 Feb 19 nicklas 395     frm.grant_restricted_write.disabled = !use;
7604 25 Feb 19 nicklas 396     frm.grant_write.disabled = !use;
7604 25 Feb 19 nicklas 397     frm.grant_delete.disabled = !use;
7604 25 Feb 19 nicklas 398     frm.grant_set_owner.disabled = !use;
7604 25 Feb 19 nicklas 399     frm.grant_set_permission.disabled = !use;
7604 25 Feb 19 nicklas 400     frm.deny_create.disabled = !use;
7604 25 Feb 19 nicklas 401     frm.deny_read.disabled = !use;
7604 25 Feb 19 nicklas 402     frm.deny_use.disabled = !use;
7604 25 Feb 19 nicklas 403     frm.deny_restricted_write.disabled = !use;
7604 25 Feb 19 nicklas 404     frm.deny_write.disabled = !use;
7604 25 Feb 19 nicklas 405     frm.deny_delete.disabled = !use;
7604 25 Feb 19 nicklas 406     frm.deny_set_owner.disabled = !use;
7604 25 Feb 19 nicklas 407     frm.deny_set_permission.disabled = !use;
7604 25 Feb 19 nicklas 408   }
7604 25 Feb 19 nicklas 409
7604 25 Feb 19 nicklas 410   plugins.initPermissionLetters = function()
7604 25 Feb 19 nicklas 411   {
7604 25 Feb 19 nicklas 412     var frm = document.forms['plugin'];
7604 25 Feb 19 nicklas 413     for (var i = 0; i < frm.itemTypes.length; i++)
7604 25 Feb 19 nicklas 414     {
7604 25 Feb 19 nicklas 415       plugins.updatePermissionLetters(frm.itemTypes[i]);
7604 25 Feb 19 nicklas 416     }
7604 25 Feb 19 nicklas 417     //usePermissionsOnClick();
7604 25 Feb 19 nicklas 418   }
7604 25 Feb 19 nicklas 419   
7604 25 Feb 19 nicklas 420   // Show current permissions for the selected item
7604 25 Feb 19 nicklas 421   plugins.itemTypesOnClick = function()
7604 25 Feb 19 nicklas 422   {
7604 25 Feb 19 nicklas 423     var frm = document.forms['plugin'];
7604 25 Feb 19 nicklas 424     var itemType = frm.itemTypes.value;
7604 25 Feb 19 nicklas 425     if (itemType)
7604 25 Feb 19 nicklas 426     {
7604 25 Feb 19 nicklas 427       var granted = parseInt(frm[itemType+'_granted'].value);
7604 25 Feb 19 nicklas 428       var denied = parseInt(frm[itemType+'_denied'].value);
7604 25 Feb 19 nicklas 429       var defined = parseInt(frm[itemType+'_defined'].value);
7604 25 Feb 19 nicklas 430       
7604 25 Feb 19 nicklas 431       plugins.updatePermissionCheckBoxes('create', Permission.CREATE, granted, denied, defined);
7604 25 Feb 19 nicklas 432       plugins.updatePermissionCheckBoxes('read', Permission.READ, granted, denied, defined);
7604 25 Feb 19 nicklas 433       plugins.updatePermissionCheckBoxes('use', Permission.USE, granted, denied, defined);
7604 25 Feb 19 nicklas 434       plugins.updatePermissionCheckBoxes('restricted_write', Permission.RESTRICTED_WRITE, granted, denied, defined);
7604 25 Feb 19 nicklas 435       plugins.updatePermissionCheckBoxes('write', Permission.WRITE, granted, denied, defined);
7604 25 Feb 19 nicklas 436       plugins.updatePermissionCheckBoxes('delete', Permission.DELETE, granted, denied, defined);
7604 25 Feb 19 nicklas 437       plugins.updatePermissionCheckBoxes('set_owner', Permission.SET_OWNER, granted, denied, defined);
7604 25 Feb 19 nicklas 438       plugins.updatePermissionCheckBoxes('set_permission', Permission.SET_PERMISSION, granted, denied, defined);
7604 25 Feb 19 nicklas 439     }
7604 25 Feb 19 nicklas 440   }
7604 25 Feb 19 nicklas 441
7604 25 Feb 19 nicklas 442   /*
7604 25 Feb 19 nicklas 443     Check/uncheck and enable/disable checkboxes depending on given permissions
7604 25 Feb 19 nicklas 444   */
7604 25 Feb 19 nicklas 445   plugins.updatePermissionCheckBoxes = function(nameSuffix, permission, granted, denied, defined)
7604 25 Feb 19 nicklas 446   {
7604 25 Feb 19 nicklas 447     var frm = document.forms['plugin'];
7604 25 Feb 19 nicklas 448     var isGranted = (permission & granted) > 0;
7604 25 Feb 19 nicklas 449     var isDenied = (permission & denied) > 0;
7604 25 Feb 19 nicklas 450     var isDefined = (permission & defined) > 0;
7604 25 Feb 19 nicklas 451     
7604 25 Feb 19 nicklas 452     frm['grant_'+nameSuffix].disabled = !isDefined;
7604 25 Feb 19 nicklas 453     frm['deny_'+nameSuffix].disabled = !isDefined || isGranted;
7604 25 Feb 19 nicklas 454     frm['grant_'+nameSuffix].checked = isGranted & isDefined;
7604 25 Feb 19 nicklas 455     frm['deny_'+nameSuffix].checked = isDenied & isDefined;
7604 25 Feb 19 nicklas 456   }
7604 25 Feb 19 nicklas 457
7604 25 Feb 19 nicklas 458   
7604 25 Feb 19 nicklas 459   /*
7604 25 Feb 19 nicklas 460     Update the permission code string for the given list entry.
7604 25 Feb 19 nicklas 461   */
7604 25 Feb 19 nicklas 462   plugins.updatePermissionLetters = function(listOption)
7604 25 Feb 19 nicklas 463   {
7604 25 Feb 19 nicklas 464     var frm = document.forms['plugin'];
7604 25 Feb 19 nicklas 465     listOption = Doc.element(listOption);
7604 25 Feb 19 nicklas 466     var itemType = listOption.value;
7604 25 Feb 19 nicklas 467     if (itemType)
7604 25 Feb 19 nicklas 468     {
7604 25 Feb 19 nicklas 469       var granted = parseInt(frm[itemType+'_granted'].value);
7604 25 Feb 19 nicklas 470       var denied = parseInt(frm[itemType+'_denied'].value);
7604 25 Feb 19 nicklas 471       var defined = parseInt(frm[itemType+'_defined'].value);
7604 25 Feb 19 nicklas 472       
7604 25 Feb 19 nicklas 473       var s = '';
7604 25 Feb 19 nicklas 474       s += plugins.getPermissionLetter('C', Permission.CREATE, granted, denied, defined);
7604 25 Feb 19 nicklas 475       s += plugins.getPermissionLetter('R', Permission.READ, granted, denied, defined);
7604 25 Feb 19 nicklas 476       s += plugins.getPermissionLetter('U', Permission.USE, granted, denied, defined);
7604 25 Feb 19 nicklas 477       s += plugins.getPermissionLetter('A', Permission.RESTRICTED_WRITE, granted, denied, defined);
7604 25 Feb 19 nicklas 478       s += plugins.getPermissionLetter('W', Permission.WRITE, granted, denied, defined);
7604 25 Feb 19 nicklas 479       s += plugins.getPermissionLetter('D', Permission.DELETE, granted, denied, defined);
7604 25 Feb 19 nicklas 480       s += plugins.getPermissionLetter('O', Permission.SET_OWNER, granted, denied, defined);
7604 25 Feb 19 nicklas 481       s += plugins.getPermissionLetter('P', Permission.SET_PERMISSION, granted, denied, defined);
7604 25 Feb 19 nicklas 482       
7604 25 Feb 19 nicklas 483       var text = listOption.text.replace(/\[.*\]/, '['+s+']');
7604 25 Feb 19 nicklas 484       listOption.text = text; 
7604 25 Feb 19 nicklas 485     }
7604 25 Feb 19 nicklas 486   }
7604 25 Feb 19 nicklas 487   
7604 25 Feb 19 nicklas 488   plugins.getPermissionLetter = function(permissionLetter, permission, granted, denied, defined)
7604 25 Feb 19 nicklas 489   {
7604 25 Feb 19 nicklas 490     var letter = '';
7604 25 Feb 19 nicklas 491     if ((defined & permission) > 0)
7604 25 Feb 19 nicklas 492     {
7604 25 Feb 19 nicklas 493       if ((granted & permission) > 0)
7604 25 Feb 19 nicklas 494       {
7604 25 Feb 19 nicklas 495         letter = permissionLetter.toUpperCase();
7604 25 Feb 19 nicklas 496       }
7604 25 Feb 19 nicklas 497       else if ((denied & permission) > 0)
7604 25 Feb 19 nicklas 498       {
7604 25 Feb 19 nicklas 499         letter = '-';
7604 25 Feb 19 nicklas 500       }
7604 25 Feb 19 nicklas 501       else
7604 25 Feb 19 nicklas 502       {
7604 25 Feb 19 nicklas 503         letter = permissionLetter.toLowerCase();
7604 25 Feb 19 nicklas 504       }
7604 25 Feb 19 nicklas 505     }
7604 25 Feb 19 nicklas 506     return letter;
7604 25 Feb 19 nicklas 507   }
7604 25 Feb 19 nicklas 508
7604 25 Feb 19 nicklas 509   // When a user clicks on one of the permission checkboxes
7604 25 Feb 19 nicklas 510   plugins.permissionOnClick = function(event)
7604 25 Feb 19 nicklas 511   {
7604 25 Feb 19 nicklas 512     var checkbox = event.currentTarget;
7604 25 Feb 19 nicklas 513     
7604 25 Feb 19 nicklas 514     var frm = document.forms['plugin'];
7604 25 Feb 19 nicklas 515     // Make sure implied permissions are consistent
7604 25 Feb 19 nicklas 516     plugins.ensureImpliedPermissions(checkbox.checked);
7604 25 Feb 19 nicklas 517     // Calculate granted and denied permission values
7604 25 Feb 19 nicklas 518     var granted = plugins.getCheckedPermissions('grant_');
7604 25 Feb 19 nicklas 519     var denied = plugins.getCheckedPermissions('deny_');
7604 25 Feb 19 nicklas 520     // Apply to the selected items and update their text
7604 25 Feb 19 nicklas 521     for (var i = 0; i < frm.itemTypes.length; i++)
7604 25 Feb 19 nicklas 522     {
7604 25 Feb 19 nicklas 523       var item = frm.itemTypes[i];
7604 25 Feb 19 nicklas 524       var itemType = item.value;
7604 25 Feb 19 nicklas 525       if (item.selected && itemType)
7604 25 Feb 19 nicklas 526       {
7604 25 Feb 19 nicklas 527         frm[itemType+'_granted'].value = granted;
7604 25 Feb 19 nicklas 528         frm[itemType+'_denied'].value = denied;
7604 25 Feb 19 nicklas 529         plugins.updatePermissionLetters(item);
7604 25 Feb 19 nicklas 530       }
7604 25 Feb 19 nicklas 531     }
7604 25 Feb 19 nicklas 532   }
7604 25 Feb 19 nicklas 533
7604 25 Feb 19 nicklas 534   /*
7604 25 Feb 19 nicklas 535     Get the permission for the checked checkboxes
7604 25 Feb 19 nicklas 536     prefix should be "grant_" or "deny_"
7604 25 Feb 19 nicklas 537   */
7604 25 Feb 19 nicklas 538   plugins.getCheckedPermissions = function(prefix)
7604 25 Feb 19 nicklas 539   {
7604 25 Feb 19 nicklas 540     var permissionCode = 0;
7604 25 Feb 19 nicklas 541     var frm = document.forms['plugin'];
7604 25 Feb 19 nicklas 542     permissionCode += frm[prefix+'create'].checked ? Permission.CREATE : 0;
7604 25 Feb 19 nicklas 543     permissionCode += frm[prefix+'read'].checked ? Permission.READ : 0;
7604 25 Feb 19 nicklas 544     permissionCode += frm[prefix+'use'].checked ? Permission.USE : 0;
7604 25 Feb 19 nicklas 545     permissionCode += frm[prefix+'restricted_write'].checked ? Permission.RESTRICTED_WRITE : 0;
7604 25 Feb 19 nicklas 546     permissionCode += frm[prefix+'write'].checked ? Permission.WRITE : 0;
7604 25 Feb 19 nicklas 547     permissionCode += frm[prefix+'delete'].checked ? Permission.DELETE : 0;
7604 25 Feb 19 nicklas 548     permissionCode += frm[prefix+'set_owner'].checked ? Permission.SET_OWNER : 0;
7604 25 Feb 19 nicklas 549     permissionCode += frm[prefix+'set_permission'].checked ? Permission.SET_PERMISSION : 0;
7604 25 Feb 19 nicklas 550     return permissionCode;
7604 25 Feb 19 nicklas 551   }
7604 25 Feb 19 nicklas 552
7604 25 Feb 19 nicklas 553   
7604 25 Feb 19 nicklas 554   /*
7604 25 Feb 19 nicklas 555     Makes sure all checkboxes are in a consistent state with each other.
7604 25 Feb 19 nicklas 556   */
7604 25 Feb 19 nicklas 557   plugins.ensureImpliedPermissions = function(checked)
7604 25 Feb 19 nicklas 558   {
7604 25 Feb 19 nicklas 559     var frm = document.forms['plugin'];
7604 25 Feb 19 nicklas 560     
7604 25 Feb 19 nicklas 561     // Grant permissions
7604 25 Feb 19 nicklas 562     if (checked)
7604 25 Feb 19 nicklas 563     {
7604 25 Feb 19 nicklas 564       frm['grant_write'].checked = (frm['grant_write'].checked || frm['grant_delete'].checked || frm['grant_set_owner'].checked || frm['grant_set_permission'].checked);
7604 25 Feb 19 nicklas 565       frm['grant_restricted_write'].checked = (frm['grant_restricted_write'].checked || frm['grant_write'].checked);
7604 25 Feb 19 nicklas 566       frm['grant_use'].checked = (frm['grant_use'].checked || frm['grant_write'].checked);
7604 25 Feb 19 nicklas 567       frm['grant_read'].checked = (frm['grant_read'].checked || frm['grant_use'].checked || frm['grant_restricted_write'].checked);
7604 25 Feb 19 nicklas 568     }
7604 25 Feb 19 nicklas 569     else
7604 25 Feb 19 nicklas 570     {
7604 25 Feb 19 nicklas 571       frm['grant_use'].checked = (frm['grant_use'].checked && frm['grant_read'].checked);
7604 25 Feb 19 nicklas 572       frm['grant_restricted_write'].checked = (frm['grant_restricted_write'].checked && frm['grant_read'].checked);
7604 25 Feb 19 nicklas 573       frm['grant_write'].checked = (frm['grant_write'].checked && frm['grant_use'].checked && frm['grant_restricted_write'].checked);
7604 25 Feb 19 nicklas 574       frm['grant_delete'].checked = (frm['grant_delete'].checked && frm['grant_write'].checked);
7604 25 Feb 19 nicklas 575       frm['grant_set_owner'].checked = (frm['grant_set_owner'].checked && frm['grant_write'].checked);
7604 25 Feb 19 nicklas 576       frm['grant_set_permission'].checked = (frm['grant_set_permission'].checked && frm['grant_write'].checked);
7604 25 Feb 19 nicklas 577     }
7604 25 Feb 19 nicklas 578     
7604 25 Feb 19 nicklas 579     // Deny permissions
7604 25 Feb 19 nicklas 580     frm['deny_create'].disabled = frm['grant_create'].disabled || frm['grant_create'].checked;
7604 25 Feb 19 nicklas 581     frm['deny_read'].disabled =frm['grant_read'].disabled || frm['grant_read'].checked;
7604 25 Feb 19 nicklas 582     frm['deny_use'].disabled = frm['grant_use'].disabled || frm['grant_use'].checked;
7604 25 Feb 19 nicklas 583     frm['deny_restricted_write'].disabled = frm['grant_restricted_write'].disabled || frm['grant_restricted_write'].checked;
7604 25 Feb 19 nicklas 584     frm['deny_write'].disabled = frm['grant_write'].disabled || frm['grant_write'].checked;
7604 25 Feb 19 nicklas 585     frm['deny_delete'].disabled = frm['grant_delete'].disabled || frm['grant_delete'].checked;
7604 25 Feb 19 nicklas 586     frm['deny_set_owner'].disabled = frm['grant_set_owner'].disabled || frm['grant_set_owner'].checked;
7604 25 Feb 19 nicklas 587     frm['deny_set_permission'].disabled = frm['grant_set_permission'].disabled || frm['grant_set_permission'].checked;
7604 25 Feb 19 nicklas 588     if (checked)
7604 25 Feb 19 nicklas 589     {
7604 25 Feb 19 nicklas 590       if (!frm['deny_use'].disabled) frm['deny_use'].checked = frm['deny_use'].checked || frm['deny_read'].checked;
7604 25 Feb 19 nicklas 591       if (!frm['deny_restricted_write'].disabled) frm['deny_restricted_write'].checked = frm['deny_restricted_write'].checked || frm['deny_read'].checked;
7604 25 Feb 19 nicklas 592       if (!frm['deny_write'].disabled) frm['deny_write'].checked = frm['deny_write'].checked || frm['deny_use'].checked || frm['deny_restricted_write'].checked;
7604 25 Feb 19 nicklas 593       if (!frm['deny_delete'].disabled) frm['deny_delete'].checked = frm['deny_delete'].checked || frm['deny_write'].checked;
7604 25 Feb 19 nicklas 594       if (!frm['deny_set_owner'].disabled) frm['deny_set_owner'].checked = frm['deny_set_owner'].checked || frm['deny_write'].checked;
7604 25 Feb 19 nicklas 595       if (!frm['deny_set_permission'].disabled) frm['deny_set_permission'].checked = frm['deny_set_permission'].checked || frm['deny_write'].checked;
7604 25 Feb 19 nicklas 596     }
7604 25 Feb 19 nicklas 597     else
7604 25 Feb 19 nicklas 598     {
7604 25 Feb 19 nicklas 599       if (!frm['deny_write'].disabled) frm['deny_write'].checked = frm['deny_write'].checked && !((!frm['deny_delete'].checked && !frm['deny_delete'].disabled) || (!frm['deny_set_owner'].checked && !frm['deny_set_owner'].disabled) || (!frm['deny_set_permission'].checked && !frm['deny_set_permission'].disabled));
7604 25 Feb 19 nicklas 600       if (!frm['deny_restricted_write'].disabled) frm['deny_restricted_write'].checked = frm['deny_restricted_write'].checked && frm['deny_write'].checked;
7604 25 Feb 19 nicklas 601       if (!frm['deny_use'].disabled) frm['deny_use'].checked = frm['deny_use'].checked && frm['deny_write'].checked;
7604 25 Feb 19 nicklas 602       if (!frm['deny_read'].disabled) frm['deny_read'].checked = frm['deny_read'].checked && frm['deny_use'].checked && frm['deny_restricted_write'].checked;
7604 25 Feb 19 nicklas 603     }
7604 25 Feb 19 nicklas 604   }
7604 25 Feb 19 nicklas 605   
7604 25 Feb 19 nicklas 606   plugins.setRequestedPermissions = function()
7604 25 Feb 19 nicklas 607   {
7604 25 Feb 19 nicklas 608     var frm = document.forms['plugin'];
7604 25 Feb 19 nicklas 609     // Reset all existing permissions
7604 25 Feb 19 nicklas 610     for (var i = 0; i < frm.itemTypes.length; i++)
7604 25 Feb 19 nicklas 611     {
7604 25 Feb 19 nicklas 612       var itemType = frm.itemTypes[i].value;
7604 25 Feb 19 nicklas 613       if (itemType)
7604 25 Feb 19 nicklas 614       {
7604 25 Feb 19 nicklas 615         frm[itemType+'_granted'].value = 0;
7604 25 Feb 19 nicklas 616         frm[itemType+'_denied'].value = 255;
7604 25 Feb 19 nicklas 617       }
7604 25 Feb 19 nicklas 618     }
7604 25 Feb 19 nicklas 619     
7604 25 Feb 19 nicklas 620     // Set requested permissions
7604 25 Feb 19 nicklas 621     var requested = Data.json('page-data', 'requested-permissions');
7604 25 Feb 19 nicklas 622     for (var i = 0; i < requested.length; i++)
7604 25 Feb 19 nicklas 623     {
7604 25 Feb 19 nicklas 624       var rp = requested[i];
7604 25 Feb 19 nicklas 625       var itemType = rp.itemType;
7604 25 Feb 19 nicklas 626       frm[itemType+'_granted'].value = rp.granted;
7604 25 Feb 19 nicklas 627       frm[itemType+'_denied'].value = rp.denied;
7604 25 Feb 19 nicklas 628     }
7604 25 Feb 19 nicklas 629
7604 25 Feb 19 nicklas 630     // Update the list
7604 25 Feb 19 nicklas 631     plugins.initPermissionLetters();
7604 25 Feb 19 nicklas 632   }
7604 25 Feb 19 nicklas 633   
7604 25 Feb 19 nicklas 634   return plugins;
7604 25 Feb 19 nicklas 635 }();
7604 25 Feb 19 nicklas 636
7604 25 Feb 19 nicklas 637 Doc.addElementInitializer(Plugins.initElements);
7604 25 Feb 19 nicklas 638 Doc.onLoad(Plugins.initPage);