Files
tubestation/browser/components/prefwindow/content/permissions.js
2003-08-24 01:01:46 +00:00

169 lines
5.2 KiB
JavaScript

# -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is mozilla.org code.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
# Blake Ross (original author)
#
var permissionsTree;
var permissions = [];
var deletedPermissions = [];
var permissionmanager = Components.classes["@mozilla.org/permissionmanager;1"].getService();
permissionmanager = permissionmanager.QueryInterface(Components.interfaces.nsIPermissionManager);
var permBundle;
const nsIPermissionManager = Components.interfaces.nsIPermissionManager;
function GetFields()
{
var dataObject = {};
dataObject.permissions = permissions;
dataObject.deletedPermissions = deletedPermissions;
return dataObject;
}
function SetFields(data)
{
var win;
if ('opener' in window && window.opener)
win = window.opener.top;
else
win = window.top;
if ('permissions' in data)
permissions = data.permissions;
if ('deletedPermissions' in data)
deletedPermissions = data.deletedPermissions;
}
var permissionsTreeView = {
rowCount : 0,
setTree : function(tree){},
getImageSrc : function(row,column) {},
getProgressMode : function(row,column) {},
getCellValue : function(row,column) {},
getCellText : function(row,column){
var rv="";
if (column=="siteCol") {
rv = permissions[row].rawHost;
} else if (column=="statusCol") {
rv = permissions[row].capability;
}
return rv;
},
isSeparator : function(index) {return false;},
isSorted: function() { return false; },
isContainer : function(index) {return false;},
cycleHeader : function(aColId, aElt) {},
getRowProperties : function(row,column,prop){},
getColumnProperties : function(column,columnElement,prop){},
getCellProperties : function(row,prop){}
};
function Permission(number, host, rawHost, type, capability, perm) {
this.number = number;
this.host = host;
this.rawHost = rawHost;
this.type = type;
this.capability = capability;
this.perm = perm;
}
function PermissionSelected() {
var selections = GetTreeSelections(permissionsTree);
document.getElementById("removePermission").disabled = (selections.length < 1);
}
function DeletePermission() {
DeleteSelectedItemFromTree(permissionsTree, permissionsTreeView,
permissions, deletedPermissions,
"removePermission", "removeAllPermissions");
}
function DeleteAllPermissions() {
DeleteAllFromTree(permissionsTree, permissionsTreeView,
permissions, deletedPermissions,
"removePermission", "removeAllPermissions");
}
function HandlePermissionKeyPress(e) {
if (e.keyCode == 46) {
DeletePermission();
}
}
var lastPermissionSortColumn = "";
var lastPermissionSortAscending = false;
function PermissionColumnSort(column, updateSelection) {
lastPermissionSortAscending =
SortTree(permissionsTree, permissionsTreeView, permissions,
column, lastPermissionSortColumn, lastPermissionSortAscending,
updateSelection);
lastPermissionSortColumn = column;
}
function loadPermissions() {
if (!permBundle)
permBundle = document.getElementById("permBundle");
if (!permissionsTree)
permissionsTree = document.getElementById("permissionsTree");
var win;
if ('opener' in window && window.opener)
win = window.opener.top;
else
win = window.top;
var dataObject = win.hPrefWindow.wsm.dataManager.pageData[window.location.href].userData;
// load permissions into a table
if (!('permissions' in dataObject)) {
var enumerator = permissionmanager.enumerator;
var count = 0;
while (enumerator.hasMoreElements()) {
var nextPermission = enumerator.getNext();
nextPermission = nextPermission.QueryInterface(Components.interfaces.nsIPermission);
if (nextPermission.type == permType) {
var host = nextPermission.host;
var capability = ( nextPermission.capability == nsIPermissionManager.ALLOW_ACTION ) ? true : false;
permissions[count] = new Permission(count++, host,
(host.charAt(0)==".") ? host.substring(1,host.length) : host,
nextPermission.type,
permBundle ? permBundle.getString(capability?"can":"cannot") : "", nextPermission.capability);
}
}
}
permissionsTreeView.rowCount = permissions.length;
// sort and display the table
permissionsTree.treeBoxObject.view = permissionsTreeView;
PermissionColumnSort('rawHost', false);
// disable "remove all" button if there are none
document.getElementById("removeAllPermissions").disabled = permissions.length == 0;
}