mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-14 05:45:37 +00:00
Fix for bug 86442. Made some changes such that the right directory will be selected when
a directory is edited/deleted. r=mohanb, sr=sspitzer
This commit is contained in:
parent
db9dfad457
commit
5d4fcedc83
@ -53,6 +53,9 @@ function enableAutocomplete()
|
||||
editButton.setAttribute("disabled", true);
|
||||
// autocompleteSkipDirectory.setAttribute("disabled", true);
|
||||
}
|
||||
// if we do not have any directories disable the dropdown list box
|
||||
if (gAvailDirectories.length < 1)
|
||||
directoriesList.setAttribute("disabled", true);
|
||||
gFromGlobalPref = true;
|
||||
LoadDirectories(directoriesListPopup);
|
||||
}
|
||||
@ -61,8 +64,14 @@ function setupDirectoriesList()
|
||||
{
|
||||
var override = document.getElementById("identity.overrideGlobalPref").getAttribute("value");
|
||||
var autocomplete = document.getElementById("ldapAutocomplete");
|
||||
// useGlobalFlag is set when user changes the selectedItem on the radio button and switches
|
||||
// to a different pane and switches back in Mail/news AccountSettings
|
||||
var useGlobalFlag = document.getElementById("overrideGlobalPref").getAttribute("value");
|
||||
// directoryServerFlag is set when user changes the server to None and switches
|
||||
// to a different pane and switches back in Mail/news AccountSettings
|
||||
var directoryServerFlag = document.getElementById("directoryServer").getAttribute("value");
|
||||
|
||||
if(override == "true")
|
||||
if(override == "true" && !useGlobalFlag)
|
||||
autocomplete.selectedItem = document.getElementById("directories");
|
||||
else
|
||||
autocomplete.selectedItem = document.getElementById("useGlobalPref");
|
||||
@ -73,7 +82,10 @@ function setupDirectoriesList()
|
||||
try {
|
||||
var directoryServerString = gPrefInt.CopyUnicharPref(directoryServer + ".description");
|
||||
}
|
||||
catch(ex) {
|
||||
catch(ex) {}
|
||||
if (directoryServerFlag || !directoryServerString) {
|
||||
document.getElementById("identity.directoryServer").setAttribute("value", "");
|
||||
directoryServer = "";
|
||||
var addressBookBundle = document.getElementById("bundle_addressBook");
|
||||
directoryServerString = addressBookBundle.getString("directoriesListItemNone");
|
||||
}
|
||||
@ -156,16 +168,74 @@ function LoadDirectories(popup)
|
||||
}
|
||||
if (popup && !gFromGlobalPref)
|
||||
{
|
||||
// we are in mail/news Account settings
|
||||
item=document.createElement("menuitem");
|
||||
var addressBookBundle = document.getElementById("bundle_addressBook");
|
||||
var directoryName = addressBookBundle.getString("directoriesListItemNone");
|
||||
item.setAttribute("label", directoryName);
|
||||
item.setAttribute("value", "");
|
||||
popup.appendChild(item);
|
||||
if (gRefresh)
|
||||
setupDirectoriesList();
|
||||
if (gRefresh) {
|
||||
// gRefresh is true if user edits, removes or adds a directory.
|
||||
var directoriesList = document.getElementById("directoriesList");
|
||||
var directoryDescription = null;
|
||||
if(directoriesList.value != "") {
|
||||
// make sure the selected directory still exists
|
||||
try {
|
||||
directoryDescription = gPrefInt.
|
||||
CopyUnicharPref(directoriesList.value + ".description");
|
||||
}
|
||||
catch (ex) {}
|
||||
}
|
||||
if(!directoryDescription) {
|
||||
// if selected directory doesn't exist, set it to none
|
||||
directoriesList.value = "";
|
||||
var addressBookBundle = document.getElementById("bundle_addressBook");
|
||||
directoriesList.label = addressBookBundle.
|
||||
getString("directoriesListItemNone");
|
||||
}
|
||||
else {
|
||||
directoriesList.label = directoryDescription;
|
||||
directoriesList.value = directoriesList.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (popup && gFromGlobalPref) {
|
||||
// we are in global preferences-> Addressing pane.
|
||||
var directoriesList = document.getElementById("directoriesList");
|
||||
if (gRefresh) {
|
||||
// gRefresh is true if user edits, removes or adds a directory.
|
||||
var directoryDescription = null;
|
||||
if(directoriesList.label != "") {
|
||||
// make sure the selected directory still exists
|
||||
try {
|
||||
directoryDescription = gPrefInt.
|
||||
CopyUnicharPref(directoriesList.value + ".description");
|
||||
}
|
||||
catch (ex) {}
|
||||
}
|
||||
if(!directoryDescription) {
|
||||
// if selected directory doesn't exist,
|
||||
// set it the first one in the list of directories
|
||||
// if we have atleast one directory.
|
||||
// or else set it to ""
|
||||
if (gAvailDirectories.length >= 1) {
|
||||
directoriesList.label = gAvailDirectories[0][1];
|
||||
directoriesList.value = gAvailDirectories[0][0];
|
||||
directoriesList.removeAttribute("disabled");
|
||||
}
|
||||
else {
|
||||
directoriesList.label = "";
|
||||
directoriesList.value = null;
|
||||
directoriesList.setAttribute("disabled", true);
|
||||
}
|
||||
}
|
||||
else {
|
||||
directoriesList.label = directoryDescription;
|
||||
directoriesList.value = directoriesList.value;
|
||||
}
|
||||
return;
|
||||
}
|
||||
var pref_string_title = "ldap_2.autoComplete.directoryServer";
|
||||
try {
|
||||
var directoryServer = gPrefInt.CopyCharPref(pref_string_title);
|
||||
@ -184,7 +254,6 @@ function LoadDirectories(popup)
|
||||
description = "";
|
||||
}
|
||||
}
|
||||
var directoriesList = document.getElementById("directoriesList");
|
||||
if ((directoryServer != "") && (description != ""))
|
||||
{
|
||||
directoriesList.label = description;
|
||||
@ -193,10 +262,13 @@ function LoadDirectories(popup)
|
||||
else if(gAvailDirectories.length >= 1) {
|
||||
directoriesList.label = gAvailDirectories[0][1];
|
||||
directoriesList.value = gAvailDirectories[0][0];
|
||||
gPrefInt.SetCharPref("ldap_2.autoComplete.directoryServer",
|
||||
gAvailDirectories[0][0]);
|
||||
}
|
||||
else {
|
||||
directoriesList.label = "";
|
||||
directoriesList.value = null;
|
||||
gPrefInt.SetCharPref("ldap_2.autoComplete.directoryServer", "");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -334,23 +406,6 @@ function removeDirectory()
|
||||
var cell = row.firstChild;
|
||||
|
||||
if(gCurrentDirectoryServer && gCurrentDirectoryServerId) {
|
||||
if(!gPrefInt) {
|
||||
try {
|
||||
gPrefInt = Components.classes["@mozilla.org/preferences;1"];
|
||||
gPrefInt = gPrefInt.getService(Components.interfaces.nsIPref);
|
||||
}
|
||||
catch (ex) {
|
||||
gPrefInt = null;
|
||||
}
|
||||
}
|
||||
try {
|
||||
var directoryServer = gPrefInt.CopyCharPref("ldap_2.autoComplete.directoryServer");
|
||||
}
|
||||
catch(ex) {
|
||||
directoryServer = "";
|
||||
}
|
||||
if (gCurrentDirectoryServerId == directoryServer)
|
||||
gPrefInt.SetCharPref("ldap_2.autoComplete.directoryServer", "");
|
||||
var len= gDeletedDirectories.length;
|
||||
gDeletedDirectories[len] = gCurrentDirectoryServerId;
|
||||
}
|
||||
@ -360,15 +415,51 @@ function removeDirectory()
|
||||
if (nextNode) {
|
||||
directoriesTree.selectItem(nextNode)
|
||||
}
|
||||
window.opener.gRefresh = true;
|
||||
}
|
||||
|
||||
// remove all the directories that are selected for deletion from preferences
|
||||
// check if the deleted directory is selected for autocompletion in global
|
||||
// or identity prefs. If so change the pref to ""
|
||||
function onOK()
|
||||
{
|
||||
var len = gDeletedDirectories.length;
|
||||
for (var i=0; i< len; i++){
|
||||
gPrefInt.DeleteBranch(gDeletedDirectories[i]);
|
||||
if (len) {
|
||||
try {
|
||||
var directoryServer = gPrefInt.CopyCharPref("ldap_2.autoComplete.directoryServer");
|
||||
}
|
||||
catch(ex) {
|
||||
directoryServer = null;
|
||||
}
|
||||
var am = Components.classes["@mozilla.org/messenger/account-manager;1"]
|
||||
.getService(Components.interfaces.nsIMsgAccountManager);
|
||||
if (am) {
|
||||
var allIdentities = am.allIdentities;
|
||||
var identitiesCount = allIdentities.Count();
|
||||
var identityServer = new Array();
|
||||
var currentIdenity = null;
|
||||
var j=0;
|
||||
for (j=0; j< identitiesCount; j++) {
|
||||
currentIdentity = allIdentities.QueryElementAt(j, Components.interfaces.nsIMsgIdentity);
|
||||
identityServer[j] = {server:currentIdentity.directoryServer, deleted:false};
|
||||
}
|
||||
var deletedGlobal = false;
|
||||
for (var i=0; i< len; i++){
|
||||
if (!deletedGlobal && directoryServer && (gDeletedDirectories[i] == directoryServer)) {
|
||||
gPrefInt.SetCharPref("ldap_2.autoComplete.directoryServer", "");
|
||||
deletedGlobal = true;
|
||||
}
|
||||
for (j=0; j<identitiesCount; j++){
|
||||
if (identityServer[j].server && !identityServer[j].deleted && (gDeletedDirectories[i] == identityServer[j].server)) {
|
||||
identityServer[j].server = "";
|
||||
identityServer[j].deleted = true;
|
||||
}
|
||||
}
|
||||
gPrefInt.DeleteBranch(gDeletedDirectories[i]);
|
||||
}
|
||||
gPrefInt.savePrefFile(null);
|
||||
}
|
||||
}
|
||||
window.opener.gRefresh = true;
|
||||
window.close();
|
||||
}
|
||||
|
||||
|
@ -42,14 +42,29 @@ function onSave()
|
||||
var directoriesList =
|
||||
document.getElementById("directoriesList").getAttribute('value');
|
||||
|
||||
// When switching between panes,
|
||||
// if we save the value of an element as null
|
||||
// we will be forced to get the value from preferences when we get back.
|
||||
// We are saving the value as "" for the radio button and also for
|
||||
// the directory server if the selected directory is "None"
|
||||
// So, we need the two elements overrideGlobalPref and directoryServer
|
||||
// to save the state when the directory is
|
||||
// set to none and the first radio button is selected.
|
||||
switch(autocomplete.selectedItem.value)
|
||||
{
|
||||
case "0":
|
||||
override.setAttribute('value', "");
|
||||
document.getElementById("overrideGlobalPref").setAttribute("value", "0");
|
||||
document.getElementById("directoryServer").setAttribute("value", "");
|
||||
break;
|
||||
case "1":
|
||||
override.setAttribute('value', true);
|
||||
directoryServer.setAttribute("value", directoriesList);
|
||||
document.getElementById("overrideGlobalPref").setAttribute("value", "");
|
||||
if(directoriesList == "")
|
||||
document.getElementById("directoryServer").setAttribute("value", "none");
|
||||
else
|
||||
document.getElementById("directoryServer").setAttribute("value", "");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,8 @@ Contributors:
|
||||
<text hidden="true" wsm_persist="true" id="identity.overrideGlobalPref"
|
||||
pref="true" preftype="bool" prefattribute="value"
|
||||
prefstring="mail.identity.%identitykey%.overrideGlobal_Pref"/>
|
||||
<text hidden="true" wsm_persist="true" id="overrideGlobalPref" value=""/>
|
||||
<text hidden="true" wsm_persist="true" id="directoryServer" value=""/>
|
||||
<hbox class="box-smallheader" title="&addressing.label;"/>
|
||||
|
||||
<separator class="thin"/>
|
||||
|
Loading…
Reference in New Issue
Block a user