/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * 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 the Initial Developer are Copyright (C) 2000-2002 * the Initial Developer. All Rights Reserved. * * Contributor(s): * David Bienvenu * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ var gMsgFolder; var gServerTypeFolder = null; var gPreselectedFolderURI = null; var gParentMsgWindow = null; var gNameTextbox; var gOldName; var gOkButton; var gLockedPref = null; var gRebuildSummaryFileCallback; // services used var RDF; // corresponds to MSG_FOLDER_FLAG_OFFLINE const MSG_FOLDER_FLAG_OFFLINE = 0x8000000 // corresponds to MSG_FOLDER_FLAG_CHECK_NEW const MSG_FOLDER_FLAG_CHECK_NEW = 0x20000000 // corresponds to MSG_FOLDER_FLAG_INBOX const MSG_FOLDER_FLAG_INBOX = 0x1000 // The folderPropsSink is the class that gets notified of an imap folder's properties var gFolderPropsSink = { setFolderType: function(folderTypeString) { var typeLabel = document.getElementById("folderType.text"); if (typeLabel) { typeLabel.setAttribute("value",folderTypeString); } // get the element for the folder type label and set value on it. }, setFolderTypeDescription: function(folderDescription) { var folderTypeLabel = document.getElementById("folderDescription.text"); if (folderTypeLabel) folderTypeLabel.setAttribute("value", folderDescription); }, setFolderPermissions: function(folderPermissions) { var permissionsLabel = document.getElementById("folderPermissions.text"); var descTextNode = document.createTextNode(folderPermissions); permissionsLabel.appendChild(descTextNode); }, serverDoesntSupportACL : function() { var typeLabel = document.getElementById("folderTypeLabel"); if (typeLabel) typeLabel.setAttribute("hidden", "true"); var permissionsLabel = document.getElementById("permissionsDescLabel"); if (permissionsLabel) permissionsLabel.setAttribute("hidden", "true"); }, setQuotaStatus : function(folderQuotaStatus) { var quotaStatusLabel = document.getElementById("folderQuotaStatus"); if(quotaStatusLabel) quotaStatusLabel.setAttribute("value", folderQuotaStatus); }, showQuotaData : function(showData) { var quotaStatusLabel = document.getElementById("folderQuotaStatus"); var folderQuotaData = document.getElementById("folderQuotaData"); if(quotaStatusLabel && folderQuotaData) { quotaStatusLabel.hidden = showData; folderQuotaData.hidden = ! showData; } }, setQuotaData : function(root, usedKB, maxKB) { var quotaRoot = document.getElementById("quotaRoot"); if (quotaRoot) quotaRoot.setAttribute("value", '"' + root + '"'); var percentage = (maxKB != 0) ? Math.round(usedKB / maxKB * 100) : 0; var quotaPercentageBar = document.getElementById("quotaPercentageBar"); if (quotaPercentageBar) quotaPercentageBar.setAttribute("value", percentage); var bundle = document.getElementById("bundle_messenger"); if(bundle) { var usedFreeCaption = bundle.getFormattedString("quotaUsedFree", [usedKB, maxKB], 2); quotaCaption = document.getElementById("quotaUsedFree"); if(quotaCaption) quotaCaption.setAttribute("value", usedFreeCaption); var percentUsedCaption = bundle.getFormattedString("quotaPercentUsed", [percentage], 1); var percentUsed = document.getElementById("quotaPercentUsed"); if(percentUsed) percentUsed.setAttribute("value", percentUsedCaption); } } }; function doEnabling() { gOkButton.disabled = !gNameTextbox.value; } function folderPropsOKButton() { if (gMsgFolder) { // set charset attributes var folderCharsetList = document.getElementById("folderCharsetList"); gMsgFolder.charset = folderCharsetList.getAttribute("value"); gMsgFolder.charsetOverride = document.getElementById("folderCharsetOverride").checked; if(document.getElementById("offline.selectForOfflineFolder").checked || document.getElementById("offline.selectForOfflineNewsgroup").checked) gMsgFolder.setFlag(MSG_FOLDER_FLAG_OFFLINE); else gMsgFolder.clearFlag(MSG_FOLDER_FLAG_OFFLINE); if(document.getElementById("folderCheckForNewMessages").checked) gMsgFolder.setFlag(MSG_FOLDER_FLAG_CHECK_NEW); else gMsgFolder.clearFlag(MSG_FOLDER_FLAG_CHECK_NEW); var retentionSettings = saveCommonRetentionSettings(); retentionSettings.useServerDefaults = document.getElementById("retention.useDefault").checked; gMsgFolder.retentionSettings = retentionSettings; } try { // This throws an exception when an illegal folder name was entered. okCallback(gNameTextbox.value, gOldName, gPreselectedFolderURI); return true; } catch (e) { return false; } } function folderPropsOnLoad() { gOkButton = document.documentElement.getButton("accept"); RDF = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); // look in arguments[0] for parameters if (window.arguments && window.arguments[0]) { if ( window.arguments[0].title ) { document.title = window.arguments[0].title; } if ( window.arguments[0].okCallback ) { top.okCallback = window.arguments[0].okCallback; } if (window.arguments[0].rebuildSummaryCallback) gRebuildSummaryFileCallback = window.arguments[0].rebuildSummaryCallback; } // fill in folder name, based on what they selected in the folder pane if (window.arguments[0].preselectedURI) { try { gPreselectedFolderURI = window.arguments[0].preselectedURI; } catch (ex) { } } else { dump("passed null for preselectedURI, do nothing\n"); } if(window.arguments[0].name) { // Initialize name textbox with the given name and remember this // value so we can tell whether the folder needs to be renamed // when the dialog is accepted. gNameTextbox = document.getElementById("name"); gNameTextbox.value = gOldName = window.arguments[0].name; // name.setSelectionRange(0,-1); // name.focusTextField(); } gServerTypeFolder = window.arguments[0].serverType; if (window.arguments && window.arguments[0]) { if (window.arguments[0].msgWindow) { gParentMsgWindow = window.arguments[0].msgWindow; } } // this hex value come from nsMsgFolderFlags.h var folderResource = RDF.GetResource(gPreselectedFolderURI); if (folderResource) gMsgFolder = folderResource.QueryInterface(Components.interfaces.nsIMsgFolder); if (!gMsgFolder) dump("no gMsgFolder preselectfolder uri = "+gPreselectedFolderURI+'\n'); if (gMsgFolder) { if (gMsgFolder.canRename) gNameTextbox.removeAttribute("readonly"); if (gMsgFolder.flags & MSG_FOLDER_FLAG_OFFLINE) { if(gServerTypeFolder == "imap" || gServerTypeFolder == "pop3") document.getElementById("offline.selectForOfflineFolder").checked = true; if(gServerTypeFolder == "nntp") document.getElementById("offline.selectForOfflineNewsgroup").checked = true; } else { if(gServerTypeFolder == "imap" || gServerTypeFolder == "pop3") document.getElementById("offline.selectForOfflineFolder").checked = false; if(gServerTypeFolder == "nntp") document.getElementById("offline.selectForOfflineNewsgroup").checked = false; } // select the menu item var folderCharsetList = document.getElementById("folderCharsetList"); var elements = folderCharsetList.getElementsByAttribute("value", gMsgFolder.charset); folderCharsetList.selectedItem = elements[0]; // set override checkbox document.getElementById("folderCharsetOverride").checked = gMsgFolder.charsetOverride; // set check for new mail checkbox document.getElementById("folderCheckForNewMessages").checked = gMsgFolder.flags & MSG_FOLDER_FLAG_CHECK_NEW; } if (gServerTypeFolder == "imap") { var imapFolder = gMsgFolder.QueryInterface(Components.interfaces.nsIMsgImapMailFolder); if (imapFolder) imapFolder.fillInFolderProps(gFolderPropsSink); } var retentionSettings = gMsgFolder.retentionSettings; initCommonRetentionSettings(retentionSettings); document.getElementById("retention.useDefault").checked = retentionSettings.useServerDefaults; // select the initial tab if (window.arguments[0].tabID) { try { document.getElementById("folderPropTabBox").selectedTab = document.getElementById(window.arguments[0].tabID); } catch (ex) {} } hideShowControls(gServerTypeFolder); onCheckKeepMsg(); onUseDefaultRetentionSettings(); moveToAlertPosition(); } function hideShowControls(serverType) { var controls = document.getElementsByAttribute("hidable", "true"); var len = controls.length; for (var i=0; i