Dactyloidae/mailnews/base/prefs/content/aw-incoming.js

179 lines
6.6 KiB
JavaScript
Raw Normal View History

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
Components.utils.import("resource:///modules/hostnameUtils.jsm");
var gOnMailServersPage;
var gOnNewsServerPage;
var gHideIncoming;
var gProtocolInfo = null;
function incomingPageValidate()
{
var canAdvance = true;
var hostName;
if (gOnMailServersPage) {
hostName = document.getElementById("incomingServer").value;
if (!gHideIncoming && !isLegalHostNameOrIP(cleanUpHostName(hostName)))
canAdvance = false;
}
if (gOnNewsServerPage) {
hostName = document.getElementById("newsServer").value;
if (!isLegalHostNameOrIP(cleanUpHostName(hostName)))
canAdvance = false;
}
if (canAdvance) {
var pageData = parent.GetPageData();
var serverType = parent.getCurrentServerType(pageData);
var username = document.getElementById("username").value;
if (gProtocolInfo && gProtocolInfo.requiresUsername && !username ||
parent.AccountExists(username, hostName, serverType))
canAdvance = false;
}
document.documentElement.canAdvance = canAdvance;
}
function incomingPageUnload()
{
var pageData = parent.GetPageData();
if (gOnMailServersPage) {
// If we have hidden the incoming server dialogs, we don't want
// to set the server to an empty value here
if (!gHideIncoming) {
var incomingServerName = document.getElementById("incomingServer");
setPageData(pageData, "server", "hostname", cleanUpHostName(incomingServerName.value));
}
var serverport = document.getElementById("serverPort").value;
setPageData(pageData, "server", "port", serverport);
var username = document.getElementById("username").value;
setPageData(pageData, "login", "username", username);
}
else if (gOnNewsServerPage) {
var newsServerName = document.getElementById("newsServer");
setPageData(pageData, "newsserver", "hostname", cleanUpHostName(newsServerName.value));
}
return true;
}
function incomingPageInit() {
gOnMailServersPage = (document.documentElement.currentPage.id == "incomingpage");
gOnNewsServerPage = (document.documentElement.currentPage.id == "newsserver");
if (gOnNewsServerPage)
{
var newsServer = document.getElementById("newsServer");
var pageData = parent.GetPageData();
try
{
newsServer.value = pageData.newsserver.hostname.value;
}
catch (ex){}
}
gHideIncoming = false;
if (gCurrentAccountData && gCurrentAccountData.wizardHideIncoming)
gHideIncoming = true;
var incomingServerbox = document.getElementById("incomingServerbox");
var serverTypeBox = document.getElementById("serverTypeBox");
if (incomingServerbox && serverTypeBox) {
if (gHideIncoming) {
incomingServerbox.setAttribute("hidden", "true");
serverTypeBox.setAttribute("hidden", "true");
}
else {
incomingServerbox.removeAttribute("hidden");
serverTypeBox.removeAttribute("hidden");
}
}
// Server type selection (pop3 or imap) is for mail accounts only
var pageData = parent.GetPageData();
var isMailAccount = pageData.accounttype.mailaccount.value;
var isOtherAccount = pageData.accounttype.otheraccount.value;
if (isMailAccount && !gHideIncoming) {
var serverTypeRadioGroup = document.getElementById("servertype");
/*
* Check to see if the radiogroup has any value. If there is no
* value, this must be the first time user visting this page in the
* account setup process. So, the default is set to pop3. If there
* is a value (it's used automatically), user has already visited
* page and server type selection is done. Once user visits the page,
* the server type value from then on will persist (whether the selection
* came from the default or the user action).
*/
if (!serverTypeRadioGroup.value) {
/*
* if server type was set to imap in isp data, then
* we preset the server type radio group accordingly,
* otherwise, use pop3 as the default.
*/
var serverTypeRadioItem = document.getElementById(pageData.server &&
pageData.server.servertype && pageData.server.servertype.value == "imap" ?
"imap" : "pop3");
serverTypeRadioGroup.selectedItem = serverTypeRadioItem; // Set pop3 server type as default selection
}
var leaveMessages = document.getElementById("leaveMessagesOnServer");
var deferStorage = document.getElementById("deferStorage");
setServerType();
setServerPrefs(leaveMessages);
setServerPrefs(deferStorage);
}
else if (isOtherAccount) {
document.getElementById("deferStorageBox").hidden = true;
}
if (pageData.server && pageData.server.hostname) {
var incomingServerTextBox = document.getElementById("incomingServer");
if (incomingServerTextBox && incomingServerTextBox.value == "")
incomingServerTextBox.value = pageData.server.hostname.value;
}
// pageData.server is not a real nsMsgIncomingServer so it does not have
// protocolInfo property implemented.
let type = parent.getCurrentServerType(pageData);
gProtocolInfo = Components.classes["@mozilla.org/messenger/protocol/info;1?type=" + type]
.getService(Components.interfaces.nsIMsgProtocolInfo);
var loginNameInput = document.getElementById("username");
if (loginNameInput.value == "") {
if (gProtocolInfo.requiresUsername) {
// since we require a username, use the uid from the email address
loginNameInput.value = parent.getUsernameFromEmail(pageData.identity.email.value, gCurrentAccountData &&
gCurrentAccountData.incomingServerUserNameRequiresDomain);
}
}
incomingPageValidate();
}
function setServerType()
{
var pageData = parent.GetPageData();
var serverType = document.getElementById("servertype").value;
var deferStorageBox = document.getElementById("deferStorageBox");
var leaveMessages = document.getElementById("leaveMsgsOnSrvrBox");
// pop3 110 (unsecure) 995 (SSL)
// imap 143 (unsecure) 993 (SSL)
var port = serverType == "pop3" ? 995 : 993;
document.getElementById("serverPort").value = port;
document.getElementById("defaultPortValue").value = port;
deferStorageBox.hidden = serverType == "imap";
leaveMessages.hidden = serverType == "imap";
setPageData(pageData, "server", "servertype", serverType);
setPageData(pageData, "server", "port", port);
incomingPageValidate();
}
function setServerPrefs(aThis)
{
setPageData(parent.GetPageData(), "server", aThis.id, aThis.checked);
}