Compare commits
26 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 | |||
78e91304eb | |||
0702631003 | |||
c45bf671fb | |||
33a3e275fc | |||
369514f155 |
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**
|
||||
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**
|
||||
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**
|
||||
Add any other context about the problem here.
|
||||
|
4
TODO.md
4
TODO.md
@ -15,10 +15,6 @@ Planned for later.
|
||||
* Add downloads
|
||||
* Chrome support
|
||||
* vtable perf: cache column widths
|
||||
* Localizations
|
||||
* Settle on system
|
||||
* Do the de-locale
|
||||
* Enagage translators
|
||||
* 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.
|
||||
|
||||
|
@ -252,7 +252,7 @@
|
||||
"description": "Menu text"
|
||||
},
|
||||
"dta.turbo.link": {
|
||||
"message": "Bild mit OneClick! speichern",
|
||||
"message": "Link mit OneClick! speichern",
|
||||
"description": "Menu text"
|
||||
},
|
||||
"dta.turbo.media": {
|
||||
@ -1164,7 +1164,7 @@
|
||||
"description": "Option text; Prefs/Network"
|
||||
},
|
||||
"useonlyonce": {
|
||||
"message": "Nur einmal",
|
||||
"message": "Einmalig",
|
||||
"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/lt/messages.json
Normal file
1170
_locales/lt/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
@ -1,11 +1,31 @@
|
||||
{
|
||||
"language": {
|
||||
"message": "Polski (PL)",
|
||||
"description": "Lanuage Name in your language"
|
||||
"CRASH": {
|
||||
"message": "Błąd wewnętrzny przeglądarki",
|
||||
"description": "Error Message"
|
||||
},
|
||||
"language_code": {
|
||||
"message": "pl",
|
||||
"description": "Language code the locale will use, e.g. de or en-GB or pt-BR"
|
||||
"FILE_FAILED": {
|
||||
"message": "Błąd dostępu do pliku",
|
||||
"description": "Error Message"
|
||||
},
|
||||
"NETWORK_FAILED": {
|
||||
"message": "Błąd sieci",
|
||||
"description": "Error Message"
|
||||
},
|
||||
"SERVER_BAD_CONTENT": {
|
||||
"description": "Error message",
|
||||
"message": "Nie odnaleziono serwera"
|
||||
},
|
||||
"SERVER_FAILED": {
|
||||
"description": "Error message",
|
||||
"message": "Błąd serwera"
|
||||
},
|
||||
"SERVER_FORBIDDEN": {
|
||||
"description": "Error message",
|
||||
"message": "Dostęp zabroniony"
|
||||
},
|
||||
"SERVER_UNAUTHORIZED": {
|
||||
"description": "Error message",
|
||||
"message": "Brak autoryzacji dostępu"
|
||||
},
|
||||
"add-download": {
|
||||
"message": "Dodaj pobieranie",
|
||||
@ -20,7 +40,7 @@
|
||||
"description": "Checkbox label"
|
||||
},
|
||||
"add-paused.question": {
|
||||
"message": "Czy chcesz zapamiętać tę decyzję i zawsze dodawać nowe pliki wstrzymane od teraz??",
|
||||
"message": "Czy chcesz zapamiętać tę decyzję i od teraz dodawać nowe pobierania jako zatrzymane?",
|
||||
"description": "Messagebox text"
|
||||
},
|
||||
"add-paused.title": {
|
||||
@ -36,11 +56,11 @@
|
||||
"description": "Button text"
|
||||
},
|
||||
"batch.batch": {
|
||||
"message": "Pobieranie wsadowe",
|
||||
"message": "Pobieranie grupowe",
|
||||
"description": "Button text"
|
||||
},
|
||||
"batch.desc": {
|
||||
"message": "Obecny adres URL wydaje się zawierać instrukcje dotyczące pobierania wsadowego.",
|
||||
"message": "Obecny adres URL wydaje się zawierać instrukcje dotyczące pobierania grupowego.",
|
||||
"description": ""
|
||||
},
|
||||
"batch.items": {
|
||||
@ -52,7 +72,7 @@
|
||||
"description": "Messagebox info text for batch confirmations"
|
||||
},
|
||||
"batch.question": {
|
||||
"message": "Czy chcesz dodać to jako wsadowe czy jako pojedyncze pobranie?",
|
||||
"message": "Chcesz to dodać jako grupowe czy pojedyncze pobranie?",
|
||||
"description": "Messagebox info text for batch confirmations"
|
||||
},
|
||||
"batch.single": {
|
||||
@ -60,7 +80,7 @@
|
||||
"description": "Button text for batch confirmation"
|
||||
},
|
||||
"batch.title": {
|
||||
"message": "Pobieranie wsadowe",
|
||||
"message": "Pobieranie grupowe",
|
||||
"description": "Messagebox title for batch confirmations"
|
||||
},
|
||||
"cancel": {
|
||||
@ -135,10 +155,6 @@
|
||||
"message": "Zmień nazwę",
|
||||
"description": "Option text; prefs/general"
|
||||
},
|
||||
"CRASH": {
|
||||
"message": "Błąd wewnętrzny przeglądarki",
|
||||
"description": "Error Message"
|
||||
},
|
||||
"create-filter": {
|
||||
"message": "Utwórz filtr",
|
||||
"description": "Button text; Create filter dialog; prefs/filters"
|
||||
@ -236,7 +252,7 @@
|
||||
"description": "Menu text"
|
||||
},
|
||||
"dta.regular.media": {
|
||||
"message": "Zapisz Media z DownThemAll!",
|
||||
"message": "Zapisz Multimedia z DownThemAll!",
|
||||
"description": "Menu text"
|
||||
},
|
||||
"dta.regular.selection": {
|
||||
@ -256,7 +272,7 @@
|
||||
"description": "Menu text"
|
||||
},
|
||||
"dta.turbo.media": {
|
||||
"message": "Zapisz Media z One Click!",
|
||||
"message": "Zapisz Multimedia z One Click!",
|
||||
"description": "Menu text"
|
||||
},
|
||||
"dta.turbo.selection": {
|
||||
@ -280,7 +296,7 @@
|
||||
"description": "Error Message; select window"
|
||||
},
|
||||
"extensionDescription": {
|
||||
"message": "Mass Downloader dla Twojej przeglądarki",
|
||||
"message": "Narzędzie do zbiorowego pobierania dla Twojej przeglądarki",
|
||||
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
|
||||
},
|
||||
"fastfilter.placeholder": {
|
||||
@ -291,10 +307,6 @@
|
||||
"message": "Szybkie filtrowanie",
|
||||
"description": "Label for Fast Filtering input"
|
||||
},
|
||||
"FILE_FAILED": {
|
||||
"message": "Błąd dostępu do pliku",
|
||||
"description": "Error Message"
|
||||
},
|
||||
"filter-at-least-one": {
|
||||
"message": "Musisz wybrać co najmniej jeden typ filtru!",
|
||||
"description": "Error message when no filter types are selected for a filter in the preferences UI"
|
||||
@ -312,11 +324,11 @@
|
||||
"description": "Message box label"
|
||||
},
|
||||
"filter-type-link": {
|
||||
"message": "Link Filter",
|
||||
"message": "Filtr linków",
|
||||
"description": "Message box checkbox label"
|
||||
},
|
||||
"filter-type-media": {
|
||||
"message": "Media Filter",
|
||||
"message": "Filtr Multimediów",
|
||||
"description": "Message box checkbox label"
|
||||
},
|
||||
"filter-types": {
|
||||
@ -371,6 +383,14 @@
|
||||
"message": "PageUp",
|
||||
"description": "Short for PageUp-key"
|
||||
},
|
||||
"language": {
|
||||
"description": "Lanuage Name in your language",
|
||||
"message": "Polski (PL)"
|
||||
},
|
||||
"language_code": {
|
||||
"description": "Language code the locale will use, e.g. de or en-GB or pt-BR",
|
||||
"message": "pl"
|
||||
},
|
||||
"limited-to": {
|
||||
"message": "Ograniczone do",
|
||||
"description": "Label text; used in prefs/network"
|
||||
@ -418,7 +438,7 @@
|
||||
"description": "Status text; Used in the mask column, select window"
|
||||
},
|
||||
"media": {
|
||||
"message": "Media",
|
||||
"message": "Multimedia",
|
||||
"description": "Media label (short)"
|
||||
},
|
||||
"missing": {
|
||||
@ -451,10 +471,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"NETWORK_FAILED": {
|
||||
"message": "Błąd sieci",
|
||||
"description": "Error Message"
|
||||
},
|
||||
"never-ask-again": {
|
||||
"message": "Nie pytaj ponownie",
|
||||
"description": "Donation button"
|
||||
@ -628,11 +644,11 @@
|
||||
"description": "Messagebox text"
|
||||
},
|
||||
"remove-batch-downloads": {
|
||||
"message": "Usuń Obecny Wsad",
|
||||
"message": "Usuń aktualne pobieranie grupowe",
|
||||
"description": "Menu text"
|
||||
},
|
||||
"remove-batch-downloads.question": {
|
||||
"message": "Czy chcesz usunąć wszystkie pobrania z tego samego wsadu, co aktualnie wybrane pobieranie?",
|
||||
"message": "Czy chcesz usunąć wszystkie pobrania z danej grupy, co aktualnie wybrane pobieranie?",
|
||||
"description": "Messagebox text"
|
||||
},
|
||||
"remove-complete-downloads": {
|
||||
@ -752,7 +768,7 @@
|
||||
"description": "UI for renaming; currently unused"
|
||||
},
|
||||
"renamer-batch": {
|
||||
"message": "Numer Wsadu",
|
||||
"message": "Numer pobierania grupowego",
|
||||
"description": "Mask text; see mask button"
|
||||
},
|
||||
"renamer-d": {
|
||||
@ -780,11 +796,11 @@
|
||||
"description": "Mask text; see mask button"
|
||||
},
|
||||
"renamer-idx": {
|
||||
"message": "Numer elementu we Wsadzie",
|
||||
"message": "Numer elementu w pobieraniu grupowym",
|
||||
"description": "Mask text; see mask button"
|
||||
},
|
||||
"renamer-info": {
|
||||
"message": "",
|
||||
"message": "Dodanie 'flat', np. *flatsubdirs*, zamieni wszystkie ukośniki w wartości, co doprowadzi do nieutworzenia katalogów",
|
||||
"description": "Mask text; see mask button; do NOT translate any mentions of \"flat\"!"
|
||||
},
|
||||
"renamer-m": {
|
||||
@ -800,7 +816,7 @@
|
||||
"description": "Mask text; see mask button"
|
||||
},
|
||||
"renamer-num": {
|
||||
"message": "Alias dla *Wsadu*",
|
||||
"message": "Alias dla *pobieranie grupowe*",
|
||||
"description": "Mask text; see mask button"
|
||||
},
|
||||
"renamer-qstring": {
|
||||
@ -888,7 +904,7 @@
|
||||
"description": "Button text; pref/General"
|
||||
},
|
||||
"reset-layouts.done": {
|
||||
"message": "Wszystkie wcześniej zapamiętane dostosowania układu zostały zresetowane! Może być konieczne ponowne załadowanie okien/kart.",
|
||||
"message": "Wszystkie wcześniej zapamiętane ustawienia wyglądu zostały zresetowane! Może być konieczne ponowne załadowanie okien/kart.",
|
||||
"description": "Messagebox text; pref/General"
|
||||
},
|
||||
"resume-download": {
|
||||
@ -904,7 +920,7 @@
|
||||
"description": "Button text; e.g. prefs/Network"
|
||||
},
|
||||
"search": {
|
||||
"message": "Szukaj…",
|
||||
"message": "Szukaj\u2026",
|
||||
"description": "Placeholder text; manager status search field"
|
||||
},
|
||||
"select-all": {
|
||||
@ -923,28 +939,12 @@
|
||||
"message": "DownThemAll! - Wybierz swoje pobierania",
|
||||
"description": "Title of the select window"
|
||||
},
|
||||
"SERVER_BAD_CONTENT": {
|
||||
"message": "Nie znaleziono",
|
||||
"description": "Error message"
|
||||
},
|
||||
"SERVER_FAILED": {
|
||||
"message": "Błąd serwera",
|
||||
"description": "Error message"
|
||||
},
|
||||
"SERVER_FORBIDDEN": {
|
||||
"message": "Zabronione",
|
||||
"description": "Error message"
|
||||
},
|
||||
"SERVER_UNAUTHORIZED": {
|
||||
"message": "Nieautoryzowany",
|
||||
"description": "Error message"
|
||||
},
|
||||
"set-mask": {
|
||||
"message": "Ustaw maskę zmiany nazwy",
|
||||
"description": "Menu text; select window"
|
||||
},
|
||||
"single.batchexamples": {
|
||||
"message": "Wsady są wspierane, np.:",
|
||||
"message": "Pobierania grupowe są wspierane, np.:",
|
||||
"description": "Header text; single window"
|
||||
},
|
||||
"single.header": {
|
||||
@ -1167,4 +1167,4 @@
|
||||
"message": "Użyj raz",
|
||||
"description": "Label for Use-Once checkboxes"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
1160
_locales/pt/messages.json
Normal file
1160
_locales/pt/messages.json
Normal file
File diff suppressed because it is too large
Load Diff
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
@ -9,7 +9,7 @@
|
||||
"hide-context": false,
|
||||
"conflict-action": "uniquify",
|
||||
"nagging": 0,
|
||||
"nagging-next": 6,
|
||||
"nagging-next": 7,
|
||||
"tooltip": true,
|
||||
"show-urls": false,
|
||||
"remove-missing-on-init": false,
|
||||
|
@ -17,7 +17,7 @@ import {
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
Tab,
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
MenuClickInfo
|
||||
MenuClickInfo,
|
||||
} from "./browser";
|
||||
import { Bus } from "./bus";
|
||||
import { filterInSitu } from "./util";
|
||||
@ -389,7 +389,10 @@ locale.then(() => {
|
||||
}
|
||||
|
||||
async enumulate(action: string) {
|
||||
const tab = await tabs.query({active: true});
|
||||
const tab = await tabs.query({
|
||||
active: true,
|
||||
currentWindow: true,
|
||||
});
|
||||
if (!tab || !tab.length) {
|
||||
return;
|
||||
}
|
||||
|
@ -123,9 +123,13 @@ async function loadRawLocales() {
|
||||
const langs = new Set<string>(["en"]);
|
||||
const ui = (browser.i18n || chrome.i18n).getUILanguage();
|
||||
langs.add(ui);
|
||||
|
||||
// Try the base too
|
||||
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));
|
||||
|
@ -12,13 +12,20 @@ const DEFAULTS = {
|
||||
message: "message",
|
||||
};
|
||||
|
||||
const TIMEOUT = 4000;
|
||||
|
||||
let gid = 1;
|
||||
|
||||
export class Notification extends EventEmitter {
|
||||
private notification: any;
|
||||
|
||||
private readonly generated: boolean;
|
||||
|
||||
constructor(id: string | null, options = {}) {
|
||||
super();
|
||||
|
||||
id = id || "DownThemAll-notification";
|
||||
this.generated = !id;
|
||||
id = id || `DownThemAll-notification${++gid}`;
|
||||
if (typeof options === "string") {
|
||||
options = {message: options};
|
||||
}
|
||||
@ -39,11 +46,16 @@ export class Notification extends EventEmitter {
|
||||
opened(notification: any) {
|
||||
this.notification = notification;
|
||||
this.emit("opened", this);
|
||||
if (this.generated) {
|
||||
setTimeout(() => {
|
||||
notifications.clear(notification);
|
||||
}, TIMEOUT);
|
||||
}
|
||||
}
|
||||
|
||||
clicked(notification: any, button?: number) {
|
||||
// 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) {
|
||||
return;
|
||||
}
|
||||
@ -52,6 +64,7 @@ export class Notification extends EventEmitter {
|
||||
return;
|
||||
}
|
||||
this.emit("clicked", this);
|
||||
console.log("clicked", notification);
|
||||
}
|
||||
|
||||
async closed(notification: any) {
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 2,
|
||||
"name": "DownThemAll!",
|
||||
"version": "4.0.4",
|
||||
"version": "4.0.6",
|
||||
|
||||
"description": "__MSG_extensionDescription__",
|
||||
"homepage_url": "https://downthemall.org/",
|
||||
@ -9,6 +9,8 @@
|
||||
|
||||
"default_locale": "en",
|
||||
|
||||
"content_security_policy": "script-src 'self'; style-src 'self' 'unsafe-inline'; default-src 'self'",
|
||||
|
||||
"icons": {
|
||||
"16": "style/icon16.png",
|
||||
"32": "style/icon32.png",
|
||||
|
@ -49,7 +49,7 @@ p.example {
|
||||
}
|
||||
|
||||
#options > * {
|
||||
margin: 0;
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
#options > input {
|
||||
|
@ -42,6 +42,11 @@ module.exports = {
|
||||
filename: "[name].js"
|
||||
},
|
||||
devtool: "source-map",
|
||||
stats: {
|
||||
hash: true,
|
||||
timings: true,
|
||||
maxModules: 2,
|
||||
},
|
||||
watchOptions: {
|
||||
ignored: /node_modules|bundles/
|
||||
},
|
||||
|
@ -128,8 +128,8 @@
|
||||
<template id="menufilter-template">
|
||||
<ul>
|
||||
<li id="ctx-menufilter-seperator">-</li>
|
||||
<li id="ctx-menufilter-invert" data-autoHide="false">Invert</li>
|
||||
<li id="ctx-menufilter-clear" data-autoHide="false">Clear</li>
|
||||
<li id="ctx-menufilter-invert" data-auto-hide="false">Invert</li>
|
||||
<li id="ctx-menufilter-clear" data-auto-hide="false">Clear</li>
|
||||
<li>-</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>
|
||||
|
@ -44,7 +44,7 @@ addEventListener("DOMContentLoaded", function dom() {
|
||||
const fullyloaded = Promise.all([LOADED, platformed, tabled, localized]);
|
||||
fullyloaded.then(async () => {
|
||||
const nag = await Prefs.get("nagging", 0);
|
||||
const nagnext = await Prefs.get("nagging-next", 6);
|
||||
const nagnext = await Prefs.get("nagging-next", 7);
|
||||
const next = Math.ceil(Math.log2(Math.max(1, nag)));
|
||||
const el = $("#nagging");
|
||||
const remove = () => {
|
||||
|
@ -340,14 +340,19 @@ export class UrlMenuFilter extends MenuFilter {
|
||||
async populate() {
|
||||
const filts = await filters();
|
||||
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("-");
|
||||
sort(
|
||||
const domains = sort(
|
||||
Array.from(new Set(this.collection.items.map(e => e.domain))),
|
||||
undefined,
|
||||
naturalCaseCompare
|
||||
).forEach(e => {
|
||||
);
|
||||
if (!domains.length) {
|
||||
return;
|
||||
}
|
||||
this.addItem("-");
|
||||
domains.forEach(e => {
|
||||
this.addItem(
|
||||
e, this.toggleDomainFilter.bind(this, e), this.domains.has(e));
|
||||
});
|
||||
|
@ -7,6 +7,10 @@
|
||||
box-sizing: content-box !important;
|
||||
}
|
||||
|
||||
html, body {
|
||||
height: auto !important;
|
||||
}
|
||||
|
||||
ul {
|
||||
margin: 1.5ex;
|
||||
margin-right: 2ex;
|
||||
@ -25,6 +29,7 @@
|
||||
vertical-align: center;
|
||||
align-items: center;
|
||||
border-radius: 4px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
li.sep {
|
||||
|
Reference in New Issue
Block a user