summaryrefslogtreecommitdiff
path: root/xpi
diff options
context:
space:
mode:
authorAris-t2 <aris-addons@gmx.net>2016-02-17 13:16:51 +0100
committerAris-t2 <aris-addons@gmx.net>2016-02-17 13:16:51 +0100
commit0fcedf4e8d9cbaba5b8f4abffae1f896a6832728 (patch)
tree37cae59c1de7415bf53de5bc60e0dd733a34c979 /xpi
parent32082d064c3e7eedecbb624ab84f01270873a4b2 (diff)
1.4.8beta6
[locale] Upper Sorbian (hsb) translation updated (thanks to milupo) [locale] Lower Sorbian (dsb) translation updated (thanks to milupo) [locale] French (fr) translation updated (thanks to Zefling) [locale] Italian (it) translation updated (thanks to Styb) [fix] Linux/MacOSX + 'version nr. in add-on lists': preferences button label [change] internal tweaks
Diffstat (limited to 'xpi')
-rw-r--r--xpi/content/addonversionUnix.xml1288
-rw-r--r--xpi/content/addonversionUnix_fx46.xml1043
-rw-r--r--xpi/content/css/addonversion.css13
-rw-r--r--xpi/content/css/addonversion46.css13
-rw-r--r--xpi/content/css/linux/addonversion46_extra.css12
-rw-r--r--xpi/content/css/linux/addonversion_extra.css12
-rw-r--r--xpi/content/css/linux/smallnavbutextra.css2
-rw-r--r--xpi/content/css/mac/addonversion46_extra.css12
-rw-r--r--xpi/content/css/mac/addonversion_extra.css12
-rw-r--r--xpi/content/css/paneluibutton_tweak2.css134
-rw-r--r--xpi/content/css/tabs_curvedall.css65
-rw-r--r--xpi/content/css/win8/addonversion46_extra.css12
-rw-r--r--xpi/content/css/win8/addonversion_extra.css12
-rw-r--r--xpi/content/css/win8/smallnavbutextra.css2
-rw-r--r--xpi/content/css/winaero/addonversion46_extra.css12
-rw-r--r--xpi/content/css/winaero/addonversion_extra.css12
-rw-r--r--xpi/content/css/winaero/smallnavbutextra.css2
-rw-r--r--xpi/content/css/winxp/addonversion46_extra.css12
-rw-r--r--xpi/content/css/winxp/addonversion_extra.css12
-rw-r--r--xpi/content/css/winxp/smallnavbutextra.css2
-rw-r--r--xpi/content/options.js11
-rw-r--r--xpi/content/options.xul5
-rw-r--r--xpi/content/overlay.js4
-rw-r--r--xpi/content/overlay_prefs.css1
-rw-r--r--xpi/install.rdf4
-rw-r--r--xpi/locale/cs/options.dtd3
-rw-r--r--xpi/locale/da/options.dtd3
-rw-r--r--xpi/locale/de/options.dtd3
-rw-r--r--xpi/locale/dsb/options.dtd25
-rw-r--r--xpi/locale/el/options.dtd3
-rw-r--r--xpi/locale/en-US/options.dtd3
-rw-r--r--xpi/locale/es/options.dtd3
-rw-r--r--xpi/locale/et/options.dtd3
-rw-r--r--xpi/locale/fr/options.dtd9
-rw-r--r--xpi/locale/hsb/options.dtd23
-rw-r--r--xpi/locale/it/options.dtd127
-rw-r--r--xpi/locale/pl/options.dtd3
-rw-r--r--xpi/locale/pt-BR/options.dtd3
-rw-r--r--xpi/locale/ru/options.dtd3
-rw-r--r--xpi/locale/sl/options.dtd3
-rw-r--r--xpi/locale/tr/options.dtd3
-rw-r--r--xpi/locale/uk/options.dtd3
-rw-r--r--xpi/locale/zh-CN/options.dtd3
-rw-r--r--xpi/locale/zh-TW/options.dtd3
44 files changed, 2759 insertions, 179 deletions
diff --git a/xpi/content/addonversionUnix.xml b/xpi/content/addonversionUnix.xml
new file mode 100644
index 0000000..e53d47b
--- /dev/null
+++ b/xpi/content/addonversionUnix.xml
@@ -0,0 +1,1288 @@
+<?xml version="1.0"?>
+<!-- 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/. -->
+
+
+<!DOCTYPE page [
+<!ENTITY % extensionsDTD SYSTEM "chrome://mozapps/locale/extensions/extensions.dtd">
+%extensionsDTD;
+]>
+
+<bindings id="addonBindings"
+ xmlns="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xbl="http://www.mozilla.org/xbl">
+
+ <!-- Addon - generic - A normal addon item, or an update to one -->
+ <binding id="addon-generic"
+ extends="chrome://mozapps/content/extensions/extensions.xml#addon-base">
+ <content>
+ <xul:hbox anonid="warning-container"
+ class="warning">
+ <xul:image class="warning-icon"/>
+ <xul:label anonid="warning" flex="1"/>
+ <xul:label anonid="warning-link" class="text-link"/>
+ <xul:button anonid="warning-btn" class="button-link" hidden="true"/>
+ <xul:spacer flex="5000"/> <!-- Necessary to allow the message to wrap -->
+ </xul:hbox>
+ <xul:hbox anonid="error-container"
+ class="error">
+ <xul:image class="error-icon"/>
+ <xul:label anonid="error" flex="1"/>
+ <xul:label anonid="error-link" class="text-link" hidden="true"/>
+ <xul:spacer flex="5000"/> <!-- Necessary to allow the message to wrap -->
+ </xul:hbox>
+ <xul:hbox anonid="pending-container"
+ class="pending">
+ <xul:image class="pending-icon"/>
+ <xul:label anonid="pending" flex="1"/>
+ <xul:button anonid="restart-btn" class="button-link"
+ label="&addon.restartNow.label;"
+ oncommand="document.getBindingParent(this).restart();"/>
+ <xul:button anonid="undo-btn" class="button-link"
+ label="&addon.undoAction.label;"
+ tooltipText="&addon.undoAction.tooltip;"
+ oncommand="document.getBindingParent(this).undo();"/>
+ <xul:spacer flex="5000"/> <!-- Necessary to allow the message to wrap -->
+ </xul:hbox>
+
+ <xul:hbox class="content-container" align="center">
+ <xul:vbox class="icon-container">
+ <xul:image anonid="icon" class="icon"/>
+ </xul:vbox>
+ <xul:vbox class="content-inner-container" flex="1">
+ <xul:hbox class="basicinfo-container">
+ <xul:hbox class="name-container">
+ <xul:label anonid="name" class="name" crop="end" flex="1"
+ tooltip="addonitem-tooltip" xbl:inherits="value=name,tooltiptext=name"/>
+ <xul:label anonid="version" class="version"/>
+ <xul:label class="disabled-postfix" value="&addon.disabled.postfix;"/>
+ <xul:label class="update-postfix" value="&addon.update.postfix;"/>
+ <xul:spacer flex="5000"/> <!-- Necessary to make the name crop -->
+ </xul:hbox>
+ <xul:label anonid="date-updated" class="date-updated"
+ unknown="&addon.unknownDate;"/>
+ </xul:hbox>
+ <xul:hbox class="experiment-container">
+ <svg width="6" height="6" viewBox="0 0 6 6" version="1.1"
+ xmlns="http://www.w3.org/2000/svg"
+ class="experiment-bullet-container">
+ <circle cx="3" cy="3" r="3" class="experiment-bullet"/>
+ </svg>
+ <xul:label anonid="experiment-state" class="experiment-state"/>
+ <xul:label anonid="experiment-time" class="experiment-time"/>
+ </xul:hbox>
+
+ <xul:hbox class="advancedinfo-container" flex="1">
+ <xul:vbox class="description-outer-container" flex="1">
+ <xul:hbox class="description-container">
+ <xul:label anonid="description" class="description" crop="end" flex="1"/>
+ <xul:button anonid="details-btn" class="details button-link"
+ label="&addon.details.label;"
+ tooltiptext="&addon.details.tooltip;"
+ oncommand="document.getBindingParent(this).showInDetailView();"/>
+ <xul:spacer flex="5000"/> <!-- Necessary to make the description crop -->
+ </xul:hbox>
+ <xul:vbox anonid="relnotes-container" class="relnotes-container">
+ <xul:label class="relnotes-header" value="&addon.releaseNotes.label;"/>
+ <xul:label anonid="relnotes-loading" value="&addon.loadingReleaseNotes.label;"/>
+ <xul:label anonid="relnotes-error" hidden="true"
+ value="&addon.errorLoadingReleaseNotes.label;"/>
+ <xul:vbox anonid="relnotes" class="relnotes"/>
+ </xul:vbox>
+ <xul:hbox class="relnotes-toggle-container">
+ <xul:button anonid="relnotes-toggle-btn" class="relnotes-toggle"
+ hidden="true" label="&cmd.showReleaseNotes.label;"
+ tooltiptext="&cmd.showReleaseNotes.tooltip;"
+ showlabel="&cmd.showReleaseNotes.label;"
+ showtooltip="&cmd.showReleaseNotes.tooltip;"
+ hidelabel="&cmd.hideReleaseNotes.label;"
+ hidetooltip="&cmd.hideReleaseNotes.tooltip;"
+ oncommand="document.getBindingParent(this).toggleReleaseNotes();"/>
+ </xul:hbox>
+ </xul:vbox>
+ </xul:hbox>
+ </xul:vbox>
+ <xul:vbox class="status-control-wrapper">
+ <xul:hbox class="status-container">
+ <xul:hbox anonid="checking-update" hidden="true">
+ <xul:image class="spinner"/>
+ <xul:label value="&addon.checkingForUpdates.label;"/>
+ </xul:hbox>
+ <xul:vbox anonid="update-available" class="update-available"
+ hidden="true">
+ <xul:checkbox anonid="include-update" class="include-update"
+ label="&addon.includeUpdate.label;" checked="true"
+ oncommand="document.getBindingParent(this).onIncludeUpdateChanged();"/>
+ <xul:hbox class="update-info-container">
+ <xul:label class="update-available-notice"
+ value="&addon.updateAvailable.label;"/>
+ <xul:button anonid="update-btn" class="addon-control update"
+ label="&addon.updateNow.label;"
+ tooltiptext="&addon.updateNow.tooltip;"
+ oncommand="document.getBindingParent(this).upgrade();"/>
+ </xul:hbox>
+ </xul:vbox>
+ <xul:hbox anonid="install-status" class="install-status"
+ hidden="true"/>
+ </xul:hbox>
+ <xul:hbox anonid="control-container" class="control-container">
+ <xul:button anonid="preferences-btn"
+ class="addon-control preferences"
+ label="&cmd.showPreferencesUnix.label;"
+ tooltiptext="&cmd.showPreferencesUnix.tooltip;"
+ oncommand="document.getBindingParent(this).showPreferences();"/>
+ <!-- label="&cmd.debugAddon.label;" -->
+ <xul:button anonid="debug-btn" class="addon-control debug"
+ label="&cmd.debugAddon.label;"
+ oncommand="document.getBindingParent(this).debug();"/>
+
+ <xul:button anonid="enable-btn" class="addon-control enable"
+ label="&cmd.enableAddon.label;"
+ oncommand="document.getBindingParent(this).userDisabled = false;"/>
+ <xul:button anonid="disable-btn" class="addon-control disable"
+ label="&cmd.disableAddon.label;"
+ oncommand="document.getBindingParent(this).userDisabled = true;"/>
+ <xul:button anonid="remove-btn" class="addon-control remove"
+ label="&cmd.uninstallAddon.label;"
+ oncommand="document.getBindingParent(this).uninstall();"/>
+ <xul:menulist anonid="state-menulist"
+ class="addon-control state"
+ tooltiptext="&cmd.stateMenu.tooltip;">
+ <xul:menupopup>
+ <xul:menuitem anonid="ask-to-activate-menuitem"
+ class="addon-control"
+ label="&cmd.askToActivate.label;"
+ tooltiptext="&cmd.askToActivate.tooltip;"
+ oncommand="document.getBindingParent(this).userDisabled = AddonManager.STATE_ASK_TO_ACTIVATE;"/>
+ <xul:menuitem anonid="always-activate-menuitem"
+ class="addon-control"
+ label="&cmd.alwaysActivate.label;"
+ tooltiptext="&cmd.alwaysActivate.tooltip;"
+ oncommand="document.getBindingParent(this).userDisabled = false;"/>
+ <xul:menuitem anonid="never-activate-menuitem"
+ class="addon-control"
+ label="&cmd.neverActivate.label;"
+ tooltiptext="&cmd.neverActivate.tooltip;"
+ oncommand="document.getBindingParent(this).userDisabled = true;"/>
+ </xul:menupopup>
+ </xul:menulist>
+ </xul:hbox>
+ </xul:vbox>
+ </xul:hbox>
+ </content>
+
+ <implementation>
+ <constructor><![CDATA[
+ this._installStatus.mControl = this;
+
+ this.setAttribute("contextmenu", "addonitem-popup");
+
+ this._showStatus("none");
+
+ this._initWithAddon(this.mAddon);
+
+ gEventManager.registerAddonListener(this, this.mAddon.id);
+ ]]></constructor>
+
+ <destructor><![CDATA[
+ gEventManager.unregisterAddonListener(this, this.mAddon.id);
+ ]]></destructor>
+
+ <field name="_warningContainer">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "warning-container");
+ </field>
+ <field name="_warning">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "warning");
+ </field>
+ <field name="_warningLink">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "warning-link");
+ </field>
+ <field name="_warningBtn">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "warning-btn");
+ </field>
+ <field name="_errorContainer">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "error-container");
+ </field>
+ <field name="_error">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "error");
+ </field>
+ <field name="_errorLink">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "error-link");
+ </field>
+ <field name="_pendingContainer">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "pending-container");
+ </field>
+ <field name="_pending">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "pending");
+ </field>
+ <field name="_infoContainer">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "info-container");
+ </field>
+ <field name="_info">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "info");
+ </field>
+ <field name="_version">
+ document.getAnonymousElementByAttribute(this, "anonid", "version");
+ </field>
+ <field name="_experimentState">
+ document.getAnonymousElementByAttribute(this, "anonid", "experiment-state");
+ </field>
+ <field name="_experimentTime">
+ document.getAnonymousElementByAttribute(this, "anonid", "experiment-time");
+ </field>
+ <field name="_icon">
+ document.getAnonymousElementByAttribute(this, "anonid", "icon");
+ </field>
+ <field name="_dateUpdated">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "date-updated");
+ </field>
+ <field name="_description">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "description");
+ </field>
+ <field name="_stateMenulist">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "state-menulist");
+ </field>
+ <field name="_askToActivateMenuitem">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "ask-to-activate-menuitem");
+ </field>
+ <field name="_alwaysActivateMenuitem">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "always-activate-menuitem");
+ </field>
+ <field name="_neverActivateMenuitem">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "never-activate-menuitem");
+ </field>
+ <field name="_preferencesBtn">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "preferences-btn");
+ </field>
+ <field name="_enableBtn">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "enable-btn");
+ </field>
+ <field name="_debugBtn">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "debug-btn");
+ </field>
+ <field name="_disableBtn">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "disable-btn");
+ </field>
+ <field name="_removeBtn">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "remove-btn");
+ </field>
+ <field name="_updateBtn">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "update-btn");
+ </field>
+ <field name="_controlContainer">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "control-container");
+ </field>
+ <field name="_installStatus">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "install-status");
+ </field>
+ <field name="_checkingUpdate">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "checking-update");
+ </field>
+ <field name="_updateAvailable">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "update-available");
+ </field>
+ <field name="_includeUpdate">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "include-update");
+ </field>
+ <field name="_relNotesLoaded">false</field>
+ <field name="_relNotesToggle">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "relnotes-toggle-btn");
+ </field>
+ <field name="_relNotesLoading">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "relnotes-loading");
+ </field>
+ <field name="_relNotesError">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "relnotes-error");
+ </field>
+ <field name="_relNotesContainer">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "relnotes-container");
+ </field>
+ <field name="_relNotes">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "relnotes");
+ </field>
+
+ <property name="userDisabled">
+ <getter><![CDATA[
+ return this.mAddon.userDisabled;
+ ]]></getter>
+ <setter><![CDATA[
+ this.mAddon.userDisabled = val;
+ ]]></setter>
+ </property>
+
+ <property name="includeUpdate">
+ <getter><![CDATA[
+ return this._includeUpdate.checked && !!this.mManualUpdate;
+ ]]></getter>
+ <setter><![CDATA[
+ //XXXunf Eventually, we'll want to persist this for individual
+ // updates - see bug 594619.
+ this._includeUpdate.checked = !!val;
+ ]]></setter>
+ </property>
+
+ <method name="_initWithAddon">
+ <parameter name="aAddon"/>
+ <body><![CDATA[
+ this.mAddon = aAddon;
+
+ this._installStatus.mAddon = this.mAddon;
+ this._updateDates();
+ this._updateState();
+
+ this.setAttribute("name", aAddon.name);
+
+ var iconURL = this.mAddon.iconURL;
+ if (iconURL)
+ this._icon.src = iconURL;
+ else
+ this._icon.src = "";
+
+ if (shouldShowVersionNumber(this.mAddon))
+ this._version.value = this.mAddon.version;
+ else
+ this._version.hidden = true;
+
+ if (this.mAddon.description)
+ this._description.value = this.mAddon.description;
+ else
+ this._description.hidden = true;
+
+ if (!("applyBackgroundUpdates" in this.mAddon) ||
+ (this.mAddon.applyBackgroundUpdates == AddonManager.AUTOUPDATE_DISABLE ||
+ (this.mAddon.applyBackgroundUpdates == AddonManager.AUTOUPDATE_DEFAULT &&
+ !AddonManager.autoUpdateDefault))) {
+ var self = this;
+ AddonManager.getAllInstalls(function(aInstallsList) {
+ // This can return after the binding has been destroyed,
+ // so try to detect that and return early
+ if (!("onNewInstall" in self))
+ return;
+ for (let install of aInstallsList) {
+ if (install.existingAddon &&
+ install.existingAddon.id == self.mAddon.id &&
+ install.state == AddonManager.STATE_AVAILABLE) {
+ self.onNewInstall(install);
+ self.onIncludeUpdateChanged();
+ }
+ }
+ });
+ }
+ ]]></body>
+ </method>
+
+ <method name="_showStatus">
+ <parameter name="aType"/>
+ <body><![CDATA[
+ this._controlContainer.hidden = aType != "none" &&
+ !(aType == "update-available" && !this.hasAttribute("upgrade"));
+
+ this._installStatus.hidden = aType != "progress";
+ if (aType == "progress")
+ this._installStatus.refreshState();
+ this._checkingUpdate.hidden = aType != "checking-update";
+ this._updateAvailable.hidden = aType != "update-available";
+ this._relNotesToggle.hidden = !(this.mManualUpdate ?
+ this.mManualUpdate.releaseNotesURI :
+ this.mAddon.releaseNotesURI);
+ ]]></body>
+ </method>
+
+ <method name="_updateDates">
+ <body><![CDATA[
+ function formatDate(aDate) {
+ return Cc["@mozilla.org/intl/scriptabledateformat;1"]
+ .getService(Ci.nsIScriptableDateFormat)
+ .FormatDate("",
+ Ci.nsIScriptableDateFormat.dateFormatLong,
+ aDate.getFullYear(),
+ aDate.getMonth() + 1,
+ aDate.getDate()
+ );
+ }
+
+ if (this.mAddon.updateDate)
+ this._dateUpdated.value = formatDate(this.mAddon.updateDate);
+ else
+ this._dateUpdated.value = this._dateUpdated.getAttribute("unknown");
+ ]]></body>
+ </method>
+
+ <method name="_updateState">
+ <body><![CDATA[
+
+ Components.utils.import("resource://gre/modules/Services.jsm", {})
+ var appversion = parseInt(Services.appinfo.version);
+
+ if(appversion >= '42') {
+
+ var SIGNING_REQUIRED = true;
+
+ try {
+ SIGNING_REQUIRED = Services.prefs.getBranch("xpinstall.signatures.").getBoolPref("required");
+ } catch(e) {}
+
+ if (this.parentNode.selectedItem == this)
+ gViewController.updateCommands();
+
+ var pending = this.mAddon.pendingOperations;
+ if (pending != AddonManager.PENDING_NONE) {
+ this.removeAttribute("notification");
+
+ var pending = null;
+ const PENDING_OPERATIONS = ["enable", "disable", "install",
+ "uninstall", "upgrade"];
+ for (let op of PENDING_OPERATIONS) {
+ if (this.isPending(op))
+ pending = op;
+ }
+
+ this.setAttribute("pending", pending);
+ this._pending.textContent = gStrings.ext.formatStringFromName(
+ "notification." + pending,
+ [this.mAddon.name, gStrings.brandShortName], 2
+ );
+ } else {
+ this.removeAttribute("pending");
+
+ var isUpgrade = this.hasAttribute("upgrade");
+ var install = this._installStatus.mInstall;
+
+ if (install && install.state == AddonManager.STATE_DOWNLOAD_FAILED) {
+ this.setAttribute("notification", "warning");
+ this._warning.textContent = gStrings.ext.formatStringFromName(
+ "notification.downloadError",
+ [this.mAddon.name], 1
+ );
+ this._warningBtn.label = gStrings.ext.GetStringFromName("notification.downloadError.retry");
+ this._warningBtn.tooltipText = gStrings.ext.GetStringFromName("notification.downloadError.retry.tooltip");
+ this._warningBtn.setAttribute("oncommand", "document.getBindingParent(this).retryInstall();");
+ this._warningBtn.hidden = false;
+ this._warningLink.hidden = true;
+ } else if (install && install.state == AddonManager.STATE_INSTALL_FAILED) {
+ this.setAttribute("notification", "warning");
+ this._warning.textContent = gStrings.ext.formatStringFromName(
+ "notification.installError",
+ [this.mAddon.name], 1
+ );
+ this._warningBtn.label = gStrings.ext.GetStringFromName("notification.installError.retry");
+ this._warningBtn.tooltipText = gStrings.ext.GetStringFromName("notification.downloadError.retry.tooltip");
+ this._warningBtn.setAttribute("oncommand", "document.getBindingParent(this).retryInstall();");
+ this._warningBtn.hidden = false;
+ this._warningLink.hidden = true;
+ } else if (!isUpgrade && this.mAddon.blocklistState == Ci.nsIBlocklistService.STATE_BLOCKED) {
+ this.setAttribute("notification", "error");
+ this._error.textContent = gStrings.ext.formatStringFromName(
+ "notification.blocked",
+ [this.mAddon.name], 1
+ );
+ this._errorLink.value = gStrings.ext.GetStringFromName("notification.blocked.link");
+ this._errorLink.href = this.mAddon.blocklistURL;
+ this._errorLink.hidden = false;
+ } else if (!isUpgrade && !isCorrectlySigned(this.mAddon) && SIGNING_REQUIRED) {
+ this.setAttribute("notification", "error");
+ this._error.textContent = gStrings.ext.formatStringFromName(
+ "notification.unsignedAndDisabled", [this.mAddon.name, gStrings.brandShortName], 2
+ );
+ this._errorLink.value = gStrings.ext.GetStringFromName("notification.unsigned.link");
+ this._errorLink.href = Services.urlFormatter.formatURLPref("app.support.baseURL") + "unsigned-addons";
+ this._errorLink.hidden = false;
+ } else if ((!isUpgrade && !this.mAddon.isCompatible) && (AddonManager.checkCompatibility
+ || (this.mAddon.blocklistState != Ci.nsIBlocklistService.STATE_SOFTBLOCKED))) {
+ this.setAttribute("notification", "warning");
+ this._warning.textContent = gStrings.ext.formatStringFromName(
+ "notification.incompatible",
+ [this.mAddon.name, gStrings.brandShortName, gStrings.appVersion], 3
+ );
+ this._warningLink.hidden = true;
+ this._warningBtn.hidden = true;
+ } else if (!isUpgrade && !isCorrectlySigned(this.mAddon)) {
+ this.setAttribute("notification", "warning");
+ this._warning.textContent = gStrings.ext.formatStringFromName(
+ "notification.unsigned", [this.mAddon.name, gStrings.brandShortName], 2
+ );
+ this._warningLink.value = gStrings.ext.GetStringFromName("notification.unsigned.link");
+ this._warningLink.href = Services.urlFormatter.formatURLPref("app.support.baseURL") + "unsigned-addons";
+ this._warningLink.hidden = false;
+ } else if (!isUpgrade && this.mAddon.blocklistState == Ci.nsIBlocklistService.STATE_SOFTBLOCKED) {
+ this.setAttribute("notification", "warning");
+ this._warning.textContent = gStrings.ext.formatStringFromName(
+ "notification.softblocked",
+ [this.mAddon.name], 1
+ );
+ this._warningLink.value = gStrings.ext.GetStringFromName("notification.softblocked.link");
+ this._warningLink.href = this.mAddon.blocklistURL;
+ this._warningLink.hidden = false;
+ this._warningBtn.hidden = true;
+ } else if (!isUpgrade && this.mAddon.blocklistState == Ci.nsIBlocklistService.STATE_OUTDATED) {
+ this.setAttribute("notification", "warning");
+ this._warning.textContent = gStrings.ext.formatStringFromName(
+ "notification.outdated",
+ [this.mAddon.name], 1
+ );
+ this._warningLink.value = gStrings.ext.GetStringFromName("notification.outdated.link");
+ this._warningLink.href = Services.urlFormatter.formatURLPref("plugins.update.url");
+ this._warningLink.hidden = false;
+ this._warningBtn.hidden = true;
+ } else if (!isUpgrade && this.mAddon.blocklistState == Ci.nsIBlocklistService.STATE_VULNERABLE_UPDATE_AVAILABLE) {
+ this.setAttribute("notification", "error");
+ this._error.textContent = gStrings.ext.formatStringFromName(
+ "notification.vulnerableUpdatable",
+ [this.mAddon.name], 1
+ );
+ this._errorLink.value = gStrings.ext.GetStringFromName("notification.vulnerableUpdatable.link");
+ this._errorLink.href = this.mAddon.blocklistURL;
+ this._errorLink.hidden = false;
+ } else if (!isUpgrade && this.mAddon.blocklistState == Ci.nsIBlocklistService.STATE_VULNERABLE_NO_UPDATE) {
+ this.setAttribute("notification", "error");
+ this._error.textContent = gStrings.ext.formatStringFromName(
+ "notification.vulnerableNoUpdate",
+ [this.mAddon.name], 1
+ );
+ this._errorLink.value = gStrings.ext.GetStringFromName("notification.vulnerableNoUpdate.link");
+ this._errorLink.href = this.mAddon.blocklistURL;
+ this._errorLink.hidden = false;
+ } else if (this.mAddon.isGMPlugin && !this.mAddon.isInstalled &&
+ this.mAddon.isActive) {
+ this.setAttribute("notification", "warning");
+ this._warning.textContent =
+ gStrings.ext.formatStringFromName("notification.gmpPending",
+ [this.mAddon.name], 1);
+ } else {
+ this.removeAttribute("notification");
+ }
+ }
+
+ this._preferencesBtn.hidden = (!this.mAddon.optionsURL) ||
+ this.mAddon.optionsType == AddonManager.OPTIONS_TYPE_INLINE_INFO;
+
+ let addonType = AddonManager.addonTypes[this.mAddon.type];
+ if (addonType.flags & AddonManager.TYPE_SUPPORTS_ASK_TO_ACTIVATE) {
+ this._enableBtn.disabled = true;
+ this._disableBtn.disabled = true;
+ this._askToActivateMenuitem.disabled = !this.hasPermission("ask_to_activate");
+ this._alwaysActivateMenuitem.disabled = !this.hasPermission("enable");
+ this._neverActivateMenuitem.disabled = !this.hasPermission("disable");
+ if (!this.mAddon.isActive) {
+ this._stateMenulist.selectedItem = this._neverActivateMenuitem;
+ } else if (this.mAddon.userDisabled == AddonManager.STATE_ASK_TO_ACTIVATE) {
+ this._stateMenulist.selectedItem = this._askToActivateMenuitem;
+ } else {
+ this._stateMenulist.selectedItem = this._alwaysActivateMenuitem;
+ }
+ let hasActivatePermission =
+ ["ask_to_activate", "enable", "disable"].some(perm => this.hasPermission(perm));
+ this._stateMenulist.disabled = !hasActivatePermission;
+ this._stateMenulist.hidden = false;
+ this._stateMenulist.classList.add('no-auto-hide');
+ } else {
+ this._stateMenulist.hidden = true;
+ if (this.hasPermission("enable")) {
+ this._enableBtn.hidden = false;
+ let tooltip = gViewController.commands["cmd_enableItem"]
+ .getTooltip(this.mAddon);
+ this._enableBtn.setAttribute("tooltiptext", tooltip);
+ } else {
+ this._enableBtn.hidden = true;
+ }
+
+ if (this.hasPermission("disable")) {
+ this._disableBtn.hidden = false;
+ let tooltip = gViewController.commands["cmd_disableItem"]
+ .getTooltip(this.mAddon);
+ this._disableBtn.setAttribute("tooltiptext", tooltip);
+ } else {
+ this._disableBtn.hidden = true;
+ }
+ }
+
+ if (this.hasPermission("uninstall")) {
+ this._removeBtn.hidden = false;
+ let tooltip = gViewController.commands["cmd_uninstallItem"]
+ .getTooltip(this.mAddon);
+ this._removeBtn.setAttribute("tooltiptext", tooltip);
+ } else {
+ this._removeBtn.hidden = true;
+ }
+
+ this.setAttribute("active", this.mAddon.isActive);
+
+ var showProgress = this.mAddon.purchaseURL || (this.mAddon.install &&
+ this.mAddon.install.state != AddonManager.STATE_INSTALLED);
+ this._showStatus(showProgress ? "progress" : "none");
+
+ let debuggable = this.mAddon.isDebuggable &&
+ Services.prefs.getBoolPref('devtools.chrome.enabled') &&
+ Services.prefs.getBoolPref('devtools.debugger.remote-enabled');
+
+ this._debugBtn.disabled = this._debugBtn.hidden = !debuggable
+
+ if (this.mAddon.type == "experiment") {
+ this.removeAttribute("notification");
+ let prefix = "experiment.";
+ let active = this.mAddon.isActive;
+
+ if (!showProgress) {
+ let stateKey = prefix + "state." + (active ? "active" : "complete");
+ this._experimentState.value = gStrings.ext.GetStringFromName(stateKey);
+
+ let now = Date.now();
+ let end = this.endDate;
+ let days = Math.abs(end - now) / (24 * 60 * 60 * 1000);
+
+ let timeKey = prefix + "time.";
+ let timeMessage;
+
+ if (days < 1) {
+ timeKey += (active ? "endsToday" : "endedToday");
+ timeMessage = gStrings.ext.GetStringFromName(timeKey);
+ } else {
+ timeKey += (active ? "daysRemaining" : "daysPassed");
+ days = Math.round(days);
+ let timeString = gStrings.ext.GetStringFromName(timeKey);
+ timeMessage = PluralForm.get(days, timeString)
+ .replace("#1", days);
+ }
+
+ this._experimentTime.value = timeMessage;
+ }
+ }
+ } else {
+
+ if (this.parentNode.selectedItem == this)
+ gViewController.updateCommands();
+
+ var pending = this.mAddon.pendingOperations;
+ if (pending != AddonManager.PENDING_NONE) {
+ this.removeAttribute("notification");
+
+ var pending = null;
+ const PENDING_OPERATIONS = ["enable", "disable", "install",
+ "uninstall", "upgrade"];
+ for (let op of PENDING_OPERATIONS) {
+ if (this.isPending(op))
+ pending = op;
+ }
+
+ this.setAttribute("pending", pending);
+ this._pending.textContent = gStrings.ext.formatStringFromName(
+ "notification." + pending,
+ [this.mAddon.name, gStrings.brandShortName], 2
+ );
+ } else {
+ this.removeAttribute("pending");
+
+ var isUpgrade = this.hasAttribute("upgrade");
+ var install = this._installStatus.mInstall;
+
+ if (install && install.state == AddonManager.STATE_DOWNLOAD_FAILED) {
+ this.setAttribute("notification", "warning");
+ this._warning.textContent = gStrings.ext.formatStringFromName(
+ "notification.downloadError",
+ [this.mAddon.name], 1
+ );
+ this._warningBtn.label = gStrings.ext.GetStringFromName("notification.downloadError.retry");
+ this._warningBtn.tooltipText = gStrings.ext.GetStringFromName("notification.downloadError.retry.tooltip");
+ this._warningBtn.setAttribute("oncommand", "document.getBindingParent(this).retryInstall();");
+ this._warningBtn.hidden = false;
+ this._warningLink.hidden = true;
+ } else if (install && install.state == AddonManager.STATE_INSTALL_FAILED) {
+ this.setAttribute("notification", "warning");
+ this._warning.textContent = gStrings.ext.formatStringFromName(
+ "notification.installError",
+ [this.mAddon.name], 1
+ );
+ this._warningBtn.label = gStrings.ext.GetStringFromName("notification.installError.retry");
+ this._warningBtn.tooltipText = gStrings.ext.GetStringFromName("notification.downloadError.retry.tooltip");
+ this._warningBtn.setAttribute("oncommand", "document.getBindingParent(this).retryInstall();");
+ this._warningBtn.hidden = false;
+ this._warningLink.hidden = true;
+ } else if (!isUpgrade && this.mAddon.blocklistState == Ci.nsIBlocklistService.STATE_BLOCKED) {
+ this.setAttribute("notification", "error");
+ this._error.textContent = gStrings.ext.formatStringFromName(
+ "notification.blocked",
+ [this.mAddon.name], 1
+ );
+ this._errorLink.value = gStrings.ext.GetStringFromName("notification.blocked.link");
+ this._errorLink.href = this.mAddon.blocklistURL;
+ this._errorLink.hidden = false;
+ } else if (!isUpgrade &&
+ this.mAddon.signedState <= AddonManager.SIGNEDSTATE_MISSING) {
+ this.setAttribute("notification", this.mAddon.appDisabled ? "error" : "warning");
+ let msg = this.mAddon.appDisabled ? this._error : this._warning;
+ msg.textContent = gStrings.ext.formatStringFromName(
+ "notification.unsigned" + (this.mAddon.appDisabled ? "AndDisabled" : ""),
+ [this.mAddon.name, gStrings.brandShortName], 2
+ );
+ let infoLink = this.mAddon.appDisabled ? this._errorLink : this._warningLink;
+ infoLink.value = gStrings.ext.GetStringFromName("notification.unsigned.link");
+ infoLink.href = Services.urlFormatter.formatURLPref("app.support.baseURL") + "unsigned-addons";
+ infoLink.hidden = false;
+ } else if ((!isUpgrade && !this.mAddon.isCompatible) && (AddonManager.checkCompatibility
+ || (this.mAddon.blocklistState != Ci.nsIBlocklistService.STATE_SOFTBLOCKED))) {
+ this.setAttribute("notification", "warning");
+ this._warning.textContent = gStrings.ext.formatStringFromName(
+ "notification.incompatible",
+ [this.mAddon.name, gStrings.brandShortName, gStrings.appVersion], 3
+ );
+ this._warningLink.hidden = true;
+ this._warningBtn.hidden = true;
+ } else if (!isUpgrade && this.mAddon.blocklistState == Ci.nsIBlocklistService.STATE_SOFTBLOCKED) {
+ this.setAttribute("notification", "warning");
+ this._warning.textContent = gStrings.ext.formatStringFromName(
+ "notification.softblocked",
+ [this.mAddon.name], 1
+ );
+ this._warningLink.value = gStrings.ext.GetStringFromName("notification.softblocked.link");
+ this._warningLink.href = this.mAddon.blocklistURL;
+ this._warningLink.hidden = false;
+ this._warningBtn.hidden = true;
+ } else if (!isUpgrade && this.mAddon.blocklistState == Ci.nsIBlocklistService.STATE_OUTDATED) {
+ this.setAttribute("notification", "warning");
+ this._warning.textContent = gStrings.ext.formatStringFromName(
+ "notification.outdated",
+ [this.mAddon.name], 1
+ );
+ this._warningLink.value = gStrings.ext.GetStringFromName("notification.outdated.link");
+ this._warningLink.href = Services.urlFormatter.formatURLPref("plugins.update.url");
+ this._warningLink.hidden = false;
+ this._warningBtn.hidden = true;
+ } else if (!isUpgrade && this.mAddon.blocklistState == Ci.nsIBlocklistService.STATE_VULNERABLE_UPDATE_AVAILABLE) {
+ this.setAttribute("notification", "error");
+ this._error.textContent = gStrings.ext.formatStringFromName(
+ "notification.vulnerableUpdatable",
+ [this.mAddon.name], 1
+ );
+ this._errorLink.value = gStrings.ext.GetStringFromName("notification.vulnerableUpdatable.link");
+ this._errorLink.href = this.mAddon.blocklistURL;
+ this._errorLink.hidden = false;
+ } else if (!isUpgrade && this.mAddon.blocklistState == Ci.nsIBlocklistService.STATE_VULNERABLE_NO_UPDATE) {
+ this.setAttribute("notification", "error");
+ this._error.textContent = gStrings.ext.formatStringFromName(
+ "notification.vulnerableNoUpdate",
+ [this.mAddon.name], 1
+ );
+ this._errorLink.value = gStrings.ext.GetStringFromName("notification.vulnerableNoUpdate.link");
+ this._errorLink.href = this.mAddon.blocklistURL;
+ this._errorLink.hidden = false;
+ } else if (this.mAddon.isGMPlugin && !this.mAddon.isInstalled &&
+ this.mAddon.isActive) {
+ this.setAttribute("notification", "warning");
+ this._warning.textContent =
+ gStrings.ext.formatStringFromName("notification.gmpPending",
+ [this.mAddon.name], 1);
+ } else {
+ this.removeAttribute("notification");
+ }
+ }
+
+ this._preferencesBtn.hidden = (!this.mAddon.optionsURL) ||
+ this.mAddon.optionsType == AddonManager.OPTIONS_TYPE_INLINE_INFO;
+
+ let addonType = AddonManager.addonTypes[this.mAddon.type];
+ if (addonType.flags & AddonManager.TYPE_SUPPORTS_ASK_TO_ACTIVATE) {
+ this._enableBtn.disabled = true;
+ this._disableBtn.disabled = true;
+ this._askToActivateMenuitem.disabled = !this.hasPermission("ask_to_activate");
+ this._alwaysActivateMenuitem.disabled = !this.hasPermission("enable");
+ this._neverActivateMenuitem.disabled = !this.hasPermission("disable");
+ if (!this.mAddon.isActive) {
+ this._stateMenulist.selectedItem = this._neverActivateMenuitem;
+ } else if (this.mAddon.userDisabled == AddonManager.STATE_ASK_TO_ACTIVATE) {
+ this._stateMenulist.selectedItem = this._askToActivateMenuitem;
+ } else {
+ this._stateMenulist.selectedItem = this._alwaysActivateMenuitem;
+ }
+ let hasActivatePermission =
+ ["ask_to_activate", "enable", "disable"].some(perm => this.hasPermission(perm));
+ this._stateMenulist.disabled = !hasActivatePermission;
+ this._stateMenulist.hidden = false;
+ this._stateMenulist.classList.add('no-auto-hide');
+ } else {
+ this._stateMenulist.hidden = true;
+ if (this.hasPermission("enable")) {
+ this._enableBtn.hidden = false;
+ let tooltip = gViewController.commands["cmd_enableItem"]
+ .getTooltip(this.mAddon);
+ this._enableBtn.setAttribute("tooltiptext", tooltip);
+ } else {
+ this._enableBtn.hidden = true;
+ }
+
+ if (this.hasPermission("disable")) {
+ this._disableBtn.hidden = false;
+ let tooltip = gViewController.commands["cmd_disableItem"]
+ .getTooltip(this.mAddon);
+ this._disableBtn.setAttribute("tooltiptext", tooltip);
+ } else {
+ this._disableBtn.hidden = true;
+ }
+ }
+
+ if (this.hasPermission("uninstall")) {
+ this._removeBtn.hidden = false;
+ let tooltip = gViewController.commands["cmd_uninstallItem"]
+ .getTooltip(this.mAddon);
+ this._removeBtn.setAttribute("tooltiptext", tooltip);
+ } else {
+ this._removeBtn.hidden = true;
+ }
+
+ this.setAttribute("active", this.mAddon.isActive);
+
+ var showProgress = this.mAddon.purchaseURL || (this.mAddon.install &&
+ this.mAddon.install.state != AddonManager.STATE_INSTALLED);
+ this._showStatus(showProgress ? "progress" : "none");
+
+ let debuggable = this.mAddon.isDebuggable &&
+ Services.prefs.getBoolPref('devtools.chrome.enabled') &&
+ Services.prefs.getBoolPref('devtools.debugger.remote-enabled');
+
+ this._debugBtn.disabled = this._debugBtn.hidden = !debuggable
+
+ if (this.mAddon.type == "experiment") {
+ this.removeAttribute("notification");
+ let prefix = "experiment.";
+ let active = this.mAddon.isActive;
+
+ if (!showProgress) {
+ let stateKey = prefix + "state." + (active ? "active" : "complete");
+ this._experimentState.value = gStrings.ext.GetStringFromName(stateKey);
+
+ let now = Date.now();
+ let end = this.endDate;
+ let days = Math.abs(end - now) / (24 * 60 * 60 * 1000);
+
+ let timeKey = prefix + "time.";
+ let timeMessage;
+
+ if (days < 1) {
+ timeKey += (active ? "endsToday" : "endedToday");
+ timeMessage = gStrings.ext.GetStringFromName(timeKey);
+ } else {
+ timeKey += (active ? "daysRemaining" : "daysPassed");
+ days = Math.round(days);
+ let timeString = gStrings.ext.GetStringFromName(timeKey);
+ timeMessage = PluralForm.get(days, timeString)
+ .replace("#1", days);
+ }
+
+ this._experimentTime.value = timeMessage;
+ }
+ }
+
+ }
+ ]]></body>
+ </method>
+
+ <method name="_updateUpgradeInfo">
+ <body><![CDATA[
+ // Only update the version string if we're displaying the upgrade info
+ if (this.hasAttribute("upgrade") && shouldShowVersionNumber(this.mAddon))
+ this._version.value = this.mManualUpdate.version;
+ ]]></body>
+ </method>
+
+ <method name="_fetchReleaseNotes">
+ <parameter name="aURI"/>
+ <body><![CDATA[
+ var self = this;
+ if (!aURI || this._relNotesLoaded) {
+ sendToggleEvent();
+ return;
+ }
+
+ var relNotesData = null, transformData = null;
+
+ this._relNotesLoaded = true;
+ this._relNotesLoading.hidden = false;
+ this._relNotesError.hidden = true;
+
+ function sendToggleEvent() {
+ var event = document.createEvent("Events");
+ event.initEvent("RelNotesToggle", true, true);
+ self.dispatchEvent(event);
+ }
+
+ function showRelNotes() {
+ if (!relNotesData || !transformData)
+ return;
+
+ self._relNotesLoading.hidden = true;
+
+ var processor = Components.classes["@mozilla.org/document-transformer;1?type=xslt"]
+ .createInstance(Components.interfaces.nsIXSLTProcessor);
+ processor.flags |= Components.interfaces.nsIXSLTProcessorPrivate.DISABLE_ALL_LOADS;
+
+ processor.importStylesheet(transformData);
+ var fragment = processor.transformToFragment(relNotesData, document);
+ self._relNotes.appendChild(fragment);
+ if (self.hasAttribute("show-relnotes")) {
+ var container = self._relNotesContainer;
+ container.style.height = container.scrollHeight + "px";
+ }
+ sendToggleEvent();
+ }
+
+ function handleError() {
+ dataReq.abort();
+ styleReq.abort();
+ self._relNotesLoading.hidden = true;
+ self._relNotesError.hidden = false;
+ self._relNotesLoaded = false; // allow loading to be re-tried
+ sendToggleEvent();
+ }
+
+ function handleResponse(aEvent) {
+
+ var XMLURI_PARSE_ERROR = "http://www.mozilla.org/newlayout/xml/parsererror.xml";
+
+ var req = aEvent.target;
+ var ct = req.getResponseHeader("content-type");
+ if ((!ct || ct.indexOf("text/html") < 0) &&
+ req.responseXML &&
+ req.responseXML.documentElement.namespaceURI != XMLURI_PARSE_ERROR) {
+ if (req == dataReq)
+ relNotesData = req.responseXML;
+ else
+ transformData = req.responseXML;
+ showRelNotes();
+ } else {
+ handleError();
+ }
+ }
+
+ var dataReq = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
+ .createInstance(Components.interfaces.nsIXMLHttpRequest);
+ dataReq.open("GET", aURI.spec, true);
+ dataReq.addEventListener("load", handleResponse, false);
+ dataReq.addEventListener("error", handleError, false);
+ dataReq.send(null);
+
+ var UPDATES_RELEASENOTES_TRANSFORMFILE = "chrome://mozapps/content/extensions/updateinfo.xsl";
+
+ var styleReq = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
+ .createInstance(Components.interfaces.nsIXMLHttpRequest);
+ styleReq.open("GET", UPDATES_RELEASENOTES_TRANSFORMFILE, true);
+ styleReq.addEventListener("load", handleResponse, false);
+ styleReq.addEventListener("error", handleError, false);
+ styleReq.send(null);
+ ]]></body>
+ </method>
+
+ <method name="toggleReleaseNotes">
+ <body><![CDATA[
+ if (this.hasAttribute("show-relnotes")) {
+ this._relNotesContainer.style.height = "0px";
+ this.removeAttribute("show-relnotes");
+ this._relNotesToggle.setAttribute(
+ "label",
+ this._relNotesToggle.getAttribute("showlabel")
+ );
+ this._relNotesToggle.setAttribute(
+ "tooltiptext",
+ this._relNotesToggle.getAttribute("showtooltip")
+ );
+ var event = document.createEvent("Events");
+ event.initEvent("RelNotesToggle", true, true);
+ this.dispatchEvent(event);
+ } else {
+ this._relNotesContainer.style.height = this._relNotesContainer.scrollHeight +
+ "px";
+ this.setAttribute("show-relnotes", true);
+ this._relNotesToggle.setAttribute(
+ "label",
+ this._relNotesToggle.getAttribute("hidelabel")
+ );
+ this._relNotesToggle.setAttribute(
+ "tooltiptext",
+ this._relNotesToggle.getAttribute("hidetooltip")
+ );
+ var uri = this.mManualUpdate ?
+ this.mManualUpdate.releaseNotesURI :
+ this.mAddon.releaseNotesURI;
+ this._fetchReleaseNotes(uri);
+ }
+ ]]></body>
+ </method>
+
+ <method name="restart">
+ <body><![CDATA[
+ gViewController.commands["cmd_restartApp"].doCommand();
+ ]]></body>
+ </method>
+
+ <method name="undo">
+ <body><![CDATA[
+ gViewController.commands["cmd_cancelOperation"].doCommand(this.mAddon);
+ ]]></body>
+ </method>
+
+ <method name="uninstall">
+ <body><![CDATA[
+ // If uninstalling does not require a restart then just disable it
+ // and show the undo UI.
+ if (!this.opRequiresRestart("uninstall")) {
+ this.setAttribute("wasDisabled", this.mAddon.userDisabled);
+
+ // We must set userDisabled to true first, this will call
+ // _updateState which will clear any pending attribute set.
+ this.mAddon.userDisabled = true;
+
+ // This won't update any other add-on manager views (bug 582002)
+ this.setAttribute("pending", "uninstall");
+ } else {
+ this.mAddon.uninstall();
+ }
+ ]]></body>
+ </method>
+
+ <method name="debug">
+ <body><![CDATA[
+ gViewController.doCommand("cmd_debugItem", this.mAddon);
+ ]]></body>
+ </method>
+
+ <method name="showPreferences">
+ <body><![CDATA[
+ gViewController.doCommand("cmd_showItemPreferences", this.mAddon);
+ ]]></body>
+ </method>
+
+ <method name="upgrade">
+ <body><![CDATA[
+ var install = this.mManualUpdate;
+ delete this.mManualUpdate;
+ install.install();
+ ]]></body>
+ </method>
+
+ <method name="retryInstall">
+ <body><![CDATA[
+ var install = this._installStatus.mInstall;
+ if (!install)
+ return;
+ if (install.state != AddonManager.STATE_DOWNLOAD_FAILED &&
+ install.state != AddonManager.STATE_INSTALL_FAILED)
+ return;
+ install.install();
+ ]]></body>
+ </method>
+
+ <method name="showInDetailView">
+ <body><![CDATA[
+ gViewController.loadView("addons://detail/" +
+ encodeURIComponent(this.mAddon.id));
+ ]]></body>
+ </method>
+
+ <method name="onIncludeUpdateChanged">
+ <body><![CDATA[
+ var event = document.createEvent("Events");
+ event.initEvent("IncludeUpdateChanged", true, true);
+ this.dispatchEvent(event);
+ ]]></body>
+ </method>
+
+ <method name="onEnabling">
+ <body><![CDATA[
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onEnabled">
+ <body><![CDATA[
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onDisabling">
+ <body><![CDATA[
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onDisabled">
+ <body><![CDATA[
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onUninstalling">
+ <parameter name="aRestartRequired"/>
+ <body><![CDATA[
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onOperationCancelled">
+ <body><![CDATA[
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onPropertyChanged">
+ <parameter name="aProperties"/>
+ <body><![CDATA[
+ if (aProperties.indexOf("appDisabled") != -1 ||
+ aProperties.indexOf("signedState") != -1 ||
+ aProperties.indexOf("userDisabled") != -1)
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onNoUpdateAvailable">
+ <body><![CDATA[
+ this._showStatus("none");
+ ]]></body>
+ </method>
+
+ <method name="onCheckingUpdate">
+ <body><![CDATA[
+ this._showStatus("checking-update");
+ ]]></body>
+ </method>
+
+ <method name="onCompatibilityUpdateAvailable">
+ <body><![CDATA[
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onExternalInstall">
+ <parameter name="aAddon"/>
+ <parameter name="aExistingAddon"/>
+ <parameter name="aNeedsRestart"/>
+ <body><![CDATA[
+ if (aExistingAddon.id != this.mAddon.id)
+ return;
+
+ // If the install completed without needing a restart then switch to
+ // using the new Addon
+ if (!aNeedsRestart)
+ this._initWithAddon(aAddon);
+ else
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onNewInstall">
+ <parameter name="aInstall"/>
+ <body><![CDATA[
+ if (this.mAddon.applyBackgroundUpdates == AddonManager.AUTOUPDATE_ENABLE)
+ return;
+ if (this.mAddon.applyBackgroundUpdates == AddonManager.AUTOUPDATE_DEFAULT &&
+ AddonManager.autoUpdateDefault)
+ return;
+
+ this.mManualUpdate = aInstall;
+ this._showStatus("update-available");
+ this._updateUpgradeInfo();
+ ]]></body>
+ </method>
+
+ <method name="onDownloadStarted">
+ <parameter name="aInstall"/>
+ <body><![CDATA[
+ this._updateState();
+ this._showStatus("progress");
+ this._installStatus.initWithInstall(aInstall);
+ ]]></body>
+ </method>
+
+ <method name="onInstallStarted">
+ <parameter name="aInstall"/>
+ <body><![CDATA[
+ this._updateState();
+ this._showStatus("progress");
+ this._installStatus.initWithInstall(aInstall);
+ ]]></body>
+ </method>
+
+ <method name="onInstallEnded">
+ <parameter name="aInstall"/>
+ <parameter name="aAddon"/>
+ <body><![CDATA[
+ // If the install completed without needing a restart then switch to
+ // using the new Addon
+ if (!(aAddon.pendingOperations & AddonManager.PENDING_INSTALL))
+ this._initWithAddon(aAddon);
+ else
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onDownloadFailed">
+ <body><![CDATA[
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onInstallFailed">
+ <body><![CDATA[
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onInstallCancelled">
+ <body><![CDATA[
+ this._updateState();
+ ]]></body>
+ </method>
+ </implementation>
+
+ <handlers>
+ <handler event="click" button="0"><![CDATA[
+ switch (event.detail) {
+ case 1:
+ // Prevent double-click where the UI changes on the first click
+ this._lastClickTarget = event.originalTarget;
+ break;
+ case 2:
+ if (event.originalTarget.localName != 'button' &&
+ !event.originalTarget.classList.contains('text-link') &&
+ event.originalTarget == this._lastClickTarget) {
+ this.showInDetailView();
+ }
+ break;
+ }
+ ]]></handler>
+ </handlers>
+ </binding>
+
+</bindings> \ No newline at end of file
diff --git a/xpi/content/addonversionUnix_fx46.xml b/xpi/content/addonversionUnix_fx46.xml
new file mode 100644
index 0000000..4ed2509
--- /dev/null
+++ b/xpi/content/addonversionUnix_fx46.xml
@@ -0,0 +1,1043 @@
+<?xml version="1.0"?>
+<!-- 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/. -->
+
+
+<!DOCTYPE page [
+<!ENTITY % extensionsDTD SYSTEM "chrome://mozapps/locale/extensions/extensions.dtd">
+%extensionsDTD;
+]>
+
+<bindings id="addonBindings"
+ xmlns="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xbl="http://www.mozilla.org/xbl">
+ <!-- Addon - generic - A normal addon item, or an update to one -->
+ <binding id="addon-generic"
+ extends="chrome://mozapps/content/extensions/extensions.xml#addon-base">
+ <content>
+ <xul:hbox anonid="warning-container"
+ class="warning">
+ <xul:image class="warning-icon"/>
+ <xul:label anonid="warning" flex="1"/>
+ <xul:label anonid="warning-link" class="text-link"/>
+ <xul:button anonid="warning-btn" class="button-link" hidden="true"/>
+ <xul:spacer flex="5000"/> <!-- Necessary to allow the message to wrap -->
+ </xul:hbox>
+ <xul:hbox anonid="error-container"
+ class="error">
+ <xul:image class="error-icon"/>
+ <xul:label anonid="error" flex="1"/>
+ <xul:label anonid="error-link" class="text-link" hidden="true"/>
+ <xul:spacer flex="5000"/> <!-- Necessary to allow the message to wrap -->
+ </xul:hbox>
+ <xul:hbox anonid="pending-container"
+ class="pending">
+ <xul:image class="pending-icon"/>
+ <xul:label anonid="pending" flex="1"/>
+ <xul:button anonid="restart-btn" class="button-link"
+ label="&addon.restartNow.label;"
+ oncommand="document.getBindingParent(this).restart();"/>
+ <xul:button anonid="undo-btn" class="button-link"
+ label="&addon.undoAction.label;"
+ tooltipText="&addon.undoAction.tooltip;"
+ oncommand="document.getBindingParent(this).undo();"/>
+ <xul:spacer flex="5000"/> <!-- Necessary to allow the message to wrap -->
+ </xul:hbox>
+
+ <xul:hbox class="content-container" align="center">
+ <xul:vbox class="icon-container">
+ <xul:image anonid="icon" class="icon"/>
+ </xul:vbox>
+ <xul:vbox class="content-inner-container" flex="1">
+ <xul:hbox class="basicinfo-container">
+ <xul:hbox class="name-container">
+ <xul:label anonid="name" class="name" crop="end" flex="1"
+ tooltip="addonitem-tooltip" xbl:inherits="value=name,tooltiptext=name"/>
+ <xul:label anonid="version" class="version"/>
+ <xul:label class="disabled-postfix" value="&addon.disabled.postfix;"/>
+ <xul:label class="update-postfix" value="&addon.update.postfix;"/>
+ <xul:spacer flex="5000"/> <!-- Necessary to make the name crop -->
+ </xul:hbox>
+ <xul:label anonid="date-updated" class="date-updated"
+ unknown="&addon.unknownDate;"/>
+ </xul:hbox>
+ <xul:hbox class="experiment-container">
+ <svg width="6" height="6" viewBox="0 0 6 6" version="1.1"
+ xmlns="http://www.w3.org/2000/svg"
+ class="experiment-bullet-container">
+ <circle cx="3" cy="3" r="3" class="experiment-bullet"/>
+ </svg>
+ <xul:label anonid="experiment-state" class="experiment-state"/>
+ <xul:label anonid="experiment-time" class="experiment-time"/>
+ </xul:hbox>
+
+ <xul:hbox class="advancedinfo-container" flex="1">
+ <xul:vbox class="description-outer-container" flex="1">
+ <xul:hbox class="description-container">
+ <xul:label anonid="description" class="description" crop="end" flex="1"/>
+ <xul:button anonid="details-btn" class="details button-link"
+ label="&addon.details.label;"
+ tooltiptext="&addon.details.tooltip;"
+ oncommand="document.getBindingParent(this).showInDetailView();"/>
+ <xul:spacer flex="5000"/> <!-- Necessary to make the description crop -->
+ </xul:hbox>
+ <xul:vbox anonid="relnotes-container" class="relnotes-container">
+ <xul:label class="relnotes-header" value="&addon.releaseNotes.label;"/>
+ <xul:label anonid="relnotes-loading" value="&addon.loadingReleaseNotes.label;"/>
+ <xul:label anonid="relnotes-error" hidden="true"
+ value="&addon.errorLoadingReleaseNotes.label;"/>
+ <xul:vbox anonid="relnotes" class="relnotes"/>
+ </xul:vbox>
+ <xul:hbox class="relnotes-toggle-container">
+ <xul:button anonid="relnotes-toggle-btn" class="relnotes-toggle"
+ hidden="true" label="&cmd.showReleaseNotes.label;"
+ tooltiptext="&cmd.showReleaseNotes.tooltip;"
+ showlabel="&cmd.showReleaseNotes.label;"
+ showtooltip="&cmd.showReleaseNotes.tooltip;"
+ hidelabel="&cmd.hideReleaseNotes.label;"
+ hidetooltip="&cmd.hideReleaseNotes.tooltip;"
+ oncommand="document.getBindingParent(this).toggleReleaseNotes();"/>
+ </xul:hbox>
+ </xul:vbox>
+ </xul:hbox>
+ </xul:vbox>
+ <xul:vbox class="status-control-wrapper">
+ <xul:hbox class="status-container">
+ <xul:hbox anonid="checking-update" hidden="true">
+ <xul:image class="spinner"/>
+ <xul:label value="&addon.checkingForUpdates.label;"/>
+ </xul:hbox>
+ <xul:vbox anonid="update-available" class="update-available"
+ hidden="true">
+ <xul:checkbox anonid="include-update" class="include-update"
+ label="&addon.includeUpdate.label;" checked="true"
+ oncommand="document.getBindingParent(this).onIncludeUpdateChanged();"/>
+ <xul:hbox class="update-info-container">
+ <xul:label class="update-available-notice"
+ value="&addon.updateAvailable.label;"/>
+ <xul:button anonid="update-btn" class="addon-control update"
+ label="&addon.updateNow.label;"
+ tooltiptext="&addon.updateNow.tooltip;"
+ oncommand="document.getBindingParent(this).upgrade();"/>
+ </xul:hbox>
+ </xul:vbox>
+ <xul:hbox anonid="install-status" class="install-status"
+ hidden="true"/>
+ </xul:hbox>
+ <xul:hbox anonid="control-container" class="control-container">
+ <xul:button anonid="preferences-btn"
+ class="addon-control preferences"
+ label="&cmd.showPreferencesUnix.label;"
+ tooltiptext="&cmd.showPreferencesUnix.tooltip;"
+ oncommand="document.getBindingParent(this).showPreferences();"/>
+ <xul:button anonid="enable-btn" class="addon-control enable"
+ label="&cmd.enableAddon.label;"
+ oncommand="document.getBindingParent(this).userDisabled = false;"/>
+ <xul:button anonid="disable-btn" class="addon-control disable"
+ label="&cmd.disableAddon.label;"
+ oncommand="document.getBindingParent(this).userDisabled = true;"/>
+ <xul:button anonid="remove-btn" class="addon-control remove"
+ label="&cmd.uninstallAddon.label;"
+ oncommand="document.getBindingParent(this).uninstall();"/>
+ <xul:menulist anonid="state-menulist"
+ class="addon-control state"
+ tooltiptext="&cmd.stateMenu.tooltip;">
+ <xul:menupopup>
+ <xul:menuitem anonid="ask-to-activate-menuitem"
+ class="addon-control"
+ label="&cmd.askToActivate.label;"
+ tooltiptext="&cmd.askToActivate.tooltip;"
+ oncommand="document.getBindingParent(this).userDisabled = AddonManager.STATE_ASK_TO_ACTIVATE;"/>
+ <xul:menuitem anonid="always-activate-menuitem"
+ class="addon-control"
+ label="&cmd.alwaysActivate.label;"
+ tooltiptext="&cmd.alwaysActivate.tooltip;"
+ oncommand="document.getBindingParent(this).userDisabled = false;"/>
+ <xul:menuitem anonid="never-activate-menuitem"
+ class="addon-control"
+ label="&cmd.neverActivate.label;"
+ tooltiptext="&cmd.neverActivate.tooltip;"
+ oncommand="document.getBindingParent(this).userDisabled = true;"/>
+ </xul:menupopup>
+ </xul:menulist>
+ </xul:hbox>
+ </xul:vbox>
+ </xul:hbox>
+ </content>
+
+ <implementation>
+ <constructor><![CDATA[
+ this._installStatus = document.getAnonymousElementByAttribute(this, "anonid", "install-status");
+ this._installStatus.mControl = this;
+
+ this.setAttribute("contextmenu", "addonitem-popup");
+
+ this._showStatus("none");
+
+ this._initWithAddon(this.mAddon);
+
+ gEventManager.registerAddonListener(this, this.mAddon.id);
+ ]]></constructor>
+
+ <destructor><![CDATA[
+ gEventManager.unregisterAddonListener(this, this.mAddon.id);
+ ]]></destructor>
+
+ <field name="_warningContainer">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "warning-container");
+ </field>
+ <field name="_warning">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "warning");
+ </field>
+ <field name="_warningLink">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "warning-link");
+ </field>
+ <field name="_warningBtn">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "warning-btn");
+ </field>
+ <field name="_errorContainer">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "error-container");
+ </field>
+ <field name="_error">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "error");
+ </field>
+ <field name="_errorLink">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "error-link");
+ </field>
+ <field name="_pendingContainer">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "pending-container");
+ </field>
+ <field name="_pending">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "pending");
+ </field>
+ <field name="_infoContainer">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "info-container");
+ </field>
+ <field name="_info">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "info");
+ </field>
+ <field name="_version">
+ document.getAnonymousElementByAttribute(this, "anonid", "version");
+ </field>
+ <field name="_experimentState">
+ document.getAnonymousElementByAttribute(this, "anonid", "experiment-state");
+ </field>
+ <field name="_experimentTime">
+ document.getAnonymousElementByAttribute(this, "anonid", "experiment-time");
+ </field>
+ <field name="_icon">
+ document.getAnonymousElementByAttribute(this, "anonid", "icon");
+ </field>
+ <field name="_dateUpdated">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "date-updated");
+ </field>
+ <field name="_description">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "description");
+ </field>
+ <field name="_stateMenulist">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "state-menulist");
+ </field>
+ <field name="_askToActivateMenuitem">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "ask-to-activate-menuitem");
+ </field>
+ <field name="_alwaysActivateMenuitem">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "always-activate-menuitem");
+ </field>
+ <field name="_neverActivateMenuitem">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "never-activate-menuitem");
+ </field>
+ <field name="_preferencesBtn">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "preferences-btn");
+ </field>
+ <field name="_enableBtn">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "enable-btn");
+ </field>
+ <field name="_disableBtn">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "disable-btn");
+ </field>
+ <field name="_removeBtn">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "remove-btn");
+ </field>
+ <field name="_updateBtn">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "update-btn");
+ </field>
+ <field name="_controlContainer">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "control-container");
+ </field>
+ <field name="_installStatus">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "install-status");
+ </field>
+ <field name="_checkingUpdate">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "checking-update");
+ </field>
+ <field name="_updateAvailable">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "update-available");
+ </field>
+ <field name="_includeUpdate">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "include-update");
+ </field>
+ <field name="_relNotesLoaded">false</field>
+ <field name="_relNotesToggle">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "relnotes-toggle-btn");
+ </field>
+ <field name="_relNotesLoading">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "relnotes-loading");
+ </field>
+ <field name="_relNotesError">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "relnotes-error");
+ </field>
+ <field name="_relNotesContainer">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "relnotes-container");
+ </field>
+ <field name="_relNotes">
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "relnotes");
+ </field>
+
+ <property name="userDisabled">
+ <getter><![CDATA[
+ return this.mAddon.userDisabled;
+ ]]></getter>
+ <setter><![CDATA[
+ this.mAddon.userDisabled = val;
+ ]]></setter>
+ </property>
+
+ <property name="includeUpdate">
+ <getter><![CDATA[
+ return this._includeUpdate.checked && !!this.mManualUpdate;
+ ]]></getter>
+ <setter><![CDATA[
+ //XXXunf Eventually, we'll want to persist this for individual
+ // updates - see bug 594619.
+ this._includeUpdate.checked = !!val;
+ ]]></setter>
+ </property>
+
+ <method name="_initWithAddon">
+ <parameter name="aAddon"/>
+ <body><![CDATA[
+ this.mAddon = aAddon;
+
+ this._installStatus.mAddon = this.mAddon;
+ this._updateDates();
+ this._updateState();
+
+ this.setAttribute("name", aAddon.name);
+
+ var iconURL = AddonManager.getPreferredIconURL(aAddon, 48, window);
+ if (iconURL)
+ this._icon.src = iconURL;
+ else
+ this._icon.src = "";
+
+ if (shouldShowVersionNumber(this.mAddon))
+ this._version.value = this.mAddon.version;
+ else
+ this._version.hidden = true;
+
+ if (this.mAddon.description)
+ this._description.value = this.mAddon.description;
+ else
+ this._description.hidden = true;
+
+ if (!("applyBackgroundUpdates" in this.mAddon) ||
+ (this.mAddon.applyBackgroundUpdates == AddonManager.AUTOUPDATE_DISABLE ||
+ (this.mAddon.applyBackgroundUpdates == AddonManager.AUTOUPDATE_DEFAULT &&
+ !AddonManager.autoUpdateDefault))) {
+ AddonManager.getAllInstalls(aInstallsList => {
+ // This can return after the binding has been destroyed,
+ // so try to detect that and return early
+ if (!("onNewInstall" in this))
+ return;
+ for (let install of aInstallsList) {
+ if (install.existingAddon &&
+ install.existingAddon.id == this.mAddon.id &&
+ install.state == AddonManager.STATE_AVAILABLE) {
+ this.onNewInstall(install);
+ this.onIncludeUpdateChanged();
+ }
+ }
+ });
+ }
+ ]]></body>
+ </method>
+
+ <method name="_showStatus">
+ <parameter name="aType"/>
+ <body><![CDATA[
+ this._controlContainer.hidden = aType != "none" &&
+ !(aType == "update-available" && !this.hasAttribute("upgrade"));
+
+ this._installStatus.hidden = aType != "progress";
+ if (aType == "progress")
+ this._installStatus.refreshState();
+ this._checkingUpdate.hidden = aType != "checking-update";
+ this._updateAvailable.hidden = aType != "update-available";
+ this._relNotesToggle.hidden = !(this.mManualUpdate ?
+ this.mManualUpdate.releaseNotesURI :
+ this.mAddon.releaseNotesURI);
+ ]]></body>
+ </method>
+
+ <method name="_updateDates">
+ <body><![CDATA[
+ function formatDate(aDate) {
+ return Cc["@mozilla.org/intl/scriptabledateformat;1"]
+ .getService(Ci.nsIScriptableDateFormat)
+ .FormatDate("",
+ Ci.nsIScriptableDateFormat.dateFormatLong,
+ aDate.getFullYear(),
+ aDate.getMonth() + 1,
+ aDate.getDate()
+ );
+ }
+
+ if (this.mAddon.updateDate)
+ this._dateUpdated.value = formatDate(this.mAddon.updateDate);
+ else
+ this._dateUpdated.value = this._dateUpdated.getAttribute("unknown");
+ ]]></body>
+ </method>
+
+ <method name="_updateState">
+ <body><![CDATA[
+
+ Components.utils.import("resource://gre/modules/Services.jsm", {})
+ var appversion = parseInt(Services.appinfo.version);
+
+ if(appversion >= '42') {
+
+ var SIGNING_REQUIRED = true;
+
+ try {
+ SIGNING_REQUIRED = Services.prefs.getBranch("xpinstall.signatures.").getBoolPref("required");
+ } catch(e) {}
+
+ if (this.parentNode.selectedItem == this)
+ gViewController.updateCommands();
+
+ var pending = this.mAddon.pendingOperations;
+ if (pending != AddonManager.PENDING_NONE) {
+ this.removeAttribute("notification");
+
+ var pending = null;
+ const PENDING_OPERATIONS = ["enable", "disable", "install",
+ "uninstall", "upgrade"];
+ for (let op of PENDING_OPERATIONS) {
+ if (this.isPending(op))
+ pending = op;
+ }
+
+ this.setAttribute("pending", pending);
+ this._pending.textContent = gStrings.ext.formatStringFromName(
+ "notification." + pending,
+ [this.mAddon.name, gStrings.brandShortName], 2
+ );
+ } else {
+ this.removeAttribute("pending");
+
+ var isUpgrade = this.hasAttribute("upgrade");
+ var install = this._installStatus.mInstall;
+
+ if (install && install.state == AddonManager.STATE_DOWNLOAD_FAILED) {
+ this.setAttribute("notification", "warning");
+ this._warning.textContent = gStrings.ext.formatStringFromName(
+ "notification.downloadError",
+ [this.mAddon.name], 1
+ );
+ this._warningBtn.label = gStrings.ext.GetStringFromName("notification.downloadError.retry");
+ this._warningBtn.tooltipText = gStrings.ext.GetStringFromName("notification.downloadError.retry.tooltip");
+ this._warningBtn.setAttribute("oncommand", "document.getBindingParent(this).retryInstall();");
+ this._warningBtn.hidden = false;
+ this._warningLink.hidden = true;
+ } else if (install && install.state == AddonManager.STATE_INSTALL_FAILED) {
+ this.setAttribute("notification", "warning");
+ this._warning.textContent = gStrings.ext.formatStringFromName(
+ "notification.installError",
+ [this.mAddon.name], 1
+ );
+ this._warningBtn.label = gStrings.ext.GetStringFromName("notification.installError.retry");
+ this._warningBtn.tooltipText = gStrings.ext.GetStringFromName("notification.downloadError.retry.tooltip");
+ this._warningBtn.setAttribute("oncommand", "document.getBindingParent(this).retryInstall();");
+ this._warningBtn.hidden = false;
+ this._warningLink.hidden = true;
+ } else if (!isUpgrade && this.mAddon.blocklistState == Ci.nsIBlocklistService.STATE_BLOCKED) {
+ this.setAttribute("notification", "error");
+ this._error.textContent = gStrings.ext.formatStringFromName(
+ "notification.blocked",
+ [this.mAddon.name], 1
+ );
+ this._errorLink.value = gStrings.ext.GetStringFromName("notification.blocked.link");
+ this._errorLink.href = this.mAddon.blocklistURL;
+ this._errorLink.hidden = false;
+ } else if (!isUpgrade && !isCorrectlySigned(this.mAddon) && SIGNING_REQUIRED) {
+ this.setAttribute("notification", "error");
+ this._error.textContent = gStrings.ext.formatStringFromName(
+ "notification.unsignedAndDisabled", [this.mAddon.name, gStrings.brandShortName], 2
+ );
+ this._errorLink.value = gStrings.ext.GetStringFromName("notification.unsigned.link");
+ this._errorLink.href = Services.urlFormatter.formatURLPref("app.support.baseURL") + "unsigned-addons";
+ this._errorLink.hidden = false;
+ } else if ((!isUpgrade && !this.mAddon.isCompatible) && (AddonManager.checkCompatibility
+ || (this.mAddon.blocklistState != Ci.nsIBlocklistService.STATE_SOFTBLOCKED))) {
+ this.setAttribute("notification", "warning");
+ this._warning.textContent = gStrings.ext.formatStringFromName(
+ "notification.incompatible",
+ [this.mAddon.name, gStrings.brandShortName, gStrings.appVersion], 3
+ );
+ this._warningLink.hidden = true;
+ this._warningBtn.hidden = true;
+ } else if (!isUpgrade && !isCorrectlySigned(this.mAddon)) {
+ this.setAttribute("notification", "warning");
+ this._warning.textContent = gStrings.ext.formatStringFromName(
+ "notification.unsigned", [this.mAddon.name, gStrings.brandShortName], 2
+ );
+ this._warningLink.value = gStrings.ext.GetStringFromName("notification.unsigned.link");
+ this._warningLink.href = Services.urlFormatter.formatURLPref("app.support.baseURL") + "unsigned-addons";
+ this._warningLink.hidden = false;
+ } else if (!isUpgrade && this.mAddon.blocklistState == Ci.nsIBlocklistService.STATE_SOFTBLOCKED) {
+ this.setAttribute("notification", "warning");
+ this._warning.textContent = gStrings.ext.formatStringFromName(
+ "notification.softblocked",
+ [this.mAddon.name], 1
+ );
+ this._warningLink.value = gStrings.ext.GetStringFromName("notification.softblocked.link");
+ this._warningLink.href = this.mAddon.blocklistURL;
+ this._warningLink.hidden = false;
+ this._warningBtn.hidden = true;
+ } else if (!isUpgrade && this.mAddon.blocklistState == Ci.nsIBlocklistService.STATE_OUTDATED) {
+ this.setAttribute("notification", "warning");
+ this._warning.textContent = gStrings.ext.formatStringFromName(
+ "notification.outdated",
+ [this.mAddon.name], 1
+ );
+ this._warningLink.value = gStrings.ext.GetStringFromName("notification.outdated.link");
+ this._warningLink.href = Services.urlFormatter.formatURLPref("plugins.update.url");
+ this._warningLink.hidden = false;
+ this._warningBtn.hidden = true;
+ } else if (!isUpgrade && this.mAddon.blocklistState == Ci.nsIBlocklistService.STATE_VULNERABLE_UPDATE_AVAILABLE) {
+ this.setAttribute("notification", "error");
+ this._error.textContent = gStrings.ext.formatStringFromName(
+ "notification.vulnerableUpdatable",
+ [this.mAddon.name], 1
+ );
+ this._errorLink.value = gStrings.ext.GetStringFromName("notification.vulnerableUpdatable.link");
+ this._errorLink.href = this.mAddon.blocklistURL;
+ this._errorLink.hidden = false;
+ } else if (!isUpgrade && this.mAddon.blocklistState == Ci.nsIBlocklistService.STATE_VULNERABLE_NO_UPDATE) {
+ this.setAttribute("notification", "error");
+ this._error.textContent = gStrings.ext.formatStringFromName(
+ "notification.vulnerableNoUpdate",
+ [this.mAddon.name], 1
+ );
+ this._errorLink.value = gStrings.ext.GetStringFromName("notification.vulnerableNoUpdate.link");
+ this._errorLink.href = this.mAddon.blocklistURL;
+ this._errorLink.hidden = false;
+ } else if (this.mAddon.isGMPlugin && !this.mAddon.isInstalled &&
+ this.mAddon.isActive) {
+ this.setAttribute("notification", "warning");
+ this._warning.textContent =
+ gStrings.ext.formatStringFromName("notification.gmpPending",
+ [this.mAddon.name], 1);
+ } else {
+ this.removeAttribute("notification");
+ }
+ }
+
+ this._preferencesBtn.hidden = (!this.mAddon.optionsURL) ||
+ this.mAddon.optionsType == AddonManager.OPTIONS_TYPE_INLINE_INFO;
+
+ let addonType = AddonManager.addonTypes[this.mAddon.type];
+ if (addonType.flags & AddonManager.TYPE_SUPPORTS_ASK_TO_ACTIVATE) {
+ this._enableBtn.disabled = true;
+ this._disableBtn.disabled = true;
+ this._askToActivateMenuitem.disabled = !this.hasPermission("ask_to_activate");
+ this._alwaysActivateMenuitem.disabled = !this.hasPermission("enable");
+ this._neverActivateMenuitem.disabled = !this.hasPermission("disable");
+ if (!this.mAddon.isActive) {
+ this._stateMenulist.selectedItem = this._neverActivateMenuitem;
+ } else if (this.mAddon.userDisabled == AddonManager.STATE_ASK_TO_ACTIVATE) {
+ this._stateMenulist.selectedItem = this._askToActivateMenuitem;
+ } else {
+ this._stateMenulist.selectedItem = this._alwaysActivateMenuitem;
+ }
+ let hasActivatePermission =
+ ["ask_to_activate", "enable", "disable"].some(perm => this.hasPermission(perm));
+ this._stateMenulist.disabled = !hasActivatePermission;
+ this._stateMenulist.hidden = false;
+ this._stateMenulist.classList.add('no-auto-hide');
+ } else {
+ this._stateMenulist.hidden = true;
+ if (this.hasPermission("enable")) {
+ this._enableBtn.hidden = false;
+ let tooltip = gViewController.commands["cmd_enableItem"]
+ .getTooltip(this.mAddon);
+ this._enableBtn.setAttribute("tooltiptext", tooltip);
+ } else {
+ this._enableBtn.hidden = true;
+ }
+
+ if (this.hasPermission("disable")) {
+ this._disableBtn.hidden = false;
+ let tooltip = gViewController.commands["cmd_disableItem"]
+ .getTooltip(this.mAddon);
+ this._disableBtn.setAttribute("tooltiptext", tooltip);
+ } else {
+ this._disableBtn.hidden = true;
+ }
+ }
+
+ if (this.hasPermission("uninstall")) {
+ this._removeBtn.hidden = false;
+ let tooltip = gViewController.commands["cmd_uninstallItem"]
+ .getTooltip(this.mAddon);
+ this._removeBtn.setAttribute("tooltiptext", tooltip);
+ } else {
+ this._removeBtn.hidden = true;
+ }
+
+ this.setAttribute("active", this.mAddon.isActive);
+
+ var showProgress = this.mAddon.purchaseURL || (this.mAddon.install &&
+ this.mAddon.install.state != AddonManager.STATE_INSTALLED);
+ this._showStatus(showProgress ? "progress" : "none");
+
+ if (this.mAddon.type == "experiment") {
+ this.removeAttribute("notification");
+ let prefix = "experiment.";
+ let active = this.mAddon.isActive;
+
+ if (!showProgress) {
+ let stateKey = prefix + "state." + (active ? "active" : "complete");
+ this._experimentState.value = gStrings.ext.GetStringFromName(stateKey);
+
+ let now = Date.now();
+ let end = this.endDate;
+ let days = Math.abs(end - now) / (24 * 60 * 60 * 1000);
+
+ let timeKey = prefix + "time.";
+ let timeMessage;
+
+ if (days < 1) {
+ timeKey += (active ? "endsToday" : "endedToday");
+ timeMessage = gStrings.ext.GetStringFromName(timeKey);
+ } else {
+ timeKey += (active ? "daysRemaining" : "daysPassed");
+ days = Math.round(days);
+ let timeString = gStrings.ext.GetStringFromName(timeKey);
+ timeMessage = PluralForm.get(days, timeString)
+ .replace("#1", days);
+ }
+
+ this._experimentTime.value = timeMessage;
+ }
+ }
+ }
+ ]]></body>
+ </method>
+
+ <method name="_updateUpgradeInfo">
+ <body><![CDATA[
+ // Only update the version string if we're displaying the upgrade info
+ if (this.hasAttribute("upgrade") && shouldShowVersionNumber(this.mAddon))
+ this._version.value = this.mManualUpdate.version;
+ ]]></body>
+ </method>
+
+ <method name="_fetchReleaseNotes">
+ <parameter name="aURI"/>
+ <body><![CDATA[
+ if (!aURI || this._relNotesLoaded) {
+ sendToggleEvent();
+ return;
+ }
+
+ var relNotesData = null, transformData = null;
+
+ this._relNotesLoaded = true;
+ this._relNotesLoading.hidden = false;
+ this._relNotesError.hidden = true;
+
+ let sendToggleEvent = () => {
+ var event = document.createEvent("Events");
+ event.initEvent("RelNotesToggle", true, true);
+ this.dispatchEvent(event);
+ }
+
+ let showRelNotes = () => {
+ if (!relNotesData || !transformData)
+ return;
+
+ this._relNotesLoading.hidden = true;
+
+ var processor = Components.classes["@mozilla.org/document-transformer;1?type=xslt"]
+ .createInstance(Components.interfaces.nsIXSLTProcessor);
+ processor.flags |= Components.interfaces.nsIXSLTProcessorPrivate.DISABLE_ALL_LOADS;
+
+ processor.importStylesheet(transformData);
+ var fragment = processor.transformToFragment(relNotesData, document);
+ this._relNotes.appendChild(fragment);
+ if (this.hasAttribute("show-relnotes")) {
+ var container = this._relNotesContainer;
+ container.style.height = container.scrollHeight + "px";
+ }
+ sendToggleEvent();
+ }
+
+ let handleError = () => {
+ dataReq.abort();
+ styleReq.abort();
+ this._relNotesLoading.hidden = true;
+ this._relNotesError.hidden = false;
+ this._relNotesLoaded = false; // allow loading to be re-tried
+ sendToggleEvent();
+ }
+
+ function handleResponse(aEvent) {
+
+ var XMLURI_PARSE_ERROR = "http://www.mozilla.org/newlayout/xml/parsererror.xml";
+
+ var req = aEvent.target;
+ var ct = req.getResponseHeader("content-type");
+ if ((!ct || ct.indexOf("text/html") < 0) &&
+ req.responseXML &&
+ req.responseXML.documentElement.namespaceURI != XMLURI_PARSE_ERROR) {
+ if (req == dataReq)
+ relNotesData = req.responseXML;
+ else
+ transformData = req.responseXML;
+ showRelNotes();
+ } else {
+ handleError();
+ }
+ }
+
+ var dataReq = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
+ .createInstance(Components.interfaces.nsIXMLHttpRequest);
+ dataReq.open("GET", aURI.spec, true);
+ dataReq.addEventListener("load", handleResponse, false);
+ dataReq.addEventListener("error", handleError, false);
+ dataReq.send(null);
+
+ var UPDATES_RELEASENOTES_TRANSFORMFILE = "chrome://mozapps/content/extensions/updateinfo.xsl";
+
+ var styleReq = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
+ .createInstance(Components.interfaces.nsIXMLHttpRequest);
+ styleReq.open("GET", UPDATES_RELEASENOTES_TRANSFORMFILE, true);
+ styleReq.addEventListener("load", handleResponse, false);
+ styleReq.addEventListener("error", handleError, false);
+ styleReq.send(null);
+ ]]></body>
+ </method>
+
+ <method name="toggleReleaseNotes">
+ <body><![CDATA[
+ if (this.hasAttribute("show-relnotes")) {
+ this._relNotesContainer.style.height = "0px";
+ this.removeAttribute("show-relnotes");
+ this._relNotesToggle.setAttribute(
+ "label",
+ this._relNotesToggle.getAttribute("showlabel")
+ );
+ this._relNotesToggle.setAttribute(
+ "tooltiptext",
+ this._relNotesToggle.getAttribute("showtooltip")
+ );
+ var event = document.createEvent("Events");
+ event.initEvent("RelNotesToggle", true, true);
+ this.dispatchEvent(event);
+ } else {
+ this._relNotesContainer.style.height = this._relNotesContainer.scrollHeight +
+ "px";
+ this.setAttribute("show-relnotes", true);
+ this._relNotesToggle.setAttribute(
+ "label",
+ this._relNotesToggle.getAttribute("hidelabel")
+ );
+ this._relNotesToggle.setAttribute(
+ "tooltiptext",
+ this._relNotesToggle.getAttribute("hidetooltip")
+ );
+ var uri = this.mManualUpdate ?
+ this.mManualUpdate.releaseNotesURI :
+ this.mAddon.releaseNotesURI;
+ this._fetchReleaseNotes(uri);
+ }
+ ]]></body>
+ </method>
+
+ <method name="restart">
+ <body><![CDATA[
+ gViewController.commands["cmd_restartApp"].doCommand();
+ ]]></body>
+ </method>
+
+ <method name="undo">
+ <body><![CDATA[
+ gViewController.commands["cmd_cancelOperation"].doCommand(this.mAddon);
+ ]]></body>
+ </method>
+
+ <method name="uninstall">
+ <body><![CDATA[
+ // If uninstalling does not require a restart then just disable it
+ // and show the undo UI.
+ if (!this.opRequiresRestart("uninstall")) {
+ this.setAttribute("wasDisabled", this.mAddon.userDisabled);
+
+ // We must set userDisabled to true first, this will call
+ // _updateState which will clear any pending attribute set.
+ this.mAddon.userDisabled = true;
+
+ // This won't update any other add-on manager views (bug 582002)
+ this.setAttribute("pending", "uninstall");
+ } else {
+ this.mAddon.uninstall();
+ }
+ ]]></body>
+ </method>
+
+ <method name="showPreferences">
+ <body><![CDATA[
+ gViewController.doCommand("cmd_showItemPreferences", this.mAddon);
+ ]]></body>
+ </method>
+
+ <method name="upgrade">
+ <body><![CDATA[
+ var install = this.mManualUpdate;
+ delete this.mManualUpdate;
+ install.install();
+ ]]></body>
+ </method>
+
+ <method name="retryInstall">
+ <body><![CDATA[
+ var install = this._installStatus.mInstall;
+ if (!install)
+ return;
+ if (install.state != AddonManager.STATE_DOWNLOAD_FAILED &&
+ install.state != AddonManager.STATE_INSTALL_FAILED)
+ return;
+ install.install();
+ ]]></body>
+ </method>
+
+ <method name="showInDetailView">
+ <body><![CDATA[
+ gViewController.loadView("addons://detail/" +
+ encodeURIComponent(this.mAddon.id));
+ ]]></body>
+ </method>
+
+ <method name="onIncludeUpdateChanged">
+ <body><![CDATA[
+ var event = document.createEvent("Events");
+ event.initEvent("IncludeUpdateChanged", true, true);
+ this.dispatchEvent(event);
+ ]]></body>
+ </method>
+
+ <method name="onEnabling">
+ <body><![CDATA[
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onEnabled">
+ <body><![CDATA[
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onDisabling">
+ <body><![CDATA[
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onDisabled">
+ <body><![CDATA[
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onUninstalling">
+ <parameter name="aRestartRequired"/>
+ <body><![CDATA[
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onOperationCancelled">
+ <body><![CDATA[
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onPropertyChanged">
+ <parameter name="aProperties"/>
+ <body><![CDATA[
+ if (aProperties.indexOf("appDisabled") != -1 ||
+ aProperties.indexOf("signedState") != -1 ||
+ aProperties.indexOf("userDisabled") != -1)
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onNoUpdateAvailable">
+ <body><![CDATA[
+ this._showStatus("none");
+ ]]></body>
+ </method>
+
+ <method name="onCheckingUpdate">
+ <body><![CDATA[
+ this._showStatus("checking-update");
+ ]]></body>
+ </method>
+
+ <method name="onCompatibilityUpdateAvailable">
+ <body><![CDATA[
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onExternalInstall">
+ <parameter name="aAddon"/>
+ <parameter name="aExistingAddon"/>
+ <parameter name="aNeedsRestart"/>
+ <body><![CDATA[
+ if (aExistingAddon.id != this.mAddon.id)
+ return;
+
+ // If the install completed without needing a restart then switch to
+ // using the new Addon
+ if (!aNeedsRestart)
+ this._initWithAddon(aAddon);
+ else
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onNewInstall">
+ <parameter name="aInstall"/>
+ <body><![CDATA[
+ if (this.mAddon.applyBackgroundUpdates == AddonManager.AUTOUPDATE_ENABLE)
+ return;
+ if (this.mAddon.applyBackgroundUpdates == AddonManager.AUTOUPDATE_DEFAULT &&
+ AddonManager.autoUpdateDefault)
+ return;
+
+ this.mManualUpdate = aInstall;
+ this._showStatus("update-available");
+ try {
+ this._updateUpgradeInfo();
+ } catch(e) {}
+ ]]></body>
+ </method>
+
+ <method name="onDownloadStarted">
+ <parameter name="aInstall"/>
+ <body><![CDATA[
+ this._updateState();
+ this._showStatus("progress");
+ this._installStatus.initWithInstall(aInstall);
+ ]]></body>
+ </method>
+
+ <method name="onInstallStarted">
+ <parameter name="aInstall"/>
+ <body><![CDATA[
+ this._updateState();
+ this._showStatus("progress");
+ this._installStatus.initWithInstall(aInstall);
+ ]]></body>
+ </method>
+
+ <method name="onInstallEnded">
+ <parameter name="aInstall"/>
+ <parameter name="aAddon"/>
+ <body><![CDATA[
+ // If the install completed without needing a restart then switch to
+ // using the new Addon
+ if (!(aAddon.pendingOperations & AddonManager.PENDING_INSTALL))
+ this._initWithAddon(aAddon);
+ else
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onDownloadFailed">
+ <body><![CDATA[
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onInstallFailed">
+ <body><![CDATA[
+ this._updateState();
+ ]]></body>
+ </method>
+
+ <method name="onInstallCancelled">
+ <body><![CDATA[
+ this._updateState();
+ ]]></body>
+ </method>
+ </implementation>
+
+ <handlers>
+ <handler event="click" button="0"><![CDATA[
+ switch (event.detail) {
+ case 1:
+ // Prevent double-click where the UI changes on the first click
+ this._lastClickTarget = event.originalTarget;
+ break;
+ case 2:
+ if (event.originalTarget.localName != 'button' &&
+ !event.originalTarget.classList.contains('text-link') &&
+ event.originalTarget == this._lastClickTarget) {
+ this.showInDetailView();
+ }
+ break;
+ }
+ ]]></handler>
+ </handlers>
+ </binding>
+
+</bindings> \ No newline at end of file
diff --git a/xpi/content/css/addonversion.css b/xpi/content/css/addonversion.css
index 9931466..d06c7a5 100644
--- a/xpi/content/css/addonversion.css
+++ b/xpi/content/css/addonversion.css
@@ -1,12 +1 @@
-@-moz-document url-prefix(chrome://mozapps/content/extensions/extensions.xul), url-prefix(about:addons) {
- /* addonversion.xml contains a copy of the 'addon-generic' binding Mozilla removed from Fx40+ builds!*/
-
- .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] {
- -moz-binding: url("chrome://classic_theme_restorer/content/addonversion.xml#addon-generic") !important;
- }
-
- .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] .name-container .version {
- visibility: visible !important;
- }
-
-} \ No newline at end of file
+@import url(chrome://ctraddon_os_special/skin/addonversion_extra.css); \ No newline at end of file
diff --git a/xpi/content/css/addonversion46.css b/xpi/content/css/addonversion46.css
index b493991..f556e4b 100644
--- a/xpi/content/css/addonversion46.css
+++ b/xpi/content/css/addonversion46.css
@@ -1,12 +1 @@
-@-moz-document url-prefix(chrome://mozapps/content/extensions/extensions.xul), url-prefix(about:addons) {
- /* addonversion.xml contains a copy of the 'addon-generic' binding Mozilla removed from Fx40+ builds!*/
-
- .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] {
- -moz-binding: url("chrome://classic_theme_restorer/content/addonversion_fx46.xml#addon-generic") !important;
- }
-
- .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] .name-container .version {
- visibility: visible !important;
- }
-
-} \ No newline at end of file
+@import url(chrome://ctraddon_os_special/skin/addonversion46_extra.css); \ No newline at end of file
diff --git a/xpi/content/css/linux/addonversion46_extra.css b/xpi/content/css/linux/addonversion46_extra.css
new file mode 100644
index 0000000..2e47486
--- /dev/null
+++ b/xpi/content/css/linux/addonversion46_extra.css
@@ -0,0 +1,12 @@
+@-moz-document url-prefix(chrome://mozapps/content/extensions/extensions.xul), url-prefix(about:addons) {
+ /* addonversion.xml contains a copy of the 'addon-generic' binding Mozilla removed from Fx40+ builds!*/
+
+ .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] {
+ -moz-binding: url("chrome://classic_theme_restorer/content/addonversionUnix_fx46.xml#addon-generic") !important;
+ }
+
+ .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] .name-container .version {
+ visibility: visible !important;
+ }
+
+} \ No newline at end of file
diff --git a/xpi/content/css/linux/addonversion_extra.css b/xpi/content/css/linux/addonversion_extra.css
new file mode 100644
index 0000000..d2757f8
--- /dev/null
+++ b/xpi/content/css/linux/addonversion_extra.css
@@ -0,0 +1,12 @@
+@-moz-document url-prefix(chrome://mozapps/content/extensions/extensions.xul), url-prefix(about:addons) {
+ /* addonversion.xml contains a copy of the 'addon-generic' binding Mozilla removed from Fx40+ builds!*/
+
+ .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] {
+ -moz-binding: url("chrome://classic_theme_restorer/content/addonversionUnix.xml#addon-generic") !important;
+ }
+
+ .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] .name-container .version {
+ visibility: visible !important;
+ }
+
+} \ No newline at end of file
diff --git a/xpi/content/css/linux/smallnavbutextra.css b/xpi/content/css/linux/smallnavbutextra.css
index 0e38da2..7c0e557 100644
--- a/xpi/content/css/linux/smallnavbutextra.css
+++ b/xpi/content/css/linux/smallnavbutextra.css
@@ -180,7 +180,7 @@
#navigator-toolbox #nav-bar toolbarbutton .toolbarbutton-badge-stack .toolbarbutton-badge {
min-width: 0px !important;
width: 10px !important;
- font-size:60% !important;
+ font-size:75% !important;
margin-top: -4px !important;
-moz-margin-end: -3px !important;
}
diff --git a/xpi/content/css/mac/addonversion46_extra.css b/xpi/content/css/mac/addonversion46_extra.css
new file mode 100644
index 0000000..2e47486
--- /dev/null
+++ b/xpi/content/css/mac/addonversion46_extra.css
@@ -0,0 +1,12 @@
+@-moz-document url-prefix(chrome://mozapps/content/extensions/extensions.xul), url-prefix(about:addons) {
+ /* addonversion.xml contains a copy of the 'addon-generic' binding Mozilla removed from Fx40+ builds!*/
+
+ .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] {
+ -moz-binding: url("chrome://classic_theme_restorer/content/addonversionUnix_fx46.xml#addon-generic") !important;
+ }
+
+ .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] .name-container .version {
+ visibility: visible !important;
+ }
+
+} \ No newline at end of file
diff --git a/xpi/content/css/mac/addonversion_extra.css b/xpi/content/css/mac/addonversion_extra.css
new file mode 100644
index 0000000..d2757f8
--- /dev/null
+++ b/xpi/content/css/mac/addonversion_extra.css
@@ -0,0 +1,12 @@
+@-moz-document url-prefix(chrome://mozapps/content/extensions/extensions.xul), url-prefix(about:addons) {
+ /* addonversion.xml contains a copy of the 'addon-generic' binding Mozilla removed from Fx40+ builds!*/
+
+ .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] {
+ -moz-binding: url("chrome://classic_theme_restorer/content/addonversionUnix.xml#addon-generic") !important;
+ }
+
+ .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] .name-container .version {
+ visibility: visible !important;
+ }
+
+} \ No newline at end of file
diff --git a/xpi/content/css/paneluibutton_tweak2.css b/xpi/content/css/paneluibutton_tweak2.css
new file mode 100644
index 0000000..904b969
--- /dev/null
+++ b/xpi/content/css/paneluibutton_tweak2.css
@@ -0,0 +1,134 @@
+@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
+
+@-moz-document url(chrome://browser/content/browser.xul) {
+
+ #TabsToolbar #ctraddon_appbutton,
+ #main-window #titlebar #ctraddon_appbutton2{
+ visibility: collapse !important;
+ }
+
+ #main-window #navigator-toolbox #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button .toolbarbutton-text {
+ display:block !important;
+ color: white !important;
+ text-shadow: 0 0 1px rgba(0,0,0,.7),
+ 0 1px 1.5px rgba(0,0,0,.5) !important;
+ font-weight: bold !important;
+ padding: 0 1.4em .05em !important;
+ }
+ #main-window #navigator-toolbox #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button .toolbarbutton-icon{
+ visibility: hidden !important;
+ max-width: unset !important;
+ -moz-margin-end: -40px !important;
+ }
+
+ #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button {
+ -moz-appearance: none !important;
+ border:1px solid !important;
+ border-color:hsla(214,89%,21%,.5) !important;
+ border-radius:2.5px 2.5px 0px 0px !important;
+ margin-top:1px !important;
+ margin-bottom:1px !important;
+ }
+
+ #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button .toolbarbutton-icon {
+ width: 0px !important;
+ }
+
+ #main-window[tabsintitlebar][sizemode="normal"] #toolbar-menubar[autohide="true"][inactive="true"]:not([customizing="true"]) ~ #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button:hover:active,
+ #main-window[tabsintitlebar][sizemode="normal"] #toolbar-menubar[autohide="true"][inactive="true"]:not([customizing="true"]) ~ #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button[open]{
+ border-radius: 0 0 0 0 !important;
+ }
+
+ #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button:hover:active,
+ #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button[open] {
+ -moz-appearance:none !important;
+ border-radius: 2.5px 2.5px 0 0 !important;
+ }
+
+ #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button {
+ background: linear-gradient(rgb(247,182,82), rgb(215,98,10) 95%) !important;
+ border-color: rgba(83,42,6,.9) !important;
+ box-shadow: 0 1px 0 rgba(255,255,255,.25) inset,
+ 0 0 0 1px rgba(255,255,255,.25) inset !important;
+ }
+ #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button:hover:not(:active):not([open]){
+ background-image: radial-gradient(farthest-side at center bottom, rgba(252,240,89,.5) 10%, rgba(252,240,89,0) 70%),
+ radial-gradient(farthest-side at center bottom, rgb(236,133,0), rgba(255,229,172,0)),
+ linear-gradient(rgb(246,170,69), rgb(209,74,0) 95%) !important;
+ border-color: rgba(83,42,6,.9) !important;
+ box-shadow: 0 1px 0 rgba(255,255,255,.1) inset,
+ 0 0 2px 1px rgba(250,234,169,.7) inset,
+ 0 -1px 0 rgba(250,234,169,.5) inset !important;
+ }
+
+ #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button:hover:active,
+ #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button[open]{
+ background-image: linear-gradient(rgb(246,170,69), rgb(209,74,0) 95%) !important;
+ box-shadow: 0 2px 3px rgba(0,0,0,.4) inset,
+ 0 1px 1px rgba(0,0,0,.2) inset !important;
+ }
+
+ #main-window[privatebrowsingmode=temporary] #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button{
+ background-image: linear-gradient(rgb(153,38,211), rgb(105,19,163) 95%) !important;
+ border-color: rgba(43,8,65,.9) !important;
+ }
+
+ #main-window[privatebrowsingmode=temporary] #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button:hover:not(:active):not([open]){
+ background-image: radial-gradient(farthest-side at center bottom, rgba(240,193,255,.5) 10%, rgba(240,193,255,0) 70%),
+ radial-gradient(farthest-side at center bottom, rgb(192,81,247), rgba(236,172,255,0)),
+ linear-gradient(rgb(144,20,207), rgb(95,0,158) 95%) !important;
+ border-color: rgba(43,8,65,.9) !important;
+ box-shadow: 0 1px 0 rgba(255,255,255,.1) inset,
+ 0 0 2px 1px rgba(240,193,255,.7) inset,
+ 0 -1px 0 rgba(240,193,255,.5) inset !important;
+ }
+
+ #main-window[privatebrowsingmode=temporary] #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button:hover:active,
+ #main-window[privatebrowsingmode=temporary] #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button[open] {
+ background-image: linear-gradient(rgb(144,20,207), rgb(95,0,158) 95%) !important;
+ }
+
+ #main-window[tabsintitlebar][sizemode="normal"] #toolbar-menubar[autohide="true"][inactive="true"]:not([customizing="true"]) ~ #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button,
+ #main-window[tabsintitlebar][sizemode="normal"] #toolbar-menubar[autohide="true"][inactive="true"]:not([customizing="true"]) ~ #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button[open]{
+ border-radius: 0 0 4px 4px !important;
+ }
+
+ #main-window[tabsintitlebar][sizemode="normal"] #toolbar-menubar[autohide="true"][inactive="true"]:not([customizing="true"]) ~ #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button{
+ margin-top:-16px !important;
+ margin-bottom:24px !important;
+ }
+
+ @media all and (-moz-windows-classic) {
+ #main-window[tabsintitlebar][sizemode="normal"] #toolbar-menubar[autohide="true"][inactive="true"]:not([customizing="true"]) ~ #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button{
+ margin-top:-18px !important;
+ }
+ }
+
+ #main-window[tabsintitlebar][sizemode="maximized"] #toolbar-menubar[autohide="true"][inactive="true"]:not([customizing="true"]) ~ #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button,
+ #main-window[tabsintitlebar][inFullscreen] #toolbar-menubar[autohide="true"][inactive="true"]:not([customizing="true"]) ~ #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button{
+ margin-top:0px !important;
+ }
+
+ #main-window[tabsintitlebar][sizemode="maximized"] #toolbar-menubar[autohide="true"][inactive="true"]:not([customizing="true"]) ~ #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button:hover,
+ #main-window[tabsintitlebar][inFullscreen] #toolbar-menubar[autohide="true"][inactive="true"]:not([customizing="true"]) ~ #TabsToolbar #ctraddon_panelui-button #PanelUI-menu-button:hover{
+ border-radius: 0 4px 0 0 !important;
+ }
+
+}
+
+@-moz-document url(chrome://classic_theme_restorer/content/options.xul) {
+
+ #ctraddon_pw_appbuttonc_aurora,
+ #ctraddon_pw_appbuttonc_nightly,
+ #ctraddon_pw_appbuttonc_transp,
+ #ctraddon_pw_appbuttonc_palemo,
+ #ctraddon_pw_appbuttonc_red,
+ #ctraddon_pw_appbuttonc_green,
+ #ctraddon_pw_appbuttonc_gray,
+ #ctraddon_pw_appbuttonc_purple,
+ #ctraddon_pw_appbuttonc_white{
+ visibility: collapse !important;
+ display: none !important;
+ }
+
+} \ No newline at end of file
diff --git a/xpi/content/css/tabs_curvedall.css b/xpi/content/css/tabs_curvedall.css
index 2c2295b..0af6c2f 100644
--- a/xpi/content/css/tabs_curvedall.css
+++ b/xpi/content/css/tabs_curvedall.css
@@ -3,7 +3,7 @@
@-moz-document url(chrome://browser/content/browser.xul){
- #titlebar-placeholder-on-TabsToolbar-for-captions-buttons{
+ #titlebar-placeholder-on-TabsToolbar-for-captions-buttons:not(:-moz-lwtheme){
-moz-margin-start: 0px !important;
}
@@ -14,43 +14,26 @@
.tab-background-start[visuallyselected=true]:-moz-locale-dir(ltr):not(:-moz-lwtheme)::before,
.tab-background-end[visuallyselected=true]:-moz-locale-dir(rtl):not(:-moz-lwtheme)::before,
.tab-background-end[visuallyselected=true]:-moz-locale-dir(ltr):not(:-moz-lwtheme)::before,
- .tab-background-start[visuallyselected=true]:-moz-locale-dir(rtl):not(:-moz-lwtheme)::before,
- .tab-background-start[visuallyselected=true]:-moz-lwtheme::before,
- .tab-background-end[visuallyselected=true]:-moz-lwtheme::before {
+ .tab-background-start[visuallyselected=true]:-moz-locale-dir(rtl):not(:-moz-lwtheme)::before {
background-image: unset !important;
}
- .tab-background-start[visuallyselected=true]:-moz-locale-dir(ltr):-moz-lwtheme::before,
- .tab-background-end[visuallyselected=true]:-moz-locale-dir(rtl):-moz-lwtheme::before,
- .tab-background-end[visuallyselected=true]:-moz-locale-dir(ltr):-moz-lwtheme::before,
- .tab-background-start[visuallyselected=true]:-moz-locale-dir(rtl):-moz-lwtheme::before {
- clip-path: unset !important;
- }
- .tab-background-middle[visuallyselected=true],
- .tab-background-middle[visuallyselected=true]:-moz-lwtheme {
+ .tab-background-middle[visuallyselected=true]:not(:-moz-lwtheme) {
background-color: unset !important;
background-image: unset !important;
}
- .tab-background-start[visuallyselected=true]:-moz-lwtheme::before,
- .tab-background-end[visuallyselected=true]:-moz-lwtheme::before,
- .tab-background-middle[visuallyselected=true]:-moz-lwtheme {
- background-color: unset !important;
- }
.tab-background-start[visuallyselected=true]:-moz-locale-dir(ltr):not(:-moz-lwtheme)::before,
.tab-background-end[visuallyselected=true]:-moz-locale-dir(rtl):not(:-moz-lwtheme)::before ,
.tab-background-end[visuallyselected=true]:-moz-locale-dir(ltr):not(:-moz-lwtheme)::before,
.tab-background-start[visuallyselected=true]:-moz-locale-dir(rtl):not(:-moz-lwtheme)::before,
- .tab-background-start[visuallyselected=true]:-moz-locale-dir(ltr)::after,
- .tab-background-end[visuallyselected=true]:-moz-locale-dir(rtl)::after,
- .tab-background-end[visuallyselected=true]:-moz-locale-dir(ltr)::after,
- .tab-background-start[visuallyselected=true]:-moz-locale-dir(rtl)::after,
- .tab-background-middle[visuallyselected=true],
- .tab-background-middle[visuallyselected=true]:-moz-lwtheme,
- .tab-background-start[visuallyselected=true]:-moz-lwtheme::before,
- .tab-background-end[visuallyselected=true]:-moz-lwtheme::before,
- .tabbrowser-tab:hover > .tab-stack > .tab-background:not([visuallyselected=true]),
- .tabbrowser-tab[pinned][titlechanged]:not([visuallyselected="true"]) > .tab-stack > .tab-content,
- #tabbrowser-tabs::before {
+ .tab-background-start[visuallyselected=true]:-moz-locale-dir(ltr):not(:-moz-lwtheme)::after,
+ .tab-background-end[visuallyselected=true]:-moz-locale-dir(rtl):not(:-moz-lwtheme)::after,
+ .tab-background-end[visuallyselected=true]:-moz-locale-dir(ltr):not(:-moz-lwtheme)::after,
+ .tab-background-start[visuallyselected=true]:-moz-locale-dir(rtl):not(:-moz-lwtheme)::after,
+ .tab-background-middle[visuallyselected=true]:not(:-moz-lwtheme),
+ .tabbrowser-tab:not(:-moz-lwtheme):hover > .tab-stack > .tab-background:not([visuallyselected=true]),
+ .tabbrowser-tab:not(:-moz-lwtheme)[pinned][titlechanged]:not([visuallyselected="true"]) > .tab-stack > .tab-content,
+ #tabbrowser-tabs:not(:-moz-lwtheme)::before {
background-image: none !important;
}
@@ -173,22 +156,22 @@
}
/* Tabs toolbar tab close button (Fx31+) */
- #ctraddon_tabs-closebutton{
+ #ctraddon_tabs-closebutton:not(:-moz-lwtheme){
-moz-image-region: rect(0, 16px, 16px, 0) !important;
-moz-appearance: none !important;
border: none !important;
padding: 0px !important;
list-style-image: url("chrome://classic_theme_restorer/content/images/close.png") !important;
}
- #ctraddon_tabs-closebutton:hover{
+ #ctraddon_tabs-closebutton:not(:-moz-lwtheme):hover{
-moz-image-region: rect(0, 32px, 16px, 16px) !important;
}
- #ctraddon_tabs-closebutton:hover:active {
+ #ctraddon_tabs-closebutton:not(:-moz-lwtheme):hover:active {
-moz-image-region: rect(0, 48px, 16px, 32px) !important;
}
/* Tab close button */
- .tabbrowser-tab:not([pinned]):not([protected]):not([autoReload]) .tab-close-button {
+ .tabbrowser-tab:not(:-moz-lwtheme):not([pinned]):not([protected]):not([autoReload]) .tab-close-button {
-moz-appearance: none !important;
-moz-image-region: rect(0, 64px, 16px, 48px) !important;
border: none !important;
@@ -196,23 +179,23 @@
list-style-image: url("chrome://classic_theme_restorer/content/images/close.png") !important;
}
- .tabbrowser-tab:not([pinned]):not([protected]):not([autoReload]) .tab-close-button:hover,
- .tabbrowser-tab:not([pinned]):not([protected]):not([autoReload]) .tab-close-button:hover[selected="true"] {
+ .tabbrowser-tab:not(:-moz-lwtheme):not([pinned]):not([protected]):not([autoReload]) .tab-close-button:hover,
+ .tabbrowser-tab:not(:-moz-lwtheme):not([pinned]):not([protected]):not([autoReload]) .tab-close-button:hover[selected="true"] {
-moz-image-region: rect(0, 32px, 16px, 16px) !important;
}
- .tabbrowser-tab:not([pinned]):not([protected]):not([autoReload]) .tab-close-button:hover:active,
- .tabbrowser-tab:not([pinned]):not([protected]):not([autoReload]) .tab-close-button:hover:active[selected="true"] {
+ .tabbrowser-tab:not(:-moz-lwtheme):not([pinned]):not([protected]):not([autoReload]) .tab-close-button:hover:active,
+ .tabbrowser-tab:not(:-moz-lwtheme):not([pinned]):not([protected]):not([autoReload]) .tab-close-button:hover:active[selected="true"] {
-moz-image-region: rect(0, 48px, 16px, 32px) !important;
}
- .tabbrowser-tab:not([pinned]):not([protected]):not([autoReload]) .tab-close-button[selected="true"] {
+ .tabbrowser-tab:not(:-moz-lwtheme):not([pinned]):not([protected]):not([autoReload]) .tab-close-button[selected="true"] {
-moz-image-region: rect(0, 16px, 16px, 0) !important;
}
/*TabUtilities autoreload extra*/
- .tabbrowser-tab:not([pinned]):not([protected])[autoReload] .tab-close-button:hover,
- .tabbrowser-tab:not([pinned]):not([protected])[autoReload] .tab-close-button:hover[selected="true"] {
+ .tabbrowser-tab:not(:-moz-lwtheme):not([pinned]):not([protected])[autoReload] .tab-close-button:hover,
+ .tabbrowser-tab:not(:-moz-lwtheme):not([pinned]):not([protected])[autoReload] .tab-close-button:hover[selected="true"] {
-moz-image-region: rect(0, 32px, 16px, 16px) !important;
border: none !important;
padding: 0px !important;
@@ -220,7 +203,7 @@
}
/* remove ridiculous clipping */
- #main-window[tabsintitlebar]:not([sizemode="maximized"]):not([inFullscreen]) #toolbar-menubar:-moz-any([autohide="true"][inactive],:not([autohide])) + #TabsToolbar .tab-background-middle:not([selected=true]) {
+ #main-window[tabsintitlebar]:not([sizemode="maximized"]):not([inFullscreen]) #toolbar-menubar:-moz-any([autohide="true"][inactive],:not([autohide])) + #TabsToolbar:not(:-moz-lwtheme) .tab-background-middle:not([selected=true]) {
clip-path: none !important;
}
@@ -234,7 +217,7 @@
}
/*Faviconise tab add-on */
- #tabbrowser-tabs .tabbrowser-tab[faviconized="true"] .tab-icon-image{
+ #tabbrowser-tabs:not(:-moz-lwtheme) .tabbrowser-tab[faviconized="true"] .tab-icon-image{
-moz-margin-start:-12px !important;
-moz-margin-end:-14px !important;
}
diff --git a/xpi/content/css/win8/addonversion46_extra.css b/xpi/content/css/win8/addonversion46_extra.css
new file mode 100644
index 0000000..b493991
--- /dev/null
+++ b/xpi/content/css/win8/addonversion46_extra.css
@@ -0,0 +1,12 @@
+@-moz-document url-prefix(chrome://mozapps/content/extensions/extensions.xul), url-prefix(about:addons) {
+ /* addonversion.xml contains a copy of the 'addon-generic' binding Mozilla removed from Fx40+ builds!*/
+
+ .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] {
+ -moz-binding: url("chrome://classic_theme_restorer/content/addonversion_fx46.xml#addon-generic") !important;
+ }
+
+ .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] .name-container .version {
+ visibility: visible !important;
+ }
+
+} \ No newline at end of file
diff --git a/xpi/content/css/win8/addonversion_extra.css b/xpi/content/css/win8/addonversion_extra.css
new file mode 100644
index 0000000..9931466
--- /dev/null
+++ b/xpi/content/css/win8/addonversion_extra.css
@@ -0,0 +1,12 @@
+@-moz-document url-prefix(chrome://mozapps/content/extensions/extensions.xul), url-prefix(about:addons) {
+ /* addonversion.xml contains a copy of the 'addon-generic' binding Mozilla removed from Fx40+ builds!*/
+
+ .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] {
+ -moz-binding: url("chrome://classic_theme_restorer/content/addonversion.xml#addon-generic") !important;
+ }
+
+ .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] .name-container .version {
+ visibility: visible !important;
+ }
+
+} \ No newline at end of file
diff --git a/xpi/content/css/win8/smallnavbutextra.css b/xpi/content/css/win8/smallnavbutextra.css
index c88ea42..1fc0eb3 100644
--- a/xpi/content/css/win8/smallnavbutextra.css
+++ b/xpi/content/css/win8/smallnavbutextra.css
@@ -448,7 +448,7 @@
#navigator-toolbox #nav-bar toolbarbutton .toolbarbutton-badge-stack .toolbarbutton-badge {
min-width: 0px !important;
width: 10px !important;
- font-size:60% !important;
+ font-size:75% !important;
margin-top: -4px !important;
-moz-margin-end: -3px !important;
}
diff --git a/xpi/content/css/winaero/addonversion46_extra.css b/xpi/content/css/winaero/addonversion46_extra.css
new file mode 100644
index 0000000..b493991
--- /dev/null
+++ b/xpi/content/css/winaero/addonversion46_extra.css
@@ -0,0 +1,12 @@
+@-moz-document url-prefix(chrome://mozapps/content/extensions/extensions.xul), url-prefix(about:addons) {
+ /* addonversion.xml contains a copy of the 'addon-generic' binding Mozilla removed from Fx40+ builds!*/
+
+ .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] {
+ -moz-binding: url("chrome://classic_theme_restorer/content/addonversion_fx46.xml#addon-generic") !important;
+ }
+
+ .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] .name-container .version {
+ visibility: visible !important;
+ }
+
+} \ No newline at end of file
diff --git a/xpi/content/css/winaero/addonversion_extra.css b/xpi/content/css/winaero/addonversion_extra.css
new file mode 100644
index 0000000..9931466
--- /dev/null
+++ b/xpi/content/css/winaero/addonversion_extra.css
@@ -0,0 +1,12 @@
+@-moz-document url-prefix(chrome://mozapps/content/extensions/extensions.xul), url-prefix(about:addons) {
+ /* addonversion.xml contains a copy of the 'addon-generic' binding Mozilla removed from Fx40+ builds!*/
+
+ .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] {
+ -moz-binding: url("chrome://classic_theme_restorer/content/addonversion.xml#addon-generic") !important;
+ }
+
+ .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] .name-container .version {
+ visibility: visible !important;
+ }
+
+} \ No newline at end of file
diff --git a/xpi/content/css/winaero/smallnavbutextra.css b/xpi/content/css/winaero/smallnavbutextra.css
index 1884d88..798b8e8 100644
--- a/xpi/content/css/winaero/smallnavbutextra.css
+++ b/xpi/content/css/winaero/smallnavbutextra.css
@@ -400,7 +400,7 @@
#navigator-toolbox #nav-bar toolbarbutton .toolbarbutton-badge-stack .toolbarbutton-badge {
min-width: 0px !important;
width: 10px !important;
- font-size:60% !important;
+ font-size:75% !important;
margin-top: -4px !important;
-moz-margin-end: -3px !important;
}
diff --git a/xpi/content/css/winxp/addonversion46_extra.css b/xpi/content/css/winxp/addonversion46_extra.css
new file mode 100644
index 0000000..b493991
--- /dev/null
+++ b/xpi/content/css/winxp/addonversion46_extra.css
@@ -0,0 +1,12 @@
+@-moz-document url-prefix(chrome://mozapps/content/extensions/extensions.xul), url-prefix(about:addons) {
+ /* addonversion.xml contains a copy of the 'addon-generic' binding Mozilla removed from Fx40+ builds!*/
+
+ .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] {
+ -moz-binding: url("chrome://classic_theme_restorer/content/addonversion_fx46.xml#addon-generic") !important;
+ }
+
+ .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] .name-container .version {
+ visibility: visible !important;
+ }
+
+} \ No newline at end of file
diff --git a/xpi/content/css/winxp/addonversion_extra.css b/xpi/content/css/winxp/addonversion_extra.css
new file mode 100644
index 0000000..9931466
--- /dev/null
+++ b/xpi/content/css/winxp/addonversion_extra.css
@@ -0,0 +1,12 @@
+@-moz-document url-prefix(chrome://mozapps/content/extensions/extensions.xul), url-prefix(about:addons) {
+ /* addonversion.xml contains a copy of the 'addon-generic' binding Mozilla removed from Fx40+ builds!*/
+
+ .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] {
+ -moz-binding: url("chrome://classic_theme_restorer/content/addonversion.xml#addon-generic") !important;
+ }
+
+ .addon:not([type="userstyle"]):not([pending="uninstall"])[status="installed"] .name-container .version {
+ visibility: visible !important;
+ }
+
+} \ No newline at end of file
diff --git a/xpi/content/css/winxp/smallnavbutextra.css b/xpi/content/css/winxp/smallnavbutextra.css
index 02afd32..4521a37 100644
--- a/xpi/content/css/winxp/smallnavbutextra.css
+++ b/xpi/content/css/winxp/smallnavbutextra.css
@@ -340,7 +340,7 @@
#navigator-toolbox #nav-bar toolbarbutton .toolbarbutton-badge-stack .toolbarbutton-badge {
min-width: 0px !important;
width: 10px !important;
- font-size:60% !important;
+ font-size:75% !important;
margin-top: -4px !important;
-moz-margin-end: -3px !important;
}
diff --git a/xpi/content/options.js b/xpi/content/options.js
index aec19ae..3da3bef 100644
--- a/xpi/content/options.js
+++ b/xpi/content/options.js
@@ -910,6 +910,17 @@ classicthemerestorerjso.ctr = {
document.getElementById('ctraddon_appbclmmenus').disabled = true;
document.getElementById('ctraddon_pw_appbautocol').disabled = true;
document.getElementById('ctraddon_pw_appbuttonct').disabled = true;
+ } else if (which=="appbutton_pm2"){
+ document.getElementById('ctraddon_altabico_list').disabled = true;
+ document.getElementById('ctraddon_abhigher').disabled = true;
+ document.getElementById('ctraddon_appbutbdl').disabled = true;
+ document.getElementById('ctraddon_appbutcolor_list').disabled = false;
+ document.getElementById('ctraddon_dblclclosefx').disabled = true;
+ document.getElementById('ctraddon_pw_appbutonclab').disabled = true;
+ document.getElementById('ctraddon_pw_appbuttontxt').disabled = true;
+ document.getElementById('ctraddon_appbclmmenus').disabled = true;
+ document.getElementById('ctraddon_pw_appbautocol').disabled = true;
+ document.getElementById('ctraddon_pw_appbuttonct').disabled = true;
} else if (which=="appbutton_v2io" || which=="appbutton_v2io2") {
document.getElementById('ctraddon_altabico_list').disabled = true;
document.getElementById('ctraddon_abhigher').disabled = true;
diff --git a/xpi/content/options.xul b/xpi/content/options.xul
index 6b84d1d..96d6631 100644
--- a/xpi/content/options.xul
+++ b/xpi/content/options.xul
@@ -761,8 +761,9 @@
<menuitem value="appbutton_v2io" label="&Ctr_appbutton2io;" oncommand="classicthemerestorerjso.ctr.ctrpwAppbuttonextra('appbutton_v2io',true)"/>
<menuitem value="appbutton_v2io2" label="&Ctr_appbutton2io; (v2)" oncommand="classicthemerestorerjso.ctr.ctrpwAppbuttonextra('appbutton_v2io2',true)"/>
<menuitem value="appbutton_v2h" label="&Ctr_appbutton2h;" oncommand="classicthemerestorerjso.ctr.ctrpwAppbuttonextra('appbutton_v2h',true)"/>
- <menuitem value="appbutton_pm" label="&Ctr_paneluibtweak;" oncommand="classicthemerestorerjso.ctr.ctrpwAppbuttonextra('appbutton_pm',true)" id="ctraddon_pw_appbutton_pm"/>
- <label value="&Ctr_paneluibtweak2;"/>
+ <menuitem value="appbutton_pm2" label="&Ctr_paneluibtweak;" oncommand="classicthemerestorerjso.ctr.ctrpwAppbuttonextra('appbutton_pm2',true)" id="ctraddon_pw_appbutton_pm2"/>
+ <menuitem value="appbutton_pm" label="&Ctr_paneluibtweak2;" oncommand="classicthemerestorerjso.ctr.ctrpwAppbuttonextra('appbutton_pm',true)" id="ctraddon_pw_appbutton_pm"/>
+ <label value="&Ctr_paneluibtweak3;"/>
<label value=" "/>
<description class="ctraddon_font1">&Ctr_appbuttonI1;</description>
</menupopup>
diff --git a/xpi/content/overlay.js b/xpi/content/overlay.js
index b716cb4..a9550b0 100644
--- a/xpi/content/overlay.js
+++ b/xpi/content/overlay.js
@@ -613,6 +613,7 @@ classicthemerestorerjs.ctr = {
classicthemerestorerjs.ctr.loadUnloadCSS('appbutton_v2io2',false);
classicthemerestorerjs.ctr.loadUnloadCSS('appbutton_v2h',false);
classicthemerestorerjs.ctr.loadUnloadCSS('appbutton_pm',false);
+ classicthemerestorerjs.ctr.loadUnloadCSS('appbutton_pm2',false);
if (branch.getCharPref("appbutton")!="appbutton_off"){
classicthemerestorerjs.ctr.loadUnloadCSS(branch.getCharPref("appbutton"),true);
@@ -3490,6 +3491,7 @@ classicthemerestorerjs.ctr = {
case "appbutton_v2io2": manageCSS("appbutton2io2.css"); break;
case "appbutton_v2h": manageCSS("appbutton2hidden.css"); break;
case "appbutton_pm": manageCSS("paneluibutton_tweak.css"); break;
+ case "appbutton_pm2": manageCSS("paneluibutton_tweak2.css"); break;
case "appbutton_on_nav": manageCSS("appbutton_on_navbar.css"); break;
@@ -4040,7 +4042,7 @@ classicthemerestorerjs.ctr = {
case "appbuttonc_custom":
removeOldSheet(this.appbutton_color);
- if(enable==true && this.prefs.getCharPref('appbuttonc')=='appbuttonc_custom' && this.prefs.getCharPref('appbutton')=='appbutton_pm') {
+ if(enable==true && this.prefs.getCharPref('appbuttonc')=='appbuttonc_custom' && (this.prefs.getCharPref('appbutton')=='appbutton_pm' || this.prefs.getCharPref('appbutton')=='appbutton_pm2')) {
this.appbutton_color=ios.newURI("data:text/css;charset=utf-8," + encodeURIComponent('\
@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);\
diff --git a/xpi/content/overlay_prefs.css b/xpi/content/overlay_prefs.css
index b175546..1d50c03 100644
--- a/xpi/content/overlay_prefs.css
+++ b/xpi/content/overlay_prefs.css
@@ -673,6 +673,7 @@ radio.ctraddontab .radio-check-box1 {
/*PM button menuitem*/
#ctraddon_pw_appbutton_pm label,
+#ctraddon_pw_appbutton_pm2 label,
#ctraddon_pw_pmhidelabels label {
background:url('chrome://classic_theme_restorer/content/images/panelui.png') no-repeat left !important;
padding-left:20px !important;
diff --git a/xpi/install.rdf b/xpi/install.rdf
index 42f824f..0ec2793 100644
--- a/xpi/install.rdf
+++ b/xpi/install.rdf
@@ -5,7 +5,7 @@
<Description rdf:about="urn:mozilla:install-manifest">
<em:id>ClassicThemeRestorer@ArisT2Noia4dev</em:id>
<em:name>Classic Theme Restorer</em:name>
- <em:version>1.4.8beta5</em:version>
+ <em:version>1.4.8beta6</em:version>
<em:type>2</em:type>
<em:multiprocessCompatible>true</em:multiprocessCompatible>
@@ -15,7 +15,7 @@
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>29.0</em:minVersion>
- <em:maxVersion>47.0</em:maxVersion>
+ <em:maxVersion>48.0</em:maxVersion>
</Description>
</em:targetApplication>
diff --git a/xpi/locale/cs/options.dtd b/xpi/locale/cs/options.dtd
index eb02273..9857c89 100644
--- a/xpi/locale/cs/options.dtd
+++ b/xpi/locale/cs/options.dtd
@@ -84,7 +84,8 @@
<!ENTITY Ctr_appbutton2h "Tlačítko v záhlaví okna [&brandShortName;] (hidden)">
<!ENTITY Ctr_appbutton2io "Tlačítko v záhlaví okna [&brandShortName;] (pouze ikona)">
<!ENTITY Ctr_paneluibtweak "Oranžový panel jako tlačítko...">
-<!ENTITY Ctr_paneluibtweak2 "...na liště s panely">
+<!ENTITY Ctr_paneluibtweak2 "Oranžový panel jako tlačítko (pouze ikona)...">
+<!ENTITY Ctr_paneluibtweak3 "...na liště s panely">
<!ENTITY Ctr_appbuttonc_o "Oranžové tlačítko (výchozí)">
<!ENTITY Ctr_appbuttonc_a "Modré tlačítko (Aurora)">
<!ENTITY Ctr_appbuttonc_n "Černé tlačítko (Nightly)">
diff --git a/xpi/locale/da/options.dtd b/xpi/locale/da/options.dtd
index 666cf63..08ad08c 100644
--- a/xpi/locale/da/options.dtd
+++ b/xpi/locale/da/options.dtd
@@ -84,7 +84,8 @@
<!ENTITY Ctr_appbutton2h "Knap på [&brandShortName;] titellinje (skjul)">
<!ENTITY Ctr_appbutton2io "Knap på [&brandShortName;] titellinje (kun ikon)">
<!ENTITY Ctr_paneluibtweak "Vis menuknap som &brandShortName;-knap...">
-<!ENTITY Ctr_paneluibtweak2 "...når på fanebladslinje">
+<!ENTITY Ctr_paneluibtweak2 "Vis menuknap som &brandShortName;-knap (kun ikon)...">
+<!ENTITY Ctr_paneluibtweak3 "...når på fanebladslinje">
<!ENTITY Ctr_appbuttonc_o "Orange knap (standard)">
<!ENTITY Ctr_appbuttonc_a "Blå knap (Aurora)">
<!ENTITY Ctr_appbuttonc_n "Sort knap (Nightly)">
diff --git a/xpi/locale/de/options.dtd b/xpi/locale/de/options.dtd
index 956cd15..f301d64 100644
--- a/xpi/locale/de/options.dtd
+++ b/xpi/locale/de/options.dtd
@@ -84,7 +84,8 @@
<!ENTITY Ctr_appbutton2h "Auf der &brandShortName; Titelleiste (versteckt)">
<!ENTITY Ctr_appbutton2io "Auf der &brandShortName; Titelleiste (nur Symbol)">
<!ENTITY Ctr_paneluibtweak "Zeige Menüschaltfläche als &brandShortName;-Schaltfläche...">
-<!ENTITY Ctr_paneluibtweak2 "...auf der Tableiste">
+<!ENTITY Ctr_paneluibtweak2 "Zeige Menüschaltfläche als &brandShortName;-Schaltfläche (nur Symbol)...">
+<!ENTITY Ctr_paneluibtweak3 "...auf der Tableiste">
<!ENTITY Ctr_appbuttonc_o "Orange Schaltflächenfarbe (Standard)">
<!ENTITY Ctr_appbuttonc_a "Blaue Schaltflächenfarbe (Aurora)">
<!ENTITY Ctr_appbuttonc_n "Schwarze Schaltflächenfarbe (Nightly)">
diff --git a/xpi/locale/dsb/options.dtd b/xpi/locale/dsb/options.dtd
index 9a14668..4b93242 100644
--- a/xpi/locale/dsb/options.dtd
+++ b/xpi/locale/dsb/options.dtd
@@ -57,9 +57,9 @@
<!ENTITY Ctr_square_edges "Kwadratiske górne rožki">
<!ENTITY Ctr_tttitlebar "Rejtarkowy titel w titelowej rědce &brandShortName;">
<!ENTITY Ctr_tabinsertion "Pśiswójźbny rejtark za aktualnym rejtarkom zasunuś (about:config)">
-<!ENTITY Ctr_emptytfavico "Show favicon (if a site does not offer one)">
-<!ENTITY Ctr_emptytfavico_n "None">
-<!ENTITY Ctr_emptytfavico_g "Generic">
+<!ENTITY Ctr_emptytfavico "Faworitowy symbol pokazaś (jolic sedło žeden njama)">
+<!ENTITY Ctr_emptytfavico_n "Žeden">
+<!ENTITY Ctr_emptytfavico_g "Powšykny">
<!ENTITY Ctr_noemptypticon "Prozny faworitowy symbol z pśipětego rejtarka">
<!ENTITY Ctr_e10stab_notd "Rejtarki e10s: Pódsmužku wótpóraś">
<!ENTITY Ctr_closetab_0 "Rejtark zacyniś">
@@ -83,8 +83,9 @@
<!ENTITY Ctr_appbutton2 "Tłocašk na titelowej rědce [&brandShortName;]">
<!ENTITY Ctr_appbutton2h "Tłocašk na titelowej rědce (schowany)">
<!ENTITY Ctr_appbutton2io "Tłocašk na titelowej rědce [&brandShortName;] (jano symbol)">
-<!ENTITY Ctr_paneluibtweak "Menijowy tłocašk ako tłocašk &brandShortName; pokazaś,...">
-<!ENTITY Ctr_paneluibtweak2 "...gaž jo na rejtarkowej rědce">
+<!ENTITY Ctr_paneluibtweak "Menijowy tłocašk ako tłocašk &brandShortName; pokazaś,...">
+<!ENTITY Ctr_paneluibtweak2 "Menijowy tłocašk ako tłocašk &brandShortName; pokazaś (jano symbol),...">
+<!ENTITY Ctr_paneluibtweak3 "...gaž jo na rejtarkowej rědce">
<!ENTITY Ctr_appbuttonc_o "Tłocaškowa barwa: Oranžowy (standard)">
<!ENTITY Ctr_appbuttonc_a "Tłocaškkowa barwa: Módry (Aurora)">
<!ENTITY Ctr_appbuttonc_n "Tłocaškowa barwa: Carny (Nightly)">
@@ -129,7 +130,7 @@
<!ENTITY Ctr_wincontrols "Pśesuwajobne wóźeńske elementy połneje wobrazowki">
<!ENTITY Ctr_oldtoplevimg "Wobraze 'nejwušeje domeny': klasiski wenkowny naglěd">
<!ENTITY Ctr_altalertbox "'Warnowański kašćik': alternatiwny wenkowny naglěd">
-<!ENTITY Ctr_emptygfavico "Replace generic favicon">
+<!ENTITY Ctr_emptygfavico "Powšykny fawority symbol wuměniś">
<!ENTITY Ctr_mstatusbar "Pśesuwajobny wobcerk statusoweje rědki">
<!ENTITY Ctr_mstatusbars4e "Wobcerk statusoweje rědki kontrolěrujo se pśez 'Status-4-Evar'">
<!ENTITY Ctr_mstatusbartpp "Wobcerk statusoweje rědki kontrolěrujo se pśez 'ThePuzzlePiece'">
@@ -173,8 +174,8 @@
<!ENTITY Ctr_xpinstallui "Stare dodankowe instalěrowańske wokno (nastajenje about:config)">
<!ENTITY Ctr_bmbutton "Tłocašk menija cytańskich znamjenjow">
<!ENTITY Ctr_bmbutpanelm "Wuskokujucy meni: naglěd menijowego wuskokujucego wokna">
-<!ENTITY Ctr_bmbunsortbm "Wuskokujucy meni: pódmeni 'Njesortěrowane cytańske znamjenja' submenu">
-<!ENTITY Ctr_bmbunsortbm2 "Menu above bookmarks">
+<!ENTITY Ctr_bmbunsortbm "Wuskokujucy meni: meni 'Njesortěrowane cytańske znamjenja'">
+<!ENTITY Ctr_bmbunsortbm2 "Meni nad cytańskimi znamjenjami">
<!ENTITY Ctr_bmbviewbmtb "Wuskokujucy meni: 'Rědku cytańskich znamjenjow pokazaś' pokazaś">
<!ENTITY Ctr_bmbnounsort "Wuskokujucy meni: 'Njesortěrowane cytańske znamjenja' schowaś">
<!ENTITY Ctr_bmbutnotext "Tekst na rědce cytańskich znamjenjow schowaś">
@@ -225,11 +226,11 @@
<!ENTITY Ctr_starinurlinfo "Standardny tłocašk menija Cytańske znamjenja se schowajo">
<!ENTITY Ctr_feedinurl "Kanalowy tłocašk">
<!ENTITY Ctr_hideurelstop "Tłocaška Stoj a Znowego adresowych rědkow schowaś">
-<!ENTITY Ctr_hideurelstop2 "Always show 'go' button">
+<!ENTITY Ctr_hideurelstop2 "Tłocašk 'Start' pśecej pokazaś">
<!ENTITY Ctr_hideurlgo "Tłocašk 'Start' schowaś">
<!ENTITY Ctr_hideurlsrg "Źěleńske smužki a prozne znamjenja za tłocaški 'Znowego, stoj a Start' schowaś">
<!ENTITY Ctr_urlbardropm "Tłocašk špica šypki do slědneje móžneje pozicije pśesunuś">
-<!ENTITY Ctr_urlbardropm2 "Make dropmarker always visible">
+<!ENTITY Ctr_urlbardropm2 "Tłocašk špica šypki pśecej pokazaś">
<!ENTITY Ctr_altreaderico "Alternatiwne 'cytakowe' symbole">
<!ENTITY Ctr_hideprbutton "Zdźěleński symbol schowaś, gaž wuskokujuce wokno se blokěrujo">
<!ENTITY Ctr_locsearchbw10 "Wusokosć adresowych a pytańskich pólow reducěrowaś (eksperimentelne)">
@@ -362,8 +363,8 @@
<!ENTITY Ctr_addon-bar.accesskey "R">
<!ENTITY appMenuGettingStarted.label "Prědne kšace">
<!ENTITY goCmd.label "Start">
-<!ENTITY Ctr_menu_restart.label "Restart &brandShortName;">
-<!ENTITY Ctr_restartapp "'Restart &brandShortName;' in appmenu and filemenu">
+<!ENTITY Ctr_menu_restart.label "&brandShortName; znowego startowaś">
+<!ENTITY Ctr_restartapp "'&brandShortName;' znowego startowaś pód tłocaškom '&brandShortName;' a w meniju Dataja">
<!-- For page context entries. Have to be adjusted for every locale! -->
<!ENTITY backCmd.accesskey "S">
diff --git a/xpi/locale/el/options.dtd b/xpi/locale/el/options.dtd
index 88d5184..1ab1814 100644
--- a/xpi/locale/el/options.dtd
+++ b/xpi/locale/el/options.dtd
@@ -84,7 +84,8 @@
<!ENTITY Ctr_appbutton2h "Στη γραμμή τίτλου του [&brandShortName;] (σε απόκρυψη)">
<!ENTITY Ctr_appbutton2io "Στη γραμμή τίτλου του [&brandShortName;] (μόνο εικονίδιο)">
<!ENTITY Ctr_paneluibtweak "Εμφάνιση κουμπιού μενού ως κουμπί &brandShortName;…">
-<!ENTITY Ctr_paneluibtweak2 "…όταν βρίσκεται στην εργαλειοθήκη καρτελών">
+<!ENTITY Ctr_paneluibtweak2 "Εμφάνιση κουμπιού μενού ως κουμπί &brandShortName; (μόνο εικονίδιο)…">
+<!ENTITY Ctr_paneluibtweak3 "…όταν βρίσκεται στην εργαλειοθήκη καρτελών">
<!ENTITY Ctr_appbuttonc_o "Πορτοκαλί χρώμα κουμπιού (προεπιλογή)">
<!ENTITY Ctr_appbuttonc_a "Μπλε χρώμα κουμπιού (Aurora)">
<!ENTITY Ctr_appbuttonc_n "Μαύρο χρώμα κουμπιού (Nightly)">
diff --git a/xpi/locale/en-US/options.dtd b/xpi/locale/en-US/options.dtd
index 63c61e9..02ded7b 100644
--- a/xpi/locale/en-US/options.dtd
+++ b/xpi/locale/en-US/options.dtd
@@ -84,7 +84,8 @@
<!ENTITY Ctr_appbutton2h "Button on [&brandShortName;] titlebar (hidden)">
<!ENTITY Ctr_appbutton2io "Button on [&brandShortName;] titlebar (icon only)">
<!ENTITY Ctr_paneluibtweak "Display menu button as &brandShortName; button...">
-<!ENTITY Ctr_paneluibtweak2 "...when on tabs toolbar">
+<!ENTITY Ctr_paneluibtweak2 "Display menu button as &brandShortName; button (icon only)...">
+<!ENTITY Ctr_paneluibtweak3 "...when on tabs toolbar">
<!ENTITY Ctr_appbuttonc_o "Orange button color (default)">
<!ENTITY Ctr_appbuttonc_a "Blue button color (Aurora)">
<!ENTITY Ctr_appbuttonc_n "Black button color (Nightly)">
diff --git a/xpi/locale/es/options.dtd b/xpi/locale/es/options.dtd
index 58e4ab3..02559e5 100644
--- a/xpi/locale/es/options.dtd
+++ b/xpi/locale/es/options.dtd
@@ -84,7 +84,8 @@
<!ENTITY Ctr_appbutton2h "Botón en la barra de título [de &brandShortName;] (oculto)">
<!ENTITY Ctr_appbutton2io "Botón en la barra de título [de &brandShortName;] (sólo icono)">
<!ENTITY Ctr_paneluibtweak "Botón de menú de panel principal en la barra de pestañas,...">
-<!ENTITY Ctr_paneluibtweak2 "...con estilo botón de la aplicación">
+<!ENTITY Ctr_paneluibtweak2 "Botón de menú de panel principal en la barra de pestañas (sólo icono),...">
+<!ENTITY Ctr_paneluibtweak3 "...con estilo botón de la aplicación">
<!ENTITY Ctr_appbuttonc_o "Color de botón naranja (predeterminado)">
<!ENTITY Ctr_appbuttonc_a "Color de botón azul (Aurora)">
<!ENTITY Ctr_appbuttonc_n "Color de botón negro (Nightly)">
diff --git a/xpi/locale/et/options.dtd b/xpi/locale/et/options.dtd
index c28093f..3785f10 100644
--- a/xpi/locale/et/options.dtd
+++ b/xpi/locale/et/options.dtd
@@ -84,7 +84,8 @@
<!ENTITY Ctr_appbutton2h "Nupp [&brandShortName;]i tiitliribal (peidetud)">
<!ENTITY Ctr_appbutton2io "Nupp [&brandShortName;]i tiitliribal (ainult ikoon)">
<!ENTITY Ctr_paneluibtweak "Kasuta menüünupu jaoks &brandShortName;i nupu välimust...">
-<!ENTITY Ctr_paneluibtweak2 "...kui see asub kaartide ribal">
+<!ENTITY Ctr_paneluibtweak2 "Kasuta menüünupu jaoks &brandShortName;i nupu välimust (ainult ikoon)...">
+<!ENTITY Ctr_paneluibtweak3 "...kui see asub kaartide ribal">
<!ENTITY Ctr_appbuttonc_o "Oranži värvi nupp (vaikimisi)">
<!ENTITY Ctr_appbuttonc_a "Sinist värvi nupp (Aurora)">
<!ENTITY Ctr_appbuttonc_n "Musta värvi nupp (Nightly)">
diff --git a/xpi/locale/fr/options.dtd b/xpi/locale/fr/options.dtd
index 94ab4da..47cfbe4 100644
--- a/xpi/locale/fr/options.dtd
+++ b/xpi/locale/fr/options.dtd
@@ -84,7 +84,8 @@
<!ENTITY Ctr_appbutton2h "Bouton sur la barre de titre [&brandShortName;] (caché)">
<!ENTITY Ctr_appbutton2io "Bouton sur la barre de titre [&brandShortName;] (icône seule)">
<!ENTITY Ctr_paneluibtweak "Bouton orange sur la barre d'onglets">
-<!ENTITY Ctr_paneluibtweak2 " ">
+<!ENTITY Ctr_paneluibtweak2 "Bouton orange sur la barre d'onglets (icône seule)">
+<!ENTITY Ctr_paneluibtweak3 " ">
<!ENTITY Ctr_appbuttonc_o "Bouton orange (par défaut)">
<!ENTITY Ctr_appbuttonc_a "Bouton bleu (Aurora)">
<!ENTITY Ctr_appbuttonc_n "Bouton noir (Nightly)">
@@ -160,8 +161,8 @@
<!ENTITY Ctr_ctroldsearch "Ancienne barre de recherche">
<!ENTITY Ctr_ctroldsearchc "Effacer boîte de recherche après une recherche">
<!ENTITY Ctr_search_oit "Ouvrir la recherche dans un nouvel onglet (préférence about:config)">
-<!ENTITY Ctr_osearch_meoit "Clic central : recherche dans un nouvel “onglet au premier plan”">
-<!ENTITY Ctr_osearch_dm "Petite “dropmarker”">
+<!ENTITY Ctr_osearch_meoit "Clic central : recherche dans un nouvel « onglet au premier plan »">
+<!ENTITY Ctr_osearch_dm "Petite « dropmarker »">
<!ENTITY Ctr_addonmanager "Gestionnaire de modules complémentaires">
<!ENTITY Ctr_alt_addonsp "Page « Plus d'infos » des modules : apparence alternative">
<!ENTITY Ctr_alt_addonsm "Appearance alternative">
@@ -225,7 +226,7 @@
<!ENTITY Ctr_starinurlinfo "Par défaut le bouton de menu des marque-pages est masqué">
<!ENTITY Ctr_feedinurl "Bouton d'abonnement">
<!ENTITY Ctr_hideurelstop "Masquer « stop-actualiser »">
-<!ENTITY Ctr_hideurelstop2 "Toujours afficher le bouton « aller à »"">
+<!ENTITY Ctr_hideurelstop2 "Toujours afficher le bouton « aller à »">
<!ENTITY Ctr_hideurlgo "Masquer le bouton « aller à »">
<!ENTITY Ctr_hideurlsrg "Cacher les séparateurs de boutons « actualiser, stop &amp; aller à » &amp; espaces">
<!ENTITY Ctr_urlbardropm "Move dropmarker to the last possible position">
diff --git a/xpi/locale/hsb/options.dtd b/xpi/locale/hsb/options.dtd
index ff86730..b11477b 100644
--- a/xpi/locale/hsb/options.dtd
+++ b/xpi/locale/hsb/options.dtd
@@ -57,9 +57,9 @@
<!ENTITY Ctr_square_edges "Kwadratiske hornje róžki">
<!ENTITY Ctr_tttitlebar "Rajtarkowy titul w titulne lajsće &brandShortName;">
<!ENTITY Ctr_tabinsertion "Přiwuzny rajtark za aktualnym rajtarkom zasadźić (about:config)">
-<!ENTITY Ctr_emptytfavico "Show favicon (if a site does not offer one)">
-<!ENTITY Ctr_emptytfavico_n "None">
-<!ENTITY Ctr_emptytfavico_g "Generic">
+<!ENTITY Ctr_emptytfavico "Faworitowy symbol pokazać (jeli sydło žadyn njepodawa)">
+<!ENTITY Ctr_emptytfavico_n "Žadyn">
+<!ENTITY Ctr_emptytfavico_g "Powšitkowny">
<!ENTITY Ctr_noemptypticon "Prózdny faworitowy symbol z připinjeneho rajtarka wotstronić">
<!ENTITY Ctr_e10stab_notd "E10s-rajtarki: podsmužku wotstronić">
<!ENTITY Ctr_closetab_0 "Rajtark začinić">
@@ -84,7 +84,8 @@
<!ENTITY Ctr_appbutton2h "Tłóčatko na titulnej lajsće [&brandShortName;] (schowane)">
<!ENTITY Ctr_appbutton2io "Tłóčatko na titulnej lajsće [&brandShortName;] (jenož symbol)">
<!ENTITY Ctr_paneluibtweak "Menijowe tłóčatko jako tłóčatko &brandShortName; pokazać,...">
-<!ENTITY Ctr_paneluibtweak2 "...hdyž je na rajtarkowej lajsće">
+<!ENTITY Ctr_paneluibtweak2 "Menijowe tłóčatko jako tłóčatko &brandShortName; pokazać (jenož symbol),...">
+<!ENTITY Ctr_paneluibtweak3 "...hdyž je na rajtarkowej lajsće">
<!ENTITY Ctr_appbuttonc_o "Tłóčatkowa barba: Oranžowy (standard)">
<!ENTITY Ctr_appbuttonc_a "Tłóčatkowa barba: Módry (Aurora)">
<!ENTITY Ctr_appbuttonc_n "Tłóčatkowa barba: Čorny (Nightly)">
@@ -129,7 +130,7 @@
<!ENTITY Ctr_wincontrols "Přesuwajomne wodźenske elementy połneje wobrazowki">
<!ENTITY Ctr_oldtoplevimg "Wobrazy 'najwyšeje domeny': klasiski zwonkowny napohlad">
<!ENTITY Ctr_altalertbox "'Warnowanski kašćik': alternatiwny zwonkowny napohlad">
-<!ENTITY Ctr_emptygfavico "Replace generic favicon">
+<!ENTITY Ctr_emptygfavico "Powšitkowny faworitowy symbol wuměnić">
<!ENTITY Ctr_mstatusbar "Přesuwajomny wobłuk statusoweje lajsty">
<!ENTITY Ctr_mstatusbars4e "Statusowy wobłuk seo přez 'Status-4-Evar' kontroluje">
<!ENTITY Ctr_mstatusbartpp "Statusowy wobłuk so přez 'ThePuzzlePiece' kontroluje">
@@ -173,8 +174,8 @@
<!ENTITY Ctr_xpinstallui "Stary přidatkowe instalowanske wokno (nastajenje about:config)">
<!ENTITY Ctr_bmbutton "Tłóčatko menija zapołožkow">
<!ENTITY Ctr_bmbutpanelm "Wuskakowacy meni: napohlad wuskakowaceho menija">
-<!ENTITY Ctr_bmbunsortbm "Wuskakowacy meni: podmeni 'Njesortěrowane zapołožki'">
-<!ENTITY Ctr_bmbunsortbm2 "Menu above bookmarks">
+<!ENTITY Ctr_bmbunsortbm "Wuskakowacy meni: meni 'Njesortěrowane zapołožki'">
+<!ENTITY Ctr_bmbunsortbm2 "Meni nad zapołožkami">
<!ENTITY Ctr_bmbviewbmtb "Wuskakowacy meni: 'Lajstu zapołožkow pokazać' pokazać">
<!ENTITY Ctr_bmbnounsort "Wuskakowcy meni: 'Njesortěrowane zapołožki' schować">
<!ENTITY Ctr_bmbutnotext "Tekst na lajśce zapołožkow schować">
@@ -225,11 +226,11 @@
<!ENTITY Ctr_starinurlinfo "Standardne tłóčatko menija Zapołožki so schowa">
<!ENTITY Ctr_feedinurl "Kanalowe tłóčatko RSS">
<!ENTITY Ctr_hideurelstop "Tłóčatce Stój a Znowa adresowych lajstow schować">
-<!ENTITY Ctr_hideurelstop2 "Always show 'go' button">
+<!ENTITY Ctr_hideurelstop2 "Tłóčatko 'Start' přeco pokazać">
<!ENTITY Ctr_hideurlgo "Tłóčatko 'Start' schować">
<!ENTITY Ctr_hideurlsrg "Dźělatka a mjezery za tłošatka 'Znowa, Stój a Start' schować">
<!ENTITY Ctr_urlbardropm "Tłóčatko šipkoweho kónčka do poslednjeje móžneje pozicije přesunyć">
-<!ENTITY Ctr_urlbardropm2 "Make dropmarker always visible">
+<!ENTITY Ctr_urlbardropm2 "Tłóčtko šipkoweho kónčka přeco pokazać">
<!ENTITY Ctr_altreaderico "Alternatiwne 'čitakowe' symbolei">
<!ENTITY Ctr_hideprbutton "Zdźělenski symbol schować, hdyž so wuskakowace wokno blokuje">
<!ENTITY Ctr_locsearchbw10 "Wysokosć adresowych a pytanskich polow redukować (eksperimentelne)">
@@ -362,8 +363,8 @@
<!ENTITY Ctr_addon-bar.accesskey "d">
<!ENTITY appMenuGettingStarted.label "Prěnje kroki">
<!ENTITY goCmd.label "Start">
-<!ENTITY Ctr_menu_restart.label "Restart &brandShortName;">
-<!ENTITY Ctr_restartapp "'Restart &brandShortName;' in appmenu and filemenu">
+<!ENTITY Ctr_menu_restart.label "&brandShortName; znowa startować">
+<!ENTITY Ctr_restartapp "'&brandShortName;' znowa startować pod tłóčatkom '&brandShortName;' a w meniju 'Dataja'">
<!-- For page context entries. Have to be adjusted for every locale! -->
<!ENTITY backCmd.accesskey "W">
diff --git a/xpi/locale/it/options.dtd b/xpi/locale/it/options.dtd
index 6975bce..d90d6e0 100644
--- a/xpi/locale/it/options.dtd
+++ b/xpi/locale/it/options.dtd
@@ -1,4 +1,4 @@
-<!ENTITY % overlayDTD
+<!ENTITY % overlayDTD
SYSTEM "chrome://classic_theme_restorer/content/overlay.dtd">
%overlayDTD;
<!-- Do not edit above this line and do not edit the variable '&brandShortName;' inside translated strings -->
@@ -14,8 +14,8 @@
<!ENTITY Ctr_navthrobber "Indicatore attività">
<!ENTITY Ctr_sidebarbutton "Barra laterale">
<!ENTITY Ctr_windowcontrols "Pulsanti controllo finestra (A tutto schermo)">
-<!ENTITY Ctr_rr "Riavvio richiesto!">
-<!ENTITY Ctr_window "finestra">
+<!ENTITY Ctr_rr "Riavviare &brandShortName;!">
+<!ENTITY Ctr_window "la finestra">
<!ENTITY Ctr_cuibuttons "Pulsanti">
<!ENTITY Ctr_cuibutnormal "Normali">
@@ -31,38 +31,38 @@
<!ENTITY Ctr_tabcolors_t "Colori e testo schede">
<!ENTITY Ctr_tabs "Schede">
-<!ENTITY Ctr_tabs0 "Predefinito in &brandShortName; (Schede con angoli arrotondati)">
+<!ENTITY Ctr_tabs0 "Schede con angoli arrotondati (predefinito in &brandShortName;)">
<!ENTITY Ctr_tabs1 "Schede con angoli spigolosi (stile classico)">
<!ENTITY Ctr_tabs1m "Schede con angoli spigolosi (effetto Australis)">
<!ENTITY Ctr_tabs2 "Scheda con angoli arrotondati (stile alternativo)">
<!ENTITY Ctr_tabs3 "Schede con angoli arrotondati (stile Aero)">
<!ENTITY Ctr_tabforminfo "L’aspetto delle schede è definito dal tema in uso.">
-<!ENTITY Ctr_coltabsinfo "L’aspetto delle schede non è del tutto compatibile con l’estensione 'ColorfulTabs'.">
+<!ENTITY Ctr_coltabsinfo "L’aspetto delle schede non è del tutto compatibile con il componente aggiuntivo 'ColorfulTabs'.">
<!ENTITY Ctr_tabsontop0 "Schede in alto (predefinito)">
-<!ENTITY Ctr_tabsontop1 "Schede in alto --- attributo [tabsontop=true]">
-<!ENTITY Ctr_tabsontop2 "Schede in basso (v1) --- attributo [tabsontop=false]">
-<!ENTITY Ctr_tabsontop3 "Schede in basso (v2) --- attributo [tabsontop=false]">
-<!ENTITY Ctr_tabsontopW1 "La versione v2 è disponibile solo con alcune estensioni o temi completi.">
+<!ENTITY Ctr_tabsontop1 "Schede in alto --- attivata [tabsontop=true]">
+<!ENTITY Ctr_tabsontop2 "Schede in basso (v1) --- attivata [tabsontop=false]">
+<!ENTITY Ctr_tabsontop3 "Schede in basso (v2) --- attivata [tabsontop=false]">
+<!ENTITY Ctr_tabsontopW1 "La versione v2 è solo per alcuni componenti aggiuntivi e temi completi!">
<!ENTITY Ctr_tabsontopI1 "Aggiunge l’attributo [tabsontop=true/false] a">
-<!ENTITY Ctr_tabsintitlebar "Schede nella barra del titolo di &brandShortName; (about:config)">
-<!ENTITY Ctr_tabwidthdef "(predefinito)">
+<!ENTITY Ctr_tabsintitlebar "Schede nella barra del titolo (about:config)">
+<!ENTITY Ctr_tabwidthdef "(predefinita)">
<!ENTITY Ctr_tabwidthcla "(stile classico)">
<!ENTITY Ctr_tabminheight "Altezza:">
-<!ENTITY Ctr_tabheightinfo "Valori bassi causeranno anomalie nella finestra ingrandita!">
+<!ENTITY Ctr_tabheightinfo "Valori bassi provocheranno anomalie nella finestra ingrandita!">
<!ENTITY Ctr_tabmaxwidth "Larghezza massima:">
<!ENTITY Ctr_tabminwidth "Larghezza minima:">
<!ENTITY Ctr_tabwidthinfo "La larghezza minima e massima delle schede è definita da TabMixPlus">
<!ENTITY Ctr_tabwidthinfo2 "La larghezza minima e massima delle schede è definita da TabUtilities">
-<!ENTITY Ctr_tabwidthinfo3 "In molti casi, valori inferiori a 48px causeranno anomalie.">
+<!ENTITY Ctr_tabwidthinfo3 "Valori inferiori a 48px provocheranno anomalie nella maggior parte dei casi!">
<!ENTITY Ctr_square_edges "Angoli superiori spigolosi">
<!ENTITY Ctr_tttitlebar "Titolo scheda nella barra del titolo di &brandShortName;">
<!ENTITY Ctr_tabinsertion "Inserisci la scheda relativa dopo la scheda corrente (about:config)">
-<!ENTITY Ctr_emptytfavico "Show favicon (if a site does not offer one)">
+<!ENTITY Ctr_emptytfavico "Mostra favicon (quando un sito ne è privo)">
<!ENTITY Ctr_emptytfavico_n "None">
<!ENTITY Ctr_emptytfavico_g "Generic">
-<!ENTITY Ctr_noemptypticon "Rimuovi la favicon vuota dalle schede bloccate">
+<!ENTITY Ctr_noemptypticon "Rimuovi la favicon vuota dalla scheda bloccata">
<!ENTITY Ctr_e10stab_notd "Schede E10s: rimuovi la sottolineatura">
-<!ENTITY Ctr_closetab_0 "Pulsante di chiusura schede">
+<!ENTITY Ctr_closetab_0 "Pulsante di chiusura">
<!ENTITY Ctr_closetab_1 "Nella scheda attiva">
<!ENTITY Ctr_closetab_2 "Nessun pulsante di chiusura schede">
<!ENTITY Ctr_closetab_3 "A destra della barra delle schede">
@@ -73,8 +73,8 @@
<!ENTITY Ctr_closeonleft "Posizione alternativa sulla scheda">
<!ENTITY Ctr_close_wwltab "Chiudendo l’ultima scheda chiudi la finestra (about:config)">
-<!ENTITY Ctr_hctpinfotab "Alcune modifiche alle schede non sono compatibili con l’estensione 'Hide Caption Titlebar Plus'.">
-<!ENTITY Ctr_hctpinfoab "Il pulsante nella barra del titolo non è compatibile con l’estensione 'Hide Caption Titlebar Plus'.">
+<!ENTITY Ctr_hctpinfotab "Alcune modifiche alle schede non sono compatibili con il componente aggiuntivo 'Hide Caption Titlebar Plus'.">
+<!ENTITY Ctr_hctpinfoab "Il pulsante nella barra del titolo non è compatibile con il componente aggiuntivo 'Hide Caption Titlebar Plus'.">
<!ENTITY Ctr_appbutton "Pulsante applicazione">
<!ENTITY Ctr_appbutton0 "Nessun pulsante">
@@ -83,8 +83,9 @@
<!ENTITY Ctr_appbutton2 "Pulsante nella barra del titolo">
<!ENTITY Ctr_appbutton2h "Pulsante nella barra del titolo (nascosto)">
<!ENTITY Ctr_appbutton2io "Pulsante nella barra del titolo (solo icona)">
-<!ENTITY Ctr_paneluibtweak "Mostra pulsante menu come pulsante applicazione…">
-<!ENTITY Ctr_paneluibtweak2 "…è nella barra delle schede">
+<!ENTITY Ctr_paneluibtweak "Stile pulsante per il pannello dei menu quando...">
+<!ENTITY Ctr_paneluibtweak2 "Stile pulsante per il pannello dei menu quando (solo icona)...">
+<!ENTITY Ctr_paneluibtweak3 "...è nella barra delle schede">
<!ENTITY Ctr_appbuttonc_o "Pulsante arancione (predefinito)">
<!ENTITY Ctr_appbuttonc_a "Pulsante blu (Aurora)">
<!ENTITY Ctr_appbuttonc_n "Pulsante nero (Nightly)">
@@ -101,7 +102,7 @@
<!ENTITY Ctr_appbuttonI1e "Visibile solo nella barra del titolo di &brandShortName; e non in quella di Windows.">
<!ENTITY Ctr_appbuttonI2 "Colorato solo nella barra del titolo e nella barra delle schede.">
<!ENTITY Ctr_appbutmhi "In cima a tutto (se nella barra delle schede)">
-<!ENTITY Ctr_appbautocol "Imposta automaticamente il colore canale (Stabile/Aurora/Nightly)">
+<!ENTITY Ctr_appbautocol "Imposta in automatico i colori default / Aurora / Nightly">
<!ENTITY Ctr_appbutbdl "Nascondi bordi e colori di sfondo">
<!ENTITY Ctr_dblclclosefx "Doppio clic per chiudere la finestra corrente">
<!ENTITY Ctr_appbclmmenus "Menu cliccabili interni al pulsante Menu (Nuova scheda, Stampa…)">
@@ -109,27 +110,27 @@
<!ENTITY Ctr_appbutonclab2 "Aggiungi titolo o lascia vuoto">
<!ENTITY Ctr_ui "Interfaccia base">
-<!ENTITY Ctr_nbiconsize0 "Imposta attributo 'iconsize' alla barra di navigazione">
+<!ENTITY Ctr_nbiconsize0 "Imposta attributo alla barra di navigazione">
<!ENTITY Ctr_smallnavbut "Pulsanti piccoli nella barra di navigazione">
<!ENTITY Ctr_bfurlbarfix "Correggi la curvatura della barra degli indirizzi ">
<!ENTITY Ctr_backforward "Pulsante Indietro/Avanti mobile">
<!ENTITY Ctr_nbcompact "Riduci l’altezza delle barre di navigazione">
<!ENTITY Ctr_hide_bf_popup "Nascondi la cronologia tenendo premuto il pulsante Avanti/Indietro mobile">
<!ENTITY Ctr_bf_space "Riduci lo spazio tra i pulsanti (se possibile)">
-<!ENTITY Ctr_noconicons "Sostituisci icone con etichette nel menu contestuale della pagina (Avanti, Indietro…)">
+<!ENTITY Ctr_noconicons "Sostituisce le icone del menu contestuale con etichette (indietro, avanti, stop, ricarica, segnalibro)">
<!ENTITY Ctr_prefpage "Pagina Opzioni">
<!ENTITY Ctr_altoptionsd "Aspetto predefinito">
<!ENTITY Ctr_altoptionsp "Aspetto alternativo">
-<!ENTITY Ctr_altoptionsw "Apri la pagina Opzioni in una finestra">
+<!ENTITY Ctr_altoptionsw "Aprire la pagina Opzioni in una finestra">
<!ENTITY Ctr_altoptionsww "Larghezza">
<!ENTITY Ctr_altoptionswh "Altezza">
-<!ENTITY Ctr_altoptionsi "La finestra delle opzioni non si presenta più come una finestra di dialogo ma come una vera e propria finestra del browser con tutte le barre degli strumenti nascoste. La funzione 'Usa la pagina corrente' aggiunge gli url delle pagine aperte nella finestra corrente, che in questo caso è solo 'about:preferences. La versione modificata del pulsante delle opzioni consente di aprire le opzioni in una nuova finestra.">
+<!ENTITY Ctr_altoptionsi "La finestra delle opzioni non si presenta più come un dialogo ma come una finestra del browser con tutte le barre degli strumenti nascoste. La caratteristica 'Usa la pagina corrente' aggiunge gli url delle pagine aperte nella finestra corrente, che in questo caso è solo 'about:preferences'. Il pulsante delle 'opzioni' è sostituito da uno nuovo che è in grado di aprire le opzioni in una finestra.">
<!ENTITY Ctr_options_rem "Ricorda l'ultima categoria selezionata">
<!ENTITY Ctr_svgfilters "Colori SVG per le icone dei pulsanti della barra strumenti">
<!ENTITY Ctr_wincontrols "Angoli finestra mobili in modalità schermo intero">
-<!ENTITY Ctr_oldtoplevimg "Immagini domini di livello superiore: aspetto classico">
-<!ENTITY Ctr_altalertbox "Finestra di avviso: aspetto alternativo">
-<!ENTITY Ctr_emptygfavico "Replace generic favicon">
+<!ENTITY Ctr_oldtoplevimg "Immagini 'Top level domain': aspetto classico">
+<!ENTITY Ctr_altalertbox "'Alert box': aspetto alternativo">
+<!ENTITY Ctr_emptygfavico "Sostituisci la favicon generica predefinita con un’icona a forma di foglio">
<!ENTITY Ctr_mstatusbar "Barra di stato mobile">
<!ENTITY Ctr_mstatusbars4e "La barra di stato è gestita da 'Status-4-Evar'">
<!ENTITY Ctr_mstatusbartpp "La barra di stato è gestita da 'ThePuzzlePiece'">
@@ -152,38 +153,38 @@
<!ENTITY Ctr_nav_txt_ico1 "Utilizza icone grandi">
<!ENTITY Ctr_nav_txt_ico2 "Utilizza icone e testo">
<!ENTITY Ctr_nav_txt_ico3 "Utilizza solo testo">
-<!ENTITY Ctr_nav_txt_exp "Classic attributes (experimental):">
+<!ENTITY Ctr_nav_txt_exp "Attributi sperimentali:">
<!ENTITY Ctr_iat_notf_vt "Escludi le barre degli strumenti verticali">
<!ENTITY Ctr_cpanelmenus "Pannello menu unificato (Segnalibri, Cronologia, ecc.)">
<!ENTITY Ctr_hidezoomres "Nascondi il pulsante per ripristinare il livello di zoom dalla barra degli strumenti">
<!ENTITY Ctr_alt_newtabp "Nuova scheda (about:newtab): aspetto alternativo">
<!ENTITY Ctr_ctroldsearch "Ricerca vecchio stile">
-<!ENTITY Ctr_ctroldsearchc "Cancella la casella di ricerca dopo averla effettuata">
-<!ENTITY Ctr_search_oit "Open search in new tab (about:config preference)">
-<!ENTITY Ctr_osearch_meoit "Middle-clicks: search in new 'foreground tab'">
-<!ENTITY Ctr_osearch_dm "Small dropmarker">
+<!ENTITY Ctr_ctroldsearchc "Pulisci la casella di ricerca dopo aver effettuato la ricerca">
+<!ENTITY Ctr_search_oit "Apri la ricerca in una nuova scheda (preferenza in about:config)">
+<!ENTITY Ctr_osearch_meoit "Clic sul tasto centrale: ricerca in una nuova scheda attiva">
+<!ENTITY Ctr_osearch_dm "Freccia verso il basso piccola">
<!ENTITY Ctr_addonmanager "Gestione componenti aggiuntivi">
<!ENTITY Ctr_alt_addonsp "Pagina 'Altro' dei componenti aggiuntivi: aspetto alternativo">
<!ENTITY Ctr_alt_addonsm "Gestione componenti aggiuntivi: aspetto alternativo">
<!ENTITY Ctr_am_nowarning "Informazioni sui componenti aggiuntivi: nascondi avvisi">
<!ENTITY Ctr_am_compact "Informazioni sui componenti aggiuntivi: visualizzazione compatta">
<!ENTITY Ctr_am_compact2 "visualizzazione compatta plus">
-<!ENTITY Ctr_am_highlight "Add-on lists: highlight entry on hover">
+<!ENTITY Ctr_am_highlight "Elenco dei componenti aggiuntivi: evidenzia il componente al passaggio del mouse">
<!ENTITY Ctr_addonversion "Informazioni sui componenti aggiuntivi: mostra versione del componente">
<!ENTITY Ctr_xpinstallui "Stile classico per la finestra di installazione dei componenti aggiuntivi (about:config)">
<!ENTITY Ctr_bmbutton "Menu del pulsante segnalibri">
-<!ENTITY Ctr_bmbutpanelm "Popup: aspetto del menu a pannello">
-<!ENTITY Ctr_bmbunsortbm "Popup: sottomenu 'Segnalibri non catalogati'">
+<!ENTITY Ctr_bmbutpanelm "Aspetto del menu a pannello">
+<!ENTITY Ctr_bmbunsortbm "Sottomenu dei 'Segnalibri non catalogati'">
<!ENTITY Ctr_bmbunsortbm2 "Menu above bookmarks">
-<!ENTITY Ctr_bmbviewbmtb "Popup: mostra 'Visualizza barra degli strumenti'">
-<!ENTITY Ctr_bmbnounsort "Popup: nascondi 'Segnalibri non catalogati'">
+<!ENTITY Ctr_bmbviewbmtb "Mostra 'Visualizza barra dei segnalibri'">
+<!ENTITY Ctr_bmbnounsort "Nascondi 'Segnalibri non catalogati'">
<!ENTITY Ctr_bmbutnotext "Nascondi etichetta della barra dei segnalibri">
<!ENTITY Ctr_skipprintpr "Pulsante stampa: salta l’anteprima di stampa">
<!ENTITY Ctr_tbconmenu "Menu contestuale della barra degli strumenti: nascondi 'Sposta nel menu', 'Rimuovi dalla barra degli strumenti', 'Ricarica/ tutte le schede nei segnalibri' e 'Riapri scheda chiusa'">
<!ENTITY Ctr_noresizerxp "Nascondi il ridimensionatore (Windows XP)">
<!ENTITY Ctr_extraurlkeycb "Apri una barra degli indirizzi supplementare (Cmd/Ctrl+)">
<!ENTITY Ctr_pmhidelabels "Mostra solo le icone nel pannello menu">
-<!ENTITY Ctr_menupopupscr "Utilizza barra di scorrimento al posto delle frecce nei popup di menu">
+<!ENTITY Ctr_menupopupscr "Utilizza la barra di scorrimento al posto delle frecce nei menu a comparsa">
<!ENTITY Ctr_closegeneral "Icone generiche di chiusura">
<!ENTITY Ctr_tabsep_def "Separatori schede predefiniti">
@@ -225,18 +226,18 @@
<!ENTITY Ctr_starinurlinfo "Il pulsante segnalibri viene nascosto">
<!ENTITY Ctr_feedinurl "Pulsante dei feed nella barra degli indirizzi">
<!ENTITY Ctr_hideurelstop "Nascondi i pulsanti Stop e Ricarica nella barra degli indirizzi">
-<!ENTITY Ctr_hideurelstop2 "Always show 'go' button">
+<!ENTITY Ctr_hideurelstop2 "Mostra sempre il pulsante 'Vai'">
<!ENTITY Ctr_hideurlgo "Nascondi il pulsante 'Vai'">
<!ENTITY Ctr_hideurlsrg "Nascondi spazio e separatori dai pulsanti Stop, Ricarica e Vai">
-<!ENTITY Ctr_urlbardropm "Vai all’ultima posizione del menu cronologia">
-<!ENTITY Ctr_urlbardropm2 "Make dropmarker always visible">
-<!ENTITY Ctr_altreaderico "Icone alternative per la modalità lettura">
+<!ENTITY Ctr_urlbardropm "Sposta il dropmarker nella posizione più lontana possibile">
+<!ENTITY Ctr_urlbardropm2 "Freccia verso il basso sempre visibile">
+<!ENTITY Ctr_altreaderico "Icone alternative della modalità di lettura">
<!ENTITY Ctr_hideprbutton "Nascondi l’icona di notifica quando un popup viene bloccato">
<!ENTITY Ctr_locsearchbw10 "Riduci l'altezza delle barre degli indirizzi e di ricerca (sperimentale)">
<!ENTITY Ctr_urlbar_ib "Pulsante delle connessioni sicure (riquadro di verifica)">
<!ENTITY Ctr_ib_nohovcolor "Non mostrare il colore grigio al passaggio del mouse">
<!ENTITY Ctr_ib_graycolor "Colore grigio per le identità sconosciute e le pagine chrome">
-<!ENTITY Ctr_verifiedcolors "Pulsanti colorrati per le connessioni ai siti verificati, sicuri e non sicuri">
+<!ENTITY Ctr_verifiedcolors "Pulsanti colorati per le connessioni ai siti verificati, sicuri e non sicuri">
<!ENTITY Ctr_faviconurl "Favicon nella barra degli indirizzi">
<!ENTITY Ctr_padlock "Lucchetto connessioni sicure">
<!ENTITY Ctr_padlock_hid "nascosto">
@@ -247,8 +248,8 @@
<!ENTITY Ctr_icopageinfo "Cliccando sull’icona vengono visualizzate le 'Informazioni sulla pagina'">
<!ENTITY Ctr_lbsbsize "Larghezza personalizzata per la barra degli indirizzi e di ricerca">
<!ENTITY Ctr_searchbar "Barra di ricerca">
-<!ENTITY Ctr_lbsugresi "Mostra quanti più suggerimenti possibili senza utilizzare barra di scorrimento">
-<!ENTITY Ctr_lbsugres "Numero di suggerimenti da mostrare (about:config)">
+<!ENTITY Ctr_lbsugresi "Mostra il maggior numero possibile di suggerimenti (senza barra di scorrimento)">
+<!ENTITY Ctr_lbsugres "Numero di risultati nei suggerimenti a comparsa (about:config preference)">
<!ENTITY Ctr_menubar_items "Posizione delle voci del menu">
<!ENTITY Ctr_extrabar "Barre degli strumenti aggiuntive">
@@ -285,7 +286,7 @@
<!ENTITY Ctr_aerocolors "Colori Blu Aero per le barre degli strumenti e le schede">
<!ENTITY Ctr_transpttbw10 "Barre del titolo/menu/schede: rimuovi il colore di sfondo">
-<!ENTITY Ctr_transpttbew10 "Modifiche aggiuntive per alcuni temi di sistema">
+<!ENTITY Ctr_transpttbew10 "Modifiche aggiuntive per alcuni temi del SO">
<!ENTITY Ctr_transptcw10 "Nascondi i pulsanti di controllo finestra di sistema">
<!ENTITY Ctr_hidenavbar "Nascondi la barra di navigazione">
<!ENTITY Ctr_navbarpad "Spaziatura supplementare">
@@ -316,13 +317,13 @@
<!ENTITY Ctr_fsanimation "Icona animata all’attivazione della modalità 'A tutto schermo' (about:config)">
<!ENTITY Ctr_fsaduration "Icona animata per la modalità 'A tutto schermo' degli elementi HTML5 (about:config)">
-<!ENTITY Ctr_toolsitem "Aggiungi voci al menu Strumenti">
-<!ENTITY Ctr_appmenuitem "Aggiungi voci nel menu del pulsante app">
-<!ENTITY Ctr_contextitem "Voci nel menu contestuale delle barre degli strumenti">
+<!ENTITY Ctr_toolsitem "Aggiungi voce nel menu Strumenti">
+<!ENTITY Ctr_appmenuitem "Aggiungi voce nel menu del Pulsante applicazione">
+<!ENTITY Ctr_contextitem "Voce nel menu contestuale delle barre degli strumenti">
<!ENTITY Ctr_puictrbutton "Pulsante nel pannello del menu principale">
<!ENTITY Ctr_otherctroptns "Altre impostazioni">
-<!ENTITY Ctr_cuibotbuttons "Aggiungi pulsanti in modalità personalizzazione">
+<!ENTITY Ctr_cuibotbuttons "Pulsanti extra nella modalità di personalizzazione">
<!ENTITY Ctr_nodevtheme "Impedisci l’attivazione del 'Developer Theme'">
<!ENTITY Ctr_experttweaks "Avanzate">
@@ -359,20 +360,20 @@
<!ENTITY Ctr_support "Forum di supporto">
<!ENTITY Ctr_newversion "È disponibile una nuova versione?">
-<!ENTITY Ctr_addon-bar.accesskey "B">
+<!ENTITY Ctr_addon-bar.accesskey "B">
<!ENTITY appMenuGettingStarted.label "Primi passi">
-<!ENTITY goCmd.label "Vai">
-<!ENTITY Ctr_menu_restart.label "Restart &brandShortName;">
-<!ENTITY Ctr_restartapp "'Restart &brandShortName;' in appmenu and filemenu">
+<!ENTITY goCmd.label "Vai">
+<!ENTITY Ctr_menu_restart.label "Riavvia &brandShortName;">
+<!ENTITY Ctr_restartapp "'Riavvia &brandShortName;' nel menu dell’applicazione e nel menu File">
<!-- For page context entries. Have to be adjusted for every locale! -->
-<!ENTITY backCmd.accesskey "I">
-<!ENTITY forwardCmd.accesskey "A">
-<!ENTITY reloadCmd.accesskey "R">
-<!ENTITY stopCmd.accesskey "t">
-<!ENTITY bookmarkPageCmd2.accesskey "b">
+<!ENTITY backCmd.accesskey "I">
+<!ENTITY forwardCmd.accesskey "A">
+<!ENTITY reloadCmd.accesskey "R">
+<!ENTITY stopCmd.accesskey "t">
+<!ENTITY bookmarkPageCmd2.accesskey "b">
<!-- Fallback entities. Leave empty! -->
-<!ENTITY openCmd.commandkey "">
-<!ENTITY urlbar.accesskey "">
-<!ENTITY urlbar.placeholder2 "">
+<!ENTITY openCmd.commandkey "">
+<!ENTITY urlbar.accesskey "">
+<!ENTITY urlbar.placeholder2 "">
diff --git a/xpi/locale/pl/options.dtd b/xpi/locale/pl/options.dtd
index 4ba6553..5425af4 100644
--- a/xpi/locale/pl/options.dtd
+++ b/xpi/locale/pl/options.dtd
@@ -84,7 +84,8 @@
<!ENTITY Ctr_appbutton2h "Przycisk na pasku narzędzi [&brandShortName;] (ukryty)">
<!ENTITY Ctr_appbutton2io "Przycisk na pasku narzędzi [&brandShortName;] (tylko ikona)">
<!ENTITY Ctr_paneluibtweak "Wyświetlaj przycisk menu głównego panelu jako...">
-<!ENTITY Ctr_paneluibtweak2 "... przycisk &brandShortName;, gdy na pasku kart">
+<!ENTITY Ctr_paneluibtweak2 "Wyświetlaj przycisk menu głównego panelu jako (tylko ikona)...">
+<!ENTITY Ctr_paneluibtweak3 "... przycisk &brandShortName;, gdy na pasku kart">
<!ENTITY Ctr_appbuttonc_o "Pomarańczowy kolor przycisku (domyślny)">
<!ENTITY Ctr_appbuttonc_a "Błękitny kolor przycisku (Aurora)">
<!ENTITY Ctr_appbuttonc_n "Czarny kolor przycisku (Nightly)">
diff --git a/xpi/locale/pt-BR/options.dtd b/xpi/locale/pt-BR/options.dtd
index 570f4f5..da953d4 100644
--- a/xpi/locale/pt-BR/options.dtd
+++ b/xpi/locale/pt-BR/options.dtd
@@ -84,7 +84,8 @@
<!ENTITY Ctr_appbutton2h "Botão na Barra de Título [&brandShortName;] (Oculto)">
<!ENTITY Ctr_appbutton2io "Botão na Barra de Título [&brandShortName;] (Só o Ícone)">
<!ENTITY Ctr_paneluibtweak "Botão do Menu do Painel...">
-<!ENTITY Ctr_paneluibtweak2 "...na Barra de Abas na Cor Laranja">
+<!ENTITY Ctr_paneluibtweak2 "Botão do Menu do Painel (Só o Ícone)...">
+<!ENTITY Ctr_paneluibtweak3 "...na Barra de Abas na Cor Laranja">
<!ENTITY Ctr_appbuttonc_o "Botão Laranja (Padrão)">
<!ENTITY Ctr_appbuttonc_a "Botão Azul (Aurora)">
<!ENTITY Ctr_appbuttonc_n "Botão Preto (Nightly)">
diff --git a/xpi/locale/ru/options.dtd b/xpi/locale/ru/options.dtd
index 6d5d45f..62c89e0 100644
--- a/xpi/locale/ru/options.dtd
+++ b/xpi/locale/ru/options.dtd
@@ -84,7 +84,8 @@
<!ENTITY Ctr_appbutton2h "в панели заголовка (скрыта)">
<!ENTITY Ctr_appbutton2io "в панели заголовка (только значки)">
<!ENTITY Ctr_paneluibtweak "Оранжевая кнопка меню">
-<!ENTITY Ctr_paneluibtweak2 "...на панели вкладок">
+<!ENTITY Ctr_paneluibtweak2 "Оранжевая кнопка меню (только значки)">
+<!ENTITY Ctr_paneluibtweak3 "...на панели вкладок">
<!ENTITY Ctr_appbuttonc_o "Оранжевая кнопка (по умолчанию)">
<!ENTITY Ctr_appbuttonc_a "Синяя кнопка (Aurora)">
<!ENTITY Ctr_appbuttonc_n "Чёрная кнопка (Nightly)">
diff --git a/xpi/locale/sl/options.dtd b/xpi/locale/sl/options.dtd
index e12b86b..521b111 100644
--- a/xpi/locale/sl/options.dtd
+++ b/xpi/locale/sl/options.dtd
@@ -84,7 +84,8 @@
<!ENTITY Ctr_appbutton2h "Gumb na nazivni vrstici [&brandShortName;a] (skrit)">
<!ENTITY Ctr_appbutton2io "Gumb na nazivni vrstici [&brandShortName;a] (samo ikona)">
<!ENTITY Ctr_paneluibtweak "Oranžni gumb ploščastega menija …">
-<!ENTITY Ctr_paneluibtweak2 "… na orodni vrstici zavihkov">
+<!ENTITY Ctr_paneluibtweak2 "Oranžni gumb ploščastega menija (samo ikona) …">
+<!ENTITY Ctr_paneluibtweak3 "… na orodni vrstici zavihkov">
<!ENTITY Ctr_appbuttonc_o "Oranžna barva gumba (privzeto)">
<!ENTITY Ctr_appbuttonc_a "Modra barva gumba (Aurora)">
<!ENTITY Ctr_appbuttonc_n "Črna barva gumba (Nightly)">
diff --git a/xpi/locale/tr/options.dtd b/xpi/locale/tr/options.dtd
index d7739af..51cec22 100644
--- a/xpi/locale/tr/options.dtd
+++ b/xpi/locale/tr/options.dtd
@@ -84,7 +84,8 @@
<!ENTITY Ctr_appbutton2h "Araç çubuğunda [&brandShortName;] butonu(saklı)">
<!ENTITY Ctr_appbutton2io "[&brandShortName;] başlığında buton (sadece ikon)">
<!ENTITY Ctr_paneluibtweak "Sekme çubuğunda turuncu panel...">
-<!ENTITY Ctr_paneluibtweak2 "...menü butonu">
+<!ENTITY Ctr_paneluibtweak2 "Sekme çubuğunda turuncu panel (sadece ikon)...">
+<!ENTITY Ctr_paneluibtweak3 "...menü butonu">
<!ENTITY Ctr_appbuttonc_o "Turuncu renk butonu">
<!ENTITY Ctr_appbuttonc_a "Mavi renk butonu (Aurora)">
<!ENTITY Ctr_appbuttonc_n "Siyah renk butonu (Nightly)">
diff --git a/xpi/locale/uk/options.dtd b/xpi/locale/uk/options.dtd
index 405c4c9..b29a31c 100644
--- a/xpi/locale/uk/options.dtd
+++ b/xpi/locale/uk/options.dtd
@@ -84,7 +84,8 @@
<!ENTITY Ctr_appbutton2h "Кнопка на панелі заголовку &brandShortName; (прихована)">
<!ENTITY Ctr_appbutton2io "Кнопка на панелі заголовку &brandShortName; (тільки іконка)">
<!ENTITY Ctr_paneluibtweak "Оранжева кнопка меню на панелі вкладок">
-<!ENTITY Ctr_paneluibtweak2 " ">
+<!ENTITY Ctr_paneluibtweak2 "Оранжева кнопка меню на панелі вкладок (тільки іконка)">
+<!ENTITY Ctr_paneluibtweak3 " ">
<!ENTITY Ctr_appbuttonc_o "Оранжева кнопка (типово)">
<!ENTITY Ctr_appbuttonc_a "Синя кнопка (Aurora)">
<!ENTITY Ctr_appbuttonc_n "Чорна кнопка (Nightly)">
diff --git a/xpi/locale/zh-CN/options.dtd b/xpi/locale/zh-CN/options.dtd
index dcccb8b..a770cfb 100644
--- a/xpi/locale/zh-CN/options.dtd
+++ b/xpi/locale/zh-CN/options.dtd
@@ -84,7 +84,8 @@
<!ENTITY Ctr_appbutton2h "在 [&brandShortName;] 标题栏上显示 (隐藏)">
<!ENTITY Ctr_appbutton2io "在 [&brandShortName;] 标题栏上显示 (仅图标)">
<!ENTITY Ctr_paneluibtweak "在标签页栏上显示橙色面板菜单按钮">
-<!ENTITY Ctr_paneluibtweak2 " ">
+<!ENTITY Ctr_paneluibtweak2 "在标签页栏上显示橙色面板菜单按钮 (仅图标)">
+<!ENTITY Ctr_paneluibtweak3 " ">
<!ENTITY Ctr_appbuttonc_o "橙色按钮 (默认)">
<!ENTITY Ctr_appbuttonc_a "蓝色按钮 (Aurora)">
<!ENTITY Ctr_appbuttonc_n "黑色按钮 (Nightly)">
diff --git a/xpi/locale/zh-TW/options.dtd b/xpi/locale/zh-TW/options.dtd
index 5479331..e853378 100644
--- a/xpi/locale/zh-TW/options.dtd
+++ b/xpi/locale/zh-TW/options.dtd
@@ -84,7 +84,8 @@
<!ENTITY Ctr_appbutton2h "顯示在標題列 (隱藏)">
<!ENTITY Ctr_appbutton2io "顯示在標題列 (僅圖示)">
<!ENTITY Ctr_paneluibtweak "橘色面板選單按鈕顯示在分頁列">
-<!ENTITY Ctr_paneluibtweak2 " ">
+<!ENTITY Ctr_paneluibtweak2 "橘色面板選單按鈕顯示在分頁列 (僅圖示)">
+<!ENTITY Ctr_paneluibtweak3 " ">
<!ENTITY Ctr_appbuttonc_o "橙色按鈕 (預設值)">
<!ENTITY Ctr_appbuttonc_a "藍色按鈕 (Aurora)">
<!ENTITY Ctr_appbuttonc_n "黑色按鈕 (Nightly)">