Compare commits
21 Commits
Author | SHA1 | Date | |
---|---|---|---|
2ccc12de90 | |||
28e6866db8 | |||
7185964649 | |||
cd1005823d | |||
0afceb9850 | |||
e6dc205b9d | |||
8e473c778b | |||
7a71ae5f37 | |||
d04f3db22f | |||
adc6b9dbb2 | |||
e8f09c80f3 | |||
46c4e66558 | |||
a8ea416a67 | |||
320c1ddafa | |||
4c576ba720 | |||
7b58779f9e | |||
45d835fe19 | |||
2d2826d192 | |||
4c77ad0f1f | |||
4d72ac4534 | |||
cdda0835d8 |
15
.github/ISSUE_TEMPLATE/bug_report.md
vendored
15
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -7,6 +7,11 @@ assignees: ''
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
**Desktop (please complete the following information):**
|
||||||
|
- OS: [e.g. iOS]
|
||||||
|
- Browser [e.g. chrome, safari]
|
||||||
|
- Version [e.g. 22]
|
||||||
|
|
||||||
**Describe the bug**
|
**Describe the bug**
|
||||||
A clear and concise description of what the bug is.
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
@ -23,16 +28,6 @@ A clear and concise description of what you expected to happen.
|
|||||||
**Screenshots**
|
**Screenshots**
|
||||||
If applicable, add screenshots to help explain your problem.
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
**Desktop (please complete the following information):**
|
|
||||||
- OS: [e.g. iOS]
|
|
||||||
- Browser [e.g. chrome, safari]
|
|
||||||
- Version [e.g. 22]
|
|
||||||
|
|
||||||
**Smartphone (please complete the following information):**
|
|
||||||
- Device: [e.g. iPhone6]
|
|
||||||
- OS: [e.g. iOS8.1]
|
|
||||||
- Browser [e.g. stock browser, safari]
|
|
||||||
- Version [e.g. 22]
|
|
||||||
|
|
||||||
**Additional context**
|
**Additional context**
|
||||||
Add any other context about the problem here.
|
Add any other context about the problem here.
|
||||||
|
4
TODO.md
4
TODO.md
@ -15,10 +15,6 @@ Planned for later.
|
|||||||
* Add downloads
|
* Add downloads
|
||||||
* Chrome support
|
* Chrome support
|
||||||
* vtable perf: cache column widths
|
* vtable perf: cache column widths
|
||||||
* Localizations
|
|
||||||
* Settle on system
|
|
||||||
* Do the de-locale
|
|
||||||
* Enagage translators
|
|
||||||
* Download options
|
* Download options
|
||||||
* This is a bit more limited, as we cannot modify options of downloads that have been started (and paused) or that are done.
|
* This is a bit more limited, as we cannot modify options of downloads that have been started (and paused) or that are done.
|
||||||
|
|
||||||
|
@ -252,7 +252,7 @@
|
|||||||
"description": "Menu text"
|
"description": "Menu text"
|
||||||
},
|
},
|
||||||
"dta.turbo.link": {
|
"dta.turbo.link": {
|
||||||
"message": "Bild mit OneClick! speichern",
|
"message": "Link mit OneClick! speichern",
|
||||||
"description": "Menu text"
|
"description": "Menu text"
|
||||||
},
|
},
|
||||||
"dta.turbo.media": {
|
"dta.turbo.media": {
|
||||||
@ -1164,7 +1164,7 @@
|
|||||||
"description": "Option text; Prefs/Network"
|
"description": "Option text; Prefs/Network"
|
||||||
},
|
},
|
||||||
"useonlyonce": {
|
"useonlyonce": {
|
||||||
"message": "Nur einmal",
|
"message": "Einmalig",
|
||||||
"description": "Label for Use-Once checkboxes"
|
"description": "Label for Use-Once checkboxes"
|
||||||
}
|
}
|
||||||
}
|
}
|
1170
_locales/et/messages.json
Normal file
1170
_locales/et/messages.json
Normal file
File diff suppressed because it is too large
Load Diff
1170
_locales/nl/messages.json
Normal file
1170
_locales/nl/messages.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -20,7 +20,7 @@
|
|||||||
"description": "Error message"
|
"description": "Error message"
|
||||||
},
|
},
|
||||||
"SERVER_FORBIDDEN": {
|
"SERVER_FORBIDDEN": {
|
||||||
"message": "Probido",
|
"message": "Proibido",
|
||||||
"description": "Error message"
|
"description": "Error message"
|
||||||
},
|
},
|
||||||
"SERVER_UNAUTHORIZED": {
|
"SERVER_UNAUTHORIZED": {
|
||||||
@ -462,7 +462,7 @@
|
|||||||
"description": "Action for moving a download up"
|
"description": "Action for moving a download up"
|
||||||
},
|
},
|
||||||
"nagging-message": {
|
"nagging-message": {
|
||||||
"message": "Você ja adicionou $DOWNLOADS$ downloads com DownThemAll! Como usuário regular, você pode considerar uma doação para apoiar desenvolvimento adicional. Obrigado!",
|
"message": "Você já adicionou $DOWNLOADS$ downloads com DownThemAll! Como usuário regular, você pode considerar uma doação para apoiar desenvolvimento adicional. Obrigado!",
|
||||||
"description": "Donation nagging message; displayed as a notification bar in manager",
|
"description": "Donation nagging message; displayed as a notification bar in manager",
|
||||||
"placeholders": {
|
"placeholders": {
|
||||||
"downloads": {
|
"downloads": {
|
||||||
@ -498,7 +498,7 @@
|
|||||||
"description": "Button text; Used in message boxes"
|
"description": "Button text; Used in message boxes"
|
||||||
},
|
},
|
||||||
"open-directory": {
|
"open-directory": {
|
||||||
"message": "Abrir diretório",
|
"message": "Abrir pasta",
|
||||||
"description": "Menu text; manager context"
|
"description": "Menu text; manager context"
|
||||||
},
|
},
|
||||||
"open-file": {
|
"open-file": {
|
||||||
@ -554,11 +554,11 @@
|
|||||||
"description": "Preferences/General"
|
"description": "Preferences/General"
|
||||||
},
|
},
|
||||||
"pref-open-manager-on-queue": {
|
"pref-open-manager-on-queue": {
|
||||||
"message": "Abrir a aba 'Gerenciador' após adicionar donwloads à fila",
|
"message": "Abrir a aba 'Gerenciador' após adicionar downloads à fila",
|
||||||
"description": "Preferences/General"
|
"description": "Preferences/General"
|
||||||
},
|
},
|
||||||
"pref-queue-notification": {
|
"pref-queue-notification": {
|
||||||
"message": "Exibir notificação ao adicionar donwloads à fila",
|
"message": "Exibir notificação ao adicionar downloads à fila",
|
||||||
"description": "Preferences/General"
|
"description": "Preferences/General"
|
||||||
},
|
},
|
||||||
"pref-remove-missing-on-init": {
|
"pref-remove-missing-on-init": {
|
||||||
@ -636,7 +636,7 @@
|
|||||||
"description": "Menu text"
|
"description": "Menu text"
|
||||||
},
|
},
|
||||||
"remove-all-downloads": {
|
"remove-all-downloads": {
|
||||||
"message": "Removert Tudo",
|
"message": "Remover Tudo",
|
||||||
"description": "Menu text"
|
"description": "Menu text"
|
||||||
},
|
},
|
||||||
"remove-all-downloads.question": {
|
"remove-all-downloads.question": {
|
||||||
@ -692,7 +692,7 @@
|
|||||||
"description": "Menu text"
|
"description": "Menu text"
|
||||||
},
|
},
|
||||||
"remove-domain-downloads.question": {
|
"remove-domain-downloads.question": {
|
||||||
"message": "Deseja remover todos os downloads do domínio '$DOMAIN$'?",
|
"message": "Deseja remover todos os downloads do domínio '$DOMAIN$'?",
|
||||||
"description": "Messagebox text",
|
"description": "Messagebox text",
|
||||||
"placeholders": {
|
"placeholders": {
|
||||||
"domain": {
|
"domain": {
|
||||||
@ -800,7 +800,7 @@
|
|||||||
"description": "Mask text; see mask button"
|
"description": "Mask text; see mask button"
|
||||||
},
|
},
|
||||||
"renamer-info": {
|
"renamer-info": {
|
||||||
"message": "Adiconar 'flat', como em *flatsubdirs* irá substituir todas as barras no valor, portanto não criará diretórios",
|
"message": "Adiconar 'flat', como em *flatsubdirs* irá substituir todas as barras no valor, portanto não criará pastas",
|
||||||
"description": "Mask text; see mask button; do NOT translate any mentions of \"flat\"!"
|
"description": "Mask text; see mask button; do NOT translate any mentions of \"flat\"!"
|
||||||
},
|
},
|
||||||
"renamer-m": {
|
"renamer-m": {
|
||||||
@ -892,7 +892,7 @@
|
|||||||
"description": "Button text; pref window"
|
"description": "Button text; pref window"
|
||||||
},
|
},
|
||||||
"reset-confirmations": {
|
"reset-confirmations": {
|
||||||
"message": "Zerar comfirmações memorizadas",
|
"message": "Zerar confirmações memorizadas",
|
||||||
"description": "Button text; pref/General"
|
"description": "Button text; pref/General"
|
||||||
},
|
},
|
||||||
"reset-confirmations.done": {
|
"reset-confirmations.done": {
|
||||||
|
1170
_locales/zh-CN/messages.json
Normal file
1170
_locales/zh-CN/messages.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -17,7 +17,7 @@ import {
|
|||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
Tab,
|
Tab,
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
MenuClickInfo
|
MenuClickInfo,
|
||||||
} from "./browser";
|
} from "./browser";
|
||||||
import { Bus } from "./bus";
|
import { Bus } from "./bus";
|
||||||
import { filterInSitu } from "./util";
|
import { filterInSitu } from "./util";
|
||||||
@ -389,7 +389,10 @@ locale.then(() => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async enumulate(action: string) {
|
async enumulate(action: string) {
|
||||||
const tab = await tabs.query({active: true});
|
const tab = await tabs.query({
|
||||||
|
active: true,
|
||||||
|
currentWindow: true,
|
||||||
|
});
|
||||||
if (!tab || !tab.length) {
|
if (!tab || !tab.length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -123,9 +123,13 @@ async function loadRawLocales() {
|
|||||||
const langs = new Set<string>(["en"]);
|
const langs = new Set<string>(["en"]);
|
||||||
const ui = (browser.i18n || chrome.i18n).getUILanguage();
|
const ui = (browser.i18n || chrome.i18n).getUILanguage();
|
||||||
langs.add(ui);
|
langs.add(ui);
|
||||||
|
|
||||||
|
// Try the base too
|
||||||
if (ui.includes("-")) {
|
if (ui.includes("-")) {
|
||||||
// Try the base too
|
langs.add(ui.split(/[-]+/)[0]);
|
||||||
langs.add(ui.split(/[_-]+/)[0]);
|
}
|
||||||
|
else if (ui.includes("_")) {
|
||||||
|
langs.add(ui.split(/[_]+/)[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
const fetched = await Promise.all(Array.from(langs, fetchLanguage));
|
const fetched = await Promise.all(Array.from(langs, fetchLanguage));
|
||||||
|
@ -12,13 +12,20 @@ const DEFAULTS = {
|
|||||||
message: "message",
|
message: "message",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const TIMEOUT = 4000;
|
||||||
|
|
||||||
|
let gid = 1;
|
||||||
|
|
||||||
export class Notification extends EventEmitter {
|
export class Notification extends EventEmitter {
|
||||||
private notification: any;
|
private notification: any;
|
||||||
|
|
||||||
|
private readonly generated: boolean;
|
||||||
|
|
||||||
constructor(id: string | null, options = {}) {
|
constructor(id: string | null, options = {}) {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
id = id || "DownThemAll-notification";
|
this.generated = !id;
|
||||||
|
id = id || `DownThemAll-notification${++gid}`;
|
||||||
if (typeof options === "string") {
|
if (typeof options === "string") {
|
||||||
options = {message: options};
|
options = {message: options};
|
||||||
}
|
}
|
||||||
@ -39,11 +46,16 @@ export class Notification extends EventEmitter {
|
|||||||
opened(notification: any) {
|
opened(notification: any) {
|
||||||
this.notification = notification;
|
this.notification = notification;
|
||||||
this.emit("opened", this);
|
this.emit("opened", this);
|
||||||
|
if (this.generated) {
|
||||||
|
setTimeout(() => {
|
||||||
|
notifications.clear(notification);
|
||||||
|
}, TIMEOUT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
clicked(notification: any, button?: number) {
|
clicked(notification: any, button?: number) {
|
||||||
// We can only be clicked, when we were opened, at which point the
|
// We can only be clicked, when we were opened, at which point the
|
||||||
// notification id is availablfalse
|
// notification id is available
|
||||||
if (notification !== this.notification) {
|
if (notification !== this.notification) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -52,6 +64,7 @@ export class Notification extends EventEmitter {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.emit("clicked", this);
|
this.emit("clicked", this);
|
||||||
|
console.log("clicked", notification);
|
||||||
}
|
}
|
||||||
|
|
||||||
async closed(notification: any) {
|
async closed(notification: any) {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
"name": "DownThemAll!",
|
"name": "DownThemAll!",
|
||||||
"version": "4.0.5",
|
"version": "4.0.6",
|
||||||
|
|
||||||
"description": "__MSG_extensionDescription__",
|
"description": "__MSG_extensionDescription__",
|
||||||
"homepage_url": "https://downthemall.org/",
|
"homepage_url": "https://downthemall.org/",
|
||||||
@ -9,6 +9,8 @@
|
|||||||
|
|
||||||
"default_locale": "en",
|
"default_locale": "en",
|
||||||
|
|
||||||
|
"content_security_policy": "script-src 'self'; style-src 'self' 'unsafe-inline'; default-src 'self'",
|
||||||
|
|
||||||
"icons": {
|
"icons": {
|
||||||
"16": "style/icon16.png",
|
"16": "style/icon16.png",
|
||||||
"32": "style/icon32.png",
|
"32": "style/icon32.png",
|
||||||
|
@ -49,7 +49,7 @@ p.example {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#options > * {
|
#options > * {
|
||||||
margin: 0;
|
margin: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#options > input {
|
#options > input {
|
||||||
|
@ -42,6 +42,11 @@ module.exports = {
|
|||||||
filename: "[name].js"
|
filename: "[name].js"
|
||||||
},
|
},
|
||||||
devtool: "source-map",
|
devtool: "source-map",
|
||||||
|
stats: {
|
||||||
|
hash: true,
|
||||||
|
timings: true,
|
||||||
|
maxModules: 2,
|
||||||
|
},
|
||||||
watchOptions: {
|
watchOptions: {
|
||||||
ignored: /node_modules|bundles/
|
ignored: /node_modules|bundles/
|
||||||
},
|
},
|
||||||
|
@ -128,8 +128,8 @@
|
|||||||
<template id="menufilter-template">
|
<template id="menufilter-template">
|
||||||
<ul>
|
<ul>
|
||||||
<li id="ctx-menufilter-seperator">-</li>
|
<li id="ctx-menufilter-seperator">-</li>
|
||||||
<li id="ctx-menufilter-invert" data-autoHide="false">Invert</li>
|
<li id="ctx-menufilter-invert" data-auto-hide="false">Invert</li>
|
||||||
<li id="ctx-menufilter-clear" data-autoHide="false">Clear</li>
|
<li id="ctx-menufilter-clear" data-auto-hide="false">Clear</li>
|
||||||
<li>-</li>
|
<li>-</li>
|
||||||
<li id="ctx-menufilter-sort-ascending" data-icon="icon-sort-asc">Sort ascending</li>
|
<li id="ctx-menufilter-sort-ascending" data-icon="icon-sort-asc">Sort ascending</li>
|
||||||
<li id="ctx-menufilter-sort-descending" data-icon="icon-sort-desc">Sort descending</li>
|
<li id="ctx-menufilter-sort-descending" data-icon="icon-sort-desc">Sort descending</li>
|
||||||
|
@ -340,14 +340,19 @@ export class UrlMenuFilter extends MenuFilter {
|
|||||||
async populate() {
|
async populate() {
|
||||||
const filts = await filters();
|
const filts = await filters();
|
||||||
for (const i of filts.all.filter(e => e.id !== "deffilter-all")) {
|
for (const i of filts.all.filter(e => e.id !== "deffilter-all")) {
|
||||||
this.addItem(i.label, this.toggleRegularFilter.bind(this, i));
|
this.addItem(
|
||||||
|
i.label, this.toggleRegularFilter.bind(this, i), this.filters.has(i));
|
||||||
}
|
}
|
||||||
this.addItem("-");
|
const domains = sort(
|
||||||
sort(
|
|
||||||
Array.from(new Set(this.collection.items.map(e => e.domain))),
|
Array.from(new Set(this.collection.items.map(e => e.domain))),
|
||||||
undefined,
|
undefined,
|
||||||
naturalCaseCompare
|
naturalCaseCompare
|
||||||
).forEach(e => {
|
);
|
||||||
|
if (!domains.length) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.addItem("-");
|
||||||
|
domains.forEach(e => {
|
||||||
this.addItem(
|
this.addItem(
|
||||||
e, this.toggleDomainFilter.bind(this, e), this.domains.has(e));
|
e, this.toggleDomainFilter.bind(this, e), this.domains.has(e));
|
||||||
});
|
});
|
||||||
|
@ -7,6 +7,10 @@
|
|||||||
box-sizing: content-box !important;
|
box-sizing: content-box !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
html, body {
|
||||||
|
height: auto !important;
|
||||||
|
}
|
||||||
|
|
||||||
ul {
|
ul {
|
||||||
margin: 1.5ex;
|
margin: 1.5ex;
|
||||||
margin-right: 2ex;
|
margin-right: 2ex;
|
||||||
@ -25,6 +29,7 @@
|
|||||||
vertical-align: center;
|
vertical-align: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
li.sep {
|
li.sep {
|
||||||
|
Reference in New Issue
Block a user