Files
Mozilla/mozilla/mailnews/base/prefs/resources/content/am-server.js
alecf%netscape.com 689bc6faad unloading stuff from my tree (no bug, but I said I would do this)
speed up Account Manager for beta1 by removing excess IFRAMEs and decks.
now load each page on demand, as well show individual server prefs instead of grouping them all together.
r=putterman


git-svn-id: svn://10.0.0.236/trunk@60516 18797224-902f-48f8-a5cc-f745e15eee43
2000-02-11 22:23:49 +00:00

182 lines
5.5 KiB
JavaScript

/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
* 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-1999 Netscape Communications Corporation. All
* Rights Reserved.
*/
function onInit() {
initServerType();
}
function onPreInit(account, accountValues)
{
var type = parent.getAccountValue(account, accountValues, "server", "type");
hideShowControls(type);
}
function initServerType() {
var serverType = document.getElementById("server.type").value;
var verboseName;
var index;
if (serverType == "pop3") {
verboseName = "POP Mail Server";
index = 0;
} else if (serverType == "imap") {
verboseName = "IMAP Mail Server";
index = 1;
} else if (serverType == "nntp") {
verboseName = "Newsgroup server (NNTP)";
index = 2;
} else if (serverType == "none") {
verboseName = "Local Mail store";
index = 3;
}
// if (index != undefined) {
// var deck = document.getElementById("serverdeck");
// deck.setAttribute("index", index);
// }
var hostname = document.getElementById("server.hostName").value;
var username = document.getElementById("server.username").value;
setDivText("servertype.verbose", verboseName);
setDivText("servername.verbose", hostname);
setDivText("username.verbose", username);
}
function hideShowControls(serverType)
{
var controls = document.controls;
var len = controls.length;
for (var i=0; i<len; i++) {
var control = controls[i];
var controlName = control.name;
if (!controlName) continue;
var controlNameSplit = controlName.split(".");
if (controlNameSplit.length < 2) continue;
var controlType = controlNameSplit[0];
// skip generic server/identity things
if (controlType == "server" ||
controlType == "identity") continue;
// we only deal with controls in <html:div>s
var div = getEnclosingDiv(control);
if (!div) continue;
// hide unsupported server type
if (controlType == serverType)
div.style.display = "block";
else
div.style.display = "none";
}
var serverPrefContainer = document.getElementById("serverPrefContainer");
if (serverPrefContainer)
serverPrefContainer.style.display = "block";
}
function setDivText(divname, value) {
var div = document.getElementById(divname);
if (!div) return;
if (div.firstChild)
div.removeChild(div.firstChild);
div.appendChild(document.createTextNode(value));
}
function openImapAdvanced()
{
dump("openImapAdvanced()\n");
var imapServer = getImapServer();
dump("Opening dialog..\n");
window.openDialog("chrome://messenger/content/am-imap-advanced.xul",
"_blank",
"chrome,modal", imapServer);
saveServerLocally(imapServer);
}
function getImapServer() {
var imapServer = new Array;
var controls = document.controls;
// boolean prefs, need to do special convertion
imapServer.dualUseFolders = (controls["imap.dualUseFolders"].value == "true" ? true : false);
imapServer.usingSubscription = (controls["imap.usingSubscription"].value == "true" ? true : false);
// string prefs
imapServer.personalNamespace = controls["imap.personalNamespace"].value;
imapServer.publicNamespace = controls["imap.publicNamespace"].value;
imapServer.serverDirectory = controls["imap.serverDirectory"].value;
imapServer.otherUsersNamespace = controls["imap.otherUsersNamespace"].value;
return imapServer;
}
function saveServerLocally(imapServer)
{
var controls = document.controls;
// boolean prefs, JS does the conversion for us
controls["imap.dualUseFolders"].value = imapServer.dualUseFolders;
controls["imap.usingSubscription"].value = imapServer.usingSubscription;
// string prefs
controls["imap.personalNamespace"].value = imapServer.personalNamespace;
controls["imap.publicNamespace"].value = imapServer.publicNamespace;
controls["imap.serverDirectory"].value = imapServer.serverDirectory;
controls["imap.otherUsersNamespace"].value = imapServer.otherUsersNamespace;
}
function getEnclosingDiv(startNode) {
var parent = startNode.parentNode;
var div;
while (parent && parent != document) {
if (parent.tagName.toLowerCase() == "div") {
var isContainer =
(parent.getAttribute("iscontrolcontainer") == "true");
// remember the FIRST div we encounter, or the first
// controlcontainer
if (!div || isContainer)
div=parent;
// break out with a controlcontainer
if (isContainer)
break;
}
parent = parent.parentNode;
}
return div;
}