Signed-off-by: ale <ale@manalejandro.com>
Este commit está contenido en:
ale
2026-02-09 00:16:51 +01:00
padre 4b66a91750
commit 728e8a3de7
Se han modificado 8 ficheros con 274 adiciones y 274 borrados

Ver fichero

@@ -1,5 +1,4 @@
"use strict"; "use strict";
let EXPORTED_SYMBOLS = ["About"];
let About = { let About = {
@@ -11,6 +10,10 @@ let About = {
let contfrag = document.createRange().createContextualFragment(template); let contfrag = document.createRange().createContextualFragment(template);
let page = document.getElementById("page"); 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; let frag = contfrag.firstElementChild;
page.appendChild(frag); page.appendChild(frag);
}, },
@@ -50,27 +53,27 @@ let About = {
<nav id="side-nav" class="c" data-addontype="1"> <nav id="side-nav" class="c" data-addontype="1">
<h2>Explore</h2> <h2>Explore</h2>
<ul id="side-explore"> <ul id="side-explore">
<li class="s-users"><em><a href="caa:list?sort=users">Most Popular</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="caa:list?sort=rating">Top Rated</a></em></li> <li class="s-rating"><em><a href="#list?sort=rating">Top Rated</a></em></li>
</ul> </ul>
<h2>Categories</h2> <h2>Categories</h2>
<ul id="side-categories"> <ul id="side-categories">
<li id="c-0"><a href="caa:list">All</a></li> <li id="c-0"><a href="#list">All</a></li>
<li id="c-72"><a href="caa:list/alerts-updates">Alerts &amp; Updates</a></li> <li id="c-72"><a href="#list/alerts-updates">Alerts &amp; Updates</a></li>
<li id="c-14"><a href="caa:list/appearance">Appearance</a></li> <li id="c-14"><a href="#list/appearance">Appearance</a></li>
<li id="c-22"><a href="caa:list/bookmarks">Bookmarks</a></li> <li id="c-22"><a href="#list/bookmarks">Bookmarks</a></li>
<li id="c-5"><a href="caa:list/download-management">Download Management</a></li> <li id="c-5"><a href="#list/download-management">Download Management</a></li>
<li id="c-1"><a href="caa:list/feeds-news-blogging">Feeds, News &amp; Blogging</a></li> <li id="c-1"><a href="#list/feeds-news-blogging">Feeds, News &amp; Blogging</a></li>
<li id="c-142"><a href="caa:list/games-entertainment">Games &amp; Entertainment</a></li> <li id="c-142"><a href="#list/games-entertainment">Games &amp; Entertainment</a></li>
<li id="c-37"><a href="caa:list/language-support">Language Support</a></li> <li id="c-37"><a href="#list/language-support">Language Support</a></li>
<li id="c-38"><a href="caa:list/photos-music-videos">Photos, Music &amp; Videos</a></li> <li id="c-38"><a href="#list/photos-music-videos">Photos, Music &amp; Videos</a></li>
<li id="c-12"><a href="caa:list/privacy-security">Privacy &amp; Security</a></li> <li id="c-12"><a href="#list/privacy-security">Privacy &amp; Security</a></li>
<li id="c-13"><a href="caa:list/search-tools">Search Tools</a></li> <li id="c-13"><a href="#list/search-tools">Search Tools</a></li>
<li id="c-141"><a href="caa:list/shopping">Shopping</a></li> <li id="c-141"><a href="#list/shopping">Shopping</a></li>
<li id="c-71"><a href="caa:list/social-communication">Social &amp; Communication</a></li> <li id="c-71"><a href="#list/social-communication">Social &amp; Communication</a></li>
<li id="c-93"><a href="caa:list/tabs">Tabs</a></li> <li id="c-93"><a href="#list/tabs">Tabs</a></li>
<li id="c-4"><a href="caa:list/web-development">Web Development</a></li> <li id="c-4"><a href="#list/web-development">Web Development</a></li>
<li id="c-73"><a href="caa:list/other">Other</a></li> <li id="c-73"><a href="#list/other">Other</a></li>
</ul> </ul>
</nav> </nav>
</section> </section>

Ver fichero

@@ -1,8 +1,4 @@
"use strict"; "use strict";
let EXPORTED_SYMBOLS = ["Addon"];
var Cu = Components.utils;
Cu.import("resource://gre/modules/Services.jsm");
let Addon = { let Addon = {
@@ -19,6 +15,10 @@ let Addon = {
let contfrag = document.createRange().createContextualFragment(template); let contfrag = document.createRange().createContextualFragment(template);
let frag = contfrag.firstElementChild; let frag = contfrag.firstElementChild;
let page = document.getElementById("page"); 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); page.appendChild(frag);
}, },
@@ -57,9 +57,9 @@ let Addon = {
data.users = ''; data.users = '';
} }
if (dbQuery.row.icon) { 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 { } 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.name = dbQuery.row.name;
data.slug = dbQuery.row.slug; data.slug = dbQuery.row.slug;
@@ -105,22 +105,12 @@ let Addon = {
} }
data.min = dbQuery.row.min; data.min = dbQuery.row.min;
data.max = dbQuery.row.max; data.max = dbQuery.row.max;
let appver;
if (Services.appinfo.name == "Pale Moon") { // En WebExtensions, las descargas son siempre externas
appver = "27.9"; 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";
} else if (Services.appinfo.name != "SeaMonkey" && Services.appinfo.name != "Iceape-UXP") { data.compat = "download";
appver = Services.appinfo.version; data.action = "Download";
}
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";
}
let created = new Date(dbQuery.row.created*1000); let created = new Date(dbQuery.row.created*1000);
data.created = created.toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' }); data.created = created.toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' });
let nBytes = dbQuery.row.size; let nBytes = dbQuery.row.size;
@@ -134,7 +124,7 @@ let Addon = {
lic_url = dbQuery.row.lic_url; lic_url = dbQuery.row.lic_url;
target = 'target="_blank"'; target = 'target="_blank"';
} else { } else {
lic_url = "caa:addon/" + data.slug + "/license/" + data.version; lic_url = "#addon/" + data.slug + "/license/" + data.version;
target = ''; target = '';
} }
data.license = '<li class="source-license">Released under <a ' + target + ' href="' + lic_url + '">' + dbQuery.row.lic_name + '</a></li>'; 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 = ""; data.license = "";
} }
if (dbQuery.row.eula) { 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 { } else {
data.eula = ""; data.eula = "";
} }
if (dbQuery.row.policy) { 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 { } else {
data.policy = ""; data.policy = "";
} }
@@ -180,7 +170,7 @@ let Addon = {
if (tags.length > 0) { if (tags.length > 0) {
data.tags = '<div class="clearboth"><h3 class="compact-bottom">Tags</h3><div id="tagbox"><ul class="addon-tags nojs">'; data.tags = '<div class="clearboth"><h3 class="compact-bottom">Tags</h3><div id="tagbox"><ul class="addon-tags nojs">';
for (let tag of tags) { 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>"; data.tags += "</ul></div></div>";
} else { } else {
@@ -198,7 +188,7 @@ let Addon = {
let cat_names = { "alerts-updates": "Alerts &amp; Updates", "appearance": "Appearance", "bookmarks": "Bookmarks", "download-management": "Download Management", "feeds-news-blogging": "Feeds, News &amp; Blogging", "games-entertainment": "Games &amp; Entertainment", "language-support": "Language Support", "photos-music-videos": "Photos, Music &amp; Videos", "privacy-security": "Privacy &amp; Security", "search-tools": "Search Tools", "shopping": "Shopping", "social-communication": "Social &amp; Communication", "tabs": "Tabs", "web-development": "Web Development", "other": "Other"}; let cat_names = { "alerts-updates": "Alerts &amp; Updates", "appearance": "Appearance", "bookmarks": "Bookmarks", "download-management": "Download Management", "feeds-news-blogging": "Feeds, News &amp; Blogging", "games-entertainment": "Games &amp; Entertainment", "language-support": "Language Support", "photos-music-videos": "Photos, Music &amp; Videos", "privacy-security": "Privacy &amp; Security", "search-tools": "Search Tools", "shopping": "Shopping", "social-communication": "Social &amp; Communication", "tabs": "Tabs", "web-development": "Web Development", "other": "Other"};
data.categories = "<h3>Related Categories</h3><ul>"; data.categories = "<h3>Related Categories</h3><ul>";
for (let category of categories) { 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>"; data.categories += "</ul>";
} else { } else {
@@ -288,8 +278,8 @@ let Addon = {
<section class="primary" id="addon-description-header"> <section class="primary" id="addon-description-header">
<div id="addon" class="island c" role="main" data-id="1865"> <div id="addon" class="island c" role="main" data-id="1865">
<hgroup> <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=%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="chrome://ca-archive/skin/logo_archive-sm.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%"> <img id="addon-icon" itemprop="image" src="%ICON%" class="icon" alt="Icon of %NAME%">
<h1 class="addon"> <h1 class="addon">
<span itemprop="name">%NAME%</span> <span itemprop="name">%NAME%</span>
@@ -315,7 +305,7 @@ let Addon = {
<ul></ul> <ul></ul>
</div> </div>
<div class="head-vercompat"> <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> <span class="head-left">Works with %COMPATV%</span>
<p class="head-center">Released on %RELDATE%</p> <p class="head-center">Released on %RELDATE%</p>
</div> </div>
@@ -361,7 +351,7 @@ let Addon = {
<div class="version item" id="version-%VERSION%"> <div class="version item" id="version-%VERSION%">
<div class="info"> <div class="info">
<h3> <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"> <span class="meta">
<time>Released %RELDATE%</time> <time>Released %RELDATE%</time>
<span class="filesize">%SIZE%</span> <span class="filesize">%SIZE%</span>
@@ -376,7 +366,7 @@ let Addon = {
</div> </div>
</div> </div>
<p class="more c"> <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> </p>
</div> </div>
</section> </section>

Ver fichero

@@ -44,38 +44,38 @@ const browserAPI = typeof browser !== "undefined" ? browser : chrome;
if (typeof Versions === "undefined") { if (typeof Versions === "undefined") {
await loadScript("versions.js"); 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) { } else if ((params = /^addon\/(.+?)\/(eula|privacy|license\/(.+))$/.exec(url)) !== null) {
if (typeof EPL === "undefined") { if (typeof EPL === "undefined") {
await loadScript("epl.js"); 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) { } else if ((params = /^addon\/(.+?)\/?$/.exec(url)) !== null) {
if (typeof Addon === "undefined") { if (typeof Addon === "undefined") {
await loadScript("addon.js"); 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) { } else if ((params = /^list(\/([a-z-]+))?(\?tag=(.+?)|\?q=(.+?))?([\?|\&]sort=(\w+))?\&?(page=(\d+))?$/.exec(url)) !== null) {
if (typeof List === "undefined") { if (typeof List === "undefined") {
await loadScript("list.js"); 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") { } else if (url === "" || url === "list") {
if (typeof TCloud === "undefined") { if (typeof TCloud === "undefined") {
await loadScript("tcloud.js"); await loadScript("tcloud.js");
} }
TCloud.showPage(document, DB.db); TCloud.showPage(document, DB);
} else if (url === "about") { } else if (url === "about") {
if (typeof About === "undefined") { if (typeof About === "undefined") {
await loadScript("about.js"); await loadScript("about.js");
} }
About.showPage(document, DB.db); About.showPage(document, DB);
} else { } else {
// Búsqueda genérica // Búsqueda genérica
if (typeof List === "undefined") { if (typeof List === "undefined") {
await loadScript("list.js"); 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) { } catch (e) {
console.error("Navigation error:", e); console.error("Navigation error:", e);

Ver fichero

@@ -166,6 +166,10 @@ const DB = {
div.appendChild(document.createTextNode(msg)); div.appendChild(document.createTextNode(msg));
const page = document.getElementById("page"); const page = document.getElementById("page");
if (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); page.appendChild(div);
} }
}, },
@@ -211,31 +215,55 @@ const DB = {
// Crear un objeto que emule la API de mozIStorageStatement // Crear un objeto que emule la API de mozIStorageStatement
const stmt = this.db.prepare(sql); const stmt = this.db.prepare(sql);
let currentRow = null;
const columnNames = stmt.getColumnNames();
const paramsObj = {};
let paramsBound = false;
return { return {
params: {}, params: paramsObj,
executeStep() { 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() { reset() {
stmt.reset(); stmt.reset();
currentRow = null;
paramsBound = false;
}, },
finalize() { finalize() {
stmt.free(); stmt.free();
currentRow = null;
},
get row() {
return currentRow || {};
}, },
row: new Proxy({}, {
get(target, prop) {
return stmt.get()[stmt.getColumnNames().indexOf(prop)];
}
}),
getString(index) { getString(index) {
return stmt.get()[index]; return currentRow ? Object.values(currentRow)[index] : null;
}, },
getInt32(index) { getInt32(index) {
return stmt.get()[index]; return currentRow ? Object.values(currentRow)[index] : 0;
}, },
getDouble(index) { getDouble(index) {
return stmt.get()[index]; return currentRow ? Object.values(currentRow)[index] : 0.0;
} }
}; };
} }

Ver fichero

@@ -1,5 +1,4 @@
"use strict"; "use strict";
let EXPORTED_SYMBOLS = ["EPL"];
let EPL = { let EPL = {
@@ -11,6 +10,10 @@ let EPL = {
let contfrag = document.createRange().createContextualFragment(template); let contfrag = document.createRange().createContextualFragment(template);
let page = document.getElementById("page"); 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; let frag = contfrag.firstElementChild;
page.appendChild(frag); page.appendChild(frag);
}, },
@@ -76,7 +79,7 @@ let EPL = {
<h2>%TYPE%</h2> <h2>%TYPE%</h2>
%LICNAME% %LICNAME%
<div class="policy-statement">%CONTENT%</div> <div class="policy-statement">%CONTENT%</div>
<p class="policy-back"><a href="caa:addon/%SLUG%">Back to %NAME%&hellip;</a></p> <p class="policy-back"><a href="#addon/%SLUG%">Back to %NAME%&hellip;</a></p>
</div> </div>
</section> </section>

Ver fichero

@@ -1,8 +1,4 @@
"use strict"; "use strict";
let EXPORTED_SYMBOLS = ["List"];
var Cu = Components.utils;
Cu.import("resource://gre/modules/Services.jsm");
let List = { let List = {
@@ -78,6 +74,10 @@ let List = {
let contfrag = document.createRange().createContextualFragment(template); let contfrag = document.createRange().createContextualFragment(template);
let pagediv = document.getElementById("page"); 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; let frag = contfrag.firstElementChild;
pagediv.appendChild(frag.children[0]); pagediv.appendChild(frag.children[0]);
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(/%SLUG%/g, dbQuery.row.slug);
item = item.replace("%SUMMARY%", dbQuery.row.summary); item = item.replace("%SUMMARY%", dbQuery.row.summary);
if (dbQuery.row.icon) { 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 { } 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; let users;
if (dbQuery.row.users >= 0) { if (dbQuery.row.users >= 0) {
@@ -179,21 +179,11 @@ let List = {
experiment = 'caution'; experiment = 'caution';
} }
item = item.replace("%EXPERIMENT%", experiment); item = item.replace("%EXPERIMENT%", experiment);
let appver;
if (Services.appinfo.name == "Pale Moon") { // En WebExtensions no podemos instalar automáticamente, siempre mostrar versiones
appver = "27.9"; item = item.replace("%COMPAT%", "download");
} else if (Services.appinfo.name != "SeaMonkey" && Services.appinfo.name != "Iceape-UXP") { item = item.replace("%ACTION%", "List Versions");
appver = Services.appinfo.version; item = item.replace("%DOWNURL%", "#addon/" + dbQuery.row.slug + "/versions");
}
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");
}
data.items += item; data.items += item;
} }
@@ -237,27 +227,27 @@ let List = {
<nav id="side-nav" class="c" data-addontype="1"> <nav id="side-nav" class="c" data-addontype="1">
<h2>Explore</h2> <h2>Explore</h2>
<ul id="side-explore"> <ul id="side-explore">
<li class="s-users"><em><a href="caa:list?sort=users">Most Popular</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="caa:list?sort=rating">Top Rated</a></em></li> <li class="s-rating"><em><a href="#list?sort=rating">Top Rated</a></em></li>
</ul> </ul>
<h2>Categories</h2> <h2>Categories</h2>
<ul id="side-categories"> <ul id="side-categories">
<li id="c-0"><a href="caa:list%TAGC%">All</a></li> <li id="c-0"><a href="#list%TAGC%">All</a></li>
<li id="c-72"><a href="caa:list/alerts-updates%TAGC%">Alerts &amp; Updates</a></li> <li id="c-72"><a href="#list/alerts-updates%TAGC%">Alerts &amp; Updates</a></li>
<li id="c-14"><a href="caa:list/appearance%TAGC%">Appearance</a></li> <li id="c-14"><a href="#list/appearance%TAGC%">Appearance</a></li>
<li id="c-22"><a href="caa:list/bookmarks%TAGC%">Bookmarks</a></li> <li id="c-22"><a href="#list/bookmarks%TAGC%">Bookmarks</a></li>
<li id="c-5"><a href="caa:list/download-management%TAGC%">Download Management</a></li> <li id="c-5"><a href="#list/download-management%TAGC%">Download Management</a></li>
<li id="c-1"><a href="caa:list/feeds-news-blogging%TAGC%">Feeds, News &amp; Blogging</a></li> <li id="c-1"><a href="#list/feeds-news-blogging%TAGC%">Feeds, News &amp; Blogging</a></li>
<li id="c-142"><a href="caa:list/games-entertainment%TAGC%">Games &amp; Entertainment</a></li> <li id="c-142"><a href="#list/games-entertainment%TAGC%">Games &amp; Entertainment</a></li>
<li id="c-37"><a href="caa:list/language-support%TAGC%">Language Support</a></li> <li id="c-37"><a href="#list/language-support%TAGC%">Language Support</a></li>
<li id="c-38"><a href="caa:list/photos-music-videos%TAGC%">Photos, Music &amp; Videos</a></li> <li id="c-38"><a href="#list/photos-music-videos%TAGC%">Photos, Music &amp; Videos</a></li>
<li id="c-12"><a href="caa:list/privacy-security%TAGC%">Privacy &amp; Security</a></li> <li id="c-12"><a href="#list/privacy-security%TAGC%">Privacy &amp; Security</a></li>
<li id="c-13"><a href="caa:list/search-tools%TAGC%">Search Tools</a></li> <li id="c-13"><a href="#list/search-tools%TAGC%">Search Tools</a></li>
<li id="c-141"><a href="caa:list/shopping%TAGC%">Shopping</a></li> <li id="c-141"><a href="#list/shopping%TAGC%">Shopping</a></li>
<li id="c-71"><a href="caa:list/social-communication%TAGC%">Social &amp; Communication</a></li> <li id="c-71"><a href="#list/social-communication%TAGC%">Social &amp; Communication</a></li>
<li id="c-93"><a href="caa:list/tabs%TAGC%">Tabs</a></li> <li id="c-93"><a href="#list/tabs%TAGC%">Tabs</a></li>
<li id="c-4"><a href="caa:list/web-development%TAGC%">Web Development</a></li> <li id="c-4"><a href="#list/web-development%TAGC%">Web Development</a></li>
<li id="c-73"><a href="caa:list/other%TAGC%">Other</a></li> <li id="c-73"><a href="#list/other%TAGC%">Other</a></li>
</ul> </ul>
</nav> </nav>
</section> </section>
@@ -270,12 +260,12 @@ let List = {
<div id="sorter" class="c pjax-trigger"> <div id="sorter" class="c pjax-trigger">
<h3>Sort by:</h3> <h3>Sort by:</h3>
<ul> <ul>
<li %SORT0%><a class="opt" href="caa:list%CAT%?%TAG%sort=users">Most Users</a></li> <li %SORT0%><a class="opt" href="#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 %SORT1%><a class="opt" href="#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 %SORT2%><a class="opt" href="#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 %SORT3%><a class="opt" href="#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 %SORT4%><a class="opt" href="#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 %SORT5%><a class="opt" href="#list%CAT%?%TAG%sort=name">Name</a></li>
</ul> </ul>
</div> </div>
@@ -284,12 +274,12 @@ let List = {
</div> <!-- items --> </div> <!-- items -->
<nav class="paginator c pjax-trigger"> <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"> <p class="rel">
<a href="caa:list%CAT%?%TAG%sort=%SORT%&page=1" title="Jump to first page" class="jump %DISPREV%">&#9666;&#9666;</a> <a href="#list%CAT%?%TAG%sort=%SORT%&page=1" title="Jump to first page" class="jump %DISPREV%">&#9666;&#9666;</a>
<a href="caa:list%CAT%?%TAG%sort=%SORT%&page=%PREV%" class="button prev %DISPREV%">&#9666; Previous</a> <a href="#list%CAT%?%TAG%sort=%SORT%&page=%PREV%" class="button prev %DISPREV%">&#9666; Previous</a>
<a href="caa:list%CAT%?%TAG%sort=%SORT%&page=%NEXT%" class="button next %DISNEXT%">Next &#9656;</a> <a href="#list%CAT%?%TAG%sort=%SORT%&page=%NEXT%" class="button next %DISNEXT%">Next &#9656;</a>
<a href="caa:list%CAT%?%TAG%sort=%SORT%&page=%PAGES%" title="Jump to last page" class="jump %DISNEXT%">&#9656;&#9656;</a> <a href="#list%CAT%?%TAG%sort=%SORT%&page=%PAGES%" title="Jump to last page" class="jump %DISNEXT%">&#9656;&#9656;</a>
</p> </p>
<p class="pos">Showing <b>%PFROM%</b>&#8211;<b>%PTO%</b> of <b>%COUNT%</b></p> <p class="pos">Showing <b>%PFROM%</b>&#8211;<b>%PTO%</b> of <b>%COUNT%</b></p>
</nav> </nav>
@@ -305,14 +295,14 @@ let List = {
<div class="item addon"> <div class="item addon">
<div class="info"> <div class="info">
<h3> <h3>
<a href="caa:addon/%SLUG%"><img src="%ICON%" alt="">%NAME%</a> <a href="#addon/%SLUG%"><img src="%ICON%" alt="">%NAME%</a>
%RESTART% %RESTART%
</h3> </h3>
<p class="desc">%SUMMARY%</p> <p class="desc">%SUMMARY%</p>
<div class="vitals c"> <div class="vitals c">
<span class="rating"> <span class="rating">
<span class="stars stars-%RATING%" title="Rated %RATING% out of 5 stars">Rated %RATING% out of 5 stars</span> <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> </span>
%USERS% %USERS%
</div> </div>

Ver fichero

@@ -1,8 +1,4 @@
"use strict"; "use strict";
let EXPORTED_SYMBOLS = ["TCloud"];
var Cu = Components.utils;
Cu.import("resource://gre/modules/Services.jsm");
let TCloud = { let TCloud = {
@@ -13,16 +9,17 @@ let TCloud = {
let contfrag = document.createRange().createContextualFragment(template); let contfrag = document.createRange().createContextualFragment(template);
let page = document.getElementById("page"); 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; let frag = contfrag.firstElementChild;
page.appendChild(frag); page.appendChild(frag);
}, },
processTemplate: function(template) { processTemplate: function(template) {
if (Services.appinfo.browserTabsRemoteAutostart) { // Eliminar advertencia e10s (ya no relevante en WebExtensions con hash routing)
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'>&lowast;&#8201;" + Services.appinfo.name + " in multi-process mode can't restore <span style='font-style: italic;'>caa:</span> urls after restart&#8202;&lowast;</a></div>"); template = template.replace("%E10S%", "");
} else {
template = template.replace("%E10S%", "");
}
return template; return template;
}, },
@@ -34,27 +31,27 @@ let TCloud = {
<nav id="side-nav" class="c" data-addontype="1"> <nav id="side-nav" class="c" data-addontype="1">
<h2>Explore</h2> <h2>Explore</h2>
<ul id="side-explore"> <ul id="side-explore">
<li class="s-users"><em><a href="caa:list?sort=users">Most Popular</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="caa:list?sort=rating">Top Rated</a></em></li> <li class="s-rating"><em><a href="#list?sort=rating">Top Rated</a></em></li>
</ul> </ul>
<h2>Categories</h2> <h2>Categories</h2>
<ul id="side-categories"> <ul id="side-categories">
<li id="c-0"><a href="caa:list">All</a></li> <li id="c-0"><a href="#list">All</a></li>
<li id="c-72"><a href="caa:list/alerts-updates">Alerts &amp; Updates</a></li> <li id="c-72"><a href="#list/alerts-updates">Alerts &amp; Updates</a></li>
<li id="c-14"><a href="caa:list/appearance">Appearance</a></li> <li id="c-14"><a href="#list/appearance">Appearance</a></li>
<li id="c-22"><a href="caa:list/bookmarks">Bookmarks</a></li> <li id="c-22"><a href="#list/bookmarks">Bookmarks</a></li>
<li id="c-5"><a href="caa:list/download-management">Download Management</a></li> <li id="c-5"><a href="#list/download-management">Download Management</a></li>
<li id="c-1"><a href="caa:list/feeds-news-blogging">Feeds, News &amp; Blogging</a></li> <li id="c-1"><a href="#list/feeds-news-blogging">Feeds, News &amp; Blogging</a></li>
<li id="c-142"><a href="caa:list/games-entertainment">Games &amp; Entertainment</a></li> <li id="c-142"><a href="#list/games-entertainment">Games &amp; Entertainment</a></li>
<li id="c-37"><a href="caa:list/language-support">Language Support</a></li> <li id="c-37"><a href="#list/language-support">Language Support</a></li>
<li id="c-38"><a href="caa:list/photos-music-videos">Photos, Music &amp; Videos</a></li> <li id="c-38"><a href="#list/photos-music-videos">Photos, Music &amp; Videos</a></li>
<li id="c-12"><a href="caa:list/privacy-security">Privacy &amp; Security</a></li> <li id="c-12"><a href="#list/privacy-security">Privacy &amp; Security</a></li>
<li id="c-13"><a href="caa:list/search-tools">Search Tools</a></li> <li id="c-13"><a href="#list/search-tools">Search Tools</a></li>
<li id="c-141"><a href="caa:list/shopping">Shopping</a></li> <li id="c-141"><a href="#list/shopping">Shopping</a></li>
<li id="c-71"><a href="caa:list/social-communication">Social &amp; Communication</a></li> <li id="c-71"><a href="#list/social-communication">Social &amp; Communication</a></li>
<li id="c-93"><a href="caa:list/tabs">Tabs</a></li> <li id="c-93"><a href="#list/tabs">Tabs</a></li>
<li id="c-4"><a href="caa:list/web-development">Web Development</a></li> <li id="c-4"><a href="#list/web-development">Web Development</a></li>
<li id="c-73"><a href="caa:list/other">Other</a></li> <li id="c-73"><a href="#list/other">Other</a></li>
</ul> </ul>
</nav> </nav>
</section> </section>
@@ -65,103 +62,103 @@ let TCloud = {
<div class="island hero c listing"> <div class="island hero c listing">
<div class="tcloud" id="demo" style="width: 720px; height: 520px; position: relative;"> <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: 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="caa:list?tag=search">search</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="caa:list?tag=google">google</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="caa:list?tag=youtube">youtube</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="caa:list?tag=tab">tab</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="caa:list?tag=facebook">facebook</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="caa:list?tag=bookmarks">bookmarks</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="caa:list?tag=download">download</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="caa:list?tag=security">security</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="caa:list?tag=tabs">tabs</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="caa:list?tag=privacy">privacy</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="caa:list?tag=video">video</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="caa:list?tag=shopping">shopping</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="caa:list?tag=url">url</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="caa:list?tag=twitter">twitter</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="caa:list?tag=image">image</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="caa:list?tag=bookmark">bookmark</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="caa:list?tag=sports">sports</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="caa:list?tag=link">link</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="caa:list?tag=music">music</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="caa:list?tag=amazon">amazon</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="caa:list?tag=dictionary">dictionary</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="caa:list?tag=social">social</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="caa:list?tag=athletics">athletics</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="caa:list?tag=news">news</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="caa:list?tag=productivity">productivity</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="caa:list?tag=share">share</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="caa:list?tag=firefox">firefox</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="caa:list?tag=button">button</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="caa:list?tag=web">web</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="caa:list?tag=links">links</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="caa:list?tag=seo">seo</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="caa:list?tag=college">college</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="caa:list?tag=text">text</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="caa:list?tag=proxy">proxy</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="caa:list?tag=rss">rss</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="caa:list?tag=menu">menu</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="caa:list?tag=gmail">gmail</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="caa:list?tag=history">history</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="caa:list?tag=images">images</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="caa:list?tag=email">email</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="caa:list?tag=password">password</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="caa:list?tag=language">language</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="caa:list?tag=mp3">mp3</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="caa:list?tag=javascript">javascript</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="caa:list?tag=block">block</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="caa:list?tag=translate">translate</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="caa:list?tag=development">development</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="caa:list?tag=copy">copy</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="caa:list?tag=football">football</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="caa:list?tag=save">save</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="caa:list?tag=flash">flash</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="caa:list?tag=yahoo">yahoo</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="caa:list?tag=free">free</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="caa:list?tag=sidebar">sidebar</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="caa:list?tag=translation">translation</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="caa:list?tag=html">html</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="caa:list?tag=theme">theme</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="caa:list?tag=wikipedia">wikipedia</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="caa:list?tag=university">university</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="caa:list?tag=bing">bing</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="caa:list?tag=css">css</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="caa:list?tag=search%20engine">search engine</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="caa:list?tag=ads">ads</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="caa:list?tag=english">english</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="caa:list?tag=online">online</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="caa:list?tag=hide">hide</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="caa:list?tag=new%20tab">new tab</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="caa:list?tag=coupons">coupons</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="caa:list?tag=context%20menu">context menu</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="caa:list?tag=ebay">ebay</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="caa:list?tag=photo">photo</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="caa:list?tag=color">color</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="caa:list?tag=deals">deals</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="caa:list?tag=extension">extension</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="caa:list?tag=firebug">firebug</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="caa:list?tag=navigation">navigation</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="caa:list?tag=chat">chat</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="caa:list?tag=cookies">cookies</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="caa:list?tag=keyboard">keyboard</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="caa:list?tag=mail">mail</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="caa:list?tag=popup">popup</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="caa:list?tag=addon">addon</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="caa:list?tag=downloader">downloader</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="caa:list?tag=recommended">recommended</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="caa:list?tag=browser">browser</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="caa:list?tag=shortcut">shortcut</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="caa:list?tag=manager">manager</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="caa:list?tag=screenshot">screenshot</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="caa:list?tag=testing">testing</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="caa:list?tag=tracking">tracking</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="caa:list?tag=accessibility">accessibility</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="caa:list?tag=notification">notification</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="caa:list?tag=sharing">sharing</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="caa:list?tag=developer">developer</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="caa:list?tag=highlight">highlight</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="caa:list?tag=upload">upload</a></span> <span style="left: 324px; top: 7px;" class="tcw w1"><a href="#list?tag=upload">upload</a></span>
</div> </div>
</div> </div>

Ver fichero

@@ -1,8 +1,4 @@
"use strict"; "use strict";
let EXPORTED_SYMBOLS = ["Versions"];
var Cu = Components.utils;
Cu.import("resource://gre/modules/Services.jsm");
let Versions = { let Versions = {
@@ -18,6 +14,10 @@ let Versions = {
let contfrag = document.createRange().createContextualFragment(template); let contfrag = document.createRange().createContextualFragment(template);
let pagediv = document.getElementById("page"); 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; let frag = contfrag.firstElementChild;
pagediv.appendChild(frag); pagediv.appendChild(frag);
}, },
@@ -99,7 +99,7 @@ let Versions = {
lic_url = dbQuery.row.lic_url; lic_url = dbQuery.row.lic_url;
target = 'target="_blank"'; target = 'target="_blank"';
} else { } else {
lic_url = "caa:addon/" + data.slug + "/license/" + dbQuery.row.version; lic_url = "#addon/" + data.slug + "/license/" + dbQuery.row.version;
target = ''; target = '';
} }
license = '<ul class="source"><li>Source code released under <a ' + target + ' href="' + lic_url + '">' + dbQuery.row.lic_name + '</a></li></ul>'; 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 = ""; license = "";
} }
item = item.replace("%LICENSE%", license); item = item.replace("%LICENSE%", license);
let appver;
if (Services.appinfo.name == "Pale Moon") { // En WebExtensions, las descargas son siempre externas
appver = "27.9"; 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";
} else if (Services.appinfo.name != "SeaMonkey" && Services.appinfo.name != "Iceape-UXP") { item = item.replace("%COMPAT%", "download");
appver = Services.appinfo.version; item = item.replace("%ACTION%", "Download");
}
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";
}
item = item.replace("%DOWNURL%", downurl); item = item.replace("%DOWNURL%", downurl);
data.items += item; data.items += item;
@@ -160,19 +149,19 @@ let Versions = {
<div class="island hero c listing"> <div class="island hero c listing">
<div class="warning highlight"> <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>
<div class="items"> <div class="items">
%ITEMS% %ITEMS%
</div> </div>
<nav class="paginator c pjax-trigger"> <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"> <p class="rel">
<a href="caa:addon/%SLUG%/versions/?page=1" title="Jump to first page" class="jump %DISPREV%">&#9666;&#9666;</a> <a href="#addon/%SLUG%/versions/?page=1" title="Jump to first page" class="jump %DISPREV%">&#9666;&#9666;</a>
<a href="caa:addon/%SLUG%/versions/?page=%PREV%" class="button prev %DISPREV%">&#9666; Previous</a> <a href="#addon/%SLUG%/versions/?page=%PREV%" class="button prev %DISPREV%">&#9666; Previous</a>
<a href="caa:addon/%SLUG%/versions/?page=%NEXT%" class="button next %DISNEXT%">Next &#9656;</a> <a href="#addon/%SLUG%/versions/?page=%NEXT%" class="button next %DISNEXT%">Next &#9656;</a>
<a href="caa:addon/%SLUG%/versions/?page=%PAGES%" title="Jump to last page" class="jump %DISNEXT%">&#9656;&#9656;</a> <a href="#addon/%SLUG%/versions/?page=%PAGES%" title="Jump to last page" class="jump %DISNEXT%">&#9656;&#9656;</a>
</p> </p>
<p class="pos">Showing <b>%PFROM%</b>&#8211;<b>%PTO%</b> of <b>%COUNT%</b></p> <p class="pos">Showing <b>%PFROM%</b>&#8211;<b>%PTO%</b> of <b>%COUNT%</b></p>
</nav> </nav>
@@ -187,7 +176,7 @@ let Versions = {
<div class="version item" id="version-%VERSION%"> <div class="version item" id="version-%VERSION%">
<div class="info"> <div class="info">
<h3> <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"> <span class="meta">
<time>Released %RELDATE%</time> <time>Released %RELDATE%</time>
<span class="filesize">%SIZE%</span> <span class="filesize">%SIZE%</span>