Bug 394978 - Key off of name and description for grouping plugins.r=dtownsend, a1.9=mconnor

This commit is contained in:
rob_strong@exchangecode.com 2007-09-17 11:06:26 -07:00
Родитель 70a76d037b
Коммит aec07887cd
1 изменённых файлов: 57 добавлений и 50 удалений

Просмотреть файл

@ -553,9 +553,12 @@ function initPluginsDS()
for (var i = 0; i < plugins.length; i++) {
var plugin = plugins[i];
var name = plugin.name;
if (!(name in gPlugins)) {
// Removes all html markup in a plugin's description
var desc = plugin.description.replace(/<\/?[a-z][^>]*>/gi, " ");
if (!(name in gPlugins))
gPlugins[name] = { };
// Removes all html markup in a plugin's description
var desc = plugin.description.replace(/<\/?[a-z][^>]*>/gi, " ");
if (!(desc in gPlugins[name])) {
var homepageURL = null;
// Some plugins (e.g. QuickTime) add an anchor to their description to
// provide a link to the plugin's homepage in about:plugins. This can be
@ -563,60 +566,60 @@ function initPluginsDS()
if (/<A\s+HREF=[^>]*>/i.test(plugin.description))
homepageURL = /<A\s+HREF=["']?([^>"'\s]*)/i.exec(plugin.description)[1];
gPlugins[name] = { name : name,
filename : plugin.filename,
description : desc,
homepageURL : homepageURL,
disabled : plugin.disabled,
blocklisted : plugin.blocklisted,
plugins : [] };
gPlugins[name][desc] = { filename : plugin.filename,
homepageURL : homepageURL,
disabled : plugin.disabled,
blocklisted : plugin.blocklisted,
plugins : [] };
}
gPlugins[name].plugins.push(plugin);
gPlugins[name][desc].plugins.push(plugin);
}
for (var pluginName in gPlugins) {
plugin = gPlugins[pluginName];
var pluginNode = rdf.GetResource(PREFIX_ITEM_URI + plugin.filename);
rootctr.AppendElement(pluginNode);
gPluginsDS.Assert(pluginNode,
rdf.GetResource(PREFIX_NS_EM + "name"),
rdf.GetLiteral(plugin.name),
true);
gPluginsDS.Assert(pluginNode,
rdf.GetResource(PREFIX_NS_EM + "addonID"),
rdf.GetLiteral(plugin.filename),
true);
gPluginsDS.Assert(pluginNode,
rdf.GetResource(PREFIX_NS_EM + "description"),
rdf.GetLiteral(plugin.description),
true);
if (plugin.homepageURL)
for (var pluginDesc in gPlugins[pluginName]) {
plugin = gPlugins[pluginName][pluginDesc];
var pluginNode = rdf.GetResource(PREFIX_ITEM_URI + plugin.filename);
rootctr.AppendElement(pluginNode);
gPluginsDS.Assert(pluginNode,
rdf.GetResource(PREFIX_NS_EM + "homepageURL"),
rdf.GetLiteral(plugin.homepageURL),
rdf.GetResource(PREFIX_NS_EM + "name"),
rdf.GetLiteral(pluginName),
true);
gPluginsDS.Assert(pluginNode,
rdf.GetResource(PREFIX_NS_EM + "isDisabled"),
rdf.GetLiteral(plugin.disabled ? "true" : "false"),
true);
gPluginsDS.Assert(pluginNode,
rdf.GetResource(PREFIX_NS_EM + "blocklisted"),
rdf.GetLiteral(plugin.blocklisted ? "true" : "false"),
true);
gPluginsDS.Assert(pluginNode,
rdf.GetResource(PREFIX_NS_EM + "compatible"),
rdf.GetLiteral("true"),
true);
gPluginsDS.Assert(pluginNode,
rdf.GetResource(PREFIX_NS_EM + "plugin"),
rdf.GetLiteral("true"),
true);
gPluginsDS.Assert(pluginNode,
rdf.GetResource(PREFIX_NS_EM + "addonID"),
rdf.GetLiteral(plugin.filename),
true);
gPluginsDS.Assert(pluginNode,
rdf.GetResource(PREFIX_NS_EM + "description"),
rdf.GetLiteral(pluginDesc),
true);
if (plugin.homepageURL)
gPluginsDS.Assert(pluginNode,
rdf.GetResource(PREFIX_NS_EM + "homepageURL"),
rdf.GetLiteral(plugin.homepageURL),
true);
gPluginsDS.Assert(pluginNode,
rdf.GetResource(PREFIX_NS_EM + "isDisabled"),
rdf.GetLiteral(plugin.disabled ? "true" : "false"),
true);
gPluginsDS.Assert(pluginNode,
rdf.GetResource(PREFIX_NS_EM + "blocklisted"),
rdf.GetLiteral(plugin.blocklisted ? "true" : "false"),
true);
gPluginsDS.Assert(pluginNode,
rdf.GetResource(PREFIX_NS_EM + "compatible"),
rdf.GetLiteral("true"),
true);
gPluginsDS.Assert(pluginNode,
rdf.GetResource(PREFIX_NS_EM + "plugin"),
rdf.GetLiteral("true"),
true);
}
}
}
function togglePluginDisabled(aName)
function togglePluginDisabled(aName, aDesc)
{
var plugin = gPlugins[aName];
var plugin = gPlugins[aName][aDesc];
plugin.disabled = !plugin.disabled;
for (var i = 0; i < plugin.plugins.length; ++i)
plugin.plugins[i].disabled = plugin.disabled;
@ -2089,7 +2092,9 @@ var gExtensionsViewController = {
cmd_disable: function (aSelectedItem)
{
if (aSelectedItem.getAttribute("plugin") == "true") {
togglePluginDisabled(aSelectedItem.getAttribute("name"));
var name = aSelectedItem.getAttribute("name");
var desc = aSelectedItem.getAttribute("description");
togglePluginDisabled(name, desc);
return;
}
@ -2097,7 +2102,7 @@ var gExtensionsViewController = {
var dependentItems = gExtensionManager.getDependentItemListForID(id, false, { });
if (dependentItems.length > 0) {
var name = aSelectedItem.getAttribute("name");
name = aSelectedItem.getAttribute("name");
var result = confirmOperation(name, "disableTitle", "disableQueryMessage",
"disableButton", "cancelButton",
"disableWarningDependMessage", dependentItems);
@ -2113,7 +2118,9 @@ var gExtensionsViewController = {
cmd_enable: function (aSelectedItem)
{
if (aSelectedItem.getAttribute("plugin") == "true") {
togglePluginDisabled(aSelectedItem.getAttribute("name"));
var name = aSelectedItem.getAttribute("name");
var desc = aSelectedItem.getAttribute("description");
togglePluginDisabled(name, desc);
return;
}