126 строки
4.1 KiB
JavaScript
126 строки
4.1 KiB
JavaScript
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
var gInput;
|
|
var gAcceptButton;
|
|
var gLastPref = "general.open_location.last_url";
|
|
var gOpenAppList;
|
|
var gBundle;
|
|
var gAction;
|
|
|
|
function onLoad()
|
|
{
|
|
gInput = document.getElementById("dialog.input");
|
|
gAcceptButton = document.documentElement.getButton("accept");
|
|
gOpenAppList = document.getElementById("openAppList");
|
|
gBundle = document.getElementById("openLocationBundle");
|
|
gAction = window.arguments[0].action;
|
|
// Set arguments action to prevent problems on cancel.
|
|
window.arguments[0].action = "-1";
|
|
|
|
switch (gAction) {
|
|
case "5": // attach web page
|
|
document.title = gBundle.getString("attachTitle");
|
|
document.getElementById("enterLabel").value = gBundle.getString("attachEnterLabel");
|
|
document.getElementById("openWhereBox").setAttribute("hidden", true);
|
|
|
|
// Change accept button text to 'attach'.
|
|
gAcceptButton.label = gBundle.getString("attachButtonLabel");
|
|
gLastPref = "mailnews.attach_web_page.last_url";
|
|
|
|
break;
|
|
|
|
case "2": // open web page from composer
|
|
gOpenAppList.selectedItem = document.getElementById("editWindow");
|
|
var openTopWindow = document.getElementById("currentTab");
|
|
|
|
// Change string to make more sense for Composer.
|
|
openTopWindow.setAttribute("label",
|
|
gBundle.getString("existingNavigatorWindow"));
|
|
|
|
// Disable existing browser and new tab menuitems and create indicator
|
|
// if no browser windows found.
|
|
if (!Services.wm.getMostRecentWindow("navigator:browser")) {
|
|
openTopWindow.setAttribute("disabled", "true");
|
|
document.getElementById("newTab").setAttribute("disabled", "true");
|
|
gAction = "-1";
|
|
}
|
|
break;
|
|
|
|
default: // open web page
|
|
gOpenAppList.value = Services.prefs.getIntPref("general.open_location.last_window_choice");
|
|
}
|
|
|
|
gInput.value = Services.prefs.getStringPref(gLastPref, "");
|
|
if (gInput.value)
|
|
gInput.select(); // XXX should probably be done automatically
|
|
|
|
doEnabling();
|
|
}
|
|
|
|
function doEnabling()
|
|
{
|
|
gAcceptButton.disabled = !gInput.value;
|
|
}
|
|
|
|
function accept()
|
|
{
|
|
var params = window.arguments[0];
|
|
params.url = gInput.value;
|
|
params.action = gOpenAppList.value;
|
|
if (gAction == "4" || params.action == "4")
|
|
return; // private, don't set any preferences
|
|
|
|
if (gAction != "5") { // open web page
|
|
// If there were no browser windows open and not set to open in composer
|
|
// then set to open in a new window.
|
|
if (gAction == "-1" && params.action != "2")
|
|
params.action = "1";
|
|
|
|
// If open web page from navigator window, save last window choice.
|
|
if (gAction == "0")
|
|
Services.prefs.setIntPref("general.open_location.last_window_choice",
|
|
gOpenAppList.value);
|
|
}
|
|
|
|
SetStringPref(gLastPref, gInput.value);
|
|
}
|
|
|
|
function onChooseFile()
|
|
{
|
|
const nsIFilePicker = Ci.nsIFilePicker;
|
|
let fp = Cc["@mozilla.org/filepicker;1"]
|
|
.createInstance(nsIFilePicker);
|
|
fp.init(window, gBundle.getString("chooseFileDialogTitle"),
|
|
nsIFilePicker.modeOpen);
|
|
if (window.arguments[0].action != "5" && gOpenAppList.value == "2") {
|
|
// When loading into Composer, direct user to prefer HTML files and text
|
|
// files, so we call separately to control the order of the filter list.
|
|
fp.appendFilters(nsIFilePicker.filterHTML | nsIFilePicker.filterText);
|
|
fp.appendFilters(nsIFilePicker.filterAll);
|
|
} else {
|
|
fp.appendFilters(nsIFilePicker.filterHTML | nsIFilePicker.filterText |
|
|
nsIFilePicker.filterAll | nsIFilePicker.filterImages |
|
|
nsIFilePicker.filterXML);
|
|
}
|
|
|
|
fp.open(rv => {
|
|
if (rv == nsIFilePicker.returnOK && fp.fileURL.spec &&
|
|
fp.fileURL.spec.length > 0) {
|
|
gInput.value = fp.fileURL.spec;
|
|
}
|
|
|
|
doEnabling();
|
|
});
|
|
}
|
|
|
|
function useUBHistoryItem(aValue)
|
|
{
|
|
gInput.value = aValue;
|
|
gInput.focus();
|
|
doEnabling();
|
|
}
|