!import
(0 calls, 0 incl. v-uS, 0 excl. v-uS)
1 /* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 * ***** BEGIN LICENSE BLOCK *****
3 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4 *
5 * The contents of this file are subject to the Mozilla Public License Version
6 * 1.1 (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 * http://www.mozilla.org/MPL/
9 *
10 * Software distributed under the License is distributed on an "AS IS" basis,
11 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12 * for the specific language governing rights and limitations under the
13 * License.
14 *
15 * The Original Code is Mozilla Communicator client code, released
16 * March 31, 1998.
17 *
18 * The Initial Developer of the Original Code is
19 * Netscape Communications Corporation.
20 * Portions created by the Initial Developer are Copyright (C) 1998-2003
21 * the Initial Developer. All Rights Reserved.
22 *
23 * Contributor(s):
24 * alecf@netscape.com
25 * sspitzer@netscape.com
26 * racham@netscape.com
27 * hwaara@chello.se
28 * bienvenu@nventure.com
29 * Matthew Willis <mattwillis@gmail.com>
30 *
31 * Alternatively, the contents of this file may be used under the terms of
32 * either of the GNU General Public License Version 2 or later (the "GPL"),
33 * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
34 * in which case the provisions of the GPL or the LGPL are applicable instead
35 * of those above. If you wish to allow use of your version of this file only
36 * under the terms of either the GPL or the LGPL, and not to allow others to
37 * use your version of this file under the terms of the MPL, indicate your
38 * decision by deleting the provisions above and replace them with the notice
39 * and other provisions required by the GPL or the LGPL. If you do not delete
40 * the provisions above, a recipient may use your version of this file under
41 * the terms of any one of the MPL, the GPL or the LGPL.
42 *
43 * ***** END LICENSE BLOCK ***** */
44
45 var gServer;
46 var gObserver;
47
onInit
(0 calls, 0 incl. v-uS, 0 excl. v-uS)
48 function onInit(aPageId, aServerId)
49 {
50 initServerType();
51
52 onCheckItem("server.biffMinutes", "server.doBiff");
53 onCheckItem("nntp.maxArticles", "nntp.limitArticles");
54 setupMailOnServerUI();
55 setupFixedUI();
56 setupImapDeleteUI(aServerId);
57 }
58
onPreInit
(0 calls, 0 incl. v-uS, 0 excl. v-uS)
59 function onPreInit(account, accountValues)
60 {
61 // Bug 134238
62 // Make sure server.isSecure will be saved before server.port preference
63 parent.getAccountValue(account, accountValues, "server", "isSecure", null, false);
64
65 var type = parent.getAccountValue(account, accountValues, "server", "type", null, false);
66 hideShowControls(type);
67
68 gObserver= Components.classes["@mozilla.org/observer-service;1"].
69 getService(Components.interfaces.nsIObserverService);
70 gObserver.notifyObservers(null, "charsetmenu-selected", "other");
71
72 gServer = account.incomingServer;
73
74 if(!account.incomingServer.canEmptyTrashOnExit)
75 {
76 document.getElementById("server.emptyTrashOnExit").setAttribute("hidden", "true");
77 document.getElementById("imap.deleteModel.box").setAttribute("hidden", "true");
78 }
79 var hideButton = false;
80
81 if (hideButton)
82 document.getElementById("server.advancedbutton").setAttribute("hidden", "true");
83 // otherwise let hideShowControls decide
84 }
85
initServerType
(0 calls, 0 incl. v-uS, 0 excl. v-uS)
86 function initServerType()
87 {
88 var serverType = document.getElementById("server.type").getAttribute("value");
89
90 var propertyName = "serverType-" + serverType;
91
92 var messengerBundle = document.getElementById("bundle_messenger");
93 var verboseName = messengerBundle.getString(propertyName);
94 setDivText("servertype.verbose", verboseName);
95
96 var isSecureSelected;
97 if (document.getElementById("server.isSecure").hidden == true)
98 // if socketType set to alwaysSSL
99 isSecureSelected = document.getElementById("server.socketType").value == 3;
100 else
101 isSecureSelected = document.getElementById("server.isSecure").checked;
102 var protocolInfo = Components.classes["@mozilla.org/messenger/protocol/info;1?type=" + serverType].getService(Components.interfaces.nsIMsgProtocolInfo);
103 document.getElementById("defaultPort").value = protocolInfo.getDefaultServerPort(isSecureSelected);
104 }
105
setDivText
(0 calls, 0 incl. v-uS, 0 excl. v-uS)
106 function setDivText(divname, value)
107 {
108 var div = document.getElementById(divname);
109 if (!div)
110 return;
111 div.setAttribute("value", value);
112 }
113
114
onAdvanced
(0 calls, 0 incl. v-uS, 0 excl. v-uS)
115 function onAdvanced()
116 {
117 // Store the server type and, if an IMAP or POP3 server,
118 // the settings needed for the IMAP/POP3 tab into the array
119 var serverSettings = {};
120 var serverType = document.getElementById("server.type").getAttribute("value");
121 serverSettings.serverType = serverType;
122
123
124 if (serverType == "imap")
125 {
126 serverSettings.dualUseFolders = document.getElementById("imap.dualUseFolders").checked;
127 serverSettings.usingSubscription = document.getElementById("imap.usingSubscription").checked;
128 serverSettings.useIdle = document.getElementById("imap.useIdle").checked;
129 serverSettings.maximumConnectionsNumber = document.getElementById("imap.maximumConnectionsNumber").getAttribute("value");
130 // string prefs
131 serverSettings.personalNamespace = document.getElementById("imap.personalNamespace").getAttribute("value");
132 serverSettings.publicNamespace = document.getElementById("imap.publicNamespace").getAttribute("value");
133 serverSettings.serverDirectory = document.getElementById("imap.serverDirectory").getAttribute("value");
134 serverSettings.otherUsersNamespace = document.getElementById("imap.otherUsersNamespace").getAttribute("value");
135 serverSettings.overrideNamespaces = document.getElementById("imap.overrideNamespaces").checked;
136 }
137 else if (serverType == "pop3")
138 {
139 serverSettings.deferGetNewMail = document.getElementById("pop3.deferGetNewMail").checked;
140 serverSettings.deferredToAccount = document.getElementById("pop3.deferredToAccount").getAttribute("value");
141 }
142
143 window.openDialog("chrome://messenger/content/am-server-advanced.xul",
144 "_blank", "chrome,modal,titlebar", serverSettings);
145
146 if (serverType == "imap")
147 {
148 document.getElementById("imap.dualUseFolders").checked = serverSettings.dualUseFolders;
149 document.getElementById("imap.usingSubscription").checked = serverSettings.usingSubscription;
150 document.getElementById("imap.useIdle").checked = serverSettings.useIdle;
151 document.getElementById("imap.maximumConnectionsNumber").setAttribute("value", serverSettings.maximumConnectionsNumber);
152 // string prefs
153 document.getElementById("imap.personalNamespace").setAttribute("value", serverSettings.personalNamespace);
154 document.getElementById("imap.publicNamespace").setAttribute("value", serverSettings.publicNamespace);
155 document.getElementById("imap.serverDirectory").setAttribute("value", serverSettings.serverDirectory);
156 document.getElementById("imap.otherUsersNamespace").setAttribute("value", serverSettings.otherUsersNamespace);
157 document.getElementById("imap.overrideNamespaces").checked = serverSettings.overrideNamespaces;
158 }
159 else if (serverType == "pop3")
160 {
161 document.getElementById("pop3.deferGetNewMail").checked = serverSettings.deferGetNewMail;
162 document.getElementById("pop3.deferredToAccount").setAttribute("value", serverSettings.deferredToAccount);
163 var pop3Server = gServer.QueryInterface(Components.interfaces.nsIPop3IncomingServer);
164 // we're explicitly setting this so we'll go through the SetDeferredToAccount method
165 pop3Server.deferredToAccount = serverSettings.deferredToAccount;
166 }
167 }
168
secureSelect
(0 calls, 0 incl. v-uS, 0 excl. v-uS)
169 function secureSelect()
170 {
171 var serverType = document.getElementById("server.type").getAttribute("value");
172 var protocolInfo = Components.classes["@mozilla.org/messenger/protocol/info;1?type=" + serverType].getService(Components.interfaces.nsIMsgProtocolInfo);
173
174 var isSecureSelected;
175 if (document.getElementById("server.isSecure").hidden == true)
176 // if socketType set to alwaysSSL
177 isSecureSelected = document.getElementById("server.socketType").value == 3;
178 else
179 isSecureSelected = document.getElementById("server.isSecure").checked;
180
181 var defaultPort = protocolInfo.getDefaultServerPort(false);
182 var defaultPortSecure = protocolInfo.getDefaultServerPort(true);
183 var port = document.getElementById("server.port");
184 var portDefault = document.getElementById("defaultPort");
185 var prevDefaultPort = portDefault.value;
186
187 if (isSecureSelected) {
188 portDefault.value = defaultPortSecure;
189 if (port.value == "" || (port.value == defaultPort && prevDefaultPort != portDefault.value))
190 port.value = defaultPortSecure;
191 } else {
192 portDefault.value = defaultPort;
193 if (port.value == "" || (port.value == defaultPortSecure && prevDefaultPort != portDefault.value))
194 port.value = defaultPort;
195 }
196 }
197
onCheckItem
(0 calls, 0 incl. v-uS, 0 excl. v-uS)
198 function onCheckItem(changeElementId, checkElementId)
199 {
200 var element = document.getElementById(changeElementId);
201 var notify = document.getElementById(checkElementId);
202 var checked = notify.checked;
203
204 if(checked && !getAccountValueIsLocked(notify))
205 element.removeAttribute("disabled");
206 else
207 element.setAttribute("disabled", "true");
208 }
209
setupMailOnServerUI
(0 calls, 0 incl. v-uS, 0 excl. v-uS)
210 function setupMailOnServerUI()
211 {
212 var checked = document.getElementById("pop3.leaveMessagesOnServer").checked;
213 var locked = getAccountValueIsLocked(document.getElementById("pop3.leaveMessagesOnServer"));
214 document.getElementById("pop3.deleteMailLeftOnServer").disabled = locked || !checked ;
215 setupAgeMsgOnServerUI();
216 }
217
setupAgeMsgOnServerUI
(0 calls, 0 incl. v-uS, 0 excl. v-uS)
218 function setupAgeMsgOnServerUI()
219 {
220 var leaveMsgsChecked = document.getElementById("pop3.leaveMessagesOnServer").checked;
221 var checked = document.getElementById("pop3.deleteByAgeFromServer").checked;
222 var locked = getAccountValueIsLocked(document.getElementById("pop3.deleteByAgeFromServer"));
223 document.getElementById("pop3.deleteByAgeFromServer").disabled = locked || !leaveMsgsChecked;
224 document.getElementById("daysEnd").disabled = locked || !leaveMsgsChecked;
225 document.getElementById("pop3.numDaysToLeaveOnServer").disabled = locked || !checked || !leaveMsgsChecked;
226 }
227
setupFixedUI
(0 calls, 0 incl. v-uS, 0 excl. v-uS)
228 function setupFixedUI()
229 {
230 var controls = [document.getElementById("fixedServerName"),
231 document.getElementById("fixedUserName"),
232 document.getElementById("fixedServerPort")];
233
234 var len = controls.length;
235 for (var i=0; i<len; i++) {
236 var fixedElement = controls[i];
237 var otherElement = document.getElementById(fixedElement.getAttribute("use"));
238
239 fixedElement.setAttribute("collapsed", "true");
240 otherElement.removeAttribute("collapsed");
241 }
242 }
243
BrowseForNewsrc
(0 calls, 0 incl. v-uS, 0 excl. v-uS)
244 function BrowseForNewsrc()
245 {
246 var newsrcTextBox = document.getElementById("nntp.newsrcFilePath");
247 var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
248 fp.init(window,
249 document.getElementById("browseForNewsrc").getAttribute("filepickertitle"),
250 nsIFilePicker.modeSave);
251
252 var currentNewsrcFile;
253 try {
254 currentNewsrcFile = Components.classes[LOCALFILE_CTRID].createInstance(nsILocalFile);
255 currentNewsrcFile.initWithPath(newsrcTextBox.value);
256 } catch (e) {
257 dump("Failed to create nsILocalFile instance for the current newsrc file.\n");
258 }
259
260 if (currentNewsrcFile) {
261 fp.displayDirectory = currentNewsrcFile.parent;
262 fp.defaultString = currentNewsrcFile.leafName;
263 }
264
265 fp.appendFilters(nsIFilePicker.filterAll);
266
267 if (fp.show() != nsIFilePicker.returnCancel)
268 newsrcTextBox.value = fp.file.path;
269 }
270
setupImapDeleteUI
(0 calls, 0 incl. v-uS, 0 excl. v-uS)
271 function setupImapDeleteUI(aServerId)
272 {
273 // read delete_model preference
274 var deleteModel = document.getElementById("imap.deleteModel").getAttribute("value");
275 selectImapDeleteModel(deleteModel)
276
277 // read trash_folder_name preference
278 var trashFolderName = getTrashFolderName();
279
280 // set folderPicker menulist
281 document.getElementById("msgTrashFolderPicker").setAttribute("ref", aServerId);
282 var trashFolderUri = aServerId+"/"+trashFolderName;
283 SetFolderPicker(trashFolderUri,"msgTrashFolderPicker");
284 }
285
selectImapDeleteModel
(0 calls, 0 incl. v-uS, 0 excl. v-uS)
286 function selectImapDeleteModel(choice)
287 {
288 // set deleteModel to selected mode
289 document.getElementById("imap.deleteModel").setAttribute("value", choice);
290
291 switch (choice)
292 {
293 case "0" : // markDeleted
294 // disable folderPicker
295 document.getElementById("msgTrashFolderPicker").setAttribute("disabled", "true");
296 break;
297 case "1" : // moveToTrashFolder
298 // enable folderPicker
299 document.getElementById("msgTrashFolderPicker").removeAttribute("disabled");
300 break;
301 case "2" : // deleteImmediately
302 // disable folderPicker
303 document.getElementById("msgTrashFolderPicker").setAttribute("disabled", "true");
304 break;
305 default :
306 dump("Error in enabling/disabling server.TrashFolderPicker\n");
307 break;
308 }
309 }
310
311 // Capture any menulist changes from folderPicker
folderPickerChange
(0 calls, 0 incl. v-uS, 0 excl. v-uS)
312 function folderPickerChange(radioItemId)
313 {
314 var trashFolderPickerUri = document.getElementById(radioItemId).getAttribute("uri");
315 var trashFolderName = GetMsgFolderFromUri(trashFolderPickerUri, true);
316 document.getElementById("imap.trashFolderName").setAttribute("value",trashFolderName.name);
317 }
318
319 // Get trash_folder_name from prefs
getTrashFolderName
(0 calls, 0 incl. v-uS, 0 excl. v-uS)
320 function getTrashFolderName()
321 {
322 var trashFolderName = document.getElementById("imap.trashFolderName").getAttribute("value");
323 // if the preference hasn't been set, set it to a sane default
324 if (!trashFolderName) {
325 trashFolderName = "Trash";
326 document.getElementById("imap.trashFolderName").setAttribute("value",trashFolderName);
327 }
328 return trashFolderName;
329 }
330
331 /**
332 * Called when someone changes the biff-minutes value. We'll check whether it's
333 * zero, and if so, disable the biff checkbox as well, otherwise enable the box
334 *
335 * @param aValue the new value for the textbox
336 */
onBiffMinChange
(0 calls, 0 incl. v-uS, 0 excl. v-uS)
337 function onBiffMinChange(aValue)
338 {
339 document.getElementById("server.doBiff").checked = (aValue != 0);
340 }