26 Commits

Author SHA1 Message Date
2ccc12de90 Version 4.0.6 2019-09-02 11:53:03 +02:00
28e6866db8 Use currentWindow instead of WINDOW_ID_CURRENT 2019-09-02 04:06:28 +02:00
7185964649 emulate must use correct window
Closes #41
2019-09-02 04:02:50 +02:00
cd1005823d Typo fixes 2019-09-02 03:57:21 +02:00
0afceb9850 Dutch translation
Closes #39
2019-09-02 00:30:45 +02:00
e6dc205b9d Small de improvement 2019-09-02 00:26:35 +02:00
8e473c778b Rename to zh-CN
Related to #38
2019-09-02 00:26:15 +02:00
7a71ae5f37 Also split ui locales by _ 2019-09-02 00:24:11 +02:00
d04f3db22f Add Simplified Chinese translation
Created this translation by using the online translation tool from https://downthemall.github.io/translate/ .
2019-09-02 00:23:51 +02:00
adc6b9dbb2 Add et locale 2019-09-02 00:03:29 +02:00
e8f09c80f3 Do not add empty separator in URLMenuFilter 2019-09-01 15:24:14 +02:00
46c4e66558 webpack config updates 2019-09-01 06:17:05 +02:00
a8ea416a67 Remove smartphone section from issue template 2019-09-01 05:06:30 +02:00
320c1ddafa Add a little margin to allow focus outlines 2019-09-01 05:01:49 +02:00
4c576ba720 Add content_security_policy 2019-09-01 04:52:57 +02:00
7b58779f9e Remove outdated todos 2019-09-01 00:37:10 +02:00
45d835fe19 use correct autoHide HTML spelling 2019-09-01 00:03:53 +02:00
2d2826d192 Correctly toggle URLMenuFilter 2019-09-01 00:03:34 +02:00
4c77ad0f1f Fix popup height flash bug 2019-08-31 23:16:46 +02:00
4d72ac4534 Notifications galore 2019-08-31 23:08:12 +02:00
cdda0835d8 Wrong translation 2019-08-31 18:12:37 +02:00
78e91304eb Version 4.0.5 2019-08-31 15:44:35 +02:00
0702631003 nag a little later 2019-08-31 13:40:54 +02:00
c45bf671fb fixes to polish translation (#34) 2019-08-31 13:38:47 +02:00
33a3e275fc Create messages.json 2019-08-31 08:16:29 +02:00
369514f155 Add lt locale 2019-08-30 17:02:08 +02:00
20 changed files with 5955 additions and 87 deletions

View File

@ -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.

View File

@ -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.

View File

@ -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

File diff suppressed because it is too large Load Diff

1170
_locales/lt/messages.json Normal file

File diff suppressed because it is too large Load Diff

1170
_locales/nl/messages.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -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

File diff suppressed because it is too large Load Diff

1170
_locales/zh-CN/messages.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -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,

View File

@ -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;
}

View File

@ -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));

View File

@ -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) {

View File

@ -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",

View File

@ -49,7 +49,7 @@ p.example {
}
#options > * {
margin: 0;
margin: 2px;
}
#options > input {

View File

@ -42,6 +42,11 @@ module.exports = {
filename: "[name].js"
},
devtool: "source-map",
stats: {
hash: true,
timings: true,
maxModules: 2,
},
watchOptions: {
ignored: /node_modules|bundles/
},

View File

@ -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>

View File

@ -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 = () => {

View File

@ -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));
});

View File

@ -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 {