From ee9eabd6206523149c41f334cc54a9e9a0ee99ba Mon Sep 17 00:00:00 2001 From: "sford3%swbell.net" Date: Mon, 20 Mar 2000 23:57:42 +0000 Subject: [PATCH] Prepatory work for reorganizing wallet --- .../resources/content/CookieViewer.js | 502 +++++++++++++++ .../resources/content/CookieViewer.xul | 175 +++++ .../resources/locale/en-US/CookieViewer.dtd | 33 + .../locale/en-US/CookieViewer.properties | 28 + .../resources/skin/CookieViewer.css | 91 +++ .../cookieviewer/resources/skin/wallet.css | 1 + .../editor/resources/content/WalletEditor.js | 601 ++++++++++++++++++ .../editor/resources/content/WalletEditor.xul | 103 +++ .../resources/locale/en-US/WalletEditor.dtd | 7 + .../locale/en-US/WalletEditor.properties | 23 + .../editor/resources/skin/WalletEditor.css | 91 +++ .../wallet/editor/resources/skin/wallet.css | 1 + .../permissions/content/cookieViewer.js | 502 +++++++++++++++ .../permissions/content/cookieViewer.xul | 175 +++++ .../permissions/locale/en-US/cookieViewer.dtd | 33 + .../locale/en-US/cookieViewer.properties | 28 + 16 files changed, 2394 insertions(+) create mode 100644 extensions/wallet/cookieviewer/resources/content/CookieViewer.js create mode 100644 extensions/wallet/cookieviewer/resources/content/CookieViewer.xul create mode 100644 extensions/wallet/cookieviewer/resources/locale/en-US/CookieViewer.dtd create mode 100644 extensions/wallet/cookieviewer/resources/locale/en-US/CookieViewer.properties create mode 100644 extensions/wallet/cookieviewer/resources/skin/CookieViewer.css create mode 100644 extensions/wallet/cookieviewer/resources/skin/wallet.css create mode 100644 extensions/wallet/editor/resources/content/WalletEditor.js create mode 100644 extensions/wallet/editor/resources/content/WalletEditor.xul create mode 100644 extensions/wallet/editor/resources/locale/en-US/WalletEditor.dtd create mode 100644 extensions/wallet/editor/resources/locale/en-US/WalletEditor.properties create mode 100644 extensions/wallet/editor/resources/skin/WalletEditor.css create mode 100644 extensions/wallet/editor/resources/skin/wallet.css create mode 100644 xpfe/components/permissions/content/cookieViewer.js create mode 100644 xpfe/components/permissions/content/cookieViewer.xul create mode 100644 xpfe/components/permissions/locale/en-US/cookieViewer.dtd create mode 100644 xpfe/components/permissions/locale/en-US/cookieViewer.properties diff --git a/extensions/wallet/cookieviewer/resources/content/CookieViewer.js b/extensions/wallet/cookieviewer/resources/content/CookieViewer.js new file mode 100644 index 000000000000..cb208f1f9927 --- /dev/null +++ b/extensions/wallet/cookieviewer/resources/content/CookieViewer.js @@ -0,0 +1,502 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * The contents of this file are subject to the Netscape 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/NPL/ + * + * 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 Communicator client code, released March + * 31, 1998. + * + * 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): + * Ben Goodger + */ + +/* + * The cookieList is a sequence of items separated by the BREAK character. These + * items are: + * empty + * number for first cookie + * name for first cookie + * value for first cookie + * domain indicator ("Domain" or "Host") for first cookie + * domain or host name for first cookie + * path for first cookie + * secure indicator ("Yes" or "No") for first cookie + * expiration for first cookie + * with the eight items above repeated for each successive cookie + */ + +// global variables +var cookieviewer = null; // cookieviewer interface +var cookieList = []; // array of cookies (OLD STREAM) +var cookies = []; // array of cookeis (NEW OBJECT) +var permissionList = []; // array of permissions (OLD STREAM) +var permissions = []; // array of permissions (NEW OBJECT) +var imageList = []; // array of images (OLD STREAM) +var images = []; // array of images (NEW OBJECT) +var deleted_cookies = []; +var deleted_permissions = []; +var deleted_images = []; +var deleted_cookies_count = 0; +var deleted_permissions_count = 0; +var deleted_images_count = 0; +// for dealing with the interface: +var gone_c = ""; +var gone_p = ""; +var gone_i = ""; +// string bundle +var bundle = null; +// CHANGE THIS WHEN MOVING FILES - strings localization file! +var JS_STRINGS_FILE = "chrome://wallet/locale/CookieViewer.properties"; + +// function : ::Startup(); +// purpose : initialises the cookie viewer dialog +function Startup() +{ + // xpconnect to cookieviewer interface + cookieviewer = Components.classes["component://netscape/cookieviewer/cookieviewer-world"].createInstance(); + cookieviewer = cookieviewer.QueryInterface(Components.interfaces.nsICookieViewer); + // intialise string bundle for + bundle = srGetStrBundle(JS_STRINGS_FILE); + + // install imageblocker tab if instructed to do so by the "imageblocker.enabled" pref + try { + pref = Components.classes['component://netscape/preferences']; + pref = pref.getService(); + pref = pref.QueryInterface(Components.interfaces.nsIPref); + try { + if (pref.GetBoolPref("imageblocker.enabled")) { + var element; + element = document.getElementById("imagesTab"); + element.setAttribute("style","display: inline;" ); + element = document.getElementById("images"); + element.setAttribute("style","display: inline;" ); + } + } catch(e) { + } + } catch (ex) { + dump("failed to get prefs service!\n"); + pref = null; + } + + + loadCookies(); + loadPermissions(); + loadImages(); + doSetOKCancel(onOK, null); + window.sizeToContent(); +} + +/*** =================== COOKIES CODE =================== ***/ + +// function : ::CreateCookieList(); +// purpose : creates an array of cookie objects from the cookie stream +function CreateCookieList() +{ + count = 0; + for(i = 1; i < cookieList.length; i+=8) + { + cookies[count] = new Cookie(); + cookies[count].number = cookieList[i+0]; + cookies[count].name = cookieList[i+1]; + cookies[count].value = cookieList[i+2]; + cookies[count].domaintype = cookieList[i+3]; + cookies[count].domain = cookieList[i+4]; + cookies[count].path = cookieList[i+5]; + cookies[count].secure = cookieList[i+6]; + cookies[count].expire = cookieList[i+7]; + count++; + } +} + +// function : ::Cookie(); +// purpose : an home-brewed object that represents a individual cookie in the stream +function Cookie(number,name,value,domaintype,domain,path,secure,expire) +{ + this.number = ( number ) ? number : null; + this.name = ( name ) ? name : null; + this.value = ( value ) ? value : null; + this.domaintype = ( domaintype ) ? domaintype : null; + this.domain = ( domain ) ? domain : null; + this.path = ( path ) ? path : null; + this.secure = ( secure ) ? secure : null; + this.expire = ( expire ) ? expire : null; +} + + +// function : ::loadCookies(); +// purpose : loads the list of cookies into the cookie list treeview +function loadCookies() +{ + // get cookies into an array + list = cookieviewer.GetCookieValue(); + BREAK = list[0]; + cookieList = list.split(BREAK); + CreateCookieList(); // builds an object array from cookiestream + for(i = 0; i < cookies.length; i++) + { + var domain = cookies[i].domain; + if(domain.charAt(0) == ".") // get rid of the ugly dot on the start of some domains + domain = domain.substring(1,domain.length); + AddItem("cookielist", [domain,cookies[i].name], "tree_", cookies[i].number); + } + if (cookies.length == 0) { + document.getElementById("removeAllCookies").setAttribute("disabled","true"); + } +} + +// function : ::ViewSelectedCookie(); +// purpose : displays information about the selected cookie in the info fieldset +function ViewCookieSelected( e ) +{ + var cookie = null; + var cookietree = document.getElementById("cookietree"); + var selItemsMax = false; + if(cookietree.nodeName != "tree") + return false; + if(cookietree.selectedItems.length > 1) + selItemsMax = true; + if( cookietree.selectedItems.length ) + document.getElementById("removeCookies").removeAttribute("disabled","true"); + + if( ( e.type == "keypress" || e.type == "select" ) && e.target.selectedItems.length ) + cookie = cookietree.selectedItems[0]; + if( e.type == "click" ) + cookie = e.target.parentNode.parentNode; + + if( !cookie || cookie.getAttribute("id").indexOf("tree_") == -1) + return false; + var idx = parseInt(cookie.getAttribute("id").substring(5,cookie.getAttribute("id").length)); + for (x=0; x::DeleteCookieSelected(); +// purpose : deletes all the cookies that are selected +function DeleteCookieSelected() { + // delete selected item + deleted_cookies_count += document.getElementById("cookietree").selectedItems.length; + gone_c += DeleteItemSelected("cookietree", "tree_", "cookielist"); + // set fields + rows = ["ifl_name","ifl_value","ifl_domain","ifl_path","ifl_secure","ifl_expires"]; + for(k = 0; k < rows.length; k++) + { + var row = document.getElementById(rows[k]); + row.setAttribute("value",""); + } + if( !document.getElementById("cookietree").selectedItems.length ) { + if( !document.getElementById("removeCookies").disabled ) { + document.getElementById("removeCookies").setAttribute("disabled", "true") + } + } + if (deleted_cookies_count >= cookies.length) { + document.getElementById("removeAllCookies").setAttribute("disabled","true"); + } +} + +// function : ::DeleteAllCookies(); +// purpose : deletes all the cookies +function DeleteAllCookies() { + // delete selected item + gone_c += DeleteAllItems(cookies.length, "tree_", "cookielist"); + // set fields + rows = ["ifl_name","ifl_value","ifl_domain","ifl_path","ifl_secure","ifl_expires"]; + for(k = 0; k < rows.length; k++) + { + var row = document.getElementById(rows[k]); + row.setAttribute("value",""); + } + if( !document.getElementById("removeCookies").disabled ) { + document.getElementById("removeCookies").setAttribute("disabled", "true") + } + document.getElementById("removeAllCookies").setAttribute("disabled","true"); +} + +// keypress pass-thru +function HandleKeyPress( e ) +{ + switch ( e.which ) + { + case 13: // enter + case 32: // spacebar + ViewCookieSelected( e ); + break; + case 46: // delete + DeleteCookieSelected(); + break; + default: + break; + } +} + +// will restore deleted cookies when I get around to filling it in. +function RestoreCookies() +{ + // todo +} + +/*** =================== PERMISSIONS CODE =================== ***/ + +// function : ::CreatePermissionList(); +// purpose : creates an array of permission objects from the permission stream +function CreatePermissionList() +{ + count = 0; + for(i = 1; i < permissionList.length; i+=2) + { + permissions[count] = new Permission(); + permissions[count].number = permissionList[i]; + permStr = permissionList[i+1]; + permissions[count].type = permStr.substring(0,1); + permissions[count].domain = permStr.substring(1,permStr.length); + count++; + } +} + +// function : ::Permission(); +// purpose : an home-brewed object that represents a individual permission in the stream +function Permission(number,type,domain) +{ + this.number = (number) ? number : null; + this.type = (type) ? type : null; + this.domain = (domain) ? domain : null; +} + +// function : ::loadPermissions(); +// purpose : loads the list of permissions into the permission list treeview +function loadPermissions() +{ + // get permissions into an array + list = cookieviewer.GetPermissionValue(0); + BREAK = list[0]; + permissionList = list.split(BREAK); + CreatePermissionList(); // builds an object array from permissionstream + for(i = 0; i < permissions.length; i++) + { + var domain = permissions[i].domain; + if(domain.charAt(0) == ".") // get rid of the ugly dot on the start of some domains + domain = domain.substring(1,domain.length); + if(permissions[i].type == "+") + contentStr = bundle.GetStringFromName("can"); + else if(permissions[i].type == "-") + contentStr = bundle.GetStringFromName("cannot"); + AddItem("permissionslist",[domain,contentStr],"permtree_",permissions[i].number) + } + if (permissions.length == 0) { + document.getElementById("removeAllPermissions").setAttribute("disabled","true"); + } +} + +function ViewPermissionSelected() +{ + var permissiontree = document.getElementById("permissionstree"); + if( permissiontree.selectedItems.length ) + document.getElementById("removePermissions").removeAttribute("disabled","true"); +} + +function DeletePermissionSelected() +{ + deleted_permissions_count += document.getElementById("permissionstree").selectedItems.length; + gone_p += DeleteItemSelected('permissionstree', 'permtree_', 'permissionslist'); + if( !document.getElementById("permissionstree").selectedItems.length ) { + if( !document.getElementById("removePermissions").disabled ) { + document.getElementById("removePermissions").setAttribute("disabled", "true") + } + } + if (deleted_permissions_count >= permissions.length) { + document.getElementById("removeAllPermissions").setAttribute("disabled","true"); + } +} + +function DeleteAllPermissions() { + // delete selected item + gone_p += DeleteAllItems(permissions.length, "permtree_", "permissionlist"); + if( !document.getElementById("removePermissions").disabled ) { + document.getElementById("removePermissions").setAttribute("disabled", "true") + } + document.getElementById("removeAllPermissions").setAttribute("disabled","true"); +} + +/*** =================== IMAGES CODE =================== ***/ + +// function : ::CreateImageList(); +// purpose : creates an array of image objects from the image stream +function CreateImageList() +{ + count = 0; + for(i = 1; i < imageList.length; i+=2) + { + images[count] = new Image(); + images[count].number = imageList[i]; + imgStr = imageList[i+1]; + images[count].type = imgStr.substring(0,1); + images[count].domain = imgStr.substring(1,imgStr.length); + count++; + } +} + +// function : ::Image(); +// purpose : an home-brewed object that represents a individual image in the stream +function Image(number,type,domain) +{ + this.number = (number) ? number : null; + this.type = (type) ? type : null; + this.domain = (domain) ? domain : null; +} + +// function : ::loadImages(); +// purpose : loads the list of images into the image list treeview +function loadImages() +{ + // get images into an array + list = cookieviewer.GetPermissionValue(1); + BREAK = list[0]; + imageList = list.split(BREAK); + CreateImageList(); // builds an object array from imagestream + for(i = 0; i < images.length; i++) + { + var domain = images[i].domain; + if(images[i].type == "+") + contentStr = bundle.GetStringFromName("canImages"); + else if(images[i].type == "-") + contentStr = bundle.GetStringFromName("cannotImages"); + AddItem("imageslist",[domain,contentStr],"imgtree_",images[i].number) + } + if (images.length == 0) { + document.getElementById("removeAllImages").setAttribute("disabled","true"); + } +} + +function ViewImageSelected() +{ + var imagetree = document.getElementById("imagestree"); + if( imagetree.selectedItems.length ) + document.getElementById("removeImages").removeAttribute("disabled","true"); +} + +function DeleteImageSelected() +{ + deleted_images_count += document.getElementById("imagestree").selectedItems.length; + gone_i += DeleteItemSelected('imagestree', 'imgtree_', 'imageslist'); + if( !document.getElementById("imagestree").selectedItems.length ) { + if( !document.getElementById("removeImages").disabled ) { + document.getElementById("removeImages").setAttribute("disabled", "true") + } + } + if (deleted_images_count >= images.length) { + document.getElementById("removeAllImages").setAttribute("disabled","true"); + } +} + +function DeleteAllImages() { + // delete selected item + gone_i += DeleteAllItems(images.length, "imgtree_", "imageslist"); + if( !document.getElementById("removeImages").disabled ) { + document.getElementById("removeImages").setAttribute("disabled", "true") + } + document.getElementById("removeAllImages").setAttribute("disabled","true"); +} + +/*** =================== GENERAL CODE =================== ***/ + +// function : ::doOKButton(); +// purpose : saves the changed settings and closes the dialog. +function onOK(){ + var result = "|goneC|" + gone_c + "|goneP|" + gone_p + "|goneI|" + gone_i+ "|"; + cookieviewer.SetValue(result, window); + return true; +} + +/*** =================== TREE MANAGEMENT CODE =================== ***/ + +// function : ::AddItem(); +// purpose : utility function for adding items to a tree. +function AddItem(children,cells,prefix,idfier) +{ + var kids = document.getElementById(children); + var item = document.createElement("treeitem"); + var row = document.createElement("treerow"); + for(var i = 0; i < cells.length; i++) + { + var cell = document.createElement("treecell"); + cell.setAttribute("class", "propertylist"); + cell.setAttribute("value", cells[i]) + row.appendChild(cell); + } + item.appendChild(row); + item.setAttribute("id",prefix + idfier); + kids.appendChild(item); +} + +// function : ::DeleteItemSelected(); +// purpose : deletes all the signons that are selected +function DeleteItemSelected(tree, prefix, kids) { + var delnarray = []; + var rv = ""; + var cookietree = document.getElementById(tree); + selitems = cookietree.selectedItems; + for(var i = 0; i < selitems.length; i++) + { + delnarray[i] = document.getElementById(selitems[i].getAttribute("id")); + var itemid = parseInt(selitems[i].getAttribute("id").substring(prefix.length,selitems[i].getAttribute("id").length)); + rv += (itemid + ","); + } + for(var i = 0; i < delnarray.length; i++) + { + document.getElementById(kids).removeChild(delnarray[i]); + } + return rv; +} + +// function : ::DeleteAllItems(); +// purpose : deletes all the items +function DeleteAllItems(length, prefix, kids) { + var delnarray = []; + var rv = ""; + for(var i = 0; i < length; i++) + { + if (document.getElementById(prefix+i) != null) { + document.getElementById(kids).removeChild(document.getElementById(prefix+i)); + rv += (i + ","); + } + } + + return rv; +} diff --git a/extensions/wallet/cookieviewer/resources/content/CookieViewer.xul b/extensions/wallet/cookieviewer/resources/content/CookieViewer.xul new file mode 100644 index 000000000000..c33c363f84cc --- /dev/null +++ b/extensions/wallet/cookieviewer/resources/content/CookieViewer.xul @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + &div.cookiesonsystem.label; + + + + + + + + + + + + + + + &treehead.infoselected.label; + + + + + &props.name.label; + + + + &props.value.label; + + + + &props.domain.label; + + + + &props.path.label; + + + + &props.secure.label; + + + + &props.expires.label; + + + + + + + + + + + + + + + &div.bannedservers.label; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/wallet/cookieviewer/resources/locale/en-US/CookieViewer.dtd b/extensions/wallet/cookieviewer/resources/locale/en-US/CookieViewer.dtd new file mode 100644 index 000000000000..d0e24dde02c5 --- /dev/null +++ b/extensions/wallet/cookieviewer/resources/locale/en-US/CookieViewer.dtd @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/wallet/cookieviewer/resources/locale/en-US/CookieViewer.properties b/extensions/wallet/cookieviewer/resources/locale/en-US/CookieViewer.properties new file mode 100644 index 000000000000..e1c10cc7bc2f --- /dev/null +++ b/extensions/wallet/cookieviewer/resources/locale/en-US/CookieViewer.properties @@ -0,0 +1,28 @@ +# The contents of this file are subject to the Netscape 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/NPL/ +# +# 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): +# Ben Goodger + +# note this section of the code may require some tinkering in other languages =( +# format in dialog: site [can/cannot] set cookies +can=site can set cookies +cannot=site cannot set cookies +canImages=site can load images +cannotImages=site cannot load images +domain=Domain for which this cookie applies: +host=Server which set the cookie: \ No newline at end of file diff --git a/extensions/wallet/cookieviewer/resources/skin/CookieViewer.css b/extensions/wallet/cookieviewer/resources/skin/CookieViewer.css new file mode 100644 index 000000000000..6560d23a6c52 --- /dev/null +++ b/extensions/wallet/cookieviewer/resources/skin/CookieViewer.css @@ -0,0 +1,91 @@ +window { + background-color: #CCCCCC; +} + +box.tabpanel { + border: 1px outset #CCCCCC; + padding: 10px; +} + +tab { + padding-left: 10px; + padding-right: 10px; +} + +treehead > treerow > treecell { + border: 1px outset #CCCCCC; + padding-top: 1px; + padding-bottom: 1px; + padding-left: 5px; + padding-right: 5px; + background-color: #CCCCCC; + color: #000000; +} + +treechildren > treeitem > treerow > treecell { + border-right: 1px solid #CCCCCC; + border-bottom: 1px solid #CCCCCC; + color: inherit; + padding-left: 10px; + padding-top: 1px; + padding-bottom: 1px; +} + +treechildren > treeitem > treerow > treecell.fieldcell { + border-right: 1px solid #CCCCCC; + border-bottom: 1px solid #CCCCCC; + color: inherit; + padding: 0px; + margin: 0px; +} + + +treechildren > treeitem > treerow [selectedrow ~= false] { + background-color: white; + color: black; +} + +treechildren > treeitem > treerow [selectedrow ~= true] { + background-color: #336699; + color: white; +} + +tree#infotree treechildren > treeitem > treerow [selectedrow ~= false] { + background-color: white; + color: black; +} + +tree#infotree treechildren > treeitem > treerow [selectedrow ~= true] { + background-color: white; + color: black; +} + +tree { + border: 1px inset #CCCCCC; +} + +a { + color: #0000FF; + text-decoration: underline; +} + +a:hover { + color: #FF0000; + text-decoration: underline; +} + +tree treechildren > treeitem > treerow[selectedrow=true] > treecell > a:link { + color: #FFFFFF; +} + +tree treechildren > treeitem > treerow[selectedrow ~= true] > treecell > a:hover { + color: #FFFFFF; +} + +input.dispcell { + border: none; + background-color: #CCCCCC; + height: 12px; + font-family: tahoma; + font-size: 10px; +} diff --git a/extensions/wallet/cookieviewer/resources/skin/wallet.css b/extensions/wallet/cookieviewer/resources/skin/wallet.css new file mode 100644 index 000000000000..be8569d3549b --- /dev/null +++ b/extensions/wallet/cookieviewer/resources/skin/wallet.css @@ -0,0 +1 @@ +@import url(chrome://global/skin/); \ No newline at end of file diff --git a/extensions/wallet/editor/resources/content/WalletEditor.js b/extensions/wallet/editor/resources/content/WalletEditor.js new file mode 100644 index 000000000000..cf031e3353ff --- /dev/null +++ b/extensions/wallet/editor/resources/content/WalletEditor.js @@ -0,0 +1,601 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * The contents of this file are subject to the Netscape 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/NPL/ + * + * 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 Communicator client code, released March + * 31, 1998. + * + * 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): + */ + +/* universal global variables */ + +var walleteditor = null; // walleteditor interface +var walletList = []; // input stream +var bundle = null; // string bundle +var JS_STRINGS_FILE = "chrome://wallet/locale/WalletEditor.properties"; + +/* wallet-specific global variables */ + +var schemas = []; +var schemasLength; +var entries = []; +var entriesLength; +var strings = []; +var stringsLength; +var BREAK; + +/*** =================== ?? =================== ***/ + +function ViewEntriesFromXul(){ + ViewEntries(); +} +function ViewSynonymsFromXul(){ + ViewSynonyms(); +} + +/*** =================== STARTING AND STOPPING =================== ***/ + +/* initializes the wallet editor dialog */ +function Startup() +{ + walleteditor = Components.classes["component://netscape/walleteditor/walleteditor-world"].createInstance(); + walleteditor = walleteditor.QueryInterface(Components.interfaces.nsIWalletEditor); + + bundle = srGetStrBundle(JS_STRINGS_FILE); /* initialize string bundle */ + if (!FetchInput()) { + return; /* user failed to unlock the database */ + } + ViewSchema(); /* create the display of schemas */ + doSetOKCancel(onOK, null); /* register the onOK method */ + window.sizeToContent(); +} + +/* routine that executes when OK button is pressed */ +function onOK(){ + var i, j, k; + var output = "OK" + BREAK; + for (i=0; i entryToDelete) { + schemas[i]--; + } + } + + schemasLength--; + for (i=CurrentSchema(); i<=schemasLength; i++) { + schemas[i] = schemas[i+1]; + } +} + +/* low-level delete-entry routine */ +function DeleteEntry0() { + var i; + entryToDelete = schemas[CurrentSchema()]+CurrentEntry(); + while (entries[entryToDelete]+2 < entries[entryToDelete+1]-1) { + DeleteSynonym0(); + } + + if ((schemas[CurrentSchema()+1] - schemas[CurrentSchema()]) == 1) { + if(strings[entries[entryToDelete]+1] != "") { + deleteString(entries[entryToDelete]+1); + } + return; + } + + while(strings[entries[entryToDelete]] != "") { + deleteString(entries[entryToDelete]); + } + deleteString(entries[entryToDelete]); + + entriesLength--; + for (i=entryToDelete; i<=entriesLength; i++) { + entries[i] = entries[i+1]; + } + + for (i=0; i<=schemasLength; i++) { + if (schemas[i] > entryToDelete) { + schemas[i]--; + } + } +} + +/* low-level delete-synonym routine */ +function DeleteSynonym0() { + stringToDelete = entries[schemas[CurrentSchema()]+CurrentEntry()]+2+CurrentSynonym(); + deleteString(stringToDelete); +} + +/* low-level add-schema routine */ +function AddSchema0() { + var i; + var text = prompt(bundle.GetStringFromName("EnterNewSchema"), "" ); + if (text == "") { + return; + } + schemaIndex = 0; + while ((schemaIndexschemaIndex; i--) { + schemas[i] = schemas[i-1]+1; + } + + entryIndex = schemas[schemaIndex]; + entriesLength++; + for (i=entriesLength; i>entryIndex; i--) { + entries[i] = entries[i-1]; + } + + stringIndex = entries[entryIndex]; + if (stringIndex == stringsLength) { + stringIndex--; + } + + addString(stringIndex, text); + addString(stringIndex+1, ""); + schemas[schemaIndex] = entryIndex; + entries[entryIndex] = stringIndex; +} + +/* low-level add-entry routine */ +function AddEntry0() { + var i; + var text = prompt(bundle.GetStringFromName("EnterNewEntry"), "" ); + if (text == "") { + return; + } + stringIndex = entries[schemas[CurrentSchema()]+CurrentEntry()]; + if(strings[entries[schemas[CurrentSchema()]+CurrentEntry()]+1]=="") { + addString(entries[schemas[CurrentSchema()]+CurrentEntry()]+1, text); + return; + } + + addString(stringIndex, strings[entries[schemas[CurrentSchema()]]]); + addString(stringIndex+1, text); + addString(stringIndex+2, ""); + + entriesLength++; + for (i=entriesLength; i>schemas[CurrentSchema()]+CurrentEntry(); i--) { + entries[i] = entries[i-1]; + } + entries[schemas[CurrentSchema()]+CurrentEntry()] = stringIndex; + + for (i=CurrentSchema()+1; i<=schemasLength; i++) { + schemas[i]++; + } +} + +/* low-level add-synonym routine */ +function AddSynonym0() { + var text = prompt(bundle.GetStringFromName("EnterNewSynonym"), "" ); + if (text == "") { + return; + } + addString(entries[schemas[CurrentSchema()]+CurrentEntry()]+2, text); +} + +function deleteString(stringToDelete) { + var i; + stringsLength--; + for (i=stringToDelete; i stringToDelete) { + entries[i]--; + } + } +} + +function addString(stringToAdd, text) { + var i; + stringsLength++; + for (i=stringsLength; i>stringToAdd; i--) { + strings[i] = strings[i-1]; + } + strings[stringToAdd] = text; + for (i=0; i<=entriesLength; i++) { + if (entries[i] >= stringToAdd) { + entries[i]++; + } + } + +} + +/* high-level add-schema routine */ +function AddSchema() { + var button = document.getElementById("addSchema"); + if( button.getAttribute("disabled") == "true" ) { + return; + } + + AddSchema0(); + ViewSchema(); //?? otherwise schema list doesn't get redrawn +} + +/* high-level add-entry routine */ +function AddEntry() { + var button = document.getElementById("addEntry"); + if( button.getAttribute("disabled") == "true" ) { + return; + } + + AddEntry0(); + ViewEntries(); //?? otherwise entry list doesn't get redrawn +} + +/* high-level add-synonym routine */ +function AddSynonym() { + var button = document.getElementById("addSynonym"); + if( button.getAttribute("disabled") == "true" ) { + return; + } + + AddSynonym0(); + ViewSynonyms(); //?? otherwise synonym list doesn't get redrawn + ViewSynonyms(); //?? otherwise entry list doesn't get redrawn (??even needed twice) +} + +/* high-level delete-schema routine */ +function DeleteSchema() { + var button = document.getElementById("removeSchema"); + if( button.getAttribute("disabled") == "true" ) { + return; + } + + DeleteSchema0(); + ClearList("entrieslist"); + ClearList("synonymslist"); + DeleteItemSelected("schematree", "tree_", "schemalist"); + ViewSchema(); //?? otherwise schema list doesn't get redrawn +} + +/* high-level delete-entry routine */ +function DeleteEntry() { + var button = document.getElementById("removeEntry"); + if( button.getAttribute("disabled") == "true" ) { + return; + } + + DeleteEntry0(); + ClearList("synonymslist"); + DeleteItemSelected("entrytree", "tree_", "entrieslist"); + ViewEntries(); //?? otherwise entry list doesn't get redrawn +} + +/* high-level delete-synonym routine */ +function DeleteSynonym() { + var button = document.getElementById("removeSynonym"); + if( button.getAttribute("disabled") == "true" ) { + return; + } + + DeleteSynonym0(); + DeleteItemSelected("synonymtree", "tree_", "synonymslist"); + ViewSynonyms(); //?? otherwise entry list doesn't get redrawn +} + +/*** =================== DEBUGGING CODE =================== ***/ + +/* debugging routine to dump formatted strings */ +function DumpStrings() { + var i, j, k; + for (i=0; i>\n"); + for (j=schemas[i]; j>\n"); + for (k=entries[j]+2; k>\n"); + } + } + } + dump("\n"); +} + +/* debugging routine to dump raw strings */ +function DumpRawStrings() { + var i; + dump("Schemas follow\n"); + for (i=0; i 0) { + var i = selitems[0]; + document.getElementById(kids).removeChild + (document.getElementById(i.getAttribute("id"))); + } +} + +/* clear out a tree */ +function ClearList(kids) { + while (document.getElementById(kids).firstChild) { + document.getElementById(kids).removeChild(document.getElementById(kids).firstChild); + } +} \ No newline at end of file diff --git a/extensions/wallet/editor/resources/content/WalletEditor.xul b/extensions/wallet/editor/resources/content/WalletEditor.xul new file mode 100644 index 000000000000..c0656f3eae3c --- /dev/null +++ b/extensions/wallet/editor/resources/content/WalletEditor.xul @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + &div.walletdataonsystem.label; + + + + + + &treehead.schemaname.label; + + + + + + + + + + + + + + &treehead.entries.label; + + + + + + &treehead.synonyms.label; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/wallet/editor/resources/locale/en-US/WalletEditor.dtd b/extensions/wallet/editor/resources/locale/en-US/WalletEditor.dtd new file mode 100644 index 000000000000..3c0684e6efed --- /dev/null +++ b/extensions/wallet/editor/resources/locale/en-US/WalletEditor.dtd @@ -0,0 +1,7 @@ + + + + + + + diff --git a/extensions/wallet/editor/resources/locale/en-US/WalletEditor.properties b/extensions/wallet/editor/resources/locale/en-US/WalletEditor.properties new file mode 100644 index 000000000000..66eee57bd044 --- /dev/null +++ b/extensions/wallet/editor/resources/locale/en-US/WalletEditor.properties @@ -0,0 +1,23 @@ +# The contents of this file are subject to the Netscape 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/NPL/ +# +# 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): + + +EnterNewSchema=Enter a new field name +EnterNewEntry=Enter a new value for the field +EnterNewSynonym=Enter another value that means the same thing diff --git a/extensions/wallet/editor/resources/skin/WalletEditor.css b/extensions/wallet/editor/resources/skin/WalletEditor.css new file mode 100644 index 000000000000..6560d23a6c52 --- /dev/null +++ b/extensions/wallet/editor/resources/skin/WalletEditor.css @@ -0,0 +1,91 @@ +window { + background-color: #CCCCCC; +} + +box.tabpanel { + border: 1px outset #CCCCCC; + padding: 10px; +} + +tab { + padding-left: 10px; + padding-right: 10px; +} + +treehead > treerow > treecell { + border: 1px outset #CCCCCC; + padding-top: 1px; + padding-bottom: 1px; + padding-left: 5px; + padding-right: 5px; + background-color: #CCCCCC; + color: #000000; +} + +treechildren > treeitem > treerow > treecell { + border-right: 1px solid #CCCCCC; + border-bottom: 1px solid #CCCCCC; + color: inherit; + padding-left: 10px; + padding-top: 1px; + padding-bottom: 1px; +} + +treechildren > treeitem > treerow > treecell.fieldcell { + border-right: 1px solid #CCCCCC; + border-bottom: 1px solid #CCCCCC; + color: inherit; + padding: 0px; + margin: 0px; +} + + +treechildren > treeitem > treerow [selectedrow ~= false] { + background-color: white; + color: black; +} + +treechildren > treeitem > treerow [selectedrow ~= true] { + background-color: #336699; + color: white; +} + +tree#infotree treechildren > treeitem > treerow [selectedrow ~= false] { + background-color: white; + color: black; +} + +tree#infotree treechildren > treeitem > treerow [selectedrow ~= true] { + background-color: white; + color: black; +} + +tree { + border: 1px inset #CCCCCC; +} + +a { + color: #0000FF; + text-decoration: underline; +} + +a:hover { + color: #FF0000; + text-decoration: underline; +} + +tree treechildren > treeitem > treerow[selectedrow=true] > treecell > a:link { + color: #FFFFFF; +} + +tree treechildren > treeitem > treerow[selectedrow ~= true] > treecell > a:hover { + color: #FFFFFF; +} + +input.dispcell { + border: none; + background-color: #CCCCCC; + height: 12px; + font-family: tahoma; + font-size: 10px; +} diff --git a/extensions/wallet/editor/resources/skin/wallet.css b/extensions/wallet/editor/resources/skin/wallet.css new file mode 100644 index 000000000000..3f55d19e7a54 --- /dev/null +++ b/extensions/wallet/editor/resources/skin/wallet.css @@ -0,0 +1 @@ +@import(chrome://global/skin); diff --git a/xpfe/components/permissions/content/cookieViewer.js b/xpfe/components/permissions/content/cookieViewer.js new file mode 100644 index 000000000000..cb208f1f9927 --- /dev/null +++ b/xpfe/components/permissions/content/cookieViewer.js @@ -0,0 +1,502 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * The contents of this file are subject to the Netscape 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/NPL/ + * + * 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 Communicator client code, released March + * 31, 1998. + * + * 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): + * Ben Goodger + */ + +/* + * The cookieList is a sequence of items separated by the BREAK character. These + * items are: + * empty + * number for first cookie + * name for first cookie + * value for first cookie + * domain indicator ("Domain" or "Host") for first cookie + * domain or host name for first cookie + * path for first cookie + * secure indicator ("Yes" or "No") for first cookie + * expiration for first cookie + * with the eight items above repeated for each successive cookie + */ + +// global variables +var cookieviewer = null; // cookieviewer interface +var cookieList = []; // array of cookies (OLD STREAM) +var cookies = []; // array of cookeis (NEW OBJECT) +var permissionList = []; // array of permissions (OLD STREAM) +var permissions = []; // array of permissions (NEW OBJECT) +var imageList = []; // array of images (OLD STREAM) +var images = []; // array of images (NEW OBJECT) +var deleted_cookies = []; +var deleted_permissions = []; +var deleted_images = []; +var deleted_cookies_count = 0; +var deleted_permissions_count = 0; +var deleted_images_count = 0; +// for dealing with the interface: +var gone_c = ""; +var gone_p = ""; +var gone_i = ""; +// string bundle +var bundle = null; +// CHANGE THIS WHEN MOVING FILES - strings localization file! +var JS_STRINGS_FILE = "chrome://wallet/locale/CookieViewer.properties"; + +// function : ::Startup(); +// purpose : initialises the cookie viewer dialog +function Startup() +{ + // xpconnect to cookieviewer interface + cookieviewer = Components.classes["component://netscape/cookieviewer/cookieviewer-world"].createInstance(); + cookieviewer = cookieviewer.QueryInterface(Components.interfaces.nsICookieViewer); + // intialise string bundle for + bundle = srGetStrBundle(JS_STRINGS_FILE); + + // install imageblocker tab if instructed to do so by the "imageblocker.enabled" pref + try { + pref = Components.classes['component://netscape/preferences']; + pref = pref.getService(); + pref = pref.QueryInterface(Components.interfaces.nsIPref); + try { + if (pref.GetBoolPref("imageblocker.enabled")) { + var element; + element = document.getElementById("imagesTab"); + element.setAttribute("style","display: inline;" ); + element = document.getElementById("images"); + element.setAttribute("style","display: inline;" ); + } + } catch(e) { + } + } catch (ex) { + dump("failed to get prefs service!\n"); + pref = null; + } + + + loadCookies(); + loadPermissions(); + loadImages(); + doSetOKCancel(onOK, null); + window.sizeToContent(); +} + +/*** =================== COOKIES CODE =================== ***/ + +// function : ::CreateCookieList(); +// purpose : creates an array of cookie objects from the cookie stream +function CreateCookieList() +{ + count = 0; + for(i = 1; i < cookieList.length; i+=8) + { + cookies[count] = new Cookie(); + cookies[count].number = cookieList[i+0]; + cookies[count].name = cookieList[i+1]; + cookies[count].value = cookieList[i+2]; + cookies[count].domaintype = cookieList[i+3]; + cookies[count].domain = cookieList[i+4]; + cookies[count].path = cookieList[i+5]; + cookies[count].secure = cookieList[i+6]; + cookies[count].expire = cookieList[i+7]; + count++; + } +} + +// function : ::Cookie(); +// purpose : an home-brewed object that represents a individual cookie in the stream +function Cookie(number,name,value,domaintype,domain,path,secure,expire) +{ + this.number = ( number ) ? number : null; + this.name = ( name ) ? name : null; + this.value = ( value ) ? value : null; + this.domaintype = ( domaintype ) ? domaintype : null; + this.domain = ( domain ) ? domain : null; + this.path = ( path ) ? path : null; + this.secure = ( secure ) ? secure : null; + this.expire = ( expire ) ? expire : null; +} + + +// function : ::loadCookies(); +// purpose : loads the list of cookies into the cookie list treeview +function loadCookies() +{ + // get cookies into an array + list = cookieviewer.GetCookieValue(); + BREAK = list[0]; + cookieList = list.split(BREAK); + CreateCookieList(); // builds an object array from cookiestream + for(i = 0; i < cookies.length; i++) + { + var domain = cookies[i].domain; + if(domain.charAt(0) == ".") // get rid of the ugly dot on the start of some domains + domain = domain.substring(1,domain.length); + AddItem("cookielist", [domain,cookies[i].name], "tree_", cookies[i].number); + } + if (cookies.length == 0) { + document.getElementById("removeAllCookies").setAttribute("disabled","true"); + } +} + +// function : ::ViewSelectedCookie(); +// purpose : displays information about the selected cookie in the info fieldset +function ViewCookieSelected( e ) +{ + var cookie = null; + var cookietree = document.getElementById("cookietree"); + var selItemsMax = false; + if(cookietree.nodeName != "tree") + return false; + if(cookietree.selectedItems.length > 1) + selItemsMax = true; + if( cookietree.selectedItems.length ) + document.getElementById("removeCookies").removeAttribute("disabled","true"); + + if( ( e.type == "keypress" || e.type == "select" ) && e.target.selectedItems.length ) + cookie = cookietree.selectedItems[0]; + if( e.type == "click" ) + cookie = e.target.parentNode.parentNode; + + if( !cookie || cookie.getAttribute("id").indexOf("tree_") == -1) + return false; + var idx = parseInt(cookie.getAttribute("id").substring(5,cookie.getAttribute("id").length)); + for (x=0; x::DeleteCookieSelected(); +// purpose : deletes all the cookies that are selected +function DeleteCookieSelected() { + // delete selected item + deleted_cookies_count += document.getElementById("cookietree").selectedItems.length; + gone_c += DeleteItemSelected("cookietree", "tree_", "cookielist"); + // set fields + rows = ["ifl_name","ifl_value","ifl_domain","ifl_path","ifl_secure","ifl_expires"]; + for(k = 0; k < rows.length; k++) + { + var row = document.getElementById(rows[k]); + row.setAttribute("value",""); + } + if( !document.getElementById("cookietree").selectedItems.length ) { + if( !document.getElementById("removeCookies").disabled ) { + document.getElementById("removeCookies").setAttribute("disabled", "true") + } + } + if (deleted_cookies_count >= cookies.length) { + document.getElementById("removeAllCookies").setAttribute("disabled","true"); + } +} + +// function : ::DeleteAllCookies(); +// purpose : deletes all the cookies +function DeleteAllCookies() { + // delete selected item + gone_c += DeleteAllItems(cookies.length, "tree_", "cookielist"); + // set fields + rows = ["ifl_name","ifl_value","ifl_domain","ifl_path","ifl_secure","ifl_expires"]; + for(k = 0; k < rows.length; k++) + { + var row = document.getElementById(rows[k]); + row.setAttribute("value",""); + } + if( !document.getElementById("removeCookies").disabled ) { + document.getElementById("removeCookies").setAttribute("disabled", "true") + } + document.getElementById("removeAllCookies").setAttribute("disabled","true"); +} + +// keypress pass-thru +function HandleKeyPress( e ) +{ + switch ( e.which ) + { + case 13: // enter + case 32: // spacebar + ViewCookieSelected( e ); + break; + case 46: // delete + DeleteCookieSelected(); + break; + default: + break; + } +} + +// will restore deleted cookies when I get around to filling it in. +function RestoreCookies() +{ + // todo +} + +/*** =================== PERMISSIONS CODE =================== ***/ + +// function : ::CreatePermissionList(); +// purpose : creates an array of permission objects from the permission stream +function CreatePermissionList() +{ + count = 0; + for(i = 1; i < permissionList.length; i+=2) + { + permissions[count] = new Permission(); + permissions[count].number = permissionList[i]; + permStr = permissionList[i+1]; + permissions[count].type = permStr.substring(0,1); + permissions[count].domain = permStr.substring(1,permStr.length); + count++; + } +} + +// function : ::Permission(); +// purpose : an home-brewed object that represents a individual permission in the stream +function Permission(number,type,domain) +{ + this.number = (number) ? number : null; + this.type = (type) ? type : null; + this.domain = (domain) ? domain : null; +} + +// function : ::loadPermissions(); +// purpose : loads the list of permissions into the permission list treeview +function loadPermissions() +{ + // get permissions into an array + list = cookieviewer.GetPermissionValue(0); + BREAK = list[0]; + permissionList = list.split(BREAK); + CreatePermissionList(); // builds an object array from permissionstream + for(i = 0; i < permissions.length; i++) + { + var domain = permissions[i].domain; + if(domain.charAt(0) == ".") // get rid of the ugly dot on the start of some domains + domain = domain.substring(1,domain.length); + if(permissions[i].type == "+") + contentStr = bundle.GetStringFromName("can"); + else if(permissions[i].type == "-") + contentStr = bundle.GetStringFromName("cannot"); + AddItem("permissionslist",[domain,contentStr],"permtree_",permissions[i].number) + } + if (permissions.length == 0) { + document.getElementById("removeAllPermissions").setAttribute("disabled","true"); + } +} + +function ViewPermissionSelected() +{ + var permissiontree = document.getElementById("permissionstree"); + if( permissiontree.selectedItems.length ) + document.getElementById("removePermissions").removeAttribute("disabled","true"); +} + +function DeletePermissionSelected() +{ + deleted_permissions_count += document.getElementById("permissionstree").selectedItems.length; + gone_p += DeleteItemSelected('permissionstree', 'permtree_', 'permissionslist'); + if( !document.getElementById("permissionstree").selectedItems.length ) { + if( !document.getElementById("removePermissions").disabled ) { + document.getElementById("removePermissions").setAttribute("disabled", "true") + } + } + if (deleted_permissions_count >= permissions.length) { + document.getElementById("removeAllPermissions").setAttribute("disabled","true"); + } +} + +function DeleteAllPermissions() { + // delete selected item + gone_p += DeleteAllItems(permissions.length, "permtree_", "permissionlist"); + if( !document.getElementById("removePermissions").disabled ) { + document.getElementById("removePermissions").setAttribute("disabled", "true") + } + document.getElementById("removeAllPermissions").setAttribute("disabled","true"); +} + +/*** =================== IMAGES CODE =================== ***/ + +// function : ::CreateImageList(); +// purpose : creates an array of image objects from the image stream +function CreateImageList() +{ + count = 0; + for(i = 1; i < imageList.length; i+=2) + { + images[count] = new Image(); + images[count].number = imageList[i]; + imgStr = imageList[i+1]; + images[count].type = imgStr.substring(0,1); + images[count].domain = imgStr.substring(1,imgStr.length); + count++; + } +} + +// function : ::Image(); +// purpose : an home-brewed object that represents a individual image in the stream +function Image(number,type,domain) +{ + this.number = (number) ? number : null; + this.type = (type) ? type : null; + this.domain = (domain) ? domain : null; +} + +// function : ::loadImages(); +// purpose : loads the list of images into the image list treeview +function loadImages() +{ + // get images into an array + list = cookieviewer.GetPermissionValue(1); + BREAK = list[0]; + imageList = list.split(BREAK); + CreateImageList(); // builds an object array from imagestream + for(i = 0; i < images.length; i++) + { + var domain = images[i].domain; + if(images[i].type == "+") + contentStr = bundle.GetStringFromName("canImages"); + else if(images[i].type == "-") + contentStr = bundle.GetStringFromName("cannotImages"); + AddItem("imageslist",[domain,contentStr],"imgtree_",images[i].number) + } + if (images.length == 0) { + document.getElementById("removeAllImages").setAttribute("disabled","true"); + } +} + +function ViewImageSelected() +{ + var imagetree = document.getElementById("imagestree"); + if( imagetree.selectedItems.length ) + document.getElementById("removeImages").removeAttribute("disabled","true"); +} + +function DeleteImageSelected() +{ + deleted_images_count += document.getElementById("imagestree").selectedItems.length; + gone_i += DeleteItemSelected('imagestree', 'imgtree_', 'imageslist'); + if( !document.getElementById("imagestree").selectedItems.length ) { + if( !document.getElementById("removeImages").disabled ) { + document.getElementById("removeImages").setAttribute("disabled", "true") + } + } + if (deleted_images_count >= images.length) { + document.getElementById("removeAllImages").setAttribute("disabled","true"); + } +} + +function DeleteAllImages() { + // delete selected item + gone_i += DeleteAllItems(images.length, "imgtree_", "imageslist"); + if( !document.getElementById("removeImages").disabled ) { + document.getElementById("removeImages").setAttribute("disabled", "true") + } + document.getElementById("removeAllImages").setAttribute("disabled","true"); +} + +/*** =================== GENERAL CODE =================== ***/ + +// function : ::doOKButton(); +// purpose : saves the changed settings and closes the dialog. +function onOK(){ + var result = "|goneC|" + gone_c + "|goneP|" + gone_p + "|goneI|" + gone_i+ "|"; + cookieviewer.SetValue(result, window); + return true; +} + +/*** =================== TREE MANAGEMENT CODE =================== ***/ + +// function : ::AddItem(); +// purpose : utility function for adding items to a tree. +function AddItem(children,cells,prefix,idfier) +{ + var kids = document.getElementById(children); + var item = document.createElement("treeitem"); + var row = document.createElement("treerow"); + for(var i = 0; i < cells.length; i++) + { + var cell = document.createElement("treecell"); + cell.setAttribute("class", "propertylist"); + cell.setAttribute("value", cells[i]) + row.appendChild(cell); + } + item.appendChild(row); + item.setAttribute("id",prefix + idfier); + kids.appendChild(item); +} + +// function : ::DeleteItemSelected(); +// purpose : deletes all the signons that are selected +function DeleteItemSelected(tree, prefix, kids) { + var delnarray = []; + var rv = ""; + var cookietree = document.getElementById(tree); + selitems = cookietree.selectedItems; + for(var i = 0; i < selitems.length; i++) + { + delnarray[i] = document.getElementById(selitems[i].getAttribute("id")); + var itemid = parseInt(selitems[i].getAttribute("id").substring(prefix.length,selitems[i].getAttribute("id").length)); + rv += (itemid + ","); + } + for(var i = 0; i < delnarray.length; i++) + { + document.getElementById(kids).removeChild(delnarray[i]); + } + return rv; +} + +// function : ::DeleteAllItems(); +// purpose : deletes all the items +function DeleteAllItems(length, prefix, kids) { + var delnarray = []; + var rv = ""; + for(var i = 0; i < length; i++) + { + if (document.getElementById(prefix+i) != null) { + document.getElementById(kids).removeChild(document.getElementById(prefix+i)); + rv += (i + ","); + } + } + + return rv; +} diff --git a/xpfe/components/permissions/content/cookieViewer.xul b/xpfe/components/permissions/content/cookieViewer.xul new file mode 100644 index 000000000000..c33c363f84cc --- /dev/null +++ b/xpfe/components/permissions/content/cookieViewer.xul @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + &div.cookiesonsystem.label; + + + + + + + + + + + + + + + &treehead.infoselected.label; + + + + + &props.name.label; + + + + &props.value.label; + + + + &props.domain.label; + + + + &props.path.label; + + + + &props.secure.label; + + + + &props.expires.label; + + + + + + + + + + + + + + + &div.bannedservers.label; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xpfe/components/permissions/locale/en-US/cookieViewer.dtd b/xpfe/components/permissions/locale/en-US/cookieViewer.dtd new file mode 100644 index 000000000000..d0e24dde02c5 --- /dev/null +++ b/xpfe/components/permissions/locale/en-US/cookieViewer.dtd @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xpfe/components/permissions/locale/en-US/cookieViewer.properties b/xpfe/components/permissions/locale/en-US/cookieViewer.properties new file mode 100644 index 000000000000..e1c10cc7bc2f --- /dev/null +++ b/xpfe/components/permissions/locale/en-US/cookieViewer.properties @@ -0,0 +1,28 @@ +# The contents of this file are subject to the Netscape 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/NPL/ +# +# 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): +# Ben Goodger + +# note this section of the code may require some tinkering in other languages =( +# format in dialog: site [can/cannot] set cookies +can=site can set cookies +cannot=site cannot set cookies +canImages=site can load images +cannotImages=site cannot load images +domain=Domain for which this cookie applies: +host=Server which set the cookie: \ No newline at end of file