2
* The contents of this file are subject to the Netscape Public
3
* License Version 1.1 (the "License"); you may not use this file
4
* except in compliance with the License. You may obtain a copy of
5
* the License at http://www.mozilla.org/NPL/
7
* Software distributed under the License is distributed on an "AS
8
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
9
* implied. See the License for the specific language governing
10
* rights and limitations under the License.
12
* The Original Code is Mozilla Communicator client code, released
15
* The Initial Developer of the Original Code is Netscape
16
* Communications Corporation. Portions created by Netscape are
17
* Copyright (C) 2001 Netscape Communications Corporation. All
24
var gPublishDataChanged = false;
25
var gDefaultSiteIndex = -1;
27
var gPreviousDefaultSite;
29
var gSettingsChanged = false;
30
var gSiteDataChanged = false;
31
var gAddNewSite = false;
32
var gCurrentSiteIndex = -1;
33
var gPasswordManagerOn = true;
36
// Dialog initialization code
39
if (!GetCurrentEditor())
45
if ("arguments" in window && window.arguments[0])
47
retValue = window.arguments[0];
50
gDialog.SiteList = document.getElementById("SiteList");
51
gDialog.SiteNameInput = document.getElementById("SiteNameInput");
52
gDialog.PublishUrlInput = document.getElementById("PublishUrlInput");
53
gDialog.BrowseUrlInput = document.getElementById("BrowseUrlInput");
54
gDialog.UsernameInput = document.getElementById("UsernameInput");
55
gDialog.PasswordInput = document.getElementById("PasswordInput");
56
gDialog.SavePassword = document.getElementById("SavePassword");
57
gDialog.SetDefaultButton = document.getElementById("SetDefaultButton");
58
gDialog.RemoveSiteButton = document.getElementById("RemoveSiteButton");
59
gDialog.OkButton = document.documentElement.getButton("accept");
61
gPublishSiteData = GetPublishSiteData();
62
gDefaultSiteName = GetDefaultPublishSiteName();
63
gPreviousDefaultSite = gDefaultSiteName;
65
gPasswordManagerOn = GetBoolPref("signon.rememberSignons");
66
gDialog.SavePassword.disabled = !gPasswordManagerOn;
75
// If there's no current site data, start a new item in the Settings panel
76
if (!gPublishSiteData)
84
// uncomment next code line if you want preselection of the default
86
//InitSiteSettings(gDefaultSiteIndex);
88
SetTextboxFocus(gDialog.SiteNameInput);
92
function FillSiteList()
94
// Prevent triggering SelectSiteList() actions
96
ClearListbox(gDialog.SiteList);
98
gDefaultSiteIndex = -1;
100
// Fill the site list
101
var count = gPublishSiteData.length;
102
for (var i = 0; i < count; i++)
104
var name = gPublishSiteData[i].siteName;
105
var item = gDialog.SiteList.appendItem(name);
106
SetPublishItemStyle(item);
107
if (name == gDefaultSiteName)
108
gDefaultSiteIndex = i;
112
function SetPublishItemStyle(item)
114
// Display default site with bold style
117
if (item.getAttribute("label") == gDefaultSiteName)
118
item.setAttribute("class", "bold");
120
item.removeAttribute("class");
124
function AddNewSite()
126
// Save any pending changes locally first
130
// Initialize Setting widgets to none of the selected sites
131
InitSiteSettings(-1);
134
SetTextboxFocus(gDialog.SiteNameInput);
137
function RemoveSite()
139
if (!gPublishSiteData)
142
var index = gDialog.SiteList.selectedIndex;
146
item = gDialog.SiteList.selectedItems[0];
147
var nameToRemove = item.getAttribute("label");
149
// Remove one item from site data array
150
gPublishSiteData.splice(index, 1);
151
// Remove item from site list
152
gDialog.SiteList.clearSelection();
153
gDialog.SiteList.removeItemAt(index);
155
// Adjust if we removed last item and reselect a site
156
if (index >= gPublishSiteData.length)
158
InitSiteSettings(index);
160
if (nameToRemove == gDefaultSiteName)
162
// Deleting current default -- set to new selected item
163
// Arbitrary, but what else to do?
166
gSiteDataChanged = true;
170
function SetDefault()
172
if (!gPublishSiteData)
175
var index = gDialog.SiteList.selectedIndex;
178
gDefaultSiteIndex = index;
179
gDefaultSiteName = gPublishSiteData[index].siteName;
181
// Set bold style on new default
182
var item = gDialog.SiteList.firstChild;
185
SetPublishItemStyle(item);
186
item = item.nextSibling;
191
// Recursion prevention:
192
// Use when you don't want to trigger ApplyChanges and InitSiteSettings
193
var gIsSelecting = false;
195
function SelectSiteList()
201
var newIndex = gDialog.SiteList.selectedIndex;
203
// Save any pending changes locally first
207
InitSiteSettings(newIndex);
209
gIsSelecting = false;
212
// Use this to prevent recursion in SelectSiteList
213
function SetSelectedSiteIndex(index)
216
gDialog.SiteList.selectedIndex = index;
217
gIsSelecting = false;
220
function InitSiteSettings(selectedSiteIndex)
222
// Index to the site we will need to update if settings changed
223
gCurrentSiteIndex = selectedSiteIndex;
225
SetSelectedSiteIndex(selectedSiteIndex);
226
var haveData = (gPublishSiteData && selectedSiteIndex != -1);
228
gDialog.SiteNameInput.value = haveData ? gPublishSiteData[selectedSiteIndex].siteName : "";
229
gDialog.PublishUrlInput.value = haveData ? gPublishSiteData[selectedSiteIndex].publishUrl : "";
230
gDialog.BrowseUrlInput.value = haveData ? gPublishSiteData[selectedSiteIndex].browseUrl : "";
231
gDialog.UsernameInput.value = haveData ? gPublishSiteData[selectedSiteIndex].username : "";
233
var savePassord = haveData && gPasswordManagerOn;
234
gDialog.PasswordInput.value = savePassord ? gPublishSiteData[selectedSiteIndex].password : "";
235
gDialog.SavePassword.checked = savePassord ? gPublishSiteData[selectedSiteIndex].savePassword : false;
237
gDialog.SetDefaultButton.disabled = !haveData;
238
gDialog.RemoveSiteButton.disabled = !haveData;
239
gSettingsChanged = false;
242
function onInputSettings()
244
// TODO: Save current data during SelectSite1 and compare here
245
// to detect if real change has occurred?
246
gSettingsChanged = true;
249
function ApplyChanges()
251
if (gSettingsChanged && !UpdateSettings())
253
// Restore selection to previously current site
254
SetSelectedSiteIndex(gCurrentSiteIndex);
260
function UpdateSettings()
262
// Validate and add new site
263
var newName = TrimString(gDialog.SiteNameInput.value);
266
ShowInputErrorMessage(GetString("MissingSiteNameError"), gDialog.SiteNameInput);
269
if (PublishSiteNameExists(newName, gPublishSiteData, gCurrentSiteIndex))
271
ShowInputErrorMessage(GetString("DuplicateSiteNameError").replace(/%name%/, newName));
272
SetTextboxFocus(gDialog.SiteNameInput);
276
var newUrl = FormatUrlForPublishing(gDialog.PublishUrlInput.value);
279
ShowInputErrorMessage(GetString("MissingPublishUrlError"), gDialog.PublishUrlInput);
282
if (!GetScheme(newUrl))
284
newUrl = "ftp://" + newUrl;
285
gDialog.PublishUrlInput.value = newUrl;
288
var siteUrl = FormatUrlForPublishing(gDialog.BrowseUrlInput.value);
289
if (!GetScheme(siteUrl))
291
siteUrl = "http://" + siteUrl;
292
gDialog.BrowseUrlInput.value = siteUrl;
295
// Start assuming we're updating existing site at gCurrentSiteIndex
296
var newSiteData = false;
298
if (!gPublishSiteData)
300
// First time used - Create the first site profile
301
gPublishSiteData = new Array(1);
302
gCurrentSiteIndex = 0;
305
else if (gCurrentSiteIndex == -1)
307
// No currently-selected site,
308
// must be adding a new site
309
// Add new data at the end of list
310
gCurrentSiteIndex = gPublishSiteData.length;
316
// Init new site profile
317
gPublishSiteData[gCurrentSiteIndex] = {};
318
gPublishSiteData[gCurrentSiteIndex].docDir = "";
319
gPublishSiteData[gCurrentSiteIndex].otherDir = "";
320
gPublishSiteData[gCurrentSiteIndex].dirList = [""];
321
gPublishSiteData[gCurrentSiteIndex].previousSiteName = newName;
324
gPublishSiteData[gCurrentSiteIndex].siteName = newName;
325
gPublishSiteData[gCurrentSiteIndex].publishUrl = newUrl;
326
gPublishSiteData[gCurrentSiteIndex].browseUrl = FormatUrlForPublishing(gDialog.BrowseUrlInput.value);
327
gPublishSiteData[gCurrentSiteIndex].username = TrimString(gDialog.UsernameInput.value);
328
gPublishSiteData[gCurrentSiteIndex].password= gDialog.PasswordInput.value;
329
gPublishSiteData[gCurrentSiteIndex].savePassword = gDialog.SavePassword.checked;
331
if (gCurrentSiteIndex == gDefaultSiteIndex)
332
gDefaultSiteName = newName;
334
// When adding the very first site, assume that's the default
335
if (gPublishSiteData.length == 1 && !gDefaultSiteName)
337
gDefaultSiteName = gPublishSiteData[0].siteName;
338
gDefaultSiteIndex = 0;
343
// Select current site in list
344
SetSelectedSiteIndex(gCurrentSiteIndex);
346
// Signal saving data to prefs
347
gSiteDataChanged = true;
349
// Clear current site flags
350
gSettingsChanged = false;
357
function doHelpButton()
359
openHelp("comp-doc-publish-site-settings");
364
retValue.cancelled = false;
366
// Save any pending changes locally first
370
if (gSiteDataChanged)
372
// Save all local data to prefs
373
SavePublishSiteDataToPrefs(gPublishSiteData, gDefaultSiteName);
375
else if (gPreviousDefaultSite != gDefaultSiteName)
377
// only the default site was changed
378
SetDefaultSiteName(gDefaultSiteName);
381
SaveWindowLocation();
388
retValue.cancelled = true;
389
SaveWindowLocation();
393
function SelectSiteDirectory()
396
var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
397
fp.init(window, "foobar" /*dialog.bundle.getString("chooseFileDialogTitle")*/, nsIFilePicker.modeGetFolder);
399
if (fp.show() == nsIFilePicker.returnOK && fp.fileURL.spec && fp.fileURL.spec.length > 0)
400
gDialog.PublishUrlInput.value = fp.fileURL.spec;
b'\\ No newline at end of file'