mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-27 19:07:31 +09:00
179 lines
6.6 KiB
JavaScript
179 lines
6.6 KiB
JavaScript
/* -*- 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);
|
|
}
|