@@ -1,5 +1,4 @@
|
||||
"use strict";
|
||||
let EXPORTED_SYMBOLS = ["About"];
|
||||
|
||||
let About = {
|
||||
|
||||
@@ -11,6 +10,10 @@ let About = {
|
||||
|
||||
let contfrag = document.createRange().createContextualFragment(template);
|
||||
let page = document.getElementById("page");
|
||||
// Limpiar solo contenido dinámico, mantener cabecera
|
||||
Array.from(page.children).forEach(child => {
|
||||
if (!child.classList.contains('amo-header')) child.remove();
|
||||
});
|
||||
let frag = contfrag.firstElementChild;
|
||||
page.appendChild(frag);
|
||||
},
|
||||
@@ -50,27 +53,27 @@ let About = {
|
||||
<nav id="side-nav" class="c" data-addontype="1">
|
||||
<h2>Explore</h2>
|
||||
<ul id="side-explore">
|
||||
<li class="s-users"><em><a href="caa:list?sort=users">Most Popular</a></em></li>
|
||||
<li class="s-rating"><em><a href="caa:list?sort=rating">Top Rated</a></em></li>
|
||||
<li class="s-users"><em><a href="#list?sort=users">Most Popular</a></em></li>
|
||||
<li class="s-rating"><em><a href="#list?sort=rating">Top Rated</a></em></li>
|
||||
</ul>
|
||||
<h2>Categories</h2>
|
||||
<ul id="side-categories">
|
||||
<li id="c-0"><a href="caa:list">All</a></li>
|
||||
<li id="c-72"><a href="caa:list/alerts-updates">Alerts & Updates</a></li>
|
||||
<li id="c-14"><a href="caa:list/appearance">Appearance</a></li>
|
||||
<li id="c-22"><a href="caa:list/bookmarks">Bookmarks</a></li>
|
||||
<li id="c-5"><a href="caa:list/download-management">Download Management</a></li>
|
||||
<li id="c-1"><a href="caa:list/feeds-news-blogging">Feeds, News & Blogging</a></li>
|
||||
<li id="c-142"><a href="caa:list/games-entertainment">Games & Entertainment</a></li>
|
||||
<li id="c-37"><a href="caa:list/language-support">Language Support</a></li>
|
||||
<li id="c-38"><a href="caa:list/photos-music-videos">Photos, Music & Videos</a></li>
|
||||
<li id="c-12"><a href="caa:list/privacy-security">Privacy & Security</a></li>
|
||||
<li id="c-13"><a href="caa:list/search-tools">Search Tools</a></li>
|
||||
<li id="c-141"><a href="caa:list/shopping">Shopping</a></li>
|
||||
<li id="c-71"><a href="caa:list/social-communication">Social & Communication</a></li>
|
||||
<li id="c-93"><a href="caa:list/tabs">Tabs</a></li>
|
||||
<li id="c-4"><a href="caa:list/web-development">Web Development</a></li>
|
||||
<li id="c-73"><a href="caa:list/other">Other</a></li>
|
||||
<li id="c-0"><a href="#list">All</a></li>
|
||||
<li id="c-72"><a href="#list/alerts-updates">Alerts & Updates</a></li>
|
||||
<li id="c-14"><a href="#list/appearance">Appearance</a></li>
|
||||
<li id="c-22"><a href="#list/bookmarks">Bookmarks</a></li>
|
||||
<li id="c-5"><a href="#list/download-management">Download Management</a></li>
|
||||
<li id="c-1"><a href="#list/feeds-news-blogging">Feeds, News & Blogging</a></li>
|
||||
<li id="c-142"><a href="#list/games-entertainment">Games & Entertainment</a></li>
|
||||
<li id="c-37"><a href="#list/language-support">Language Support</a></li>
|
||||
<li id="c-38"><a href="#list/photos-music-videos">Photos, Music & Videos</a></li>
|
||||
<li id="c-12"><a href="#list/privacy-security">Privacy & Security</a></li>
|
||||
<li id="c-13"><a href="#list/search-tools">Search Tools</a></li>
|
||||
<li id="c-141"><a href="#list/shopping">Shopping</a></li>
|
||||
<li id="c-71"><a href="#list/social-communication">Social & Communication</a></li>
|
||||
<li id="c-93"><a href="#list/tabs">Tabs</a></li>
|
||||
<li id="c-4"><a href="#list/web-development">Web Development</a></li>
|
||||
<li id="c-73"><a href="#list/other">Other</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</section>
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
"use strict";
|
||||
let EXPORTED_SYMBOLS = ["Addon"];
|
||||
|
||||
var Cu = Components.utils;
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
let Addon = {
|
||||
|
||||
@@ -19,6 +15,10 @@ let Addon = {
|
||||
let contfrag = document.createRange().createContextualFragment(template);
|
||||
let frag = contfrag.firstElementChild;
|
||||
let page = document.getElementById("page");
|
||||
// Limpiar solo contenido dinámico, mantener cabecera
|
||||
Array.from(page.children).forEach(child => {
|
||||
if (!child.classList.contains('amo-header')) child.remove();
|
||||
});
|
||||
page.appendChild(frag);
|
||||
},
|
||||
|
||||
@@ -57,9 +57,9 @@ let Addon = {
|
||||
data.users = '';
|
||||
}
|
||||
if (dbQuery.row.icon) {
|
||||
data.icon_url = "chrome://ca-archive/skin/icons/" + dbQuery.row.icon + ".png";
|
||||
data.icon_url = "../skin/icons/" + dbQuery.row.icon + ".png";
|
||||
} else {
|
||||
data.icon_url = "chrome://ca-archive/skin/icons/" + Math.trunc(dbQuery.row.addon_id/1000) + "/" + dbQuery.row.addon_id + ".png";
|
||||
data.icon_url = "../skin/icons/" + Math.trunc(dbQuery.row.addon_id/1000) + "/" + dbQuery.row.addon_id + ".png";
|
||||
}
|
||||
data.name = dbQuery.row.name;
|
||||
data.slug = dbQuery.row.slug;
|
||||
@@ -105,22 +105,12 @@ let Addon = {
|
||||
}
|
||||
data.min = dbQuery.row.min;
|
||||
data.max = dbQuery.row.max;
|
||||
let appver;
|
||||
if (Services.appinfo.name == "Pale Moon") {
|
||||
appver = "27.9";
|
||||
} else if (Services.appinfo.name != "SeaMonkey" && Services.appinfo.name != "Iceape-UXP") {
|
||||
appver = Services.appinfo.version;
|
||||
}
|
||||
data.downurl = "https://ca-archive.us.to/storage/" + Math.trunc(dbQuery.row.addon_id/1000) + "/" + dbQuery.row.addon_id + "/" + dbQuery.row.url.replace(/^\d+\/(.*)/,"$1") + "?origin=caa&action=";
|
||||
if (appver && Services.vc.compare(dbQuery.row.min, appver) <= 0 && Services.vc.compare(appver, dbQuery.row.max) <= 0) {
|
||||
data.compat = "add";
|
||||
data.action = "Install Now";
|
||||
data.downurl += "install";
|
||||
} else {
|
||||
data.compat = "download";
|
||||
data.action = "Download";
|
||||
data.downurl += "download";
|
||||
}
|
||||
|
||||
// En WebExtensions, las descargas son siempre externas
|
||||
data.downurl = "https://ca-archive.us.to/storage/" + Math.trunc(dbQuery.row.addon_id/1000) + "/" + dbQuery.row.addon_id + "/" + dbQuery.row.url.replace(/^\d+\/(.*)/,"$1") + "?origin=caa&action=download";
|
||||
data.compat = "download";
|
||||
data.action = "Download";
|
||||
|
||||
let created = new Date(dbQuery.row.created*1000);
|
||||
data.created = created.toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' });
|
||||
let nBytes = dbQuery.row.size;
|
||||
@@ -134,7 +124,7 @@ let Addon = {
|
||||
lic_url = dbQuery.row.lic_url;
|
||||
target = 'target="_blank"';
|
||||
} else {
|
||||
lic_url = "caa:addon/" + data.slug + "/license/" + data.version;
|
||||
lic_url = "#addon/" + data.slug + "/license/" + data.version;
|
||||
target = '';
|
||||
}
|
||||
data.license = '<li class="source-license">Released under <a ' + target + ' href="' + lic_url + '">' + dbQuery.row.lic_name + '</a></li>';
|
||||
@@ -142,12 +132,12 @@ let Addon = {
|
||||
data.license = "";
|
||||
}
|
||||
if (dbQuery.row.eula) {
|
||||
data.eula = '<a class="eula badge" href="caa:addon/' + data.slug + '/eula">End-User License Agreement</a>';
|
||||
data.eula = '<a class="eula badge" href="#addon/' + data.slug + '/eula">End-User License Agreement</a>';
|
||||
} else {
|
||||
data.eula = "";
|
||||
}
|
||||
if (dbQuery.row.policy) {
|
||||
data.policy = '<a class="privacy-policy badge" href="caa:addon/' + data.slug + '/privacy">Privacy Policy</a>';
|
||||
data.policy = '<a class="privacy-policy badge" href="#addon/' + data.slug + '/privacy">Privacy Policy</a>';
|
||||
} else {
|
||||
data.policy = "";
|
||||
}
|
||||
@@ -180,7 +170,7 @@ let Addon = {
|
||||
if (tags.length > 0) {
|
||||
data.tags = '<div class="clearboth"><h3 class="compact-bottom">Tags</h3><div id="tagbox"><ul class="addon-tags nojs">';
|
||||
for (let tag of tags) {
|
||||
data.tags += '<li class="tag"><a href="caa:list?tag=' + tag + '" class="tagitem"> ' + tag + ' </a></li>';
|
||||
data.tags += '<li class="tag"><a href="#list?tag=' + tag + '" class="tagitem"> ' + tag + ' </a></li>';
|
||||
}
|
||||
data.tags += "</ul></div></div>";
|
||||
} else {
|
||||
@@ -198,7 +188,7 @@ let Addon = {
|
||||
let cat_names = { "alerts-updates": "Alerts & Updates", "appearance": "Appearance", "bookmarks": "Bookmarks", "download-management": "Download Management", "feeds-news-blogging": "Feeds, News & Blogging", "games-entertainment": "Games & Entertainment", "language-support": "Language Support", "photos-music-videos": "Photos, Music & Videos", "privacy-security": "Privacy & Security", "search-tools": "Search Tools", "shopping": "Shopping", "social-communication": "Social & Communication", "tabs": "Tabs", "web-development": "Web Development", "other": "Other"};
|
||||
data.categories = "<h3>Related Categories</h3><ul>";
|
||||
for (let category of categories) {
|
||||
data.categories += '<li><a href="caa:list/' + category + '">' + cat_names[category] + '</a></li>';
|
||||
data.categories += '<li><a href="#list/' + category + '">' + cat_names[category] + '</a></li>';
|
||||
}
|
||||
data.categories += "</ul>";
|
||||
} else {
|
||||
@@ -288,8 +278,8 @@ let Addon = {
|
||||
<section class="primary" id="addon-description-header">
|
||||
<div id="addon" class="island c" role="main" data-id="1865">
|
||||
<hgroup>
|
||||
<a target="_blank" href=%AMO% title="Open on AMO"><img class="amologo" src="chrome://ca-archive/skin/amo2k17.png"></a>
|
||||
<a target="_blank" href=%WBM% title="Open on Wayback Machine"><img class="wbmlogo" src="chrome://ca-archive/skin/logo_archive-sm.png"></a>
|
||||
<a target="_blank" href=%AMO% title="Open on AMO"><img class="amologo" src="../skin/amo2k17.png"></a>
|
||||
<a target="_blank" href=%WBM% title="Open on Wayback Machine"><img class="wbmlogo" src="../skin/logo_archive-sm.png"></a>
|
||||
<img id="addon-icon" itemprop="image" src="%ICON%" class="icon" alt="Icon of %NAME%">
|
||||
<h1 class="addon">
|
||||
<span itemprop="name">%NAME%</span>
|
||||
@@ -315,7 +305,7 @@ let Addon = {
|
||||
<ul></ul>
|
||||
</div>
|
||||
<div class="head-vercompat">
|
||||
<span class="head-right"><a href="caa:addon/%SLUG%/versions">View all %COUNT% versions</a></span>
|
||||
<span class="head-right"><a href="#addon/%SLUG%/versions">View all %COUNT% versions</a></span>
|
||||
<span class="head-left">Works with %COMPATV%</span>
|
||||
<p class="head-center">Released on %RELDATE%</p>
|
||||
</div>
|
||||
@@ -361,7 +351,7 @@ let Addon = {
|
||||
<div class="version item" id="version-%VERSION%">
|
||||
<div class="info">
|
||||
<h3>
|
||||
<a href="caa:addon/%SLUG%/versions?page=1#version-%VERSION%" title="Permanent link to this version">Version %VERSION%</a>
|
||||
<a href="#addon/%SLUG%/versions?page=1#version-%VERSION%" title="Permanent link to this version">Version %VERSION%</a>
|
||||
<span class="meta">
|
||||
<time>Released %RELDATE%</time>
|
||||
<span class="filesize">%SIZE%</span>
|
||||
@@ -376,7 +366,7 @@ let Addon = {
|
||||
</div>
|
||||
</div>
|
||||
<p class="more c">
|
||||
<a class="more-info" href="caa:addon/%SLUG%/versions">View all %COUNT% versions</a>
|
||||
<a class="more-info" href="#addon/%SLUG%/versions">View all %COUNT% versions</a>
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -44,38 +44,38 @@ const browserAPI = typeof browser !== "undefined" ? browser : chrome;
|
||||
if (typeof Versions === "undefined") {
|
||||
await loadScript("versions.js");
|
||||
}
|
||||
Versions.showPage(document, DB.db, params[1], params[3]);
|
||||
Versions.showPage(document, DB, params[1], params[3]);
|
||||
} else if ((params = /^addon\/(.+?)\/(eula|privacy|license\/(.+))$/.exec(url)) !== null) {
|
||||
if (typeof EPL === "undefined") {
|
||||
await loadScript("epl.js");
|
||||
}
|
||||
EPL.showPage(document, DB.db, params[1], params[2], params[3]);
|
||||
EPL.showPage(document, DB, params[1], params[2], params[3]);
|
||||
} else if ((params = /^addon\/(.+?)\/?$/.exec(url)) !== null) {
|
||||
if (typeof Addon === "undefined") {
|
||||
await loadScript("addon.js");
|
||||
}
|
||||
Addon.showPage(document, DB.db, params[1]);
|
||||
Addon.showPage(document, DB, params[1]);
|
||||
} else if ((params = /^list(\/([a-z-]+))?(\?tag=(.+?)|\?q=(.+?))?([\?|\&]sort=(\w+))?\&?(page=(\d+))?$/.exec(url)) !== null) {
|
||||
if (typeof List === "undefined") {
|
||||
await loadScript("list.js");
|
||||
}
|
||||
List.showPage(document, DB.db, params[2], params[4], params[5], params[7], params[9]);
|
||||
List.showPage(document, DB, params[2], params[4], params[5], params[7], params[9]);
|
||||
} else if (url === "" || url === "list") {
|
||||
if (typeof TCloud === "undefined") {
|
||||
await loadScript("tcloud.js");
|
||||
}
|
||||
TCloud.showPage(document, DB.db);
|
||||
TCloud.showPage(document, DB);
|
||||
} else if (url === "about") {
|
||||
if (typeof About === "undefined") {
|
||||
await loadScript("about.js");
|
||||
}
|
||||
About.showPage(document, DB.db);
|
||||
About.showPage(document, DB);
|
||||
} else {
|
||||
// Búsqueda genérica
|
||||
if (typeof List === "undefined") {
|
||||
await loadScript("list.js");
|
||||
}
|
||||
List.showPage(document, DB.db, undefined, undefined, url, undefined, undefined);
|
||||
List.showPage(document, DB, undefined, undefined, url, undefined, undefined);
|
||||
}
|
||||
} catch (e) {
|
||||
console.error("Navigation error:", e);
|
||||
|
||||
@@ -166,6 +166,10 @@ const DB = {
|
||||
div.appendChild(document.createTextNode(msg));
|
||||
const page = document.getElementById("page");
|
||||
if (page) {
|
||||
// Limpiar solo contenido dinámico, mantener cabecera
|
||||
Array.from(page.children).forEach(child => {
|
||||
if (!child.classList.contains('amo-header')) child.remove();
|
||||
});
|
||||
page.appendChild(div);
|
||||
}
|
||||
},
|
||||
@@ -211,31 +215,55 @@ const DB = {
|
||||
|
||||
// Crear un objeto que emule la API de mozIStorageStatement
|
||||
const stmt = this.db.prepare(sql);
|
||||
let currentRow = null;
|
||||
const columnNames = stmt.getColumnNames();
|
||||
const paramsObj = {};
|
||||
let paramsBound = false;
|
||||
|
||||
return {
|
||||
params: {},
|
||||
params: paramsObj,
|
||||
executeStep() {
|
||||
return stmt.step();
|
||||
// Bind parameters only once before first execution
|
||||
if (!paramsBound && Object.keys(paramsObj).length > 0) {
|
||||
// Convert params object to sql.js format (add ':' prefix to keys)
|
||||
const boundParams = {};
|
||||
for (const key in paramsObj) {
|
||||
boundParams[':' + key] = paramsObj[key];
|
||||
}
|
||||
stmt.bind(boundParams);
|
||||
paramsBound = true;
|
||||
}
|
||||
|
||||
const hasRow = stmt.step();
|
||||
if (hasRow) {
|
||||
const values = stmt.get();
|
||||
currentRow = {};
|
||||
columnNames.forEach((name, index) => {
|
||||
currentRow[name] = values[index];
|
||||
});
|
||||
}
|
||||
return hasRow;
|
||||
},
|
||||
reset() {
|
||||
stmt.reset();
|
||||
currentRow = null;
|
||||
paramsBound = false;
|
||||
},
|
||||
finalize() {
|
||||
stmt.free();
|
||||
currentRow = null;
|
||||
},
|
||||
get row() {
|
||||
return currentRow || {};
|
||||
},
|
||||
row: new Proxy({}, {
|
||||
get(target, prop) {
|
||||
return stmt.get()[stmt.getColumnNames().indexOf(prop)];
|
||||
}
|
||||
}),
|
||||
getString(index) {
|
||||
return stmt.get()[index];
|
||||
return currentRow ? Object.values(currentRow)[index] : null;
|
||||
},
|
||||
getInt32(index) {
|
||||
return stmt.get()[index];
|
||||
return currentRow ? Object.values(currentRow)[index] : 0;
|
||||
},
|
||||
getDouble(index) {
|
||||
return stmt.get()[index];
|
||||
return currentRow ? Object.values(currentRow)[index] : 0.0;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
"use strict";
|
||||
let EXPORTED_SYMBOLS = ["EPL"];
|
||||
|
||||
let EPL = {
|
||||
|
||||
@@ -11,6 +10,10 @@ let EPL = {
|
||||
|
||||
let contfrag = document.createRange().createContextualFragment(template);
|
||||
let page = document.getElementById("page");
|
||||
// Limpiar solo contenido dinámico, mantener cabecera
|
||||
Array.from(page.children).forEach(child => {
|
||||
if (!child.classList.contains('amo-header')) child.remove();
|
||||
});
|
||||
let frag = contfrag.firstElementChild;
|
||||
page.appendChild(frag);
|
||||
},
|
||||
@@ -76,7 +79,7 @@ let EPL = {
|
||||
<h2>%TYPE%</h2>
|
||||
%LICNAME%
|
||||
<div class="policy-statement">%CONTENT%</div>
|
||||
<p class="policy-back"><a href="caa:addon/%SLUG%">Back to %NAME%…</a></p>
|
||||
<p class="policy-back"><a href="#addon/%SLUG%">Back to %NAME%…</a></p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
"use strict";
|
||||
let EXPORTED_SYMBOLS = ["List"];
|
||||
|
||||
var Cu = Components.utils;
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
let List = {
|
||||
|
||||
@@ -78,6 +74,10 @@ let List = {
|
||||
|
||||
let contfrag = document.createRange().createContextualFragment(template);
|
||||
let pagediv = document.getElementById("page");
|
||||
// Limpiar solo contenido dinámico, mantener cabecera
|
||||
Array.from(pagediv.children).forEach(child => {
|
||||
if (!child.classList.contains('amo-header')) child.remove();
|
||||
});
|
||||
let frag = contfrag.firstElementChild;
|
||||
pagediv.appendChild(frag.children[0]);
|
||||
pagediv.appendChild(frag.children[0]);
|
||||
@@ -150,9 +150,9 @@ let List = {
|
||||
item = item.replace(/%SLUG%/g, dbQuery.row.slug);
|
||||
item = item.replace("%SUMMARY%", dbQuery.row.summary);
|
||||
if (dbQuery.row.icon) {
|
||||
item = item.replace("%ICON%", "chrome://ca-archive/skin/icons/" + dbQuery.row.icon + ".png");
|
||||
item = item.replace("%ICON%", "../skin/icons/" + dbQuery.row.icon + ".png");
|
||||
} else {
|
||||
item = item.replace("%ICON%", "chrome://ca-archive/skin/icons/" + Math.trunc(dbQuery.row.addon_id/1000) + "/" + dbQuery.row.addon_id + ".png");
|
||||
item = item.replace("%ICON%", "../skin/icons/" + Math.trunc(dbQuery.row.addon_id/1000) + "/" + dbQuery.row.addon_id + ".png");
|
||||
}
|
||||
let users;
|
||||
if (dbQuery.row.users >= 0) {
|
||||
@@ -179,21 +179,11 @@ let List = {
|
||||
experiment = 'caution';
|
||||
}
|
||||
item = item.replace("%EXPERIMENT%", experiment);
|
||||
let appver;
|
||||
if (Services.appinfo.name == "Pale Moon") {
|
||||
appver = "27.9";
|
||||
} else if (Services.appinfo.name != "SeaMonkey" && Services.appinfo.name != "Iceape-UXP") {
|
||||
appver = Services.appinfo.version;
|
||||
}
|
||||
if (appver && Services.vc.compare(dbQuery.row.min, appver) <= 0 && Services.vc.compare(appver, dbQuery.row.max) <= 0) {
|
||||
item = item.replace("%COMPAT%", "add");
|
||||
item = item.replace("%ACTION%", "Install Now");
|
||||
item = item.replace("%DOWNURL%", "https://ca-archive.us.to/storage/" + Math.trunc(dbQuery.row.addon_id/1000) + "/" + dbQuery.row.addon_id + "/" + dbQuery.row.url.replace(/^\d+\/(.*)/,"$1") + "?origin=caa&action=install");
|
||||
} else {
|
||||
item = item.replace("%COMPAT%", "download");
|
||||
item = item.replace("%ACTION%", "List Versions");
|
||||
item = item.replace("%DOWNURL%", "caa:addon/" + dbQuery.row.slug + "/versions");
|
||||
}
|
||||
|
||||
// En WebExtensions no podemos instalar automáticamente, siempre mostrar versiones
|
||||
item = item.replace("%COMPAT%", "download");
|
||||
item = item.replace("%ACTION%", "List Versions");
|
||||
item = item.replace("%DOWNURL%", "#addon/" + dbQuery.row.slug + "/versions");
|
||||
|
||||
data.items += item;
|
||||
}
|
||||
@@ -237,27 +227,27 @@ let List = {
|
||||
<nav id="side-nav" class="c" data-addontype="1">
|
||||
<h2>Explore</h2>
|
||||
<ul id="side-explore">
|
||||
<li class="s-users"><em><a href="caa:list?sort=users">Most Popular</a></em></li>
|
||||
<li class="s-rating"><em><a href="caa:list?sort=rating">Top Rated</a></em></li>
|
||||
<li class="s-users"><em><a href="#list?sort=users">Most Popular</a></em></li>
|
||||
<li class="s-rating"><em><a href="#list?sort=rating">Top Rated</a></em></li>
|
||||
</ul>
|
||||
<h2>Categories</h2>
|
||||
<ul id="side-categories">
|
||||
<li id="c-0"><a href="caa:list%TAGC%">All</a></li>
|
||||
<li id="c-72"><a href="caa:list/alerts-updates%TAGC%">Alerts & Updates</a></li>
|
||||
<li id="c-14"><a href="caa:list/appearance%TAGC%">Appearance</a></li>
|
||||
<li id="c-22"><a href="caa:list/bookmarks%TAGC%">Bookmarks</a></li>
|
||||
<li id="c-5"><a href="caa:list/download-management%TAGC%">Download Management</a></li>
|
||||
<li id="c-1"><a href="caa:list/feeds-news-blogging%TAGC%">Feeds, News & Blogging</a></li>
|
||||
<li id="c-142"><a href="caa:list/games-entertainment%TAGC%">Games & Entertainment</a></li>
|
||||
<li id="c-37"><a href="caa:list/language-support%TAGC%">Language Support</a></li>
|
||||
<li id="c-38"><a href="caa:list/photos-music-videos%TAGC%">Photos, Music & Videos</a></li>
|
||||
<li id="c-12"><a href="caa:list/privacy-security%TAGC%">Privacy & Security</a></li>
|
||||
<li id="c-13"><a href="caa:list/search-tools%TAGC%">Search Tools</a></li>
|
||||
<li id="c-141"><a href="caa:list/shopping%TAGC%">Shopping</a></li>
|
||||
<li id="c-71"><a href="caa:list/social-communication%TAGC%">Social & Communication</a></li>
|
||||
<li id="c-93"><a href="caa:list/tabs%TAGC%">Tabs</a></li>
|
||||
<li id="c-4"><a href="caa:list/web-development%TAGC%">Web Development</a></li>
|
||||
<li id="c-73"><a href="caa:list/other%TAGC%">Other</a></li>
|
||||
<li id="c-0"><a href="#list%TAGC%">All</a></li>
|
||||
<li id="c-72"><a href="#list/alerts-updates%TAGC%">Alerts & Updates</a></li>
|
||||
<li id="c-14"><a href="#list/appearance%TAGC%">Appearance</a></li>
|
||||
<li id="c-22"><a href="#list/bookmarks%TAGC%">Bookmarks</a></li>
|
||||
<li id="c-5"><a href="#list/download-management%TAGC%">Download Management</a></li>
|
||||
<li id="c-1"><a href="#list/feeds-news-blogging%TAGC%">Feeds, News & Blogging</a></li>
|
||||
<li id="c-142"><a href="#list/games-entertainment%TAGC%">Games & Entertainment</a></li>
|
||||
<li id="c-37"><a href="#list/language-support%TAGC%">Language Support</a></li>
|
||||
<li id="c-38"><a href="#list/photos-music-videos%TAGC%">Photos, Music & Videos</a></li>
|
||||
<li id="c-12"><a href="#list/privacy-security%TAGC%">Privacy & Security</a></li>
|
||||
<li id="c-13"><a href="#list/search-tools%TAGC%">Search Tools</a></li>
|
||||
<li id="c-141"><a href="#list/shopping%TAGC%">Shopping</a></li>
|
||||
<li id="c-71"><a href="#list/social-communication%TAGC%">Social & Communication</a></li>
|
||||
<li id="c-93"><a href="#list/tabs%TAGC%">Tabs</a></li>
|
||||
<li id="c-4"><a href="#list/web-development%TAGC%">Web Development</a></li>
|
||||
<li id="c-73"><a href="#list/other%TAGC%">Other</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</section>
|
||||
@@ -270,12 +260,12 @@ let List = {
|
||||
<div id="sorter" class="c pjax-trigger">
|
||||
<h3>Sort by:</h3>
|
||||
<ul>
|
||||
<li %SORT0%><a class="opt" href="caa:list%CAT%?%TAG%sort=users">Most Users</a></li>
|
||||
<li %SORT1%><a class="opt" href="caa:list%CAT%?%TAG%sort=rating">Top Rated</a></li>
|
||||
<li %SORT2%><a class="opt" href="caa:list%CAT%?%TAG%sort=reviews">Most Reviews</a></li>
|
||||
<li %SORT3%><a class="opt" href="caa:list%CAT%?%TAG%sort=created">Newest</a></li>
|
||||
<li %SORT4%><a class="opt" href="caa:list%CAT%?%TAG%sort=updated">Recently Updated</a></li>
|
||||
<li %SORT5%><a class="opt" href="caa:list%CAT%?%TAG%sort=name">Name</a></li>
|
||||
<li %SORT0%><a class="opt" href="#list%CAT%?%TAG%sort=users">Most Users</a></li>
|
||||
<li %SORT1%><a class="opt" href="#list%CAT%?%TAG%sort=rating">Top Rated</a></li>
|
||||
<li %SORT2%><a class="opt" href="#list%CAT%?%TAG%sort=reviews">Most Reviews</a></li>
|
||||
<li %SORT3%><a class="opt" href="#list%CAT%?%TAG%sort=created">Newest</a></li>
|
||||
<li %SORT4%><a class="opt" href="#list%CAT%?%TAG%sort=updated">Recently Updated</a></li>
|
||||
<li %SORT5%><a class="opt" href="#list%CAT%?%TAG%sort=name">Name</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -284,12 +274,12 @@ let List = {
|
||||
</div> <!-- items -->
|
||||
|
||||
<nav class="paginator c pjax-trigger">
|
||||
<p class="num">Page <a href="caa:list%CAT%?%TAG%sort=%SORT%&page=%PAGE%">%PAGE%</a> of <a href="caa:list%CAT%?%TAG%sort=%SORT%&page=%PAGES%">%PAGES%</a></p>
|
||||
<p class="num">Page <a href="#list%CAT%?%TAG%sort=%SORT%&page=%PAGE%">%PAGE%</a> of <a href="#list%CAT%?%TAG%sort=%SORT%&page=%PAGES%">%PAGES%</a></p>
|
||||
<p class="rel">
|
||||
<a href="caa:list%CAT%?%TAG%sort=%SORT%&page=1" title="Jump to first page" class="jump %DISPREV%">◂◂</a>
|
||||
<a href="caa:list%CAT%?%TAG%sort=%SORT%&page=%PREV%" class="button prev %DISPREV%">◂ Previous</a>
|
||||
<a href="caa:list%CAT%?%TAG%sort=%SORT%&page=%NEXT%" class="button next %DISNEXT%">Next ▸</a>
|
||||
<a href="caa:list%CAT%?%TAG%sort=%SORT%&page=%PAGES%" title="Jump to last page" class="jump %DISNEXT%">▸▸</a>
|
||||
<a href="#list%CAT%?%TAG%sort=%SORT%&page=1" title="Jump to first page" class="jump %DISPREV%">◂◂</a>
|
||||
<a href="#list%CAT%?%TAG%sort=%SORT%&page=%PREV%" class="button prev %DISPREV%">◂ Previous</a>
|
||||
<a href="#list%CAT%?%TAG%sort=%SORT%&page=%NEXT%" class="button next %DISNEXT%">Next ▸</a>
|
||||
<a href="#list%CAT%?%TAG%sort=%SORT%&page=%PAGES%" title="Jump to last page" class="jump %DISNEXT%">▸▸</a>
|
||||
</p>
|
||||
<p class="pos">Showing <b>%PFROM%</b>–<b>%PTO%</b> of <b>%COUNT%</b></p>
|
||||
</nav>
|
||||
@@ -305,14 +295,14 @@ let List = {
|
||||
<div class="item addon">
|
||||
<div class="info">
|
||||
<h3>
|
||||
<a href="caa:addon/%SLUG%"><img src="%ICON%" alt="">%NAME%</a>
|
||||
<a href="#addon/%SLUG%"><img src="%ICON%" alt="">%NAME%</a>
|
||||
%RESTART%
|
||||
</h3>
|
||||
<p class="desc">%SUMMARY%</p>
|
||||
<div class="vitals c">
|
||||
<span class="rating">
|
||||
<span class="stars stars-%RATING%" title="Rated %RATING% out of 5 stars">Rated %RATING% out of 5 stars</span>
|
||||
<a href="caa:addon/%SLUG%">%REVIEWS%</a>
|
||||
<a href="#addon/%SLUG%">%REVIEWS%</a>
|
||||
</span>
|
||||
%USERS%
|
||||
</div>
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
"use strict";
|
||||
let EXPORTED_SYMBOLS = ["TCloud"];
|
||||
|
||||
var Cu = Components.utils;
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
let TCloud = {
|
||||
|
||||
@@ -13,16 +9,17 @@ let TCloud = {
|
||||
|
||||
let contfrag = document.createRange().createContextualFragment(template);
|
||||
let page = document.getElementById("page");
|
||||
// Limpiar solo contenido dinámico, mantener cabecera
|
||||
Array.from(page.children).forEach(child => {
|
||||
if (!child.classList.contains('amo-header')) child.remove();
|
||||
});
|
||||
let frag = contfrag.firstElementChild;
|
||||
page.appendChild(frag);
|
||||
},
|
||||
|
||||
processTemplate: function(template) {
|
||||
if (Services.appinfo.browserTabsRemoteAutostart) {
|
||||
template = template.replace("%E10S%", "<div style='float: right; border: 1px solid #c9ddf2; padding: 3px; margin-top: 2px;'><a style='text-decoration: none;' href='https://github.com/JustOff/ca-archive/issues/2' target='_blank'>∗ " + Services.appinfo.name + " in multi-process mode can't restore <span style='font-style: italic;'>caa:</span> urls after restart ∗</a></div>");
|
||||
} else {
|
||||
template = template.replace("%E10S%", "");
|
||||
}
|
||||
// Eliminar advertencia e10s (ya no relevante en WebExtensions con hash routing)
|
||||
template = template.replace("%E10S%", "");
|
||||
return template;
|
||||
},
|
||||
|
||||
@@ -34,27 +31,27 @@ let TCloud = {
|
||||
<nav id="side-nav" class="c" data-addontype="1">
|
||||
<h2>Explore</h2>
|
||||
<ul id="side-explore">
|
||||
<li class="s-users"><em><a href="caa:list?sort=users">Most Popular</a></em></li>
|
||||
<li class="s-rating"><em><a href="caa:list?sort=rating">Top Rated</a></em></li>
|
||||
<li class="s-users"><em><a href="#list?sort=users">Most Popular</a></em></li>
|
||||
<li class="s-rating"><em><a href="#list?sort=rating">Top Rated</a></em></li>
|
||||
</ul>
|
||||
<h2>Categories</h2>
|
||||
<ul id="side-categories">
|
||||
<li id="c-0"><a href="caa:list">All</a></li>
|
||||
<li id="c-72"><a href="caa:list/alerts-updates">Alerts & Updates</a></li>
|
||||
<li id="c-14"><a href="caa:list/appearance">Appearance</a></li>
|
||||
<li id="c-22"><a href="caa:list/bookmarks">Bookmarks</a></li>
|
||||
<li id="c-5"><a href="caa:list/download-management">Download Management</a></li>
|
||||
<li id="c-1"><a href="caa:list/feeds-news-blogging">Feeds, News & Blogging</a></li>
|
||||
<li id="c-142"><a href="caa:list/games-entertainment">Games & Entertainment</a></li>
|
||||
<li id="c-37"><a href="caa:list/language-support">Language Support</a></li>
|
||||
<li id="c-38"><a href="caa:list/photos-music-videos">Photos, Music & Videos</a></li>
|
||||
<li id="c-12"><a href="caa:list/privacy-security">Privacy & Security</a></li>
|
||||
<li id="c-13"><a href="caa:list/search-tools">Search Tools</a></li>
|
||||
<li id="c-141"><a href="caa:list/shopping">Shopping</a></li>
|
||||
<li id="c-71"><a href="caa:list/social-communication">Social & Communication</a></li>
|
||||
<li id="c-93"><a href="caa:list/tabs">Tabs</a></li>
|
||||
<li id="c-4"><a href="caa:list/web-development">Web Development</a></li>
|
||||
<li id="c-73"><a href="caa:list/other">Other</a></li>
|
||||
<li id="c-0"><a href="#list">All</a></li>
|
||||
<li id="c-72"><a href="#list/alerts-updates">Alerts & Updates</a></li>
|
||||
<li id="c-14"><a href="#list/appearance">Appearance</a></li>
|
||||
<li id="c-22"><a href="#list/bookmarks">Bookmarks</a></li>
|
||||
<li id="c-5"><a href="#list/download-management">Download Management</a></li>
|
||||
<li id="c-1"><a href="#list/feeds-news-blogging">Feeds, News & Blogging</a></li>
|
||||
<li id="c-142"><a href="#list/games-entertainment">Games & Entertainment</a></li>
|
||||
<li id="c-37"><a href="#list/language-support">Language Support</a></li>
|
||||
<li id="c-38"><a href="#list/photos-music-videos">Photos, Music & Videos</a></li>
|
||||
<li id="c-12"><a href="#list/privacy-security">Privacy & Security</a></li>
|
||||
<li id="c-13"><a href="#list/search-tools">Search Tools</a></li>
|
||||
<li id="c-141"><a href="#list/shopping">Shopping</a></li>
|
||||
<li id="c-71"><a href="#list/social-communication">Social & Communication</a></li>
|
||||
<li id="c-93"><a href="#list/tabs">Tabs</a></li>
|
||||
<li id="c-4"><a href="#list/web-development">Web Development</a></li>
|
||||
<li id="c-73"><a href="#list/other">Other</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</section>
|
||||
@@ -65,103 +62,103 @@ let TCloud = {
|
||||
<div class="island hero c listing">
|
||||
|
||||
<div class="tcloud" id="demo" style="width: 720px; height: 520px; position: relative;">
|
||||
<span style="left: 283px; top: 231px;" class="tcw w10"><a href="caa:list?tag=toolbar">toolbar</a></span>
|
||||
<span style="left: 276px; top: 175px;" class="tcw w9"><a href="caa:list?tag=search">search</a></span>
|
||||
<span style="left: 228px; top: 293px;" class="tcw w8"><a href="caa:list?tag=google">google</a></span>
|
||||
<span style="left: 282px; top: 126px;" class="tcw w8"><a href="caa:list?tag=youtube">youtube</a></span>
|
||||
<span style="left: 367px; top: 289px;" class="tcw w7"><a href="caa:list?tag=tab">tab</a></span>
|
||||
<span style="left: 433px; top: 296px;" class="tcw w7"><a href="caa:list?tag=facebook">facebook</a></span>
|
||||
<span style="left: 442px; top: 242px;" class="tcw w7"><a href="caa:list?tag=bookmarks">bookmarks</a></span>
|
||||
<span style="left: 122px; top: 247px;" class="tcw w7"><a href="caa:list?tag=download">download</a></span>
|
||||
<span style="left: 223px; top: 352px;" class="tcw w7"><a href="caa:list?tag=security">security</a></span>
|
||||
<span style="left: 425px; top: 192px;" class="tcw w6"><a href="caa:list?tag=tabs">tabs</a></span>
|
||||
<span style="left: 166px; top: 155px;" class="tcw w6"><a href="caa:list?tag=privacy">privacy</a></span>
|
||||
<span style="left: 400px; top: 346px;" class="tcw w6"><a href="caa:list?tag=video">video</a></span>
|
||||
<span style="left: 264px; top: 82px;" class="tcw w6"><a href="caa:list?tag=shopping">shopping</a></span>
|
||||
<span style="left: 516px; top: 194px;" class="tcw w6"><a href="caa:list?tag=url">url</a></span>
|
||||
<span style="left: 451px; top: 137px;" class="tcw w6"><a href="caa:list?tag=twitter">twitter</a></span>
|
||||
<span style="left: 122px; top: 301px;" class="tcw w5"><a href="caa:list?tag=image">image</a></span>
|
||||
<span style="left: 206px; top: 396px;" class="tcw w5"><a href="caa:list?tag=bookmark">bookmark</a></span>
|
||||
<span style="left: 479px; top: 354px;" class="tcw w5"><a href="caa:list?tag=sports">sports</a></span>
|
||||
<span style="left: 351px; top: 337px;" class="tcw w5"><a href="caa:list?tag=link">link</a></span>
|
||||
<span style="left: 429px; top: 387px;" class="tcw w5"><a href="caa:list?tag=music">music</a></span>
|
||||
<span style="left: 165px; top: 109px;" class="tcw w5"><a href="caa:list?tag=amazon">amazon</a></span>
|
||||
<span style="left: 73px; top: 211px;" class="tcw w5"><a href="caa:list?tag=dictionary">dictionary</a></span>
|
||||
<span style="left: 204px; top: 218px;" class="tcw w4"><a href="caa:list?tag=social">social</a></span>
|
||||
<span style="left: 108px; top: 367px;" class="tcw w4"><a href="caa:list?tag=athletics">athletics</a></span>
|
||||
<span style="left: 568px; top: 205px;" class="tcw w4"><a href="caa:list?tag=news">news</a></span>
|
||||
<span style="left: 315px; top: 38px;" class="tcw w4"><a href="caa:list?tag=productivity">productivity</a></span>
|
||||
<span style="left: 547px; top: 157px;" class="tcw w4"><a href="caa:list?tag=share">share</a></span>
|
||||
<span style="left: 402px; top: 96px;" class="tcw w4"><a href="caa:list?tag=firefox">firefox</a></span>
|
||||
<span style="left: 319px; top: 428px;" class="tcw w4"><a href="caa:list?tag=button">button</a></span>
|
||||
<span style="left: 175px; top: 338px;" class="tcw w4"><a href="caa:list?tag=web">web</a></span>
|
||||
<span style="left: 359px; top: 384px;" class="tcw w4"><a href="caa:list?tag=links">links</a></span>
|
||||
<span style="left: 583px; top: 335px;" class="tcw w4"><a href="caa:list?tag=seo">seo</a></span>
|
||||
<span style="left: 91px; top: 188px;" class="tcw w3"><a href="caa:list?tag=college">college</a></span>
|
||||
<span style="left: 480px; top: 114px;" class="tcw w3"><a href="caa:list?tag=text">text</a></span>
|
||||
<span style="left: 414px; top: 424px;" class="tcw w3"><a href="caa:list?tag=proxy">proxy</a></span>
|
||||
<span style="left: 92px; top: 325px;" class="tcw w3"><a href="caa:list?tag=rss">rss</a></span>
|
||||
<span style="left: 74px; top: 294px;" class="tcw w3"><a href="caa:list?tag=menu">menu</a></span>
|
||||
<span style="left: 543px; top: 387px;" class="tcw w3"><a href="caa:list?tag=gmail">gmail</a></span>
|
||||
<span style="left: 132px; top: 398px;" class="tcw w3"><a href="caa:list?tag=history">history</a></span>
|
||||
<span style="left: 48px; top: 261px;" class="tcw w3"><a href="caa:list?tag=images">images</a></span>
|
||||
<span style="left: 235px; top: 53px;" class="tcw w3"><a href="caa:list?tag=email">email</a></span>
|
||||
<span style="left: 487px; top: 77px;" class="tcw w3"><a href="caa:list?tag=password">password</a></span>
|
||||
<span style="left: 183px; top: 438px;" class="tcw w3"><a href="caa:list?tag=language">language</a></span>
|
||||
<span style="left: 433px; top: 56px;" class="tcw w3"><a href="caa:list?tag=mp3">mp3</a></span>
|
||||
<span style="left: 141px; top: 77px;" class="tcw w3"><a href="caa:list?tag=javascript">javascript</a></span>
|
||||
<span style="left: 486px; top: 428px;" class="tcw w3"><a href="caa:list?tag=block">block</a></span>
|
||||
<span style="left: 262px; top: 464px;" class="tcw w3"><a href="caa:list?tag=translate">translate</a></span>
|
||||
<span style="left: 383px; top: 456px;" class="tcw w3"><a href="caa:list?tag=development">development</a></span>
|
||||
<span style="left: 131px; top: 145px;" class="tcw w2"><a href="caa:list?tag=copy">copy</a></span>
|
||||
<span style="left: 566px; top: 186px;" class="tcw w2"><a href="caa:list?tag=football">football</a></span>
|
||||
<span style="left: 524px; top: 117px;" class="tcw w2"><a href="caa:list?tag=save">save</a></span>
|
||||
<span style="left: 604px; top: 287px;" class="tcw w2"><a href="caa:list?tag=flash">flash</a></span>
|
||||
<span style="left: 564px; top: 369px;" class="tcw w2"><a href="caa:list?tag=yahoo">yahoo</a></span>
|
||||
<span style="left: 202px; top: 290px;" class="tcw w2"><a href="caa:list?tag=free">free</a></span>
|
||||
<span style="left: 629px; top: 265px;" class="tcw w2"><a href="caa:list?tag=sidebar">sidebar</a></span>
|
||||
<span style="left: 559px; top: 116px;" class="tcw w2"><a href="caa:list?tag=translation">translation</a></span>
|
||||
<span style="left: 511px; top: 405px;" class="tcw w2"><a href="caa:list?tag=html">html</a></span>
|
||||
<span style="left: 70px; top: 155px;" class="tcw w2"><a href="caa:list?tag=theme">theme</a></span>
|
||||
<span style="left: 626px; top: 204px;" class="tcw w2"><a href="caa:list?tag=wikipedia">wikipedia</a></span>
|
||||
<span style="left: 613px; top: 166px;" class="tcw w2"><a href="caa:list?tag=university">university</a></span>
|
||||
<span style="left: 100px; top: 119px;" class="tcw w2"><a href="caa:list?tag=bing">bing</a></span>
|
||||
<span style="left: 220px; top: 91px;" class="tcw w2"><a href="caa:list?tag=css">css</a></span>
|
||||
<span style="left: 472px; top: 44px;" class="tcw w2"><a href="caa:list?tag=search%20engine">search engine</a></span>
|
||||
<span style="left: 339px; top: 471px;" class="tcw w2"><a href="caa:list?tag=ads">ads</a></span>
|
||||
<span style="left: 609px; top: 143px;" class="tcw w2"><a href="caa:list?tag=english">english</a></span>
|
||||
<span style="left: 113px; top: 100px;" class="tcw w2"><a href="caa:list?tag=online">online</a></span>
|
||||
<span style="left: 50px; top: 172px;" class="tcw w2"><a href="caa:list?tag=hide">hide</a></span>
|
||||
<span style="left: 649px; top: 235px;" class="tcw w2"><a href="caa:list?tag=new%20tab">new tab</a></span>
|
||||
<span style="left: 10px; top: 235px;" class="tcw w2"><a href="caa:list?tag=coupons">coupons</a></span>
|
||||
<span style="left: 611px; top: 318px;" class="tcw w2"><a href="caa:list?tag=context%20menu">context menu</a></span>
|
||||
<span style="left: 569px; top: 89px;" class="tcw w2"><a href="caa:list?tag=ebay">ebay</a></span>
|
||||
<span style="left: 177px; top: 55px;" class="tcw w2"><a href="caa:list?tag=photo">photo</a></span>
|
||||
<span style="left: 246px; top: 204px;" class="tcw w1"><a href="caa:list?tag=color">color</a></span>
|
||||
<span style="left: 491px; top: 177px;" class="tcw w1"><a href="caa:list?tag=deals">deals</a></span>
|
||||
<span style="left: 77px; top: 244px;" class="tcw w1"><a href="caa:list?tag=extension">extension</a></span>
|
||||
<span style="left: 282px; top: 68px;" class="tcw w1"><a href="caa:list?tag=firebug">firebug</a></span>
|
||||
<span style="left: 95px; top: 353px;" class="tcw w1"><a href="caa:list?tag=navigation">navigation</a></span>
|
||||
<span style="left: 137px; top: 174px;" class="tcw w1"><a href="caa:list?tag=chat">chat</a></span>
|
||||
<span style="left: 367px; top: 495px;" class="tcw w1"><a href="caa:list?tag=cookies">cookies</a></span>
|
||||
<span style="left: 256px; top: 26px;" class="tcw w1"><a href="caa:list?tag=keyboard">keyboard</a></span>
|
||||
<span style="left: 195px; top: 373px;" class="tcw w1"><a href="caa:list?tag=mail">mail</a></span>
|
||||
<span style="left: 93px; top: 405px;" class="tcw w1"><a href="caa:list?tag=popup">popup</a></span>
|
||||
<span style="left: 545px; top: 445px;" class="tcw w1"><a href="caa:list?tag=addon">addon</a></span>
|
||||
<span style="left: 636px; top: 359px;" class="tcw w1"><a href="caa:list?tag=downloader">downloader</a></span>
|
||||
<span style="left: 24px; top: 317px;" class="tcw w1"><a href="caa:list?tag=recommended">recommended</a></span>
|
||||
<span style="left: 352px; top: 20px;" class="tcw w1"><a href="caa:list?tag=browser">browser</a></span>
|
||||
<span style="left: 415px; top: 18px;" class="tcw w1"><a href="caa:list?tag=shortcut">shortcut</a></span>
|
||||
<span style="left: 32px; top: 350px;" class="tcw w1"><a href="caa:list?tag=manager">manager</a></span>
|
||||
<span style="left: 607px; top: 394px;" class="tcw w1"><a href="caa:list?tag=screenshot">screenshot</a></span>
|
||||
<span style="left: 587px; top: 424px;" class="tcw w1"><a href="caa:list?tag=testing">testing</a></span>
|
||||
<span style="left: 55px; top: 379px;" class="tcw w1"><a href="caa:list?tag=tracking">tracking</a></span>
|
||||
<span style="left: 10px; top: 285px;" class="tcw w1"><a href="caa:list?tag=accessibility">accessibility</a></span>
|
||||
<span style="left: 661px; top: 292px;" class="tcw w1"><a href="caa:list?tag=notification">notification</a></span>
|
||||
<span style="left: 430px; top: 483px;" class="tcw w1"><a href="caa:list?tag=sharing">sharing</a></span>
|
||||
<span style="left: 119px; top: 431px;" class="tcw w1"><a href="caa:list?tag=developer">developer</a></span>
|
||||
<span style="left: 25px; top: 210px;" class="tcw w1"><a href="caa:list?tag=highlight">highlight</a></span>
|
||||
<span style="left: 324px; top: 7px;" class="tcw w1"><a href="caa:list?tag=upload">upload</a></span>
|
||||
<span style="left: 283px; top: 231px;" class="tcw w10"><a href="#list?tag=toolbar">toolbar</a></span>
|
||||
<span style="left: 276px; top: 175px;" class="tcw w9"><a href="#list?tag=search">search</a></span>
|
||||
<span style="left: 228px; top: 293px;" class="tcw w8"><a href="#list?tag=google">google</a></span>
|
||||
<span style="left: 282px; top: 126px;" class="tcw w8"><a href="#list?tag=youtube">youtube</a></span>
|
||||
<span style="left: 367px; top: 289px;" class="tcw w7"><a href="#list?tag=tab">tab</a></span>
|
||||
<span style="left: 433px; top: 296px;" class="tcw w7"><a href="#list?tag=facebook">facebook</a></span>
|
||||
<span style="left: 442px; top: 242px;" class="tcw w7"><a href="#list?tag=bookmarks">bookmarks</a></span>
|
||||
<span style="left: 122px; top: 247px;" class="tcw w7"><a href="#list?tag=download">download</a></span>
|
||||
<span style="left: 223px; top: 352px;" class="tcw w7"><a href="#list?tag=security">security</a></span>
|
||||
<span style="left: 425px; top: 192px;" class="tcw w6"><a href="#list?tag=tabs">tabs</a></span>
|
||||
<span style="left: 166px; top: 155px;" class="tcw w6"><a href="#list?tag=privacy">privacy</a></span>
|
||||
<span style="left: 400px; top: 346px;" class="tcw w6"><a href="#list?tag=video">video</a></span>
|
||||
<span style="left: 264px; top: 82px;" class="tcw w6"><a href="#list?tag=shopping">shopping</a></span>
|
||||
<span style="left: 516px; top: 194px;" class="tcw w6"><a href="#list?tag=url">url</a></span>
|
||||
<span style="left: 451px; top: 137px;" class="tcw w6"><a href="#list?tag=twitter">twitter</a></span>
|
||||
<span style="left: 122px; top: 301px;" class="tcw w5"><a href="#list?tag=image">image</a></span>
|
||||
<span style="left: 206px; top: 396px;" class="tcw w5"><a href="#list?tag=bookmark">bookmark</a></span>
|
||||
<span style="left: 479px; top: 354px;" class="tcw w5"><a href="#list?tag=sports">sports</a></span>
|
||||
<span style="left: 351px; top: 337px;" class="tcw w5"><a href="#list?tag=link">link</a></span>
|
||||
<span style="left: 429px; top: 387px;" class="tcw w5"><a href="#list?tag=music">music</a></span>
|
||||
<span style="left: 165px; top: 109px;" class="tcw w5"><a href="#list?tag=amazon">amazon</a></span>
|
||||
<span style="left: 73px; top: 211px;" class="tcw w5"><a href="#list?tag=dictionary">dictionary</a></span>
|
||||
<span style="left: 204px; top: 218px;" class="tcw w4"><a href="#list?tag=social">social</a></span>
|
||||
<span style="left: 108px; top: 367px;" class="tcw w4"><a href="#list?tag=athletics">athletics</a></span>
|
||||
<span style="left: 568px; top: 205px;" class="tcw w4"><a href="#list?tag=news">news</a></span>
|
||||
<span style="left: 315px; top: 38px;" class="tcw w4"><a href="#list?tag=productivity">productivity</a></span>
|
||||
<span style="left: 547px; top: 157px;" class="tcw w4"><a href="#list?tag=share">share</a></span>
|
||||
<span style="left: 402px; top: 96px;" class="tcw w4"><a href="#list?tag=firefox">firefox</a></span>
|
||||
<span style="left: 319px; top: 428px;" class="tcw w4"><a href="#list?tag=button">button</a></span>
|
||||
<span style="left: 175px; top: 338px;" class="tcw w4"><a href="#list?tag=web">web</a></span>
|
||||
<span style="left: 359px; top: 384px;" class="tcw w4"><a href="#list?tag=links">links</a></span>
|
||||
<span style="left: 583px; top: 335px;" class="tcw w4"><a href="#list?tag=seo">seo</a></span>
|
||||
<span style="left: 91px; top: 188px;" class="tcw w3"><a href="#list?tag=college">college</a></span>
|
||||
<span style="left: 480px; top: 114px;" class="tcw w3"><a href="#list?tag=text">text</a></span>
|
||||
<span style="left: 414px; top: 424px;" class="tcw w3"><a href="#list?tag=proxy">proxy</a></span>
|
||||
<span style="left: 92px; top: 325px;" class="tcw w3"><a href="#list?tag=rss">rss</a></span>
|
||||
<span style="left: 74px; top: 294px;" class="tcw w3"><a href="#list?tag=menu">menu</a></span>
|
||||
<span style="left: 543px; top: 387px;" class="tcw w3"><a href="#list?tag=gmail">gmail</a></span>
|
||||
<span style="left: 132px; top: 398px;" class="tcw w3"><a href="#list?tag=history">history</a></span>
|
||||
<span style="left: 48px; top: 261px;" class="tcw w3"><a href="#list?tag=images">images</a></span>
|
||||
<span style="left: 235px; top: 53px;" class="tcw w3"><a href="#list?tag=email">email</a></span>
|
||||
<span style="left: 487px; top: 77px;" class="tcw w3"><a href="#list?tag=password">password</a></span>
|
||||
<span style="left: 183px; top: 438px;" class="tcw w3"><a href="#list?tag=language">language</a></span>
|
||||
<span style="left: 433px; top: 56px;" class="tcw w3"><a href="#list?tag=mp3">mp3</a></span>
|
||||
<span style="left: 141px; top: 77px;" class="tcw w3"><a href="#list?tag=javascript">javascript</a></span>
|
||||
<span style="left: 486px; top: 428px;" class="tcw w3"><a href="#list?tag=block">block</a></span>
|
||||
<span style="left: 262px; top: 464px;" class="tcw w3"><a href="#list?tag=translate">translate</a></span>
|
||||
<span style="left: 383px; top: 456px;" class="tcw w3"><a href="#list?tag=development">development</a></span>
|
||||
<span style="left: 131px; top: 145px;" class="tcw w2"><a href="#list?tag=copy">copy</a></span>
|
||||
<span style="left: 566px; top: 186px;" class="tcw w2"><a href="#list?tag=football">football</a></span>
|
||||
<span style="left: 524px; top: 117px;" class="tcw w2"><a href="#list?tag=save">save</a></span>
|
||||
<span style="left: 604px; top: 287px;" class="tcw w2"><a href="#list?tag=flash">flash</a></span>
|
||||
<span style="left: 564px; top: 369px;" class="tcw w2"><a href="#list?tag=yahoo">yahoo</a></span>
|
||||
<span style="left: 202px; top: 290px;" class="tcw w2"><a href="#list?tag=free">free</a></span>
|
||||
<span style="left: 629px; top: 265px;" class="tcw w2"><a href="#list?tag=sidebar">sidebar</a></span>
|
||||
<span style="left: 559px; top: 116px;" class="tcw w2"><a href="#list?tag=translation">translation</a></span>
|
||||
<span style="left: 511px; top: 405px;" class="tcw w2"><a href="#list?tag=html">html</a></span>
|
||||
<span style="left: 70px; top: 155px;" class="tcw w2"><a href="#list?tag=theme">theme</a></span>
|
||||
<span style="left: 626px; top: 204px;" class="tcw w2"><a href="#list?tag=wikipedia">wikipedia</a></span>
|
||||
<span style="left: 613px; top: 166px;" class="tcw w2"><a href="#list?tag=university">university</a></span>
|
||||
<span style="left: 100px; top: 119px;" class="tcw w2"><a href="#list?tag=bing">bing</a></span>
|
||||
<span style="left: 220px; top: 91px;" class="tcw w2"><a href="#list?tag=css">css</a></span>
|
||||
<span style="left: 472px; top: 44px;" class="tcw w2"><a href="#list?tag=search%20engine">search engine</a></span>
|
||||
<span style="left: 339px; top: 471px;" class="tcw w2"><a href="#list?tag=ads">ads</a></span>
|
||||
<span style="left: 609px; top: 143px;" class="tcw w2"><a href="#list?tag=english">english</a></span>
|
||||
<span style="left: 113px; top: 100px;" class="tcw w2"><a href="#list?tag=online">online</a></span>
|
||||
<span style="left: 50px; top: 172px;" class="tcw w2"><a href="#list?tag=hide">hide</a></span>
|
||||
<span style="left: 649px; top: 235px;" class="tcw w2"><a href="#list?tag=new%20tab">new tab</a></span>
|
||||
<span style="left: 10px; top: 235px;" class="tcw w2"><a href="#list?tag=coupons">coupons</a></span>
|
||||
<span style="left: 611px; top: 318px;" class="tcw w2"><a href="#list?tag=context%20menu">context menu</a></span>
|
||||
<span style="left: 569px; top: 89px;" class="tcw w2"><a href="#list?tag=ebay">ebay</a></span>
|
||||
<span style="left: 177px; top: 55px;" class="tcw w2"><a href="#list?tag=photo">photo</a></span>
|
||||
<span style="left: 246px; top: 204px;" class="tcw w1"><a href="#list?tag=color">color</a></span>
|
||||
<span style="left: 491px; top: 177px;" class="tcw w1"><a href="#list?tag=deals">deals</a></span>
|
||||
<span style="left: 77px; top: 244px;" class="tcw w1"><a href="#list?tag=extension">extension</a></span>
|
||||
<span style="left: 282px; top: 68px;" class="tcw w1"><a href="#list?tag=firebug">firebug</a></span>
|
||||
<span style="left: 95px; top: 353px;" class="tcw w1"><a href="#list?tag=navigation">navigation</a></span>
|
||||
<span style="left: 137px; top: 174px;" class="tcw w1"><a href="#list?tag=chat">chat</a></span>
|
||||
<span style="left: 367px; top: 495px;" class="tcw w1"><a href="#list?tag=cookies">cookies</a></span>
|
||||
<span style="left: 256px; top: 26px;" class="tcw w1"><a href="#list?tag=keyboard">keyboard</a></span>
|
||||
<span style="left: 195px; top: 373px;" class="tcw w1"><a href="#list?tag=mail">mail</a></span>
|
||||
<span style="left: 93px; top: 405px;" class="tcw w1"><a href="#list?tag=popup">popup</a></span>
|
||||
<span style="left: 545px; top: 445px;" class="tcw w1"><a href="#list?tag=addon">addon</a></span>
|
||||
<span style="left: 636px; top: 359px;" class="tcw w1"><a href="#list?tag=downloader">downloader</a></span>
|
||||
<span style="left: 24px; top: 317px;" class="tcw w1"><a href="#list?tag=recommended">recommended</a></span>
|
||||
<span style="left: 352px; top: 20px;" class="tcw w1"><a href="#list?tag=browser">browser</a></span>
|
||||
<span style="left: 415px; top: 18px;" class="tcw w1"><a href="#list?tag=shortcut">shortcut</a></span>
|
||||
<span style="left: 32px; top: 350px;" class="tcw w1"><a href="#list?tag=manager">manager</a></span>
|
||||
<span style="left: 607px; top: 394px;" class="tcw w1"><a href="#list?tag=screenshot">screenshot</a></span>
|
||||
<span style="left: 587px; top: 424px;" class="tcw w1"><a href="#list?tag=testing">testing</a></span>
|
||||
<span style="left: 55px; top: 379px;" class="tcw w1"><a href="#list?tag=tracking">tracking</a></span>
|
||||
<span style="left: 10px; top: 285px;" class="tcw w1"><a href="#list?tag=accessibility">accessibility</a></span>
|
||||
<span style="left: 661px; top: 292px;" class="tcw w1"><a href="#list?tag=notification">notification</a></span>
|
||||
<span style="left: 430px; top: 483px;" class="tcw w1"><a href="#list?tag=sharing">sharing</a></span>
|
||||
<span style="left: 119px; top: 431px;" class="tcw w1"><a href="#list?tag=developer">developer</a></span>
|
||||
<span style="left: 25px; top: 210px;" class="tcw w1"><a href="#list?tag=highlight">highlight</a></span>
|
||||
<span style="left: 324px; top: 7px;" class="tcw w1"><a href="#list?tag=upload">upload</a></span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
"use strict";
|
||||
let EXPORTED_SYMBOLS = ["Versions"];
|
||||
|
||||
var Cu = Components.utils;
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
let Versions = {
|
||||
|
||||
@@ -18,6 +14,10 @@ let Versions = {
|
||||
|
||||
let contfrag = document.createRange().createContextualFragment(template);
|
||||
let pagediv = document.getElementById("page");
|
||||
// Limpiar solo contenido dinámico, mantener cabecera
|
||||
Array.from(pagediv.children).forEach(child => {
|
||||
if (!child.classList.contains('amo-header')) child.remove();
|
||||
});
|
||||
let frag = contfrag.firstElementChild;
|
||||
pagediv.appendChild(frag);
|
||||
},
|
||||
@@ -99,7 +99,7 @@ let Versions = {
|
||||
lic_url = dbQuery.row.lic_url;
|
||||
target = 'target="_blank"';
|
||||
} else {
|
||||
lic_url = "caa:addon/" + data.slug + "/license/" + dbQuery.row.version;
|
||||
lic_url = "#addon/" + data.slug + "/license/" + dbQuery.row.version;
|
||||
target = '';
|
||||
}
|
||||
license = '<ul class="source"><li>Source code released under <a ' + target + ' href="' + lic_url + '">' + dbQuery.row.lic_name + '</a></li></ul>';
|
||||
@@ -107,22 +107,11 @@ let Versions = {
|
||||
license = "";
|
||||
}
|
||||
item = item.replace("%LICENSE%", license);
|
||||
let appver;
|
||||
if (Services.appinfo.name == "Pale Moon") {
|
||||
appver = "27.9";
|
||||
} else if (Services.appinfo.name != "SeaMonkey" && Services.appinfo.name != "Iceape-UXP") {
|
||||
appver = Services.appinfo.version;
|
||||
}
|
||||
let downurl = "https://ca-archive.us.to/storage/" + Math.trunc(dbQuery.row.addon_id/1000) + "/" + dbQuery.row.addon_id + "/" + dbQuery.row.url.replace(/^\d+\/(.*)/,"$1") + "?origin=caa&action=";
|
||||
if (appver && Services.vc.compare(dbQuery.row.min, appver) <= 0 && Services.vc.compare(appver, dbQuery.row.max) <= 0) {
|
||||
item = item.replace("%COMPAT%", "add");
|
||||
item = item.replace("%ACTION%", "Install Now");
|
||||
downurl += "install";
|
||||
} else {
|
||||
item = item.replace("%COMPAT%", "download");
|
||||
item = item.replace("%ACTION%", "Download");
|
||||
downurl += "download";
|
||||
}
|
||||
|
||||
// En WebExtensions, las descargas son siempre externas
|
||||
let downurl = "https://ca-archive.us.to/storage/" + Math.trunc(dbQuery.row.addon_id/1000) + "/" + dbQuery.row.addon_id + "/" + dbQuery.row.url.replace(/^\d+\/(.*)/,"$1") + "?origin=caa&action=download";
|
||||
item = item.replace("%COMPAT%", "download");
|
||||
item = item.replace("%ACTION%", "Download");
|
||||
item = item.replace("%DOWNURL%", downurl);
|
||||
|
||||
data.items += item;
|
||||
@@ -160,19 +149,19 @@ let Versions = {
|
||||
|
||||
<div class="island hero c listing">
|
||||
<div class="warning highlight">
|
||||
<span><b>Be careful with old versions!</b> You should always prefer the <a href="caa:addon/%SLUG%">latest version</a> of an add-on.</span>
|
||||
<span><b>Be careful with old versions!</b> You should always prefer the <a href="#addon/%SLUG%">latest version</a> of an add-on.</span>
|
||||
</div>
|
||||
<div class="items">
|
||||
%ITEMS%
|
||||
</div>
|
||||
|
||||
<nav class="paginator c pjax-trigger">
|
||||
<p class="num">Page <a href="caa:addon/%SLUG%/versions/?page=%PAGE%">%PAGE%</a> of <a href="caa:addon/%SLUG%/versions/?page=%PAGES%">%PAGES%</a></p>
|
||||
<p class="num">Page <a href="#addon/%SLUG%/versions/?page=%PAGE%">%PAGE%</a> of <a href="#addon/%SLUG%/versions/?page=%PAGES%">%PAGES%</a></p>
|
||||
<p class="rel">
|
||||
<a href="caa:addon/%SLUG%/versions/?page=1" title="Jump to first page" class="jump %DISPREV%">◂◂</a>
|
||||
<a href="caa:addon/%SLUG%/versions/?page=%PREV%" class="button prev %DISPREV%">◂ Previous</a>
|
||||
<a href="caa:addon/%SLUG%/versions/?page=%NEXT%" class="button next %DISNEXT%">Next ▸</a>
|
||||
<a href="caa:addon/%SLUG%/versions/?page=%PAGES%" title="Jump to last page" class="jump %DISNEXT%">▸▸</a>
|
||||
<a href="#addon/%SLUG%/versions/?page=1" title="Jump to first page" class="jump %DISPREV%">◂◂</a>
|
||||
<a href="#addon/%SLUG%/versions/?page=%PREV%" class="button prev %DISPREV%">◂ Previous</a>
|
||||
<a href="#addon/%SLUG%/versions/?page=%NEXT%" class="button next %DISNEXT%">Next ▸</a>
|
||||
<a href="#addon/%SLUG%/versions/?page=%PAGES%" title="Jump to last page" class="jump %DISNEXT%">▸▸</a>
|
||||
</p>
|
||||
<p class="pos">Showing <b>%PFROM%</b>–<b>%PTO%</b> of <b>%COUNT%</b></p>
|
||||
</nav>
|
||||
@@ -187,7 +176,7 @@ let Versions = {
|
||||
<div class="version item" id="version-%VERSION%">
|
||||
<div class="info">
|
||||
<h3>
|
||||
<a href="caa:addon/%SLUG%/versions?page=%PAGE%#version-%VERSION%" title="Link to this version">Version %VERSION%</a>
|
||||
<a href="#addon/%SLUG%/versions?page=%PAGE%#version-%VERSION%" title="Link to this version">Version %VERSION%</a>
|
||||
<span class="meta">
|
||||
<time>Released %RELDATE%</time>
|
||||
<span class="filesize">%SIZE%</span>
|
||||
|
||||
Referencia en una nueva incidencia
Block a user