mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-05 08:35:26 +00:00
32d9b02064
CCK only - not part of build Locked startup page not working correctly
2755 lines
98 KiB
JavaScript
Executable File
2755 lines
98 KiB
JavaScript
Executable File
# ***** BEGIN LICENSE BLOCK *****
|
|
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
#
|
|
# The contents of this file are subject to the Mozilla Public License Version
|
|
# 1.1 (the "License"); you may not use this file except in compliance with
|
|
# the License. You may obtain a copy of the License at
|
|
# http://www.mozilla.org/MPL/
|
|
#
|
|
# Software distributed under the License is distributed on an "AS IS" basis,
|
|
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
# for the specific language governing rights and limitations under the
|
|
# License.
|
|
#
|
|
# The Original Code is the Client Customization Kit (CCK).
|
|
#
|
|
# The Initial Developer of the Original Code is IBM Corp.
|
|
# Portions created by the Initial Developer are Copyright (C) 2005
|
|
# the Initial Developer. All Rights Reserved.
|
|
#
|
|
# Contributor(s):
|
|
# Ben Goodger <beng@google.com> (Original author)
|
|
# Gavin Sharp <gavin@gavinsharp.com>
|
|
# Joe Hughes <joe@retrovirus.com>
|
|
# Pamela Greene <pamg.bugs@gmail.com>
|
|
#
|
|
# Alternatively, the contents of this file may be used under the terms of
|
|
# either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
# in which case the provisions of the GPL or the LGPL are applicable instead
|
|
# of those above. If you wish to allow use of your version of this file only
|
|
# under the terms of either the GPL or the LGPL, and not to allow others to
|
|
# use your version of this file under the terms of the MPL, indicate your
|
|
# decision by deleting the provisions above and replace them with the notice
|
|
# and other provisions required by the GPL or the LGPL. If you do not delete
|
|
# the provisions above, a recipient may use your version of this file under
|
|
# the terms of any one of the MPL, the GPL or the LGPL.
|
|
#
|
|
# ***** END LICENSE BLOCK *****
|
|
|
|
var currentconfigname;
|
|
var currentconfigpath;
|
|
var configarray = new Array();
|
|
|
|
const nsIPrefBranch = Components.interfaces.nsIPrefBranch;
|
|
var gPrefBranch = Components.classes["@mozilla.org/preferences-service;1"]
|
|
.getService(nsIPrefBranch);
|
|
|
|
var gPromptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
|
|
.getService(Components.interfaces.nsIPromptService);
|
|
|
|
function choosefile(labelname)
|
|
{
|
|
try {
|
|
var nsIFilePicker = Components.interfaces.nsIFilePicker;
|
|
var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
|
|
var bundle = document.getElementById("bundle_cckwizard");
|
|
fp.init(window, bundle.getString("chooseFile"), nsIFilePicker.modeOpen);
|
|
fp.appendFilters(nsIFilePicker.filterAll);
|
|
|
|
if (fp.show() == nsIFilePicker.returnOK && fp.fileURL.spec && fp.fileURL.spec.length > 0) {
|
|
var label = document.getElementById(labelname);
|
|
label.value = fp.file.path;
|
|
}
|
|
}
|
|
catch(ex) {
|
|
}
|
|
}
|
|
|
|
function choosedir(labelname)
|
|
{
|
|
try {
|
|
var keepgoing = true;
|
|
while (keepgoing) {
|
|
var nsIFilePicker = Components.interfaces.nsIFilePicker;
|
|
var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
|
|
var bundle = document.getElementById("bundle_cckwizard");
|
|
fp.init(window, bundle.getString("chooseDirectory"), nsIFilePicker.modeGetFolder);
|
|
fp.appendFilters(nsIFilePicker.filterHTML | nsIFilePicker.filterText |
|
|
nsIFilePicker.filterAll | nsIFilePicker.filterImages | nsIFilePicker.filterXML);
|
|
|
|
if (fp.show() == nsIFilePicker.returnOK && fp.fileURL.spec && fp.fileURL.spec.length > 0) {
|
|
var label = document.getElementById(labelname);
|
|
label.value = fp.file.path;
|
|
}
|
|
keepgoing = false;
|
|
}
|
|
}
|
|
catch(ex) {
|
|
}
|
|
}
|
|
|
|
function chooseimage(labelname, imagename)
|
|
{
|
|
try {
|
|
var nsIFilePicker = Components.interfaces.nsIFilePicker;
|
|
var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
|
|
var bundle = document.getElementById("bundle_cckwizard");
|
|
fp.init(window, bundle.getString("chooseImage"), nsIFilePicker.modeOpen);
|
|
fp.appendFilters(nsIFilePicker.filterImages);
|
|
|
|
if (fp.show() == nsIFilePicker.returnOK && fp.fileURL.spec && fp.fileURL.spec.length > 0) {
|
|
var label = document.getElementById(labelname);
|
|
label.value = fp.file.path;
|
|
document.getElementById(imagename).src = fp.fileURL.spec;
|
|
}
|
|
}
|
|
catch(ex) {
|
|
}
|
|
}
|
|
|
|
function initimage(labelname, imagename)
|
|
{
|
|
var sourcefile = Components.classes["@mozilla.org/file/local;1"]
|
|
.createInstance(Components.interfaces.nsILocalFile);
|
|
try {
|
|
sourcefile.initWithPath(document.getElementById(labelname).value);
|
|
var ioServ = Components.classes["@mozilla.org/network/io-service;1"]
|
|
.getService(Components.interfaces.nsIIOService);
|
|
var foo = ioServ.newFileURI(sourcefile);
|
|
document.getElementById(imagename).src = foo.spec;
|
|
} catch (e) {
|
|
document.getElementById(imagename).src = '';
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function CreateConfig()
|
|
{
|
|
window.openDialog("chrome://cckwizard/content/config.xul","createconfig","chrome,centerscreen,modal");
|
|
updateconfiglist();
|
|
}
|
|
|
|
function CopyConfig()
|
|
{
|
|
window.openDialog("chrome://cckwizard/content/config.xul","copyconfig","chrome,centerscreen,modal");
|
|
|
|
updateconfiglist();
|
|
}
|
|
|
|
function DeleteConfig()
|
|
{
|
|
var bundle = document.getElementById("bundle_cckwizard");
|
|
|
|
var button = gPromptService.confirmEx(window, bundle.getString("windowTitle"), bundle.getString("deleteConfirm"),
|
|
gPromptService.BUTTON_TITLE_YES * gPromptService.BUTTON_POS_0 +
|
|
gPromptService.BUTTON_TITLE_NO * gPromptService.BUTTON_POS_1,
|
|
null, null, null, null, {});
|
|
if (button == 0) {
|
|
gPrefBranch.deleteBranch("cck.config."+currentconfigname);
|
|
currentconfigname = "";
|
|
currentconfigpath = "";
|
|
updateconfiglist();
|
|
}
|
|
}
|
|
|
|
function SetSaveOnExitPref()
|
|
{
|
|
gPrefBranch.setBoolPref("cck.save_on_exit", document.getElementById("saveOnExit").checked);
|
|
}
|
|
|
|
function OpenCCKWizard()
|
|
{
|
|
try {
|
|
document.getElementById("saveOnExit").checked = gPrefBranch.getBoolPref("cck.save_on_exit");
|
|
} catch (ex) {
|
|
}
|
|
try {
|
|
document.getElementById("zipLocation").value = gPrefBranch.getCharPref("cck.path_to_zip");
|
|
} catch (ex) {
|
|
}
|
|
|
|
|
|
}
|
|
|
|
function ShowMain()
|
|
{
|
|
document.getElementById('example-window').canRewind = false;
|
|
updateconfiglist();
|
|
}
|
|
|
|
function updateconfiglist()
|
|
{
|
|
var menulist = document.getElementById('byb-configs')
|
|
menulist.selectedIndex = -1;
|
|
menulist.removeAllItems();
|
|
var configname;
|
|
var selecteditem = false;
|
|
|
|
|
|
|
|
var list = gPrefBranch.getChildList("cck.config.", {});
|
|
for (var i = 0; i < list.length; ++i) {
|
|
configname = list[i].replace(/cck.config./g, "");
|
|
var menulistitem = menulist.appendItem(configname,configname);
|
|
menulistitem.minWidth=menulist.width;
|
|
if (configname == currentconfigname) {
|
|
menulist.selectedItem = menulistitem;
|
|
selecteditem = true;
|
|
document.getElementById('example-window').canAdvance = true;
|
|
document.getElementById('byb-configs').disabled = false;
|
|
document.getElementById('deleteconfig').disabled = false;
|
|
document.getElementById('showconfig').disabled = false;
|
|
document.getElementById('copyconfig').disabled = false;
|
|
}
|
|
}
|
|
if ((!selecteditem) && (list.length > 0)) {
|
|
menulist.selectedIndex = 0;
|
|
setcurrentconfig(list[0].replace(/cck.config./g, ""));
|
|
}
|
|
if (list.length == 0) {
|
|
document.getElementById('example-window').canAdvance = false;
|
|
document.getElementById('byb-configs').disabled = true;
|
|
document.getElementById('deleteconfig').disabled = true;
|
|
document.getElementById('showconfig').disabled = true;
|
|
document.getElementById('copyconfig').disabled = true;
|
|
currentconfigname = "";
|
|
currentconfigpath = "";
|
|
}
|
|
}
|
|
|
|
function setcurrentconfig(newconfig)
|
|
{
|
|
var destdir = Components.classes["@mozilla.org/file/local;1"]
|
|
.createInstance(Components.interfaces.nsILocalFile);
|
|
|
|
if (currentconfigpath) {
|
|
destdir.initWithPath(currentconfigpath);
|
|
CCKWriteConfigFile(destdir);
|
|
}
|
|
currentconfigname = newconfig;
|
|
currentconfigpath = gPrefBranch.getCharPref("cck.config." + currentconfigname);
|
|
destdir.initWithPath(currentconfigpath);
|
|
ClearAll();
|
|
CCKReadConfigFile(destdir);
|
|
}
|
|
|
|
function saveconfig()
|
|
{
|
|
|
|
|
|
if (currentconfigpath) {
|
|
var destdir = Components.classes["@mozilla.org/file/local;1"]
|
|
.createInstance(Components.interfaces.nsILocalFile);
|
|
|
|
|
|
|
|
destdir.initWithPath(currentconfigpath);
|
|
CCKWriteConfigFile(destdir);
|
|
}
|
|
|
|
}
|
|
|
|
function CloseCCKWizard()
|
|
{
|
|
if (document.getElementById('example-window').pageIndex == 0)
|
|
return;
|
|
var saveOnExit;
|
|
try {
|
|
saveOnExit = gPrefBranch.getBoolPref("cck.save_on_exit");
|
|
} catch (ex) {
|
|
saveOnExit = false;
|
|
}
|
|
|
|
var button;
|
|
if (!saveOnExit) {
|
|
var bundle = document.getElementById("bundle_cckwizard");
|
|
|
|
var button = gPromptService.confirmEx(window, bundle.getString("windowTitle"), bundle.getString("cancelConfirm"),
|
|
(gPromptService.BUTTON_TITLE_YES * gPromptService.BUTTON_POS_0) +
|
|
(gPromptService.BUTTON_TITLE_NO * gPromptService.BUTTON_POS_1),
|
|
null, null, null, null, {});
|
|
} else {
|
|
button = 0;
|
|
}
|
|
|
|
if (button == 0) {
|
|
saveconfig();
|
|
}
|
|
gPrefBranch.setCharPref("cck.path_to_zip", document.getElementById("zipLocation").value);
|
|
}
|
|
|
|
|
|
function OnConfigLoad()
|
|
{
|
|
configCheckOKButton();
|
|
}
|
|
|
|
|
|
function ClearAll()
|
|
{
|
|
/* clear out all data */
|
|
var elements = document.getElementsByAttribute("id", "*");
|
|
for (var i=0; i < elements.length; i++) {
|
|
if ((elements[i].nodeName == "textbox") ||
|
|
(elements[i].nodeName == "radiogroup") ||
|
|
(elements[i].id == "RootKey1") ||
|
|
(elements[i].id == "Type1")) {
|
|
if ((elements[i].id != "saveOnExit") && (elements[i].id != "zipLocation")) {
|
|
elements[i].value = "";
|
|
}
|
|
} else if (elements[i].nodeName == "checkbox") {
|
|
if (elements[i].id != "saveOnExit")
|
|
elements[i].checked = false;
|
|
} else if (elements[i].className == "ccklist") {
|
|
document.getElementById(elements[i].id).clear();
|
|
} else if (elements[i].id == "defaultSearchEngine") {
|
|
document.getElementById(elements[i].id).removeAllItems();
|
|
}
|
|
}
|
|
}
|
|
|
|
function OnConfigOK()
|
|
{
|
|
if (!(ValidateDir('cnc-location'))) {
|
|
return false;
|
|
}
|
|
var configname = document.getElementById('cnc-name').value;
|
|
var configlocation = document.getElementById('cnc-location').value;
|
|
if (window.name == 'copyconfig') {
|
|
var destdir = Components.classes["@mozilla.org/file/local;1"]
|
|
.createInstance(Components.interfaces.nsILocalFile);
|
|
destdir.initWithPath(configlocation);
|
|
this.opener.CCKWriteConfigFile(destdir);
|
|
}
|
|
gPrefBranch.setCharPref("cck.config." + configname, configlocation);
|
|
this.opener.setcurrentconfig(configname);
|
|
|
|
}
|
|
|
|
function configCheckOKButton()
|
|
{
|
|
if ((document.getElementById("cnc-name").value) && (document.getElementById("cnc-location").value)) {
|
|
document.documentElement.getButton("accept").setAttribute( "disabled", "false" );
|
|
} else {
|
|
document.documentElement.getButton("accept").setAttribute( "disabled", "true" );
|
|
}
|
|
}
|
|
|
|
function onNewPreference()
|
|
{
|
|
window.openDialog("chrome://cckwizard/content/pref.xul","newpref","chrome,centerscreen,modal");
|
|
}
|
|
|
|
function onEditPreference()
|
|
{
|
|
window.openDialog("chrome://cckwizard/content/pref.xul","editpref","chrome,centerscreen,modal");
|
|
}
|
|
|
|
Array.prototype.exists = function (x) {
|
|
for (var i = 0; i < this.length; i++) {
|
|
if (this[i] == x) return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
var prefsLockOnly = ["browser.startup.homepage", "browser.throbber.url",
|
|
"network.proxy.type", "network.proxy.http", "network.proxy.http_port",
|
|
"network.proxy.share_proxy_settings", "network.proxy.ssl",
|
|
"network.proxy.ssl_port", "network.proxy.ftp", "network.proxy.ftp_port",
|
|
"network.proxy.gopher", "network.proxy.gopher_port", "network.proxy.socks",
|
|
"network.proxy.socks_port", "network.proxy.socks_version",
|
|
"network.proxy.no_proxies_on", "network.proxy.autoconfig_url"];
|
|
|
|
function OnPrefLoad()
|
|
{
|
|
listbox = this.opener.document.getElementById('prefList');
|
|
if (window.name == 'editpref') {
|
|
window.title = listbox.selectedItem.cck['type'];
|
|
if (listbox.selectedItem.cck['type'] == "integer") {
|
|
document.getElementById('prefvalue').preftype = nsIPrefBranch.PREF_INT;
|
|
}
|
|
document.getElementById('prefname').value = listbox.selectedItem.label;
|
|
if (prefsLockOnly.exists(listbox.selectedItem.label)) {
|
|
document.getElementById('prefvalue').disabled = true;
|
|
document.getElementById('prefvalue').value = this.opener.document.getElementById("bundle_cckwizard").getString("lockError");
|
|
} else {
|
|
document.getElementById('prefvalue').value = listbox.selectedItem.value;
|
|
}
|
|
document.getElementById('prefname').disabled = true;
|
|
if (listbox.selectedItem.cck['lock'] == "true")
|
|
document.getElementById('lockPref').checked = true;
|
|
if (listbox.selectedItem.cck['type'] == "boolean") {
|
|
document.getElementById('prefvalue').hidden = true;
|
|
document.getElementById('prefvalueboolean').hidden = false;
|
|
document.getElementById('prefvalueboolean').value = listbox.selectedItem.value;
|
|
}
|
|
}
|
|
prefCheckOKButton();
|
|
|
|
}
|
|
|
|
function prefCheckOKButton()
|
|
{
|
|
if (document.getElementById("prefname").value) {
|
|
document.documentElement.getButton("accept").setAttribute( "disabled", "false" );
|
|
} else {
|
|
document.documentElement.getButton("accept").setAttribute( "disabled", "true" );
|
|
}
|
|
}
|
|
|
|
function prefSetPrefValue()
|
|
{
|
|
var prefname = document.getElementById('prefname').value;
|
|
try {
|
|
var preftype = gPrefBranch.getPrefType(prefname);
|
|
switch (preftype) {
|
|
case nsIPrefBranch.PREF_STRING:
|
|
document.getElementById('prefvalue').value = gPrefBranch.getCharPref(prefname);
|
|
document.getElementById('prefvalue').hidden = false;
|
|
document.getElementById('prefvalueboolean').hidden = true;
|
|
document.getElementById('prefvalue').preftype = nsIPrefBranch.PREF_STRING;
|
|
break;
|
|
case nsIPrefBranch.PREF_INT:
|
|
document.getElementById('prefvalue').value = gPrefBranch.getIntPref(prefname);
|
|
document.getElementById('prefvalue').hidden = false;
|
|
document.getElementById('prefvalueboolean').hidden = true;
|
|
document.getElementById('prefvalue').preftype = nsIPrefBranch.PREF_INT;
|
|
break;
|
|
case nsIPrefBranch.PREF_BOOL:
|
|
document.getElementById('prefvalue').value = gPrefBranch.getBoolPref(prefname);
|
|
document.getElementById('prefvalue').hidden = true;
|
|
document.getElementById('prefvalueboolean').hidden = false;
|
|
document.getElementById('prefvalueboolean').value = gPrefBranch.getBoolPref(prefname);
|
|
document.getElementById('prefvalue').preftype = nsIPrefBranch.PREF_BOOL;
|
|
break;
|
|
default:
|
|
document.getElementById('prefvalue').hidden = false;
|
|
document.getElementById('prefvalueboolean').hidden = true;
|
|
break;
|
|
}
|
|
} catch (ex) {
|
|
document.getElementById('prefvalue').hidden = false;
|
|
document.getElementById('prefvalueboolean').hidden = true;
|
|
}
|
|
if (prefsLockOnly.exists(prefname)) {
|
|
document.getElementById('prefvalue').disabled = true;
|
|
document.getElementById('prefvalue').value = this.opener.document.getElementById("bundle_cckwizard").getString("lockError");
|
|
} else {
|
|
document.getElementById('prefvalue').disabled = false;
|
|
}
|
|
}
|
|
|
|
function OnPrefOK()
|
|
{
|
|
var bundle = this.opener.document.getElementById("bundle_cckwizard");
|
|
|
|
listbox = this.opener.document.getElementById("prefList");
|
|
for (var i=0; i < listbox.getRowCount(); i++) {
|
|
if ((document.getElementById('prefname').value == listbox.getItemAtIndex(i).label) && (window.name == 'newpref')) {
|
|
gPromptService.alert(window, bundle.getString("windowTitle"),
|
|
bundle.getString("prefExistsError"));
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if (prefsLockOnly.exists(document.getElementById('prefname').value)) {
|
|
document.getElementById('prefvalue').value = "";
|
|
}
|
|
|
|
var value = document.getElementById('prefvalue').value;
|
|
|
|
if ((document.getElementById('prefvalue').preftype == nsIPrefBranch.PREF_INT) && (!(prefsLockOnly.exists(document.getElementById('prefname').value)))) {
|
|
if (parseInt(value) != value) {
|
|
gPromptService.alert(window, bundle.getString("windowTitle"),
|
|
bundle.getString("intError"));
|
|
return false;
|
|
}
|
|
}
|
|
|
|
listbox = this.opener.document.getElementById('prefList');
|
|
var listitem;
|
|
if (window.name == 'newpref') {
|
|
var preftype;
|
|
if ((value.toLowerCase() == "true") || (value.toLowerCase() == "false")) {
|
|
preftype = "boolean";
|
|
} else if (parseInt(value) == value) {
|
|
preftype = "integer";
|
|
} else {
|
|
preftype = "string";
|
|
if (value.charAt(0) == '"')
|
|
value = value.substring(1,value.length);
|
|
if (value.charAt(value.length-1) == '"')
|
|
if (value.charAt(value.length-2) != '\\')
|
|
value = value.substring(0,value.length-1);
|
|
}
|
|
listitem = listbox.appendItem(document.getElementById('prefname').value, value);
|
|
listitem.cck['type'] = preftype;
|
|
} else {
|
|
listitem = listbox.selectedItem;
|
|
listitem.setAttribute("label", document.getElementById('prefname').value);
|
|
value = document.getElementById('prefvalue').value;
|
|
if (value.charAt(0) == '"')
|
|
value = value.substring(1,value.length);
|
|
if (value.charAt(value.length-1) == '"')
|
|
if (value.charAt(value.length-2) != '\\')
|
|
value = value.substring(0,value.length-1);
|
|
listitem.setAttribute("value", value);
|
|
}
|
|
if (document.getElementById('lockPref').checked) {
|
|
listitem.cck['lock'] = "true";
|
|
} else {
|
|
listitem.cck['lock'] = "";
|
|
}
|
|
}
|
|
|
|
function getPageId()
|
|
{
|
|
temp = document.getElementById('example-window');
|
|
if (!temp)
|
|
temp = this.opener.document.getElementById('example-window');
|
|
return temp.currentPage.id;
|
|
}
|
|
|
|
|
|
function onNewBookmark()
|
|
{
|
|
window.openDialog("chrome://cckwizard/content/bookmark.xul","newbookmark","chrome,centerscreen,modal");
|
|
}
|
|
|
|
function onEditBookmark()
|
|
{
|
|
window.openDialog("chrome://cckwizard/content/bookmark.xul","editbookmark","chrome,centerscreen,modal");
|
|
}
|
|
|
|
function OnBookmarkLoad()
|
|
{
|
|
listbox = this.opener.document.getElementById(getPageId() +'.bookmarkList');
|
|
if (window.name == 'editbookmark') {
|
|
document.getElementById('bookmarkname').value = listbox.selectedItem.label;
|
|
document.getElementById('bookmarkurl').value = listbox.selectedItem.value;
|
|
if (listbox.selectedItem.cck['type'] == "live")
|
|
document.getElementById('liveBookmark').checked = true;
|
|
}
|
|
bookmarkCheckOKButton();
|
|
}
|
|
|
|
function bookmarkCheckOKButton()
|
|
{
|
|
if ((document.getElementById("bookmarkname").value) && (document.getElementById("bookmarkurl").value)) {
|
|
document.documentElement.getButton("accept").setAttribute( "disabled", "false" );
|
|
} else {
|
|
document.documentElement.getButton("accept").setAttribute( "disabled", "true" );
|
|
}
|
|
}
|
|
|
|
function OnBookmarkOK()
|
|
{
|
|
|
|
listbox = this.opener.document.getElementById(getPageId() +'.bookmarkList');
|
|
var listitem;
|
|
if (window.name == 'newbookmark') {
|
|
listitem = listbox.appendItem(document.getElementById('bookmarkname').value, document.getElementById('bookmarkurl').value);
|
|
listitem.setAttribute("class", "listitem-iconic");
|
|
} else {
|
|
listitem = listbox.selectedItem;
|
|
listitem.setAttribute("label", document.getElementById('bookmarkname').value);
|
|
listitem.setAttribute("value", document.getElementById('bookmarkurl').value);
|
|
}
|
|
if (document.getElementById('liveBookmark').checked) {
|
|
listitem.cck['type'] = "live";
|
|
listitem.setAttribute("image", "chrome://browser/skin/page-livemarks.png");
|
|
} else {
|
|
listitem.setAttribute("image", "chrome://browser/skin/Bookmarks-folder.png");
|
|
listitem.cck['type'] = "";
|
|
}
|
|
}
|
|
|
|
function enableBookmarkButtons() {
|
|
listbox = document.getElementById(getPageId() +'.bookmarkList');
|
|
if (listbox.selectedItem) {
|
|
document.getElementById(getPageId() +'editBookmarkButton').disabled = false;
|
|
document.getElementById(getPageId() +'deleteBookmarkButton').disabled = false;
|
|
} else {
|
|
document.getElementById(getPageId() +'editBookmarkButton').disabled = true;
|
|
document.getElementById(getPageId() +'deleteBookmarkButton').disabled = true;
|
|
}
|
|
}
|
|
|
|
function onNewBrowserPlugin()
|
|
{
|
|
window.openDialog("chrome://cckwizard/content/plugin.xul","newplugin","chrome,centerscreen,modal");
|
|
}
|
|
|
|
function onEditBrowserPlugin()
|
|
{
|
|
window.openDialog("chrome://cckwizard/content/plugin.xul","editplugin","chrome,centerscreen,modal");
|
|
}
|
|
|
|
function OnPluginLoad()
|
|
{
|
|
listbox = this.opener.document.getElementById('browserPluginList');
|
|
if (window.name == 'editplugin') {
|
|
document.getElementById('pluginpath').value = listbox.selectedItem.label;
|
|
document.getElementById('plugintype').value = listbox.selectedItem.value;
|
|
}
|
|
pluginCheckOKButton();
|
|
|
|
}
|
|
|
|
function pluginCheckOKButton()
|
|
{
|
|
if (document.getElementById("pluginpath").value) {
|
|
document.documentElement.getButton("accept").setAttribute( "disabled", "false" );
|
|
} else {
|
|
document.documentElement.getButton("accept").setAttribute( "disabled", "true" );
|
|
}
|
|
}
|
|
|
|
function OnBrowserPluginOK()
|
|
{
|
|
if (!(ValidateFile('pluginpath'))) {
|
|
return false;
|
|
}
|
|
|
|
listbox = this.opener.document.getElementById('browserPluginList');
|
|
if (window.name == 'newplugin') {
|
|
listitem = listbox.appendItem(document.getElementById('pluginpath').value, document.getElementById('plugintype').value);
|
|
} else {
|
|
listbox.selectedItem.label = document.getElementById('pluginpath').value;
|
|
listbox.selectedItem.value = document.getElementById('plugintype').selectedItem.value;
|
|
}
|
|
}
|
|
|
|
function onNewRegKey()
|
|
{
|
|
window.openDialog("chrome://cckwizard/content/reg.xul","newreg","chrome,centerscreen,modal");
|
|
}
|
|
|
|
function onEditRegKey()
|
|
{
|
|
window.openDialog("chrome://cckwizard/content/reg.xul","editreg","chrome,centerscreen,modal");
|
|
}
|
|
|
|
function OnRegLoad()
|
|
{
|
|
listbox = this.opener.document.getElementById('regList');
|
|
if (window.name == 'editreg') {
|
|
document.getElementById('PrettyName').value = listbox.selectedItem.label;
|
|
document.getElementById('RootKey').value = listbox.selectedItem.cck['rootkey'];
|
|
document.getElementById('Key').value = listbox.selectedItem.cck['key'];
|
|
document.getElementById('Name').value = listbox.selectedItem.cck['name'];
|
|
document.getElementById('NameValue').value = listbox.selectedItem.cck['namevalue'];
|
|
document.getElementById('Type').value = listbox.selectedItem.cck['type'];
|
|
}
|
|
regCheckOKButton();
|
|
}
|
|
|
|
function regCheckOKButton()
|
|
{
|
|
if ((document.getElementById("PrettyName").value) &&
|
|
(document.getElementById("Key").value) &&
|
|
(document.getElementById("Name").value) &&
|
|
(document.getElementById("NameValue").value)) {
|
|
document.documentElement.getButton("accept").setAttribute( "disabled", "false" );
|
|
} else {
|
|
document.documentElement.getButton("accept").setAttribute( "disabled", "true" );
|
|
}
|
|
}
|
|
|
|
function OnRegOK()
|
|
{
|
|
listbox = this.opener.document.getElementById('regList');
|
|
var listitem;
|
|
if (window.name == 'newreg') {
|
|
listitem = listbox.appendItem(document.getElementById('PrettyName').value, "");
|
|
} else {
|
|
listitem = listbox.selectedItem;
|
|
listitem.setAttribute("label", document.getElementById('PrettyName').value);
|
|
}
|
|
listitem.cck['rootkey'] = document.getElementById('RootKey').value;
|
|
listitem.cck['key'] = document.getElementById('Key').value;
|
|
listitem.cck['name'] = document.getElementById('Name').value;
|
|
listitem.cck['namevalue'] = document.getElementById('NameValue').value;
|
|
listitem.cck['type'] = document.getElementById('Type').value;
|
|
}
|
|
|
|
function RefreshDefaultSearchEngines()
|
|
{
|
|
var menulist;
|
|
menulist = document.getElementById('defaultSearchEngine');
|
|
if (!menulist)
|
|
menulist = this.opener.document.getElementById('defaultSearchEngine');
|
|
|
|
var listbox;
|
|
listbox = document.getElementById('searchEngineList');
|
|
if (!listbox)
|
|
listbox = this.opener.document.getElementById('searchEngineList');
|
|
|
|
|
|
var curitem = menulist.value;
|
|
menulist.selectedIndex = -1;
|
|
menulist.removeAllItems();
|
|
|
|
var setcuritem = false;
|
|
|
|
var bundle = document.getElementById("bundle_cckwizard");
|
|
menulistitem = menulist.appendItem(bundle.getString("useBrowserDefault"), "");
|
|
menulistitem.minWidth=menulist.width;
|
|
for (var i=0; i < listbox.getRowCount(); i++) {
|
|
listitem = listbox.getItemAtIndex(i);
|
|
name = listitem.getAttribute("label");
|
|
menulistitem = menulist.appendItem(name, name);
|
|
if (name == curitem)
|
|
setcuritem = true;
|
|
menulistitem.minWidth=menulist.width;
|
|
}
|
|
if (setcuritem)
|
|
menulist.value = curitem;
|
|
else
|
|
menulist.selectedIndex = 0;
|
|
}
|
|
|
|
function onNewSearchEngine()
|
|
{
|
|
window.openDialog("chrome://cckwizard/content/searchengine.xul","newsearchengine","chrome,centerscreen,modal");
|
|
}
|
|
|
|
function onEditSearchEngine()
|
|
{
|
|
window.openDialog("chrome://cckwizard/content/searchengine.xul","editsearchengine","chrome,centerscreen,modal");
|
|
}
|
|
|
|
function OnSearchEngineLoad()
|
|
{
|
|
listbox = this.opener.document.getElementById('searchEngineList');
|
|
if (window.name == 'editsearchengine') {
|
|
document.getElementById('searchengine').value = listbox.selectedItem.cck['engineurl'];
|
|
document.getElementById('searchengineicon').value = listbox.selectedItem.cck['iconurl'];
|
|
document.getElementById('icon').src = listbox.selectedItem.cck['iconurl'];
|
|
}
|
|
searchEngineCheckOKButton();
|
|
|
|
}
|
|
|
|
function searchEngineCheckOKButton()
|
|
{
|
|
if ((document.getElementById("searchengine").value) && (document.getElementById("searchengineicon").value)) {
|
|
document.documentElement.getButton("accept").setAttribute( "disabled", "false" );
|
|
} else {
|
|
document.documentElement.getButton("accept").setAttribute( "disabled", "true" );
|
|
}
|
|
}
|
|
|
|
function OnSearchEngineOK()
|
|
{
|
|
if (!(ValidateFile('searchengine', 'searchengineicon'))) {
|
|
return false;
|
|
}
|
|
|
|
listbox = this.opener.document.getElementById('searchEngineList');
|
|
var listitem;
|
|
var name = getSearchEngineName(document.getElementById('searchengine').value);
|
|
if (!name) {
|
|
var bundle = document.getElementById("bundle_cckwizard");
|
|
gPromptService.alert(window, bundle.getString("windowTitle"),
|
|
bundle.getString("searchEngine.error"));
|
|
return false;
|
|
}
|
|
if (window.name == 'newsearchengine') {
|
|
listitem = listbox.appendItem(name, "");
|
|
listitem.setAttribute("class", "listitem-iconic");
|
|
} else {
|
|
listitem = listbox.selectedItem;
|
|
listbox.selectedItem.label = name;
|
|
}
|
|
var sourcefile = Components.classes["@mozilla.org/file/local;1"]
|
|
.createInstance(Components.interfaces.nsILocalFile);
|
|
sourcefile.initWithPath(document.getElementById('searchengineicon').value);
|
|
var ioServ = Components.classes["@mozilla.org/network/io-service;1"]
|
|
.getService(Components.interfaces.nsIIOService);
|
|
var imgfile = ioServ.newFileURI(sourcefile);
|
|
listitem.setAttribute("image", imgfile.spec);
|
|
|
|
listitem.cck['name'] = name;
|
|
listitem.cck['engineurl'] = document.getElementById('searchengine').value;
|
|
listitem.cck['iconurl'] = document.getElementById('searchengineicon').value;
|
|
|
|
RefreshDefaultSearchEngines();
|
|
}
|
|
|
|
/* This code was lifted from nsSearchService.js.
|
|
It's only purpose is to get the name of the search engine */
|
|
|
|
const kUselessLine = /^\s*($|#)/i;
|
|
|
|
|
|
function onNewCert()
|
|
{
|
|
window.openDialog("chrome://cckwizard/content/cert.xul","newcert","chrome,centerscreen,modal");
|
|
}
|
|
|
|
function onEditCert()
|
|
{
|
|
window.openDialog("chrome://cckwizard/content/cert.xul","editcert","chrome,centerscreen,modal")
|
|
}
|
|
|
|
function OnCertLoad()
|
|
{
|
|
listbox = this.opener.document.getElementById('certList');
|
|
if (window.name == 'editcert') {
|
|
document.getElementById('certpath').value = listbox.selectedItem.label;
|
|
var trustString = listbox.selectedItem.value;
|
|
if (trustString.charAt(0) == 'C') {
|
|
document.getElementById("trustSSL").checked = true;
|
|
}
|
|
if (trustString.charAt(2) == 'C') {
|
|
document.getElementById("trustEmail").checked = true;
|
|
}
|
|
if (trustString.charAt(4) == 'C') {
|
|
document.getElementById("trustObjSign").checked = true;
|
|
}
|
|
}
|
|
certCheckOKButton();
|
|
}
|
|
|
|
function certCheckOKButton()
|
|
{
|
|
if (document.getElementById("certpath").value) {
|
|
document.documentElement.getButton("accept").setAttribute( "disabled", "false" );
|
|
} else {
|
|
document.documentElement.getButton("accept").setAttribute( "disabled", "true" );
|
|
}
|
|
}
|
|
|
|
function OnCertOK()
|
|
{
|
|
if (!(ValidateFile('certpath'))) {
|
|
return false;
|
|
}
|
|
|
|
var trustString = "";
|
|
if (document.getElementById("trustSSL").checked) {
|
|
trustString += "C,"
|
|
} else {
|
|
trustString += "c,"
|
|
}
|
|
if (document.getElementById("trustEmail").checked) {
|
|
trustString += "C,"
|
|
} else {
|
|
trustString += "c,"
|
|
}
|
|
if (document.getElementById("trustObjSign").checked) {
|
|
trustString += "C"
|
|
} else {
|
|
trustString += "c"
|
|
}
|
|
|
|
listbox = this.opener.document.getElementById('certList');
|
|
var listitem;
|
|
if (window.name == 'newcert') {
|
|
listitem = listbox.appendItem(document.getElementById('certpath').value, trustString);
|
|
} else {
|
|
listitem = listbox.selectedItem;
|
|
listbox.selectedItem.label = document.getElementById('certpath').value;
|
|
listbox.selectedItem.value = trustString;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
function onNewBundle()
|
|
{
|
|
try {
|
|
var nsIFilePicker = Components.interfaces.nsIFilePicker;
|
|
var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
|
|
fp.init(window, "Choose File...", nsIFilePicker.modeOpen);
|
|
fp.appendFilters(nsIFilePicker.filterHTML | nsIFilePicker.filterText |
|
|
nsIFilePicker.filterAll | nsIFilePicker.filterImages | nsIFilePicker.filterXML);
|
|
|
|
if (fp.show() == nsIFilePicker.returnOK && fp.fileURL.spec && fp.fileURL.spec.length > 0) {
|
|
listbox = document.getElementById('bundleList');
|
|
listitem = listbox.appendItem(fp.file.path, "");
|
|
}
|
|
}
|
|
catch(ex) {
|
|
}
|
|
}
|
|
|
|
function onEditBundle()
|
|
{
|
|
listbox = document.getElementById('bundleList');
|
|
filename = listbox.selectedItem.label;
|
|
var sourcefile = Components.classes["@mozilla.org/file/local;1"]
|
|
.createInstance(Components.interfaces.nsILocalFile);
|
|
try {
|
|
sourcefile.initWithPath(filename);
|
|
var ioServ = Components.classes["@mozilla.org/network/io-service;1"]
|
|
.getService(Components.interfaces.nsIIOService);
|
|
|
|
} catch (ex) {
|
|
}
|
|
|
|
try {
|
|
var nsIFilePicker = Components.interfaces.nsIFilePicker;
|
|
var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
|
|
var bundle = document.getElementById("bundle_cckwizard");
|
|
fp.init(window, bundle.getString("chooseFile"), nsIFilePicker.modeOpen);
|
|
fp.displayDirectory = sourcefile.parent;
|
|
fp.defaultString = sourcefile.leafName;
|
|
fp.appendFilters(nsIFilePicker.filterAll);
|
|
if (fp.show() == nsIFilePicker.returnOK && fp.fileURL.spec && fp.fileURL.spec.length > 0) {
|
|
listbox.selectedItem.label = fp.file.path;
|
|
}
|
|
}
|
|
catch(ex) {
|
|
}
|
|
}
|
|
|
|
function CreateCCK()
|
|
{
|
|
gPrefBranch.setCharPref("cck.path_to_zip", document.getElementById("zipLocation").value);
|
|
/* ---------- */
|
|
var destdir = Components.classes["@mozilla.org/file/local;1"]
|
|
.createInstance(Components.interfaces.nsILocalFile);
|
|
destdir.initWithPath(currentconfigpath);
|
|
|
|
CCKWriteConfigFile(destdir);
|
|
|
|
destdir.append("jar");
|
|
try {
|
|
destdir.remove(true);
|
|
} catch(ex) {}
|
|
|
|
destdir.append("content");
|
|
destdir.append("cck");
|
|
try {
|
|
destdir.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0775);
|
|
} catch(ex) {}
|
|
|
|
CCKWriteXULOverlay(destdir);
|
|
CCKWriteDTD(destdir);
|
|
CCKWriteCSS(destdir);
|
|
CCKWriteProperties(destdir);
|
|
CCKCopyFile(document.getElementById("iconURL").value, destdir);
|
|
CCKCopyFile(document.getElementById("LargeAnimPath").value, destdir);
|
|
CCKCopyFile(document.getElementById("LargeStillPath").value, destdir);
|
|
CCKCopyChromeToFile("cck.js", destdir)
|
|
if (document.getElementById("noaboutconfig").checked)
|
|
CCKCopyChromeToFile("cck-config.css", destdir)
|
|
|
|
listbox = document.getElementById('certList');
|
|
|
|
for (var i=0; i < listbox.getRowCount(); i++) {
|
|
listitem = listbox.getItemAtIndex(i);
|
|
CCKCopyFile(listitem.getAttribute("label"), destdir);
|
|
}
|
|
|
|
if (document.getElementById("ProxyType").value == "5") {
|
|
CCKCopyFile(document.getElementById("autoproxyfile").value, destdir);
|
|
}
|
|
|
|
/* copy/create contents.rdf if 1.0 */
|
|
var zipdir = Components.classes["@mozilla.org/file/local;1"]
|
|
.createInstance(Components.interfaces.nsILocalFile);
|
|
zipdir.initWithPath(currentconfigpath);
|
|
zipdir.append("jar");
|
|
CCKZip("cck.jar", zipdir, "content");
|
|
|
|
/* ---------- */
|
|
|
|
destdir.initWithPath(currentconfigpath);
|
|
destdir.append("xpi");
|
|
try {
|
|
destdir.remove(true);
|
|
} catch(ex) {}
|
|
try {
|
|
destdir.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0775);
|
|
} catch(ex) {}
|
|
|
|
CCKWriteConfigFile(destdir);
|
|
destdir.append("chrome");
|
|
try {
|
|
destdir.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0775);
|
|
} catch(ex) {}
|
|
|
|
zipdir.append("cck.jar");
|
|
|
|
CCKCopyFile(zipdir.path, destdir);
|
|
|
|
/* ---------- */
|
|
|
|
destdir.initWithPath(currentconfigpath);
|
|
destdir.append("xpi");
|
|
destdir.append("components");
|
|
try {
|
|
destdir.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0775);
|
|
} catch(ex) {}
|
|
|
|
CCKCopyChromeToFile("cckService.js", destdir);
|
|
if (document.getElementById("noaboutconfig").checked)
|
|
CCKCopyChromeToFile("disableAboutConfig.js", destdir);
|
|
|
|
/* ---------- */
|
|
|
|
destdir.initWithPath(currentconfigpath);
|
|
destdir.append("xpi");
|
|
destdir.append("defaults");
|
|
destdir.append("preferences");
|
|
try {
|
|
destdir.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0775);
|
|
} catch(ex) {}
|
|
|
|
CCKWriteDefaultJS(destdir)
|
|
|
|
/* ---------- */
|
|
|
|
destdir.initWithPath(currentconfigpath);
|
|
destdir.append("xpi");
|
|
destdir.append("platform");
|
|
try {
|
|
destdir.remove(true);
|
|
destdir.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0775);
|
|
} catch(ex) {}
|
|
|
|
listbox = document.getElementById('browserPluginList');
|
|
|
|
for (var i=0; i < listbox.getRowCount(); i++) {
|
|
listitem = listbox.getItemAtIndex(i);
|
|
var pluginsubdir = destdir.clone();
|
|
/* If there is no value, assume windows - this should only happen for migration */
|
|
if (listitem.getAttribute("value")) {
|
|
pluginsubdir.append(listitem.getAttribute("value"));
|
|
} else {
|
|
pluginsubdir.append("WINNT_x86-msvc");
|
|
}
|
|
pluginsubdir.append("plugins");
|
|
try {
|
|
pluginsubdir.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0775);
|
|
} catch(ex) {}
|
|
CCKCopyFile(listitem.getAttribute("label"), pluginsubdir);
|
|
}
|
|
|
|
listbox = document.getElementById('searchEngineList');
|
|
|
|
destdir.initWithPath(currentconfigpath);
|
|
destdir.append("xpi");
|
|
destdir.append("searchplugins");
|
|
try {
|
|
destdir.remove(true);
|
|
if (listbox.getRowCount() > 0)
|
|
destdir.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0775);
|
|
} catch(ex) {}
|
|
|
|
for (var i=0; i < listbox.getRowCount(); i++) {
|
|
listitem = listbox.getItemAtIndex(i);
|
|
CCKCopyFile(listitem.cck['engineurl'], destdir);
|
|
CCKCopyFile(listitem.cck['iconurl'], destdir);
|
|
}
|
|
|
|
destdir.initWithPath(currentconfigpath);
|
|
destdir.append("xpi");
|
|
|
|
CCKCopyChromeToFile("chrome.manifest", destdir)
|
|
CCKWriteInstallRDF(destdir);
|
|
|
|
CCKWriteInstallJS(destdir);
|
|
var filename = document.getElementById("filename").value;
|
|
if (filename.length == 0)
|
|
filename = "cck";
|
|
filename += ".xpi";
|
|
|
|
CCKZip("cck.xpi", destdir,
|
|
"chrome", "components", "defaults", "platform", "searchplugins", "chrome.manifest", "install.rdf", "install.js", "cck.config");
|
|
|
|
var outputdir = Components.classes["@mozilla.org/file/local;1"]
|
|
.createInstance(Components.interfaces.nsILocalFile);
|
|
|
|
outputdir.initWithPath(currentconfigpath);
|
|
destdir.append("cck.xpi");
|
|
|
|
if (document.getElementById('bundleList').getRowCount() == 0) {
|
|
outputdir.append(filename);
|
|
try {
|
|
outputdir.remove(true);
|
|
} catch(ex) {}
|
|
outputdir = outputdir.parent;
|
|
destdir.copyTo(outputdir, filename);
|
|
} else {
|
|
var packagedir = Components.classes["@mozilla.org/file/local;1"]
|
|
.createInstance(Components.interfaces.nsILocalFile);
|
|
|
|
packagedir.initWithPath(currentconfigpath);
|
|
packagedir.append("package");
|
|
|
|
try {
|
|
packagedir.remove(true);
|
|
packagedir.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0775);
|
|
} catch(ex) {}
|
|
|
|
CCKCopyFile(destdir.path, packagedir);
|
|
|
|
listbox = document.getElementById('bundleList');
|
|
|
|
for (var i=0; i < listbox.getRowCount(); i++) {
|
|
listitem = listbox.getItemAtIndex(i);
|
|
CCKCopyFile(listitem.getAttribute("label"), packagedir);
|
|
}
|
|
|
|
CCKCopyChromeToFile("install.rdf.mip", packagedir)
|
|
|
|
packagedir.append("install.rdf.mip");
|
|
packagedir.moveTo(packagedir.parent, "install.rdf");
|
|
|
|
packagedir = packagedir.parent;
|
|
|
|
CCKZip("cck.zip", packagedir, "*.xpi", "*.jar", "install.rdf");
|
|
packagedir.append("cck.zip");
|
|
outputdir.append(filename);
|
|
try {
|
|
outputdir.remove(true);
|
|
} catch(ex) {}
|
|
outputdir = outputdir.parent;
|
|
packagedir.copyTo(outputdir, filename);
|
|
}
|
|
|
|
var bundle = document.getElementById("bundle_cckwizard");
|
|
|
|
outputdir.append(filename);
|
|
|
|
gPromptService.alert(window, bundle.getString("windowTitle"),
|
|
bundle.getString("outputLocation") + outputdir.path);
|
|
}
|
|
|
|
/* This function takes a file in the chromedir and creates a real file */
|
|
|
|
function CCKCopyChromeToFile(chromefile, location)
|
|
{
|
|
var file = location.clone();
|
|
file.append(chromefile);
|
|
|
|
try {
|
|
file.remove(false);
|
|
} catch (ex) {
|
|
}
|
|
var fos = Components.classes["@mozilla.org/network/file-output-stream;1"]
|
|
.createInstance(Components.interfaces.nsIFileOutputStream);
|
|
|
|
fos.init(file, -1, -1, false);
|
|
|
|
var ioService=Components.classes["@mozilla.org/network/io-service;1"]
|
|
.getService(Components.interfaces.nsIIOService);
|
|
var scriptableStream=Components
|
|
.classes["@mozilla.org/scriptableinputstream;1"]
|
|
.getService(Components.interfaces.nsIScriptableInputStream);
|
|
|
|
var channel=ioService.newChannel("chrome://cckwizard/content/srcfiles/" + chromefile + ".in",null,null);
|
|
var input=channel.open();
|
|
scriptableStream.init(input);
|
|
var str=scriptableStream.read(input.available());
|
|
scriptableStream.close();
|
|
input.close();
|
|
|
|
fos.write(str, str.length);
|
|
fos.close();
|
|
}
|
|
|
|
|
|
/* This function creates a given zipfile in a given location */
|
|
/* It takes as parameters the names of all the files/directories to be contained in the ZIP file */
|
|
/* It works by creating a CMD file to generate the ZIP */
|
|
/* unless we have the spiffy ZipWriterCompoent from maf.mozdev.org */
|
|
|
|
function CCKZip(zipfile, location)
|
|
{
|
|
var file = location.clone();
|
|
file.append(zipfile);
|
|
try {
|
|
file.remove(false);
|
|
} catch (ex) {}
|
|
|
|
if ((document.getElementById("zipLocation").value == "") && (Components.interfaces.IZipWriterComponent)) {
|
|
var archivefileobj = location.clone();
|
|
archivefileobj.append(zipfile);
|
|
|
|
try {
|
|
var zipwriterobj = Components.classes["@ottley.org/libzip/zip-writer;1"]
|
|
.createInstance(Components.interfaces.IZipWriterComponent);
|
|
|
|
zipwriterobj.CURR_COMPRESS_LEVEL = Components.interfaces.IZipWriterComponent.COMPRESS_LEVEL9;
|
|
|
|
var sourcepathobj = Components.classes["@mozilla.org/file/local;1"]
|
|
.createInstance(Components.interfaces.nsILocalFile);
|
|
sourcepathobj.initWithPath(location.path);
|
|
|
|
zipwriterobj.init(archivefileobj);
|
|
|
|
zipwriterobj.basepath = sourcepathobj;
|
|
|
|
var zipentriestoadd = new Array();
|
|
|
|
for (var i=2; i < arguments.length; i++) {
|
|
var sourcepathobj = location.clone();
|
|
sourcepathobj.append(arguments[i]);
|
|
if (sourcepathobj.exists() && sourcepathobj.isDirectory()) {
|
|
var entries = sourcepathobj.directoryEntries;
|
|
|
|
while (entries.hasMoreElements()) {
|
|
zipentriestoadd.push(entries.getNext());
|
|
}
|
|
} else if (sourcepathobj.exists()) {
|
|
zipentriestoadd.push(sourcepathobj);
|
|
}
|
|
}
|
|
|
|
// Add files depth first
|
|
while (zipentriestoadd.length > 0) {
|
|
var zipentry = zipentriestoadd.pop();
|
|
|
|
zipentry.QueryInterface(Components.interfaces.nsILocalFile);
|
|
|
|
if (!zipentry.isDirectory()) {
|
|
zipwriterobj.add(zipentry);
|
|
}
|
|
|
|
if (zipentry.exists() && zipentry.isDirectory()) {
|
|
var entries = zipentry.directoryEntries;
|
|
|
|
while (entries.hasMoreElements()) {
|
|
zipentriestoadd.push(entries.getNext());
|
|
}
|
|
}
|
|
}
|
|
|
|
zipwriterobj.commitUpdates();
|
|
return;
|
|
} catch (e) {
|
|
gPromptService.alert(window, "", "ZIPWriterComponent error - attempting ZIP");
|
|
}
|
|
}
|
|
|
|
var zipLocation = document.getElementById("zipLocation").value;
|
|
if (zipLocation.length == 0) {
|
|
zipLocation = "zip";
|
|
}
|
|
|
|
platform = navigator.platform;
|
|
var scriptfile = location.clone();
|
|
|
|
if ((navigator.platform == "Win32") || (navigator.platform == "OS/2"))
|
|
scriptfile.append("ccktemp.cmd");
|
|
else
|
|
scriptfile.append("ccktemp.sh");
|
|
var fos = Components.classes["@mozilla.org/network/file-output-stream;1"]
|
|
.createInstance(Components.interfaces.nsIFileOutputStream);
|
|
fos.init(scriptfile, -1, -1, false);
|
|
|
|
var line = "cd ";
|
|
// this param causes a drive switch on win32
|
|
if (navigator.platform == "Win32")
|
|
line += "/d ";
|
|
line += "\"" + location.path + "\"\n";
|
|
fos.write(line, line.length);
|
|
if ((navigator.platform == "Win32") || (navigator.platform == "OS/2"))
|
|
line = "\"" + zipLocation + "\" -r \"" + location.path + "\\" + zipfile + "\"";
|
|
else
|
|
line = zipLocation + " -r \"" + location.path + "/" + zipfile + "\"";
|
|
for (var i=2; i < arguments.length; i++) {
|
|
line += " " + arguments[i];
|
|
}
|
|
line += "\n";
|
|
fos.write(line, line.length);
|
|
fos.close();
|
|
|
|
var sh;
|
|
|
|
// create an nsILocalFile for the executable
|
|
if ((navigator.platform != "Win32") && (navigator.platform != "OS/2")) {
|
|
sh = Components.classes["@mozilla.org/file/local;1"]
|
|
.createInstance(Components.interfaces.nsILocalFile);
|
|
sh.initWithPath("/bin/sh");
|
|
}
|
|
// create an nsIProcess
|
|
var process = Components.classes["@mozilla.org/process/util;1"]
|
|
.createInstance(Components.interfaces.nsIProcess);
|
|
|
|
if ((navigator.platform == "Win32") || (navigator.platform == "OS/2"))
|
|
process.init(scriptfile);
|
|
else
|
|
process.init(sh);
|
|
|
|
var args = [scriptfile.path];
|
|
|
|
try {
|
|
process.run(true, args, args.length);
|
|
} catch (ex) {
|
|
}
|
|
|
|
var file = location.clone();
|
|
file.append(zipfile);
|
|
if (navigator.platform == "OS/2") {
|
|
var bundle = document.getElementById("bundle_cckwizard");
|
|
gPromptService.alert(window, bundle.getString("windowTitle"),
|
|
"OS/2 problem workaround - Click OK to continue");
|
|
}
|
|
if (!file.exists()) {
|
|
var bundle = document.getElementById("bundle_cckwizard");
|
|
gPromptService.alert(window, bundle.getString("windowTitle"),
|
|
bundle.getString("zipError"));
|
|
}
|
|
scriptfile.remove(false);
|
|
}
|
|
|
|
function CCKWriteXULOverlay(destdir)
|
|
{
|
|
var tooltipXUL = ' <button id="navigator-throbber" tooltiptext="&throbber.tooltip;"/>\n';
|
|
|
|
var titlebarXUL = ' <window id="main-window" titlemodifier="&mainWindow.titlemodifier;"/>\n';
|
|
|
|
var helpmenu1 = ' <menupopup id="menu_HelpPopup">\n';
|
|
var helpmenu2 = ' <menuseparator insertafter="aboutSeparator"/>\n';
|
|
var helpmenu3 = ' <menuitem label="&cckHelp.label;" insertafter="aboutSeparator"\n';
|
|
var helpmenu4 = ' accesskey="&cckHelp.accesskey;"\n';
|
|
var helpmenu5 = ' oncommand="openUILink(getCCKLink(\'cckhelp.url\'), event, false, true);"\n';
|
|
var helpmenu6 = ' onclick="checkForMiddleClick(this, event);"/>\n';
|
|
var helpmenu7 = ' </menupopup>\n';
|
|
|
|
var file = destdir.clone();
|
|
file.append("cck-browser-overlay.xul");
|
|
try {
|
|
file.remove(false);
|
|
} catch (ex) {}
|
|
var fos = Components.classes["@mozilla.org/network/file-output-stream;1"]
|
|
.createInstance(Components.interfaces.nsIFileOutputStream);
|
|
|
|
fos.init(file, -1, -1, false);
|
|
|
|
var ioService=Components.classes["@mozilla.org/network/io-service;1"]
|
|
.getService(Components.interfaces.nsIIOService);
|
|
var scriptableStream=Components.classes["@mozilla.org/scriptableinputstream;1"]
|
|
.getService(Components.interfaces.nsIScriptableInputStream);
|
|
|
|
var channel=ioService.newChannel("chrome://cckwizard/content/srcfiles/cck-browser-overlay.xul.in",null,null);
|
|
var input=channel.open();
|
|
scriptableStream.init(input);
|
|
var str=scriptableStream.read(input.available());
|
|
scriptableStream.close();
|
|
input.close();
|
|
|
|
var tooltip = document.getElementById("AnimatedLogoTooltip").value;
|
|
if (tooltip && (tooltip.length > 0))
|
|
str = str.replace(/%button%/g, tooltipXUL);
|
|
else
|
|
str = str.replace(/%button%/g, "");
|
|
|
|
var titlebar = document.getElementById("CompanyName").value;
|
|
if (titlebar && (titlebar.length > 0))
|
|
str = str.replace(/%window%/g, titlebarXUL);
|
|
else
|
|
str = str.replace(/%window%/g, "");
|
|
|
|
var helpmenu = document.getElementById("HelpMenuCommandName").value;
|
|
if (helpmenu && (helpmenu.length > 0)) {
|
|
var helpmenuXUL = helpmenu1 + helpmenu2 + helpmenu3;
|
|
var helpmenuakey = document.getElementById("HelpMenuCommandAccesskey").value;
|
|
if (helpmenuakey && (helpmenuakey.length > 0)) {
|
|
helpmenuXUL += helpmenu4;
|
|
}
|
|
helpmenuXUL += helpmenu5 + helpmenu6 + helpmenu7;
|
|
str = str.replace(/%menupopup%/g, helpmenuXUL);
|
|
} else {
|
|
str = str.replace(/%menupopup%/g, "");
|
|
}
|
|
|
|
fos.write(str, str.length);
|
|
fos.close();
|
|
}
|
|
|
|
function CCKWriteCSS(destdir)
|
|
{
|
|
|
|
var animated1 = '#navigator-throbber[busy="true"] {\n';
|
|
var animated2 = 'toolbar[iconsize="small"] #navigator-throbber[busy="true"],\n';
|
|
var animated3 = 'toolbar[mode="text"] #navigator-throbber[busy="true"] {\n';
|
|
var atrest1 = '#navigator-throbber {\n';
|
|
var atrest2 = 'toolbar[iconsize="small"] #navigator-throbber,\n';
|
|
var atrest3 = 'toolbar[mode="text"] #navigator-throbber {\n';
|
|
var liststyleimage = ' list-style-image: url("chrome://cck/content/';
|
|
var liststyleimageend = '");\n}\n';
|
|
|
|
var file = destdir.clone();
|
|
file.append("cck.css");
|
|
var fos = Components.classes["@mozilla.org/network/file-output-stream;1"]
|
|
.createInstance(Components.interfaces.nsIFileOutputStream);
|
|
fos.init(file, -1, -1, false);
|
|
|
|
var animatedlogopath = document.getElementById("LargeAnimPath").value;
|
|
if (animatedlogopath && (animatedlogopath.length > 0)) {
|
|
var file = Components.classes["@mozilla.org/file/local;1"]
|
|
.createInstance(Components.interfaces.nsILocalFile);
|
|
file.initWithPath(animatedlogopath);
|
|
|
|
fos.write(animated1, animated1.length);
|
|
fos.write(liststyleimage, liststyleimage.length);
|
|
fos.write(file.leafName, file.leafName.length);
|
|
fos.write(liststyleimageend, liststyleimageend.length);
|
|
|
|
fos.write(animated2, animated2.length);
|
|
fos.write(animated3, animated3.length);
|
|
fos.write(liststyleimage, liststyleimage.length);
|
|
fos.write(file.leafName, file.leafName.length);
|
|
fos.write(liststyleimageend, liststyleimageend.length);
|
|
}
|
|
var atrestlogopath = document.getElementById("LargeStillPath").value;
|
|
if (atrestlogopath && (atrestlogopath.length > 0)) {
|
|
var file = Components.classes["@mozilla.org/file/local;1"]
|
|
.createInstance(Components.interfaces.nsILocalFile);
|
|
file.initWithPath(atrestlogopath);
|
|
|
|
fos.write(atrest1, atrest1.length);
|
|
fos.write(liststyleimage, liststyleimage.length);
|
|
fos.write(file.leafName, file.leafName.length);
|
|
fos.write(liststyleimageend, liststyleimageend.length);
|
|
|
|
fos.write(atrest2, atrest2.length);
|
|
fos.write(atrest3, atrest3.length);
|
|
fos.write(liststyleimage, liststyleimage.length);
|
|
fos.write(file.leafName, file.leafName.length);
|
|
fos.write(liststyleimageend, liststyleimageend.length);
|
|
}
|
|
fos.close();
|
|
}
|
|
|
|
function CCKWriteDTD(destdir)
|
|
{
|
|
var file = destdir.clone();
|
|
file.append("cck.dtd");
|
|
try {
|
|
file.remove(false);
|
|
} catch (ex) {}
|
|
var fos = Components.classes["@mozilla.org/network/file-output-stream;1"]
|
|
.createInstance(Components.interfaces.nsIFileOutputStream);
|
|
var cos = Components.classes["@mozilla.org/intl/converter-output-stream;1"]
|
|
.createInstance(Components.interfaces.nsIConverterOutputStream);
|
|
|
|
fos.init(file, -1, -1, false);
|
|
cos.init(fos, null, 0, null);
|
|
|
|
var ioService=Components.classes["@mozilla.org/network/io-service;1"]
|
|
.getService(Components.interfaces.nsIIOService);
|
|
var scriptableStream=Components.classes["@mozilla.org/scriptableinputstream;1"]
|
|
.getService(Components.interfaces.nsIScriptableInputStream);
|
|
|
|
var channel=ioService.newChannel("chrome://cckwizard/content/srcfiles/cck.dtd.in",null,null);
|
|
var input=channel.open();
|
|
scriptableStream.init(input);
|
|
var str=scriptableStream.read(input.available());
|
|
scriptableStream.close();
|
|
input.close();
|
|
|
|
str = str.replace(/%throbber.tooltip%/g, htmlEscape(document.getElementById("AnimatedLogoTooltip").value));
|
|
str = str.replace(/%mainWindow.titlemodifier%/g, htmlEscape(document.getElementById("CompanyName").value));
|
|
str = str.replace(/%cckHelp.label%/g, htmlEscape(document.getElementById("HelpMenuCommandName").value));
|
|
str = str.replace(/%cckHelp.accesskey%/g, document.getElementById("HelpMenuCommandAccesskey").value);
|
|
cos.writeString(str);
|
|
cos.close();
|
|
fos.close();
|
|
}
|
|
|
|
|
|
function CCKWriteProperties(destdir)
|
|
{
|
|
var file = destdir.clone();
|
|
file.append("cck.properties");
|
|
|
|
try {
|
|
file.remove(false);
|
|
} catch (ex) {}
|
|
var fos = Components.classes["@mozilla.org/network/file-output-stream;1"]
|
|
.createInstance(Components.interfaces.nsIFileOutputStream);
|
|
var cos = Components.classes["@mozilla.org/intl/converter-output-stream;1"]
|
|
.createInstance(Components.interfaces.nsIConverterOutputStream);
|
|
|
|
fos.init(file, -1, -1, false);
|
|
cos.init(fos, null, 0, null);
|
|
|
|
var ioService=Components.classes["@mozilla.org/network/io-service;1"]
|
|
.getService(Components.interfaces.nsIIOService);
|
|
var scriptableStream=Components.classes["@mozilla.org/scriptableinputstream;1"]
|
|
.getService(Components.interfaces.nsIScriptableInputStream);
|
|
|
|
var channel=ioService.newChannel("chrome://cckwizard/content/srcfiles/cck.properties.in",null,null);
|
|
var input=channel.open();
|
|
scriptableStream.init(input);
|
|
var str=scriptableStream.read(input.available());
|
|
scriptableStream.close();
|
|
input.close();
|
|
|
|
str = str.replace(/%id%/g, document.getElementById("id").value);
|
|
str = str.replace(/%OrganizationName%/g, document.getElementById("OrganizationName").value);
|
|
str = str.replace(/%browser.throbber.url%/g, document.getElementById("AnimatedLogoURL").value);
|
|
str = str.replace(/%cckhelp.url%/g, document.getElementById("HelpMenuCommandURL").value);
|
|
str = str.replace(/%browser.startup.homepage%/g, document.getElementById("HomePageURL").value);
|
|
var overrideurl = document.getElementById('HomePageOverrideURL').value;
|
|
if (overrideurl && overrideurl.length) {
|
|
str = str.replace(/%startup.homepage_override_url%/g, overrideurl);
|
|
} else {
|
|
str = str.replace(/%startup.homepage_override_url%/g, document.getElementById("HomePageURL").value);
|
|
}
|
|
|
|
var bundle = document.getElementById("bundle_cckwizard");
|
|
|
|
if (document.getElementById("defaultSearchEngine").value != bundle.getString("useBrowserDefault")) {
|
|
str = str.replace(/%browser.search.defaultenginename%/g, document.getElementById("defaultSearchEngine").value);
|
|
str = str.replace(/%browser.search.order.1%/g, document.getElementById("defaultSearchEngine").value);
|
|
} else {
|
|
str = str.replace(/%browser.search.defaultenginename%/g, "");
|
|
str = str.replace(/%browser.search.order.1%/g, "");
|
|
}
|
|
|
|
str = str.replace(/%PopupAllowedSites%/g, document.getElementById("PopupAllowedSites").value);
|
|
str = str.replace(/%InstallAllowedSites%/g, document.getElementById("InstallAllowedSites").value);
|
|
cos.writeString(str);
|
|
|
|
if (document.getElementById("hidden").checked)
|
|
{
|
|
str = "hidden=true\n";
|
|
cos.writeString(str);
|
|
}
|
|
|
|
if (document.getElementById("locked").checked)
|
|
{
|
|
str = "locked=true\n";
|
|
cos.writeString(str);
|
|
}
|
|
|
|
radio = document.getElementById('ToolbarLocation');
|
|
str = "ToolbarLocation=" + radio.value + "\n";
|
|
cos.writeString(str);
|
|
|
|
/* Add toolbar/bookmark stuff at end */
|
|
str = document.getElementById('ToolbarFolder1').value;
|
|
if (str && str.length) {
|
|
str = "ToolbarFolder1=" + str + "\n";
|
|
cos.writeString(str);
|
|
listbox = document.getElementById('tbFolder.bookmarkList');
|
|
for (var j=0; j < listbox.getRowCount(); j++) {
|
|
listitem = listbox.getItemAtIndex(j);
|
|
str = "ToolbarFolder1.BookmarkTitle" + (j+1) + "=" + listitem.getAttribute("label") + "\n";
|
|
cos.writeString(str);
|
|
var str = "ToolbarFolder1.BookmarkURL" + (j+1) + "=" + listitem.getAttribute("value") + "\n";
|
|
cos.writeString(str);
|
|
if (listitem.cck['type'] && listitem.cck['type'].length) {
|
|
var str = "ToolbarFolder1.BookmarkType" + (j+1) + "=" + listitem.cck['type'] + "\n";
|
|
cos.writeString(str);
|
|
}
|
|
}
|
|
}
|
|
|
|
listbox = document.getElementById('tb.bookmarkList');
|
|
for (var j=0; j < listbox.getRowCount(); j++) {
|
|
listitem = listbox.getItemAtIndex(j);
|
|
str = "ToolbarBookmarkTitle" + (j+1) + "=" + listitem.getAttribute("label") + "\n";
|
|
cos.writeString(str);
|
|
var str = "ToolbarBookmarkURL" + (j+1) + "=" + listitem.getAttribute("value") + "\n";
|
|
cos.writeString(str);
|
|
if (listitem.cck['type'] && listitem.cck['type'].length) {
|
|
var str = "ToolbarBookmarkType" + (j+1) + "=" + listitem.cck['type'] + "\n";
|
|
cos.writeString(str);
|
|
}
|
|
}
|
|
|
|
radio = document.getElementById('BookmarkLocation');
|
|
str = "BookmarkLocation=" + radio.value + "\n";
|
|
cos.writeString(str);
|
|
|
|
str = document.getElementById('BookmarkFolder1').value;
|
|
if (str && str.length) {
|
|
str = "BookmarkFolder1=" + str + "\n";
|
|
cos.writeString(str);
|
|
listbox = document.getElementById('bmFolder.bookmarkList');
|
|
for (var j=0; j < listbox.getRowCount(); j++) {
|
|
listitem = listbox.getItemAtIndex(j);
|
|
str = "BookmarkFolder1.BookmarkTitle" + (j+1) + "=" + listitem.getAttribute("label") + "\n";
|
|
cos.writeString(str);
|
|
var str = "BookmarkFolder1.BookmarkURL" + (j+1) + "=" + listitem.getAttribute("value") + "\n";
|
|
cos.writeString(str);
|
|
if (listitem.cck['type'] && listitem.cck['type'].length) {
|
|
var str = "BookmarkFolder1.BookmarkType" + (j+1) + "=" + listitem.cck['type'] + "\n";
|
|
cos.writeString(str);
|
|
}
|
|
}
|
|
}
|
|
|
|
listbox = document.getElementById('bm.bookmarkList');
|
|
for (var j=0; j < listbox.getRowCount(); j++) {
|
|
listitem = listbox.getItemAtIndex(j);
|
|
str = "BookmarkTitle" + (j+1) + "=" + listitem.getAttribute("label") + "\n";
|
|
cos.writeString(str);
|
|
var str = "BookmarkURL" + (j+1) + "=" + listitem.getAttribute("value") + "\n";
|
|
cos.writeString(str);
|
|
if (listitem.cck['type'] && listitem.cck['type'].length) {
|
|
var str = "BookmarkType" + (j+1) + "=" + listitem.cck['type'] + "\n";
|
|
cos.writeString(str);
|
|
}
|
|
}
|
|
|
|
|
|
// Registry Keys
|
|
listbox = document.getElementById("regList");
|
|
for (var i=0; i < listbox.getRowCount(); i++) {
|
|
listitem = listbox.getItemAtIndex(i);
|
|
str = "RegName" + (i+1) + "=" + listitem.getAttribute("label") + "\n";
|
|
cos.writeString(str);
|
|
str = "RootKey" + (i+1) + "=" + listitem.cck['rootkey'] + "\n";
|
|
cos.writeString(str);
|
|
str = "Key" + (i+1) + "=" + listitem.cck['key'] + "\n";
|
|
str = str.replace(/\\/g, "\\\\");
|
|
cos.writeString(str);
|
|
str = "Name" + (i+1) + "=" + listitem.cck['name'] + "\n";
|
|
cos.writeString(str);
|
|
str = "NameValue" + (i+1) + "=" + listitem.cck['namevalue'] + "\n";
|
|
cos.writeString(str);
|
|
str = "Type" + (i+1) + "=" + listitem.cck['type'] + "\n";
|
|
cos.writeString(str);
|
|
}
|
|
|
|
// Pref locks
|
|
listbox = document.getElementById("prefList");
|
|
var j = 1;
|
|
for (var i=0; i < listbox.getRowCount(); i++) {
|
|
listitem = listbox.getItemAtIndex(i);
|
|
if (listitem.cck['lock'] == "true") {
|
|
str = "LockPref" + (j) + "=" + listitem.getAttribute("label") + "\n";
|
|
cos.writeString(str);
|
|
j++;
|
|
}
|
|
}
|
|
|
|
|
|
listbox = document.getElementById('certList');
|
|
|
|
for (var i=0; i < listbox.getRowCount(); i++) {
|
|
listitem = listbox.getItemAtIndex(i);
|
|
var file = Components.classes["@mozilla.org/file/local;1"]
|
|
.createInstance(Components.interfaces.nsILocalFile);
|
|
file.initWithPath(listitem.getAttribute("label"));
|
|
str = "Cert"+ (i+1) + "=" + file.leafName + "\n";
|
|
cos.writeString(str);
|
|
str = "CertTrust" + (i+1) + "=" + listitem.getAttribute("value") + "\n";
|
|
cos.writeString(str);
|
|
}
|
|
|
|
cos.close();
|
|
fos.close();
|
|
}
|
|
|
|
function prefIsLocked(prefname)
|
|
{
|
|
listbox = document.getElementById("prefList");
|
|
for (var i=0; i < listbox.getRowCount(); i++) {
|
|
listitem = listbox.getItemAtIndex(i);
|
|
if (prefname == listitem.getAttribute("label"))
|
|
if (listitem.cck['lock'] == "true")
|
|
return true;
|
|
}
|
|
|
|
}
|
|
|
|
function CCKWriteDefaultJS(destdir)
|
|
{
|
|
var throbber1 = 'pref("browser.throbber.url", "';
|
|
var homepage1 = 'pref("browser.startup.homepage", "';
|
|
var homepage2 = 'pref("startup.homepage_override_url", "chrome://cck/content/cck.properties");\n';
|
|
var chromeurl = "chrome://cck/content/cck.properties";
|
|
var prefend = '");\n';
|
|
var useragent1begin = 'pref("general.useragent.vendorComment", "CK-';
|
|
var useragent2begin = 'pref("general.useragent.extra.cck", "(CK-';
|
|
|
|
var useragent1end = '");\n';
|
|
var useragent2end = ')");\n';
|
|
|
|
var searchengine1 = 'pref("browser.search.defaultenginename", "chrome://cck/content/cck.properties");\n';
|
|
var searchengine2 = 'pref("browser.search.order.1", "chrome://cck/content/cck.properties");\n';
|
|
|
|
var file = destdir.clone();
|
|
file.append("firefox-cck.js");
|
|
|
|
var fos = Components.classes["@mozilla.org/network/file-output-stream;1"]
|
|
.createInstance(Components.interfaces.nsIFileOutputStream);
|
|
fos.init(file, -1, -1, false);
|
|
|
|
var logobuttonurl = document.getElementById("AnimatedLogoURL").value;
|
|
if (logobuttonurl && (logobuttonurl.length > 0)) {
|
|
fos.write(throbber1, throbber1.length);
|
|
if (prefIsLocked("browser.throbber.url")) {
|
|
fos.write(logobuttonurl, logobuttonurl.length);
|
|
} else {
|
|
fos.write(chromeurl, chromeurl.length);
|
|
}
|
|
fos.write(prefend, prefend.length);
|
|
}
|
|
|
|
var browserstartuppage = document.getElementById("HomePageURL").value;
|
|
var overrideurl = document.getElementById('HomePageOverrideURL').value;
|
|
if (browserstartuppage && (browserstartuppage.length > 0)) {
|
|
fos.write(homepage1, homepage1.length);
|
|
if (prefIsLocked("browser.startup.homepage")) {
|
|
fos.write(browserstartuppage, browserstartuppage.length);
|
|
} else {
|
|
fos.write(chromeurl, chromeurl.length);
|
|
}
|
|
fos.write(prefend, prefend.length);
|
|
|
|
fos.write(homepage2, homepage2.length);
|
|
} else if (overrideurl && overrideurl.length) {
|
|
fos.write(homepage2, homepage2.length);
|
|
}
|
|
var bundle = document.getElementById("bundle_cckwizard");
|
|
|
|
if (document.getElementById("defaultSearchEngine").value != bundle.getString("useBrowserDefault")) {
|
|
fos.write(searchengine1, searchengine1.length);
|
|
fos.write(searchengine2, searchengine2.length);
|
|
}
|
|
|
|
|
|
var useragent = document.getElementById("OrganizationName").value;
|
|
if (useragent && (useragent.length > 0)) {
|
|
fos.write(useragent1begin, useragent1begin.length);
|
|
fos.write(useragent, useragent.length);
|
|
fos.write(useragent1end, useragent1end.length);
|
|
fos.write(useragent2begin, useragent2begin.length);
|
|
fos.write(useragent, useragent.length);
|
|
fos.write(useragent2end, useragent2end.length);
|
|
}
|
|
|
|
// Preferences
|
|
listbox = document.getElementById("prefList");
|
|
for (var i=0; i < listbox.getRowCount(); i++) {
|
|
listitem = listbox.getItemAtIndex(i);
|
|
/* allow for locking prefs without setting value */
|
|
if ((listitem.getAttribute("value").length) && (!(prefsLockOnly.exists(listitem.getAttribute("label"))))) {
|
|
var line;
|
|
/* If it is a string, put quotes around it */
|
|
if (listitem.cck['type'] == "string") {
|
|
line = 'pref("' + listitem.getAttribute("label") + '", ' + '"' + listitem.getAttribute("value") + '"' + ');\n';
|
|
} else {
|
|
line = 'pref("' + listitem.getAttribute("label") + '", ' + listitem.getAttribute("value") + ');\n';
|
|
}
|
|
fos.write(line, line.length);
|
|
}
|
|
}
|
|
|
|
var radiogroup = document.getElementById("ProxyType");
|
|
if (radiogroup.value == "")
|
|
radiogroup.value = "0";
|
|
|
|
switch ( radiogroup.value ) {
|
|
case "1":
|
|
var proxystringlist = ["HTTPproxyname","SSLproxyname","FTPproxyname","Gopherproxyname","NoProxyname","autoproxyurl" ];
|
|
|
|
for (i = 0; i < proxystringlist.length; i++) {
|
|
var proxyitem = document.getElementById(proxystringlist[i]);
|
|
if (proxyitem.value.length > 0) {
|
|
var line = 'pref("' + proxyitem.getAttribute("preference") + '", "' + proxyitem.value + '");\n';
|
|
fos.write(line, line.length);
|
|
}
|
|
}
|
|
|
|
var proxyintegerlist = ["HTTPportno","SSLportno","FTPportno","Gopherportno","socksv","ProxyType"];
|
|
|
|
for (i = 0; i < proxyintegerlist.length; i++) {
|
|
var proxyitem = document.getElementById(proxyintegerlist[i]);
|
|
if (proxyitem.value.length > 0) {
|
|
var line = 'pref("' + proxyitem.getAttribute("preference") + '", ' + proxyitem.value + ');\n';
|
|
fos.write(line, line.length);
|
|
}
|
|
}
|
|
|
|
var proxyitem = document.getElementById("shareAllProxies");
|
|
var line = 'pref("' + proxyitem.getAttribute("preference") + '", ' + proxyitem.checked + ');\n';
|
|
fos.write(line, line.length);
|
|
break;
|
|
case "2":
|
|
var proxystringlist = ["autoproxyurl"];
|
|
|
|
for (i = 0; i < proxystringlist.length; i++) {
|
|
var proxyitem = document.getElementById(proxystringlist[i]);
|
|
if (proxyitem.value.length > 0) {
|
|
var line = 'pref("' + proxyitem.getAttribute("preference") + '", "' + proxyitem.value + '");\n';
|
|
fos.write(line, line.length);
|
|
}
|
|
}
|
|
|
|
var proxyintegerlist = ["ProxyType"];
|
|
|
|
for (i = 0; i < proxyintegerlist.length; i++) {
|
|
var proxyitem = document.getElementById(proxyintegerlist[i]);
|
|
if (proxyitem.value.length > 0) {
|
|
var line = 'pref("' + proxyitem.getAttribute("preference") + '", ' + proxyitem.value + ');\n';
|
|
fos.write(line, line.length);
|
|
}
|
|
}
|
|
break;
|
|
case "4":
|
|
var proxyintegerlist = ["ProxyType"];
|
|
|
|
for (i = 0; i < proxyintegerlist.length; i++) {
|
|
var proxyitem = document.getElementById(proxyintegerlist[i]);
|
|
if (proxyitem.value.length > 0) {
|
|
var line = 'pref("' + proxyitem.getAttribute("preference") + '", ' + proxyitem.value + ');\n';
|
|
fos.write(line, line.length);
|
|
}
|
|
}
|
|
break;
|
|
case "5":
|
|
var file = Components.classes["@mozilla.org/file/local;1"]
|
|
.createInstance(Components.interfaces.nsILocalFile);
|
|
file.initWithPath(document.getElementById("autoproxyfile").value);
|
|
var line = 'pref("network.proxy.autoconfig_url", "chrome://cck/content/' + file.leafName + '");\n';
|
|
fos.write(line, line.length);
|
|
|
|
var line = 'pref("network.proxy.type", 2);\n';
|
|
fos.write(line, line.length);
|
|
|
|
break;
|
|
}
|
|
|
|
fos.close();
|
|
}
|
|
|
|
function CCKWriteInstallRDF(destdir)
|
|
{
|
|
var idline = "<em:id>%id%</em:id>";
|
|
var nameline = "<em:name>%name%</em:name>";
|
|
var versionline = "<em:version>%version%</em:version>";
|
|
var descriptionline = "<em:description>%description%</em:description>";
|
|
var creatorline = "<em:creator>%creator%</em:creator>";
|
|
var homepageURLline = "<em:homepageURL>%homepageURL%</em:homepageURL>";
|
|
var updateURLline = "<em:updateURL>%updateURL%</em:updateURL>";
|
|
var iconURLline = "<em:iconURL>chrome://cck/content/%iconURL%</em:iconURL>";
|
|
|
|
|
|
var file = destdir.clone();
|
|
|
|
file.append("install.rdf");
|
|
try {
|
|
file.remove(false);
|
|
} catch (ex) {
|
|
}
|
|
var fos = Components.classes["@mozilla.org/network/file-output-stream;1"]
|
|
.createInstance(Components.interfaces.nsIFileOutputStream);
|
|
var cos = Components.classes["@mozilla.org/intl/converter-output-stream;1"]
|
|
.createInstance(Components.interfaces.nsIConverterOutputStream);
|
|
|
|
fos.init(file, -1, -1, false);
|
|
cos.init(fos, null, 0, null);
|
|
|
|
var ioService=Components.classes["@mozilla.org/network/io-service;1"]
|
|
.getService(Components.interfaces.nsIIOService);
|
|
var scriptableStream=Components
|
|
.classes["@mozilla.org/scriptableinputstream;1"]
|
|
.getService(Components.interfaces.nsIScriptableInputStream);
|
|
|
|
var channel=ioService.newChannel("chrome://cckwizard/content/srcfiles/install.rdf.in",null,null);
|
|
var input=channel.open();
|
|
scriptableStream.init(input);
|
|
var str=scriptableStream.read(input.available());
|
|
scriptableStream.close();
|
|
input.close();
|
|
|
|
var id = document.getElementById("id").value;
|
|
if (id && (id.length > 0)) {
|
|
str = str.replace(/%idline%/g, idline);
|
|
str = str.replace(/%id%/g, document.getElementById("id").value);
|
|
}
|
|
|
|
var name = document.getElementById("name").value;
|
|
if (name && (name.length > 0)) {
|
|
str = str.replace(/%nameline%/g, nameline);
|
|
str = str.replace(/%name%/g, htmlEscape(document.getElementById("name").value));
|
|
} else {
|
|
str = str.replace(/%nameline%/g, "");
|
|
}
|
|
|
|
var version = document.getElementById("version").value;
|
|
if (version && (version.length > 0)) {
|
|
str = str.replace(/%versionline%/g, versionline);
|
|
str = str.replace(/%version%/g, document.getElementById("version").value);
|
|
} else {
|
|
str = str.replace(/%versionline%/g, "");
|
|
}
|
|
|
|
var description = document.getElementById("description").value;
|
|
if (description && (description.length > 0)) {
|
|
str = str.replace(/%descriptionline%/g, descriptionline);
|
|
str = str.replace(/%description%/g, htmlEscape(document.getElementById("description").value));
|
|
} else {
|
|
str = str.replace(/%descriptionline%/g, "");
|
|
}
|
|
|
|
var creator = document.getElementById("creator").value;
|
|
if (creator && (creator.length > 0)) {
|
|
str = str.replace(/%creatorline%/g, creatorline);
|
|
str = str.replace(/%creator%/g, htmlEscape(document.getElementById("creator").value));
|
|
} else {
|
|
str = str.replace(/%creatorline%/g, "");
|
|
}
|
|
|
|
var homepageURL = document.getElementById("homepageURL").value;
|
|
if (homepageURL && (homepageURL.length > 0)) {
|
|
str = str.replace(/%homepageURLline%/g, homepageURLline);
|
|
str = str.replace(/%homepageURL%/g, document.getElementById("homepageURL").value);
|
|
} else {
|
|
str = str.replace(/%homepageURLline%/g, "");
|
|
}
|
|
|
|
var updateURL = document.getElementById("updateURL").value;
|
|
if (updateURL && (updateURL.length > 0)) {
|
|
str = str.replace(/%updateURLline%/g, updateURLline);
|
|
str = str.replace(/%updateURL%/g, document.getElementById("updateURL").value);
|
|
} else {
|
|
str = str.replace(/%updateURLline%/g, "");
|
|
}
|
|
|
|
var iconURL = document.getElementById("iconURL").value;
|
|
if (iconURL && (iconURL.length > 0)) {
|
|
var sourcefile = Components.classes["@mozilla.org/file/local;1"]
|
|
.createInstance(Components.interfaces.nsILocalFile);
|
|
sourcefile.initWithPath(iconURL);
|
|
str = str.replace(/%iconURLline%/g, iconURLline);
|
|
str = str.replace(/%iconURL%/g, sourcefile.leafName);
|
|
} else {
|
|
str = str.replace(/%iconURLline%/g, "");
|
|
}
|
|
|
|
cos.writeString(str);
|
|
cos.close();
|
|
fos.close();
|
|
}
|
|
|
|
function CCKWriteInstallJS(destdir)
|
|
{
|
|
var file = destdir.clone();
|
|
file.append("install.js");
|
|
try {
|
|
file.remove(false);
|
|
} catch (ex) {
|
|
}
|
|
var fos = Components.classes["@mozilla.org/network/file-output-stream;1"]
|
|
.createInstance(Components.interfaces.nsIFileOutputStream);
|
|
|
|
fos.init(file, -1, -1, false);
|
|
var ioService=Components.classes["@mozilla.org/network/io-service;1"]
|
|
.getService(Components.interfaces.nsIIOService);
|
|
var scriptableStream=Components
|
|
.classes["@mozilla.org/scriptableinputstream;1"]
|
|
.getService(Components.interfaces.nsIScriptableInputStream);
|
|
|
|
var channel=ioService.newChannel("chrome://cckwizard/content/srcfiles/install.js.in",null,null);
|
|
var input=channel.open();
|
|
scriptableStream.init(input);
|
|
var str=scriptableStream.read(input.available());
|
|
scriptableStream.close();
|
|
input.close();
|
|
|
|
str = str.replace(/%id%/g, document.getElementById("id").value);
|
|
str = str.replace(/%name%/g, document.getElementById("name").value);
|
|
|
|
if (document.getElementById('browserPluginList').getRowCount() > 0)
|
|
str = str.replace(/%plugins%/g, 'addDirectory("", "%version%", "platform", cckextensiondir, "platform", true);');
|
|
else
|
|
str = str.replace(/%plugins%/g, '');
|
|
|
|
if (document.getElementById('searchEngineList').getRowCount() > 0)
|
|
str = str.replace(/%searchplugins%/g, 'addDirectory("", "%version%", "searchplugins", cckextensiondir, "searchplugins", true);');
|
|
else
|
|
str = str.replace(/%searchplugins%/g, '');
|
|
|
|
str = str.replace(/%installrdf%/g, 'addFile("", "%version%", "install.rdf", cckextensiondir, "", true);');
|
|
|
|
str = str.replace(/%version%/g, document.getElementById("version").value);
|
|
|
|
fos.write(str, str.length);
|
|
fos.close();
|
|
}
|
|
|
|
|
|
/* This function copies a source file to a destination directory, including */
|
|
/* deleting the file at the destination if it exists */
|
|
|
|
function CCKCopyFile(source, destination)
|
|
{
|
|
if (source.length == 0)
|
|
return false;
|
|
|
|
var sourcefile = Components.classes["@mozilla.org/file/local;1"]
|
|
.createInstance(Components.interfaces.nsILocalFile);
|
|
sourcefile.initWithPath(source);
|
|
|
|
var destfile = destination.clone();
|
|
destfile.append(sourcefile.leafName);
|
|
|
|
try {
|
|
destfile.remove(false);
|
|
} catch (ex) {}
|
|
|
|
try {
|
|
sourcefile.copyTo(destination, "");
|
|
} catch (ex) {
|
|
var bundle = document.getElementById("bundle_cckwizard");
|
|
var consoleService = Components.classes["@mozilla.org/consoleservice;1"]
|
|
.getService(Components.interfaces.nsIConsoleService);
|
|
consoleService.logStringMessage(bundle.getString("windowTitle") + ": " + ex + "\n\nSource: " + source + "\n\nDestination: " + destination.path );
|
|
throw("Stopping Javascript execution");
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
function ShowConfigInfo()
|
|
{
|
|
window.openDialog("chrome://cckwizard/content/showconfig.xul","showconfig","chrome,centerscreen,modal");
|
|
}
|
|
|
|
function InitConfigInfo()
|
|
{
|
|
var file = Components.classes["@mozilla.org/file/local;1"]
|
|
.createInstance(Components.interfaces.nsILocalFile);
|
|
file.initWithPath(this.opener.currentconfigpath);
|
|
|
|
file.append("cck.config");
|
|
|
|
if (!file.exists())
|
|
return;
|
|
|
|
var stream = Components.classes["@mozilla.org/network/file-input-stream;1"]
|
|
.createInstance(Components.interfaces.nsIFileInputStream);
|
|
|
|
stream.init(file, 0x01, 0644, 0);
|
|
|
|
var lis = stream.QueryInterface(Components.interfaces.nsILineInputStream);
|
|
var line = {value:null};
|
|
|
|
var box = document.getElementById("showconfigy");
|
|
|
|
do {
|
|
var more = lis.readLine(line);
|
|
var str = line.value;
|
|
box.value += str;
|
|
box.value += "\n";
|
|
} while (more);
|
|
|
|
stream.close();
|
|
}
|
|
|
|
|
|
|
|
function CCKWriteConfigFile(destdir)
|
|
{
|
|
var file = destdir.clone();
|
|
if (!file.exists()) {
|
|
var bundle = document.getElementById("bundle_cckwizard");
|
|
var button = gPromptService.confirmEx(window, bundle.getString("windowTitle"), bundle.getString("createDir").replace(/%S/g, file.path),
|
|
gPromptService.BUTTON_TITLE_YES * gPromptService.BUTTON_POS_0 +
|
|
gPromptService.BUTTON_TITLE_NO * gPromptService.BUTTON_POS_1,
|
|
null, null, null, null, {});
|
|
if (button == 0) {
|
|
try {
|
|
file.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0775);
|
|
} catch (ex) {
|
|
gPromptService.alert(window, bundle.getString("windowTitle"),
|
|
bundle.getString("createDirError").replace(/%S/g, filename));
|
|
return;
|
|
}
|
|
} else {
|
|
return;
|
|
}
|
|
}
|
|
file.append("cck.config");
|
|
|
|
var fos = Components.classes["@mozilla.org/network/file-output-stream;1"]
|
|
.createInstance(Components.interfaces.nsIFileOutputStream);
|
|
var cos = Components.classes["@mozilla.org/intl/converter-output-stream;1"]
|
|
.createInstance(Components.interfaces.nsIConverterOutputStream);
|
|
|
|
fos.init(file, -1, -1, false);
|
|
cos.init(fos, null, 0, null);
|
|
|
|
var elements = document.getElementsByAttribute("id", "*")
|
|
for (var i=0; i < elements.length; i++) {
|
|
if ((elements[i].nodeName == "textbox") ||
|
|
(elements[i].id == "RootKey1") ||
|
|
(elements[i].id == "Type1")) {
|
|
if ((elements[i].id != "saveOnExit") && (elements[i].id != "zipLocation")) {
|
|
if (elements[i].value.length > 0) {
|
|
var line = elements[i].getAttribute("id") + "=" + elements[i].value + "\n";
|
|
cos.writeString(line);
|
|
}
|
|
}
|
|
} else if (elements[i].nodeName == "radiogroup") {
|
|
if ((elements[i].value.length > 0) && (elements[i].value != "0")) {
|
|
var line = elements[i].getAttribute("id") + "=" + elements[i].value + "\n";
|
|
cos.writeString(line);
|
|
}
|
|
} else if (elements[i].nodeName == "checkbox") {
|
|
if (elements[i].id != "saveOnExit") {
|
|
if (elements[i].checked) {
|
|
var line = elements[i].getAttribute("id") + "=" + elements[i].checked + "\n";
|
|
cos.writeString(line);
|
|
}
|
|
}
|
|
} else if (elements[i].id == "prefList") {
|
|
listbox = document.getElementById('prefList');
|
|
for (var j=0; j < listbox.getRowCount(); j++) {
|
|
listitem = listbox.getItemAtIndex(j);
|
|
var line = "PreferenceName" + (j+1) + "=" + listitem.getAttribute("label") + "\n";
|
|
cos.writeString(line);
|
|
if (listitem.getAttribute("value").length) {
|
|
var line = "PreferenceValue" + (j+1) + "=" + listitem.getAttribute("value") + "\n";
|
|
cos.writeString(line);
|
|
}
|
|
if (listitem.cck['type'].length > 0) {
|
|
var line = "PreferenceType" + (j+1) + "=" + listitem.cck['type'] + "\n";
|
|
cos.writeString(line);
|
|
}
|
|
if (listitem.cck['lock'].length > 0) {
|
|
var line = "PreferenceLock" + (j+1) + "=" + listitem.cck['lock'] + "\n";
|
|
cos.writeString(line);
|
|
}
|
|
}
|
|
} else if (elements[i].id == "browserPluginList") {
|
|
listbox = document.getElementById('browserPluginList');
|
|
for (var j=0; j < listbox.getRowCount(); j++) {
|
|
listitem = listbox.getItemAtIndex(j);
|
|
var line = "BrowserPluginPath" + (j+1) + "=" + listitem.getAttribute("label") + "\n";
|
|
cos.writeString(line);
|
|
if (listitem.getAttribute("value")) {
|
|
var line = "BrowserPluginType" + (j+1) + "=" + listitem.getAttribute("value") + "\n";
|
|
cos.writeString(line);
|
|
}
|
|
}
|
|
} else if (elements[i].id == "tbFolder.bookmarkList") {
|
|
listbox = document.getElementById('tbFolder.bookmarkList');
|
|
for (var j=0; j < listbox.getRowCount(); j++) {
|
|
listitem = listbox.getItemAtIndex(j);
|
|
var line = "ToolbarFolder1.BookmarkTitle" + (j+1) + "=" + listitem.getAttribute("label") + "\n";
|
|
cos.writeString(line);
|
|
if (listitem.getAttribute("value")) {
|
|
var line = "ToolbarFolder1.BookmarkURL" + (j+1) + "=" + listitem.getAttribute("value") + "\n";
|
|
cos.writeString(line);
|
|
}
|
|
if (listitem.cck['type'].length > 0) {
|
|
var line = "ToolbarFolder1.BookmarkType" + (j+1) + "=" + listitem.cck['type'] + "\n";
|
|
cos.writeString(line);
|
|
}
|
|
}
|
|
} else if (elements[i].id == "tb.bookmarkList") {
|
|
listbox = document.getElementById('tb.bookmarkList');
|
|
for (var j=0; j < listbox.getRowCount(); j++) {
|
|
listitem = listbox.getItemAtIndex(j);
|
|
var line = "ToolbarBookmarkTitle" + (j+1) + "=" + listitem.getAttribute("label") + "\n";
|
|
cos.writeString(line);
|
|
if (listitem.getAttribute("value")) {
|
|
var line = "ToolbarBookmarkURL" + (j+1) + "=" + listitem.getAttribute("value") + "\n";
|
|
cos.writeString(line);
|
|
}
|
|
if (listitem.cck['type'].length > 0) {
|
|
var line = "ToolbarBookmarkType" + (j+1) + "=" + listitem.cck['type'] + "\n";
|
|
cos.writeString(line);
|
|
}
|
|
}
|
|
|
|
} else if (elements[i].id == "bmFolder.bookmarkList") {
|
|
listbox = document.getElementById('bmFolder.bookmarkList');
|
|
for (var j=0; j < listbox.getRowCount(); j++) {
|
|
listitem = listbox.getItemAtIndex(j);
|
|
var line = "BookmarkFolder1.BookmarkTitle" + (j+1) + "=" + listitem.getAttribute("label") + "\n";
|
|
cos.writeString(line);
|
|
if (listitem.getAttribute("value")) {
|
|
var line = "BookmarkFolder1.BookmarkURL" + (j+1) + "=" + listitem.getAttribute("value") + "\n";
|
|
cos.writeString(line);
|
|
}
|
|
if (listitem.cck['type'].length > 0) {
|
|
var line = "BookmarkFolder1.BookmarkType" + (j+1) + "=" + listitem.cck['type'] + "\n";
|
|
cos.writeString(line);
|
|
}
|
|
}
|
|
|
|
} else if (elements[i].id == "bm.bookmarkList") {
|
|
listbox = document.getElementById('bm.bookmarkList');
|
|
for (var j=0; j < listbox.getRowCount(); j++) {
|
|
listitem = listbox.getItemAtIndex(j);
|
|
var line = "BookmarkTitle" + (j+1) + "=" + listitem.getAttribute("label") + "\n";
|
|
cos.writeString(line);
|
|
if (listitem.getAttribute("value")) {
|
|
var line = "BookmarkURL" + (j+1) + "=" + listitem.getAttribute("value") + "\n";
|
|
cos.writeString(line);
|
|
}
|
|
if (listitem.cck['type'].length > 0) {
|
|
var line = "BookmarkType" + (j+1) + "=" + listitem.cck['type'] + "\n";
|
|
cos.writeString(line);
|
|
}
|
|
}
|
|
|
|
} else if (elements[i].id == "regList") {
|
|
listbox = document.getElementById('regList');
|
|
for (var j=0; j < listbox.getRowCount(); j++) {
|
|
listitem = listbox.getItemAtIndex(j);
|
|
var line = "RegName" + (j+1) + "=" + listitem.getAttribute("label") + "\n";
|
|
cos.writeString(line);
|
|
var line = "RootKey" + (j+1) + "=" + listitem.cck['rootkey'] + "\n";
|
|
cos.writeString(line);
|
|
var line = "Key" + (j+1) + "=" + listitem.cck['key'] + "\n";
|
|
cos.writeString(line);
|
|
var line = "Name" + (j+1) + "=" + listitem.cck['name'] + "\n";
|
|
cos.writeString(line);
|
|
var line = "NameValue" + (j+1) + "=" + listitem.cck['namevalue'] + "\n";
|
|
cos.writeString(line);
|
|
var line = "Type" + (j+1) + "=" + listitem.cck['type'] + "\n";
|
|
cos.writeString(line);
|
|
}
|
|
} else if (elements[i].id == "searchEngineList") {
|
|
listbox = document.getElementById('searchEngineList');
|
|
for (var j=0; j < listbox.getRowCount(); j++) {
|
|
listitem = listbox.getItemAtIndex(j);
|
|
var line = "SearchEngine" + (j+1) + "=" + listitem.cck['engineurl'] + "\n";
|
|
cos.writeString(line);
|
|
var line = "SearchEngineIcon" + (j+1) + "=" + listitem.cck['iconurl'] + "\n";
|
|
cos.writeString(line);
|
|
}
|
|
} else if (elements[i].id == "bundleList") {
|
|
listbox = document.getElementById('bundleList')
|
|
for (var j=0; j < listbox.getRowCount(); j++) {
|
|
listitem = listbox.getItemAtIndex(j);
|
|
var line = "BundlePath" + (j+1) + "=" + listitem.getAttribute("label") + "\n";
|
|
cos.writeString(line);
|
|
}
|
|
} else if (elements[i].id == "certList") {
|
|
listbox = document.getElementById('certList')
|
|
for (var j=0; j < listbox.getRowCount(); j++) {
|
|
listitem = listbox.getItemAtIndex(j);
|
|
var line = "CertPath" + (j+1) + "=" + listitem.getAttribute("label") + "\n";
|
|
cos.writeString(line);
|
|
var line = "CertTrust" + (j+1) + "=" + listitem.getAttribute("value") + "\n";
|
|
cos.writeString(line);
|
|
}
|
|
} else if (elements[i].id == "defaultSearchEngine") {
|
|
if (elements[i].value) {
|
|
var line = "DefaultSearchEngine=" + elements[i].value + "\n";
|
|
cos.writeString(line);
|
|
}
|
|
}
|
|
}
|
|
cos.close();
|
|
fos.close();
|
|
}
|
|
|
|
function CCKReadConfigFile(srcdir)
|
|
{
|
|
var file = srcdir.clone();
|
|
file.append("cck.config");
|
|
|
|
if (!file.exists()) {
|
|
DoEnabling();
|
|
toggleProxySettings();
|
|
return;
|
|
}
|
|
|
|
var stream = Components.classes["@mozilla.org/network/file-input-stream;1"]
|
|
.createInstance(Components.interfaces.nsIFileInputStream);
|
|
var cis = Components.classes["@mozilla.org/intl/converter-input-stream;1"]
|
|
.createInstance(Components.interfaces.nsIConverterInputStream);
|
|
|
|
|
|
stream.init(file, 0x01, 0644, 0);
|
|
cis.init(stream, null, 1024, Components.interfaces.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
|
|
var lis = cis.QueryInterface(Components.interfaces.nsIUnicharLineInputStream);
|
|
var line = {value:null};
|
|
|
|
configarray = new Array();
|
|
do {
|
|
var more = lis.readLine(line);
|
|
var str = line.value;
|
|
var equals = str.indexOf('=');
|
|
if (equals != -1) {
|
|
firstpart = str.substring(0,equals);
|
|
secondpart = str.substring(equals+1);
|
|
configarray[firstpart] = secondpart;
|
|
try {
|
|
(document.getElementById(firstpart).value = secondpart)
|
|
} catch (ex) {}
|
|
}
|
|
} while (more);
|
|
|
|
// handle prefs
|
|
listbox = document.getElementById('prefList');
|
|
listbox.clear();
|
|
|
|
var i = 1;
|
|
while( prefname = configarray['PreferenceName' + i]) {
|
|
/* Old config file - figure out pref type */
|
|
if (!(configarray['PreferenceType' + i])) {
|
|
/* We're going to use this a lot */
|
|
value = configarray['PreferenceValue' + i];
|
|
if ((value.toLowerCase() == "true") || (value.toLowerCase() == "false")) {
|
|
configarray['PreferenceType' + i] = "boolean";
|
|
value = value.toLowerCase();
|
|
} else if (parseInt(value) == value) {
|
|
configarray['PreferenceType' + i] = "integer";
|
|
} else {
|
|
/* Remove opening and closing quotes if they exist */
|
|
configarray['PreferenceType' + i] = "string";
|
|
if (value.charAt(0) == '"')
|
|
value = value.substring(1,value.length);
|
|
if (value.charAt(value.length-1) == '"')
|
|
if (value.charAt(value.length-2) != '\\')
|
|
value = value.substring(0,value.length-1);
|
|
}
|
|
configarray['PreferenceValue' + i] = value;
|
|
}
|
|
if (configarray['PreferenceValue' + i]) {
|
|
listitem = listbox.appendItem(prefname, configarray['PreferenceValue' + i]);
|
|
} else {
|
|
listitem = listbox.appendItem(prefname, "");
|
|
}
|
|
|
|
if (configarray['PreferenceLock' + i] == "true") {
|
|
listitem.cck['lock'] = "true";
|
|
} else {
|
|
listitem.cck['lock'] = "";
|
|
}
|
|
listitem.cck['type'] = configarray['PreferenceType' + i];
|
|
i++;
|
|
}
|
|
|
|
// handle plugins
|
|
listbox = document.getElementById('browserPluginList');
|
|
listbox.clear();
|
|
|
|
|
|
var i = 1;
|
|
while( pluginname = configarray['BrowserPluginPath' + i]) {
|
|
if (configarray['BrowserPluginType' + i]) {
|
|
listbox.appendItem(pluginname, configarray['BrowserPluginType' + i]);
|
|
} else {
|
|
listbox.appendItem(pluginname, null);
|
|
}
|
|
i++;
|
|
}
|
|
|
|
// handle toolbar folder with bookmarks
|
|
listbox = document.getElementById('tbFolder.bookmarkList');
|
|
listbox.clear();
|
|
|
|
var i = 1;
|
|
while( name = configarray['ToolbarFolder1.BookmarkTitle' + i]) {
|
|
listitem = listbox.appendItem(name, configarray['ToolbarFolder1.BookmarkURL' + i]);
|
|
listitem.setAttribute("class", "listitem-iconic");
|
|
if (configarray['ToolbarFolder1.BookmarkType' + i] == "live") {
|
|
listitem.cck['type'] = "live";
|
|
listitem.setAttribute("image", "chrome://browser/skin/page-livemarks.png");
|
|
} else {
|
|
listitem.cck['type'] = "";
|
|
listitem.setAttribute("image", "chrome://browser/skin/Bookmarks-folder.png");
|
|
}
|
|
i++;
|
|
}
|
|
// handle toolbar bookmarks
|
|
listbox = document.getElementById('tb.bookmarkList');
|
|
listbox.clear();
|
|
|
|
var i = 1;
|
|
while( name = configarray['ToolbarBookmarkTitle' + i]) {
|
|
listitem = listbox.appendItem(name, configarray['ToolbarBookmarkURL' + i]);
|
|
listitem.setAttribute("class", "listitem-iconic");
|
|
if (configarray['ToolbarBookmarkType' + i] == "live") {
|
|
listitem.cck['type'] = "live";
|
|
listitem.setAttribute("image", "chrome://browser/skin/page-livemarks.png");
|
|
} else {
|
|
listitem.cck['type'] = "";
|
|
listitem.setAttribute("image", "chrome://browser/skin/Bookmarks-folder.png");
|
|
}
|
|
i++;
|
|
}
|
|
|
|
// handle folder with bookmarks
|
|
listbox = document.getElementById('bmFolder.bookmarkList');
|
|
listbox.clear();
|
|
|
|
var i = 1;
|
|
while( name = configarray['BookmarkFolder1.BookmarkTitle' + i]) {
|
|
listitem = listbox.appendItem(name, configarray['BookmarkFolder1.BookmarkURL' + i]);
|
|
listitem.setAttribute("class", "listitem-iconic");
|
|
if (configarray['BookmarkFolder1.BookmarkType' + i] == "live") {
|
|
listitem.cck['type'] = "live";
|
|
listitem.setAttribute("image", "chrome://browser/skin/page-livemarks.png");
|
|
} else {
|
|
listitem.cck['type'] = "";
|
|
listitem.setAttribute("image", "chrome://browser/skin/Bookmarks-folder.png");
|
|
}
|
|
i++;
|
|
}
|
|
// handle bookmarks
|
|
listbox = document.getElementById('bm.bookmarkList');
|
|
listbox.clear();
|
|
|
|
var i = 1;
|
|
while( name = configarray['BookmarkTitle' + i]) {
|
|
listitem = listbox.appendItem(name, configarray['BookmarkURL' + i]);
|
|
listitem.setAttribute("class", "listitem-iconic");
|
|
if (configarray['BookmarkType' + i] == "live") {
|
|
listitem.cck['type'] = "live";
|
|
listitem.setAttribute("image", "chrome://browser/skin/page-livemarks.png");
|
|
} else {
|
|
listitem.cck['type'] = "";
|
|
listitem.setAttribute("image", "chrome://browser/skin/Bookmarks-folder.png");
|
|
}
|
|
i++;
|
|
}
|
|
|
|
|
|
|
|
|
|
// handle registry items
|
|
listbox = document.getElementById('regList');
|
|
listbox.clear();
|
|
|
|
var i = 1;
|
|
while( regname = configarray['RegName' + i]) {
|
|
var listitem = listbox.appendItem(regname, "");
|
|
listitem.cck['rootkey'] = configarray['RootKey' + i];
|
|
listitem.cck['key'] = configarray['Key' + i];
|
|
listitem.cck['name'] = configarray['Name' + i];
|
|
listitem.cck['namevalue'] = configarray['NameValue' + i];
|
|
listitem.cck['type'] = configarray['Type' + i];
|
|
i++;
|
|
}
|
|
|
|
// cert list
|
|
listbox = document.getElementById('certList');
|
|
listbox.clear();
|
|
|
|
var i = 1;
|
|
while( certpath = configarray['CertPath' + i]) {
|
|
var listitem;
|
|
if (configarray['CertTrust' + i]) {
|
|
listitem = listbox.appendItem(certpath, configarray['CertTrust' + i]);
|
|
} else {
|
|
listitem = listbox.appendItem(certpath, "C,C,C");
|
|
}
|
|
i++;
|
|
}
|
|
|
|
// bundle list
|
|
listbox = document.getElementById('bundleList');
|
|
listbox.clear();
|
|
|
|
var i = 1;
|
|
while( bundlepath = configarray['BundlePath' + i]) {
|
|
var listitem = listbox.appendItem(bundlepath, "");
|
|
i++;
|
|
}
|
|
|
|
var sourcefile = Components.classes["@mozilla.org/file/local;1"]
|
|
.createInstance(Components.interfaces.nsILocalFile);
|
|
|
|
// handle searchengines
|
|
listbox = document.getElementById('searchEngineList');
|
|
listbox.clear();
|
|
|
|
var menulist = document.getElementById('defaultSearchEngine')
|
|
menulist.selectedIndex = -1;
|
|
menulist.removeAllItems();
|
|
|
|
/* I changed the name from SearchPlugin to SearchEngine. */
|
|
/* This code is to support old config files */
|
|
var searchname = "SearchEngine";
|
|
if (configarray['SearchPlugin1']) {
|
|
searchname = "SearchPlugin";
|
|
}
|
|
|
|
var i = 1;
|
|
while(searchengineurl = configarray[searchname + i]) {
|
|
name = getSearchEngineName(searchengineurl);
|
|
listitem = listbox.appendItem(name, "");
|
|
listitem.setAttribute("class", "listitem-iconic");
|
|
try {
|
|
sourcefile.initWithPath(configarray[searchname + 'Icon' + i]);
|
|
var ioServ = Components.classes["@mozilla.org/network/io-service;1"]
|
|
.getService(Components.interfaces.nsIIOService);
|
|
var imgfile = ioServ.newFileURI(sourcefile);
|
|
listitem.setAttribute("image", imgfile.spec);
|
|
} catch (e) {
|
|
}
|
|
listitem.cck['name'] = name;
|
|
listitem.cck['engineurl'] = searchengineurl;
|
|
listitem.cck['iconurl'] = configarray[searchname + 'Icon' + i];
|
|
i++;
|
|
}
|
|
|
|
RefreshDefaultSearchEngines();
|
|
|
|
if (configarray["DefaultSearchEngine"]) {
|
|
menulist.value = configarray["DefaultSearchEngine"];
|
|
}
|
|
|
|
var hidden = document.getElementById("hidden");
|
|
hidden.checked = configarray["hidden"];
|
|
|
|
var locked = document.getElementById("locked");
|
|
locked.checked = configarray["locked"];
|
|
|
|
var aboutconfig = document.getElementById("noaboutconfig");
|
|
aboutconfig.checked = configarray["noaboutconfig"];
|
|
|
|
|
|
var proxyitem = document.getElementById("shareAllProxies");
|
|
proxyitem.checked = configarray["shareAllProxies"];
|
|
|
|
var item = document.getElementById("ToolbarLocation");
|
|
if (configarray["ToolbarLocation"]) {
|
|
item.value = configarray["ToolbarLocation"];
|
|
} else {
|
|
item.value = "Last";
|
|
}
|
|
|
|
var item = document.getElementById("BookmarkLocation");
|
|
if (configarray["BookmarkLocation"]) {
|
|
item.value = configarray["BookmarkLocation"];
|
|
} else {
|
|
item.value = "Last";
|
|
}
|
|
|
|
|
|
|
|
DoEnabling();
|
|
toggleProxySettings();
|
|
|
|
stream.close();
|
|
}
|
|
|
|
function Validate(field, message)
|
|
{
|
|
var gIDTest = /^(\{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}|[a-z0-9-\._]*\@[a-z0-9-\._]+)$/i;
|
|
|
|
for (var i=0; i < arguments.length; i++) {
|
|
/* special case ID */
|
|
if (document.getElementById(arguments[i]).id == "id") {
|
|
if (!gIDTest.test(document.getElementById(arguments[i]).value)) {
|
|
var bundle = document.getElementById("bundle_cckwizard");
|
|
gPromptService.alert(window, bundle.getString("windowTitle"), bundle.getString(arguments[i] + ".error"));
|
|
return false;
|
|
}
|
|
} else {
|
|
if (document.getElementById(arguments[i]).value == '') {
|
|
var bundle = document.getElementById("bundle_cckwizard");
|
|
gPromptService.alert(window, bundle.getString("windowTitle"), bundle.getString(arguments[i] + ".error"));
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function ValidateNoSpace(field, message)
|
|
{
|
|
for (var i=0; i < arguments.length; i++) {
|
|
var str = document.getElementById(arguments[i]).value;
|
|
if ((str == '') || (str.match(" "))) {
|
|
var bundle = document.getElementById("bundle_cckwizard");
|
|
gPromptService.alert(window, bundle.getString("windowTitle"), bundle.getString(arguments[i] + ".error"));
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
|
|
function ValidateFile()
|
|
{
|
|
for (var i=0; i < arguments.length; i++) {
|
|
var filename = document.getElementById(arguments[i]).value;
|
|
if (filename.length > 0) {
|
|
var file = Components.classes["@mozilla.org/file/local;1"]
|
|
.createInstance(Components.interfaces.nsILocalFile);
|
|
try {
|
|
file.initWithPath(filename);
|
|
} catch (e) {
|
|
gPromptService.alert(window, "", "File " + filename + " not found");
|
|
return false;
|
|
}
|
|
if (!file.exists() || file.isDirectory()) {
|
|
gPromptService.alert(window, "", "File " + filename + " not found");
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function ValidateDir()
|
|
{
|
|
for (var i=0; i < arguments.length; i++) {
|
|
var filename = document.getElementById(arguments[i]).value;
|
|
if (filename.length > 0) {
|
|
var file = Components.classes["@mozilla.org/file/local;1"]
|
|
.createInstance(Components.interfaces.nsILocalFile);
|
|
try {
|
|
file.initWithPath(filename);
|
|
} catch (e) {
|
|
gPromptService.alert(window, "", "Directory " + filename + " not found");
|
|
return false;
|
|
}
|
|
if (!file.exists()) {
|
|
var bundle = document.getElementById("bundle_cckwizard");
|
|
var button = gPromptService.confirmEx(window, bundle.getString("windowTitle"), bundle.getString("createDir").replace(/%S/g, filename),
|
|
gPromptService.BUTTON_TITLE_YES * gPromptService.BUTTON_POS_0 +
|
|
gPromptService.BUTTON_TITLE_NO * gPromptService.BUTTON_POS_1,
|
|
null, null, null, null, {});
|
|
if (button == 0) {
|
|
try {
|
|
file.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0775);
|
|
} catch (ex) {
|
|
gPromptService.alert(window, bundle.getString("windowTitle"),
|
|
bundle.getString("createDirError").replace(/%S/g, filename));
|
|
return false;
|
|
}
|
|
}
|
|
} else if (!file.isDirectory()) {
|
|
gPromptService.alert(window, "", "Directory " + filename + " not found");
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function toggleProxySettings()
|
|
{
|
|
var http = document.getElementById("HTTPproxyname");
|
|
var httpPort = document.getElementById("HTTPportno");
|
|
var ftp = document.getElementById("FTPproxyname");
|
|
var ftpPort = document.getElementById("FTPportno");
|
|
var gopher = document.getElementById("Gopherproxyname");
|
|
var gopherPort = document.getElementById("Gopherportno");
|
|
var ssl = document.getElementById("SSLproxyname");
|
|
var sslPort = document.getElementById("SSLportno");
|
|
var socks = document.getElementById("SOCKShostname");
|
|
var socksPort = document.getElementById("SOCKSportno");
|
|
var socksVersion = document.getElementById("socksv");
|
|
var socksVersion4 = document.getElementById("SOCKSVersion4");
|
|
var socksVersion5 = document.getElementById("SOCKSVersion5");
|
|
|
|
// arrays
|
|
var urls = [ftp,gopher,ssl];
|
|
var ports = [ftpPort,gopherPort,sslPort];
|
|
var allFields = [ftp,gopher,ssl,ftpPort,gopherPort,sslPort,socks,socksPort,socksVersion,socksVersion4,socksVersion5];
|
|
|
|
if ((document.getElementById("shareAllProxies").checked) || document.getElementById("ProxyType").value != "1") {
|
|
for (i = 0; i < allFields.length; i++)
|
|
allFields[i].setAttribute("disabled", "true");
|
|
} else {
|
|
for (i = 0; i < allFields.length; i++) {
|
|
allFields[i].removeAttribute("disabled");
|
|
}
|
|
}
|
|
}
|
|
|
|
function DoEnabling()
|
|
{
|
|
var i;
|
|
var ftp = document.getElementById("FTPproxyname");
|
|
var ftpPort = document.getElementById("FTPportno");
|
|
var gopher = document.getElementById("Gopherproxyname");
|
|
var gopherPort = document.getElementById("Gopherportno");
|
|
var http = document.getElementById("HTTPproxyname");
|
|
var httpPort = document.getElementById("HTTPportno");
|
|
var socks = document.getElementById("SOCKShostname");
|
|
var socksPort = document.getElementById("SOCKSportno");
|
|
var socksVersion = document.getElementById("socksv");
|
|
var socksVersion4 = document.getElementById("SOCKSVersion4");
|
|
var socksVersion5 = document.getElementById("SOCKSVersion5");
|
|
var ssl = document.getElementById("SSLproxyname");
|
|
var sslPort = document.getElementById("SSLportno");
|
|
var noProxy = document.getElementById("NoProxyname");
|
|
var autoURL = document.getElementById("autoproxyurl");
|
|
var autoFile = document.getElementById("autoproxyfile");
|
|
var autoFileButton = document.getElementById("autoproxyfilebutton");
|
|
var shareAllProxies = document.getElementById("shareAllProxies");
|
|
|
|
// convenience arrays
|
|
var manual = [ftp, ftpPort, gopher, gopherPort, http, httpPort, socks, socksPort, socksVersion, socksVersion4, socksVersion5, ssl, sslPort, noProxy, shareAllProxies];
|
|
var manual2 = [http, httpPort, noProxy, shareAllProxies];
|
|
var auto = [autoURL];
|
|
var file = [autoFile, autoFileButton];
|
|
|
|
// radio buttons
|
|
var radiogroup = document.getElementById("ProxyType");
|
|
if (radiogroup.value == "")
|
|
radiogroup.value = "0";
|
|
|
|
switch ( radiogroup.value ) {
|
|
case "0":
|
|
case "4":
|
|
for (i = 0; i < manual.length; i++)
|
|
manual[i].setAttribute( "disabled", "true" );
|
|
for (i = 0; i < auto.length; i++)
|
|
auto[i].setAttribute( "disabled", "true" );
|
|
break;
|
|
for (i = 0; i < file.length; i++)
|
|
file[i].setAttribute( "disabled", "true" );
|
|
break;
|
|
case "1":
|
|
for (i = 0; i < auto.length; i++)
|
|
auto[i].setAttribute( "disabled", "true" );
|
|
for (i = 0; i < file.length; i++)
|
|
file[i].setAttribute( "disabled", "true" );
|
|
if (!radiogroup.disabled && !shareAllProxies.checked) {
|
|
for (i = 0; i < manual.length; i++) {
|
|
manual[i].removeAttribute( "disabled" );
|
|
}
|
|
} else {
|
|
for (i = 0; i < manual.length; i++)
|
|
manual[i].setAttribute("disabled", "true");
|
|
for (i = 0; i < manual2.length; i++) {
|
|
manual2[i].removeAttribute( "disabled" );
|
|
}
|
|
}
|
|
break;
|
|
case "5":
|
|
for (i = 0; i < auto.length; i++)
|
|
auto[i].setAttribute( "disabled", "true" );
|
|
for (i = 0; i < manual.length; i++)
|
|
manual[i].setAttribute("disabled", "true");
|
|
if (!radiogroup.disabled)
|
|
for (i = 0; i < file.length; i++)
|
|
file[i].removeAttribute("disabled");
|
|
break;
|
|
case "2":
|
|
default:
|
|
for (i = 0; i < manual.length; i++)
|
|
manual[i].setAttribute("disabled", "true");
|
|
for (i = 0; i < file.length; i++)
|
|
file[i].setAttribute( "disabled", "true" );
|
|
if (!radiogroup.disabled)
|
|
for (i = 0; i < auto.length; i++)
|
|
auto[i].removeAttribute("disabled");
|
|
break;
|
|
}
|
|
}
|
|
|
|
function htmlEscape(s)
|
|
{
|
|
s=s.replace(/&/g,'&');
|
|
s=s.replace(/>/g,'>');
|
|
s=s.replace(/</g,'<');
|
|
s=s.replace(/"/g, '"');
|
|
return s;
|
|
}
|
|
|
|
#include search.js
|