mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-27 19:07:31 +09:00
Issue #1258 - Part 1: Import mailnews, ldap, and mork from comm-esr52.9.1
This commit is contained in:
parent
23e0d82436
commit
e400f4130a
1564 changed files with 510348 additions and 0 deletions
471
mailnews/base/prefs/content/am-copies.js
Normal file
471
mailnews/base/prefs/content/am-copies.js
Normal file
|
|
@ -0,0 +1,471 @@
|
|||
/* -*- Mode: Java; 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/MailUtils.js");
|
||||
|
||||
var gFccRadioElemChoice, gDraftsRadioElemChoice, gArchivesRadioElemChoice, gTmplRadioElemChoice;
|
||||
var gFccRadioElemChoiceLocked, gDraftsRadioElemChoiceLocked, gArchivesRadioElemChoiceLocked, gTmplRadioElemChoiceLocked;
|
||||
var gDefaultPickerMode = "1";
|
||||
|
||||
var gFccFolderWithDelim, gDraftsFolderWithDelim, gArchivesFolderWithDelim, gTemplatesFolderWithDelim;
|
||||
var gAccount;
|
||||
var gCurrentServerId;
|
||||
|
||||
function onPreInit(account, accountValues)
|
||||
{
|
||||
gAccount = account;
|
||||
var type = parent.getAccountValue(account, accountValues, "server", "type", null, false);
|
||||
hideShowControls(type);
|
||||
}
|
||||
|
||||
/*
|
||||
* Set the global radio element choices and initialize folder/account pickers.
|
||||
* Also, initialize other UI elements (cc, bcc, fcc picker controller checkboxes).
|
||||
*/
|
||||
function onInit(aPageId, aServerId)
|
||||
{
|
||||
gCurrentServerId = aServerId;
|
||||
onInitCopiesAndFolders();
|
||||
}
|
||||
|
||||
function onInitCopiesAndFolders()
|
||||
{
|
||||
SetGlobalRadioElemChoices();
|
||||
|
||||
SetFolderDisplay(gFccRadioElemChoice, gFccRadioElemChoiceLocked,
|
||||
"fcc",
|
||||
"msgFccAccountPicker",
|
||||
"identity.fccFolder",
|
||||
"msgFccFolderPicker");
|
||||
|
||||
SetFolderDisplay(gArchivesRadioElemChoice, gArchivesRadioElemChoiceLocked,
|
||||
"archive",
|
||||
"msgArchivesAccountPicker",
|
||||
"identity.archiveFolder",
|
||||
"msgArchivesFolderPicker");
|
||||
|
||||
SetFolderDisplay(gDraftsRadioElemChoice, gDraftsRadioElemChoiceLocked,
|
||||
"draft",
|
||||
"msgDraftsAccountPicker",
|
||||
"identity.draftFolder",
|
||||
"msgDraftsFolderPicker");
|
||||
|
||||
SetFolderDisplay(gTmplRadioElemChoice, gTmplRadioElemChoiceLocked,
|
||||
"tmpl",
|
||||
"msgStationeryAccountPicker",
|
||||
"identity.stationeryFolder",
|
||||
"msgStationeryFolderPicker");
|
||||
|
||||
setupCcTextbox(true);
|
||||
setupBccTextbox(true);
|
||||
setupFccItems();
|
||||
setupArchiveItems();
|
||||
|
||||
SetSpecialFolderNamesWithDelims();
|
||||
}
|
||||
|
||||
// Initialize the picker mode choices (account/folder picker) into global vars
|
||||
function SetGlobalRadioElemChoices()
|
||||
{
|
||||
var pickerModeElement = document.getElementById("identity.fccFolderPickerMode");
|
||||
gFccRadioElemChoice = pickerModeElement.getAttribute("value");
|
||||
gFccRadioElemChoiceLocked = pickerModeElement.getAttribute("disabled");
|
||||
if (!gFccRadioElemChoice) gFccRadioElemChoice = gDefaultPickerMode;
|
||||
|
||||
pickerModeElement = document.getElementById("identity.archivesFolderPickerMode");
|
||||
gArchivesRadioElemChoice = pickerModeElement.getAttribute("value");
|
||||
gArchivesRadioElemChoiceLocked = pickerModeElement.getAttribute("disabled");
|
||||
if (!gArchivesRadioElemChoice) gArchivesRadioElemChoice = gDefaultPickerMode;
|
||||
|
||||
pickerModeElement = document.getElementById("identity.draftsFolderPickerMode");
|
||||
gDraftsRadioElemChoice = pickerModeElement.getAttribute("value");
|
||||
gDraftsRadioElemChoiceLocked = pickerModeElement.getAttribute("disabled");
|
||||
if (!gDraftsRadioElemChoice) gDraftsRadioElemChoice = gDefaultPickerMode;
|
||||
|
||||
pickerModeElement = document.getElementById("identity.tmplFolderPickerMode");
|
||||
gTmplRadioElemChoice = pickerModeElement.getAttribute("value");
|
||||
gTmplRadioElemChoiceLocked = pickerModeElement.getAttribute("disabled");
|
||||
if (!gTmplRadioElemChoice) gTmplRadioElemChoice = gDefaultPickerMode;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set Account and Folder elements based on the values read from
|
||||
* preferences file. Default picker mode, if none specified at this stage, is
|
||||
* set to 1 i.e., Other picker displaying the folder value read from the
|
||||
* preferences file.
|
||||
*/
|
||||
function SetFolderDisplay(pickerMode, disableMode,
|
||||
radioElemPrefix,
|
||||
accountPickerId,
|
||||
folderPickedField,
|
||||
folderPickerId)
|
||||
{
|
||||
if (!pickerMode)
|
||||
pickerMode = gDefaultPickerMode;
|
||||
|
||||
var selectAccountRadioId = radioElemPrefix + "_selectAccount";
|
||||
var selectAccountRadioElem = document.getElementById(selectAccountRadioId);
|
||||
var selectFolderRadioId = radioElemPrefix + "_selectFolder";
|
||||
var selectFolderRadioElem = document.getElementById(selectFolderRadioId);
|
||||
var accountPicker = document.getElementById(accountPickerId);
|
||||
var folderPicker = document.getElementById(folderPickerId);
|
||||
var rg = selectAccountRadioElem.radioGroup;
|
||||
var folderPickedElement = document.getElementById(folderPickedField);
|
||||
var uri = folderPickedElement.getAttribute("value");
|
||||
// Get message folder from the given uri. Second argument (false) signifies
|
||||
// that there is no need to check for the existence of special folders as
|
||||
// these folders are created on demand at runtime in case of imap accounts.
|
||||
// For POP3 accounts, special folders are created at the account creation time.
|
||||
var msgFolder = MailUtils.getFolderForURI(uri, false);
|
||||
InitFolderDisplay(msgFolder.server.rootFolder, accountPicker);
|
||||
InitFolderDisplay(msgFolder, folderPicker);
|
||||
|
||||
switch (pickerMode)
|
||||
{
|
||||
case "0" :
|
||||
rg.selectedItem = selectAccountRadioElem;
|
||||
SetPickerEnabling(accountPickerId, folderPickerId);
|
||||
break;
|
||||
|
||||
case "1" :
|
||||
rg.selectedItem = selectFolderRadioElem;
|
||||
SetPickerEnabling(folderPickerId, accountPickerId);
|
||||
break;
|
||||
|
||||
default :
|
||||
dump("Error in setting initial folder display on pickers\n");
|
||||
break;
|
||||
}
|
||||
|
||||
// Check to see if we need to lock page elements. Disable radio buttons
|
||||
// and account/folder pickers when locked.
|
||||
if (disableMode) {
|
||||
selectAccountRadioElem.setAttribute("disabled","true");
|
||||
selectFolderRadioElem.setAttribute("disabled","true");
|
||||
accountPicker.setAttribute("disabled","true");
|
||||
folderPicker.setAttribute("disabled","true");
|
||||
}
|
||||
}
|
||||
|
||||
// Initialize the folder display based on prefs values
|
||||
function InitFolderDisplay(folder, folderPicker) {
|
||||
folderPicker.menupopup.selectFolder(folder);
|
||||
folderPicker.folder = folder;
|
||||
}
|
||||
|
||||
/**
|
||||
* Capture any menulist changes and update the folder property.
|
||||
*
|
||||
* @param aGroup the prefix for the menulist we're handling (e.g. "drafts")
|
||||
* @param aType "Account" for the account picker or "Folder" for the folder
|
||||
* picker
|
||||
* @param aEvent the event that we're responding to
|
||||
*/
|
||||
function noteSelectionChange(aGroup, aType, aEvent)
|
||||
{
|
||||
var checkedElem = document.getElementById(aGroup+"_select"+aType);
|
||||
var folder = aEvent.target._folder;
|
||||
var modeValue = checkedElem.value;
|
||||
var radioGroup = checkedElem.radioGroup.getAttribute("id");
|
||||
var picker;
|
||||
|
||||
switch (radioGroup) {
|
||||
case "doFcc" :
|
||||
gFccRadioElemChoice = modeValue;
|
||||
picker = document.getElementById("msgFcc"+aType+"Picker");
|
||||
break;
|
||||
|
||||
case "messageArchives" :
|
||||
gArchivesRadioElemChoice = modeValue;
|
||||
picker = document.getElementById("msgArchives"+aType+"Picker");
|
||||
updateArchiveHierarchyButton(folder);
|
||||
break;
|
||||
|
||||
case "messageDrafts" :
|
||||
gDraftsRadioElemChoice = modeValue;
|
||||
picker = document.getElementById("msgDrafts"+aType+"Picker");
|
||||
break;
|
||||
|
||||
case "messageTemplates" :
|
||||
gTmplRadioElemChoice = modeValue;
|
||||
picker = document.getElementById("msgStationery"+aType+"Picker");
|
||||
break;
|
||||
}
|
||||
|
||||
picker.folder = folder;
|
||||
picker.menupopup.selectFolder(folder);
|
||||
}
|
||||
|
||||
// Need to append special folders when account picker is selected.
|
||||
// Create a set of global special folder vars to be suffixed to the
|
||||
// server URI of the selected account.
|
||||
function SetSpecialFolderNamesWithDelims()
|
||||
{
|
||||
var folderDelim = "/";
|
||||
/* we use internal names known to everyone like "Sent", "Templates" and "Drafts" */
|
||||
|
||||
gFccFolderWithDelim = folderDelim + "Sent";
|
||||
gArchivesFolderWithDelim = folderDelim + "Archives";
|
||||
gDraftsFolderWithDelim = folderDelim + "Drafts";
|
||||
gTemplatesFolderWithDelim = folderDelim + "Templates";
|
||||
}
|
||||
|
||||
// Save all changes on this page
|
||||
function onSave()
|
||||
{
|
||||
onSaveCopiesAndFolders();
|
||||
}
|
||||
|
||||
function onSaveCopiesAndFolders()
|
||||
{
|
||||
SaveFolderSettings( gFccRadioElemChoice,
|
||||
"doFcc",
|
||||
gFccFolderWithDelim,
|
||||
"msgFccAccountPicker",
|
||||
"msgFccFolderPicker",
|
||||
"identity.fccFolder",
|
||||
"identity.fccFolderPickerMode" );
|
||||
|
||||
SaveFolderSettings( gArchivesRadioElemChoice,
|
||||
"messageArchives",
|
||||
gArchivesFolderWithDelim,
|
||||
"msgArchivesAccountPicker",
|
||||
"msgArchivesFolderPicker",
|
||||
"identity.archiveFolder",
|
||||
"identity.archivesFolderPickerMode" );
|
||||
|
||||
SaveFolderSettings( gDraftsRadioElemChoice,
|
||||
"messageDrafts",
|
||||
gDraftsFolderWithDelim,
|
||||
"msgDraftsAccountPicker",
|
||||
"msgDraftsFolderPicker",
|
||||
"identity.draftFolder",
|
||||
"identity.draftsFolderPickerMode" );
|
||||
|
||||
SaveFolderSettings( gTmplRadioElemChoice,
|
||||
"messageTemplates",
|
||||
gTemplatesFolderWithDelim,
|
||||
"msgStationeryAccountPicker",
|
||||
"msgStationeryFolderPicker",
|
||||
"identity.stationeryFolder",
|
||||
"identity.tmplFolderPickerMode" );
|
||||
}
|
||||
|
||||
// Save folder settings and radio element choices
|
||||
function SaveFolderSettings(radioElemChoice,
|
||||
radioGroupId,
|
||||
folderSuffix,
|
||||
accountPickerId,
|
||||
folderPickerId,
|
||||
folderElementId,
|
||||
folderPickerModeId)
|
||||
{
|
||||
var formElement = document.getElementById(folderElementId);
|
||||
var uri;
|
||||
|
||||
if (radioElemChoice == "0" ||
|
||||
!document.getElementById(folderPickerId).value) {
|
||||
// Default or revert to default if no folder chosen.
|
||||
radioElemChoice = "0";
|
||||
uri = document.getElementById(accountPickerId).folder.URI;
|
||||
if (uri) {
|
||||
// Create Folder URI.
|
||||
uri = uri + folderSuffix;
|
||||
}
|
||||
}
|
||||
else if (radioElemChoice == "1") {
|
||||
uri = document.getElementById(folderPickerId).folder.URI;
|
||||
}
|
||||
else {
|
||||
dump ("Error saving folder preferences.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
formElement.setAttribute("value", uri);
|
||||
|
||||
formElement = document.getElementById(folderPickerModeId);
|
||||
formElement.setAttribute("value", radioElemChoice);
|
||||
}
|
||||
|
||||
// Check the Fcc Self item and setup associated picker state
|
||||
function setupFccItems()
|
||||
{
|
||||
var broadcaster = document.getElementById("broadcaster_doFcc");
|
||||
|
||||
var checked = document.getElementById("identity.doFcc").checked;
|
||||
if (checked) {
|
||||
broadcaster.removeAttribute("disabled");
|
||||
switch (gFccRadioElemChoice) {
|
||||
case "0" :
|
||||
if (!gFccRadioElemChoiceLocked)
|
||||
SetPickerEnabling("msgFccAccountPicker", "msgFccFolderPicker");
|
||||
SetRadioButtons("fcc_selectAccount", "fcc_selectFolder");
|
||||
break;
|
||||
|
||||
case "1" :
|
||||
if (!gFccRadioElemChoiceLocked)
|
||||
SetPickerEnabling("msgFccFolderPicker", "msgFccAccountPicker");
|
||||
SetRadioButtons("fcc_selectFolder", "fcc_selectAccount");
|
||||
break;
|
||||
|
||||
default :
|
||||
dump("Error in setting Fcc elements.\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
broadcaster.setAttribute("disabled", "true");
|
||||
}
|
||||
|
||||
// Disable CC textbox if CC checkbox is not checked
|
||||
function setupCcTextbox(init)
|
||||
{
|
||||
var ccChecked = document.getElementById("identity.doCc").checked;
|
||||
var ccTextbox = document.getElementById("identity.doCcList");
|
||||
|
||||
ccTextbox.disabled = !ccChecked;
|
||||
|
||||
if (ccChecked) {
|
||||
if (ccTextbox.value == "") {
|
||||
ccTextbox.value = document.getElementById("identity.email").value;
|
||||
if (!init)
|
||||
ccTextbox.select();
|
||||
}
|
||||
} else if ((ccTextbox.value == document.getElementById("identity.email").value) ||
|
||||
(init && ccTextbox.getAttribute("value") == ""))
|
||||
ccTextbox.value = "";
|
||||
}
|
||||
|
||||
// Disable BCC textbox if BCC checkbox is not checked
|
||||
function setupBccTextbox(init)
|
||||
{
|
||||
var bccChecked = document.getElementById("identity.doBcc").checked;
|
||||
var bccTextbox = document.getElementById("identity.doBccList");
|
||||
|
||||
bccTextbox.disabled = !bccChecked;
|
||||
|
||||
if (bccChecked) {
|
||||
if (bccTextbox.value == "") {
|
||||
bccTextbox.value = document.getElementById("identity.email").value;
|
||||
if (!init)
|
||||
bccTextbox.select();
|
||||
}
|
||||
} else if ((bccTextbox.value == document.getElementById("identity.email").value) ||
|
||||
(init && bccTextbox.getAttribute("value") == ""))
|
||||
bccTextbox.value = "";
|
||||
}
|
||||
|
||||
// Enable and disable pickers based on the radio element clicked
|
||||
function SetPickerEnabling(enablePickerId, disablePickerId)
|
||||
{
|
||||
var activePicker = document.getElementById(enablePickerId);
|
||||
activePicker.removeAttribute("disabled");
|
||||
|
||||
var inactivePicker = document.getElementById(disablePickerId);
|
||||
inactivePicker.setAttribute("disabled", "true");
|
||||
}
|
||||
|
||||
// Set radio element choices and picker states
|
||||
function setPickersState(enablePickerId, disablePickerId, event)
|
||||
{
|
||||
SetPickerEnabling(enablePickerId, disablePickerId);
|
||||
|
||||
var radioElemValue = event.target.value;
|
||||
|
||||
switch (event.target.id) {
|
||||
case "fcc_selectAccount":
|
||||
case "fcc_selectFolder":
|
||||
gFccRadioElemChoice = radioElemValue;
|
||||
break;
|
||||
case "archive_selectAccount":
|
||||
case "archive_selectFolder":
|
||||
gArchivesRadioElemChoice = radioElemValue;
|
||||
updateArchiveHierarchyButton(document.getElementById(enablePickerId)
|
||||
.folder);
|
||||
break;
|
||||
case "draft_selectAccount":
|
||||
case "draft_selectFolder":
|
||||
gDraftsRadioElemChoice = radioElemValue;
|
||||
break;
|
||||
case "tmpl_selectAccount":
|
||||
case "tmpl_selectFolder":
|
||||
gTmplRadioElemChoice = radioElemValue;
|
||||
break;
|
||||
default:
|
||||
dump("Error in setting picker state.\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// This routine is to restore the correct radio element
|
||||
// state when the fcc self checkbox broadcasts the change
|
||||
function SetRadioButtons(selectPickerId, unselectPickerId)
|
||||
{
|
||||
var activeRadioElem = document.getElementById(selectPickerId);
|
||||
activeRadioElem.radioGroup.selectedItem = activeRadioElem;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable/disable the archive hierarchy button depending on what folder is
|
||||
* currently selected (Gmail IMAP folders should have the button disabled, since
|
||||
* changing the archive hierarchy does nothing there.
|
||||
*
|
||||
* @param archiveFolder the currently-selected folder to store archives in
|
||||
*/
|
||||
function updateArchiveHierarchyButton(archiveFolder) {
|
||||
let isGmailImap = (archiveFolder.server.type == "imap" &&
|
||||
archiveFolder.server.QueryInterface(
|
||||
Components.interfaces.nsIImapIncomingServer)
|
||||
.isGMailServer);
|
||||
document.getElementById("archiveHierarchyButton").disabled = isGmailImap;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable or disable (as appropriate) the controls for setting archive options
|
||||
*/
|
||||
function setupArchiveItems() {
|
||||
let broadcaster = document.getElementById("broadcaster_archiveEnabled");
|
||||
let checked = document.getElementById("identity.archiveEnabled").checked;
|
||||
let archiveFolder;
|
||||
|
||||
if (checked) {
|
||||
broadcaster.removeAttribute("disabled");
|
||||
switch (gArchivesRadioElemChoice) {
|
||||
case "0":
|
||||
if (!gArchivesRadioElemChoiceLocked)
|
||||
SetPickerEnabling("msgArchivesAccountPicker", "msgArchivesFolderPicker");
|
||||
SetRadioButtons("archive_selectAccount", "archive_selectFolder");
|
||||
updateArchiveHierarchyButton(document.getElementById(
|
||||
"msgArchivesAccountPicker").folder);
|
||||
break;
|
||||
|
||||
case "1":
|
||||
if (!gArchivesRadioElemChoiceLocked)
|
||||
SetPickerEnabling("msgArchivesFolderPicker", "msgArchivesAccountPicker");
|
||||
SetRadioButtons("archive_selectFolder", "archive_selectAccount");
|
||||
updateArchiveHierarchyButton(document.getElementById(
|
||||
"msgArchivesFolderPicker").folder);
|
||||
break;
|
||||
|
||||
default:
|
||||
dump("Error in setting Archive elements.\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
broadcaster.setAttribute("disabled", "true");
|
||||
}
|
||||
|
||||
/**
|
||||
* Open a dialog to edit the folder hierarchy used when archiving messages.
|
||||
*/
|
||||
function ChangeArchiveHierarchy() {
|
||||
let identity = parent.gIdentity || parent.getCurrentAccount().defaultIdentity;
|
||||
|
||||
top.window.openDialog("chrome://messenger/content/am-archiveoptions.xul",
|
||||
"", "centerscreen,chrome,modal,titlebar,resizable=yes",
|
||||
identity);
|
||||
return true;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue