[Pkg-mozext-commits] [SCM] iceweasel extension that enables customization of webpages with user scripts branch, upstream, updated. upstream/0.9.11-1-ge752d17
Andrea Veri
av at src.gnome.org
Tue Feb 21 11:45:31 UTC 2012
The following commit has been merged in the upstream branch:
commit e752d1706813c5f2a0fbf7d9e5f833dd8788ca62
Author: Andrea Veri <av at src.gnome.org>
Date: Tue Feb 21 12:45:49 2012 +0100
New upstream release 0.9.17
diff --git a/chrome.manifest b/chrome.manifest
index fba1675..f2bb6c1 100644
--- a/chrome.manifest
+++ b/chrome.manifest
@@ -31,8 +31,10 @@ overlay chrome://greasemonkey/content/options.xul chrome://greasemonkey/conte
overlay chrome://greasemonkey/content/newscript.xul chrome://greasemonkey/content/closewindow.xul
locale greasemonkey en-US jar:chrome/greasemonkey.jar!/locale/en-US/
+locale greasemonkey ar jar:chrome/greasemonkey.jar!/locale/ar/
locale greasemonkey ca-AD jar:chrome/greasemonkey.jar!/locale/ca-AD/
locale greasemonkey cs jar:chrome/greasemonkey.jar!/locale/cs/
+locale greasemonkey cs-CZ jar:chrome/greasemonkey.jar!/locale/cs-CZ/
locale greasemonkey da jar:chrome/greasemonkey.jar!/locale/da/
locale greasemonkey de jar:chrome/greasemonkey.jar!/locale/de/
locale greasemonkey es jar:chrome/greasemonkey.jar!/locale/es/
@@ -41,14 +43,17 @@ locale greasemonkey es-ES jar:chrome/greasemonkey.jar!/locale/es-ES/
locale greasemonkey es-MX jar:chrome/greasemonkey.jar!/locale/es-MX/
locale greasemonkey et-EE jar:chrome/greasemonkey.jar!/locale/et-EE/
locale greasemonkey fa-IR jar:chrome/greasemonkey.jar!/locale/fa-IR/
+locale greasemonkey fi jar:chrome/greasemonkey.jar!/locale/fi/
locale greasemonkey fi-FI jar:chrome/greasemonkey.jar!/locale/fi-FI/
locale greasemonkey fr jar:chrome/greasemonkey.jar!/locale/fr/
locale greasemonkey gl-ES jar:chrome/greasemonkey.jar!/locale/gl-ES/
locale greasemonkey he-IL jar:chrome/greasemonkey.jar!/locale/he-IL/
locale greasemonkey hu jar:chrome/greasemonkey.jar!/locale/hu/
+locale greasemonkey it jar:chrome/greasemonkey.jar!/locale/it/
locale greasemonkey it-IT jar:chrome/greasemonkey.jar!/locale/it-IT/
locale greasemonkey ja-JP jar:chrome/greasemonkey.jar!/locale/ja-JP/
locale greasemonkey ko-KR jar:chrome/greasemonkey.jar!/locale/ko-KR/
+locale greasemonkey lt jar:chrome/greasemonkey.jar!/locale/lt/
locale greasemonkey nl jar:chrome/greasemonkey.jar!/locale/nl/
locale greasemonkey pl jar:chrome/greasemonkey.jar!/locale/pl/
locale greasemonkey pt-BR jar:chrome/greasemonkey.jar!/locale/pt-BR/
@@ -56,8 +61,10 @@ locale greasemonkey ro-RO jar:chrome/greasemonkey.jar!/locale/ro-RO/
locale greasemonkey ru jar:chrome/greasemonkey.jar!/locale/ru/
locale greasemonkey ru-RU jar:chrome/greasemonkey.jar!/locale/ru-RU/
locale greasemonkey si-LK jar:chrome/greasemonkey.jar!/locale/si-LK/
+locale greasemonkey sk-SK jar:chrome/greasemonkey.jar!/locale/sk-SK/
locale greasemonkey sr jar:chrome/greasemonkey.jar!/locale/sr/
locale greasemonkey sv-SE jar:chrome/greasemonkey.jar!/locale/sv-SE/
+locale greasemonkey tr jar:chrome/greasemonkey.jar!/locale/tr/
locale greasemonkey tr-TR jar:chrome/greasemonkey.jar!/locale/tr-TR/
locale greasemonkey uk jar:chrome/greasemonkey.jar!/locale/uk/
locale greasemonkey uk-UA jar:chrome/greasemonkey.jar!/locale/uk-UA/
diff --git a/chrome/greasemonkey.jar!/content/addons.js b/chrome/greasemonkey.jar!/content/addons.js
index 20ca7dd..aea884b 100644
--- a/chrome/greasemonkey.jar!/content/addons.js
+++ b/chrome/greasemonkey.jar!/content/addons.js
@@ -8,13 +8,13 @@ var gUserscriptsView = null;
var GM_os;
(function() {
var xulRuntime = Components
- .classes["@mozilla.org/xre/app-info;1"]
+ .classes['@mozilla.org/xre/app-info;1']
.getService(Components.interfaces.nsIXULRuntime);
GM_os = xulRuntime.OS;
})();
-(function() {
+(function private_scope() {
var _origShowView;
function ourShowView(aView) {
if ('userscripts' == aView) {
@@ -26,6 +26,8 @@ function ourShowView(aView) {
if ('userscripts' == gView) gView = null;
_origShowView(aView);
+
+ if ('updates' == aView) greasemonkeyAddons.showScriptUpdates();
}
};
window.GM_overrideShowView = function() {
@@ -36,37 +38,113 @@ window.GM_overrideShowView = function() {
};
GM_overrideShowView();
-// Set up an "observer" on the config, to keep the displayed items up to date
+var _origInstallUpdates = installUpdatesAll;
+installUpdatesAll = function() {
+ var chromeWin = GM_util.getBrowserWindow();
+ var children = gExtensionsView.children;
+ for (var i = 0, child = null; child = children[i]; i++) {
+ if (!/^urn:greasemonkey:update:item:/.test(child.id)) continue;
+
+ var checkbox = document.getAnonymousElementByAttribute(
+ child, 'anonid', 'includeUpdate');
+ if (!checkbox) continue;
+
+ checkbox.setAttribute('anonid', 'includeScriptUpdate');
+ if (checkbox.checked) {
+ var script = GM_config.getScriptById(child.getAttribute('addonId'));
+ script.installUpdate(chromeWin);
+ }
+ }
+
+ _origInstallUpdates();
+};
+
+var _origBuildContextMenu = buildContextMenu;
+buildContextMenu = function(event) {
+ _origBuildContextMenu(event);
+
+ var selectedItem = gExtensionsView.selectedItem;
+ if (/^urn:greasemonkey:update:item:/.test(selectedItem.id)) {
+ document.getElementById('menuitem_homepage_clone')
+ .setAttribute('hidden', true);
+ document.getElementById('menuitem_about_clone')
+ .setAttribute('hidden', true);
+ document.getElementById('menuseparator_1_clone')
+ .setAttribute('hidden', true);
+ document.getElementById('menuitem_installUpdate_clone')
+ .setAttribute('command', 'cmd_userscript_installUpdate');
+ } else {
+ document.getElementById('menuitem_installUpdate')
+ .setAttribute('command', 'cmd_installUpdate');
+ }
+};
+
+// Set up an 'observer' on the config, to keep the displayed items up to date
// with their actual state.
var observer = {
- notifyEvent: function(script, event, data) {
- if (event == "install") {
- var beforeNode = data > -1 ? gUserscriptsView.childNodes[data] : null;
- var item = greasemonkeyAddons.addScriptToList(script, beforeNode);
- if (gView == "userscripts") gUserscriptsView.selectedItem = item;
+ notifyEvent: function(script, event, data, aView) {
+ if ('undefined' == typeof aView) var aView = gView;
+
+ var currentViewNode = null;
+ if ('updates' == aView) {
+ currentViewNode = gExtensionsView;
+ this.notifyEvent(script, event, data, 'userscripts');
+ } else if ('userscripts' == aView) {
+ currentViewNode = gUserscriptsView;
+ }
+
+ if ('userscripts' == aView && 'install' == event) {
+ var beforeNode = data > -1 ? currentViewNode.childNodes[data] : null;
+ var item = greasemonkeyAddons.listitemForScript(script);
item.setAttribute('newAddon', 'true');
+ currentViewNode.insertBefore(item, beforeNode);
+ if ('userscripts' == gView) gUserscriptsView.selectedItem = item;
return;
+ } else if ('updates' == aView && 'install' == event) {
+ var node = document.getElementById('urn:greasemonkey:'
+ + (aView == 'updates' ? 'update:' : '') + 'item:' + script.id);
+ if (node) currentViewNode.removeChild(node);
+ if (currentViewNode.children.length == 0) {
+ showView('userscripts');
+ document.getElementById('updates-view').hidden = true;
+ }
+ return;
+ } else if ('updates' == aView && 'update-found' == event) {
+ var node = greasemonkeyAddons.listitemForScript(script, true);
+ node.setAttribute('typeName', 'update');
+ currentViewNode.insertBefore(node, null);
}
- // find the script's node
- var node = document.getElementById('urn:greasemonkey:item:'+script.id);
- if (!node) return;
+ var node = document.getElementById('urn:greasemonkey:'
+ + (aView == 'updates' ? 'update:' : '') + 'item:' + script.id);
+ if (!node || !currentViewNode) return;
switch (event) {
- case "edit-enabled":
+ case 'edit-enabled':
node.setAttribute('isDisabled', !data);
break;
- case "uninstall":
- gUserscriptsView.removeChild(node);
+ case 'update-found':
+ node.setAttribute('updateable', 'true');
+ node.setAttribute('availableUpdateVersion', data.version);
+ node.setAttribute('availableUpdateURL', data.url);
+ node.setAttribute('providesUpdatesSecurely', data.secure.toString());
+ node.setAttribute('updateAvailableMsg',
+ 'Version ' + data.version + ' is available.');
+ document.getElementById('updates-view').hidden = false;
+ showView('updates');
break;
- case "move":
+ case 'uninstall':
+ currentViewNode.removeChild(node);
+ break;
+ case 'move':
gUserscriptsView.removeChild(node);
gUserscriptsView.insertBefore(node, gUserscriptsView.childNodes[data]);
greasemonkeyAddons.reselectLastSelected();
break;
- case "modified":
- var item = greasemonkeyAddons.listitemForScript(script);
- gUserscriptsView.replaceChild(item, node);
+ case 'modified':
+ var item = greasemonkeyAddons.listitemForScript(
+ script, 'updates' == aView);
+ currentViewNode.replaceChild(item, node);
break;
}
}
@@ -114,6 +192,16 @@ window.addEventListener('load', function() {
setTimeout(showView, 0, 'userscripts');
}
}
+
+ var scripts = GM_config.getMatchingScripts(
+ function (script) { return script.updateAvailable; });
+ if (scripts.length > 0) {
+ document.getElementById('updates-view').hidden = false;
+ }
+
+ var contextMenu = document.getElementById("userscriptContextMenu");
+ contextMenu.addEventListener(
+ "popupshowing", greasemonkeyAddons.onContextShowing, false);
}, false);
window.addEventListener('unload', function() {
@@ -137,7 +225,7 @@ var greasemonkeyAddons = {
document.getElementById('viewGroup')
.setAttribute('last-selected', 'userscripts');
var userscriptsRadio = document.getElementById('userscripts-view');
- var viewGroup = document.getElementById("viewGroup");
+ var viewGroup = document.getElementById('viewGroup');
viewGroup.selectedItem = userscriptsRadio;
greasemonkeyAddons.reselectLastSelected();
gView='userscripts';
@@ -154,6 +242,18 @@ var greasemonkeyAddons = {
gExtensionsView.focus();
},
+ showScriptUpdates: function() {
+ var scripts = GM_config.getMatchingScripts(
+ function (script) { return script.updateAvailable; });
+
+ // Add a list item for each script.
+ for (var i = 0, script = null; script = scripts[i]; i++) {
+ var item = greasemonkeyAddons.listitemForScript(script, true);
+ item.setAttribute('typeName', 'update');
+ gExtensionsView.insertBefore(item, null);
+ }
+ },
+
updateLastSelected: function() {
if (!gUserscriptsView.selectedItem) return;
var userscriptsRadio = document.getElementById('userscripts-view');
@@ -194,7 +294,7 @@ var greasemonkeyAddons = {
}, 0);
},
- listitemForScript: function(script) {
+ listitemForScript: function(script, updateView) {
var item = document.createElement('richlistitem');
// Setting these attributes inherits the values into the same place they
@@ -204,8 +304,20 @@ var greasemonkeyAddons = {
item.setAttribute('description', script.description);
item.setAttribute('version', script.version);
item.setAttribute('iconURL', script.icon.fileURL);
- item.setAttribute('id', 'urn:greasemonkey:item:'+script.id);
+ item.setAttribute('id', 'urn:greasemonkey:'
+ + (updateView ? 'update:' : '') + 'item:' + script.id);
item.setAttribute('isDisabled', !script.enabled);
+
+ if (script.updateAvailable) {
+ item.setAttribute('updateable', 'true');
+ item.setAttribute('availableUpdateVersion', script._updateVersion);
+ item.setAttribute('availableUpdateURL', script._downloadURL);
+ item.setAttribute('satisfiesDependencies', 'true');
+ item.setAttribute('updateAvailableMsg',
+ 'Version ' + script._updateVersion + ' is available.');
+ item.setAttribute('providesUpdatesSecurely', script.updateIsSecure);
+ }
+
if (script.id in GM_uninstallQueue) {
item.setAttribute('opType', 'needs-uninstall');
}
@@ -220,25 +332,32 @@ var greasemonkeyAddons = {
},
findSelectedScript: function() {
- if (!gUserscriptsView.selectedItem) return null;
- var scripts = GM_config.scripts;
- var selectedScriptId = gUserscriptsView.selectedItem.getAttribute('addonId');
- for (var i = 0, script = null; script = scripts[i]; i++) {
- if (selectedScriptId == script.id) {
- return script;
- }
+ var currentViewNode = null;
+ if ('updates' == gView) {
+ currentViewNode = gExtensionsView;
+ } else if ('userscripts' == gView) {
+ currentViewNode = gUserscriptsView;
}
- return null;
+ if (!currentViewNode || !currentViewNode.selectedItem) return null;
+ var selectedScriptId = currentViewNode.selectedItem.getAttribute('addonId');
+ return GM_config.getScriptById(selectedScriptId) || null;
},
doCommand: function(command) {
var script = greasemonkeyAddons.findSelectedScript();
if (!script) {
- dump("greasemonkeyAddons.doCommand() could not find selected script.\n");
+ dump('greasemonkeyAddons.doCommand() could not find selected script.\n');
return;
}
- var selectedListitem = gUserscriptsView.selectedItem;
+ var currentViewNode = null;
+ if ('updates' == gView) {
+ currentViewNode = gExtensionsView;
+ } else if ('userscripts' == gView) {
+ currentViewNode = gUserscriptsView;
+ }
+
+ var selectedListitem = currentViewNode.selectedItem;
switch (command) {
case 'cmd_userscript_edit':
GM_util.openInEditor(script);
@@ -290,13 +409,23 @@ var greasemonkeyAddons = {
delete(GM_uninstallQueue[script.id]);
GM_config.uninstall(script);
break;
+ case 'cmd_userscript_checkUpdate':
+ script.checkForRemoteUpdate(true);
+ break;
+ case 'cmd_userscript_installUpdate':
+ script.installUpdate(GM_util.getBrowserWindow());
+ break;
+ case 'cmd_userscript_toggleCheckUpdates':
+ script.checkRemoteUpdates = !script.checkRemoteUpdates;
+ GM_util.getService().config._changed(script, "modified", null);
+ break;
}
},
buildContextMenu: function(aEvent) {
var script = greasemonkeyAddons.findSelectedScript();
if (!script) {
- dump("greasemonkeyAddons.buildContextMenu() could not find selected script.\n");
+ dump('greasemonkeyAddons.buildContextMenu() could not find selected script.\n');
return;
}
@@ -317,11 +446,11 @@ var greasemonkeyAddons = {
}
var standardItems = [
- 'move_up', 'move_down', 'move_top', 'move_bottom', 'sort',
- 'move_separator',
- 'edit', 'show',
- 'edit_separator',
- 'uninstall'];
+ 'move_up', 'move_down', 'move_top', 'move_bottom', 'sort',
+ 'move_separator',
+ 'edit', 'show',
+ 'edit_separator',
+ 'uninstall', 'toggleCheckUpdates'];
var uninstallItems = ['uninstall_now', 'cancelUninstall'];
// Set everything hidden now, reveal the right selection below.
@@ -334,6 +463,8 @@ var greasemonkeyAddons = {
// Set visibility.
setItemsHidden(false, standardItems);
setItemsHidden(false, script.enabled ? ['disable'] : ['enable']);
+ setItemsHidden(script.updateAvailable, ['checkUpdate']);
+ setItemsHidden(!script.updateAvailable, ['installUpdate']);
// Set disabled.
var atBottom = !selectedItem.nextSibling;
var atTop = !selectedItem.previousSibling;
@@ -341,23 +472,35 @@ var greasemonkeyAddons = {
// these values.
// Todo: better fix.
setTimeout(function() {
- setElementDisabledByID('userscript_context_move_up', atTop);
- setElementDisabledByID('userscript_context_move_down', atBottom);
- setElementDisabledByID('userscript_context_move_top', atTop);
- setElementDisabledByID('userscript_context_move_bottom', atBottom);
- setElementDisabledByID('userscript_context_sort', (atTop && atBottom));
- }, 0);
+ setElementDisabledByID('userscript_context_move_up', atTop);
+ setElementDisabledByID('userscript_context_move_down', atBottom);
+ setElementDisabledByID('userscript_context_move_top', atTop);
+ setElementDisabledByID('userscript_context_move_bottom', atBottom);
+ setElementDisabledByID('userscript_context_sort', (atTop && atBottom));
+ }, 0);
+ }
+ },
+
+ onContextShowing: function(aEvent) {
+ var script = greasemonkeyAddons.findSelectedScript();
+ var menuitem = document.getElementById(
+ 'userscript_context_toggleCheckUpdates');
+ if (script.checkRemoteUpdates) {
+ menuitem.setAttribute('checked', 'true');
+ } else {
+ menuitem.removeAttribute('checked');
}
},
onKeypress: function(aEvent) {
- var viewGroup = document.getElementById("viewGroup");
+ var viewGroup = document.getElementById('viewGroup');
switch (aEvent.keyCode) {
case aEvent.DOM_VK_LEFT:
case aEvent.DOM_VK_RIGHT:
- let nextFlag = (aEvent.keyCode == aEvent.DOM_VK_RIGHT);
- if (getComputedStyle(viewGroup, "").direction == "rtl")
+ var nextFlag = (aEvent.keyCode == aEvent.DOM_VK_RIGHT);
+ if ('rtl' == getComputedStyle(viewGroup, '').direction) {
nextFlag = !nextFlag;
+ }
viewGroup.checkAdjacentElement(nextFlag);
break;
default:
@@ -392,10 +535,9 @@ var greasemonkeyDragObserver = {
} else if ('application/x-moz-file' == dropData.flavour.contentType) {
url = GM_util.getUriFromFile(dropData.data).spec;
}
- dump("Dropped url: ["+url+"]\n");
if (url && url.match(/\.user\.js$/)) {
- // TODO: Make this UI appear in the add-ons win, rather than the browser?
- GM_util.installUri(GM_util.uriFromUrl(url));
+ GM_util.showInstallDialog(
+ url, GM_util.getBrowserWindow().gBrowser, GM_util.getService());
}
},
getSupportedFlavours: function() {
diff --git a/chrome/greasemonkey.jar!/content/addons.xml b/chrome/greasemonkey.jar!/content/addons.xml
index 63e1c22..0abe5cc 100644
--- a/chrome/greasemonkey.jar!/content/addons.xml
+++ b/chrome/greasemonkey.jar!/content/addons.xml
@@ -66,16 +66,6 @@
tooltiptext="&cmd.cancelUninstall.tooltip;"
command="cmd_userscript_uninstall_cancel"
/>
-
- <!--
- Todo: Make install/upgrade buttons like extensions if/when added.
- <xul:button class="installShow cancelInstallButton" label="&cancelInstall.label;"
- accesskey="&cancelInstall.accesskey;" tooltiptext="&cmd.cancelInstall.tooltip;"
- command="cmd_cancelInstall"/>
- <xul:button class="upgradeShow cancelUpgradeButton" label="&cancelUpgrade.label;"
- accesskey="&cancelUpgrade.accesskey;" tooltiptext="&cmd.cancelUpgrade.tooltip;"
- command="cmd_cancelUpgrade"/>
- -->
</xul:hbox>
</xul:vbox>
</xul:hbox>
diff --git a/chrome/greasemonkey.jar!/content/addons.xul b/chrome/greasemonkey.jar!/content/addons.xul
index d9f8379..776ebc7 100644
--- a/chrome/greasemonkey.jar!/content/addons.xul
+++ b/chrome/greasemonkey.jar!/content/addons.xul
@@ -20,7 +20,6 @@
<script src="chrome://global/content/nsTransferable.js" />
<script type="application/x-javascript" src="chrome://greasemonkey/content/third-party/mpl-utils.js" />
-<script type="application/x-javascript" src="chrome://greasemonkey/content/scriptdownloader.js" />
<script type="application/x-javascript" src="chrome://greasemonkey/content/addons.js" />
<radiogroup id="viewGroup">
@@ -42,14 +41,12 @@
</notificationbox>
<hbox id="commandBarBottom">
- <!--
<button id="findUpdatesUserscripts"
insertafter="checkUpdatesAllButton"
label="&cmd.checkUpdatesAll.label;"
accesskey="&cmd.checkUpdatesAll.accesskey;"
- disabled="true"
+ oncommand="GM_config.checkScriptsForRemoteUpdates();"
/>
- -->
<label id="getMoreUserscripts" class="text-link"
insertafter="getMore"
@@ -72,6 +69,7 @@
<command id="cmd_userscript_edit"/>
<command id="cmd_userscript_options"/>
<command id="cmd_userscript_show"/>
+ <command id="cmd_userscript_checkUpdate"/>
<command id="cmd_userscript_enable"/>
<command id="cmd_userscript_disable"/>
<command id="cmd_userscript_uninstall"/>
@@ -84,6 +82,8 @@
<command id="cmd_userscript_move_bottom"/>
<command id="cmd_userscript_sort"/>
+ <command id="cmd_userscript_installUpdate"/>
+ <command id="cmd_userscript_toggleCheckUpdates" />
</commandset>
<menupopup id="userscriptContextMenu"
@@ -128,29 +128,18 @@
<menuseparator/>
- <!--
- Todo: Make install/upgrade menu items like extensions if/when added.
- <menuitem id="userscript_context_cancelInstall" command="cmd_cancelInstall"
- label="&cmd.cancelInstall.label;" accesskey="&cmd.cancelInstall.accesskey;"/>
- <menuitem id="userscript_context_cancelUpgrade" command="cmd_cancelUpgrade"
- label="&cmd.cancelUpgrade.label;" accesskey="&cmd.cancelUpgrade.accesskey;"/>
- <menuitem id="userscript_context_checkUpdate" command="cmd_checkUpdate"
+ <menuitem id="userscript_context_checkUpdate" command="cmd_userscript_checkUpdate"
label="&cmd.checkUpdate.label;" accesskey="&cmd.checkUpdate.accesskey;"/>
- -->
+ <menuitem id="userscript_context_installUpdate" command="cmd_userscript_installUpdate"
+ label="&cmd.installUpdate.label;" accesskey="&cmd.installUpdate.accesskey;"/>
+ <menuitem id="userscript_context_toggleCheckUpdates" command="cmd_userscript_toggleCheckUpdates"
+ label="&CheckUpdates;" accesskey="&CheckUpdates.accesskey;"
+ type="checkbox" />
<menuitem id="userscript_context_enable" command="cmd_userscript_enable"
label="&cmd.enable.label;" accesskey="&cmd.enable.accesskey;"/>
<menuitem id="userscript_context_disable" command="cmd_userscript_disable"
label="&cmd.disable.label;" accesskey="&cmd.disable.accesskey;"/>
-
- <!--
- Todo: as above.
- <menuitem id="userscript_context_installUpdate" command="cmd_installUpdate"
- label="&cmd.installUpdate.label;" accesskey="&cmd.installUpdate.accesskey;"/>
- <menuitem id="userscript_context_includeUpdate" command="cmd_includeUpdate"
- label="&cmd.includeUpdate.label;" accesskey="&cmd.includeUpdate.accesskey;"
- type="checkbox"/>
- -->
</menupopup>
</window>
diff --git a/chrome/greasemonkey.jar!/content/addons4-overlay.js b/chrome/greasemonkey.jar!/content/addons4-overlay.js
index d1f0766..9877f86 100644
--- a/chrome/greasemonkey.jar!/content/addons4-overlay.js
+++ b/chrome/greasemonkey.jar!/content/addons4-overlay.js
@@ -39,7 +39,7 @@ gViewController.loadView = function(aViewId) {
// with their actual state.
var observer = {
notifyEvent: function observer_notifyEvent(script, event, data) {
- if (userScriptViewId != gViewController.currentViewId) return;
+ if (!isScriptView()) return;
var addon = ScriptAddonFactoryByScript(script);
switch (event) {
@@ -47,13 +47,14 @@ var observer = {
gListView.addItem(addon);
setEmptyWarningVisible();
break;
- case "edit-enabled":
+ case 'edit-enabled':
addon.userDisabled = !data;
var item = gListView.getListItemForID(addon.id);
item.setAttribute('active', data);
break;
case 'modified':
// Bust the addon cache, and get references to the old and new version.
+ if (!data) break;
var oldAddon = ScriptAddonFactoryByScript({'id': data});
ScriptAddonReplaceScript(script);
addon = ScriptAddonFactoryByScript(script);
@@ -76,6 +77,10 @@ function addonIsInstalledScript(aAddon) {
return true;
};
+function isScriptView() {
+ return 'addons://list/user-script' == gViewController.currentViewId;
+}
+
function addonExecutesNonFirst(aAddon) {
if (!aAddon) return false;
if (SCRIPT_ADDON_TYPE != aAddon.type) return false;
@@ -123,6 +128,13 @@ function init() {
isEnabled: addonExecutesNonLast,
doCommand: function(aAddon) { reorderScriptExecution(aAddon, 9999); }
};
+ gViewController.commands.cmd_userscript_toggleCheckUpdates = {
+ isEnabled: addonIsInstalledScript,
+ doCommand: function(aAddon) {
+ aAddon._script.checkRemoteUpdates = !aAddon._script.checkRemoteUpdates;
+ GM_util.getService().config._changed(aAddon._script, "modified", null);
+ }
+ };
window.addEventListener('ViewChanged', onViewChanged, false);
onViewChanged(); // initialize on load as well as when it changes later
@@ -130,8 +142,22 @@ function init() {
document.getElementById('greasemonkey-sort-bar').addEventListener(
'command', onSortersClicked, false);
applySort();
+
+ var contextMenu = document.getElementById("addonitem-popup");
+ contextMenu.addEventListener("popupshowing", onContextShowing, false);
};
+function onContextShowing(aEvent) {
+ var addon = gViewController.currentViewObj.getSelectedAddon();
+ var menuitem = document.getElementById(
+ 'menuitem_userscript_toggleCheckUpdates');
+ if (addon._script.checkRemoteUpdates) {
+ menuitem.setAttribute('checked', 'true');
+ } else {
+ menuitem.removeAttribute('checked');
+ }
+}
+
function onSortersClicked(aEvent) {
if ('button' != aEvent.target.tagName) return;
var button = aEvent.target;
diff --git a/chrome/greasemonkey.jar!/content/addons4-overlay.xul b/chrome/greasemonkey.jar!/content/addons4-overlay.xul
index cb00869..fce900d 100644
--- a/chrome/greasemonkey.jar!/content/addons4-overlay.xul
+++ b/chrome/greasemonkey.jar!/content/addons4-overlay.xul
@@ -8,6 +8,8 @@
%greasemonkeyDTD;
<!ENTITY % greasemonkeyAddonsDTD SYSTEM "chrome://greasemonkey/locale/gm-addons.dtd">
%greasemonkeyAddonsDTD;
+<!ENTITY % extensionsDTD SYSTEM "chrome://mozapps/locale/extensions/extensions.dtd">
+%extensionsDTD;
]>
<overlay id="greasemonkey-browser-overlay"
@@ -30,31 +32,39 @@
<command id="cmd_userscript_execute_sooner" />
<command id="cmd_userscript_execute_later" />
<command id="cmd_userscript_execute_last" />
+ <command id="cmd_userscript_showItemPreferences" />
+ <command id="cmd_userscript_toggleCheckUpdates" />
</commandset>
<menupopup id="addonitem-popup">
- <menuitem id="menuitem_userscript_edit" command="cmd_userscript_edit"
- label="&Edit;" accesskey="&Edit.accesskey;" type="user-script"
+ <menuitem command="cmd_userscript_edit"
+ label="&Edit;" accesskey="&Edit.accesskey;" class="greasemonkey"
/>
- <menuitem id="menuitem_userscript_show" command="cmd_userscript_show"
- label="&Show;" accesskey="&Show.accesskey;" type="user-script"
+ <menuitem command="cmd_userscript_show"
+ label="&Show;" accesskey="&Show.accesskey;" class="greasemonkey"
/>
- <menuseparator type="user-script"/>
- <menuitem id="menuitem_userscript_execute_first"
- command="cmd_userscript_execute_first"
- label="&ExecuteFirst;" type="user-script"
+ <menuseparator class="greasemonkey"/>
+ <menuitem command="cmd_userscript_execute_first"
+ label="&ExecuteFirst;" class="greasemonkey"
/>
- <menuitem id="menuitem_userscript_execute_sooner"
- command="cmd_userscript_execute_sooner"
- label="&ExecuteSooner;" type="user-script"
+ <menuitem command="cmd_userscript_execute_sooner"
+ label="&ExecuteSooner;" class="greasemonkey"
/>
- <menuitem id="menuitem_userscript_execute_later"
- command="cmd_userscript_execute_later"
- label="&ExecuteLater;" type="user-script"
+ <menuitem command="cmd_userscript_execute_later"
+ label="&ExecuteLater;" class="greasemonkey"
/>
- <menuitem id="menuitem_userscript_execute_last"
- command="cmd_userscript_execute_last"
- label="&ExecuteLast;" type="user-script"
+ <menuitem command="cmd_userscript_execute_last"
+ label="&ExecuteLast;" class="greasemonkey"
+ />
+
+ <menuseparator class="greasemonkey"/>
+
+ <menuitem command="cmd_findItemUpdates" class="greasemonkey"
+ label="&cmd.findUpdates.label;" accesskey="&cmd.findUpdates.accesskey;"
+ />
+ <menuitem command="cmd_userscript_toggleCheckUpdates" class="greasemonkey"
+ label="&CheckUpdates;" accesskey="&CheckUpdates.accesskey;"
+ type="checkbox" id="menuitem_userscript_toggleCheckUpdates"
/>
</menupopup>
diff --git a/chrome/greasemonkey.jar!/content/addons4.xul b/chrome/greasemonkey.jar!/content/addons4.xul
index c00bb05..1265500 100755
--- a/chrome/greasemonkey.jar!/content/addons4.xul
+++ b/chrome/greasemonkey.jar!/content/addons4.xul
@@ -5,13 +5,19 @@
<!-- Just injects the Firefox 4+ specific addons integration code. -->
<script type="application/x-javascript"><![CDATA[
window.addEventListener('load', function() {
-Components.utils.import("resource://greasemonkey/addons4.js");
-GM_addonsStartup();
+var addons = {};
+Components.utils.import("resource://greasemonkey/addons4.js", addons);
+addons.GM_addonsStartup();
}, true);
-// Open the addons manager in Firefox >= 4.0
+// Open the scripts manager in Firefox >= 4.0
function GM_OpenScriptsMgr() {
BrowserOpenAddonsMgr('addons://list/user-script');
}
+
+// Open the updates manager in Firefox >= 4.0
+function GM_OpenUpdatesMgr() {
+ BrowserOpenAddonsMgr('addons://updates/available');
+}
]]></script>
</overlay>
diff --git a/chrome/greasemonkey.jar!/content/browser.js b/chrome/greasemonkey.jar!/content/browser.js
index 6d9c016..0494c4c 100644
--- a/chrome/greasemonkey.jar!/content/browser.js
+++ b/chrome/greasemonkey.jar!/content/browser.js
@@ -102,20 +102,11 @@ GM_BrowserUI.contentLoad = function(event) {
var safeWin = event.target.defaultView;
var href = safeWin.location.href;
- // Make sure we are still on the page that fired this event, see issue #1083
- if (href == event.target.documentURI) {
+ // Make sure we are still on the page that fired this event, see issue #1083.
+ // But ignore hashes; see issue #1445.
+ if (href.replace(/#.*/, '') == event.target.documentURI.replace(/#.*/, '')) {
GM_BrowserUI.gmSvc.runScripts('document-end', safeWin, window);
}
-
- // Show the greasemonkey install banner if we are navigating to a .user.js
- // file in a top-level tab. If the file was previously cached it might have
- // been given a number after .user, like gmScript.user-12.js
- if (safeWin == safeWin.top &&
- href.match(/\.user(?:-\d+)?\.js$/) &&
- !/text\/html/i.test(safeWin.document.contentType)) {
- var browser = GM_BrowserUI.tabBrowser.getBrowserForDocument(safeWin.document);
- GM_BrowserUI.showInstallBanner(browser);
- }
};
GM_BrowserUI.pagehide = function(aEvent) {
@@ -133,67 +124,6 @@ GM_BrowserUI.pageshow = function(aEvent) {
};
/**
- * Shows the install banner across the top of the tab that is displayed when
- * a user selects "show script source" in the install dialog.
- */
-GM_BrowserUI.showInstallBanner = function(browser) {
- var greeting = GM_BrowserUI.bundle.getString("greeting.msg");
-
- var notificationBox = GM_BrowserUI.tabBrowser.getNotificationBox(browser);
-
- // Remove existing notifications. Notifications get removed
- // automatically onclick and on page navigation, but we need to remove
- // them ourselves in the case of reload, or they stack up.
- for (var i = 0, child; child = notificationBox.childNodes[i]; i++) {
- if (child.getAttribute("value") == "install-userscript") {
- notificationBox.removeNotification(child);
- }
- }
-
- notificationBox.appendNotification(
- greeting,
- "install-userscript",
- "chrome://greasemonkey/skin/icon16.png",
- notificationBox.PRIORITY_WARNING_MEDIUM,
- [{
- label: GM_BrowserUI.bundle.getString("greeting.btn"),
- accessKey: GM_BrowserUI.bundle.getString("greeting.btnAccess"),
- popup: null,
- callback: GM_BrowserUI.installCurrentScript
- }]
- );
-};
-
-/**
- * Called from greasemonkey service when we should load a user script.
- */
-GM_BrowserUI.startInstallScript = function(uri, contentWin, timer) {
- if (!timer) {
- // docs for nsicontentpolicy say we're not supposed to block, so short
- // timer.
- window.setTimeout(
- GM_BrowserUI.startInstallScript, 0, uri, contentWin, true);
- return;
- }
-
- GM_BrowserUI.scriptDownloader_ =
- new GM_ScriptDownloader(window, uri, GM_BrowserUI.bundle, contentWin);
- GM_BrowserUI.scriptDownloader_.startInstall();
-};
-
-
-/**
- * Open the tab to show the contents of a script and display the banner to let
- * the user install it.
- */
-GM_BrowserUI.showScriptView = function(scriptDownloader) {
- GM_BrowserUI.scriptDownloader_ = scriptDownloader;
-
- var tab = GM_BrowserUI.tabBrowser.addTab(scriptDownloader.script.previewURL);
- GM_BrowserUI.tabBrowser.selectedTab = tab;
-};
-
-/**
* Implements nsIObserve.observe. Right now we're only observing our own
* install-userscript, which happens when the install bar is clicked.
*/
@@ -214,23 +144,6 @@ GM_BrowserUI.observe = function(subject, topic, data) {
GM_BrowserUI.openTab = function(url) {
gBrowser.selectedTab = gBrowser.addTab(url);
-}
-
-/**
- * Handles the install button getting clicked.
- */
-GM_BrowserUI.installCurrentScript = function() {
- GM_BrowserUI.scriptDownloader_.installScript();
-};
-
-GM_BrowserUI.installScript = function(script){
- GM_util.getService().config.install(script);
-
- var tools = {};
- Components.utils.import("resource://greasemonkey/GM_notification.js", tools);
- tools.GM_notification(
- "'" + script.name + "' "
- + GM_BrowserUI.bundle.getString("statusbar.installed"));
};
/**
@@ -292,12 +205,25 @@ GM_BrowserUI.refreshStatus = function() {
}
};
+// Not used directly, kept for GreaseFire. See #1507.
+GM_BrowserUI.startInstallScript = function(aUri) {
+ GM_util.showInstallDialog(aUri.spec, gBrowser, GM_util.getService());
+};
+
GM_BrowserUI.viewContextItemClicked = function() {
var uri = GM_BrowserUI.getUserScriptLinkUnderPointer();
-
- GM_BrowserUI.scriptDownloader_ = new GM_ScriptDownloader(
- window, uri, GM_BrowserUI.bundle);
- GM_BrowserUI.scriptDownloader_.startViewScript();
+ if (!uri) return;
+
+ var scope = {};
+ Components.utils.import('resource://greasemonkey/remoteScript.js', scope);
+ var rs = new scope.RemoteScript(uri.spec);
+ rs.downloadScript(function(aSuccess) {
+ if (aSuccess) {
+ rs.showSource(gBrowser);
+ } else {
+ alert(rs.errorMessage);
+ }
+ });
};
GM_BrowserUI.showToolbarButton = function() {
@@ -313,6 +239,10 @@ GM_BrowserUI.showToolbarButton = function() {
}
};
+GM_BrowserUI.openOptions = function() {
+ openDialog('chrome://greasemonkey/content/options.xul', null, 'modal');
+};
+
GM_BrowserUI.init();
@@ -321,20 +251,18 @@ GM_BrowserUI.init();
* state, right-click opens in an editor.
*/
function GM_popupClicked(aEvent) {
- if (aEvent.button == 0 || aEvent.button == 2) {
- var script = aEvent.target.script;
- if (!script) return;
-
- if (aEvent.button == 0) {
- // left-click: toggle enabled state
- script.enabled =! script.enabled;
- } else {
- // right-click: open in editor
- GM_util.openInEditor(script);
- }
-
- closeMenus(aEvent.target);
+ var script = aEvent.target.script;
+ if (!script) return;
+
+ if ('command' == aEvent.type) {
+ // left-click: toggle enabled state
+ script.enabled =! script.enabled;
+ } else if ('click' == aEvent.type && aEvent.button == 2) {
+ // right-click: open in editor
+ GM_util.openInEditor(script);
}
+
+ closeMenus(aEvent.target);
}
diff --git a/chrome/greasemonkey.jar!/content/browser.xul b/chrome/greasemonkey.jar!/content/browser.xul
index 6b124d1..c73d0e4 100644
--- a/chrome/greasemonkey.jar!/content/browser.xul
+++ b/chrome/greasemonkey.jar!/content/browser.xul
@@ -10,7 +10,6 @@
<script type="application/x-javascript" src="chrome://greasemonkey/content/menucommander.js" />
<script type="application/x-javascript" src="chrome://greasemonkey/content/xmlhttprequester.js" />
<script type="application/x-javascript" src="chrome://greasemonkey/content/miscapis.js" />
- <script type="application/x-javascript" src="chrome://greasemonkey/content/scriptdownloader.js" />
<script type="application/x-javascript" src="chrome://greasemonkey/content/browser.js" />
<commandset>
@@ -54,8 +53,9 @@
>
<menupopup
onpopupshowing="GM_showPopup(event);"
- onclick="GM_popupClicked(event);"
- oncommand="event.stopPropagation();"
+ onclick="GM_popupClicked(event);event.stopPropagation();"
+ oncommand="GM_popupClicked(event);event.stopPropagation();"
+ oncontextmenu="event.preventDefault();"
>
<menuitem class='gm-enabled-item'
accesskey="&statusbar.enabled.accesskey;"
@@ -64,6 +64,10 @@
command="gm_toggle_checked"/>
<menuseparator />
<menuitem
+ accesskey="&menu.options.accesskey;"
+ label="&menu.options;"
+ oncommand="GM_BrowserUI.openOptions();" />
+ <menuitem
accesskey="&menu.manage.accesskey;"
label="&menu.manage;"
oncommand="GM_OpenScriptsMgr();" />
diff --git a/chrome/greasemonkey.jar!/content/config.js b/chrome/greasemonkey.jar!/content/config.js
index 5653255..d290492 100644
--- a/chrome/greasemonkey.jar!/content/config.js
+++ b/chrome/greasemonkey.jar!/content/config.js
@@ -1,5 +1,6 @@
Components.utils.import('resource://greasemonkey/constants.js');
Components.utils.import('resource://greasemonkey/prefmanager.js');
+Components.utils.import('resource://greasemonkey/script.js');
Components.utils.import('resource://greasemonkey/third-party/MatchPattern.js');
Components.utils.import('resource://greasemonkey/util.js');
@@ -100,7 +101,9 @@ Config.prototype._save = function(saveNow) {
this._saveTimer = Components.classes["@mozilla.org/timer;1"]
.createInstance(Components.interfaces.nsITimer);
- var _save = GM_util.hitch(this, "_save"); // dereference 'this' for the closure
+ // dereference 'this' for the closure
+ var _save = GM_util.hitch(this, "_save");
+
this._saveTimer.initWithCallback(
{'notify': function() { _save(true); }}, 250,
Components.interfaces.nsITimer.TYPE_ONE_SHOT);
@@ -108,8 +111,8 @@ Config.prototype._save = function(saveNow) {
}
var doc = Components.classes["@mozilla.org/xmlextras/domparser;1"]
- .createInstance(Components.interfaces.nsIDOMParser)
- .parseFromString("<UserScriptConfig></UserScriptConfig>", "text/xml");
+ .createInstance(Components.interfaces.nsIDOMParser)
+ .parseFromString("<UserScriptConfig></UserScriptConfig>", "text/xml");
for (var i = 0, scriptObj; scriptObj = this._scripts[i]; i++) {
doc.firstChild.appendChild(doc.createTextNode("\n\t"));
@@ -124,203 +127,23 @@ Config.prototype._save = function(saveNow) {
GM_util.writeToFile(domSerializer.serializeToString(doc), this._configFile);
};
-Config.prototype.parse = function(source, uri, updateScript) {
- var script = new Script();
-
- if (uri) script._downloadURL = uri.spec;
-
- // read one line at a time looking for start meta delimiter or EOF
- var lines = source.match(/.+/g);
- var lnIdx = 0;
- var result = {};
- var foundMeta = false;
-
- while ((result = lines[lnIdx++])) {
- if (result.indexOf("// ==UserScript==") == 0) {
- foundMeta = true;
- break;
- }
- }
-
- // gather up meta lines
- if (foundMeta) {
- // used for duplicate resource name detection
- var previousResourceNames = {};
- script._rawMeta = "";
-
- while ((result = lines[lnIdx++])) {
- if (result.indexOf("// ==/UserScript==") == 0) {
- break;
- }
-
- var match = result.match(/\/\/ \@(\S+)(?:\s+([^\n]+))?/);
- if (match === null) continue;
-
- var header = match[1];
- var value = (match[2] && match[2].replace(/\s+$/, '')) || null;
-
- if (!value) {
- switch (header) {
- case "unwrap":
- script._unwrap = true;
- break;
- default:
- continue;
- }
- }
-
- switch (header) {
- case "name":
- case "namespace":
- case "description":
- case "version":
- script["_" + header] = value;
- break;
- case "include":
- script._includes.push(value);
- break;
- case "userInclude":
- script._userIncludes.push(value);
- break;
- case "exclude":
- script._excludes.push(value);
- break;
- case "userExclude":
- script._userExcludes.push(value);
- break;
- case "match":
- try {
- var match = new MatchPattern(value);
- script._matches.push(match);
- } catch (e) {
- GM_util.logError("Ignoring @match pattern " + value + " because:\n" + e);
- }
- break;
- case "icon":
- script._rawMeta += header + '\0' + value + '\0';
- try {
- script.icon.metaVal = value;
- } catch (e) {
- if (updateScript) {
- script._dependFail = true;
- } else if (script.icon.dataUriError) {
- throw new Error(e.message);
- } else {
- throw new Error('Failed to get @icon '+ value);
- }
- }
- break;
- case "require":
- try {
- var reqUri = GM_util.uriFromUrl(value, uri);
- var scriptRequire = new ScriptRequire(script);
- scriptRequire._downloadURL = reqUri.spec;
- script._requires.push(scriptRequire);
- script._rawMeta += header + '\0' + value + '\0';
- } catch (e) {
- if (updateScript) {
- script._dependFail = true;
- } else {
- throw new Error('Failed to @require '+ value);
- }
- }
- break;
- case "resource":
- var res = value.match(/(\S+)\s+(.*)/);
- if (res === null) {
- // NOTE: Unlocalized strings
- throw new Error("Invalid syntax for @resource declaration '" +
- value + "'. Resources are declared like: " +
- "@resource <name> <url>.");
- }
-
- var resName = res[1];
- if (previousResourceNames[resName]) {
- throw new Error("Duplicate resource name '" + resName + "' " +
- "detected. Each resource must have a unique " +
- "name.");
- } else {
- previousResourceNames[resName] = true;
- }
-
- try {
- var resUri = GM_util.uriFromUrl(res[2], uri);
- var scriptResource = new ScriptResource(script);
- scriptResource._name = resName;
- scriptResource._downloadURL = resUri.spec;
- script._resources.push(scriptResource);
- script._rawMeta += header + '\0' + resName + '\0' + resUri.spec + '\0';
- } catch (e) {
- if (updateScript) {
- script._dependFail = true;
- } else {
- throw new Error('Failed to get @resource '+ resName +' from '+
- res[2]);
- }
- }
- break;
- case "run-at":
- script._runAt = value;
- break;
- }
- }
- }
-
- // if no meta info, default to reasonable values
- if (!script._name) {
- var name = (uri && uri.spec) || (updateScript && updateScript.filename);
- if (name) {
- name = name.substring(0, name.indexOf(".user.js"));
- name = name.substring(name.lastIndexOf("/") + 1);
- script._name = name;
- } else {
- script._name = 'user-script';
- }
- }
- if (!script._namespace && uri) script._namespace = uri.host;
- if (!script._description) script._description = "";
- if (!script._version) script._version = "";
- if ("document-start" != script._runAt && "document-end" != script._runAt) {
- script._runAt = "document-end";
- }
- if (script._includes.length == 0 && script._matches.length == 0) {
- script._includes.push("*");
- }
-
- return script;
-};
+Config.prototype.install = function(script, oldScript) {
+ var existingIndex = this._find(oldScript || script);
+ if (!oldScript) oldScript = this.scripts[existingIndex];
-Config.prototype.install = function(script) {
- var existingIndex = this._find(script);
- if (existingIndex > -1) {
+ if (oldScript) {
// Save the old script's state.
- var oldScript = this._scripts[existingIndex];
script._enabled = oldScript.enabled;
script.userExcludes = oldScript.userExcludes;
script.userIncludes = oldScript.userIncludes;
// Uninstall the old script.
- this.uninstall(this._scripts[existingIndex], true);
- }
-
- script._initFile(script._tempFile);
- script._tempFile = null;
-
- // if icon had to be downloaded, then move the file
- if (script.icon.hasDownloadURL()) {
- script.icon._initFile();
- }
-
- for (var i = 0; i < script._requires.length; i++) {
- script._requires[i]._initFile();
+ this.uninstall(oldScript, true);
}
- for (var i = 0; i < script._resources.length; i++) {
- script._resources[i]._initFile();
- }
-
- script._modified = script.file.lastModifiedTime;
script._dependhash = GM_util.sha1(script._rawMeta);
+ script._installTime = new Date().getTime()
+ script._modified = script.file.lastModifiedTime;
this._scripts.push(script);
@@ -398,31 +221,65 @@ Config.prototype.getMatchingScripts = function(testFunc) {
return this._scripts.filter(testFunc);
};
-Config.prototype.updateModifiedScripts = function(safeWin, chromeWin) {
+Config.prototype.updateModifiedScripts = function(aWhen, aSafeWin, aChromeWin) {
// Find any updated scripts or scripts with delayed injection
var scripts = this.getMatchingScripts(
function (script) {
- return script.isModified() || 0 != script.pendingExec.length;
+ return script.runAt == aWhen
+ && (script.isModified() || 0 != script.pendingExec.length);
});
if (0 == scripts.length) return;
for (var i = 0, script; script = scripts[i]; i++) {
if (0 == script.pendingExec.length) {
- var oldScriptId = new String(script.id);
- var parsedScript = this.parse(
- script.textContent, GM_util.uriFromUrl(script._downloadURL), !!script);
- script.updateFromNewScript(parsedScript, safeWin, chromeWin);
- this._changed(script, "modified", oldScriptId, true);
+ var scope = {};
+ Components.utils.import('resource://greasemonkey/parseScript.js', scope);
+ var parsedScript = scope.parse(
+ script.textContent, GM_util.uriFromUrl(script._downloadURL));
+ // TODO: Show PopupNotifications about parse error(s)?
+ script.updateFromNewScript(parsedScript, aSafeWin, aChromeWin);
} else {
// We are already downloading dependencies for this script
// so add its window to the list
- script.pendingExec.push({'safeWin': safeWin, 'chromeWin': chromeWin});
+ script.pendingExec.push({'safeWin': aSafeWin, 'chromeWin': aChromeWin});
}
}
this._save();
};
+Config.prototype._notifyUpdates = function() {
+ var scripts = this.getMatchingScripts(
+ function (script) { return script.updateAvailable; });
+ if (0 == scripts.length) return;
+
+ GM_util.getBrowserWindow().GM_OpenUpdatesMgr();
+};
+
+Config.prototype.checkScriptsForRemoteUpdates = function(scripts) {
+ var forced = false;
+ if ('undefined' == typeof scripts) {
+ forced = true;
+ var scripts = this.getMatchingScripts(function (script) {
+ return !script.updateAvailable &&
+ script.updateURL &&
+ script.enabled;
+ });
+ }
+
+ scripts.forEach(function(script) {
+ script.checkForRemoteUpdate(forced);
+ });
+};
+
+Config.prototype.getScriptById = function(scriptId) {
+ for (var i = 0, script = null; script = this.scripts[i]; i++) {
+ if (scriptId == script.id) {
+ return script;
+ }
+ }
+};
+
/**
* Checks whether the version has changed since the last run and performs
* any necessary upgrades.
diff --git a/chrome/greasemonkey.jar!/content/install.js b/chrome/greasemonkey.jar!/content/install.js
index 5074163..e6cf66a 100644
--- a/chrome/greasemonkey.jar!/content/install.js
+++ b/chrome/greasemonkey.jar!/content/install.js
@@ -1,121 +1,156 @@
-var GMInstall = {
- init: function() {
- this.htmlNs_ = "http://www.w3.org/1999/xhtml";
-
- this.scriptDownloader_ = window.arguments[0];
- this.script_ = this.scriptDownloader_.script;
-
- this.setupIncludes("includes", "includes-desc", this.script_.includes);
- this.setupIncludes("excludes", "excludes-desc", this.script_.excludes);
- var matches = [];
- for (var i = 0, match = null; match = this.script_.matches[i]; i++) {
- matches.push(match.pattern);
- }
- this.setupIncludes("matches", "matches-desc", matches);
+Components.utils.import('resource://greasemonkey/prefmanager.js');
+Components.utils.import('resource://greasemonkey/util.js');
+
+var gRemoteScript = window.arguments[0].wrappedJSObject[0];
+var gBrowser = window.arguments[0].wrappedJSObject[1];
+var gScript = window.arguments[0].wrappedJSObject[2];
+var gHtmlNs = 'http://www.w3.org/1999/xhtml';
+
+var gAcceptButton = null;
+var gCurrentDelay = null;
+var gProgress = 0;
+var gTimer = null;
+var gTotalDelay = new GM_PrefManager().getValue('installDelay', 5);
+
+function init() {
+ setUpIncludes('includes', 'includes-desc', gScript.includes);
+ setUpIncludes('excludes', 'excludes-desc', gScript.excludes);
+
+ var matches = [];
+ for (var i = 0, match = null; match = gScript.matches[i]; i++) {
+ matches.push(match.pattern);
+ }
+ setUpIncludes('matches', 'matches-desc', matches);
- this.dialog_ = document.documentElement;
- this.extraButton_ = this.dialog_.getButton("extra1");
- this.extraButton_.setAttribute("type", "checkbox");
+ document.documentElement.getButton('extra1').setAttribute('type', 'checkbox');
- this.acceptButton_ = this.dialog_.getButton("accept");
- this.acceptButton_.baseLabel = this.acceptButton_.label;
+ gAcceptButton = document.documentElement.getButton('accept');
+ gAcceptButton.baseLabel = gAcceptButton.label;
- this.timer_ = null;
- this.seconds_ = 0;
- this.startTimer();
+ startTimer();
- this.bundle = document.getElementById("gm-browser-bundle");
+ var bundle = document.getElementById('gm-browser-bundle');
- var heading = document.getElementById("heading");
- heading.appendChild(document.createTextNode(
- this.bundle.getString("greeting.msg")));
+ document.getElementById('heading').appendChild(
+ document.createTextNode(bundle.getString('greeting.msg')));
- var desc = document.getElementById("scriptDescription");
- desc.appendChild(document.createElementNS(this.htmlNs_, "strong"));
- desc.firstChild.appendChild(document.createTextNode(this.script_.name));
- if (this.script_.version) {
- desc.appendChild(document.createTextNode(' ' + this.script_.version));
- }
- desc.appendChild(document.createElementNS(this.htmlNs_, "br"));
- desc.appendChild(document.createTextNode(this.script_.description));
- },
+ var desc = document.getElementById('scriptDescription');
+ desc.appendChild(document.createElementNS(gHtmlNs, 'strong'));
+ desc.firstChild.appendChild(document.createTextNode(gScript.name));
+ if (gScript.version) {
+ desc.appendChild(document.createTextNode(' ' + gScript.version));
+ }
+ desc.appendChild(document.createElementNS(gHtmlNs, 'br'));
+ desc.appendChild(document.createTextNode(gScript.description));
+
+ if (gRemoteScript.done) {
+ // Download finished before we could open, fake a progress event.
+ onProgress(null, null, 1);
+ } else {
+ // Otherwise, listen for future progress events.
+ gRemoteScript.onProgress(onProgress);
+ }
+}
- onFocus: function(e) {
- this.startTimer();
- },
+function onBlur(e) {
+ stopTimer();
+}
- onBlur: function(e) {
- this.stopTimer();
- },
+function onCancel() {
+ gRemoteScript.cleanup();
+ window.close();
+}
- startTimer: function() {
- this.seconds_ = 4;
- this.updateLabel();
+function onFocus(e) {
+ startTimer();
+}
- if (this.timer_) {
- window.clearInterval(this.timer_);
- }
+function onInterval() {
+ gCurrentDelay--;
+ updateLabel();
- this.timer_ = window.setInterval(function() { GMInstall.onInterval(); }, 500);
- },
+ if (gCurrentDelay == 0) stopTimer();
+}
- onInterval: function() {
- this.seconds_--;
- this.updateLabel();
+function onOk() {
+ gRemoteScript.install();
+ window.setTimeout(window.close, 0);
+}
- if (this.seconds_ == 0) {
- this.timer_ = window.clearInterval(this.timer_);
- }
- },
-
- stopTimer: function() {
- this.seconds_ = 5;
- this.timer_ = window.clearInterval(this.timer_);
- this.updateLabel();
- },
-
- updateLabel: function() {
- if (this.seconds_ > 0) {
- this.acceptButton_.focus();
- this.acceptButton_.disabled = true;
- this.acceptButton_.label = this.acceptButton_.baseLabel + " (" + this.seconds_ + ")";
- } else {
- this.acceptButton_.disabled = false;
- this.acceptButton_.label = this.acceptButton_.baseLabel;
+function onProgress(aRemoteScript, aEventType, aData) {
+ if (!document) return; // lingering download after window cancel
+ gProgress = Math.floor(100 * aData);
+ if (gRemoteScript.done) {
+ document.getElementById('loading').style.display = 'none';
+ if (gRemoteScript.errorMessage) {
+ document.documentElement.getButton('extra1').disabled = true;
+ document.getElementById('dialogContentBox').style.display = 'none';
+ document.getElementById('errorContentBox').style.display = '-moz-box';
+ document.getElementById('errorMessage')
+ .textContent = gRemoteScript.errorMessage;
+ stopTimer();
+ updateLabel(false);
+ return;
}
- },
+ } else {
+ document.getElementById('progressmeter').setAttribute('value', gProgress);
+ }
+ updateLabel();
+}
+
+function onShowSource() {
+ gRemoteScript.showSource(gBrowser);
+ window.setTimeout(window.close, 0);
+}
- setupIncludes: function(box, desc, includes) {
- if (includes.length > 0) {
- desc = document.getElementById(desc);
- document.getElementById(box).style.display = "";
+function pauseTimer() {
+ stopTimer();
+ gCurrentDelay = gTotalDelay;
+ updateLabel();
+}
- for (var i = 0; i < includes.length; i++) {
- desc.appendChild(document.createTextNode(includes[i]));
- desc.appendChild(document.createElementNS(this.htmlNs_, "br"));
- }
+function setUpIncludes(box, desc, includes) {
+ if (includes.length > 0) {
+ desc = document.getElementById(desc);
+ document.getElementById(box).style.display = '';
- desc.removeChild(desc.lastChild);
+ for (var i = 0; i < includes.length; i++) {
+ desc.appendChild(document.createTextNode(includes[i]));
+ desc.appendChild(document.createElementNS(gHtmlNs, 'br'));
}
- },
- onOK: function() {
- this.scriptDownloader_.installScript();
- window.setTimeout(window.close, 0);
- },
+ desc.removeChild(desc.lastChild);
+ }
+}
- onCancel: function(){
- this.scriptDownloader_.cleanupTempFiles();
- window.close();
- },
+function startTimer() {
+ gCurrentDelay = gTotalDelay;
+ updateLabel();
- onShowSource: function() {
- this.scriptDownloader_.showScriptView();
- window.setTimeout(window.close, 0);
+ gTimer = window.setInterval(onInterval, 500);
+}
+
+function stopTimer() {
+ if (gTimer) window.clearInterval(gTimer);
+ gCurrentDelay = 0;
+}
+
+function updateLabel(aOkAllowed) {
+ if ('undefined' == typeof aOkAllowed) aOkAllowed = true;
+
+ if (gCurrentDelay > 0) {
+ gAcceptButton.focus();
+ gAcceptButton.label = gAcceptButton.baseLabel + ' (' + gCurrentDelay + ')';
+ } else {
+ gAcceptButton.label = gAcceptButton.baseLabel;
}
-};
+
+ gAcceptButton.disabled = aOkAllowed
+ ? ((gCurrentDelay > 0) || (gProgress < 100))
+ : true;
+}
// See: closewindow.xul .
function GM_onClose() {
- GMInstall.onCancel();
+ gRemoteScript.cleanup();
}
diff --git a/chrome/greasemonkey.jar!/content/install.xul b/chrome/greasemonkey.jar!/content/install.xul
index 36fc3e8..c51b646 100644
--- a/chrome/greasemonkey.jar!/content/install.xul
+++ b/chrome/greasemonkey.jar!/content/install.xul
@@ -13,10 +13,10 @@
id="greasemonkey"
title="&install.title;"
style="width: 32em; height:32em;"
- onload="GMInstall.init();"
- ondialogaccept="return GMInstall.onOK();"
- ondialogcancel="return GMInstall.onCancel();"
- ondialogextra1="return GMInstall.onShowSource();"
+ onload="init();"
+ ondialogaccept="return onOk();"
+ ondialogcancel="return onCancel();"
+ ondialogextra1="return onShowSource();"
buttons="accept,cancel,extra1"
buttonlabelaccept="&install.installbutton;"
buttonlabelextra1="&install.showscriptsource;"
@@ -24,12 +24,9 @@
<stringbundle id="gm-browser-bundle" src="chrome://greasemonkey/locale/gm-browser.properties" />
- <script type="application/x-javascript" src="chrome://greasemonkey/content/scriptdownloader.js" />
<script type="application/x-javascript" src="chrome://greasemonkey/content/install.js" />
- <vbox id="dialogContentBox"
- flex="1"
- >
+ <vbox id="dialogContentBox" flex="1">
<description id="heading"
style="margin-bottom:1em" />
<vbox id="itemBox"
@@ -76,6 +73,18 @@
style="margin-bottom:1em"
class="warning"
>&install.warning2;</description>
+
+ <vbox id="loading">
+ <label value="&loading;" />
+ <progressmeter id="progressmeter"/>
+ </vbox>
</vbox>
+ <vbox id="errorContentBox" flex="1" style="display: none">
+ <description style="margin-bottom: 1em; font-weight: bold;">
+ <!-- TODO: Localize. -->
+ Download Error
+ </description>
+ <description id="errorMessage" style="white-space: pre-line" />
+ </vbox>
</dialog>
diff --git a/chrome/greasemonkey.jar!/content/menucommander.js b/chrome/greasemonkey.jar!/content/menucommander.js
index 8c6d263..4c61ad8 100644
--- a/chrome/greasemonkey.jar!/content/menucommander.js
+++ b/chrome/greasemonkey.jar!/content/menucommander.js
@@ -21,14 +21,18 @@ GM_MenuCommander.onPopupShowing = function(aMenuPopup) {
// Add menu items for commands for the active window.
var haveCommands = false;
- GM_BrowserUI.gmSvc.withAllMenuCommandsForWindowId(
- GM_util.windowId(gBrowser.contentWindow),
- function(index, command) {
- if (command.frozen) return;
- aMenuPopup.insertBefore(
- GM_MenuCommander.createMenuItem(command),
- aMenuPopup.firstChild);
- haveCommands = true;
- });
+ var windowId = GM_util.windowId(gBrowser.contentWindow);
+
+ if(windowId) {
+ GM_BrowserUI.gmSvc.withAllMenuCommandsForWindowId(
+ windowId,
+ function(index, command) {
+ if (command.frozen) return;
+ aMenuPopup.insertBefore(
+ GM_MenuCommander.createMenuItem(command),
+ aMenuPopup.firstChild);
+ haveCommands = true;
+ });
+ }
aMenuPopup.parentNode.disabled = !haveCommands;
};
diff --git a/chrome/greasemonkey.jar!/content/miscapis.js b/chrome/greasemonkey.jar!/content/miscapis.js
index dada53a..e690eba 100644
--- a/chrome/greasemonkey.jar!/content/miscapis.js
+++ b/chrome/greasemonkey.jar!/content/miscapis.js
@@ -51,7 +51,7 @@ GM_Resources.prototype.getResourceURL = function(name) {
return undefined;
}
- return this.getDep_(name).dataContent;
+ return this._getDep(name).dataContent;
};
GM_Resources.prototype.getResourceText = function(name) {
@@ -59,10 +59,10 @@ GM_Resources.prototype.getResourceText = function(name) {
return undefined;
}
- return this.getDep_(name).textContent;
+ return this._getDep(name).textContent;
};
-GM_Resources.prototype.getDep_ = function(name) {
+GM_Resources.prototype._getDep = function(name) {
var resources = this.script.resources;
for (var i = 0, resource; resource = resources[i]; i++) {
if (resource.name == name) {
diff --git a/chrome/greasemonkey.jar!/content/newscript.js b/chrome/greasemonkey.jar!/content/newscript.js
index b5019db..a5d0924 100644
--- a/chrome/greasemonkey.jar!/content/newscript.js
+++ b/chrome/greasemonkey.jar!/content/newscript.js
@@ -28,7 +28,9 @@ function doInstall() {
var config = GM_util.getService().config;
// Create a script object with parsed metadata, and ...
- var script = config.parse(scriptSrc);
+ var scope = {};
+ Components.utils.import('resource://greasemonkey/parseScript.js', scope);
+ var script = scope.parse(scriptSrc);
// ... make sure entered details will not ruin an existing file.
if (config.installIsUpdate(script)) {
var overwrite = confirm(bundle.getString("newscript.exists"));
@@ -37,17 +39,20 @@ function doInstall() {
// finish making the script object ready to install
// (put this created script into a file -- only way to install it)
- var tempFile = GM_util.getTempFile();
+ var scope = {};
+ Components.utils.import('resource://greasemonkey/remoteScript.js', scope);
+ var remoteScript = new scope.RemoteScript();
+ var tempFileName = scope.cleanFilename(script.name, 'gm_script') + '.user.js';
+ var tempFile = GM_util.getTempFile(remoteScript._tempDir, tempFileName);
GM_util.writeToFile(scriptSrc, tempFile, function() {
- script.setDownloadedFile(tempFile);
-
// install this script
- config.install(script);
+ remoteScript.setScript(script, tempFile);
+ remoteScript.install();
// and fire up the editor!
GM_util.openInEditor(script);
+
// persist namespace value
GM_prefRoot.setValue("newscript_namespace", script.namespace);
-
// Now that async write is complete, close the window.
close();
});
diff --git a/chrome/greasemonkey.jar!/content/newscript.xul b/chrome/greasemonkey.jar!/content/newscript.xul
index c7bbb30..6eb4ec1 100644
--- a/chrome/greasemonkey.jar!/content/newscript.xul
+++ b/chrome/greasemonkey.jar!/content/newscript.xul
@@ -12,7 +12,6 @@
<stringbundle id="gm-browser-bundle" src="chrome://greasemonkey/locale/gm-browser.properties" />
- <script type="application/x-javascript" src="chrome://greasemonkey/content/scriptdownloader.js" />
<script type="application/x-javascript" src="chrome://greasemonkey/content/newscript.js" />
<vbox>
diff --git a/chrome/greasemonkey.jar!/content/options.js b/chrome/greasemonkey.jar!/content/options.js
index ad0ac08..3c99c02 100644
--- a/chrome/greasemonkey.jar!/content/options.js
+++ b/chrome/greasemonkey.jar!/content/options.js
@@ -2,15 +2,48 @@ Components.utils.import('resource://greasemonkey/prefmanager.js');
Components.utils.import('resource://greasemonkey/util.js');
function GM_loadOptions() {
- document.getElementById("check-uninstall")
- .checked = GM_prefRoot.getValue("uninstallPreferences");
- document.getElementById("globalExcludes")
+ document.getElementById('check-uninstall')
+ .checked = GM_prefRoot.getValue('uninstallPreferences');
+
+ document.getElementById('globalExcludes')
.pages = GM_util.getService().config.globalExcludes;
+
+ document.getElementById('check-update')
+ .checked = GM_prefRoot.getValue('enableUpdateChecking');
+ document.getElementById('secure-update')
+ .checked = GM_prefRoot.getValue('requireSecureUpdates');
+
+ document.getElementById('slide-updateInterval')
+ .value = GM_prefRoot.getValue('minDaysBetweenUpdateChecks');
+
+ GM_setMinUpdateIntervalLabel();
+ GM_onChangeUpdateChecking();
}
function GM_saveOptions(checkbox) {
- GM_prefRoot.setValue("uninstallPreferences",
- !!document.getElementById("check-uninstall").checked);
+ GM_prefRoot.setValue('uninstallPreferences',
+ !!document.getElementById('check-uninstall').checked);
GM_util.getService().config.globalExcludes =
- document.getElementById("globalExcludes").pages;
+ document.getElementById('globalExcludes').pages;
+ GM_prefRoot.setValue('enableUpdateChecking',
+ !!document.getElementById('check-update').checked);
+ GM_prefRoot.setValue('requireSecureUpdates',
+ !!document.getElementById('secure-update').checked);
+ GM_prefRoot.setValue("minDaysBetweenUpdateChecks", GM_getMinUpdateDays());
+}
+
+function GM_getMinUpdateDays() {
+ return parseInt(document.getElementById('slide-updateInterval').value);
+}
+
+function GM_onChangeUpdateChecking() {
+ var enabled = document.getElementById('check-update').checked;
+ document.getElementById('secure-update').disabled = !enabled;
+ document.getElementById('slide-updateInterval').disabled = !enabled;
+ document.getElementById('label-slide-updateInterval').disabled = !enabled;
+}
+
+function GM_setMinUpdateIntervalLabel() {
+ document.getElementById('txt-updateInterval')
+ .setAttribute('value', GM_getMinUpdateDays());
}
diff --git a/chrome/greasemonkey.jar!/content/options.xul b/chrome/greasemonkey.jar!/content/options.xul
index 3f7f85f..b18c185 100644
--- a/chrome/greasemonkey.jar!/content/options.xul
+++ b/chrome/greasemonkey.jar!/content/options.xul
@@ -13,12 +13,13 @@
<dialog
title="Greasemonkey - &prefWindow.titleWin;"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
- buttons="accept"
+ buttons="accept,cancel"
id="greasemonkey-options-dialog"
persist="screenX screenY"
onload="GM_loadOptions()"
ondialogaccept="GM_saveOptions()"
+ ondialogcancel="close()"
>
<script type="application/x-javascript" src="chrome://greasemonkey/content/options.js" />
@@ -39,6 +40,24 @@
<caption label="&options.globalExcludes;" />
<cludes id="globalExcludes" />
</groupbox>
+
+ <groupbox>
+ <caption label="&UpdateChecking;" />
+ <checkbox id="check-update" label="&EnableUpdateChecking;"
+ oncommand="GM_onChangeUpdateChecking()" />
+ <hbox>
+ <separator orient="vertical" />
+ <checkbox id="secure-update" label="&RequireSecureUpdates;" />
+ </hbox>
+ <label value="&UpdateInterval;" control="slide-updateInterval"
+ id="label-slide-updateInterval" />
+ <hbox>
+ <scale id="slide-updateInterval" flex="1"
+ orient="horizontal" min="1" max="30"
+ onchange="GM_setMinUpdateIntervalLabel()"/>
+ <label id="txt-updateInterval" />
+ </hbox>
+ </groupbox>
</vbox>
</dialog>
diff --git a/chrome/greasemonkey.jar!/content/statusbar.xul b/chrome/greasemonkey.jar!/content/statusbar.xul
index c6e8536..9fcead8 100644
--- a/chrome/greasemonkey.jar!/content/statusbar.xul
+++ b/chrome/greasemonkey.jar!/content/statusbar.xul
@@ -17,6 +17,8 @@
<menupopup id="gm-status-popup"
onpopupshowing="GM_showPopup(event);"
onclick="GM_popupClicked(event);"
+ oncommand="GM_popupClicked(event);"
+ oncontextmenu="event.preventDefault();"
>
<menuseparator class="scripts-framed-point" collapsed="true" />
<menuseparator class="scripts-sep" />
diff --git a/chrome/greasemonkey.jar!/locale/ca-AD/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/ca-AD/gm-addons.dtd
index d444a7d..de8a69b 100644
--- a/chrome/greasemonkey.jar!/locale/ca-AD/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/ca-AD/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "Edit">
<!ENTITY Edit.accesskey "E">
<!ENTITY Edit.tooltip "Edit this User Script">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Execute last">
<!ENTITY ExecuteLater "Execute later">
<!ENTITY ExecuteSooner "Execute sooner">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "Move Down">
<!ENTITY MoveDown.accesskey "D">
<!ENTITY MoveToBottom "Move To Bottom">
diff --git a/chrome/greasemonkey.jar!/locale/ca-AD/gm-browser.properties b/chrome/greasemonkey.jar!/locale/ca-AD/gm-browser.properties
index 81d47ad..7ff5c8a 100644
--- a/chrome/greasemonkey.jar!/locale/ca-AD/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/ca-AD/gm-browser.properties
@@ -17,5 +17,5 @@ editor.prompt=Please choose your preferred text editor first
editor.please_pick_executable=Please pick an executable application to use to edit user scripts.
editor.could_not_launch=Could not launch editor.
newscript.noname=Please provide a name for your script.
-newscript.nonamespace=Please provide a valid namespace URI for your script.\n(e.g. "http://userscripts.org/users/useridnumber")
+newscript.nonamespace=Please provide a valid namespace URI for your script.n(e.g. "http://userscripts.org/users/useridnumber")
newscript.exists=A script with that name is already installed.\nOK to overwrite?
diff --git a/chrome/greasemonkey.jar!/locale/ca-AD/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/ca-AD/greasemonkey.dtd
index 6a60d07..4743f11 100644
--- a/chrome/greasemonkey.jar!/locale/ca-AD/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/ca-AD/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "Manage User Scripts...">
<!ENTITY menu.manage.accesskey "M">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "Enabled">
<!ENTITY statusbar.enabled.accesskey "E">
<!ENTITY install.title "Greasemonkey Installation">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "You should only install scripts from sources that you trust.">
<!ENTITY install.showscriptsource "Show Script Source">
<!ENTITY install.installbutton "Install">
+<!ENTITY loading "Downloading ...">
<!ENTITY newscript.name "Name">
<!ENTITY newscript.namespace "Namespace">
<!ENTITY newscript.description "Description">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "User Scripts">
<!ENTITY Uninstall "Uninstall">
<!ENTITY AlsoUninstallPrefs "Also uninstall associated preferences">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Enable automatic update checking of scripts">
+<!ENTITY UpdateInterval "Minimum number of days between update checks">
+<!ENTITY RequireSecureUpdates "Require secure updates">
<!ENTITY greasemonkey.noscriptshere "No installed scripts run on this page.">
<!ENTITY greasemonkey.youhavenoscripts "You don't have any user scripts installed">
<!ENTITY greasemonkey.getuserscripts "Get user scripts">
diff --git a/chrome/greasemonkey.jar!/locale/ca-AD/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/ca-AD/greasemonkey.properties
index 281ef1b..51f3e82 100644
--- a/chrome/greasemonkey.jar!/locale/ca-AD/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/ca-AD/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=A User Script Manager for Firefox
-error.matchPattern.parse=@match: Could not parse the pattern.
-error.matchPattern.scheme=@match: Invalid scheme specified.
+error.downloadingUrl=Error downloading URL:
error.matchPattern.host=@match: Invalid host specified.
+error.matchPattern.parse=@match: Could not parse the pattern.
error.matchPattern.path=@match: Invalid path specified.
+error.matchPattern.scheme=@match: Invalid scheme specified.
+error.parsingScript=Could not parse script:
+error.serverReturned=Server returned
+error.unknown=Unknown error.
diff --git a/chrome/greasemonkey.jar!/locale/cs/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/cs/gm-addons.dtd
index 228d992..4cf1207 100644
--- a/chrome/greasemonkey.jar!/locale/cs/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/cs/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "Upravit">
<!ENTITY Edit.accesskey "U">
<!ENTITY Edit.tooltip "Upravit tento uživatelský skript">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Spustit poslední">
<!ENTITY ExecuteLater "Spustit později">
<!ENTITY ExecuteSooner "Spustit dříve">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "Posunout níže">
<!ENTITY MoveDown.accesskey "n">
<!ENTITY MoveToBottom "Posunout úplně dolů">
diff --git a/chrome/greasemonkey.jar!/locale/cs/gm-browser.properties b/chrome/greasemonkey.jar!/locale/cs/gm-browser.properties
index 94f9f4b..f58f080 100644
--- a/chrome/greasemonkey.jar!/locale/cs/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/cs/gm-browser.properties
@@ -17,5 +17,5 @@ editor.prompt=Nejprve zvolte váš oblíbený textový editor
editor.please_pick_executable=Prosím vložte spustitelnou aplikaci, která se použije pro úprav textových souborů.
editor.could_not_launch=Nelze spustit editor.
newscript.noname=Prosím poskytněte název vašeho skriptu.
-newscript.nonamespace=Prosím poskytněte správný jmenný prostor pro váš skript.\n(např. "http://userscripts.org/users/useridnumber")
-newscript.exists=Skript s tímto jménem je již nainstalován.\nPřejete si ho přepsat?
+newscript.nonamespace=Prosím poskytněte správný jmenný prostor pro váš skript.n(např. "http://userscripts.org/users/useridnumber")
+newscript.exists=Skript s tímto jménem je již nainstalován.nPřejete si ho přepsat?
diff --git a/chrome/greasemonkey.jar!/locale/cs/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/cs/greasemonkey.dtd
index 7e5fc53..6ae6467 100644
--- a/chrome/greasemonkey.jar!/locale/cs/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/cs/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "Správce uživatelských skriptů...">
<!ENTITY menu.manage.accesskey "S">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "Povoleno">
<!ENTITY statusbar.enabled.accesskey "P">
<!ENTITY install.title "Instalace Greasemonkey">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "Měli byste instalovat skripty pouze ze zdrojů, kterým věříte.">
<!ENTITY install.showscriptsource "Zobrazit zdrojový kód skriptu">
<!ENTITY install.installbutton "Instalovat">
+<!ENTITY loading "Downloading ...">
<!ENTITY newscript.name "Název">
<!ENTITY newscript.namespace "Jmenný prostor">
<!ENTITY newscript.description "Popis">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "Uživatelské skripty">
<!ENTITY Uninstall "Odinstalovat">
<!ENTITY AlsoUninstallPrefs "Odinstalovat i přidružená nastavení">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Enable automatic update checking of scripts">
+<!ENTITY UpdateInterval "Minimum number of days between update checks">
+<!ENTITY RequireSecureUpdates "Require secure updates">
<!ENTITY greasemonkey.noscriptshere "No installed scripts run on this page.">
<!ENTITY greasemonkey.youhavenoscripts "Nemáte nainstalované uživatelské skripty">
<!ENTITY greasemonkey.getuserscripts "Získat uživatelské skripty">
diff --git a/chrome/greasemonkey.jar!/locale/cs/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/cs/greasemonkey.properties
index 920c7ff..f6d17e7 100644
--- a/chrome/greasemonkey.jar!/locale/cs/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/cs/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=Správce uživatelských skriptů pro Firefox
-error.matchPattern.parse=@spojení: nelze analyzovat vzorek.
-error.matchPattern.scheme=@spojení: Specifikován neplatný vzhled.
+error.downloadingUrl=Error downloading URL:
error.matchPattern.host=@spojení: Určen neplatný hostitel.
+error.matchPattern.parse=@spojení: nelze analyzovat vzorek.
error.matchPattern.path=@spojení: Specifikována neplatná cesta.
+error.matchPattern.scheme=@spojení: Specifikován neplatný vzhled.
+error.parsingScript=Could not parse script:
+error.serverReturned=Server returned
+error.unknown=Unknown error.
diff --git a/chrome/greasemonkey.jar!/locale/da/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/da/gm-addons.dtd
index d7bba38..a487ef1 100644
--- a/chrome/greasemonkey.jar!/locale/da/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/da/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "Rediger">
<!ENTITY Edit.accesskey "E">
<!ENTITY Edit.tooltip "Rediger dette User Script">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Kør sidst">
<!ENTITY ExecuteLater "Kør senere">
<!ENTITY ExecuteSooner "Kør før">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "Flyt op">
<!ENTITY MoveDown.accesskey "D">
<!ENTITY MoveToBottom "Flyt til bunden">
diff --git a/chrome/greasemonkey.jar!/locale/da/gm-browser.properties b/chrome/greasemonkey.jar!/locale/da/gm-browser.properties
index d8867c0..0a47c7e 100644
--- a/chrome/greasemonkey.jar!/locale/da/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/da/gm-browser.properties
@@ -17,5 +17,5 @@ editor.prompt=Venligst vælg dit foretrukne tekstredigeringsprogram først
editor.please_pick_executable=Vælg venligst et program til at bruge til at redigere user sripts.
editor.could_not_launch=Kunne ikke åbne tekstredigeringsprogram.
newscript.noname=Venligst navngiv dit script.
-newscript.nonamespace=Giv venligst en valid "nameespace" URL til dit script.\n(e.g. "http://userscripts.org/users/useridnumber")
-newscript.exists=Et script med dette navn er allerede installeret.\nOK at overskrive?
+newscript.nonamespace=Giv venligst en valid "nameespace" URL til dit script.n(e.g. "http://userscripts.org/users/useridnumber")
+newscript.exists=Et script med dette navn er allerede installeret.nOK at overskrive?
diff --git a/chrome/greasemonkey.jar!/locale/da/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/da/greasemonkey.dtd
index 67fd225..5e2e268 100644
--- a/chrome/greasemonkey.jar!/locale/da/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/da/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "Administrer User Scripts...">
<!ENTITY menu.manage.accesskey "M">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "Aktiveret">
<!ENTITY statusbar.enabled.accesskey "E">
<!ENTITY install.title "Greasemonkey Installation">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "Du bør kun installere scripts fra kilder, du stoler på.">
<!ENTITY install.showscriptsource "Vis Script kildekode">
<!ENTITY install.installbutton "Installer">
+<!ENTITY loading "Downloading ...">
<!ENTITY newscript.name "Navn">
<!ENTITY newscript.namespace "Navnerum">
<!ENTITY newscript.description "Beskrivelse">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "User Scripts">
<!ENTITY Uninstall "Afinstaller">
<!ENTITY AlsoUninstallPrefs "Også afinstallere tilhørende indstilliner">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Enable automatic update checking of scripts">
+<!ENTITY UpdateInterval "Minimum number of days between update checks">
+<!ENTITY RequireSecureUpdates "Require secure updates">
<!ENTITY greasemonkey.noscriptshere "Ingen installerede scripts køres på denne side.">
<!ENTITY greasemonkey.youhavenoscripts "Du har ikke nogen user scripts installeret">
<!ENTITY greasemonkey.getuserscripts "Find user scripts">
diff --git a/chrome/greasemonkey.jar!/locale/da/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/da/greasemonkey.properties
index d1c838d..cc65916 100644
--- a/chrome/greasemonkey.jar!/locale/da/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/da/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=En User Script manager til Firefox
-error.matchPattern.parse=@match: Kunne ikke køre mønstret.
-error.matchPattern.scheme=@match: Ugyldigt skema specificeret.
+error.downloadingUrl=Error downloading URL:
error.matchPattern.host=@match: Ugyldig vært specificeret.
+error.matchPattern.parse=@match: Kunne ikke køre mønstret.
error.matchPattern.path=@match: Ugyldig sti specificeret.
+error.matchPattern.scheme=@match: Ugyldigt skema specificeret.
+error.parsingScript=Could not parse script:
+error.serverReturned=Server returned
+error.unknown=Unknown error.
diff --git a/chrome/greasemonkey.jar!/locale/de/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/de/gm-addons.dtd
index 461b904..4200fdf 100644
--- a/chrome/greasemonkey.jar!/locale/de/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/de/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatisch auf Updates prüfen">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "Bearbeiten">
<!ENTITY Edit.accesskey "B">
<!ENTITY Edit.tooltip "Dieses Benutzerskript bearbeiten">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Zuletzt ausführen">
<!ENTITY ExecuteLater "Später ausführen">
<!ENTITY ExecuteSooner "Früher ausführen">
+<!ENTITY FindUpdate "Nach Aktualisierungen suchen">
+<!ENTITY InstallUpdate "Aktualisierungen installieren">
<!ENTITY MoveDown "Nach unten verschieben">
<!ENTITY MoveDown.accesskey "u">
<!ENTITY MoveToBottom "Ans Ende verschieben">
diff --git a/chrome/greasemonkey.jar!/locale/de/gm-browser.properties b/chrome/greasemonkey.jar!/locale/de/gm-browser.properties
index cfe46d8..8fa3c12 100644
--- a/chrome/greasemonkey.jar!/locale/de/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/de/gm-browser.properties
@@ -13,7 +13,7 @@ alert.fromURI=Benutzerskript wird heruntergeladen…
alert.fromURI.failure=Das Benutzerskript konnte nicht heruntergeladen werden
alert.success=wurde erfolgreich installiert.
alert.failure=Fehler bei der Installation des Benutzerskripts:
-editor.prompt=Bitte wählen Sie zunächst Ihren bevorzugten Text-Editor aus (z.B. "C:\\Windows\\notepad.exe")
+editor.prompt=Bitte wählen Sie zunächst Ihren bevorzugten Text-Editor aus (z.B. "C:Windowsnotepad.exe")
editor.please_pick_executable=Bitte wählen Sie eine ausführbare Anwendung zur Bearbeitung der Benutzerskripte aus.
editor.could_not_launch=Text-Editor konnte nicht gestartet werden.
newscript.noname=Bitte geben Sie einen Namen für Ihr Skript an.
diff --git a/chrome/greasemonkey.jar!/locale/de/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/de/greasemonkey.dtd
index f659ac9..31d156c 100644
--- a/chrome/greasemonkey.jar!/locale/de/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/de/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "Benutzerskripte verwalten…">
<!ENTITY menu.manage.accesskey "v">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "Greasemonkey aktivieren">
<!ENTITY statusbar.enabled.accesskey "A">
<!ENTITY install.title "Greasemonkey-Installation">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "Sie sollten nur Skripte von Quellen installieren, denen Sie vertrauen.">
<!ENTITY install.showscriptsource "Skript-Quelltext anzeigen">
<!ENTITY install.installbutton "Installieren">
+<!ENTITY loading "Wird heruntergeladen…">
<!ENTITY newscript.name "Name:">
<!ENTITY newscript.namespace "Namensraum:">
<!ENTITY newscript.description "Beschreibung:">
@@ -25,13 +28,17 @@
<!ENTITY newscript.excludes "Nicht auf diese Seiten anwenden (zeilenweise angeben):">
<!ENTITY options.editor "Editor">
<!ENTITY options.changeEditor "Editor ändern">
-<!ENTITY options.globalExcludes "Global Excludes">
+<!ENTITY options.globalExcludes "Globale Ausschlüsse">
<!ENTITY userscripts "Benutzerskripte">
<!ENTITY Uninstall "Deinstallieren">
<!ENTITY AlsoUninstallPrefs "Zugehörige Einstellungen ebenfalls entfernen">
+<!ENTITY UpdateChecking "Auf Aktualisierungen überprüfen">
+<!ENTITY EnableUpdateChecking "Automatische Überprüfung der Skripte auf Aktualisierung">
+<!ENTITY UpdateInterval "Minimale Anzahl von Tagen zwischen Aktualisierungsprüfungen">
+<!ENTITY RequireSecureUpdates "Sicherheitsupdate erforderlich">
<!ENTITY greasemonkey.noscriptshere "Es werden keine installierten Skripte auf dieser Seite ausgeführt.">
<!ENTITY greasemonkey.youhavenoscripts "Sie haben noch keine Benutzerskripte installiert">
<!ENTITY greasemonkey.getuserscripts "Benutzerskripte hinzufügen…">
-<!ENTITY scriptprefs.title "Greasemonkey User Script Preferences - !!">
-<!ENTITY scriptprefs.usersettings "User Settings">
-<!ENTITY scriptprefs.scriptsettings "Script Settings">
+<!ENTITY scriptprefs.title "Greasemonkey - Benutzerskript-Einstellungen">
+<!ENTITY scriptprefs.usersettings "Benutzereinstellungen">
+<!ENTITY scriptprefs.scriptsettings "Skript-Einstellungen">
diff --git a/chrome/greasemonkey.jar!/locale/de/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/de/greasemonkey.properties
index cca950a..9772426 100644
--- a/chrome/greasemonkey.jar!/locale/de/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/de/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=Ein Benutzerskript-Manager für Firefox
-error.matchPattern.parse=@match: Could not parse the pattern.
-error.matchPattern.scheme=@match: Invalid scheme specified.
-error.matchPattern.host=@match: Invalid host specified.
-error.matchPattern.path=@match: Invalid path specified.
+error.downloadingUrl=Fehler beim Herunterladen von URL:
+error.matchPattern.host=@Entsprechung: Ungültige Host angegeben
+error.matchPattern.parse=@Entsprechung: Das Muster konnte nicht analysiert werden.
+error.matchPattern.path=@Entsprechung: Ungültigen Pfad angegeben
+error.matchPattern.scheme=@Entsprechung: Ungültiges Schema angegeben
+error.parsingScript=Skript konnte nicht analysiert werden:
+error.serverReturned=Rückgabe vom Server
+error.unknown=Unbekannter Fehler
diff --git a/chrome/greasemonkey.jar!/locale/en-US/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/en-US/gm-addons.dtd
index d444a7d..de8a69b 100644
--- a/chrome/greasemonkey.jar!/locale/en-US/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/en-US/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "Edit">
<!ENTITY Edit.accesskey "E">
<!ENTITY Edit.tooltip "Edit this User Script">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Execute last">
<!ENTITY ExecuteLater "Execute later">
<!ENTITY ExecuteSooner "Execute sooner">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "Move Down">
<!ENTITY MoveDown.accesskey "D">
<!ENTITY MoveToBottom "Move To Bottom">
diff --git a/chrome/greasemonkey.jar!/locale/en-US/gm-browser.properties b/chrome/greasemonkey.jar!/locale/en-US/gm-browser.properties
index 81d47ad..7ff5c8a 100644
--- a/chrome/greasemonkey.jar!/locale/en-US/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/en-US/gm-browser.properties
@@ -17,5 +17,5 @@ editor.prompt=Please choose your preferred text editor first
editor.please_pick_executable=Please pick an executable application to use to edit user scripts.
editor.could_not_launch=Could not launch editor.
newscript.noname=Please provide a name for your script.
-newscript.nonamespace=Please provide a valid namespace URI for your script.\n(e.g. "http://userscripts.org/users/useridnumber")
+newscript.nonamespace=Please provide a valid namespace URI for your script.n(e.g. "http://userscripts.org/users/useridnumber")
newscript.exists=A script with that name is already installed.\nOK to overwrite?
diff --git a/chrome/greasemonkey.jar!/locale/en-US/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/en-US/greasemonkey.dtd
index 6a60d07..4743f11 100644
--- a/chrome/greasemonkey.jar!/locale/en-US/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/en-US/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "Manage User Scripts...">
<!ENTITY menu.manage.accesskey "M">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "Enabled">
<!ENTITY statusbar.enabled.accesskey "E">
<!ENTITY install.title "Greasemonkey Installation">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "You should only install scripts from sources that you trust.">
<!ENTITY install.showscriptsource "Show Script Source">
<!ENTITY install.installbutton "Install">
+<!ENTITY loading "Downloading ...">
<!ENTITY newscript.name "Name">
<!ENTITY newscript.namespace "Namespace">
<!ENTITY newscript.description "Description">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "User Scripts">
<!ENTITY Uninstall "Uninstall">
<!ENTITY AlsoUninstallPrefs "Also uninstall associated preferences">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Enable automatic update checking of scripts">
+<!ENTITY UpdateInterval "Minimum number of days between update checks">
+<!ENTITY RequireSecureUpdates "Require secure updates">
<!ENTITY greasemonkey.noscriptshere "No installed scripts run on this page.">
<!ENTITY greasemonkey.youhavenoscripts "You don't have any user scripts installed">
<!ENTITY greasemonkey.getuserscripts "Get user scripts">
diff --git a/chrome/greasemonkey.jar!/locale/en-US/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/en-US/greasemonkey.properties
index 281ef1b..51f3e82 100644
--- a/chrome/greasemonkey.jar!/locale/en-US/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/en-US/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=A User Script Manager for Firefox
-error.matchPattern.parse=@match: Could not parse the pattern.
-error.matchPattern.scheme=@match: Invalid scheme specified.
+error.downloadingUrl=Error downloading URL:
error.matchPattern.host=@match: Invalid host specified.
+error.matchPattern.parse=@match: Could not parse the pattern.
error.matchPattern.path=@match: Invalid path specified.
+error.matchPattern.scheme=@match: Invalid scheme specified.
+error.parsingScript=Could not parse script:
+error.serverReturned=Server returned
+error.unknown=Unknown error.
diff --git a/chrome/greasemonkey.jar!/locale/es-AR/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/es-AR/gm-addons.dtd
index 30ddc8a..a0235a8 100644
--- a/chrome/greasemonkey.jar!/locale/es-AR/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/es-AR/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "Editar">
<!ENTITY Edit.accesskey "E">
<!ENTITY Edit.tooltip "Editar este Script">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Ejecutar último">
<!ENTITY ExecuteLater "Ejecutar después">
<!ENTITY ExecuteSooner "Ejecutar antes">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "Mover abajo">
<!ENTITY MoveDown.accesskey "b">
<!ENTITY MoveToBottom "Mover al final">
diff --git a/chrome/greasemonkey.jar!/locale/es-AR/gm-browser.properties b/chrome/greasemonkey.jar!/locale/es-AR/gm-browser.properties
index 6a966e0..27858bd 100644
--- a/chrome/greasemonkey.jar!/locale/es-AR/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/es-AR/gm-browser.properties
@@ -17,5 +17,5 @@ editor.prompt=Por favor, primero elija su editor de texto preferido
editor.please_pick_executable=Por favor, elija una aplicación ejecutable para editar los scripts.
editor.could_not_launch=No se pudo iniciar el editor.
newscript.noname=Por favor, proporcione un nombre para su script.
-newscript.nonamespace=Sírvase proporcionar una URI válida para su script.\n (por ejemplo, "http://userscripts.org/users/useridnumber")
+newscript.nonamespace=Sírvase proporcionar una URI válida para su script.n (por ejemplo, "http://userscripts.org/users/useridnumber")
newscript.exists=Un script con ese nombre ya está instalado.\n¿Aceptar para sobrescribir?
diff --git a/chrome/greasemonkey.jar!/locale/es-AR/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/es-AR/greasemonkey.dtd
index 361032d..22453ce 100644
--- a/chrome/greasemonkey.jar!/locale/es-AR/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/es-AR/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "Administrar Scripts...">
<!ENTITY menu.manage.accesskey "m">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "Activar">
<!ENTITY statusbar.enabled.accesskey "A">
<!ENTITY install.title "Instalación de Greasemonkey">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "Sólo debe instalar scripts que provengan de fuentes confiables.">
<!ENTITY install.showscriptsource "Mostrar código fuente del Script">
<!ENTITY install.installbutton "Instalar">
+<!ENTITY loading "Downloading ...">
<!ENTITY newscript.name "Nombre">
<!ENTITY newscript.namespace "Espacio de nombres">
<!ENTITY newscript.description "Descripción">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "Scripts">
<!ENTITY Uninstall "Desinstalar">
<!ENTITY AlsoUninstallPrefs "También desinstalar las preferencias asociadas">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Enable automatic update checking of scripts">
+<!ENTITY UpdateInterval "Minimum number of days between update checks">
+<!ENTITY RequireSecureUpdates "Require secure updates">
<!ENTITY greasemonkey.noscriptshere "No installed scripts run on this page.">
<!ENTITY greasemonkey.youhavenoscripts "You don't have any user scripts installed">
<!ENTITY greasemonkey.getuserscripts "Get user scripts">
diff --git a/chrome/greasemonkey.jar!/locale/es-AR/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/es-AR/greasemonkey.properties
index 0fd309f..b1d3613 100644
--- a/chrome/greasemonkey.jar!/locale/es-AR/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/es-AR/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=Un administrador de Scripts para Firefox
-error.matchPattern.parse=@match: Could not parse the pattern.
-error.matchPattern.scheme=@match: Invalid scheme specified.
+error.downloadingUrl=Error downloading URL:
error.matchPattern.host=@match: Invalid host specified.
+error.matchPattern.parse=@match: Could not parse the pattern.
error.matchPattern.path=@match: Invalid path specified.
+error.matchPattern.scheme=@match: Invalid scheme specified.
+error.parsingScript=Could not parse script:
+error.serverReturned=Server returned
+error.unknown=Unknown error.
diff --git a/chrome/greasemonkey.jar!/locale/es-ES/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/es-ES/gm-addons.dtd
index 1cad5c2..ddcfb8d 100644
--- a/chrome/greasemonkey.jar!/locale/es-ES/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/es-ES/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "editar">
<!ENTITY Edit.accesskey "E">
<!ENTITY Edit.tooltip "Edit this User Script">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "ejecutar al final">
<!ENTITY ExecuteLater "ejecutar despues">
<!ENTITY ExecuteSooner "ejecutar pronto">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "mover hacia abajo">
<!ENTITY MoveDown.accesskey "D">
<!ENTITY MoveToBottom "mover el boton">
diff --git a/chrome/greasemonkey.jar!/locale/es-ES/gm-browser.properties b/chrome/greasemonkey.jar!/locale/es-ES/gm-browser.properties
index 81d47ad..7ff5c8a 100644
--- a/chrome/greasemonkey.jar!/locale/es-ES/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/es-ES/gm-browser.properties
@@ -17,5 +17,5 @@ editor.prompt=Please choose your preferred text editor first
editor.please_pick_executable=Please pick an executable application to use to edit user scripts.
editor.could_not_launch=Could not launch editor.
newscript.noname=Please provide a name for your script.
-newscript.nonamespace=Please provide a valid namespace URI for your script.\n(e.g. "http://userscripts.org/users/useridnumber")
+newscript.nonamespace=Please provide a valid namespace URI for your script.n(e.g. "http://userscripts.org/users/useridnumber")
newscript.exists=A script with that name is already installed.\nOK to overwrite?
diff --git a/chrome/greasemonkey.jar!/locale/es-ES/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/es-ES/greasemonkey.dtd
index 6a60d07..4743f11 100644
--- a/chrome/greasemonkey.jar!/locale/es-ES/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/es-ES/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "Manage User Scripts...">
<!ENTITY menu.manage.accesskey "M">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "Enabled">
<!ENTITY statusbar.enabled.accesskey "E">
<!ENTITY install.title "Greasemonkey Installation">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "You should only install scripts from sources that you trust.">
<!ENTITY install.showscriptsource "Show Script Source">
<!ENTITY install.installbutton "Install">
+<!ENTITY loading "Downloading ...">
<!ENTITY newscript.name "Name">
<!ENTITY newscript.namespace "Namespace">
<!ENTITY newscript.description "Description">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "User Scripts">
<!ENTITY Uninstall "Uninstall">
<!ENTITY AlsoUninstallPrefs "Also uninstall associated preferences">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Enable automatic update checking of scripts">
+<!ENTITY UpdateInterval "Minimum number of days between update checks">
+<!ENTITY RequireSecureUpdates "Require secure updates">
<!ENTITY greasemonkey.noscriptshere "No installed scripts run on this page.">
<!ENTITY greasemonkey.youhavenoscripts "You don't have any user scripts installed">
<!ENTITY greasemonkey.getuserscripts "Get user scripts">
diff --git a/chrome/greasemonkey.jar!/locale/es-ES/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/es-ES/greasemonkey.properties
index 281ef1b..51f3e82 100644
--- a/chrome/greasemonkey.jar!/locale/es-ES/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/es-ES/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=A User Script Manager for Firefox
-error.matchPattern.parse=@match: Could not parse the pattern.
-error.matchPattern.scheme=@match: Invalid scheme specified.
+error.downloadingUrl=Error downloading URL:
error.matchPattern.host=@match: Invalid host specified.
+error.matchPattern.parse=@match: Could not parse the pattern.
error.matchPattern.path=@match: Invalid path specified.
+error.matchPattern.scheme=@match: Invalid scheme specified.
+error.parsingScript=Could not parse script:
+error.serverReturned=Server returned
+error.unknown=Unknown error.
diff --git a/chrome/greasemonkey.jar!/locale/es-MX/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/es-MX/gm-addons.dtd
index 475f19b..4e01d8a 100644
--- a/chrome/greasemonkey.jar!/locale/es-MX/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/es-MX/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "Editar">
<!ENTITY Edit.accesskey "E">
<!ENTITY Edit.tooltip "Editar">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Ejecutar al final">
<!ENTITY ExecuteLater "Ejecutar después">
<!ENTITY ExecuteSooner "Ejecutar pronto">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "Mover hacia abajo">
<!ENTITY MoveDown.accesskey "D">
<!ENTITY MoveToBottom "Mover al final">
diff --git a/chrome/greasemonkey.jar!/locale/es-MX/gm-browser.properties b/chrome/greasemonkey.jar!/locale/es-MX/gm-browser.properties
index f3184be..3eeb319 100644
--- a/chrome/greasemonkey.jar!/locale/es-MX/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/es-MX/gm-browser.properties
@@ -17,5 +17,5 @@ editor.prompt=Por favor primero seleciona tu editor de texto preferido
editor.please_pick_executable=Elija una aplicación ejecutable para editar los scripts.
editor.could_not_launch=No se pudo cargar el Editor.
newscript.noname=Dale nombre a tu Script.
-newscript.nonamespace=Da una URI válida para tu Script.\n(e.g. "http://userscripts.org/users/useridnumber")
+newscript.nonamespace=Da una URI válida para tu Script.n(e.g. "http://userscripts.org/users/useridnumber")
newscript.exists=Existe un Script con el mismo nombre .\n¿Reemplazarlo?
diff --git a/chrome/greasemonkey.jar!/locale/es-MX/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/es-MX/greasemonkey.dtd
index 746cc56..6c0a429 100644
--- a/chrome/greasemonkey.jar!/locale/es-MX/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/es-MX/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "Gestor de Scripts">
<!ENTITY menu.manage.accesskey "M">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "Activado">
<!ENTITY statusbar.enabled.accesskey "E">
<!ENTITY install.title "Instalación de Greasemonkey">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "Sólo debes instalar Scripts de fuentes confiables.">
<!ENTITY install.showscriptsource "Mostrar Código del Script">
<!ENTITY install.installbutton "Instalar">
+<!ENTITY loading "Downloading ...">
<!ENTITY newscript.name "Nombre">
<!ENTITY newscript.namespace "Espacio de nombres">
<!ENTITY newscript.description "Descripción">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "Scripts">
<!ENTITY Uninstall "Desinstalar">
<!ENTITY AlsoUninstallPrefs "También desinstalar preferencias asociadas">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Enable automatic update checking of scripts">
+<!ENTITY UpdateInterval "Minimum number of days between update checks">
+<!ENTITY RequireSecureUpdates "Require secure updates">
<!ENTITY greasemonkey.noscriptshere "No installed scripts run on this page.">
<!ENTITY greasemonkey.youhavenoscripts "You don't have any user scripts installed">
<!ENTITY greasemonkey.getuserscripts "Get user scripts">
diff --git a/chrome/greasemonkey.jar!/locale/es-MX/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/es-MX/greasemonkey.properties
index 5cf93e8..8d45eaf 100644
--- a/chrome/greasemonkey.jar!/locale/es-MX/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/es-MX/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=Un gestor de scripts de usuario para Firefox
-error.matchPattern.parse=@match: Could not parse the pattern.
-error.matchPattern.scheme=@match: Invalid scheme specified.
+error.downloadingUrl=Error downloading URL:
error.matchPattern.host=@match: Invalid host specified.
+error.matchPattern.parse=@match: Could not parse the pattern.
error.matchPattern.path=@match: Invalid path specified.
+error.matchPattern.scheme=@match: Invalid scheme specified.
+error.parsingScript=Could not parse script:
+error.serverReturned=Server returned
+error.unknown=Unknown error.
diff --git a/chrome/greasemonkey.jar!/locale/es/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/es/gm-addons.dtd
index 69359fa..d8e9881 100644
--- a/chrome/greasemonkey.jar!/locale/es/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/es/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "Editar">
<!ENTITY Edit.accesskey "E">
<!ENTITY Edit.tooltip "Editar este Script de Usuario">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Ejecutar al ultimo">
<!ENTITY ExecuteLater "Ejecutar luego">
<!ENTITY ExecuteSooner "Ejecutar pronto">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "Mover abajo">
<!ENTITY MoveDown.accesskey "M">
<!ENTITY MoveToBottom "Mover al Final">
diff --git a/chrome/greasemonkey.jar!/locale/es/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/es/greasemonkey.dtd
index 880ccd9..9a4242c 100644
--- a/chrome/greasemonkey.jar!/locale/es/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/es/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "Administrar Script de Usuario">
<!ENTITY menu.manage.accesskey "S">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "Activado">
<!ENTITY statusbar.enabled.accesskey "A">
<!ENTITY install.title "Instalación de Greasemonkey">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "Debería instalar scripts solo de fuentes en las que confíe.">
<!ENTITY install.showscriptsource "Mostrar Fuente de Script">
<!ENTITY install.installbutton "Instalar">
+<!ENTITY loading "Downloading ...">
<!ENTITY newscript.name "Nombre">
<!ENTITY newscript.namespace "Espacio de Nombres">
<!ENTITY newscript.description "Descripción">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "Script de Usuario(secuencia de comandos)">
<!ENTITY Uninstall "Desinstalar">
<!ENTITY AlsoUninstallPrefs "También desinstalar preferencias asociadas">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Enable automatic update checking of scripts">
+<!ENTITY UpdateInterval "Minimum number of days between update checks">
+<!ENTITY RequireSecureUpdates "Require secure updates">
<!ENTITY greasemonkey.noscriptshere "No installed scripts run on this page.">
<!ENTITY greasemonkey.youhavenoscripts "You don't have any user scripts installed">
<!ENTITY greasemonkey.getuserscripts "Get user scripts">
diff --git a/chrome/greasemonkey.jar!/locale/es/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/es/greasemonkey.properties
index e789e36..44f6bd1 100644
--- a/chrome/greasemonkey.jar!/locale/es/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/es/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=Un Administrador de Scripts(secuencia de comandos) para Firefox
-error.matchPattern.parse=@match: Could not parse the pattern.
-error.matchPattern.scheme=@match: Invalid scheme specified.
+error.downloadingUrl=Error downloading URL:
error.matchPattern.host=@match: Invalid host specified.
+error.matchPattern.parse=@match: Could not parse the pattern.
error.matchPattern.path=@match: Invalid path specified.
+error.matchPattern.scheme=@match: Invalid scheme specified.
+error.parsingScript=Could not parse script:
+error.serverReturned=Server returned
+error.unknown=Unknown error.
diff --git a/chrome/greasemonkey.jar!/locale/et-EE/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/et-EE/gm-addons.dtd
index 9690675..1c8339f 100644
--- a/chrome/greasemonkey.jar!/locale/et-EE/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/et-EE/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "Muuda">
<!ENTITY Edit.accesskey "E">
<!ENTITY Edit.tooltip "Muuda seda Kasutajaskripti">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Execute last">
<!ENTITY ExecuteLater "Execute later">
<!ENTITY ExecuteSooner "Execute sooner">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "Liiguta Allapoole">
<!ENTITY MoveDown.accesskey "D">
<!ENTITY MoveToBottom "Liiguta Viimaseks">
diff --git a/chrome/greasemonkey.jar!/locale/et-EE/gm-browser.properties b/chrome/greasemonkey.jar!/locale/et-EE/gm-browser.properties
index 79233ec..478bfe4 100644
--- a/chrome/greasemonkey.jar!/locale/et-EE/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/et-EE/gm-browser.properties
@@ -17,5 +17,5 @@ editor.prompt=Please choose your preferred text editor first
editor.please_pick_executable=Please pick an executable application to use to edit user scripts.
editor.could_not_launch=Could not launch editor.
newscript.noname=Please provide a name for your script.
-newscript.nonamespace=Please provide a valid namespace URI for your script.\n(e.g. "http://userscripts.org/users/useridnumber")
+newscript.nonamespace=Please provide a valid namespace URI for your script.n(e.g. "http://userscripts.org/users/useridnumber")
newscript.exists=A script with that name is already installed.\nOK to overwrite?
diff --git a/chrome/greasemonkey.jar!/locale/et-EE/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/et-EE/greasemonkey.dtd
index 6f22700..42cd062 100644
--- a/chrome/greasemonkey.jar!/locale/et-EE/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/et-EE/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "Halda Kasutajaskripte...">
<!ENTITY menu.manage.accesskey "M">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "Lubatud">
<!ENTITY statusbar.enabled.accesskey "E">
<!ENTITY install.title "Greasemonkey Paigaldamine">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "You should only install scripts from sources that you trust.">
<!ENTITY install.showscriptsource "Näita Skripti Lähtekoodi">
<!ENTITY install.installbutton "Paigalda">
+<!ENTITY loading "Downloading ...">
<!ENTITY newscript.name "Nimi">
<!ENTITY newscript.namespace "Namespace">
<!ENTITY newscript.description "Tutvustus">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "Kasutajaskriptid">
<!ENTITY Uninstall "Eemalda">
<!ENTITY AlsoUninstallPrefs "Also uninstall associated preferences">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Enable automatic update checking of scripts">
+<!ENTITY UpdateInterval "Minimum number of days between update checks">
+<!ENTITY RequireSecureUpdates "Require secure updates">
<!ENTITY greasemonkey.noscriptshere "No installed scripts run on this page.">
<!ENTITY greasemonkey.youhavenoscripts "You don't have any user scripts installed">
<!ENTITY greasemonkey.getuserscripts "Get user scripts">
diff --git a/chrome/greasemonkey.jar!/locale/et-EE/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/et-EE/greasemonkey.properties
index cc3edcd..9da8693 100644
--- a/chrome/greasemonkey.jar!/locale/et-EE/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/et-EE/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=Kasutaja Skriptihaldur Firefoxile
-error.matchPattern.parse=@match: Could not parse the pattern.
-error.matchPattern.scheme=@match: Invalid scheme specified.
+error.downloadingUrl=Error downloading URL:
error.matchPattern.host=@match: Invalid host specified.
+error.matchPattern.parse=@match: Could not parse the pattern.
error.matchPattern.path=@match: Invalid path specified.
+error.matchPattern.scheme=@match: Invalid scheme specified.
+error.parsingScript=Could not parse script:
+error.serverReturned=Server returned
+error.unknown=Unknown error.
diff --git a/chrome/greasemonkey.jar!/locale/fa-IR/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/fa-IR/gm-addons.dtd
index 9ff07f2..2f28938 100644
--- a/chrome/greasemonkey.jar!/locale/fa-IR/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/fa-IR/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "ویرایش">
<!ENTITY Edit.accesskey ",">
<!ENTITY Edit.tooltip "ویرایش این دستنویس کاربری">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "اجرای آخرین">
<!ENTITY ExecuteLater "دیرتر اجرا شود">
<!ENTITY ExecuteSooner "زود تر اجرا شود">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "حرکت به پایین">
<!ENTITY MoveDown.accesskey "ح">
<!ENTITY MoveToBottom "حرکت به انتها">
diff --git a/chrome/greasemonkey.jar!/locale/fa-IR/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/fa-IR/greasemonkey.dtd
index 8a85600..9f3882e 100644
--- a/chrome/greasemonkey.jar!/locale/fa-IR/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/fa-IR/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "ج">
<!ENTITY menu.manage "مدیریت دستنویس های کاربری...">
<!ENTITY menu.manage.accesskey "م">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "فعال">
<!ENTITY statusbar.enabled.accesskey "ع">
<!ENTITY install.title "فرآیند نصب گریسمانکی">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "شما می بایست فقط دستنویس هایی را نصب کنید که از منابع آنها مطمئن هستید.">
<!ENTITY install.showscriptsource "نمایش متن دستنویس کاربری">
<!ENTITY install.installbutton "نصب">
+<!ENTITY loading "Downloading ...">
<!ENTITY newscript.name "نام">
<!ENTITY newscript.namespace "فضای نام">
<!ENTITY newscript.description "شرح">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "دستنویس های کاربری">
<!ENTITY Uninstall "عزل">
<!ENTITY AlsoUninstallPrefs "همچنین حذف تنظیمات وابسته">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Enable automatic update checking of scripts">
+<!ENTITY UpdateInterval "Minimum number of days between update checks">
+<!ENTITY RequireSecureUpdates "Require secure updates">
<!ENTITY greasemonkey.noscriptshere "دستنویس ای که در این صفحه اجرا شود موجود نیست.">
<!ENTITY greasemonkey.youhavenoscripts "شما هیچ دستنویس نسب شده ای ندارید">
<!ENTITY greasemonkey.getuserscripts "دریافت دستنویس های کاربری">
diff --git a/chrome/greasemonkey.jar!/locale/fa-IR/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/fa-IR/greasemonkey.properties
index 8fb646d..e60967b 100644
--- a/chrome/greasemonkey.jar!/locale/fa-IR/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/fa-IR/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=یک مدیر دستنویس کاربری برای روباه آتشین
-error.matchPattern.parse=@تطابق: الگو قابل اجرا نیست.
-error.matchPattern.scheme=@تطابق: طرحی نامعتبر مشخص شده.
+error.downloadingUrl=Error downloading URL:
error.matchPattern.host=@تطابق: میزبانی نامعتبر مشخص شده.
+error.matchPattern.parse=@تطابق: الگو قابل اجرا نیست.
error.matchPattern.path=@تطابق: مسیری نامعتبر انتخاب شده.
+error.matchPattern.scheme=@تطابق: طرحی نامعتبر مشخص شده.
+error.parsingScript=Could not parse script:
+error.serverReturned=Server returned
+error.unknown=Unknown error.
diff --git a/chrome/greasemonkey.jar!/locale/fi-FI/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/fi-FI/gm-addons.dtd
index 481c244..f2d6d7e 100644
--- a/chrome/greasemonkey.jar!/locale/fi-FI/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/fi-FI/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "Muokkaa">
<!ENTITY Edit.accesskey "M">
<!ENTITY Edit.tooltip "Muokkaa tätä skriptiä">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Suorita viimeisenä">
<!ENTITY ExecuteLater "Suorita myöhemmin">
<!ENTITY ExecuteSooner "Suorita aiemmin">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "Siirrä alaspäin">
<!ENTITY MoveDown.accesskey "A">
<!ENTITY MoveToBottom "Siirrä loppuun">
diff --git a/chrome/greasemonkey.jar!/locale/fi-FI/gm-browser.properties b/chrome/greasemonkey.jar!/locale/fi-FI/gm-browser.properties
index bd87a2a..5a6ff39 100644
--- a/chrome/greasemonkey.jar!/locale/fi-FI/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/fi-FI/gm-browser.properties
@@ -17,5 +17,5 @@ editor.prompt=Valitse ensin haluamasi tekstieditori
editor.please_pick_executable=Valitse ohjelma jota haluat käyttää skriptien muokkaamiseen.
editor.could_not_launch=Tekstieditorin käynnistys epäonnistui.
newscript.noname=Anna skriptillesi nimi.
-newscript.nonamespace=Anna skriptillesi kelvollinen nimiavaruus-URI.\n(esim. "http://userscripts.org/users/<käyttäjänumero>")
+newscript.nonamespace=Anna skriptillesi kelvollinen nimiavaruus-URI.n(esim. "http://userscripts.org/users/<käyttäjänumero>")
newscript.exists=Samanniminen skripti on jo asennettuna.\nKorvataanko?
diff --git a/chrome/greasemonkey.jar!/locale/fi-FI/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/fi-FI/greasemonkey.dtd
index 9bd2824..908a885 100644
--- a/chrome/greasemonkey.jar!/locale/fi-FI/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/fi-FI/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "U">
<!ENTITY menu.manage "Hallinnoi skriptejä...">
<!ENTITY menu.manage.accesskey "H">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "Käytössä">
<!ENTITY statusbar.enabled.accesskey "K">
<!ENTITY install.title "Greasemonkey-asennus">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "Asenna skriptejä vain luetetuista lähteistä.">
<!ENTITY install.showscriptsource "Näytä skriptin lähdekoodi">
<!ENTITY install.installbutton "Asenna">
+<!ENTITY loading "Downloading ...">
<!ENTITY newscript.name "Nimi">
<!ENTITY newscript.namespace "Nimiavaruus">
<!ENTITY newscript.description "Kuvaus">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "Skriptit">
<!ENTITY Uninstall "Poisto">
<!ENTITY AlsoUninstallPrefs "Poista myös skriptin asetukset">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Enable automatic update checking of scripts">
+<!ENTITY UpdateInterval "Minimum number of days between update checks">
+<!ENTITY RequireSecureUpdates "Require secure updates">
<!ENTITY greasemonkey.noscriptshere "Mitään skripteistä ei ajeta tällä sivulla.">
<!ENTITY greasemonkey.youhavenoscripts "Sinulla ei ole yhtään skriptiä asennettuna">
<!ENTITY greasemonkey.getuserscripts "Hanki skriptejä">
diff --git a/chrome/greasemonkey.jar!/locale/fi-FI/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/fi-FI/greasemonkey.properties
index eae5576..026ca83 100644
--- a/chrome/greasemonkey.jar!/locale/fi-FI/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/fi-FI/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=Työkalu omien skriptien ajamiseen Firefoxissa
-error.matchPattern.parse=@match: Kaavaimen tulkinta epäonnistui.
-error.matchPattern.scheme=@match: Palvelinprotokolla ei kelpaa.
+error.downloadingUrl=Error downloading URL:
error.matchPattern.host=@match: Palvelimen nimi ei kelpaa.
+error.matchPattern.parse=@match: Kaavaimen tulkinta epäonnistui.
error.matchPattern.path=@match: Palvelinpolku ei kelpaa.
+error.matchPattern.scheme=@match: Palvelinprotokolla ei kelpaa.
+error.parsingScript=Could not parse script:
+error.serverReturned=Server returned
+error.unknown=Unknown error.
diff --git a/chrome/greasemonkey.jar!/locale/fr/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/fr/gm-addons.dtd
index ee807e9..1411966 100644
--- a/chrome/greasemonkey.jar!/locale/fr/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/fr/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "Modifier">
<!ENTITY Edit.accesskey "E">
<!ENTITY Edit.tooltip "Modifier ce Script Utilisateur">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Exécuter en dernier">
<!ENTITY ExecuteLater "Exécuter plus tard">
<!ENTITY ExecuteSooner "Exécuter plus tôt">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "Descendre">
<!ENTITY MoveDown.accesskey "D">
<!ENTITY MoveToBottom "Descendre tout en bas">
diff --git a/chrome/greasemonkey.jar!/locale/fr/gm-browser.properties b/chrome/greasemonkey.jar!/locale/fr/gm-browser.properties
index b917ca2..3520b7d 100644
--- a/chrome/greasemonkey.jar!/locale/fr/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/fr/gm-browser.properties
@@ -17,5 +17,5 @@ editor.prompt=Veuillez d'abord choisir votre éditeur de texte préféré
editor.please_pick_executable=Veuillez choisir l'application exécutable à utiliser pour modifier les scripts utilisateur.
editor.could_not_launch=Lancement de l'éditeur impossible.
newscript.noname=Veuillez donner un nom à votre script.
-newscript.nonamespace=Veuillez fournir un espace de nom URI valide pour votre script.\n(par exemple. "http://userscripts.org/users/useridnumber")
+newscript.nonamespace=Veuillez fournir un espace de nom URI valide pour votre script.n(par exemple. "http://userscripts.org/users/useridnumber")
newscript.exists=Un script avec ce nom est déjà installé.\nL'écraser?
diff --git a/chrome/greasemonkey.jar!/locale/fr/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/fr/greasemonkey.dtd
index 57ef4d9..e7e7bd3 100644
--- a/chrome/greasemonkey.jar!/locale/fr/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/fr/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "Gérer les Scripts Utilisateur">
<!ENTITY menu.manage.accesskey "M">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "Activé">
<!ENTITY statusbar.enabled.accesskey "E">
<!ENTITY install.title "Installation de Greasemonkey">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "N'installez que des scripts à partir de sources dont vous avez confiance.">
<!ENTITY install.showscriptsource "Afficher la Source du Script">
<!ENTITY install.installbutton "Installer">
+<!ENTITY loading "Downloading ...">
<!ENTITY newscript.name "Nom">
<!ENTITY newscript.namespace "Espace de nom">
<!ENTITY newscript.description "Description">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "Scripts Utilisateur">
<!ENTITY Uninstall "Désinstaller">
<!ENTITY AlsoUninstallPrefs "Désinstalle également les préférences associées">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Enable automatic update checking of scripts">
+<!ENTITY UpdateInterval "Minimum number of days between update checks">
+<!ENTITY RequireSecureUpdates "Require secure updates">
<!ENTITY greasemonkey.noscriptshere "Aucun script installé n'est exécuté sur cette page.">
<!ENTITY greasemonkey.youhavenoscripts "Vous avez aucun scripts d'installé">
<!ENTITY greasemonkey.getuserscripts "Obtenir des scripts utilisateur">
diff --git a/chrome/greasemonkey.jar!/locale/fr/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/fr/greasemonkey.properties
index 01404dd..3cc5f57 100644
--- a/chrome/greasemonkey.jar!/locale/fr/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/fr/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=Un gestionnaire de script utilisateur pour Firefox
-error.matchPattern.parse=@match: Could not parse the pattern.
-error.matchPattern.scheme=@match: Invalid scheme specified.
+error.downloadingUrl=Error downloading URL:
error.matchPattern.host=@match: Invalid host specified.
+error.matchPattern.parse=@match: Could not parse the pattern.
error.matchPattern.path=@match: Invalid path specified.
+error.matchPattern.scheme=@match: Invalid scheme specified.
+error.parsingScript=Could not parse script:
+error.serverReturned=Server returned
+error.unknown=Unknown error.
diff --git a/chrome/greasemonkey.jar!/locale/gl-ES/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/gl-ES/gm-addons.dtd
index a0bab82..e401e13 100644
--- a/chrome/greasemonkey.jar!/locale/gl-ES/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/gl-ES/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Buscar actualizacións automaticamente">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "Editar">
<!ENTITY Edit.accesskey "E">
<!ENTITY Edit.tooltip "Editar este script">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Executar último">
<!ENTITY ExecuteLater "Executar máis tarde">
<!ENTITY ExecuteSooner "Executar antes">
+<!ENTITY FindUpdate "Buscar actualizacións">
+<!ENTITY InstallUpdate "Instalar actualizacións">
<!ENTITY MoveDown "Mover abaixo">
<!ENTITY MoveDown.accesskey "D">
<!ENTITY MoveToBottom "Mover ao fondo">
diff --git a/chrome/greasemonkey.jar!/locale/gl-ES/gm-browser.properties b/chrome/greasemonkey.jar!/locale/gl-ES/gm-browser.properties
index c4a9a36..84cf404 100644
--- a/chrome/greasemonkey.jar!/locale/gl-ES/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/gl-ES/gm-browser.properties
@@ -17,5 +17,5 @@ editor.prompt=Escolla primeiro o editor de texto que prefira
editor.please_pick_executable=Seleccione o executable do aplicativo que desexa para editar os scripts.
editor.could_not_launch=Non foi posible iniciar o editor.
newscript.noname=Introduza un nome para o script.
-newscript.nonamespace=Introduza un URI de espazo de nome válido para o script.\n(p.e. "http://userscripts.org/users/useridnumber")
-newscript.exists=Xa hai instalado un script con ese nome\nDesexa sobrescribilo?
+newscript.nonamespace=Introduza un URI de espazo de nome válido para o script.n(p.e. "http://userscripts.org/users/useridnumber")
+newscript.exists=Xa hai instalado un script con ese nomenDesexa sobrescribilo?
diff --git a/chrome/greasemonkey.jar!/locale/gl-ES/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/gl-ES/greasemonkey.dtd
index 82c477f..2434032 100644
--- a/chrome/greasemonkey.jar!/locale/gl-ES/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/gl-ES/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "Xestionar os scripts...">
<!ENTITY menu.manage.accesskey "M">
+<!ENTITY menu.options "Opcións do Greasemonkey...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "Activado">
<!ENTITY statusbar.enabled.accesskey "E">
<!ENTITY install.title "Instalación do Greasemonkey">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "Debería instalar scripts unicamente de fontes nas que confíe.">
<!ENTITY install.showscriptsource "Mostrar o código fonte">
<!ENTITY install.installbutton "Instalar">
+<!ENTITY loading "Descargando...">
<!ENTITY newscript.name "Nome">
<!ENTITY newscript.namespace "Espazo do nome">
<!ENTITY newscript.description "Descrición">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "Scripts">
<!ENTITY Uninstall "Desinstalar">
<!ENTITY AlsoUninstallPrefs "Tamén desinstalar as preferencias asociadas">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Activar a comprobación automática de actualización de scripts">
+<!ENTITY UpdateInterval "Número mínimo de días entre comprobación de actualizacións">
+<!ENTITY RequireSecureUpdates "Requerir actualizacións de seguranza">
<!ENTITY greasemonkey.noscriptshere "Ningún script instalado en execución.">
<!ENTITY greasemonkey.youhavenoscripts "Non ten scripts de usuario instalados">
<!ENTITY greasemonkey.getuserscripts "Obter scripts">
diff --git a/chrome/greasemonkey.jar!/locale/gl-ES/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/gl-ES/greasemonkey.properties
index 07d55ee..46584a4 100644
--- a/chrome/greasemonkey.jar!/locale/gl-ES/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/gl-ES/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=Un xestor de scripts de usuario para o Firefox
-error.matchPattern.parse=@match: non foi posible analizar o patrón.
-error.matchPattern.scheme=@match: o esquema indicado é incorrecto.
+error.downloadingUrl=Produciuse un erro descargando URL:
error.matchPattern.host=@match: o servidor indicado é incorrecto.
+error.matchPattern.parse=@match: non foi posible analizar o patrón.
error.matchPattern.path=@match: a ruta indicada é incorrecta.
+error.matchPattern.scheme=@match: o esquema indicado é incorrecto.
+error.parsingScript=Non foi posíbel procesar o script:
+error.serverReturned=Servidor devolto
+error.unknown=Erro descoñecido.
diff --git a/chrome/greasemonkey.jar!/locale/he-IL/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/he-IL/gm-addons.dtd
index d85e800..b96df89 100644
--- a/chrome/greasemonkey.jar!/locale/he-IL/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/he-IL/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "עריכה">
<!ENTITY Edit.accesskey "ע">
<!ENTITY Edit.tooltip "ערוך סקריפט זה">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "בצע בסוף">
<!ENTITY ExecuteLater "בצע מאוחר יותר">
<!ENTITY ExecuteSooner "בצע מוקדם יותר">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "הזז למטה">
<!ENTITY MoveDown.accesskey "ט">
<!ENTITY MoveToBottom "הזז לסוף הרשימה">
diff --git a/chrome/greasemonkey.jar!/locale/he-IL/gm-browser.properties b/chrome/greasemonkey.jar!/locale/he-IL/gm-browser.properties
index 90a71d8..8a87d3e 100644
--- a/chrome/greasemonkey.jar!/locale/he-IL/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/he-IL/gm-browser.properties
@@ -17,5 +17,5 @@ editor.prompt=נא בחר תחילה את עורך הטקסט המועדף על
editor.please_pick_executable=נא לבחור יישום בר-הפעלה לשימוש עריכת סקריפטים של משתמש
editor.could_not_launch=אין אפשרות להפעיל את העורך
newscript.noname=נא לבחור שם עבור הסקריפט שלך
-newscript.nonamespace=נא לבחור כתובת אינטרנט תקינה עבור הסקריפט שלך.\n(כגון: "http://userscripts.org/users/useridnumber")
+newscript.nonamespace=נא לבחור כתובת אינטרנט תקינה עבור הסקריפט שלך.n(כגון: "http://userscripts.org/users/useridnumber")
newscript.exists=סקריפט עם שם זה כבר מותקן.\nלהחליף אותו?
diff --git a/chrome/greasemonkey.jar!/locale/he-IL/gm-cludes.dtd b/chrome/greasemonkey.jar!/locale/he-IL/gm-cludes.dtd
index a2c1e4d..aaacf68 100644
--- a/chrome/greasemonkey.jar!/locale/he-IL/gm-cludes.dtd
+++ b/chrome/greasemonkey.jar!/locale/he-IL/gm-cludes.dtd
@@ -3,6 +3,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
">
<!ENTITY promptForNewPage.title "הוסף דף">
<!ENTITY promptForNewPage.defVal "http://example.com/*">
@@ -11,6 +53,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
">
<!ENTITY promptForEdit.title "ערוך דף">
<!ENTITY button.add "הוסף...">
diff --git a/chrome/greasemonkey.jar!/locale/he-IL/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/he-IL/greasemonkey.dtd
index 9b01f57..a51e4c7 100644
--- a/chrome/greasemonkey.jar!/locale/he-IL/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/he-IL/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "ח">
<!ENTITY menu.manage "ניהול סקריפטים של משתמש">
<!ENTITY menu.manage.accesskey "נ">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "הפעל">
<!ENTITY statusbar.enabled.accesskey "פ">
<!ENTITY install.title "התקנת גריזמונקי">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "עליך להתקין סקריפטים רק ממקורות שאתה נותן בהם אמון.">
<!ENTITY install.showscriptsource "הצג קוד מקור של הסקריפט">
<!ENTITY install.installbutton "התקן">
+<!ENTITY loading "Downloading ...">
<!ENTITY newscript.name "שם">
<!ENTITY newscript.namespace "מרחב">
<!ENTITY newscript.description "תיאור">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "סקריפטים של משתמש">
<!ENTITY Uninstall "הסר">
<!ENTITY AlsoUninstallPrefs "הסר גם את העדפות המשויכות לסקריפט משתמש זה">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Enable automatic update checking of scripts">
+<!ENTITY UpdateInterval "Minimum number of days between update checks">
+<!ENTITY RequireSecureUpdates "Require secure updates">
<!ENTITY greasemonkey.noscriptshere "לא קיימים סקריפטים מותקנים פעילים בדף זה.">
<!ENTITY greasemonkey.youhavenoscripts "לא מותקנים אצלך סקריפטים של משתמש">
<!ENTITY greasemonkey.getuserscripts "השג סקריפטים של משתמש">
diff --git a/chrome/greasemonkey.jar!/locale/he-IL/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/he-IL/greasemonkey.properties
index cf010e9..a0521f6 100644
--- a/chrome/greasemonkey.jar!/locale/he-IL/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/he-IL/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=מנהל סקריפטים של משתמש לפיירפוקס
-error.matchPattern.parse=@ התאמה: אין אפשרות לפצל את הדפוס.
-error.matchPattern.scheme=@ התאמה: תכנית שצויינה אינה תקינה.
+error.downloadingUrl=Error downloading URL:
error.matchPattern.host=@ התאמה: המארח שצויין אינו תקין.
+error.matchPattern.parse=@ התאמה: אין אפשרות לפצל את הדפוס.
error.matchPattern.path=@ התאמה: נתיב שצויין אינו תקין.
+error.matchPattern.scheme=@ התאמה: תכנית שצויינה אינה תקינה.
+error.parsingScript=Could not parse script:
+error.serverReturned=Server returned
+error.unknown=Unknown error.
diff --git a/chrome/greasemonkey.jar!/locale/hu/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/hu/gm-addons.dtd
index e040116..0d58867 100644
--- a/chrome/greasemonkey.jar!/locale/hu/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/hu/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "Szerkesztés">
<!ENTITY Edit.accesskey "S">
<!ENTITY Edit.tooltip "Parancsfájl szerkesztése">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Végrehajtás utolsóként">
<!ENTITY ExecuteLater "Végrehajtás később">
<!ENTITY ExecuteSooner "Végrehajtás előbb">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "Mozgatás lefele">
<!ENTITY MoveDown.accesskey "l">
<!ENTITY MoveToBottom "Mozgatás legalulra">
diff --git a/chrome/greasemonkey.jar!/locale/hu/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/hu/greasemonkey.dtd
index bd56252..7409f94 100644
--- a/chrome/greasemonkey.jar!/locale/hu/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/hu/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "p">
<!ENTITY menu.manage "Parancsfájlok kezelése...">
<!ENTITY menu.manage.accesskey "k">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "Engedélyezve">
<!ENTITY statusbar.enabled.accesskey "E">
<!ENTITY install.title "Greasemonkey telepítés">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "Csak megbízható forrásból telepítsen parancsfájlt!">
<!ENTITY install.showscriptsource "Parancsfájl forrásának megtekintése">
<!ENTITY install.installbutton "Telepítés">
+<!ENTITY loading "Downloading ...">
<!ENTITY newscript.name "Név">
<!ENTITY newscript.namespace "Névtér">
<!ENTITY newscript.description "Leírás">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "Parancsfájlok">
<!ENTITY Uninstall "Eltávolítás">
<!ENTITY AlsoUninstallPrefs "Hozzákapcsolódó beállítások eltávolítása">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Enable automatic update checking of scripts">
+<!ENTITY UpdateInterval "Minimum number of days between update checks">
+<!ENTITY RequireSecureUpdates "Require secure updates">
<!ENTITY greasemonkey.noscriptshere "Ezen az oldalon nem futnak telepített parancsfájlok.">
<!ENTITY greasemonkey.youhavenoscripts "Nincsenek parancsfájlok telepítve">
<!ENTITY greasemonkey.getuserscripts "Töltsön le parancsfájlokat!">
diff --git a/chrome/greasemonkey.jar!/locale/hu/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/hu/greasemonkey.properties
index ec1b690..00a8f62 100644
--- a/chrome/greasemonkey.jar!/locale/hu/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/hu/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=Felhasználói parancsfájl kezelő a Firefoxhoz
-error.matchPattern.parse=@match: Could not parse the pattern.
-error.matchPattern.scheme=@match: Invalid scheme specified.
+error.downloadingUrl=Error downloading URL:
error.matchPattern.host=@match: Invalid host specified.
+error.matchPattern.parse=@match: Could not parse the pattern.
error.matchPattern.path=@match: Invalid path specified.
+error.matchPattern.scheme=@match: Invalid scheme specified.
+error.parsingScript=Could not parse script:
+error.serverReturned=Server returned
+error.unknown=Unknown error.
diff --git a/chrome/greasemonkey.jar!/locale/it-IT/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/it-IT/gm-addons.dtd
index d444a7d..de8a69b 100644
--- a/chrome/greasemonkey.jar!/locale/it-IT/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/it-IT/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "Edit">
<!ENTITY Edit.accesskey "E">
<!ENTITY Edit.tooltip "Edit this User Script">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Execute last">
<!ENTITY ExecuteLater "Execute later">
<!ENTITY ExecuteSooner "Execute sooner">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "Move Down">
<!ENTITY MoveDown.accesskey "D">
<!ENTITY MoveToBottom "Move To Bottom">
diff --git a/chrome/greasemonkey.jar!/locale/it-IT/gm-browser.properties b/chrome/greasemonkey.jar!/locale/it-IT/gm-browser.properties
index 5997e14..b847347 100644
--- a/chrome/greasemonkey.jar!/locale/it-IT/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/it-IT/gm-browser.properties
@@ -17,5 +17,5 @@ editor.prompt=Come prima operazione, selezionare l'editor testuale desiderato
editor.please_pick_executable=Selezionare un'applicazione eseguibile da utilizzare per la modifica degli script utente.
editor.could_not_launch=Impossibile avviare l'editor.
newscript.noname=Fornire un nome per lo script.
-newscript.nonamespace=Fornire un URI namespace valido per lo script.\n(es.: "http://userscripts.org/users/useridnumber")
+newscript.nonamespace=Fornire un URI namespace valido per lo script.n(es.: "http://userscripts.org/users/useridnumber")
newscript.exists=Uno script con quel nome è già installato.\nSovrasciverlo?
diff --git a/chrome/greasemonkey.jar!/locale/it-IT/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/it-IT/greasemonkey.dtd
index 9d868ae..55d9075 100644
--- a/chrome/greasemonkey.jar!/locale/it-IT/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/it-IT/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "Gestione script utente...">
<!ENTITY menu.manage.accesskey "G">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "Attivo">
<!ENTITY statusbar.enabled.accesskey "A">
<!ENTITY install.title "Installazione di Greasemonkey">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "Installare solo script provenienti da fonti sicure.">
<!ENTITY install.showscriptsource "Mostra sorgente script utente">
<!ENTITY install.installbutton "Installa">
+<!ENTITY loading "Downloading ...">
<!ENTITY newscript.name "Nome">
<!ENTITY newscript.namespace "Namespace">
<!ENTITY newscript.description "Descrizione">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "User Scripts">
<!ENTITY Uninstall "Disinstalla">
<!ENTITY AlsoUninstallPrefs "Disinstalla anche le preferenze associate">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Enable automatic update checking of scripts">
+<!ENTITY UpdateInterval "Minimum number of days between update checks">
+<!ENTITY RequireSecureUpdates "Require secure updates">
<!ENTITY greasemonkey.noscriptshere "No installed scripts run on this page.">
<!ENTITY greasemonkey.youhavenoscripts "You don't have any user scripts installed">
<!ENTITY greasemonkey.getuserscripts "Get user scripts">
diff --git a/chrome/greasemonkey.jar!/locale/it-IT/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/it-IT/greasemonkey.properties
index 5fd9cf8..e32d72d 100644
--- a/chrome/greasemonkey.jar!/locale/it-IT/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/it-IT/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=Un gestore di script utente per Firefox.
-error.matchPattern.parse=@match: Could not parse the pattern.
-error.matchPattern.scheme=@match: Invalid scheme specified.
+error.downloadingUrl=Error downloading URL:
error.matchPattern.host=@match: Invalid host specified.
+error.matchPattern.parse=@match: Could not parse the pattern.
error.matchPattern.path=@match: Invalid path specified.
+error.matchPattern.scheme=@match: Invalid scheme specified.
+error.parsingScript=Could not parse script:
+error.serverReturned=Server returned
+error.unknown=Unknown error.
diff --git a/chrome/greasemonkey.jar!/locale/ja-JP/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/ja-JP/gm-addons.dtd
index 63cd3e0..4f3ee69 100644
--- a/chrome/greasemonkey.jar!/locale/ja-JP/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/ja-JP/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "編集">
<!ENTITY Edit.accesskey "E">
<!ENTITY Edit.tooltip "このユーザスクリプトを編集します">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "最後に実行">
<!ENTITY ExecuteLater "後で実行">
<!ENTITY ExecuteSooner "先に実行">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "下へ移動">
<!ENTITY MoveDown.accesskey "D">
<!ENTITY MoveToBottom "最後へ移動">
diff --git a/chrome/greasemonkey.jar!/locale/ja-JP/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/ja-JP/greasemonkey.dtd
index cd0dba7..36e98ed 100644
--- a/chrome/greasemonkey.jar!/locale/ja-JP/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/ja-JP/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "ユーザスクリプトの管理...">
<!ENTITY menu.manage.accesskey "M">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "有効">
<!ENTITY statusbar.enabled.accesskey "E">
<!ENTITY install.title "Greasemonkey インストール">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "信頼できるソースからのみスクリプトをインストールすべきです。">
<!ENTITY install.showscriptsource "スクリプトのソースを表示">
<!ENTITY install.installbutton "インストール">
+<!ENTITY loading "ダウンロード中...">
<!ENTITY newscript.name "名前">
<!ENTITY newscript.namespace "名前空間">
<!ENTITY newscript.description "説明">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "ユーザスクリプト">
<!ENTITY Uninstall "削除">
<!ENTITY AlsoUninstallPrefs "関連付けられた設定も削除">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Enable automatic update checking of scripts">
+<!ENTITY UpdateInterval "Minimum number of days between update checks">
+<!ENTITY RequireSecureUpdates "Require secure updates">
<!ENTITY greasemonkey.noscriptshere "このページで実行するスクリプトはインストールされていません。">
<!ENTITY greasemonkey.youhavenoscripts "スクリプトが何もインストールされていません">
<!ENTITY greasemonkey.getuserscripts "スクリプトを入手">
diff --git a/chrome/greasemonkey.jar!/locale/ja-JP/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/ja-JP/greasemonkey.properties
index 85a7287..064ce64 100644
--- a/chrome/greasemonkey.jar!/locale/ja-JP/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/ja-JP/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=Firefox用のユーザスクリプトマネージャ
-error.matchPattern.parse=@match: パターンを解析できませんでした。
-error.matchPattern.scheme=@match: 無効なスキームが指定されました。
+error.downloadingUrl=エラーダウンロードURL:
error.matchPattern.host=@match: 無効なホストが指定されています。
+error.matchPattern.parse=@match: パターンを解析できませんでした。
error.matchPattern.path=@match: 無効なパスが指定されています。
+error.matchPattern.scheme=@match: 無効なスキームが指定されました。
+error.parsingScript=スクリプトを解析できません:
+error.serverReturned=サーバーの応答
+error.unknown=不明なエラー
diff --git a/chrome/greasemonkey.jar!/locale/ko-KR/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/ko-KR/gm-addons.dtd
index 5916a6f..fbb977d 100644
--- a/chrome/greasemonkey.jar!/locale/ko-KR/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/ko-KR/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "편집">
<!ENTITY Edit.accesskey "E">
<!ENTITY Edit.tooltip "이 유저 스크립트 편집">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "마지막에 실행">
<!ENTITY ExecuteLater "나중에 실행">
<!ENTITY ExecuteSooner "일찍 실행">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "아래로 이동">
<!ENTITY MoveDown.accesskey "D">
<!ENTITY MoveToBottom "맨 아래로 이동">
diff --git a/chrome/greasemonkey.jar!/locale/ko-KR/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/ko-KR/greasemonkey.dtd
index 79cc5c6..deb1417 100644
--- a/chrome/greasemonkey.jar!/locale/ko-KR/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/ko-KR/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "유저 스크립트 관리...">
<!ENTITY menu.manage.accesskey "M">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "활성화">
<!ENTITY statusbar.enabled.accesskey "E">
<!ENTITY install.title "그리스몽키 설치">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "믿을 수 있는 출처에서 나온 스크립트만 설치하셔야 합니다.">
<!ENTITY install.showscriptsource "스크립트 소스 보기">
<!ENTITY install.installbutton "설치">
+<!ENTITY loading "Downloading ...">
<!ENTITY newscript.name "이름">
<!ENTITY newscript.namespace "네임스페이스">
<!ENTITY newscript.description "설명">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "유저 스크립트">
<!ENTITY Uninstall "삭제">
<!ENTITY AlsoUninstallPrefs "관련된 환경 설정도 삭제">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Enable automatic update checking of scripts">
+<!ENTITY UpdateInterval "Minimum number of days between update checks">
+<!ENTITY RequireSecureUpdates "Require secure updates">
<!ENTITY greasemonkey.noscriptshere "No installed scripts run on this page.">
<!ENTITY greasemonkey.youhavenoscripts "You don't have any user scripts installed">
<!ENTITY greasemonkey.getuserscripts "Get user scripts">
diff --git a/chrome/greasemonkey.jar!/locale/ko-KR/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/ko-KR/greasemonkey.properties
index dabd7c9..b3f18f7 100644
--- a/chrome/greasemonkey.jar!/locale/ko-KR/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/ko-KR/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=Firefox를 위한 유저 스크립트 관리자
-error.matchPattern.parse=@match: Could not parse the pattern.
-error.matchPattern.scheme=@match: Invalid scheme specified.
+error.downloadingUrl=Error downloading URL:
error.matchPattern.host=@match: Invalid host specified.
+error.matchPattern.parse=@match: Could not parse the pattern.
error.matchPattern.path=@match: Invalid path specified.
+error.matchPattern.scheme=@match: Invalid scheme specified.
+error.parsingScript=Could not parse script:
+error.serverReturned=Server returned
+error.unknown=Unknown error.
diff --git a/chrome/greasemonkey.jar!/locale/nl/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/nl/gm-addons.dtd
index ff54805..632da48 100644
--- a/chrome/greasemonkey.jar!/locale/nl/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/nl/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "Bewerken">
<!ENTITY Edit.accesskey "W">
<!ENTITY Edit.tooltip "Dit gebruikersscript bewerken">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Als laatste uitvoeren">
<!ENTITY ExecuteLater "Later uitvoeren">
<!ENTITY ExecuteSooner "Eerder uitvoeren">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "Omlaag">
<!ENTITY MoveDown.accesskey "L">
<!ENTITY MoveToBottom "Onderaan plaatsen">
diff --git a/chrome/greasemonkey.jar!/locale/nl/gm-browser.properties b/chrome/greasemonkey.jar!/locale/nl/gm-browser.properties
index 1c4102e..1561544 100644
--- a/chrome/greasemonkey.jar!/locale/nl/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/nl/gm-browser.properties
@@ -17,5 +17,5 @@ editor.prompt=Kies eerst de tekstverwerker van uw voorkeur
editor.please_pick_executable=Kies een uitvoerbare toepassing die u wilt gebruiken om gebruikersscripts te bewerken.
editor.could_not_launch=Kan de tekstverwerker niet starten.
newscript.noname=Geef een naam op voor uw script.
-newscript.nonamespace=Geef een geldige namespace-URI voor uw script op.\n(b.v. “http://userscripts.org/users/useridnumber”)
+newscript.nonamespace=Geef een geldige namespace-URI voor uw script op.n(b.v. “http://userscripts.org/users/useridnumber”)
newscript.exists=Er is al een script met die naam geïnstalleerd.\nMag dit overschreven worden?
diff --git a/chrome/greasemonkey.jar!/locale/nl/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/nl/greasemonkey.dtd
index 545fb39..1810347 100644
--- a/chrome/greasemonkey.jar!/locale/nl/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/nl/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "Gebruikersscripts beheren…">
<!ENTITY menu.manage.accesskey "U">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "Ingeschakeld">
<!ENTITY statusbar.enabled.accesskey "I">
<!ENTITY install.title "Greasemonkey-installatie">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "Installeer alleen scripts van auteurs die u vertrouwt.">
<!ENTITY install.showscriptsource "Scriptbron weergeven">
<!ENTITY install.installbutton "Installeren">
+<!ENTITY loading "Downloaden…">
<!ENTITY newscript.name "Naam">
<!ENTITY newscript.namespace "Namespace">
<!ENTITY newscript.description "Beschrijving">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "Gebruikersscripts">
<!ENTITY Uninstall "Deïnstalleren">
<!ENTITY AlsoUninstallPrefs "Bijbehorende instellingen ook verwijderen">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Enable automatic update checking of scripts">
+<!ENTITY UpdateInterval "Minimum number of days between update checks">
+<!ENTITY RequireSecureUpdates "Require secure updates">
<!ENTITY greasemonkey.noscriptshere "Op deze pagina draaien geen geïnstalleerde scripts.">
<!ENTITY greasemonkey.youhavenoscripts "Er zijn geen gebruikersscripts geïnstalleerd">
<!ENTITY greasemonkey.getuserscripts "Verkrijg gebruikersscripts">
diff --git a/chrome/greasemonkey.jar!/locale/nl/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/nl/greasemonkey.properties
index 4f7cec1..5889bb3 100644
--- a/chrome/greasemonkey.jar!/locale/nl/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/nl/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=Een gebruikersscriptbeheerder voor Firefox
-error.matchPattern.parse=@match: Dit patroon kan niet gelezen worden.
-error.matchPattern.scheme=@match: Ongeldig schema opgegeven.
+error.downloadingUrl=Downloaden mislukt van URL:
error.matchPattern.host=@match: Ongeldige host opgegeven.
+error.matchPattern.parse=@match: Dit patroon kan niet gelezen worden.
error.matchPattern.path=@match: Ongeldig pad opgegeven.
+error.matchPattern.scheme=@match: Ongeldig schema opgegeven.
+error.parsingScript=Kon script niet verwerken:
+error.serverReturned=Server antwoordde
+error.unknown=Onbekende fout.
diff --git a/chrome/greasemonkey.jar!/locale/pl/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/pl/gm-addons.dtd
index 45813a6..74b9b75 100644
--- a/chrome/greasemonkey.jar!/locale/pl/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/pl/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatycznie sprawdzaj dostępność aktualizacji">
+<!ENTITY CheckUpdates.accesskey "T">
<!ENTITY Edit "Edytuj">
<!ENTITY Edit.accesskey "E">
<!ENTITY Edit.tooltip "Edytuj ten skrypt">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Wykonaj jako ostatni">
<!ENTITY ExecuteLater "Wykonaj później">
<!ENTITY ExecuteSooner "Wykonaj wcześniej">
+<!ENTITY FindUpdate "Znajdź aktualizację">
+<!ENTITY InstallUpdate "Zainstaluj aktualizację">
<!ENTITY MoveDown "Przenieś w dół">
<!ENTITY MoveDown.accesskey "P">
<!ENTITY MoveToBottom "Przenieś na dół">
diff --git a/chrome/greasemonkey.jar!/locale/pl/gm-browser.properties b/chrome/greasemonkey.jar!/locale/pl/gm-browser.properties
index 0bbc7e5..fbc6337 100644
--- a/chrome/greasemonkey.jar!/locale/pl/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/pl/gm-browser.properties
@@ -12,10 +12,10 @@ greeting.btnAccess=I
alert.fromURI=Pobieranie skryptu…
alert.fromURI.failure=Nie można pobrać skryptu
alert.success=Zainstalowano
-alert.failure=Wystąpił błąd podczas instalacji skryptu:\n
+alert.failure=Wystąpił błąd podczas instalacji skryptu:n
editor.prompt=Wybierz najpierw preferowany edytor tekstu
editor.please_pick_executable=Wskaż plik wykonywalny aplikacji używanej do edycji skryptów.
editor.could_not_launch=Nie można otworzyć edytora.
newscript.noname=Wprowadź nazwę skryptu.
-newscript.nonamespace=Wprowadź lokalizację skryptu.\n(Np. http://userscripts.org/users/useridnumber)
+newscript.nonamespace=Wprowadź lokalizację skryptu.n(Np. http://userscripts.org/users/useridnumber)
newscript.exists=Skrypt o takiej nazwie jest już zainstalowany.\nZastąpić skrypt?
diff --git a/chrome/greasemonkey.jar!/locale/pl/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/pl/greasemonkey.dtd
index 8f334be..66b39fd 100644
--- a/chrome/greasemonkey.jar!/locale/pl/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/pl/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "Zarządzaj skryptami…">
<!ENTITY menu.manage.accesskey "R">
+<!ENTITY menu.options "Greasemonkey – ustawienia…">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "Włącz">
<!ENTITY statusbar.enabled.accesskey "W">
<!ENTITY install.title "Instalacja skryptu">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "Należy instalować tylko skrypty pochodzące z zaufanych źródeł.">
<!ENTITY install.showscriptsource "Pokaż kod źródłowy skryptu">
<!ENTITY install.installbutton "Instaluj">
+<!ENTITY loading "Pobieranie…">
<!ENTITY newscript.name "Nazwa">
<!ENTITY newscript.namespace "Lokalizacja">
<!ENTITY newscript.description "Opis">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "Skrypty">
<!ENTITY Uninstall "Odinstaluj">
<!ENTITY AlsoUninstallPrefs "Odinstaluj również skojarzone ustawienia">
+<!ENTITY UpdateChecking "Sprawdzaj dostępność aktualizacji">
+<!ENTITY EnableUpdateChecking "Włącza automatyczne sprawdzanie dostępności aktualizacji skryptów">
+<!ENTITY UpdateInterval "Minimalna liczba dni pomiędzy kolejnymi sprawdzeniami">
+<!ENTITY RequireSecureUpdates "Wymaga bezpiecznych aktualizacji">
<!ENTITY greasemonkey.noscriptshere "Na tej stronie nie ma zainstalowanych skryptów do uruchomienia.">
<!ENTITY greasemonkey.youhavenoscripts "Nie masz zainstalowanych żadnych skryptów użytkownika">
<!ENTITY greasemonkey.getuserscripts "Pobierz skrypty">
diff --git a/chrome/greasemonkey.jar!/locale/pl/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/pl/greasemonkey.properties
index c040afd..e5e6f3a 100644
--- a/chrome/greasemonkey.jar!/locale/pl/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/pl/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=Menedżer skryptów użytkownika
-error.matchPattern.parse=@match: Nie można przetworzyć wzorca.
-error.matchPattern.scheme=@match: Określono nieprawidłowy schemat.
+error.downloadingUrl=Błąd pobierania:
error.matchPattern.host=@match: Określono nieprawidłowy host.
+error.matchPattern.parse=@match: Nie można przetworzyć wzorca.
error.matchPattern.path=@match: Określono nieprawidłową ścieżkę.
+error.matchPattern.scheme=@match: Określono nieprawidłowy schemat.
+error.parsingScript=Nie można przetworzyć skryptu:
+error.serverReturned=Zostało zwrócone przez serwer
+error.unknown=Nieznany błąd.
diff --git a/chrome/greasemonkey.jar!/locale/pt-BR/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/pt-BR/gm-addons.dtd
index 4ef9b0d..bd03daa 100644
--- a/chrome/greasemonkey.jar!/locale/pt-BR/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/pt-BR/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Verificar atualizações automaticamente">
+<!ENTITY CheckUpdates.accesskey "a">
<!ENTITY Edit "Editar">
<!ENTITY Edit.accesskey "E">
<!ENTITY Edit.tooltip "Editar este Script de Usuário">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Executar por último">
<!ENTITY ExecuteLater "Executar depois">
<!ENTITY ExecuteSooner "Executar antes">
+<!ENTITY FindUpdate "Procurar Atualização">
+<!ENTITY InstallUpdate "Instalar Atualização">
<!ENTITY MoveDown "Mover Para Baixo">
<!ENTITY MoveDown.accesskey "B">
<!ENTITY MoveToBottom "Mover Para o Fim">
diff --git a/chrome/greasemonkey.jar!/locale/pt-BR/gm-browser.properties b/chrome/greasemonkey.jar!/locale/pt-BR/gm-browser.properties
index 684ec21..c97d1d6 100644
--- a/chrome/greasemonkey.jar!/locale/pt-BR/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/pt-BR/gm-browser.properties
@@ -17,5 +17,5 @@ editor.prompt=Favor escolher seu editor de texto preferido primeiro
editor.please_pick_executable=Favor escolher um aplicativo executável para usar para editar scripts de usuário.
editor.could_not_launch=Não foi possível abrir o editor.
newscript.noname=Favor atribuir um nome ao seu script.
-newscript.nonamespace=Favor fornecer um namespace válido para seu script.\n(p. ex. "http://userscripts.org/users/useridnumber")
+newscript.nonamespace=Favor fornecer um namespace válido para seu script.n(p. ex. "http://userscripts.org/users/useridnumber")
newscript.exists=Um script com este nome já está instalado.\nSobrescrever?
diff --git a/chrome/greasemonkey.jar!/locale/pt-BR/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/pt-BR/greasemonkey.dtd
index 0581b7f..9c4e3e8 100644
--- a/chrome/greasemonkey.jar!/locale/pt-BR/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/pt-BR/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "Gerenciar Scripts de Usuário…">
<!ENTITY menu.manage.accesskey "G">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "Habilitado">
<!ENTITY statusbar.enabled.accesskey "H">
<!ENTITY install.title "Instalação do Greasemonkey">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "Você deve instalar somente scripts de fontes confiáveis.">
<!ENTITY install.showscriptsource "Mostrar Código-Fonte do Script">
<!ENTITY install.installbutton "Instalar">
+<!ENTITY loading "Baixando…">
<!ENTITY newscript.name "Nome">
<!ENTITY newscript.namespace "Namespace">
<!ENTITY newscript.description "Descrição">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "Scripts de Usuário">
<!ENTITY Uninstall "Desinstalar">
<!ENTITY AlsoUninstallPrefs "Desinstalar também configurações associadas">
+<!ENTITY UpdateChecking "Verificação de Atualizações">
+<!ENTITY EnableUpdateChecking "Habilitar verificação automática de atualizações dos scripts">
+<!ENTITY UpdateInterval "Número mínimo de dias entre verificações de atualização">
+<!ENTITY RequireSecureUpdates "Requisitar atualizações seguras">
<!ENTITY greasemonkey.noscriptshere "Nenhum script instalado será executado nessa página.">
<!ENTITY greasemonkey.youhavenoscripts "Você não possui nenhum script de usuário instalado">
<!ENTITY greasemonkey.getuserscripts "Obter scripts de usuário">
diff --git a/chrome/greasemonkey.jar!/locale/pt-BR/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/pt-BR/greasemonkey.properties
index 8ee04fa..2af04cf 100644
--- a/chrome/greasemonkey.jar!/locale/pt-BR/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/pt-BR/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=Um Gerenciador de Scripts de Usuário para o Firefox
-error.matchPattern.parse=@match: Não foi possível analisar o padrão.
-error.matchPattern.scheme=@match: Esquema especificado inválido.
+error.downloadingUrl=Erro ao baixar a URL:
error.matchPattern.host=@match: Host especificado inválido.
+error.matchPattern.parse=@match: Não foi possível analisar o padrão.
error.matchPattern.path=@match: Caminho especificado inválida.
+error.matchPattern.scheme=@match: Esquema especificado inválido.
+error.parsingScript=Não foi possível verificar o script:
+error.serverReturned=O servidor retornou
+error.unknown=Erro desconhecido.
diff --git a/chrome/greasemonkey.jar!/locale/ro-RO/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/ro-RO/gm-addons.dtd
index d444a7d..de8a69b 100644
--- a/chrome/greasemonkey.jar!/locale/ro-RO/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/ro-RO/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "Edit">
<!ENTITY Edit.accesskey "E">
<!ENTITY Edit.tooltip "Edit this User Script">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Execute last">
<!ENTITY ExecuteLater "Execute later">
<!ENTITY ExecuteSooner "Execute sooner">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "Move Down">
<!ENTITY MoveDown.accesskey "D">
<!ENTITY MoveToBottom "Move To Bottom">
diff --git a/chrome/greasemonkey.jar!/locale/ro-RO/gm-browser.properties b/chrome/greasemonkey.jar!/locale/ro-RO/gm-browser.properties
index b09d669..9864e93 100644
--- a/chrome/greasemonkey.jar!/locale/ro-RO/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/ro-RO/gm-browser.properties
@@ -17,5 +17,5 @@ editor.prompt=Please choose your preferred text editor first
editor.please_pick_executable=Please pick an executable application to use to edit user scripts.
editor.could_not_launch=Could not launch editor.
newscript.noname=Please provide a name for your script.
-newscript.nonamespace=Please provide a valid namespace URI for your script.\n(e.g. "http://userscripts.org/users/useridnumber")
+newscript.nonamespace=Please provide a valid namespace URI for your script.n(e.g. "http://userscripts.org/users/useridnumber")
newscript.exists=A script with that name is already installed.\nOK to overwrite?
diff --git a/chrome/greasemonkey.jar!/locale/ro-RO/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/ro-RO/greasemonkey.dtd
index 6a60d07..4743f11 100644
--- a/chrome/greasemonkey.jar!/locale/ro-RO/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/ro-RO/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "Manage User Scripts...">
<!ENTITY menu.manage.accesskey "M">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "Enabled">
<!ENTITY statusbar.enabled.accesskey "E">
<!ENTITY install.title "Greasemonkey Installation">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "You should only install scripts from sources that you trust.">
<!ENTITY install.showscriptsource "Show Script Source">
<!ENTITY install.installbutton "Install">
+<!ENTITY loading "Downloading ...">
<!ENTITY newscript.name "Name">
<!ENTITY newscript.namespace "Namespace">
<!ENTITY newscript.description "Description">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "User Scripts">
<!ENTITY Uninstall "Uninstall">
<!ENTITY AlsoUninstallPrefs "Also uninstall associated preferences">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Enable automatic update checking of scripts">
+<!ENTITY UpdateInterval "Minimum number of days between update checks">
+<!ENTITY RequireSecureUpdates "Require secure updates">
<!ENTITY greasemonkey.noscriptshere "No installed scripts run on this page.">
<!ENTITY greasemonkey.youhavenoscripts "You don't have any user scripts installed">
<!ENTITY greasemonkey.getuserscripts "Get user scripts">
diff --git a/chrome/greasemonkey.jar!/locale/ro-RO/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/ro-RO/greasemonkey.properties
index 209a08b..cca4d5d 100644
--- a/chrome/greasemonkey.jar!/locale/ro-RO/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/ro-RO/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=Un gestionar de seturi de comenzi ale utilizatorului pentru Firefox
-error.matchPattern.parse=@match: Could not parse the pattern.
-error.matchPattern.scheme=@match: Invalid scheme specified.
+error.downloadingUrl=Error downloading URL:
error.matchPattern.host=@match: Invalid host specified.
+error.matchPattern.parse=@match: Could not parse the pattern.
error.matchPattern.path=@match: Invalid path specified.
+error.matchPattern.scheme=@match: Invalid scheme specified.
+error.parsingScript=Could not parse script:
+error.serverReturned=Server returned
+error.unknown=Unknown error.
diff --git a/chrome/greasemonkey.jar!/locale/ru-RU/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/ru-RU/gm-addons.dtd
index b8cc1fe..543dfa2 100644
--- a/chrome/greasemonkey.jar!/locale/ru-RU/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/ru-RU/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "Изменить">
<!ENTITY Edit.accesskey "з">
<!ENTITY Edit.tooltip "Редактировать этот скрипт">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Выполнять последним">
<!ENTITY ExecuteLater "Выполнять позднее">
<!ENTITY ExecuteSooner "Выполнять ранее">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "Переместить ниже">
<!ENTITY MoveDown.accesskey "и">
<!ENTITY MoveToBottom "Переместить в конец">
diff --git a/chrome/greasemonkey.jar!/locale/ru-RU/gm-browser.properties b/chrome/greasemonkey.jar!/locale/ru-RU/gm-browser.properties
index f73eb8f..7daf9ce 100644
--- a/chrome/greasemonkey.jar!/locale/ru-RU/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/ru-RU/gm-browser.properties
@@ -13,9 +13,9 @@ alert.fromURI=Загружается скрипт...
alert.fromURI.failure=Невозможно загрузить скрипт
alert.success=успешно установлен.
alert.failure=Ошибка при установке скрипта:
-editor.prompt=Выберите текстовый редактор (напр. "c:\\windows\\notepad.exe")
+editor.prompt=Выберите текстовый редактор (напр. "c:windowsnotepad.exe")
editor.please_pick_executable=Выберите приложение для редактирования скриптов.
editor.could_not_launch=Невозможно запустить редактор.
newscript.noname=Задайте имя для вашего скрипта.
newscript.nonamespace=Задайте пространство для вашего скрипта.
-newscript.exists=Скрипт с таким же названием уже установлен.\nПерезаписать?
+newscript.exists=Скрипт с таким же названием уже установлен.nПерезаписать?
diff --git a/chrome/greasemonkey.jar!/locale/ru-RU/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/ru-RU/greasemonkey.dtd
index 191e603..b33463c 100644
--- a/chrome/greasemonkey.jar!/locale/ru-RU/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/ru-RU/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "в">
<!ENTITY menu.manage "Управление скриптами...">
<!ENTITY menu.manage.accesskey "п">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "Включить Greasemonkey">
<!ENTITY statusbar.enabled.accesskey "к">
<!ENTITY install.title "Установка скриптов Greasemonkey">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "Устанавливайте скрипты только из тех источников, которым вы доверяете.">
<!ENTITY install.showscriptsource "Показать код скрипта">
<!ENTITY install.installbutton "Начать установку">
+<!ENTITY loading "Downloading ...">
<!ENTITY newscript.name "Название">
<!ENTITY newscript.namespace "Пространство имён">
<!ENTITY newscript.description "Описание">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "Пользовательские скрипты">
<!ENTITY Uninstall "Удалить">
<!ENTITY AlsoUninstallPrefs "Также удалить все связанные настройки">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Enable automatic update checking of scripts">
+<!ENTITY UpdateInterval "Minimum number of days between update checks">
+<!ENTITY RequireSecureUpdates "Require secure updates">
<!ENTITY greasemonkey.noscriptshere "No installed scripts run on this page.">
<!ENTITY greasemonkey.youhavenoscripts "You don't have any user scripts installed">
<!ENTITY greasemonkey.getuserscripts "Get user scripts">
diff --git a/chrome/greasemonkey.jar!/locale/ru-RU/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/ru-RU/greasemonkey.properties
index df3e441..a834df1 100644
--- a/chrome/greasemonkey.jar!/locale/ru-RU/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/ru-RU/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=Менеджер пользовательских скриптов для Firefox
-error.matchPattern.parse=@match: Could not parse the pattern.
-error.matchPattern.scheme=@match: Invalid scheme specified.
+error.downloadingUrl=Error downloading URL:
error.matchPattern.host=@match: Invalid host specified.
+error.matchPattern.parse=@match: Could not parse the pattern.
error.matchPattern.path=@match: Invalid path specified.
+error.matchPattern.scheme=@match: Invalid scheme specified.
+error.parsingScript=Could not parse script:
+error.serverReturned=Server returned
+error.unknown=Unknown error.
diff --git a/chrome/greasemonkey.jar!/locale/ru/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/ru/gm-addons.dtd
index cd59b7a..0082200 100644
--- a/chrome/greasemonkey.jar!/locale/ru/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/ru/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "Изменить">
<!ENTITY Edit.accesskey "з">
<!ENTITY Edit.tooltip "Редактировать этот скрипт">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Выполнять последним">
<!ENTITY ExecuteLater "Выполнять позднее">
<!ENTITY ExecuteSooner "Выполнять ранее">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "Переместить ниже">
<!ENTITY MoveDown.accesskey "и">
<!ENTITY MoveToBottom "Переместить в конец">
diff --git a/chrome/greasemonkey.jar!/locale/ru/gm-browser.properties b/chrome/greasemonkey.jar!/locale/ru/gm-browser.properties
index 09e7eec..39f0000 100644
--- a/chrome/greasemonkey.jar!/locale/ru/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/ru/gm-browser.properties
@@ -13,9 +13,9 @@ alert.fromURI=Скрипт загружается…
alert.fromURI.failure=Невозможно загрузить скрипт
alert.success=успешно установлен.
alert.failure=Ошибка при установке скрипта:
-editor.prompt=Выберите текстовый редактор (напр. "c:\\windows\\notepad.exe")
+editor.prompt=Выберите текстовый редактор (напр. "c:windowsnotepad.exe")
editor.please_pick_executable=Выберите приложение для редактирования скриптов.
editor.could_not_launch=Невозможно запустить редактор.
newscript.noname=Задайте имя для вашего скрипта.
newscript.nonamespace=Задайте пространство для вашего скрипта.
-newscript.exists=Скрипт с таким именем уже установлен.\nПерезаписать?
+newscript.exists=Скрипт с таким именем уже установлен.nПерезаписать?
diff --git a/chrome/greasemonkey.jar!/locale/ru/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/ru/greasemonkey.dtd
index 84233d2..cfb42da 100644
--- a/chrome/greasemonkey.jar!/locale/ru/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/ru/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "с">
<!ENTITY menu.manage "Управление скриптами...">
<!ENTITY menu.manage.accesskey "п">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "Включить Greasemonkey">
<!ENTITY statusbar.enabled.accesskey "к">
<!ENTITY install.title "Установка скриптов Greasemonkey">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "Устанавливайте скрипты только из доверенных источников.">
<!ENTITY install.showscriptsource "Показать код скрипта">
<!ENTITY install.installbutton "Начать установку">
+<!ENTITY loading "Downloading ...">
<!ENTITY newscript.name "Название">
<!ENTITY newscript.namespace "Пространство имен">
<!ENTITY newscript.description "Описание">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "Пользовательские скрипты">
<!ENTITY Uninstall "Удаление">
<!ENTITY AlsoUninstallPrefs "Также удалять настройки скриптов">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Enable automatic update checking of scripts">
+<!ENTITY UpdateInterval "Minimum number of days between update checks">
+<!ENTITY RequireSecureUpdates "Require secure updates">
<!ENTITY greasemonkey.noscriptshere "Для этой страницы нет скриптов">
<!ENTITY greasemonkey.youhavenoscripts "У вас не установлено ни одного скрипта">
<!ENTITY greasemonkey.getuserscripts "Скачать скрипты">
diff --git a/chrome/greasemonkey.jar!/locale/ru/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/ru/greasemonkey.properties
index df3e441..a834df1 100644
--- a/chrome/greasemonkey.jar!/locale/ru/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/ru/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=Менеджер пользовательских скриптов для Firefox
-error.matchPattern.parse=@match: Could not parse the pattern.
-error.matchPattern.scheme=@match: Invalid scheme specified.
+error.downloadingUrl=Error downloading URL:
error.matchPattern.host=@match: Invalid host specified.
+error.matchPattern.parse=@match: Could not parse the pattern.
error.matchPattern.path=@match: Invalid path specified.
+error.matchPattern.scheme=@match: Invalid scheme specified.
+error.parsingScript=Could not parse script:
+error.serverReturned=Server returned
+error.unknown=Unknown error.
diff --git a/chrome/greasemonkey.jar!/locale/si-LK/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/si-LK/gm-addons.dtd
index a3aa18f..b732eb2 100644
--- a/chrome/greasemonkey.jar!/locale/si-LK/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/si-LK/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "සංස්කරණය">
<!ENTITY Edit.accesskey "E">
<!ENTITY Edit.tooltip "මෙම පරිශීලක ස්ක්රිප්ටය සංස්කරණය කරන්න">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "අවසානයට ක්රියාකරවන්න">
<!ENTITY ExecuteLater "පසුව ක්රියාත්මක කරන්න">
<!ENTITY ExecuteSooner "ඉක්මනින් ක්රියාත්මක කරන්න">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "පහලට යවන්න">
<!ENTITY MoveDown.accesskey "D">
<!ENTITY MoveToBottom "අවසානයට යවන්න">
diff --git a/chrome/greasemonkey.jar!/locale/si-LK/gm-browser.properties b/chrome/greasemonkey.jar!/locale/si-LK/gm-browser.properties
index 47ecc44..4f7a52f 100644
--- a/chrome/greasemonkey.jar!/locale/si-LK/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/si-LK/gm-browser.properties
@@ -18,4 +18,4 @@ editor.please_pick_executable=පරිශීලක ස්ක්රිප්
editor.could_not_launch=වදන් සකසනය (Editor) ක්රියාත්මක කල නොහැක
newscript.noname=කරුනාකර ඔබගේ ස්ක්රිප්ටයට නමක් ලබාදෙන්න
newscript.nonamespace=කරුනාකර ඔබගේ පරිශීලක ස්ක්රිටයට වලංගු නාමාවකාශය URI යක් ලබාදෙන්න (උ.දා. "http://userscripts.org/users/useridnumber")
-newscript.exists=මෙම නමින් දැනටමත් වෙන ස්ක්රිප්ටයක් පවතී.\nඋඩින් ලිවීම සදහා OK ක්ලික් කරන්න ?
+newscript.exists=මෙම නමින් දැනටමත් වෙන ස්ක්රිප්ටයක් පවතී.nඋඩින් ලිවීම සදහා OK ක්ලික් කරන්න ?
diff --git a/chrome/greasemonkey.jar!/locale/si-LK/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/si-LK/greasemonkey.dtd
index 7f0d573..4de4239 100644
--- a/chrome/greasemonkey.jar!/locale/si-LK/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/si-LK/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "පරිශීලක ස්ක්රිප්ට් කලමනාකරනය කරන්න">
<!ENTITY menu.manage.accesskey "M">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "ක්රියාත්මකයි">
<!ENTITY statusbar.enabled.accesskey "E">
<!ENTITY install.title "Greasemonkey ස්ථාපනය">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "ඔබට මූලය (Source) විශ්වාසනම් පමනක් ස්ක්රිප්ට්ය ස්ථාපනය කරන්න.">
<!ENTITY install.showscriptsource "ස්ක්රිප්ටයෙහි මූලය පෙන්වන්න">
<!ENTITY install.installbutton "ස්ථාපනය">
+<!ENTITY loading "Downloading ...">
<!ENTITY newscript.name "නම">
<!ENTITY newscript.namespace "නාමාවකාශය">
<!ENTITY newscript.description "විස්තරය">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "පරිශීලක ස්ක්රිප්ට්">
<!ENTITY Uninstall "ඉවත් කරන්න">
<!ENTITY AlsoUninstallPrefs "එසේම ආශ්රිත අභිමතද ඉවත් කරන්න">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Enable automatic update checking of scripts">
+<!ENTITY UpdateInterval "Minimum number of days between update checks">
+<!ENTITY RequireSecureUpdates "Require secure updates">
<!ENTITY greasemonkey.noscriptshere "No installed scripts run on this page.">
<!ENTITY greasemonkey.youhavenoscripts "You don't have any user scripts installed">
<!ENTITY greasemonkey.getuserscripts "Get user scripts">
diff --git a/chrome/greasemonkey.jar!/locale/si-LK/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/si-LK/greasemonkey.properties
index 726fa11..8a17c43 100644
--- a/chrome/greasemonkey.jar!/locale/si-LK/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/si-LK/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=ගිනිහිවලා සදහා පරිශීලක ස්ක්රිප්ට් පරිපාලකයකි
-error.matchPattern.parse=@match: Could not parse the pattern.
-error.matchPattern.scheme=@match: Invalid scheme specified.
+error.downloadingUrl=Error downloading URL:
error.matchPattern.host=@match: Invalid host specified.
+error.matchPattern.parse=@match: Could not parse the pattern.
error.matchPattern.path=@match: Invalid path specified.
+error.matchPattern.scheme=@match: Invalid scheme specified.
+error.parsingScript=Could not parse script:
+error.serverReturned=Server returned
+error.unknown=Unknown error.
diff --git a/chrome/greasemonkey.jar!/locale/sr/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/sr/gm-addons.dtd
index 5eae54a..a547c34 100644
--- a/chrome/greasemonkey.jar!/locale/sr/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/sr/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "Уреди">
<!ENTITY Edit.accesskey "У">
<!ENTITY Edit.tooltip "Уреди ову корисничку скрипту">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Изврши последњу">
<!ENTITY ExecuteLater "Изврши касније">
<!ENTITY ExecuteSooner "Изврши раније">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "Помери надоле">
<!ENTITY MoveDown.accesskey "Д">
<!ENTITY MoveToBottom "Помери на крај">
diff --git a/chrome/greasemonkey.jar!/locale/sr/gm-browser.properties b/chrome/greasemonkey.jar!/locale/sr/gm-browser.properties
index a08f791..c12a2dc 100644
--- a/chrome/greasemonkey.jar!/locale/sr/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/sr/gm-browser.properties
@@ -17,5 +17,5 @@ editor.prompt=Прво изаберите жељени уређивач текс
editor.please_pick_executable=Изаберите извршну датотеку програма којег желите користити за уређивање корисничких скрипти.
editor.could_not_launch=Није могуће покренути уређивач.
newscript.noname=Унесите назив своје скрипте.
-newscript.nonamespace=Унесите важећу адресу ваше скрипте.\n(нпр. http://userscripts.org/users/useridnumber)
+newscript.nonamespace=Унесите важећу адресу ваше скрипте.n(нпр. http://userscripts.org/users/useridnumber)
newscript.exists=Скрипта са тим именом већ постоји. Желите ли да је препишете?
diff --git a/chrome/greasemonkey.jar!/locale/sr/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/sr/greasemonkey.dtd
index 9548102..080d1e1 100644
--- a/chrome/greasemonkey.jar!/locale/sr/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/sr/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "Н">
<!ENTITY menu.manage "Управљање корисничким скриптама…">
<!ENTITY menu.manage.accesskey "У">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "Омогућен">
<!ENTITY statusbar.enabled.accesskey "о">
<!ENTITY install.title "Greasemonkey - инсталација">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "Скрипте требате инсталирати само са проверених извора.">
<!ENTITY install.showscriptsource "Прикажи изворни кôд скрипте">
<!ENTITY install.installbutton "Инсталирај">
+<!ENTITY loading "Преузимање...">
<!ENTITY newscript.name "Име">
<!ENTITY newscript.namespace "Namespace">
<!ENTITY newscript.description "Опис">
@@ -29,9 +32,13 @@
<!ENTITY userscripts "Корисничке скрипте">
<!ENTITY Uninstall "Уклони">
<!ENTITY AlsoUninstallPrefs "Уклони и подешавања">
-<!ENTITY greasemonkey.noscriptshere "Ни једна скрипта се не покреће на овој станици">
+<!ENTITY UpdateChecking "Проверавање ажурирања">
+<!ENTITY EnableUpdateChecking "Омогући аутоматско ажурирање скрипти">
+<!ENTITY UpdateInterval "Најмањи број који прође између две провере ажурирања">
+<!ENTITY RequireSecureUpdates "Тражи безбедносна ажурирања">
+<!ENTITY greasemonkey.noscriptshere "Ниједна скрипта се не покреће на овој станици">
<!ENTITY greasemonkey.youhavenoscripts "Није инсталирана ни једна корисничка скрипта">
-<!ENTITY greasemonkey.getuserscripts "Набави коприсничке скрипте">
+<!ENTITY greasemonkey.getuserscripts "Набави корисничке скрипте">
<!ENTITY scriptprefs.title "Подешавања корисничких скрипти за Greasemonkey">
<!ENTITY scriptprefs.usersettings "Корисничка подешавања">
<!ENTITY scriptprefs.scriptsettings "Подешавања скрипте">
diff --git a/chrome/greasemonkey.jar!/locale/sr/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/sr/greasemonkey.properties
index 7a32ff6..b49fccc 100644
--- a/chrome/greasemonkey.jar!/locale/sr/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/sr/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=Управљач корисничким скриптама
-error.matchPattern.parse=@match: није могуће рашчланити образац
-error.matchPattern.scheme=@match: неисправна назначена шема
+error.downloadingUrl=Грешка приликом преузимања адресе:
error.matchPattern.host=@match: неисправан назначени хост
+error.matchPattern.parse=@match: није могуће рашчланити образац
error.matchPattern.path=@match: неисправна назначена путања
+error.matchPattern.scheme=@match: неисправна назначена шема
+error.parsingScript=Није могуће рашчланити скрипту:
+error.serverReturned=Сервер вратио
+error.unknown=Непозната грешка.
diff --git a/chrome/greasemonkey.jar!/locale/sv-SE/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/sv-SE/gm-addons.dtd
index 3967ecf..4eb20de 100644
--- a/chrome/greasemonkey.jar!/locale/sv-SE/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/sv-SE/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Sök efter uppdateringar automatiskt">
+<!ENTITY CheckUpdates.accesskey "u">
<!ENTITY Edit "Redigera">
<!ENTITY Edit.accesskey "R">
<!ENTITY Edit.tooltip "Redigera detta användarskript">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Kör sist">
<!ENTITY ExecuteLater "Kör senare">
<!ENTITY ExecuteSooner "Kör tidigare">
+<!ENTITY FindUpdate "Sök efter uppdatering">
+<!ENTITY InstallUpdate "Installera uppdatering">
<!ENTITY MoveDown "Flytta nedåt">
<!ENTITY MoveDown.accesskey "n">
<!ENTITY MoveToBottom "Flytta nederst">
@@ -21,13 +25,13 @@
<!ENTITY Sort.Status "Status">
<!ENTITY Sort.ByName "Sortera efter namn">
<!ENTITY Sort.Name "Namn">
-<!ENTITY Sort.ByExecution "Sortera efter tillämpningsordning">
-<!ENTITY Sort.Execution "Tillämpningsordning">
+<!ENTITY Sort.ByExecution "Sortera efter körningsordning">
+<!ENTITY Sort.Execution "Körningsordning">
<!ENTITY SortScripts "Sortera skript">
<!ENTITY SortScripts.accesskey "o">
<!ENTITY UninstallCancel "Avbryt avinstallation">
<!ENTITY UninstallCancel.accesskey "v">
<!ENTITY UninstallCancel.tooltip "Avbryter avinstallationen av detta användarskript">
-<!ENTITY UninstallCancelDescription "Detta användarskript kommer att avinstalleras när dialogen stängs. (Eller högerklicka och välj "Avinstallera nu".)">
+<!ENTITY UninstallCancelDescription "Detta användarskript kommer att avinstalleras när dialogen stängs. (Eller högerklicka och välj "Avinstallera nu".)">
<!ENTITY UninstallNow "Avinstallera nu">
<!ENTITY UninstallNow.accesskey "A">
diff --git a/chrome/greasemonkey.jar!/locale/sv-SE/gm-browser.properties b/chrome/greasemonkey.jar!/locale/sv-SE/gm-browser.properties
index 591a5f2..96e2d45 100644
--- a/chrome/greasemonkey.jar!/locale/sv-SE/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/sv-SE/gm-browser.properties
@@ -4,18 +4,18 @@ menuitem.install=Installera detta användarskript…
tooltip.disabled=Greasemonkey är inaktiverat.
tooltip.enabled=Greasemonkey är aktiverat.
tooltip.loading=Läser in…
-statusbar.installed=installationen har slutförts
+statusbar.installed=har installerats
install.msg=Du håller på att installera följande Greasemonkey-användarskript:
greeting.msg=Det här är ett Greasemonkey-användarskript. klicka på Installera för att börja använda det.
greeting.btn=Installera
greeting.btnAccess=I
-alert.fromURI=Laddar ner användarskript…
-alert.fromURI.failure=Kunde inte ladda ner användarskript
+alert.fromURI=Hämtar användarskript…
+alert.fromURI.failure=Det gick inte att hämta användarskriptet
alert.success=Installationen har slutförts.
alert.failure=Fel under installation av användarskript:
editor.prompt=Var vänlig välj först det textredigeringsprogram du föredrar
editor.please_pick_executable=Var vänlig välj ett körbart program att använda till att redigera användarskript.
editor.could_not_launch=Kunde inte starta redigeringsprogrammet.
newscript.noname=Var vänlig ange ett namn på ditt skript.
-newscript.nonamespace=Var vänlig ange en giltig namnrymds-URI för ditt skript.\n(t.ex. "http://userscripts.org/users/användarensidnummer")
+newscript.nonamespace=Var vänlig ange en giltig namnrymds-URI för ditt skript.n(t.ex. "http://userscripts.org/users/användarensIDnummer")
newscript.exists=Ett skript med det namnet har redan installerats.\nSkall det ersättas?
diff --git a/chrome/greasemonkey.jar!/locale/sv-SE/gm-cludes.dtd b/chrome/greasemonkey.jar!/locale/sv-SE/gm-cludes.dtd
index faead98..9f8ceea 100644
--- a/chrome/greasemonkey.jar!/locale/sv-SE/gm-cludes.dtd
+++ b/chrome/greasemonkey.jar!/locale/sv-SE/gm-cludes.dtd
@@ -1,12 +1,12 @@
-<!ENTITY promptForNewPage.msg "Skriv in en ny adress nedan. Du kan specifiera flera sidor med jokertecknet (*).">
+<!ENTITY promptForNewPage.msg "Skriv in en ny adress nedan. Du kan inkludera flera sidor med jokertecknet (*).">
<!ENTITY promptForNewPage.title "Lägg till sida">
-<!ENTITY promptForNewPage.defVal "http://example.com/*">
-<!ENTITY promptForEdit.msg "Modifiera adressen av sidan nedan. Du kan specifiera flera sidor med jokertecknet (*).">
+<!ENTITY promptForNewPage.defVal "http://exempel.se/*">
+<!ENTITY promptForEdit.msg "Ändra adressen för sidan nedan. Du kan inkludera flera sidor med jokertecknet (*).">
<!ENTITY promptForEdit.title "Redigera sida">
-<!ENTITY button.add "Lägg till...">
-<!ENTITY button.addUserExclude "Lägg till som användarundantagen">
-<!ENTITY button.addUserInclude "Lägg till som användarinkluderad">
-<!ENTITY button.edit "Redigera...">
+<!ENTITY button.add "Lägg till…">
+<!ENTITY button.addUserExclude "Lägg till som användarundantag">
+<!ENTITY button.addUserInclude "Lägg till som användarinkludering">
+<!ENTITY button.edit "Redigera…">
<!ENTITY button.remove "Ta bort">
<!ENTITY label.grpIncluded "Inkluderade sidor">
<!ENTITY label.grpExcluded "Undantagna sidor">
diff --git a/chrome/greasemonkey.jar!/locale/sv-SE/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/sv-SE/greasemonkey.dtd
index 991377a..7950c05 100644
--- a/chrome/greasemonkey.jar!/locale/sv-SE/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/sv-SE/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "Hantera användarskript…">
<!ENTITY menu.manage.accesskey "H">
+<!ENTITY menu.options "Inställningar för Greasemonkey…">
+<!ENTITY menu.options.accesskey "I">
<!ENTITY statusbar.enabled "Aktiverat">
<!ENTITY statusbar.enabled.accesskey "A">
<!ENTITY install.title "Installation av Greasemonkey">
@@ -18,17 +20,22 @@
<!ENTITY install.warning2 "Du bör endast installera skript från källor som du litar på.">
<!ENTITY install.showscriptsource "Visa skriptkällkod">
<!ENTITY install.installbutton "Installera">
+<!ENTITY loading "Hämtar…">
<!ENTITY newscript.name "Namn">
<!ENTITY newscript.namespace "Namnrymd">
<!ENTITY newscript.description "Beskrivning">
-<!ENTITY newscript.includes "Inkluderar (ett per rad)">
-<!ENTITY newscript.excludes "Undantar (ett per rad)">
+<!ENTITY newscript.includes "Inkluderingar (ett per rad)">
+<!ENTITY newscript.excludes "Undantag (ett per rad)">
<!ENTITY options.editor "Redigeringsprogram">
<!ENTITY options.changeEditor "Byt redigeringsprogram">
<!ENTITY options.globalExcludes "Globala undantag">
<!ENTITY userscripts "Användarskript">
<!ENTITY Uninstall "Avinstallera">
<!ENTITY AlsoUninstallPrefs "Avinstallera även associerade inställningar">
+<!ENTITY UpdateChecking "Uppdateringskontroll">
+<!ENTITY EnableUpdateChecking "Aktivera automatisk uppdateringskontroll av skript">
+<!ENTITY UpdateInterval "Minsta antal dagar mellan två uppdateringskontroller">
+<!ENTITY RequireSecureUpdates "Kräv säkra uppdateringar">
<!ENTITY greasemonkey.noscriptshere "Inga installerade skript körs på denna sida.">
<!ENTITY greasemonkey.youhavenoscripts "Du har inga installerade användarskript">
<!ENTITY greasemonkey.getuserscripts "Hämta användarskript">
diff --git a/chrome/greasemonkey.jar!/locale/sv-SE/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/sv-SE/greasemonkey.properties
index 659c132..117cd83 100644
--- a/chrome/greasemonkey.jar!/locale/sv-SE/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/sv-SE/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=En användarskripthanterare för Firefox
-error.matchPattern.parse=@match: Det gick inte att parsa mönstret.
-error.matchPattern.scheme=@match: Ett ogiltigt schema har angivits.
+error.downloadingUrl=Felaktig hämtnings-URL:
error.matchPattern.host=@match: En ogiltig värd har angivits.
+error.matchPattern.parse=@match: Det gick inte att parsa mönstret.
error.matchPattern.path=@match: En ogiltig sökväg har angivits.
+error.matchPattern.scheme=@match: Ett ogiltigt schema har angivits.
+error.parsingScript=Det gick inte att parsa skriptet:
+error.serverReturned=Servern returnerade
+error.unknown=Okänt fel.
diff --git a/chrome/greasemonkey.jar!/locale/tr-TR/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/tr-TR/gm-addons.dtd
index 030e6f5..c0bdf6e 100644
--- a/chrome/greasemonkey.jar!/locale/tr-TR/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/tr-TR/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "Düzenle">
<!ENTITY Edit.accesskey "E">
<!ENTITY Edit.tooltip "Bu Kullanıcı Betiğini Düzenle">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Son Yürüt">
<!ENTITY ExecuteLater "Sonra yürüt">
<!ENTITY ExecuteSooner "Er geç yürüt">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "Aşağı Taşı">
<!ENTITY MoveDown.accesskey "D">
<!ENTITY MoveToBottom "En alta Taşı">
diff --git a/chrome/greasemonkey.jar!/locale/tr-TR/gm-browser.properties b/chrome/greasemonkey.jar!/locale/tr-TR/gm-browser.properties
index 7a472c1..2693fed 100644
--- a/chrome/greasemonkey.jar!/locale/tr-TR/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/tr-TR/gm-browser.properties
@@ -17,5 +17,5 @@ editor.prompt=Lütfen önce tercih edilen metin editörünü seçin
editor.please_pick_executable=Lütfen kullanıcı betiklerini düzenlemek için çalıştırılabilir bir uygulama alın.
editor.could_not_launch=Editör başlatılamadı.
newscript.noname=Betiğinize bir isim verin.
-newscript.nonamespace=Betiğiniz için geçerli bir URL verin.\n(örneğin "http://userscripts.org/users/useridnumber")
+newscript.nonamespace=Betiğiniz için geçerli bir URL verin.n(örneğin "http://userscripts.org/users/useridnumber")
newscript.exists=Bu isimde bir betik zaten yüklü.\nÜzerine yazılsın mı?
diff --git a/chrome/greasemonkey.jar!/locale/tr-TR/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/tr-TR/greasemonkey.dtd
index 60e5e05..57bbdf1 100644
--- a/chrome/greasemonkey.jar!/locale/tr-TR/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/tr-TR/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "Kullanıcı Betiklerini Yönet...">
<!ENTITY menu.manage.accesskey "M">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "Etkin">
<!ENTITY statusbar.enabled.accesskey "E">
<!ENTITY install.title "Greasemonkey Kurulumu">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "Yalnızca güvendiğiniz kaynaklardan gelen betikleri yükleyin.">
<!ENTITY install.showscriptsource "Betik Kaynağını Göster">
<!ENTITY install.installbutton "Kur">
+<!ENTITY loading "Downloading ...">
<!ENTITY newscript.name "İsim">
<!ENTITY newscript.namespace "İsim alanı">
<!ENTITY newscript.description "Tanım">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "Kullanıcı Betikleri">
<!ENTITY Uninstall "Kaldır">
<!ENTITY AlsoUninstallPrefs "Ayrıca ilişkili tercihleri kaldır">
+<!ENTITY UpdateChecking "Update Checking">
+<!ENTITY EnableUpdateChecking "Enable automatic update checking of scripts">
+<!ENTITY UpdateInterval "Minimum number of days between update checks">
+<!ENTITY RequireSecureUpdates "Require secure updates">
<!ENTITY greasemonkey.noscriptshere "Bu sayfada çalışan yüklenmiş betikler yok">
<!ENTITY greasemonkey.youhavenoscripts "Yüklü bir kullanıcı betiğiniz yok">
<!ENTITY greasemonkey.getuserscripts "Kullanıcı betikleri al">
diff --git a/chrome/greasemonkey.jar!/locale/tr-TR/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/tr-TR/greasemonkey.properties
index 09ead4f..5b60e27 100644
--- a/chrome/greasemonkey.jar!/locale/tr-TR/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/tr-TR/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=Firefox için Bir Kullanıcı Betik Yöneticisi
-error.matchPattern.parse=@eşleşme: Desen ayrıştırılamadı.
-error.matchPattern.scheme=@eşleşme: Belirtilen düzen geçersiz.
+error.downloadingUrl=Error downloading URL:
error.matchPattern.host=@eşleşme: Belirtilen ana bilgisayar geçersiz.
+error.matchPattern.parse=@eşleşme: Desen ayrıştırılamadı.
error.matchPattern.path=@eşleşme: Belirtilen yol geçersiz.
+error.matchPattern.scheme=@eşleşme: Belirtilen düzen geçersiz.
+error.parsingScript=Could not parse script:
+error.serverReturned=Server returned
+error.unknown=Unknown error.
diff --git a/chrome/greasemonkey.jar!/locale/uk-UA/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/uk-UA/gm-addons.dtd
index d444a7d..59a2f8d 100644
--- a/chrome/greasemonkey.jar!/locale/uk-UA/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/uk-UA/gm-addons.dtd
@@ -1,33 +1,37 @@
-<!ENTITY Edit "Edit">
-<!ENTITY Edit.accesskey "E">
-<!ENTITY Edit.tooltip "Edit this User Script">
-<!ENTITY ExecuteFirst "Execute first">
-<!ENTITY ExecuteLast "Execute last">
-<!ENTITY ExecuteLater "Execute later">
-<!ENTITY ExecuteSooner "Execute sooner">
-<!ENTITY MoveDown "Move Down">
-<!ENTITY MoveDown.accesskey "D">
-<!ENTITY MoveToBottom "Move To Bottom">
-<!ENTITY MoveToBottom.accesskey "B">
-<!ENTITY MoveToTop "Move To Top">
-<!ENTITY MoveToTop.accesskey "T">
-<!ENTITY MoveUp "Move Up">
-<!ENTITY MoveUp.accesskey "U">
-<!ENTITY NewScript "Create New Script">
-<!ENTITY NewScript.accesskey "C">
-<!ENTITY Show "Show Containing Folder">
-<!ENTITY Show.accesskey "S">
-<!ENTITY Sort.ByStatus "Sort by status">
-<!ENTITY Sort.Status "Status">
-<!ENTITY Sort.ByName "Sort by name">
-<!ENTITY Sort.Name "Name">
-<!ENTITY Sort.ByExecution "Sort by execution order">
-<!ENTITY Sort.Execution "Execution Order">
-<!ENTITY SortScripts "Sort Scripts">
-<!ENTITY SortScripts.accesskey "S">
-<!ENTITY UninstallCancel "Cancel Uninstall">
-<!ENTITY UninstallCancel.accesskey "C">
-<!ENTITY UninstallCancel.tooltip "Cancel uninstallation of this User Script">
-<!ENTITY UninstallCancelDescription "This User Script will be uninstalled when the dialog closes. (Or right click for "Uninstall Now".)">
-<!ENTITY UninstallNow "Uninstall Now">
-<!ENTITY UninstallNow.accesskey "N">
+<!ENTITY CheckUpdates "Автоматично перевіряти оновлення">
+<!ENTITY CheckUpdates.accesskey "о">
+<!ENTITY Edit "Редагувати">
+<!ENTITY Edit.accesskey "Р">
+<!ENTITY Edit.tooltip "Редагувати цей скрипт">
+<!ENTITY ExecuteFirst "Виконувати першим">
+<!ENTITY ExecuteLast "Виконувати останнім">
+<!ENTITY ExecuteLater "Виконувати пізніше">
+<!ENTITY ExecuteSooner "Виконувати раніше">
+<!ENTITY FindUpdate "Пошук оновлення">
+<!ENTITY InstallUpdate "Встановити оновлення">
+<!ENTITY MoveDown "Нижче">
+<!ENTITY MoveDown.accesskey "Н">
+<!ENTITY MoveToBottom "Донизу">
+<!ENTITY MoveToBottom.accesskey "Д">
+<!ENTITY MoveToTop "Догори">
+<!ENTITY MoveToTop.accesskey "о">
+<!ENTITY MoveUp "Вище">
+<!ENTITY MoveUp.accesskey "щ">
+<!ENTITY NewScript "Створити новий скрипт">
+<!ENTITY NewScript.accesskey "т">
+<!ENTITY Show "Показати теку, що містить скрипт">
+<!ENTITY Show.accesskey "к">
+<!ENTITY Sort.ByStatus "Сортувати за станом">
+<!ENTITY Sort.Status "Стан">
+<!ENTITY Sort.ByName "Сортувати за назвою">
+<!ENTITY Sort.Name "Назва">
+<!ENTITY Sort.ByExecution "Сортувати за порядком виконання">
+<!ENTITY Sort.Execution "Порядок виконання">
+<!ENTITY SortScripts "Сортувати скрипти">
+<!ENTITY SortScripts.accesskey "у">
+<!ENTITY UninstallCancel "Скасувати вилучення">
+<!ENTITY UninstallCancel.accesskey "л">
+<!ENTITY UninstallCancel.tooltip "Скасувати вилучення цього скрипту">
+<!ENTITY UninstallCancelDescription "Цей скрипт буде вилучено після закриття цього повідомлення (клацання правою кнопкою миші, щоб "вилучити негайно").">
+<!ENTITY UninstallNow "Вилучити негайно">
+<!ENTITY UninstallNow.accesskey "ч">
diff --git a/chrome/greasemonkey.jar!/locale/uk-UA/gm-addons.properties b/chrome/greasemonkey.jar!/locale/uk-UA/gm-addons.properties
index 2a65eb8..8ebf375 100644
--- a/chrome/greasemonkey.jar!/locale/uk-UA/gm-addons.properties
+++ b/chrome/greasemonkey.jar!/locale/uk-UA/gm-addons.properties
@@ -1,2 +1,2 @@
-executionorder=Execution Order
-executionorder.tooltip=Sort by execution order
+executionorder=Порядок виконання
+executionorder.tooltip=Сортувати за порядком виконання
diff --git a/chrome/greasemonkey.jar!/locale/uk-UA/gm-browser.properties b/chrome/greasemonkey.jar!/locale/uk-UA/gm-browser.properties
index 81d47ad..22d6074 100644
--- a/chrome/greasemonkey.jar!/locale/uk-UA/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/uk-UA/gm-browser.properties
@@ -1,21 +1,21 @@
-menuitem.manage=Manage User Scripts
-menuitem.new=New User Script
-menuitem.install=Install This User Script...
-tooltip.disabled=Greasemonkey is disabled.
-tooltip.enabled=Greasemonkey is enabled.
-tooltip.loading=Loading...
-statusbar.installed=installed successfully
-install.msg=You are about to install the following Greasemonkey user script:
-greeting.msg=This is a Greasemonkey user script. Click install to start using it.
-greeting.btn=Install
-greeting.btnAccess=I
-alert.fromURI=Downloading user script...
-alert.fromURI.failure=Could not download user script
-alert.success=Installed successfully.
-alert.failure=Error installing user script:
-editor.prompt=Please choose your preferred text editor first
-editor.please_pick_executable=Please pick an executable application to use to edit user scripts.
-editor.could_not_launch=Could not launch editor.
-newscript.noname=Please provide a name for your script.
-newscript.nonamespace=Please provide a valid namespace URI for your script.\n(e.g. "http://userscripts.org/users/useridnumber")
-newscript.exists=A script with that name is already installed.\nOK to overwrite?
+menuitem.manage=Керування скриптами
+menuitem.new=Новий скрипт
+menuitem.install=Встановити скрипт…
+tooltip.disabled=Greasemonkey вимкнено.
+tooltip.enabled=Greasemonkey увімкнено.
+tooltip.loading=Завантаження…
+statusbar.installed=успішно встановлено
+install.msg=Ви намагаєтесь встановити наступний скрипт Greasemonkey:
+greeting.msg=Це скрипт Greasemonkey. Натисніть «Встановити», щоб почати його використовувати.
+greeting.btn=Встановити
+greeting.btnAccess=В
+alert.fromURI=Завантажується скрипт…
+alert.fromURI.failure=Неможливо завантажити скрипт
+alert.success=успішно встановлено.
+alert.failure=Помилка під час встановлення скрипту:
+editor.prompt=Виберіть текстовий редактор (напр. "c:\windows\notepad.exe")
+editor.please_pick_executable=Будь ласка, вкажіть програму, котрою редагувати скрипти.
+editor.could_not_launch=Не можу запустити редактора.
+newscript.noname=Будь ласка, назвіть ваш скрипт.
+newscript.nonamespace=Будь ласка, вкажіть простір імен для вашого скрипту.n(напр. "http://userscripts.org/users/номер")
+newscript.exists=Скрипт з таким іменем вже встановлено.\nБажаєте перезаписати?
diff --git a/chrome/greasemonkey.jar!/locale/uk-UA/gm-cludes.dtd b/chrome/greasemonkey.jar!/locale/uk-UA/gm-cludes.dtd
index 9a397ff..c400fa3 100644
--- a/chrome/greasemonkey.jar!/locale/uk-UA/gm-cludes.dtd
+++ b/chrome/greasemonkey.jar!/locale/uk-UA/gm-cludes.dtd
@@ -1,12 +1,12 @@
-<!ENTITY promptForNewPage.msg "Нижче введіть нову адресу. Ви можете вказувати множини адрес за допомогою символу зірочка (*).">
+<!ENTITY promptForNewPage.msg "Введіть нову адресу. Ви можете вказувати множини адрес за допомогою символу зірочка (*).">
<!ENTITY promptForNewPage.title "Додати адресу сторінки">
<!ENTITY promptForNewPage.defVal "http://site.org.ua/*">
-<!ENTITY promptForEdit.msg "Нижче змініть адресу сторінки. Ви можете вказувати множини адрес за допомогою символу зірочка (*).">
+<!ENTITY promptForEdit.msg "Змініть адресу сторінки. Ви можете вказувати множини адрес за допомогою символу зірочка (*).">
<!ENTITY promptForEdit.title "Редагувати сторінку">
-<!ENTITY button.add "Додати…">
+<!ENTITY button.add "Додати...">
<!ENTITY button.addUserExclude "Додати як користувацький виняток">
<!ENTITY button.addUserInclude "Додати як користувацьке включення">
-<!ENTITY button.edit "Редагувати…">
+<!ENTITY button.edit "Редагувати...">
<!ENTITY button.remove "Вилучити">
<!ENTITY label.grpIncluded "Охоплені сторінки">
<!ENTITY label.grpExcluded "Сторінки-винятки">
diff --git a/chrome/greasemonkey.jar!/locale/uk-UA/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/uk-UA/greasemonkey.dtd
index e38b1da..4df17ed 100644
--- a/chrome/greasemonkey.jar!/locale/uk-UA/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/uk-UA/greasemonkey.dtd
@@ -1,37 +1,44 @@
-<!ENTITY menu.install "Install User Script...">
-<!ENTITY menu.install.accesskey "I">
-<!ENTITY menu.show "View User Script Source">
-<!ENTITY menu.show.accesskey "V">
-<!ENTITY menu.commands "User Script Commands...">
-<!ENTITY menu.commands.accesskey "C">
-<!ENTITY menu.new "New User Script...">
-<!ENTITY menu.new.accesskey "N">
-<!ENTITY menu.manage "Manage User Scripts...">
-<!ENTITY menu.manage.accesskey "M">
-<!ENTITY statusbar.enabled "Enabled">
-<!ENTITY statusbar.enabled.accesskey "E">
-<!ENTITY install.title "Greasemonkey Installation">
-<!ENTITY install.runson "runs on:">
+<!ENTITY menu.install "Встановити скрипт…">
+<!ENTITY menu.install.accesskey "В">
+<!ENTITY menu.show "Переглянути початковий код скрипту">
+<!ENTITY menu.show.accesskey "П">
+<!ENTITY menu.commands "Команди скрипту…">
+<!ENTITY menu.commands.accesskey "К">
+<!ENTITY menu.new "Новий скрипт…">
+<!ENTITY menu.new.accesskey "Н">
+<!ENTITY menu.manage "Керування скриптами…">
+<!ENTITY menu.manage.accesskey "е">
+<!ENTITY menu.options "Налаштування Greasemonkey...">
+<!ENTITY menu.options.accesskey "л">
+<!ENTITY statusbar.enabled "Увімкнено">
+<!ENTITY statusbar.enabled.accesskey "У">
+<!ENTITY install.title "Встановлення Greasemonkey">
+<!ENTITY install.runson "Працює на:">
<!ENTITY install.matches "збіги:">
-<!ENTITY install.butnoton "does not run on:">
-<!ENTITY install.warning1 "Malicious scripts can violate your privacy and act on your behalf without your knowledge.">
-<!ENTITY install.warning2 "You should only install scripts from sources that you trust.">
-<!ENTITY install.showscriptsource "Show Script Source">
-<!ENTITY install.installbutton "Install">
-<!ENTITY newscript.name "Name">
-<!ENTITY newscript.namespace "Namespace">
-<!ENTITY newscript.description "Description">
-<!ENTITY newscript.includes "Includes (One per line)">
-<!ENTITY newscript.excludes "Excludes (One per line)">
-<!ENTITY options.editor "Editor">
-<!ENTITY options.changeEditor "Change Editor">
+<!ENTITY install.butnoton "Не працює на:">
+<!ENTITY install.warning1 "Сумнівні скрипти можуть порушити вашу конфіденційність без вашого відома!">
+<!ENTITY install.warning2 "Встановлюйте скрипти тільки з тих джерел, яким довіряєте.">
+<!ENTITY install.showscriptsource "Показати початковий код скрипту">
+<!ENTITY install.installbutton "Встановити">
+<!ENTITY loading "Завантаження...">
+<!ENTITY newscript.name "Ім’я">
+<!ENTITY newscript.namespace "Простір імен">
+<!ENTITY newscript.description "Опис">
+<!ENTITY newscript.includes "Охоплення (одне на рядок)">
+<!ENTITY newscript.excludes "Винятки (один на рядок)">
+<!ENTITY options.editor "Редактор">
+<!ENTITY options.changeEditor "Змінити редактор">
<!ENTITY options.globalExcludes "Глобальні винятки">
-<!ENTITY userscripts "User Scripts">
-<!ENTITY Uninstall "Uninstall">
-<!ENTITY AlsoUninstallPrefs "Also uninstall associated preferences">
+<!ENTITY userscripts "Скрипти">
+<!ENTITY Uninstall "Вилучити">
+<!ENTITY AlsoUninstallPrefs "Вилучити також пов'язані налаштування">
+<!ENTITY UpdateChecking "Перевірка оновлень">
+<!ENTITY EnableUpdateChecking "Увімкнути автоматичну перевірку оновлень для скриптів">
+<!ENTITY UpdateInterval "Інтервал між перевірками (днів)">
+<!ENTITY RequireSecureUpdates "Вимагати безпечних оновлень">
<!ENTITY greasemonkey.noscriptshere "Жоден зі встановлених скриптів не працює на цій сторінці.">
-<!ENTITY greasemonkey.youhavenoscripts "You don't have any user scripts installed">
-<!ENTITY greasemonkey.getuserscripts "Get user scripts">
+<!ENTITY greasemonkey.youhavenoscripts "Жодних скриптів не встановлено">
+<!ENTITY greasemonkey.getuserscripts "Отримати користувацькі скрипти">
<!ENTITY scriptprefs.title "Налаштування користувацьких скриптів Greasemonkey - !!">
<!ENTITY scriptprefs.usersettings "Налаштування">
<!ENTITY scriptprefs.scriptsettings "Налаштування скрипту">
diff --git a/chrome/greasemonkey.jar!/locale/uk-UA/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/uk-UA/greasemonkey.properties
index 335a9e9..fc1f65d 100644
--- a/chrome/greasemonkey.jar!/locale/uk-UA/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/uk-UA/greasemonkey.properties
@@ -1,5 +1,9 @@
-extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=A User Script Manager for Firefox
-error.matchPattern.parse=@match: Неможливо обробити шаблон.
-error.matchPattern.scheme=@match: Вказано неправильну схему.
+extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=Керівник скриптами у Firefox
+error.downloadingUrl=Помилка завантаження адреси:
error.matchPattern.host=@match: Вказано неправильний хост.
+error.matchPattern.parse=@match: Неможливо обробити шаблон.
error.matchPattern.path=@match: Вказано неправильний шлях.
+error.matchPattern.scheme=@match: Вказано неправильну схему.
+error.parsingScript=Неможливо обробити скрипт:
+error.serverReturned=Відповідь сервера
+error.unknown=Невідома помилка.
diff --git a/chrome/greasemonkey.jar!/locale/uk/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/uk/gm-addons.dtd
index 3c7463a..59a2f8d 100644
--- a/chrome/greasemonkey.jar!/locale/uk/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/uk/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Автоматично перевіряти оновлення">
+<!ENTITY CheckUpdates.accesskey "о">
<!ENTITY Edit "Редагувати">
<!ENTITY Edit.accesskey "Р">
<!ENTITY Edit.tooltip "Редагувати цей скрипт">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "Виконувати останнім">
<!ENTITY ExecuteLater "Виконувати пізніше">
<!ENTITY ExecuteSooner "Виконувати раніше">
+<!ENTITY FindUpdate "Пошук оновлення">
+<!ENTITY InstallUpdate "Встановити оновлення">
<!ENTITY MoveDown "Нижче">
<!ENTITY MoveDown.accesskey "Н">
<!ENTITY MoveToBottom "Донизу">
diff --git a/chrome/greasemonkey.jar!/locale/uk/gm-browser.properties b/chrome/greasemonkey.jar!/locale/uk/gm-browser.properties
index 6c20c5d..22d6074 100644
--- a/chrome/greasemonkey.jar!/locale/uk/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/uk/gm-browser.properties
@@ -13,9 +13,9 @@ alert.fromURI=Завантажується скрипт…
alert.fromURI.failure=Неможливо завантажити скрипт
alert.success=успішно встановлено.
alert.failure=Помилка під час встановлення скрипту:
-editor.prompt=Виберіть текстовий редактор (напр. "c:\\windows\\notepad.exe")
-editor.please_pick_executable=Будь ласка вкажіть програму котрою редагувати скрипти.
+editor.prompt=Виберіть текстовий редактор (напр. "c:\windows\notepad.exe")
+editor.please_pick_executable=Будь ласка, вкажіть програму, котрою редагувати скрипти.
editor.could_not_launch=Не можу запустити редактора.
newscript.noname=Будь ласка, назвіть ваш скрипт.
-newscript.nonamespace=Будь ласка, вкажіть простір імен для вашого скрипту.\n(напр. "http://userscripts.org/users/номер")
+newscript.nonamespace=Будь ласка, вкажіть простір імен для вашого скрипту.n(напр. "http://userscripts.org/users/номер")
newscript.exists=Скрипт з таким іменем вже встановлено.\nБажаєте перезаписати?
diff --git a/chrome/greasemonkey.jar!/locale/uk/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/uk/greasemonkey.dtd
index 5570f51..4df17ed 100644
--- a/chrome/greasemonkey.jar!/locale/uk/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/uk/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "Н">
<!ENTITY menu.manage "Керування скриптами…">
<!ENTITY menu.manage.accesskey "е">
+<!ENTITY menu.options "Налаштування Greasemonkey...">
+<!ENTITY menu.options.accesskey "л">
<!ENTITY statusbar.enabled "Увімкнено">
<!ENTITY statusbar.enabled.accesskey "У">
<!ENTITY install.title "Встановлення Greasemonkey">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "Встановлюйте скрипти тільки з тих джерел, яким довіряєте.">
<!ENTITY install.showscriptsource "Показати початковий код скрипту">
<!ENTITY install.installbutton "Встановити">
+<!ENTITY loading "Завантаження...">
<!ENTITY newscript.name "Ім’я">
<!ENTITY newscript.namespace "Простір імен">
<!ENTITY newscript.description "Опис">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "Скрипти">
<!ENTITY Uninstall "Вилучити">
<!ENTITY AlsoUninstallPrefs "Вилучити також пов'язані налаштування">
+<!ENTITY UpdateChecking "Перевірка оновлень">
+<!ENTITY EnableUpdateChecking "Увімкнути автоматичну перевірку оновлень для скриптів">
+<!ENTITY UpdateInterval "Інтервал між перевірками (днів)">
+<!ENTITY RequireSecureUpdates "Вимагати безпечних оновлень">
<!ENTITY greasemonkey.noscriptshere "Жоден зі встановлених скриптів не працює на цій сторінці.">
<!ENTITY greasemonkey.youhavenoscripts "Жодних скриптів не встановлено">
<!ENTITY greasemonkey.getuserscripts "Отримати користувацькі скрипти">
diff --git a/chrome/greasemonkey.jar!/locale/uk/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/uk/greasemonkey.properties
index 38028a2..fc1f65d 100644
--- a/chrome/greasemonkey.jar!/locale/uk/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/uk/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=Керівник скриптами у Firefox
-error.matchPattern.parse=@match: Неможливо обробити шаблон.
-error.matchPattern.scheme=@match: Вказано неправильну схему.
+error.downloadingUrl=Помилка завантаження адреси:
error.matchPattern.host=@match: Вказано неправильний хост.
+error.matchPattern.parse=@match: Неможливо обробити шаблон.
error.matchPattern.path=@match: Вказано неправильний шлях.
+error.matchPattern.scheme=@match: Вказано неправильну схему.
+error.parsingScript=Неможливо обробити скрипт:
+error.serverReturned=Відповідь сервера
+error.unknown=Невідома помилка.
diff --git a/chrome/greasemonkey.jar!/locale/zh-CN/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/zh-CN/gm-addons.dtd
index ca11889..75c1802 100644
--- a/chrome/greasemonkey.jar!/locale/zh-CN/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/zh-CN/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "自动检查更新">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "编辑">
<!ENTITY Edit.accesskey "E">
<!ENTITY Edit.tooltip "编辑这个用户脚本">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "最后执行">
<!ENTITY ExecuteLater "稍后执行">
<!ENTITY ExecuteSooner "稍早执行">
+<!ENTITY FindUpdate "查找更新">
+<!ENTITY InstallUpdate "安装更新">
<!ENTITY MoveDown "下移">
<!ENTITY MoveDown.accesskey "D">
<!ENTITY MoveToBottom "移至最后">
diff --git a/chrome/greasemonkey.jar!/locale/zh-CN/gm-browser.properties b/chrome/greasemonkey.jar!/locale/zh-CN/gm-browser.properties
index a9da510..c4172ab 100644
--- a/chrome/greasemonkey.jar!/locale/zh-CN/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/zh-CN/gm-browser.properties
@@ -17,5 +17,5 @@ editor.prompt=请先选择您喜欢用的文本编辑器
editor.please_pick_executable=请选择一个可执行程序用来编辑用户脚本。
editor.could_not_launch=无法启动编辑器。
newscript.noname=请为您的脚本命名。
-newscript.nonamespace=请为您的脚本提供一个有效的命名空间。\n(例如 [http://userscripts.org/users/useridnumber])
-newscript.exists=已安装了同名的脚本。\n覆盖同名的脚本?
+newscript.nonamespace=请为您的脚本提供一个有效的命名空间。(例如 [http://userscripts.org/users/useridnumber])
+newscript.exists=已安装了同名的脚本。覆盖同名的脚本?
diff --git a/chrome/greasemonkey.jar!/locale/zh-CN/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/zh-CN/greasemonkey.dtd
index 53d646f..4a168ec 100644
--- a/chrome/greasemonkey.jar!/locale/zh-CN/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/zh-CN/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "管理用户脚本...">
<!ENTITY menu.manage.accesskey "M">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "启用">
<!ENTITY statusbar.enabled.accesskey "E">
<!ENTITY install.title "Greasemonkey 安装过程">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "您应该只安装从可信任来源获得的脚本。">
<!ENTITY install.showscriptsource "显示脚本源代码">
<!ENTITY install.installbutton "安装">
+<!ENTITY loading "下载中...">
<!ENTITY newscript.name "名称">
<!ENTITY newscript.namespace "命名空间">
<!ENTITY newscript.description "描述">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "用户脚本">
<!ENTITY Uninstall "卸载">
<!ENTITY AlsoUninstallPrefs "同时清除相关的首选项设置">
+<!ENTITY UpdateChecking "检查更新">
+<!ENTITY EnableUpdateChecking "启用脚本的自动检查更新">
+<!ENTITY UpdateInterval "两次更新检查间的最小间隔(天)">
+<!ENTITY RequireSecureUpdates "需要安全地更新(HTTPS)">
<!ENTITY greasemonkey.noscriptshere "在此页面上没有已安装的脚本运行。">
<!ENTITY greasemonkey.youhavenoscripts "您没有安装任何用户脚本">
<!ENTITY greasemonkey.getuserscripts "获取用户脚本">
diff --git a/chrome/greasemonkey.jar!/locale/zh-CN/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/zh-CN/greasemonkey.properties
index e029a63..ebeb27d 100644
--- a/chrome/greasemonkey.jar!/locale/zh-CN/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/zh-CN/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=用于 Firefox 的用户脚本管理器
-error.matchPattern.parse=@match: 无法解析的模式。
-error.matchPattern.scheme=@match: 指定的模式无效。
+error.downloadingUrl=下载URL时出错:
error.matchPattern.host=@match: 指定的主机无效。
+error.matchPattern.parse=@match: 无法解析的模式。
error.matchPattern.path=@match: 指定的路径无效。
+error.matchPattern.scheme=@match: 指定的模式无效。
+error.parsingScript=无法解析的脚本:
+error.serverReturned=服务器返回
+error.unknown=未知错误。
diff --git a/chrome/greasemonkey.jar!/locale/zh-TW/gm-addons.dtd b/chrome/greasemonkey.jar!/locale/zh-TW/gm-addons.dtd
index ffc81c1..9358848 100644
--- a/chrome/greasemonkey.jar!/locale/zh-TW/gm-addons.dtd
+++ b/chrome/greasemonkey.jar!/locale/zh-TW/gm-addons.dtd
@@ -1,3 +1,5 @@
+<!ENTITY CheckUpdates "Automatically check for updates">
+<!ENTITY CheckUpdates.accesskey "U">
<!ENTITY Edit "編輯">
<!ENTITY Edit.accesskey "E">
<!ENTITY Edit.tooltip "編輯此使用者腳本">
@@ -5,6 +7,8 @@
<!ENTITY ExecuteLast "最後執行">
<!ENTITY ExecuteLater "較晚執行">
<!ENTITY ExecuteSooner "較早執行">
+<!ENTITY FindUpdate "Find Update">
+<!ENTITY InstallUpdate "Install Update">
<!ENTITY MoveDown "下移">
<!ENTITY MoveDown.accesskey "D">
<!ENTITY MoveToBottom "移到最下面">
diff --git a/chrome/greasemonkey.jar!/locale/zh-TW/gm-browser.properties b/chrome/greasemonkey.jar!/locale/zh-TW/gm-browser.properties
index 8c82593..9a24247 100644
--- a/chrome/greasemonkey.jar!/locale/zh-TW/gm-browser.properties
+++ b/chrome/greasemonkey.jar!/locale/zh-TW/gm-browser.properties
@@ -17,5 +17,5 @@ editor.prompt=請先選擇您常用的純文字編輯器
editor.please_pick_executable=請挑一個可執行程式來編輯使用者腳本。
editor.could_not_launch=無法執行編輯器。
newscript.noname=請輸入您的使用者腳本的名稱。
-newscript.nonamespace=請為您的腳本提供一個有效的命名空間 URI。\n(例如「http://userscripts.org/users/useridnumber」)
-newscript.exists=已安裝了一個同名的腳本。\n確定要覆蓋嗎?
+newscript.nonamespace=請為您的腳本提供一個有效的命名空間 URI。n(例如「http://userscripts.org/users/useridnumber」)
+newscript.exists=已安裝了一個同名的腳本。n確定要覆蓋嗎?
diff --git a/chrome/greasemonkey.jar!/locale/zh-TW/greasemonkey.dtd b/chrome/greasemonkey.jar!/locale/zh-TW/greasemonkey.dtd
index bfd6627..d2a48f2 100644
--- a/chrome/greasemonkey.jar!/locale/zh-TW/greasemonkey.dtd
+++ b/chrome/greasemonkey.jar!/locale/zh-TW/greasemonkey.dtd
@@ -8,6 +8,8 @@
<!ENTITY menu.new.accesskey "N">
<!ENTITY menu.manage "管理使用者腳本…">
<!ENTITY menu.manage.accesskey "M">
+<!ENTITY menu.options "Greasemonkey Options...">
+<!ENTITY menu.options.accesskey "O">
<!ENTITY statusbar.enabled "已啟用">
<!ENTITY statusbar.enabled.accesskey "E">
<!ENTITY install.title "Greasemonkey 安裝">
@@ -18,6 +20,7 @@
<!ENTITY install.warning2 "您應該只安裝來自可信任來源的使用者腳本。">
<!ENTITY install.showscriptsource "顯示腳本來源">
<!ENTITY install.installbutton "安裝">
+<!ENTITY loading "下載中…">
<!ENTITY newscript.name "名稱">
<!ENTITY newscript.namespace "命名空間">
<!ENTITY newscript.description "說明">
@@ -29,6 +32,10 @@
<!ENTITY userscripts "使用者腳本">
<!ENTITY Uninstall "腳本移除設定">
<!ENTITY AlsoUninstallPrefs "同時移除相關偏好設定">
+<!ENTITY UpdateChecking "檢查更新">
+<!ENTITY EnableUpdateChecking "自動檢查腳本更新">
+<!ENTITY UpdateInterval "檢查更新的最短時間間隔">
+<!ENTITY RequireSecureUpdates "要求透過安全通道更新">
<!ENTITY greasemonkey.noscriptshere "沒有任何在此頁面執行的腳本。">
<!ENTITY greasemonkey.youhavenoscripts "您尚未安裝任何腳本">
<!ENTITY greasemonkey.getuserscripts "取得使用者腳本">
diff --git a/chrome/greasemonkey.jar!/locale/zh-TW/greasemonkey.properties b/chrome/greasemonkey.jar!/locale/zh-TW/greasemonkey.properties
index afb54aa..7dea432 100644
--- a/chrome/greasemonkey.jar!/locale/zh-TW/greasemonkey.properties
+++ b/chrome/greasemonkey.jar!/locale/zh-TW/greasemonkey.properties
@@ -1,5 +1,9 @@
extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description=一套 Firefox 的使用者腳本管理器
-error.matchPattern.parse=@match: 無法剖析規則。
-error.matchPattern.scheme=@match: 指定了無效的模式。
+error.downloadingUrl=下載 URL 時發生錯誤:
error.matchPattern.host=@match: 指定了無效的主機名稱。
+error.matchPattern.parse=@match: 無法剖析規則。
error.matchPattern.path=@match: 指定了無效的路徑。
+error.matchPattern.scheme=@match: 指定了無效的模式。
+error.parsingScript=無法剖析腳本:
+error.serverReturned=伺服器回應
+error.unknown=未知錯誤。
diff --git a/chrome/greasemonkey.jar!/skin/addons4.css b/chrome/greasemonkey.jar!/skin/addons4.css
index d64ffef..fdb988f 100644
--- a/chrome/greasemonkey.jar!/skin/addons4.css
+++ b/chrome/greasemonkey.jar!/skin/addons4.css
@@ -36,16 +36,16 @@ page.greasemonkey #user-script-list-empty {
}
/* Do not show native items when view is user scripts. */
-#addonitem-popup:not([addontype="user-script"]) menuitem[type="user-script"],
-#addonitem-popup:not([addontype="user-script"]) menuseparator[type="user-script"],
+#addonitem-popup[addontype="user-script"] menuitem:not(.greasemonkey),
+#addonitem-popup[addontype="user-script"] menuseparator:not(.greasemonkey),
/* Do not show user script items when view is native. */
-#addonitem-popup[addontype="user-script"] menuitem:not([type]),
-#addonitem-popup[addontype="user-script"] menuseparator:not([type])
+#addonitem-popup:not([addontype="user-script"]) .greasemonkey
{
display: none !important;
}
/* Do show all items (even disabled ones!) when view is user scripts. */
-#addonitem-popup[addontype="user-script"] *[type="user-script"] {
+#addonitem-popup[addontype="user-script"] .greasemonkey
+{
display: -moz-box !important;
}
diff --git a/components/greasemonkey.js b/components/greasemonkey.js
index 1c15669..dce6e1f 100644
--- a/components/greasemonkey.js
+++ b/components/greasemonkey.js
@@ -3,6 +3,7 @@
var DESCRIPTION = "GM_GreasemonkeyService";
var CONTRACTID = "@greasemonkey.mozdev.org/greasemonkey-service;1";
var CLASSID = Components.ID("{77bf3650-1cd6-11da-8cd6-0800200c9a66}");
+var GM_GUID = "{e4a8a97b-f2ed-450b-b12d-ee082ba24781}";
var Cc = Components.classes;
var Ci = Components.interfaces;
@@ -17,7 +18,7 @@ var gExtensionPath = (function() {
var ioService = Components.classes["@mozilla.org/network/io-service;1"]
.getService(Components.interfaces.nsIIOService);
var uri = ioService.newURI(Components.stack.filename, null, null);
- var file = uri.QueryInterface(Components.interfaces.nsIFileURL).file
+ var file = uri.QueryInterface(Components.interfaces.nsIFileURL).file;
// ... to find the containing directory.
var dir = file.parent.parent;
// Then get the URL back for that path.
@@ -25,12 +26,23 @@ var gExtensionPath = (function() {
} catch (e) { dump(e+'\n'+uneval(e)+'\n\n'); return 'x'; }
})();
-var gMaxJSVersion = "1.6";
+// Only a particular set of strings are allowed. See: http://goo.gl/ex2LJ
+var gMaxJSVersion = "1.8";
+var gGreasemonkeyVersion = 'unknown';
+
var gMenuCommands = [];
var gStartupHasRun = false;
+var gFileProtocolHandler = Components
+ .classes["@mozilla.org/network/protocol;1?name=file"]
+ .getService(Ci.nsIFileProtocolHandler);
+var gTmpDir = Components.classes["@mozilla.org/file/directory_service;1"]
+ .getService(Components.interfaces.nsIProperties)
+ .get("TmpD", Components.interfaces.nsILocalFile);
+
/////////////////////// Component-global Helper Functions //////////////////////
+// TODO: Remove this, see #1318.
function alert(msg) {
Cc["@mozilla.org/embedcomp/prompt-service;1"]
.getService(Ci.nsIPromptService)
@@ -64,6 +76,57 @@ function GM_apiLeakCheck(apiName) {
return true;
}
+function createSandbox(
+ aScript, aContentWin, aChromeWin, aFirebugConsole, aUrl
+) {
+ var unsafeWin = aContentWin.wrappedJSObject;
+ var sandbox = new Components.utils.Sandbox(aContentWin);
+
+ if (GM_util.compareFirefoxVersion("4.0") < 0) {
+ // Fixes .. something confusing. Must be before __proto__ assignment.
+ // See #1192
+ sandbox.document = aContentWin.document;
+ }
+
+ sandbox.__proto__ = aContentWin;
+ sandbox.unsafeWindow = unsafeWin;
+ sandbox.XPathResult = Ci.nsIDOMXPathResult;
+
+ // Temporary workaround for #1318. TODO: Remove when upstream bug fixed.
+ sandbox.alert = alert;
+
+ sandbox.console = aFirebugConsole ? aFirebugConsole : new GM_console(aScript);
+
+ var imp = sandbox.importFunction;
+ imp(function(css) { GM_addStyle(aContentWin.document, css); }, 'GM_addStyle');
+ imp(GM_util.hitch(new GM_ScriptLogger(aScript), 'log'), 'GM_log');
+ imp(GM_util.hitch(null, registerMenuCommand, aContentWin, aChromeWin, aScript),
+ 'GM_registerMenuCommand');
+
+ var scriptStorage = new GM_ScriptStorage(aScript);
+ imp(GM_util.hitch(scriptStorage, 'deleteValue'), 'GM_deleteValue');
+ imp(GM_util.hitch(scriptStorage, 'getValue'), 'GM_getValue');
+ imp(GM_util.hitch(scriptStorage, 'setValue'), 'GM_setValue');
+
+ var scriptResources = new GM_Resources(aScript);
+ imp(GM_util.hitch(scriptResources, 'getResourceURL'), 'GM_getResourceURL');
+ imp(GM_util.hitch(scriptResources, 'getResourceText'), 'GM_getResourceText');
+
+ // The .importMethod() is safe because it can't return object values (I
+ // think?) -- but sometimes we want to, so in that case do a straight assign.
+ // TODO: When minVer=4 check if this is still necessary.
+ sandbox.GM_listValues = GM_util.hitch(scriptStorage, 'listValues');
+ sandbox.GM_openInTab = GM_util.hitch(null, openInTab, aContentWin, aChromeWin);
+ sandbox.GM_xmlhttpRequest = GM_util.hitch(
+ new GM_xmlhttpRequester(aContentWin, aChromeWin, aUrl),
+ 'contentStartRequest');
+
+ Components.utils.evalInSandbox(
+ 'const GM_info = ' + uneval(info(aScript)), sandbox);
+
+ return sandbox;
+}
+
function findError(script, lineNumber) {
var start = 0;
var end = 1;
@@ -96,19 +159,112 @@ function getFirebugConsole(wrappedContentWin, chromeWin) {
}
}
+function info(aScript) {
+ return {
+ 'version': gGreasemonkeyVersion,
+ 'scriptWillUpdate': aScript.isRemoteUpdateAllowed(),
+ 'script': {
+ 'description': aScript.description,
+ 'excludes': aScript.excludes,
+ // 'icon': ???,
+ 'includes': aScript.includes,
+ 'matches': aScript.matches,
+ 'name': aScript.name,
+ 'namespace': aScript.namespace,
+ // 'requires': ???,
+ // 'resources': ???,
+ 'run-at': aScript.runAt,
+ 'unwrap': aScript.unwrap,
+ 'version': aScript.version,
+ },
+ 'scriptMetaStr': extractMeta(aScript.textContent),
+ }
+}
+
function isTempScript(uri) {
if (uri.scheme != "file") return false;
+ var file = gFileProtocolHandler.getFileFromURLSpec(uri.spec);
+ return gTmpDir.contains(file, true);
+}
- var fph = Components.classes["@mozilla.org/network/protocol;1?name=file"]
- .getService(Ci.nsIFileProtocolHandler);
+function loadGreasemonkeyVersion() {
+ // Find the new version, and call the continuation when ready. (Firefox 4+
+ // gives us only an async API, requiring this cumbersome setup.)
+ if (GM_util.compareFirefoxVersion("4.0") < 0) {
+ // This is too early for Firefox 3. Sloppy timeout workaround.
+ GM_util.timeout(0, function() {
+ var extMan = Components.classes["@mozilla.org/extensions/manager;1"]
+ .getService(Components.interfaces.nsIExtensionManager);
+ var item = extMan.getItemForID(GM_GUID);
+ gGreasemonkeyVersion = new String(item.version);
+ });
+ } else {
+ Components.utils.import("resource://gre/modules/AddonManager.jsm");
+ AddonManager.getAddonByID(GM_GUID, function(addon) {
+ gGreasemonkeyVersion = new String(addon.version);
+ });
+ }
+}
- var file = fph.getFileFromURLSpec(uri.spec);
- var tmpDir = Components.classes["@mozilla.org/file/directory_service;1"]
- .getService(Components.interfaces.nsIProperties)
- .get("TmpD", Components.interfaces.nsILocalFile);
+function openInTab(safeContentWin, chromeWin, url, aLoadInBackground) {
+ if (!GM_apiLeakCheck("GM_openInTab")) {
+ return undefined;
+ }
+ if ('undefined' == typeof aLoadInBackground) aLoadInBackground = null;
- return file.parent.equals(tmpDir) && file.leafName != "newscript.user.js";
-}
+ var browser = chromeWin.gBrowser;
+ var tabs = browser.mTabs /* Firefox <=3.6 */ || browser.tabs /* >=4.0 */;
+ var currentTab = tabs[
+ browser.getBrowserIndexForDocument(safeContentWin.document)];
+ var newTab = browser.loadOneTab(url, {'inBackground': aLoadInBackground});
+ var newWin = GM_windowForTab(newTab, browser);
+
+ var afterCurrent = Cc["@mozilla.org/preferences-service;1"]
+ .getService(Ci.nsIPrefService)
+ .getBranch("browser.tabs.")
+ .getBoolPref("insertRelatedAfterCurrent");
+ if (afterCurrent) {
+ browser.moveTabTo(newTab, currentTab._tPos + 1);
+ }
+
+ return newWin;
+};
+
+function registerMenuCommand(
+ wrappedContentWin, chromeWin, script,
+ commandName, commandFunc, accessKey, unused, accessKey2
+) {
+ if (!GM_apiLeakCheck("GM_registerMenuCommand")) {
+ return;
+ }
+
+ if (wrappedContentWin.top != wrappedContentWin) {
+ // Only register menu commands for the top level window.
+ return;
+ }
+
+ // Legacy support: if all five parameters were specified, (from when two
+ // were for accelerators) use the last one as the access key.
+ if ('undefined' != typeof accessKey2) {
+ accessKey = accessKey2;
+ }
+
+ if (accessKey
+ && (("string" != typeof accessKey) || (accessKey.length != 1))
+ ) {
+ throw new Error('Error with menu command "'
+ + commandName + '": accessKey must be a single character');
+ }
+
+ var command = {
+ name: commandName,
+ accessKey: accessKey,
+ commandFunc: commandFunc,
+ contentWindow: wrappedContentWin,
+ contentWindowId: GM_util.windowId(wrappedContentWin),
+ frozen: false};
+ gMenuCommands.push(command);
+};
function runScriptInSandbox(code, sandbox, script) {
try {
@@ -149,6 +305,7 @@ function startup() {
gStartupHasRun = true;
Cu.import(gmRunScriptFilename);
+ Cu.import("resource://greasemonkey/parseScript.js");
Cu.import("resource://greasemonkey/prefmanager.js");
Cu.import("resource://greasemonkey/util.js"); // At top = fail in FF3.
@@ -156,18 +313,12 @@ function startup() {
.getService(Ci.mozIJSSubScriptLoader);
loader.loadSubScript("chrome://global/content/XPCNativeWrapper.js");
loader.loadSubScript("chrome://greasemonkey/content/config.js");
- loader.loadSubScript("chrome://greasemonkey/content/script.js");
- loader.loadSubScript("chrome://greasemonkey/content/scriptrequire.js");
- loader.loadSubScript("chrome://greasemonkey/content/scriptresource.js");
- loader.loadSubScript("chrome://greasemonkey/content/scripticon.js");
loader.loadSubScript("chrome://greasemonkey/content/miscapis.js");
loader.loadSubScript("chrome://greasemonkey/content/xmlhttprequester.js");
- loader.loadSubScript("chrome://greasemonkey/content/scriptdownloader.js");
loader.loadSubScript("chrome://greasemonkey/content/third-party/mpl-utils.js");
- // Firefox 3.6 and higher supports 1.8.
- if (GM_util.compareFirefoxVersion("3.6") >= 0) {
- gMaxJSVersion = "1.8";
+ if (GM_util.compareFirefoxVersion("4.0") >= 0) {
+ gMaxJSVersion = "ECMAv5";
}
// Firefox <4 reports a different stack.fileName for the module.
@@ -175,6 +326,8 @@ function startup() {
// Pull the name out of the variable the module exports.
gmRunScriptFilename = GM_runScript_filename;
}
+
+ loadGreasemonkeyVersion();
}
/////////////////////////////////// Service ////////////////////////////////////
@@ -208,70 +361,6 @@ service.prototype.QueryInterface = XPCOMUtils.generateQI([
Ci.nsIContentPolicy
]);
-/////////////////////////////////// Privates ///////////////////////////////////
-
-service.prototype._openInTab = function(
- safeContentWin, chromeWin, url, aLoadInBackground
-) {
- if (!GM_apiLeakCheck("GM_openInTab")) {
- return undefined;
- }
- if ('undefined' == typeof aLoadInBackground) aLoadInBackground = null;
-
- var browser = chromeWin.gBrowser;
- var tabs = browser.mTabs /* Firefox <=3.6 */ || browser.tabs /* >=4.0 */;
- var currentTab = tabs[
- browser.getBrowserIndexForDocument(safeContentWin.document)];
- var newTab = browser.loadOneTab(url, {'inBackground': aLoadInBackground});
- var newWin = GM_windowForTab(newTab, browser);
-
- var afterCurrent = Cc["@mozilla.org/preferences-service;1"]
- .getService(Ci.nsIPrefService)
- .getBranch("browser.tabs.")
- .getBoolPref("insertRelatedAfterCurrent");
- if (afterCurrent) {
- browser.moveTabTo(newTab, currentTab._tPos + 1);
- }
-
- return newWin;
-};
-
-service.prototype._registerMenuCommand = function(
- wrappedContentWin, chromeWin, script,
- commandName, commandFunc, accessKey, unused, accessKey2
-) {
- if (!GM_apiLeakCheck("GM_registerMenuCommand")) {
- return;
- }
-
- if (wrappedContentWin.top != wrappedContentWin) {
- // Only register menu commands for the top level window.
- return;
- }
-
- // Legacy support: if all five parameters were specified, (from when two
- // were for accelerators) use the last one as the access key.
- if ('undefined' != typeof accessKey2) {
- accessKey = accessKey2;
- }
-
- if (accessKey
- && (("string" != typeof accessKey) || (accessKey.length != 1))
- ) {
- throw new Error('Error with menu command "'
- + commandName + '": accessKey must be a single character');
- }
-
- var command = {
- name: commandName,
- accessKey: accessKey,
- commandFunc: commandFunc,
- contentWindow: wrappedContentWin,
- contentWindowId: GM_util.windowId(wrappedContentWin),
- frozen: false};
- gMenuCommands.push(command);
-};
-
/////////////////////////////// nsIContentPolicy ///////////////////////////////
service.prototype.shouldLoad = function(ct, cl, org, ctx, mt, ext) {
@@ -292,15 +381,14 @@ service.prototype.shouldLoad = function(ct, cl, org, ctx, mt, ext) {
|| ct == Ci.nsIContentPolicy.TYPE_SUBDOCUMENT)
&& cl.spec.match(/\.user\.js$/)
) {
- if (!this.ignoreNextScript_
- && !isTempScript(cl)
- && GM_util.installUri(cl, ctx.contentWindow)
- ) {
+ if (!this._ignoreNextScript && !isTempScript(cl)) {
+ GM_util.showInstallDialog(cl.spec, ctx, this);
ret = Ci.nsIContentPolicy.REJECT_REQUEST;
}
+
+ this._ignoreNextScript = false;
}
- this.ignoreNextScript_ = false;
return ret;
};
@@ -335,15 +423,16 @@ service.prototype.__defineGetter__('config', function() {
});
service.prototype.contentDestroyed = function(contentWindowId) {
- if (!contentWindowId) return;
this.withAllMenuCommandsForWindowId(null, function(index, command) {
var closed = false;
try { closed = command.contentWindow.closed; } catch (e) { }
- if (closed || (command.contentWindowId == contentWindowId)) {
+ if (closed ||
+ (contentWindowId && (command.contentWindowId == contentWindowId))
+ ) {
gMenuCommands.splice(index, 1);
}
- });
+ }, true);
};
service.prototype.contentFrozen = function(contentWindowId) {
@@ -365,80 +454,30 @@ service.prototype.runScripts = function(
if (!GM_util.getEnabled() || !GM_util.isGreasemonkeyable(url)) return;
if (GM_prefRoot.getValue('enableScriptRefreshing')) {
- this._config.updateModifiedScripts(aWrappedContentWin, aChromeWin);
+ this._config.updateModifiedScripts(aRunWhen, aWrappedContentWin, aChromeWin);
}
var scripts = this.config.getMatchingScripts(function(script) {
- return GM_util.scriptMatchesUrlAndRuns(script, url, aRunWhen);
- });
+ return GM_util.scriptMatchesUrlAndRuns(script, url, aRunWhen);
+ });
if (scripts.length > 0) {
this.injectScripts(scripts, url, aWrappedContentWin, aChromeWin);
+ this._config.checkScriptsForRemoteUpdates(scripts);
}
};
service.prototype.ignoreNextScript = function() {
- this.ignoreNextScript_ = true;
+ this._ignoreNextScript = true;
};
service.prototype.injectScripts = function(
scripts, url, wrappedContentWin, chromeWin
) {
- var sandbox;
- var script;
- var logger;
- var console;
- var storage;
- var xmlhttpRequester;
- var resources;
- var unsafeContentWin = wrappedContentWin.wrappedJSObject;
var firebugConsole = getFirebugConsole(wrappedContentWin, chromeWin);
- for (var i = 0; script = scripts[i]; i++) {
- sandbox = new Components.utils.Sandbox(wrappedContentWin);
-
- logger = new GM_ScriptLogger(script);
-
- console = firebugConsole ? firebugConsole : new GM_console(script);
-
- storage = new GM_ScriptStorage(script);
- xmlhttpRequester = new GM_xmlhttpRequester(
- wrappedContentWin, chromeWin, url);
- resources = new GM_Resources(script);
-
- sandbox.unsafeWindow = unsafeContentWin;
-
- // hack XPathResult since that is so commonly used
- sandbox.XPathResult = Ci.nsIDOMXPathResult;
-
- // add our own APIs
- sandbox.GM_addStyle = function(css) {
- GM_addStyle(wrappedContentWin.document, css);
- };
- sandbox.GM_log = GM_util.hitch(logger, "log");
- sandbox.console = console;
- sandbox.GM_setValue = GM_util.hitch(storage, "setValue");
- sandbox.GM_getValue = GM_util.hitch(storage, "getValue");
- sandbox.GM_deleteValue = GM_util.hitch(storage, "deleteValue");
- sandbox.GM_listValues = GM_util.hitch(storage, "listValues");
- sandbox.GM_getResourceURL = GM_util.hitch(resources, "getResourceURL");
- sandbox.GM_getResourceText = GM_util.hitch(resources, "getResourceText");
- sandbox.GM_openInTab = GM_util.hitch(
- this, "_openInTab", wrappedContentWin, chromeWin);
- sandbox.GM_xmlhttpRequest = GM_util.hitch(xmlhttpRequester,
- "contentStartRequest");
- sandbox.GM_registerMenuCommand = GM_util.hitch(
- this, "_registerMenuCommand", wrappedContentWin, chromeWin, script);
-
- // Re-wrap the window before assigning it to the sandbox.__proto__
- // This is a workaround for a bug in which the Security Manager
- // vetoes the use of eval.
- sandbox.__proto__ = new XPCNativeWrapper(unsafeContentWin);
-
- Components.utils.evalInSandbox(
- "var document = window.document;", sandbox);
-
- // Temporary workaround for #1318. TODO: Remove when upstream bug fixed.
- sandbox.alert = alert;
+ for (var i = 0, script = null; script = scripts[i]; i++) {
+ var sandbox = createSandbox(
+ script, wrappedContentWin, chromeWin, firebugConsole, url);
var requires = [];
var offsets = [];
@@ -456,7 +495,9 @@ service.prototype.injectScripts = function(
// These newlines are critical for error line calculation. The last handles
// a script whose final line is a line comment, to not break the wrapper
// function.
- var scriptSrc = requires.join("\n") + "\n" + script.textContent + "\n";
+ // The semicolons after requires fix a failure of javascript's semicolon
+ // insertion rules (see #1491).
+ var scriptSrc = requires.join(";\n") + ";\n" + script.textContent + "\n";
if (!script.unwrap) {
scriptSrc = "(function(){"+ scriptSrc +"})()";
}
@@ -468,14 +509,16 @@ service.prototype.injectScripts = function(
};
service.prototype.withAllMenuCommandsForWindowId = function(
- contentWindowId, callback
+ aContentWindowId, aCallback, aForce
) {
+ if(!aContentWindowId && !aForce) return;
+
var l = gMenuCommands.length - 1;
for (var i = l, command = null; command = gMenuCommands[i]; i--) {
- if (!contentWindowId
- || (command.contentWindowId == contentWindowId)
+ if (aForce
+ || (command.contentWindowId == aContentWindowId)
) {
- callback(i, command);
+ aCallback(i, command);
}
}
};
diff --git a/defaults/preferences/greasemonkey.js b/defaults/preferences/greasemonkey.js
index af7ce6c..5d73716 100644
--- a/defaults/preferences/greasemonkey.js
+++ b/defaults/preferences/greasemonkey.js
@@ -1,8 +1,12 @@
pref("extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.description", "chrome://greasemonkey/locale/greasemonkey.properties");
pref("greasemonkey.fileIsGreaseable", false);
pref("greasemonkey.globalExcludes", '[]');
+pref("greasemonkey.installDelay", 5);
pref("greasemonkey.unmhtIsGreaseable", false);
pref("greasemonkey.enableScriptRefreshing", true);
pref("greasemonkey.uninstallPreferences", true);
+pref("greasemonkey.enableUpdateChecking", false);
+pref("greasemonkey.minDaysBetweenUpdateChecks", 7);
+pref("greasemonkey.requireSecureUpdates", true);
pref("greasemonkey.haveInsertedToolbarbutton", false);
pref("greasemonkey.logChrome", false);
diff --git a/install.rdf b/install.rdf
index dc6c2f6..28a68f5 100644
--- a/install.rdf
+++ b/install.rdf
@@ -6,7 +6,7 @@
<Description about="urn:mozilla:install-manifest">
<em:id>{e4a8a97b-f2ed-450b-b12d-ee082ba24781}</em:id>
- <em:version>0.9.11</em:version>
+ <em:version>0.9.17</em:version>
<em:creator>Aaron Boodman; http://youngpup.net/</em:creator>
<em:homepageURL>http://www.greasespot.net/</em:homepageURL>
<em:optionsURL>chrome://greasemonkey/content/options.xul</em:optionsURL>
@@ -38,6 +38,7 @@
<em:contributor>Nikolas Coukouma; http://atrus.org/</em:contributor>
<em:contributor>Ori Avtallon</em:contributor>
<em:contributor>Pak Kei (logo); http://arkidect.com/</em:contributor>
+ <em:contributor>Sam Larison; http://samlarison.com/</em:contributor>
<em:contributor>Sergio Abreu; http://sitedosergio.sitesbr.net/</em:contributor>
<em:contributor>Tommi Rautava</em:contributor>
@@ -46,7 +47,7 @@
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>3.6</em:minVersion>
- <em:maxVersion>7.*</em:maxVersion>
+ <em:maxVersion>12.*</em:maxVersion>
</Description>
</em:targetApplication>
diff --git a/modules/addons4.js b/modules/addons4.js
index 482facc..ac2f95d 100755
--- a/modules/addons4.js
+++ b/modules/addons4.js
@@ -8,7 +8,9 @@
// Module exported symbols.
var EXPORTED_SYMBOLS = [
'GM_addonsStartup', 'SCRIPT_ADDON_TYPE',
- 'ScriptAddonFactoryByScript', 'ScriptAddonReplaceScript'];
+ 'ScriptAddonFactoryByScript', 'ScriptAddonReplaceScript',
+ 'ScriptInstallFactoryByAddon',
+ ];
////////////////////////////////////////////////////////////////////////////////
// Module level imports / constants / globals.
@@ -44,6 +46,19 @@ var AddonProvider = {
});
aCallback(scriptAddons);
}
+ },
+
+ getInstallsByTypes: function(aTypes, aCallback) {
+ var scriptInstalls = [];
+ GM_util.getService().config.scripts.forEach(function(script) {
+ if (!script.updateAvailable) return;
+
+ var aAddon = ScriptAddonFactoryByScript(script);
+ var scriptInstall = ScriptInstallFactoryByAddon(aAddon);
+
+ scriptInstalls.push(scriptInstall);
+ });
+ aCallback(scriptInstalls);
}
};
@@ -78,9 +93,10 @@ function ScriptAddon(aScript) {
this.name = this._script.name;
this.version = this._script.version;
this.description = this._script.description;
- this.iconURL = this._script.icon.fileURL;
- this.size = this._script.size;
+ this.iconURL = this._script.icon && this._script.icon.fileURL;
this.updateDate = this._script.modifiedDate;
+ this.providesUpdatesSecurely = !!aScript.updateURL
+ && (0 === aScript.updateURL.indexOf('https:'));
}
// Required attributes.
@@ -88,17 +104,17 @@ ScriptAddon.prototype.id = null;
ScriptAddon.prototype.version = null;
ScriptAddon.prototype.type = SCRIPT_ADDON_TYPE;
ScriptAddon.prototype.isCompatible = true;
-ScriptAddon.prototype.providesUpdatesSecurely = true;
ScriptAddon.prototype.blocklistState = 0;
ScriptAddon.prototype.appDisabled = false;
ScriptAddon.prototype.scope = AddonManager.SCOPE_PROFILE;
ScriptAddon.prototype.name = null;
ScriptAddon.prototype.creator = null;
ScriptAddon.prototype.pendingOperations = 0;
+ScriptAddon.prototype.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DEFAULT;
+ScriptAddon.prototype.operationsRequiringRestart = AddonManager.OP_NEEDS_RESTART_NONE;
// Optional attributes
ScriptAddon.prototype.description = null;
-ScriptAddon.prototype.size = null;
// Private and custom attributes.
ScriptAddon.prototype._script = null;
@@ -115,7 +131,7 @@ function ScriptAddon_getIsActive() {
});
ScriptAddon.prototype.__defineGetter__('optionsURL',
-function ScriptAddon_getIsActive() {
+function ScriptAddon_getOptionsURL() {
return 'chrome://greasemonkey/content/scriptprefs.xul#' + this._script.id;
});
@@ -143,6 +159,7 @@ function ScriptAddon_getPermissions() {
perms |= this.userDisabled
? AddonManager.PERM_CAN_ENABLE
: AddonManager.PERM_CAN_DISABLE;
+ if (this._script.updateURL) perms |= AddonManager.PERM_CAN_UPGRADE;
return perms;
});
@@ -150,28 +167,27 @@ ScriptAddon.prototype.isCompatibleWith = function() {
return true;
};
-ScriptAddon.prototype.findUpdates = function(aListener) {
- if ('onNoCompatibilityUpdateAvailable' in aListener) {
- aListener.onNoCompatibilityUpdateAvailable(this);
- }
- if ('onNoUpdateAvailable' in aListener) {
- aListener.onNoUpdateAvailable(this);
- }
- if ('onUpdateFinished' in aListener) {
- aListener.onUpdateFinished(this);
+ScriptAddon.prototype.findUpdates = function(aListener, aReason) {
+ function updateCallback(aAvailable) {
+ this._script.handleRemoteUpdate(aAvailable, aListener);
}
+ this._script.checkForRemoteUpdate(true, GM_util.hitch(this, updateCallback));
+};
+
+ScriptAddon.prototype.toString = function() {
+ return '[ScriptAddon object ' + this.id + ']';
};
ScriptAddon.prototype.uninstall = function() {
- AddonManagerPrivate.callAddonListeners("onUninstalling", this, false);
+ AddonManagerPrivate.callAddonListeners('onUninstalling', this, false);
// TODO: pick an appropriate time, and act on these pending uninstalls.
this.pendingOperations |= AddonManager.PENDING_UNINSTALL;
- AddonManagerPrivate.callAddonListeners("onUninstalled", this);
+ AddonManagerPrivate.callAddonListeners('onUninstalled', this);
};
ScriptAddon.prototype.cancelUninstall = function() {
this.pendingOperations ^= AddonManager.PENDING_UNINSTALL;
- AddonManagerPrivate.callAddonListeners("onOperationCancelled", this);
+ AddonManagerPrivate.callAddonListeners('onOperationCancelled', this);
};
ScriptAddon.prototype.performUninstall = function() {
@@ -179,6 +195,80 @@ ScriptAddon.prototype.performUninstall = function() {
delete ScriptAddonCache[this.id];
};
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+var ScriptInstallCache = {};
+function ScriptInstallFactoryByAddon(aAddon) {
+ if (!(aAddon.id in ScriptInstallCache)) {
+ ScriptInstallCache[aAddon.id] = new ScriptInstall(aAddon);
+ }
+ return ScriptInstallCache[aAddon.id];
+}
+
+function ScriptInstall(aAddon) {
+ this._script = aAddon._script;
+
+ this.name = this._script.name;
+ this.version = this._script.version;
+ this.iconURL = this._script.icon.fileURL;
+ this.existingAddon = aAddon;
+
+ this._listeners = [];
+}
+
+// Required attributes.
+ScriptInstall.prototype.addon = null;
+ScriptInstall.prototype.error = null;
+ScriptInstall.prototype.file = null;
+ScriptInstall.prototype.maxProgress = -1;
+ScriptInstall.prototype.progress = 0;
+ScriptInstall.prototype.releaseNotesURI = null;
+ScriptInstall.prototype.sourceURI = null;
+ScriptInstall.prototype.state = AddonManager.STATE_AVAILABLE;
+ScriptInstall.prototype.type = 'user-script';
+
+// Private and custom attributes.
+ScriptInstall.prototype._script = null;
+
+ScriptInstall.prototype.install = function() {
+ function progressCallback(aRemoteScript, aType, aData) {
+ this.maxProgress = 100;
+ this.progress = Math.floor(aData * 100);
+ AddonManagerPrivate.callInstallListeners(
+ 'onDownloadProgress', this._listeners, this);
+ }
+
+ AddonManagerPrivate.callAddonListeners('onInstallStarted', this);
+ this.state = AddonManager.STATE_DOWNLOADING;
+ this._remoteScript = this._script.installUpdate(
+ GM_util.hitch(this, progressCallback));
+};
+
+ScriptInstall.prototype.cancel = function() {
+ this.state = AddonManager.STATE_AVAILABLE;
+ AddonManagerPrivate.callAddonListeners(
+ 'onInstallEnded', this, this.existingAddon);
+ if (this._remoteScript) {
+ this._remoteScript.cleanup();
+ this._remoteScript = null;
+ }
+};
+
+ScriptInstall.prototype.addListener = function AI_addListener(aListener) {
+ if (!this._listeners.some(function(i) { return i == aListener; })) {
+ this._listeners.push(aListener);
+ }
+};
+
+ScriptInstall.prototype.removeListener = function AI_removeListener(aListener) {
+ this._listeners =
+ this._listeners.filter(function(i) { return i != aListener; });
+};
+
+ScriptInstall.prototype.toString = function() {
+ return '[ScriptInstall object ' + this._script.id + ']';
+};
+
////////////////////////////////////////////////////////////////////////////////
var WindowObserver = {
diff --git a/modules/third-party/MatchPattern.js b/modules/third-party/MatchPattern.js
index 1be4f39..e95e639 100644
--- a/modules/third-party/MatchPattern.js
+++ b/modules/third-party/MatchPattern.js
@@ -40,8 +40,8 @@
var EXPORTED_SYMBOLS = ['MatchPattern'];
-Components.utils.import("resource://gre/modules/NetUtil.jsm");
Components.utils.import("resource://greasemonkey/third-party/convert2RegExp.js");
+Components.utils.import("resource://greasemonkey/util.js");
var validSchemes = ['http', 'https', 'ftp', 'file'];
var REG_HOST = /^(?:\*\.)?[^*\/]+$|^\*$|^$/;
diff --git a/modules/third-party/convert2RegExp.js b/modules/third-party/convert2RegExp.js
index 686d6bd..bf88d94 100644
--- a/modules/third-party/convert2RegExp.js
+++ b/modules/third-party/convert2RegExp.js
@@ -28,6 +28,7 @@
Components.utils.import('resource://greasemonkey/util.js');
var EXPORTED_SYMBOLS = ['GM_convert2RegExp'];
+var tldRegExp = new RegExp("^(\\^(?:[^/]*)(?://)?(?:[^/]*))(\\\\\\.tld)((?:/.*)?)$");
// Converts a pattern in this programs simple notation to a regular expression.
function GM_convert2RegExp( pattern ) {
@@ -72,15 +73,12 @@ function GM_convert2RegExp( pattern ) {
}
}
- var tldRegExp = new RegExp("^(\\^(?:[^/]*)(?://)?(?:[^/]*))(\\\\\\.tld)((?:/.*)?)$");
var tldRes = res.match(tldRegExp);
- if (tldRes) {
- // build the mighty TLD RegExp
- var tldStr = "\\.(?:demon\\.co\\.uk|esc\\.edu\\.ar|(?:c[oi]\\.)?[^\\.]\\.(?:vt|ne|ks|il|hi|sc|nh|ia|wy|or|ma|vi|tn|in|az|id|nc|co|dc|nd|me|al|ak|de|wv|nm|mo|pr|nj|sd|md|va|ri|ut|ct|pa|ok|ky|mt|ga|la|oh|ms|wi|wa|gu|mi|tx|fl|ca|ar|mn|ny|nv)\\.us|[^\\.]\\.(?:(?:pvt\\.)?k12|cc|tec|lib|state|gen)\\.(?:vt|ne|ks|il|hi|sc|nh|ia|wy|or|ma|vi|tn|in|az|id|nc|co|dc|nd|me|al|ak|de|wv|nm|mo|pr|nj|sd|md|va|ri|ut|ct|pa|ok|ky|mt|ga|la|oh|ms|wi|wa|gu|mi|tx|fl|ca|ar|mn|ny|nv)\\.us|[^\\.]\\.vt|ne|ks|il|hi|sc|nh|ia|wy|or|ma|vi|tn|in|az|id|nc|co|dc|nd|me|al|ak|de|wv|nm|mo|pr|nj|sd|md|va|ri|ut|ct|pa|ok|ky|mt|ga|la|oh|ms|wi|wa|gu|mi|tx|fl|ca|ar|mn|ny|nvus|ne|gg|tr|mm|ki|biz|sj|my|hn|gl|ro|tn|co|br|coop|cy|bo|ck|tc|bv|ke|aero|cs|dm|km|bf|af|mv|ls|tm|jm|pg|ky|ga|pn|sv|mq|hu|za|se|uy|iq|ai|com|ve|na|ba|ph|xxx|no|lv|tf|kz|ma|in|id|si|re|om|by|fi|gs|ir|li|tz|td|cg|pa|am|tv|jo|bi|ee|cd|pk|mn|gd|nz|as|lc|ae|cn|ag|mx|sy|cx|cr|vi|sg|bm|kh|nr|bz|vu|kw|gf|al|uz|eh|int|ht|mw|gm|bg|gu|info|aw|gy|ac|ca|museum|sk|ax|es|kp|bb|sa|et|ie|tl|org|tj|cf|im|mk|de|pro|md|fm|cl|jp|bn|vn|gp|sm|ar|dj|bd|mc|ug|nu|ci|dk|nc|rw|aq|name|st|hm|mo|gq|ps|ge|ao|gr|va|is|mt|gi|la|bh|ms|bt|gb|it|wf|sb|ly|ng|gt|lu|il|pt|mh|eg|kg|pf|um|fr|sr|vg|fj|py|pm|sn|sd|au|sl|gh|us|mr|dz|ye|kn|cm|arpa|bw|lk|mg|tk|su|sc|ru|travel|az|ec|mz|lb|ml|bj|edu|pr|fk|lr|nf|np|do|mp|bs|to|cu|ch|yu|eu|mu|ni|pw|pl|gov|pe|an|ua|uk|gw|tp|kr|je|tt|net|fo|jobs|yt|cc|sh|io|zm|hk|th|so|er|cz|lt|mil|hr|gn|be|qa|cv|vc|tw|ws|ad|sz|at|tg|zw|nl|info\\.tn|org\\.sd|med\\.sd|com\\.hk|org\\.ai|edu\\.sg|at\\.tt|mail\\.pl|net\\.ni|pol\\.dz|hiroshima\\.jp|org\\.bh|edu\\.vu|net\\.im|ernet\\.in|nic\\.tt|com\\.tn|go\\.cr|jersey\\.je|bc\\.ca|com\\.la|go\\.jp|com\\.uy|tourism\\.tn|com\\.ec|conf\\.au|dk\\.org|shizuoka\\.jp|ac\\.vn|matsuyama\\.jp|agro\\.pl|yamaguchi\\.jp|edu\\.vn|yamanashi\\.jp|mil\\.in|sos\\.pl|bj\\.cn|net\\.au|ac\\.ae|psi\\.br|sch\\.ng|org\\.mt|edu\\.ai|edu\\.ck|ac\\.yu|org\\.ws|org\\.ng|rel\\.pl|uk\\.tt|com\\.py|aomori\\.jp|co\\.ug|video\\.hu|net\\.gg|org\\.pk|id\\.au|gov\\.zw|mil\\.tr|net\\.tn|org\\.ly|re\\.kr|mil\\.ye|mil\\.do|com\\.bb|net\\.vi|edu\\.na|co\\.za|asso\\.re|nom\\.pe|edu\\.tw|name\\.et|jl\\.cn|gov\\.ye|ehime\\.jp|miyazaki\\.jp|kanagawa\\.jp|gov\\.au|nm\\.cn|he\\.cn|edu\\.sd|mod\\.om|web\\.ve|edu\\.hk|medecin\\.fr|org\\.cu|info\\.au|edu\\.ve|nx\\.cn|alderney\\.gg|net\\.cu|org\\.za|mb\\.ca|com\\.ye|edu\\.pa|fed\\.us|ac\\.pa|alt\\.na|mil\\.lv|fukuoka\\.jp|gen\\.in|gr\\.jp|gov\\.br|gov\\.ac|id\\.fj|fukui\\.jp|hu\\.com|org\\.gu|net\\.ae|mil\\.ph|ltd\\.je|alt\\.za|gov\\.np|edu\\.jo|net\\.gu|g12\\.br|org\\.tn|store\\.co|fin\\.tn|ac\\.nz|gouv\\.fr|gov\\.il|org\\.ua|org\\.do|org\\.fj|sci\\.eg|gov\\.tt|cci\\.fr|tokyo\\.jp|net\\.lv|gov\\.lc|ind\\.br|ca\\.tt|gos\\.pk|hi\\.cn|net\\.do|co\\.tv|web\\.co|com\\.pa|com\\.ng|ac\\.ma|gov\\.bh|org\\.zw|csiro\\.au|lakas\\.hu|gob\\.ni|gov\\.fk|org\\.sy|gov\\.lb|gov\\.je|ed\\.cr|nb\\.ca|net\\.uy|com\\.ua|media\\.hu|com\\.lb|nom\\.pl|org\\.br|hk\\.cn|co\\.hu|org\\.my|gov\\.dz|sld\\.pa|gob\\.pk|net\\.uk|guernsey\\.gg|nara\\.jp|telememo\\.au|k12\\.tr|org\\.nz|pub\\.sa|edu\\.ac|com\\.dz|edu\\.lv|edu\\.pk|com\\.ph|net\\.na|net\\.et|id\\.lv|au\\.com|ac\\.ng|com\\.my|net\\.cy|unam\\.na|nom\\.za|net\\.np|info\\.pl|priv\\.hu|rec\\.ve|ac\\.uk|edu\\.mm|go\\.ug|ac\\.ug|co\\.dk|net\\.tt|oita\\.jp|fi\\.cr|org\\.ac|aichi\\.jp|org\\.tt|edu\\.bh|us\\.com|ac\\.kr|js\\.cn|edu\\.ni|com\\.mt|fam\\.pk|experts-comptables\\.fr|or\\.kr|org\\.au|web\\.pk|mil\\.jo|biz\\.pl|org\\.np|city\\.hu|org\\.uy|auto\\.pl|aid\\.pl|bib\\.ve|mo\\.cn|br\\.com|dns\\.be|sh\\.cn|org\\.mo|com\\.sg|me\\.uk|gov\\.kw|eun\\.eg|kagoshima\\.jp|ln\\.cn|seoul\\.kr|school\\.fj|com\\.mk|e164\\.arpa|rnu\\.tn|pro\\.ae|org\\.om|gov\\.my|net\\.ye|gov\\.do|co\\.im|org\\.lb|plc\\.co\\.im|net\\.jp|go\\.id|net\\.tw|gov\\.ai|tlf\\.nr|ac\\.im|com\\.do|net\\.py|tozsde\\.hu|com\\.na|tottori\\.jp|net\\.ge|gov\\.cn|org\\.bb|net\\.bs|ac\\.za|rns\\.tn|biz\\.pk|gov\\.ge|org\\.uk|org\\.fk|nhs\\.uk|net\\.bh|tm\\.za|co\\.nz|gov\\.jp|jogasz\\.hu|shop\\.pl|media\\.pl|chiba\\.jp|city\\.za|org\\.ck|net\\.id|com\\.ar|gon\\.pk|gov\\.om|idf\\.il|net\\.cn|prd\\.fr|co\\.in|or\\.ug|red\\.sv|edu\\.lb|k12\\.ec|gx\\.cn|net\\.nz|info\\.hu|ac\\.zw|info\\.tt|com\\.ws|org\\.gg|com\\.et|ac\\.jp|ac\\.at|avocat\\.fr|org\\.ph|sark\\.gg|org\\.ve|tm\\.pl|net\\.pg|gov\\.co|com\\.lc|film\\.hu|ishikawa\\.jp|hotel\\.hu|hl\\.cn|edu\\.ge|com\\.bm|ac\\.om|tec\\.ve|edu\\.tr|cq\\.cn|com\\.pk|firm\\.in|inf\\.br|gunma\\.jp|gov\\.tn|oz\\.au|nf\\.ca|akita\\.jp|net\\.sd|tourism\\.pl|net\\.bb|or\\.at|idv\\.tw|dni\\.us|org\\.mx|conf\\.lv|net\\.jo|nic\\.in|info\\.vn|pe\\.kr|tw\\.cn|org\\.eg|ad\\.jp|hb\\.cn|kyonggi\\.kr|bourse\\.za|org\\.sb|gov\\.gg|net\\.br|mil\\.pe|kobe\\.jp|net\\.sa|edu\\.mt|org\\.vn|yokohama\\.jp|net\\.il|ac\\.cr|edu\\.sb|nagano\\.jp|travel\\.pl|gov\\.tr|com\\.sv|co\\.il|rec\\.br|biz\\.om|com\\.mm|com\\.az|org\\.vu|edu\\.ng|com\\.mx|info\\.co|realestate\\.pl|mil\\.sh|yamagata\\.jp|or\\.id|org\\.ae|greta\\.fr|k12\\.il|com\\.tw|gov\\.ve|arts\\.ve|cul\\.na|gov\\.kh|org\\.bm|etc\\.br|or\\.th|ch\\.vu|de\\.tt|ind\\.je|org\\.tw|nom\\.fr|co\\.tt|net\\.lc|intl\\.tn|shiga\\.jp|pvt\\.ge|gov\\.ua|org\\.pe|net\\.kh|co\\.vi|iwi\\.nz|biz\\.vn|gov\\.ck|edu\\.eg|zj\\.cn|press\\.ma|ac\\.in|eu\\.tt|art\\.do|med\\.ec|bbs\\.tr|gov\\.uk|edu\\.ua|eu\\.com|web\\.do|szex\\.hu|mil\\.kh|gen\\.nz|okinawa\\.jp|mob\\.nr|edu\\.ws|edu\\.sv|xj\\.cn|net\\.ru|dk\\.tt|erotika\\.hu|com\\.sh|cn\\.com|edu\\.pl|com\\.nc|org\\.il|arts\\.co|chirurgiens-dentistes\\.fr|net\\.pa|takamatsu\\.jp|net\\.ng|org\\.hu|net\\.in|net\\.vu|gen\\.tr|shop\\.hu|com\\.ae|tokushima\\.jp|za\\.com|gov\\.eg|co\\.jp|uba\\.ar|net\\.my|biz\\.et|art\\.br|ac\\.fk|gob\\.pe|com\\.bs|co\\.ae|de\\.net|net\\.eg|hyogo\\.jp|edunet\\.tn|museum\\.om|nom\\.ve|rnrt\\.tn|hn\\.cn|com\\.fk|edu\\.dz|ne\\.kr|co\\.je|sch\\.uk|priv\\.pl|sp\\.br|net\\.hk|name\\.vn|com\\.sa|edu\\.bm|qc\\.ca|bolt\\.hu|per\\.kh|sn\\.cn|mil\\.id|kagawa\\.jp|utsunomiya\\.jp|erotica\\.hu|gd\\.cn|net\\.tr|edu\\.np|asn\\.au|com\\.gu|ind\\.tn|mil\\.br|net\\.lb|nom\\.co|org\\.la|mil\\.pl|ac\\.il|gov\\.jo|com\\.kw|edu\\.sh|otc\\.au|gmina\\.pl|per\\.sg|gov\\.mo|int\\.ve|news\\.hu|sec\\.ps|ac\\.pg|health\\.vn|sex\\.pl|net\\.nc|qc\\.com|idv\\.hk|org\\.hk|gok\\.pk|com\\.ac|tochigi\\.jp|gsm\\.pl|law\\.za|pro\\.vn|edu\\.pe|info\\.et|sch\\.gg|com\\.vn|gov\\.bm|com\\.cn|mod\\.uk|gov\\.ps|toyama\\.jp|gv\\.at|yk\\.ca|org\\.et|suli\\.hu|edu\\.my|org\\.mm|co\\.yu|int\\.ar|pe\\.ca|tm\\.hu|net\\.sb|org\\.yu|com\\.ru|com\\.pe|edu\\.kh|edu\\.kw|org\\.qa|med\\.om|net\\.ws|org\\.in|turystyka\\.pl|store\\.ve|org\\.bs|mil\\.uy|net\\.ar|iwate\\.jp|org\\.nc|us\\.tt|gov\\.sh|nom\\.fk|go\\.th|gov\\.ec|com\\.br|edu\\.do|gov\\.ng|pro\\.tt|sapporo\\.jp|net\\.ua|tm\\.fr|com\\.lv|com\\.mo|edu\\.uk|fin\\.ec|edu\\.ps|ru\\.com|edu\\.ec|ac\\.fj|net\\.mm|veterinaire\\.fr|nom\\.re|ingatlan\\.hu|fr\\.vu|ne\\.jp|int\\.co|gov\\.cy|org\\.lv|de\\.com|nagasaki\\.jp|com\\.sb|gov\\.za|org\\.lc|com\\.fj|ind\\.in|or\\.cr|sc\\.cn|chambagri\\.fr|or\\.jp|forum\\.hu|tmp\\.br|reklam\\.hu|gob\\.sv|com\\.pl|saitama\\.jp|name\\.tt|niigata\\.jp|sklep\\.pl|nom\\.ni|co\\.ma|net\\.la|co\\.om|pharmacien\\.fr|port\\.fr|mil\\.gu|au\\.tt|edu\\.gu|ngo\\.ph|com\\.ve|ac\\.th|gov\\.fj|barreau\\.fr|net\\.ac|ac\\.je|org\\.kw|sport\\.hu|ac\\.cn|net\\.bm|ibaraki\\.jp|tel\\.no|org\\.cy|edu\\.mo|gb\\.net|kyoto\\.jp|sch\\.sa|com\\.au|edu\\.lc|fax\\.nr|gov\\.mm|it\\.tt|org\\.jo|nat\\.tn|mil\\.ve|be\\.tt|org\\.az|rec\\.co|co\\.ve|gifu\\.jp|net\\.th|hokkaido\\.jp|ac\\.gg|go\\.kr|edu\\.ye|qh\\.cn|ab\\.ca|org\\.cn|no\\.com|co\\.uk|gov\\.gu|de\\.vu|miasta\\.pl|kawasaki\\.jp|co\\.cr|miyagi\\.jp|org\\.jp|osaka\\.jp|web\\.za|net\\.za|gov\\.pk|gov\\.vn|agrar\\.hu|asn\\.lv|org\\.sv|net\\.sh|org\\.sa|org\\.dz|assedic\\.fr|com\\.sy|net\\.ph|mil\\.ge|es\\.tt|mobile\\.nr|co\\.kr|ltd\\.uk|ac\\.be|fgov\\.be|geek\\.nz|ind\\.gg|net\\.mt|maori\\.nz|ens\\.tn|edu\\.py|gov\\.sd|gov\\.qa|nt\\.ca|com\\.pg|org\\.kh|pc\\.pl|com\\.eg|net\\.ly|se\\.com|gb\\.com|edu\\.ar|sch\\.je|mil\\.ac|mil\\.ar|okayama\\.jp|gov\\.sg|ac\\.id|co\\.id|com\\.ly|huissier-justice\\.fr|nic\\.im|gov\\.lv|nu\\.ca|org\\.sg|com\\.kh|org\\.vi|sa\\.cr|lg\\.jp|ns\\.ca|edu\\.co|gov\\.im|edu\\.om|net\\.dz|org\\.pl|pp\\.ru|tm\\.mt|org\\.ar|co\\.gg|org\\.im|edu\\.qa|org\\.py|edu\\.uy|targi\\.pl|com\\.ge|gub\\.uy|gov\\.ar|ltd\\.gg|fr\\.tt|net\\.qa|com\\.np|ass\\.dz|se\\.tt|com\\.ai|org\\.ma|plo\\.ps|co\\.at|med\\.sa|net\\.sg|kanazawa\\.jp|com\\.fr|school\\.za|net\\.pl|ngo\\.za|net\\.sy|ed\\.jp|org\\.na|net\\.ma|asso\\.fr|police\\.uk|powiat\\.pl|govt\\.nz|sk\\.ca|tj\\.cn|mil\\.ec|com\\.jo|net\\.mo|notaires\\.fr|avoues\\.fr|aeroport\\.fr|yn\\.cn|gov\\.et|gov\\.sa|gov\\.ae|com\\.tt|art\\.dz|firm\\.ve|com\\.sd|school\\.nz|edu\\.et|gob\\.pa|telecom\\.na|ac\\.cy|gz\\.cn|net\\.kw|mobil\\.nr|nic\\.uk|co\\.th|com\\.vu|com\\.re|belgie\\.be|nl\\.ca|uk\\.com|com\\.om|utazas\\.hu|presse\\.fr|co\\.ck|xz\\.cn|org\\.tr|mil\\.co|edu\\.cn|net\\.ec|on\\.ca|konyvelo\\.hu|gop\\.pk|net\\.om|info\\.ve|com\\.ni|sa\\.com|com\\.tr|sch\\.sd|fukushima\\.jp|tel\\.nr|atm\\.pl|kitakyushu\\.jp|com\\.qa|firm\\.co|edu\\.tt|games\\.hu|mil\\.nz|cri\\.nz|net\\.az|org\\.ge|mie\\.jp|net\\.mx|sch\\.ae|nieruchomosci\\.pl|int\\.vn|edu\\.za|com\\.cy|wakayama\\.jp|gov\\.hk|org\\.pa|edu\\.au|gov\\.in|pro\\.om|2000\\.hu|szkola\\.pl|shimane\\.jp|co\\.zw|gove\\.tw|com\\.co|net\\.ck|net\\.pk|net\\.ve|org\\.ru|uk\\.net|org\\.co|uu\\.mt|com\\.cu|mil\\.za|plc\\.uk|lkd\\.co\\.im|gs\\.cn|sex\\.hu|net\\.je|kumamoto\\.jp|mil\\.lb|edu\\.yu|gov\\.ws|sendai\\.jp|eu\\.org|ah\\.cn|net\\.vn|gov\\.sb|net\\.pe|nagoya\\.jp|geometre-expert\\.fr|net\\.fk|biz\\.tt|org\\.sh|edu\\.sa|saga\\.jp|sx\\.cn|org\\.je|org\\.ye|muni\\.il|kochi\\.jp|com\\.bh|org\\.ec|priv\\.at|gov\\.sy|org\\.ni|casino\\.hu|res\\.in|uy\\.com)";
-
- // insert it
- res = tldRes[1] + tldStr + tldRes[3];
- }
+ if (tldRes) res = tldRes[1] + tldStr + tldRes[3];
return new RegExp(res + "$", "i");
}
GM_convert2RegExp = GM_util.memoize(GM_convert2RegExp);
+
+// This is intentionally and exactly the last line, to make it easier to update
+// via the publicsuffix.sh script.
+var tldStr = "\\.(?:demon\\.co\\.uk|esc\\.edu\\.ar|(?:c[oi]\\.)?[^\\.]\\.(?:vt|ne|ks|il|hi|sc|nh|ia|wy|or|ma|vi|tn|in|az|id|nc|co|dc|nd|me|al|ak|de|wv|nm|mo|pr|nj|sd|md|va|ri|ut|ct|pa|ok|ky|mt|ga|la|oh|ms|wi|wa|gu|mi|tx|fl|ca|ar|mn|ny|nv)\\.us|[^\\.]\\.(?:(?:pvt\\.)?k12|cc|tec|lib|state|gen)\\.(?:vt|ne|ks|il|hi|sc|nh|ia|wy|or|ma|vi|tn|in|az|id|nc|co|dc|nd|me|al|ak|de|wv|nm|mo|pr|nj|sd|md|va|ri|ut|ct|pa|ok|ky|mt|ga|la|oh|ms|wi|wa|gu|mi|tx|fl|ca|ar|mn|ny|nv)\\.us|[^\\.]\\.vt|ne|ks|il|hi|sc|nh|ia|wy|or|ma|vi|tn|in|az|id|nc|co|dc|nd|me|al|ak|de|wv|nm|mo|pr|nj|sd|md|va|ri|ut|ct|pa|ok|ky|mt|ga|la|oh|ms|wi|wa|gu|mi|tx|fl|ca|ar|mn|ny|nvus|ne|gg|tr|mm|ki|biz|sj|my|hn|gl|ro|tn|co|br|coop|cy|bo|ck|tc|bv|ke|aero|cs|dm|km|bf|af|mv|ls|tm|jm|pg|ky|ga|pn|sv|mq|hu|za|se|uy|iq|ai|com|ve|na|ba|ph|xxx|no|lv|tf|kz|ma|in|id|si|re|om|by|fi|gs|ir|li|tz|td|cg|pa|am|tv|jo|bi|ee|cd|pk|mn|gd|nz|as|lc|ae|cn|ag|mx|sy|cx|cr|vi|sg|bm|kh|nr|bz|vu|kw|gf|al|uz|eh|int|ht|mw|gm|bg|gu|info|aw|gy|ac|ca|museum|sk|ax|es|kp|bb|sa|et|ie|tl|org|tj|cf|im|mk|de|pro|md|fm|cl|jp|bn|vn|gp|sm|ar|dj|bd|mc|ug|nu|ci|dk|nc|rw|aq|name|st|hm|mo|gq|ps|ge|ao|gr|va|is|mt|gi|la|bh|ms|bt|gb|it|wf|sb|ly|ng|gt|lu|il|pt|mh|eg|kg|pf|um|fr|sr|vg|fj|py|pm|sn|sd|au|sl|gh|us|mr|dz|ye|kn|cm|arpa|bw|lk|mg|tk|su|sc|ru|travel|az|ec|mz|lb|ml|bj|edu|pr|fk|lr|nf|np|do|mp|bs|to|cu|ch|yu|eu|mu|ni|pw|pl|gov|pe|an|ua|uk|gw|tp|kr|je|tt|net|fo|jobs|yt|cc|sh|io|zm|hk|th|so|er|cz|lt|mil|hr|gn|be|qa|cv|vc|tw|ws|ad|sz|at|tg|zw|nl|info\\.tn|org\\.sd|med\\.sd|com\\.hk|org\\.ai|edu\\.sg|at\\.tt|mail\\.pl|net\\.ni|pol\\.dz|hiroshima\\.jp|org\\.bh|edu\\.vu|net\\.im|ernet\\.in|nic\\.tt|com\\.tn|go\\.cr|jersey\\.je|bc\\.ca|com\\.la|go\\.jp|com\\.uy|tourism\\.tn|com\\.ec|conf\\.au|dk\\.org|shizuoka\\.jp|ac\\.vn|matsuyama\\.jp|agro\\.pl|yamaguchi\\.jp|edu\\.vn|yamanashi\\.jp|mil\\.in|sos\\.pl|bj\\.cn|net\\.au|ac\\.ae|psi\\.br|sch\\.ng|org\\.mt|edu\\.ai|edu\\.ck|ac\\.yu|org\\.ws|org\\.ng|rel\\.pl|uk\\.tt|com\\.py|aomori\\.jp|co\\.ug|video\\.hu|net\\.gg|org\\.pk|id\\.au|gov\\.zw|mil\\.tr|net\\.tn|org\\.ly|re\\.kr|mil\\.ye|mil\\.do|com\\.bb|net\\.vi|edu\\.na|co\\.za|asso\\.re|nom\\.pe|edu\\.tw|name\\.et|jl\\.cn|gov\\.ye|ehime\\.jp|miyazaki\\.jp|kanagawa\\.jp|gov\\.au|nm\\.cn|he\\.cn|edu\\.sd|mod\\.om|web\\.ve|edu\\.hk|medecin\\.fr|org\\.cu|info\\.au|edu\\.ve|nx\\.cn|alderney\\.gg|net\\.cu|org\\.za|mb\\.ca|com\\.ye|edu\\.pa|fed\\.us|ac\\.pa|alt\\.na|mil\\.lv|fukuoka\\.jp|gen\\.in|gr\\.jp|gov\\.br|gov\\.ac|id\\.fj|fukui\\.jp|hu\\.com|org\\.gu|net\\.ae|mil\\.ph|ltd\\.je|alt\\.za|gov\\.np|edu\\.jo|net\\.gu|g12\\.br|org\\.tn|store\\.co|fin\\.tn|ac\\.nz|gouv\\.fr|gov\\.il|org\\.ua|org\\.do|org\\.fj|sci\\.eg|gov\\.tt|cci\\.fr|tokyo\\.jp|net\\.lv|gov\\.lc|ind\\.br|ca\\.tt|gos\\.pk|hi\\.cn|net\\.do|co\\.tv|web\\.co|com\\.pa|com\\.ng|ac\\.ma|gov\\.bh|org\\.zw|csiro\\.au|lakas\\.hu|gob\\.ni|gov\\.fk|org\\.sy|gov\\.lb|gov\\.je|ed\\.cr|nb\\.ca|net\\.uy|com\\.ua|media\\.hu|com\\.lb|nom\\.pl|org\\.br|hk\\.cn|co\\.hu|org\\.my|gov\\.dz|sld\\.pa|gob\\.pk|net\\.uk|guernsey\\.gg|nara\\.jp|telememo\\.au|k12\\.tr|org\\.nz|pub\\.sa|edu\\.ac|com\\.dz|edu\\.lv|edu\\.pk|com\\.ph|net\\.na|net\\.et|id\\.lv|au\\.com|ac\\.ng|com\\.my|net\\.cy|unam\\.na|nom\\.za|net\\.np|info\\.pl|priv\\.hu|rec\\.ve|ac\\.uk|edu\\.mm|go\\.ug|ac\\.ug|co\\.dk|net\\.tt|oita\\.jp|fi\\.cr|org\\.ac|aichi\\.jp|org\\.tt|edu\\.bh|us\\.com|ac\\.kr|js\\.cn|edu\\.ni|com\\.mt|fam\\.pk|experts-comptables\\.fr|or\\.kr|org\\.au|web\\.pk|mil\\.jo|biz\\.pl|org\\.np|city\\.hu|org\\.uy|auto\\.pl|aid\\.pl|bib\\.ve|mo\\.cn|br\\.com|dns\\.be|sh\\.cn|org\\.mo|com\\.sg|me\\.uk|gov\\.kw|eun\\.eg|kagoshima\\.jp|ln\\.cn|seoul\\.kr|school\\.fj|com\\.mk|e164\\.arpa|rnu\\.tn|pro\\.ae|org\\.om|gov\\.my|net\\.ye|gov\\.do|co\\.im|org\\.lb|plc\\.co\\.im|net\\.jp|go\\.id|net\\.tw|gov\\.ai|tlf\\.nr|ac\\.im|com\\.do|net\\.py|tozsde\\.hu|com\\.na|tottori\\.jp|net\\.ge|gov\\.cn|org\\.bb|net\\.bs|ac\\.za|rns\\.tn|biz\\.pk|gov\\.ge|org\\.uk|org\\.fk|nhs\\.uk|net\\.bh|tm\\.za|co\\.nz|gov\\.jp|jogasz\\.hu|shop\\.pl|media\\.pl|chiba\\.jp|city\\.za|org\\.ck|net\\.id|com\\.ar|gon\\.pk|gov\\.om|idf\\.il|net\\.cn|prd\\.fr|co\\.in|or\\.ug|red\\.sv|edu\\.lb|k12\\.ec|gx\\.cn|net\\.nz|info\\.hu|ac\\.zw|info\\.tt|com\\.ws|org\\.gg|com\\.et|ac\\.jp|ac\\.at|avocat\\.fr|org\\.ph|sark\\.gg|org\\.ve|tm\\.pl|net\\.pg|gov\\.co|com\\.lc|film\\.hu|ishikawa\\.jp|hotel\\.hu|hl\\.cn|edu\\.ge|com\\.bm|ac\\.om|tec\\.ve|edu\\.tr|cq\\.cn|com\\.pk|firm\\.in|inf\\.br|gunma\\.jp|gov\\.tn|oz\\.au|nf\\.ca|akita\\.jp|net\\.sd|tourism\\.pl|net\\.bb|or\\.at|idv\\.tw|dni\\.us|org\\.mx|conf\\.lv|net\\.jo|nic\\.in|info\\.vn|pe\\.kr|tw\\.cn|org\\.eg|ad\\.jp|hb\\.cn|kyonggi\\.kr|bourse\\.za|org\\.sb|gov\\.gg|net\\.br|mil\\.pe|kobe\\.jp|net\\.sa|edu\\.mt|org\\.vn|yokohama\\.jp|net\\.il|ac\\.cr|edu\\.sb|nagano\\.jp|travel\\.pl|gov\\.tr|com\\.sv|co\\.il|rec\\.br|biz\\.om|com\\.mm|com\\.az|org\\.vu|edu\\.ng|com\\.mx|info\\.co|realestate\\.pl|mil\\.sh|yamagata\\.jp|or\\.id|org\\.ae|greta\\.fr|k12\\.il|com\\.tw|gov\\.ve|arts\\.ve|cul\\.na|gov\\.kh|org\\.bm|etc\\.br|or\\.th|ch\\.vu|de\\.tt|ind\\.je|org\\.tw|nom\\.fr|co\\.tt|net\\.lc|intl\\.tn|shiga\\.jp|pvt\\.ge|gov\\.ua|org\\.pe|net\\.kh|co\\.vi|iwi\\.nz|biz\\.vn|gov\\.ck|edu\\.eg|zj\\.cn|press\\.ma|ac\\.in|eu\\.tt|art\\.do|med\\.ec|bbs\\.tr|gov\\.uk|edu\\.ua|eu\\.com|web\\.do|szex\\.hu|mil\\.kh|gen\\.nz|okinawa\\.jp|mob\\.nr|edu\\.ws|edu\\.sv|xj\\.cn|net\\.ru|dk\\.tt|erotika\\.hu|com\\.sh|cn\\.com|edu\\.pl|com\\.nc|org\\.il|arts\\.co|chirurgiens-dentistes\\.fr|net\\.pa|takamatsu\\.jp|net\\.ng|org\\.hu|net\\.in|net\\.vu|gen\\.tr|shop\\.hu|com\\.ae|tokushima\\.jp|za\\.com|gov\\.eg|co\\.jp|uba\\.ar|net\\.my|biz\\.et|art\\.br|ac\\.fk|gob\\.pe|com\\.bs|co\\.ae|de\\.net|net\\.eg|hyogo\\.jp|edunet\\.tn|museum\\.om|nom\\.ve|rnrt\\.tn|hn\\.cn|com\\.fk|edu\\.dz|ne\\.kr|co\\.je|sch\\.uk|priv\\.pl|sp\\.br|net\\.hk|name\\.vn|com\\.sa|edu\\.bm|qc\\.ca|bolt\\.hu|per\\.kh|sn\\.cn|mil\\.id|kagawa\\.jp|utsunomiya\\.jp|erotica\\.hu|gd\\.cn|net\\.tr|edu\\.np|asn\\.au|com\\.gu|ind\\.tn|mil\\.br|net\\.lb|nom\\.co|org\\.la|mil\\.pl|ac\\.il|gov\\.jo|com\\.kw|edu\\.sh|otc\\.au|gmina\\.pl|per\\.sg|gov\\.mo|int\\.ve|news\\.hu|sec\\.ps|ac\\.pg|health\\.vn|sex\\.pl|net\\.nc|qc\\.com|idv\\.hk|org\\.hk|gok\\.pk|com\\.ac|tochigi\\.jp|gsm\\.pl|law\\.za|pro\\.vn|edu\\.pe|info\\.et|sch\\.gg|com\\.vn|gov\\.bm|com\\.cn|mod\\.uk|gov\\.ps|toyama\\.jp|gv\\.at|yk\\.ca|org\\.et|suli\\.hu|edu\\.my|org\\.mm|co\\.yu|int\\.ar|pe\\.ca|tm\\.hu|net\\.sb|org\\.yu|com\\.ru|com\\.pe|edu\\.kh|edu\\.kw|org\\.qa|med\\.om|net\\.ws|org\\.in|turystyka\\.pl|store\\.ve|org\\.bs|mil\\.uy|net\\.ar|iwate\\.jp|org\\.nc|us\\.tt|gov\\.sh|nom\\.fk|go\\.th|gov\\.ec|com\\.br|edu\\.do|gov\\.ng|pro\\.tt|sapporo\\.jp|net\\.ua|tm\\.fr|com\\.lv|com\\.mo|edu\\.uk|fin\\.ec|edu\\.ps|ru\\.com|edu\\.ec|ac\\.fj|net\\.mm|veterinaire\\.fr|nom\\.re|ingatlan\\.hu|fr\\.vu|ne\\.jp|int\\.co|gov\\.cy|org\\.lv|de\\.com|nagasaki\\.jp|com\\.sb|gov\\.za|org\\.lc|com\\.fj|ind\\.in|or\\.cr|sc\\.cn|chambagri\\.fr|or\\.jp|forum\\.hu|tmp\\.br|reklam\\.hu|gob\\.sv|com\\.pl|saitama\\.jp|name\\.tt|niigata\\.jp|sklep\\.pl|nom\\.ni|co\\.ma|net\\.la|co\\.om|pharmacien\\.fr|port\\.fr|mil\\.gu|au\\.tt|edu\\.gu|ngo\\.ph|com\\.ve|ac\\.th|gov\\.fj|barreau\\.fr|net\\.ac|ac\\.je|org\\.kw|sport\\.hu|ac\\.cn|net\\.bm|ibaraki\\.jp|tel\\.no|org\\.cy|edu\\.mo|gb\\.net|kyoto\\.jp|sch\\.sa|com\\.au|edu\\.lc|fax\\.nr|gov\\.mm|it\\.tt|org\\.jo|nat\\.tn|mil\\.ve|be\\.tt|org\\.az|rec\\.co|co\\.ve|gifu\\.jp|net\\.th|hokkaido\\.jp|ac\\.gg|go\\.kr|edu\\.ye|qh\\.cn|ab\\.ca|org\\.cn|no\\.com|co\\.uk|gov\\.gu|de\\.vu|miasta\\.pl|kawasaki\\.jp|co\\.cr|miyagi\\.jp|org\\.jp|osaka\\.jp|web\\.za|net\\.za|gov\\.pk|gov\\.vn|agrar\\.hu|asn\\.lv|org\\.sv|net\\.sh|org\\.sa|org\\.dz|assedic\\.fr|com\\.sy|net\\.ph|mil\\.ge|es\\.tt|mobile\\.nr|co\\.kr|ltd\\.uk|ac\\.be|fgov\\.be|geek\\.nz|ind\\.gg|net\\.mt|maori\\.nz|ens\\.tn|edu\\.py|gov\\.sd|gov\\.qa|nt\\.ca|com\\.pg|org\\.kh|pc\\.pl|com\\.eg|net\\.ly|se\\.com|gb\\.com|edu\\.ar|sch\\.je|mil\\.ac|mil\\.ar|okayama\\.jp|gov\\.sg|ac\\.id|co\\.id|com\\.ly|huissier-justice\\.fr|nic\\.im|gov\\.lv|nu\\.ca|org\\.sg|com\\.kh|org\\.vi|sa\\.cr|lg\\.jp|ns\\.ca|edu\\.co|gov\\.im|edu\\.om|net\\.dz|org\\.pl|pp\\.ru|tm\\.mt|org\\.ar|co\\.gg|org\\.im|edu\\.qa|org\\.py|edu\\.uy|targi\\.pl|com\\.ge|gub\\.uy|gov\\.ar|ltd\\.gg|fr\\.tt|net\\.qa|com\\.np|ass\\.dz|se\\.tt|com\\.ai|org\\.ma|plo\\.ps|co\\.at|med\\.sa|net\\.sg|kanazawa\\.jp|com\\.fr|school\\.za|net\\.pl|ngo\\.za|net\\.sy|ed\\.jp|org\\.na|net\\.ma|asso\\.fr|police\\.uk|powiat\\.pl|govt\\.nz|sk\\.ca|tj\\.cn|mil\\.ec|com\\.jo|net\\.mo|notaires\\.fr|avoues\\.fr|aeroport\\.fr|yn\\.cn|gov\\.et|gov\\.sa|gov\\.ae|com\\.tt|art\\.dz|firm\\.ve|com\\.sd|school\\.nz|edu\\.et|gob\\.pa|telecom\\.na|ac\\.cy|gz\\.cn|net\\.kw|mobil\\.nr|nic\\.uk|co\\.th|com\\.vu|com\\.re|belgie\\.be|nl\\.ca|uk\\.com|com\\.om|utazas\\.hu|presse\\.fr|co\\.ck|xz\\.cn|org\\.tr|mil\\.co|edu\\.cn|net\\.ec|on\\.ca|konyvelo\\.hu|gop\\.pk|net\\.om|info\\.ve|com\\.ni|sa\\.com|com\\.tr|sch\\.sd|fukushima\\.jp|tel\\.nr|atm\\.pl|kitakyushu\\.jp|com\\.qa|firm\\.co|edu\\.tt|games\\.hu|mil\\.nz|cri\\.nz|net\\.az|org\\.ge|mie\\.jp|net\\.mx|sch\\.ae|nieruchomosci\\.pl|int\\.vn|edu\\.za|com\\.cy|wakayama\\.jp|gov\\.hk|org\\.pa|edu\\.au|gov\\.in|pro\\.om|2000\\.hu|szkola\\.pl|shimane\\.jp|co\\.zw|gove\\.tw|com\\.co|net\\.ck|net\\.pk|net\\.ve|org\\.ru|uk\\.net|org\\.co|uu\\.mt|com\\.cu|mil\\.za|plc\\.uk|lkd\\.co\\.im|gs\\.cn|sex\\.hu|net\\.je|kumamoto\\.jp|mil\\.lb|edu\\.yu|gov\\.ws|sendai\\.jp|eu\\.org|ah\\.cn|net\\.vn|gov\\.sb|net\\.pe|nagoya\\.jp|geometre-expert\\.fr|net\\.fk|biz\\.tt|org\\.sh|edu\\.sa|saga\\.jp|sx\\.cn|org\\.je|org\\.ye|muni\\.il|kochi\\.jp|com\\.bh|org\\.ec|priv\\.at|gov\\.sy|org\\.ni|casino\\.hu|res\\.in|uy\\.com)";
diff --git a/modules/util/getEditor.js b/modules/util/getEditor.js
index b2cd81f..8b4960e 100644
--- a/modules/util/getEditor.js
+++ b/modules/util/getEditor.js
@@ -1,6 +1,13 @@
Components.utils.import('resource://greasemonkey/prefmanager.js');
+Components.utils.import('resource://greasemonkey/util.js');
-const EXPORTED_SYMBOLS = ['getEditor'];
+var EXPORTED_SYMBOLS = ['getEditor'];
+var stringBundle = Components
+ .classes["@mozilla.org/intl/stringbundle;1"]
+ .getService(Components.interfaces.nsIStringBundleService)
+ .createBundle("chrome://greasemonkey/locale/gm-browser.properties");
+var EDITOR_PROMPT = stringBundle.GetStringFromName("editor.prompt");
+var PICK_EXE = stringBundle.GetStringFromName("editor.please_pick_executable");
function getEditor(change) {
var editorPath = GM_prefRoot.getValue("editor");
@@ -9,7 +16,7 @@ function getEditor(change) {
var editor;
try {
editor = Components.classes["@mozilla.org/file/local;1"]
- .createInstance(Components.interfaces.nsILocalFile);
+ .createInstance(Components.interfaces.nsILocalFile);
editor.followLinks = true;
editor.initWithPath(editorPath);
} catch (e) {
@@ -30,12 +37,11 @@ function getEditor(change) {
while (true) {
var nsIFilePicker = Components.interfaces.nsIFilePicker;
var filePicker = Components.classes["@mozilla.org/filepicker;1"]
- .createInstance(nsIFilePicker);
+ .createInstance(nsIFilePicker);
- filePicker.init(window, GM_stringBundle.GetStringFromName("editor.prompt"),
- nsIFilePicker.modeOpen);
- filePicker.appendFilters(nsIFilePicker.filterApplication);
- filePicker.appendFilters(nsIFilePicker.filterAll);
+ filePicker.init(
+ GM_util.getBrowserWindow(), EDITOR_PROMPT, nsIFilePicker.modeOpen);
+ filePicker.appendFilters(nsIFilePicker.filterApps);
if (filePicker.show() != nsIFilePicker.returnOK) {
// The user canceled, return null.
@@ -46,7 +52,7 @@ function getEditor(change) {
GM_prefRoot.setValue("editor", filePicker.file.path);
return filePicker.file;
} else {
- alert(GM_stringBundle.GetStringFromName("editor.please_pick_executable"));
+ GM_util.alert(PICK_EXE);
}
}
}
diff --git a/modules/util/getTempFile.js b/modules/util/getTempFile.js
index 771ab65..4c64800 100644
--- a/modules/util/getTempFile.js
+++ b/modules/util/getTempFile.js
@@ -7,9 +7,9 @@ const TMP_DIR = Components.classes["@mozilla.org/file/directory_service;1"]
.getService(Components.interfaces.nsIProperties)
.get("TmpD", Components.interfaces.nsILocalFile);
-function getTempFile() {
- var file = TMP_DIR.clone();
- file.append("gm-temp");
+function getTempFile(aRoot, aLeaf) {
+ var file = (aRoot || TMP_DIR).clone();
+ file.append(aLeaf || 'gm-temp');
file.createUnique(NORMAL_FILE_TYPE, GM_constants.fileMask);
return file;
}
diff --git a/modules/util/hitch.js b/modules/util/hitch.js
index ba53619..b0ad646 100644
--- a/modules/util/hitch.js
+++ b/modules/util/hitch.js
@@ -1,8 +1,15 @@
const EXPORTED_SYMBOLS = ['hitch'];
-function hitch(obj, meth) {
- if (!obj[meth]) {
- throw "method '" + meth + "' does not exist on object '" + obj + "'";
+function hitch(obj, method) {
+ if (obj && method && ('string' == typeof method)) {
+ if (!obj[method]) {
+ throw "method '" + method + "' does not exist on object '" + obj + "'";
+ }
+ method = obj[method];
+ } else if ('function' == typeof method) {
+ obj = obj || {};
+ } else {
+ throw "Invalid arguments to GM_util.hitch().";
}
var staticArgs = Array.prototype.splice.call(arguments, 2, arguments.length);
@@ -17,6 +24,6 @@ function hitch(obj, meth) {
// invoke the original function with the correct this obj and the combined
// list of static and dynamic arguments.
- return obj[meth].apply(obj, args);
+ return method.apply(obj, args);
};
}
diff --git a/modules/util/openInEditor.js b/modules/util/openInEditor.js
index a8352ec..5fbef72 100644
--- a/modules/util/openInEditor.js
+++ b/modules/util/openInEditor.js
@@ -25,8 +25,8 @@ function openInEditor(script) {
var xulRuntime = Components.classes["@mozilla.org/xre/app-info;1"]
.getService(Components.interfaces.nsIXULRuntime);
if ("Darwin"==xulRuntime.OS) {
- args = ["-a", appFile.path, script.file.path];
- editor = Components.classes["@mozilla.org/file/local;1"]
+ args = ["-a", editor.path, script.file.path];
+ editor = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile);
editor.followLinks = true;
editor.initWithPath("/usr/bin/open");
@@ -39,7 +39,7 @@ function openInEditor(script) {
} catch (e) {
// Something may be wrong with the editor the user selected. Remove so that
// next time they can pick a different one.
- alert(COULD_NOT_LAUNCH + "\n" + e);
+ GM_util.alert(COULD_NOT_LAUNCH + "\n" + e);
GM_prefRoot.remove("editor");
throw(e);
}
diff --git a/modules/util/uriFromUrl.js b/modules/util/uriFromUrl.js
index 472afeb..50c25a3 100644
--- a/modules/util/uriFromUrl.js
+++ b/modules/util/uriFromUrl.js
@@ -2,11 +2,11 @@ Components.utils.import('resource://greasemonkey/util.js');
var EXPORTED_SYMBOLS = ['uriFromUrl'];
+var ioService = Components.classes["@mozilla.org/network/io-service;1"]
+ .getService(Components.interfaces.nsIIOService);
+
function uriFromUrl(url, base) {
- var ioService = Components.classes["@mozilla.org/network/io-service;1"]
- .getService(Components.interfaces.nsIIOService);
var baseUri = null;
-
if (typeof base === "string") {
baseUri = GM_util.uriFromUrl(base);
} else if (base) {
diff --git a/modules/util/writeToFile.js b/modules/util/writeToFile.js
index 29da4ad..07f93f7 100644
--- a/modules/util/writeToFile.js
+++ b/modules/util/writeToFile.js
@@ -12,9 +12,6 @@ const converter = Components
.createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
converter.charset = "UTF-8";
-const ostream = Components
- .classes["@mozilla.org/network/safe-file-output-stream;1"]
- .createInstance(Components.interfaces.nsIFileOutputStream);
/** Given string data and an nsIFile, write it safely to that file. */
function writeToFile(aData, aFile, aCallback) {
@@ -24,6 +21,9 @@ function writeToFile(aData, aFile, aCallback) {
// Create a temporary file (stream) to hold the data.
var tmpFile = aFile.clone();
tmpFile.createUnique(NORMAL_FILE_TYPE, GM_constants.fileMask);
+ var ostream = Components
+ .classes["@mozilla.org/network/safe-file-output-stream;1"]
+ .createInstance(Components.interfaces.nsIFileOutputStream);
ostream.init(tmpFile, STREAM_FLAGS, GM_constants.fileMask, 0);
NetUtil.asyncCopy(istream, ostream, function(status) {
--
iceweasel extension that enables customization of webpages with user scripts
More information about the Pkg-mozext-commits
mailing list