diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/Controllers/subscriptionController.php | 1 | ||||
| -rw-r--r-- | app/Models/Entry.php | 16 | ||||
| -rw-r--r-- | app/i18n/cs/sub.php | 4 | ||||
| -rw-r--r-- | app/i18n/de/sub.php | 4 | ||||
| -rw-r--r-- | app/i18n/el/sub.php | 4 | ||||
| -rw-r--r-- | app/i18n/en-us/sub.php | 4 | ||||
| -rw-r--r-- | app/i18n/en/sub.php | 4 | ||||
| -rw-r--r-- | app/i18n/es/sub.php | 4 | ||||
| -rw-r--r-- | app/i18n/fa/sub.php | 2 | ||||
| -rw-r--r-- | app/i18n/fi/sub.php | 4 | ||||
| -rw-r--r-- | app/i18n/fr/sub.php | 4 | ||||
| -rw-r--r-- | app/i18n/he/sub.php | 4 | ||||
| -rw-r--r-- | app/i18n/hu/sub.php | 4 | ||||
| -rw-r--r-- | app/i18n/id/sub.php | 4 | ||||
| -rw-r--r-- | app/i18n/it/sub.php | 4 | ||||
| -rw-r--r-- | app/i18n/ja/sub.php | 4 | ||||
| -rw-r--r-- | app/i18n/ko/sub.php | 4 | ||||
| -rw-r--r-- | app/i18n/lv/sub.php | 4 | ||||
| -rw-r--r-- | app/i18n/nl/sub.php | 4 | ||||
| -rw-r--r-- | app/i18n/oc/sub.php | 4 | ||||
| -rw-r--r-- | app/i18n/pl/sub.php | 4 | ||||
| -rw-r--r-- | app/i18n/pt-br/sub.php | 4 | ||||
| -rw-r--r-- | app/i18n/ru/sub.php | 4 | ||||
| -rw-r--r-- | app/i18n/sk/sub.php | 4 | ||||
| -rw-r--r-- | app/i18n/tr/sub.php | 4 | ||||
| -rw-r--r-- | app/i18n/zh-cn/sub.php | 4 | ||||
| -rw-r--r-- | app/i18n/zh-tw/sub.php | 4 | ||||
| -rw-r--r-- | app/views/helpers/feed/update.phtml | 21 |
28 files changed, 110 insertions, 26 deletions
diff --git a/app/Controllers/subscriptionController.php b/app/Controllers/subscriptionController.php index 04e8bdf62..048eeef2e 100644 --- a/app/Controllers/subscriptionController.php +++ b/app/Controllers/subscriptionController.php @@ -299,6 +299,7 @@ class FreshRSS_subscription_Controller extends FreshRSS_ActionController { } } + $feed->_attribute('path_entries_condition', Minz_Request::paramTextToArray('path_entries_condition', plaintext: true)); $feed->_attribute('path_entries_filter', Minz_Request::paramString('path_entries_filter', true)); $values = [ diff --git a/app/Models/Entry.php b/app/Models/Entry.php index cccfac5e1..441730af2 100644 --- a/app/Models/Entry.php +++ b/app/Models/Entry.php @@ -814,6 +814,22 @@ HTML; if ($url === '' || $feed === null || $feed->pathEntries() === '') { return ''; } + if (!empty($feed->attributeArray('path_entries_condition'))) { + $found = false; + foreach ($feed->attributeArray('path_entries_condition') as $condition) { + if (trim($condition) === '') { + continue; + } + $booleanSearch = new FreshRSS_BooleanSearch($condition); + if ($this->matches($booleanSearch)) { + $found = true; + break; + } + } + if (!$found) { + return ''; + } + } $cachePath = $feed->cacheFilename($url . '#' . $feed->pathEntries()); $html = httpGet($url, $cachePath, 'html', $feed->attributes(), $feed->curlOptions()); diff --git a/app/i18n/cs/sub.php b/app/i18n/cs/sub.php index ecdae4102..a977fcf23 100644 --- a/app/i18n/cs/sub.php +++ b/app/i18n/cs/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => 'Přidat před existující obsah', 'replace' => 'Nahradit existující obsah', ), + 'content_retrieval' => 'Content retrieval', // TODO 'css_cookie' => 'Použít cookies při načítání obsahu článku', 'css_cookie_help' => 'Příklad: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', 'css_help' => 'Načte oříznuté kanály RSS (pozor, náročnější na čas!)', 'css_path' => 'Přepínač CSS článku na původních webových stránkách', 'css_path_filter' => array( '_' => 'selektor CSS prvků, které mají být odstraněny', - 'help' => 'Selektor CSS může být seznam, například: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', + 'help' => 'Selektor CSS může být seznam, například: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', ), 'description' => 'Popis', 'empty' => 'Tento kanál je prázdný. Ověřte prosím, zda je stále udržován.', @@ -201,6 +202,7 @@ return array( 'no_selected' => 'Nejsou vybrány žádné kanály.', 'number_entries' => '%d článků', 'open_feed' => 'Open feed %s', // TODO + 'path_entries_condition' => 'Condition for content retrieval', // TODO 'priority' => array( '_' => 'Viditelnost', 'archived' => 'Nezobrazovat (archivováno)', diff --git a/app/i18n/de/sub.php b/app/i18n/de/sub.php index 62ec07b94..63d44181d 100644 --- a/app/i18n/de/sub.php +++ b/app/i18n/de/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => 'Artikelinhalt vor Feed-Inhalt hinzufügen', 'replace' => 'Artikelinhalt ersetzt Feed-Inhalt (Standard)', ), + 'content_retrieval' => 'Content retrieval', // TODO 'css_cookie' => 'Verwende Cookies beim Herunterladen des Feed-Inhalts mit CSS-Filtern', 'css_cookie_help' => 'Beispiel: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', 'css_help' => 'Ruft bei gekürzten RSS-Feeds den vollständigen Artikelinhalt ab (Achtung, benötigt mehr Zeit!)', 'css_path' => 'CSS-Selektor des Artikelinhaltes auf der Original-Webseite', 'css_path_filter' => array( '_' => 'CSS-Selector für die Elemente, die entfernt werden sollen', - 'help' => 'CSS-Selector könnte eine Liste sein, wie z.B.: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', + 'help' => 'CSS-Selector könnte eine Liste sein, wie z.B.: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', ), 'description' => 'Beschreibung', 'empty' => 'Dieser Feed ist leer. Bitte stellen Sie sicher, dass er noch gepflegt wird.', @@ -201,6 +202,7 @@ return array( 'no_selected' => 'Kein Feed ausgewählt.', 'number_entries' => '%d Artikel', 'open_feed' => 'Feed %s öffnen', + 'path_entries_condition' => 'Condition for content retrieval', // TODO 'priority' => array( '_' => 'Sichtbarkeit', 'archived' => 'Nicht anzeigen (archiviert)', diff --git a/app/i18n/el/sub.php b/app/i18n/el/sub.php index b10478c1b..ebd3f94c5 100644 --- a/app/i18n/el/sub.php +++ b/app/i18n/el/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => 'Add before existing content', // TODO 'replace' => 'Replace existing content', // TODO ), + 'content_retrieval' => 'Content retrieval', // TODO 'css_cookie' => 'Use Cookies when fetching the article content', // TODO 'css_cookie_help' => 'Example: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', // TODO 'css_help' => 'Retrieves truncated RSS feeds (caution, requires more time!)', // TODO 'css_path' => 'Article CSS selector on original website', // TODO 'css_path_filter' => array( '_' => 'CSS selector of the elements to remove', // TODO - 'help' => 'A CSS selector may be a list such as: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', // TODO + 'help' => 'A CSS selector may be a list such as: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', // TODO ), 'description' => 'Description', // TODO 'empty' => 'This feed is empty. Please verify that it is still maintained.', // TODO @@ -201,6 +202,7 @@ return array( 'no_selected' => 'No feed selected.', // TODO 'number_entries' => '%d articles', // TODO 'open_feed' => 'Open feed %s', // TODO + 'path_entries_condition' => 'Condition for content retrieval', // TODO 'priority' => array( '_' => 'Visibility', // TODO 'archived' => 'Do not show (archived)', // TODO diff --git a/app/i18n/en-us/sub.php b/app/i18n/en-us/sub.php index 50cf552d2..0f9c5948b 100644 --- a/app/i18n/en-us/sub.php +++ b/app/i18n/en-us/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => 'Add before existing content', // IGNORE 'replace' => 'Replace existing content', // IGNORE ), + 'content_retrieval' => 'Content retrieval', // IGNORE 'css_cookie' => 'Use Cookies when fetching the article content', // IGNORE 'css_cookie_help' => 'Example: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', // IGNORE 'css_help' => 'Retrieves truncated RSS feeds (caution, requires more time!)', // IGNORE 'css_path' => 'Article CSS selector on original website', // IGNORE 'css_path_filter' => array( '_' => 'CSS selector of the elements to remove', // IGNORE - 'help' => 'A CSS selector may be a list such as: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', // IGNORE + 'help' => 'A CSS selector may be a list such as: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', // IGNORE ), 'description' => 'Description', // IGNORE 'empty' => 'This feed is empty. Please verify that it is still maintained.', // IGNORE @@ -201,6 +202,7 @@ return array( 'no_selected' => 'No feed selected.', // IGNORE 'number_entries' => '%d articles', // IGNORE 'open_feed' => 'Open feed %s', // IGNORE + 'path_entries_condition' => 'Condition for content retrieval', // IGNORE 'priority' => array( '_' => 'Visibility', // IGNORE 'archived' => 'Do not show (archived)', // IGNORE diff --git a/app/i18n/en/sub.php b/app/i18n/en/sub.php index 1f21f4371..eb9a85780 100644 --- a/app/i18n/en/sub.php +++ b/app/i18n/en/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => 'Add before existing content', 'replace' => 'Replace existing content', ), + 'content_retrieval' => 'Content retrieval', 'css_cookie' => 'Use Cookies when fetching the article content', 'css_cookie_help' => 'Example: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', 'css_help' => 'Retrieves truncated RSS feeds (caution, requires more time!)', 'css_path' => 'Article CSS selector on original website', 'css_path_filter' => array( '_' => 'CSS selector of the elements to remove', - 'help' => 'A CSS selector may be a list such as: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', + 'help' => 'A CSS selector may be a list such as: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', ), 'description' => 'Description', 'empty' => 'This feed is empty. Please verify that it is still maintained.', @@ -201,6 +202,7 @@ return array( 'no_selected' => 'No feed selected.', 'number_entries' => '%d articles', 'open_feed' => 'Open feed %s', + 'path_entries_condition' => 'Condition for content retrieval', 'priority' => array( '_' => 'Visibility', 'archived' => 'Do not show (archived)', diff --git a/app/i18n/es/sub.php b/app/i18n/es/sub.php index eeca920a3..c14f7730e 100644 --- a/app/i18n/es/sub.php +++ b/app/i18n/es/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => 'Añadir antes del contenido existente', 'replace' => 'Reemplazar contenido existente', ), + 'content_retrieval' => 'Content retrieval', // TODO 'css_cookie' => 'Usar cookies al obtener el contenido del artículo', 'css_cookie_help' => 'Ejemplo: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', 'css_help' => 'Recibir fuentes RSS truncadas (aviso, ¡necesita más tiempo!)', 'css_path' => 'Ruta a la CSS de los artículos en la web original', 'css_path_filter' => array( '_' => 'Selector CSS de los elementos a remover', - 'help' => 'Un selector CSS puede ser una lista, por ejemplo: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', + 'help' => 'Un selector CSS puede ser una lista, por ejemplo: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', ), 'description' => 'Descripción', 'empty' => 'La fuente está vacía. Por favor, verifica que siga activa.', @@ -201,6 +202,7 @@ return array( 'no_selected' => 'No hay fuentes seleccionadas.', 'number_entries' => '%d artículos', 'open_feed' => 'Fuente abierta %s', + 'path_entries_condition' => 'Condition for content retrieval', // TODO 'priority' => array( '_' => 'Visibilidad', 'archived' => 'No mostrar (archivado)', diff --git a/app/i18n/fa/sub.php b/app/i18n/fa/sub.php index 684be6272..0b4df39a9 100644 --- a/app/i18n/fa/sub.php +++ b/app/i18n/fa/sub.php @@ -57,6 +57,7 @@ return array( 'prepend' => ' قبل از محتوای موجود اضافه کنید', 'replace' => ' محتوای موجود را جایگزین کنید', ), + 'content_retrieval' => 'Content retrieval', // TODO 'css_cookie' => ' هنگام واکشی محتوای مقاله از کوکی ها استفاده کنید', 'css_cookie_help' => ' مثال: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', 'css_help' => ' فیدهای RSS کوتاه شده را بازیابی می کند (احتیاط', @@ -201,6 +202,7 @@ return array( 'no_selected' => ' هیچ خوراکی انتخاب نشده است.', 'number_entries' => ' %d مقاله', 'open_feed' => 'Open feed %s', // TODO + 'path_entries_condition' => 'Condition for content retrieval', // TODO 'priority' => array( '_' => ' دید', 'archived' => ' نشان داده نشود (بایگانی شده)', diff --git a/app/i18n/fi/sub.php b/app/i18n/fi/sub.php index 940e8de50..21dce88ba 100644 --- a/app/i18n/fi/sub.php +++ b/app/i18n/fi/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => 'Lisää ennen aiempaa sisältöä', 'replace' => 'Korvaa aiempi sisältö', ), + 'content_retrieval' => 'Content retrieval', // TODO 'css_cookie' => 'Käytä evästeitä noudettaessa artikkelin sisältö', 'css_cookie_help' => 'Esimerkki: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', 'css_help' => 'Noutaa lyhennetyt RSS-syötteet (huomautus: kestää pidempään!)', 'css_path' => 'Artikkelin CSS-valitsin alkuperäisellä sivustolla', 'css_path_filter' => array( '_' => 'Poistettavien elementtien CSS-valitsin', - 'help' => 'CSS-valitsin voi olla luettelo, kuten: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', + 'help' => 'CSS-valitsin voi olla luettelo, kuten: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', ), 'description' => 'Kuvaus', 'empty' => 'Syöte on tyhjä. Varmista, että sitä ylläpidetään edelleen.', @@ -201,6 +202,7 @@ return array( 'no_selected' => 'Syötettä ei ole valittu.', 'number_entries' => '%d artikkelia', 'open_feed' => 'Avaa syöte %s', + 'path_entries_condition' => 'Condition for content retrieval', // TODO 'priority' => array( '_' => 'Näkyvyys', 'archived' => 'Älä näytä (arkistoitu)', diff --git a/app/i18n/fr/sub.php b/app/i18n/fr/sub.php index 8008da0e6..3509e82fc 100644 --- a/app/i18n/fr/sub.php +++ b/app/i18n/fr/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => 'Ajouter avant le contenu existant', 'replace' => 'Remplacer le contenu existant', ), + 'content_retrieval' => 'Récupération de contenu', 'css_cookie' => 'Utiliser des cookies pour la réception du contenu des articles', 'css_cookie_help' => 'Exemple : <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', 'css_help' => 'Permet de récupérer les flux tronqués (attention, demande plus de temps !)', 'css_path' => 'Sélecteur CSS des articles sur le site d’origine', 'css_path_filter' => array( '_' => 'Sélecteur CSS des éléments à supprimer', - 'help' => 'Un sélecteur CSS peut être une liste comme : <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', + 'help' => 'Un sélecteur CSS peut être une liste comme : <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', ), 'description' => 'Description', // IGNORE 'empty' => 'Ce flux est vide. Veuillez vérifier qu’il est encore maintenu.', @@ -201,6 +202,7 @@ return array( 'no_selected' => 'Aucun flux sélectionné.', 'number_entries' => '%d articles', // IGNORE 'open_feed' => 'Ouvrir le flux %s', + 'path_entries_condition' => 'Condition pour la récupération de contenu', 'priority' => array( '_' => 'Visibilité', 'archived' => 'Ne pas afficher (archivé)', diff --git a/app/i18n/he/sub.php b/app/i18n/he/sub.php index 978f2bb0a..180fc6a0c 100644 --- a/app/i18n/he/sub.php +++ b/app/i18n/he/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => 'Add before existing content', // TODO 'replace' => 'Replace existing content', // TODO ), + 'content_retrieval' => 'Content retrieval', // TODO 'css_cookie' => 'Use Cookies when fetching the article content', // TODO 'css_cookie_help' => 'Example: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', // TODO 'css_help' => 'קבלת הזנות RSS קטומות (זהירות, לוקח זמן רב יותר!)', 'css_path' => 'נתיב הCSS של המאמר באתר המקורי', 'css_path_filter' => array( '_' => 'CSS selector of the elements to remove', // TODO - 'help' => 'A CSS selector may be a list such as: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', // TODO + 'help' => 'A CSS selector may be a list such as: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', // TODO ), 'description' => 'תיאור', 'empty' => 'הזנה זו ריקה. אנא ודאו שהיא עדיין מתוחזקת.', @@ -201,6 +202,7 @@ return array( 'no_selected' => 'אף הזנה לא נבחרה.', 'number_entries' => '%d מאמרים', 'open_feed' => 'Open feed %s', // TODO + 'path_entries_condition' => 'Condition for content retrieval', // TODO 'priority' => array( '_' => 'Visibility', // TODO 'archived' => 'Do not show (archived)', // TODO diff --git a/app/i18n/hu/sub.php b/app/i18n/hu/sub.php index 1c59379f5..d13abe9b5 100644 --- a/app/i18n/hu/sub.php +++ b/app/i18n/hu/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => 'Hozzáadás a létező tartalom elé', 'replace' => 'Cserélje ki a létező tartalmat', ), + 'content_retrieval' => 'Content retrieval', // TODO 'css_cookie' => 'Használjon sütiket a cikkek letöltésénél', 'css_cookie_help' => 'Példa: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', 'css_help' => 'Csonkított RSS hírforrások beszerzése (vigyázz, több időt igényel!)', 'css_path' => 'Cikk CSS selector az eredeti weblapon', 'css_path_filter' => array( '_' => 'A törlendő elemek CSS selectora', - 'help' => 'Egy CSS selector lehet egy lista például: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', + 'help' => 'Egy CSS selector lehet egy lista például: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', ), 'description' => 'Leírás', 'empty' => 'Ez a hírforrás üres. Ellenőrizd hogy van e tartalom rajta.', @@ -201,6 +202,7 @@ return array( 'no_selected' => 'Nincsen hírforrás kiválasztva.', 'number_entries' => '%d cikkek', 'open_feed' => 'Open feed %s', // TODO + 'path_entries_condition' => 'Condition for content retrieval', // TODO 'priority' => array( '_' => 'Láthatóság', 'archived' => 'Ne jelenjen meg (archivált)', diff --git a/app/i18n/id/sub.php b/app/i18n/id/sub.php index 3214beb58..bb0a24fc0 100644 --- a/app/i18n/id/sub.php +++ b/app/i18n/id/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => 'Add before existing content', // TODO 'replace' => 'Replace existing content', // TODO ), + 'content_retrieval' => 'Content retrieval', // TODO 'css_cookie' => 'Use Cookies when fetching the article content', // TODO 'css_cookie_help' => 'Example: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', // TODO 'css_help' => 'Retrieves truncated RSS feeds (caution, requires more time!)', // TODO 'css_path' => 'Article CSS selector on original website', // TODO 'css_path_filter' => array( '_' => 'CSS selector of the elements to remove', // TODO - 'help' => 'A CSS selector may be a list such as: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', // TODO + 'help' => 'A CSS selector may be a list such as: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', // TODO ), 'description' => 'Description', // TODO 'empty' => 'This feed is empty. Please verify that it is still maintained.', // TODO @@ -201,6 +202,7 @@ return array( 'no_selected' => 'No feed selected.', // TODO 'number_entries' => '%d articles', // TODO 'open_feed' => 'Open feed %s', // TODO + 'path_entries_condition' => 'Condition for content retrieval', // TODO 'priority' => array( '_' => 'Visibility', // TODO 'archived' => 'Do not show (archived)', // TODO diff --git a/app/i18n/it/sub.php b/app/i18n/it/sub.php index 06ff550e2..0ee8af3ba 100644 --- a/app/i18n/it/sub.php +++ b/app/i18n/it/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => 'Aggiungi prima del contenuto esistente', 'replace' => 'Rimpiazza il contenuto esistente', ), + 'content_retrieval' => 'Content retrieval', // TODO 'css_cookie' => 'Usa i cookie quando viene recuperato il contenuto di un articolo', 'css_cookie_help' => 'Esempio: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', 'css_help' => 'In caso di feed RSS troncati (attenzione, richiede molto tempo!)', 'css_path' => 'Percorso del foglio di stile CSS del sito di origine', 'css_path_filter' => array( '_' => 'Il selettore CSS degli elementi da rimuovere', - 'help' => 'Il selettore CSS potrebbe essere una lista, ad esempio: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', + 'help' => 'Il selettore CSS potrebbe essere una lista, ad esempio: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', ), 'description' => 'Descrizione', 'empty' => 'Questo feed non contiene articoli. Per favore verifica il sito direttamente.', @@ -201,6 +202,7 @@ return array( 'no_selected' => 'Nessun feed selezionato.', 'number_entries' => '%d articoli', 'open_feed' => 'Aprire il feed %s', + 'path_entries_condition' => 'Condition for content retrieval', // TODO 'priority' => array( '_' => 'Visibilità', 'archived' => 'Non mostrare (archiviato)', diff --git a/app/i18n/ja/sub.php b/app/i18n/ja/sub.php index 806f4d598..5a13934c9 100644 --- a/app/i18n/ja/sub.php +++ b/app/i18n/ja/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => '既に存在するコンテンツの前に追加する', 'replace' => '既に存在するコンテンツを置換する', ), + 'content_retrieval' => 'Content retrieval', // TODO 'css_cookie' => '記事のコンテンツを読み出したとき、クッキーを使用する', 'css_cookie_help' => '例: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', 'css_help' => '省略されたRSSフィードを復元します (ただし、時間がかかります)', 'css_path' => '元のWebサイトから記事を抽出するCSSセレクタ', 'css_path_filter' => array( '_' => '要素を削除するCSSセレクタ', - 'help' => 'CSSセレクタは次のようなリストです: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', + 'help' => 'CSSセレクタは次のようなリストです: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', ), 'description' => '説明', 'empty' => 'このフィードは空です。サイトが運営されているかどうかを確認してみてください。', @@ -201,6 +202,7 @@ return array( 'no_selected' => 'どのフィードも選択されていません', 'number_entries' => '%d 記事数', 'open_feed' => 'Open feed %s', // TODO + 'path_entries_condition' => 'Condition for content retrieval', // TODO 'priority' => array( '_' => '表示する場所', 'archived' => '非表示にする(アーカイブ)', diff --git a/app/i18n/ko/sub.php b/app/i18n/ko/sub.php index 164317fd5..bf8054ade 100644 --- a/app/i18n/ko/sub.php +++ b/app/i18n/ko/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => '이미 존재하는 콘텐츠 이전에 추가', 'replace' => '이미 존재하는 콘텐츠 대체', ), + 'content_retrieval' => 'Content retrieval', // TODO 'css_cookie' => '글 콘텐츠를 가져올 때 쿠키를 사용', 'css_cookie_help' => '예시: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', 'css_help' => '글의 일부가 포함된 RSS 피드를 가져옵니다 (주의, 시간이 좀 더 걸립니다!)', 'css_path' => '웹사이트 상의 글 본문에 해당하는 CSS 경로', 'css_path_filter' => array( '_' => '제거할 요소의 CSS 선택자', - 'help' => 'CSS 선택자는 다음과 같은 목록일 수 있습니다: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', + 'help' => 'CSS 선택자는 다음과 같은 목록일 수 있습니다: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', ), 'description' => '설명', 'empty' => '이 피드는 비어있습니다. 피드가 계속 운영되고 있는지 확인하세요.', @@ -201,6 +202,7 @@ return array( 'no_selected' => '선택된 피드가 없습니다.', 'number_entries' => '%d 개의 글', 'open_feed' => 'Open feed %s', // TODO + 'path_entries_condition' => 'Condition for content retrieval', // TODO 'priority' => array( '_' => '표시', 'archived' => '표시하지 않음 (보관됨)', diff --git a/app/i18n/lv/sub.php b/app/i18n/lv/sub.php index 1b074a8ee..bfeca7135 100644 --- a/app/i18n/lv/sub.php +++ b/app/i18n/lv/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => 'Pievienot pirms esošā satura', 'replace' => 'Aizstāt esošo saturu', ), + 'content_retrieval' => 'Content retrieval', // TODO 'css_cookie' => 'Lietot sīkfailus, kad tiek iegūts raksta saturs', 'css_cookie_help' => 'Piemērs: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', 'css_help' => 'Iegūst saīsinātas RSS plūsmas (uzmanību, prasa vairāk laika!)', 'css_path' => 'Raksta CSS selektors sākotnējā vietnē', 'css_path_filter' => array( '_' => 'Noņemamo elementu CSS selektors', - 'help' => 'CSS selektors var būt saraksts, piemēram.: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', + 'help' => 'CSS selektors var būt saraksts, piemēram.: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', ), 'description' => 'Apraksts', 'empty' => 'Šī barotne ir tukša. Lūdzu, pārbaudiet, vai tā joprojām tiek uzturēta.', @@ -201,6 +202,7 @@ return array( 'no_selected' => 'Barotne nav izvēlēta.', 'number_entries' => '%d raksti', 'open_feed' => 'Open feed %s', // TODO + 'path_entries_condition' => 'Condition for content retrieval', // TODO 'priority' => array( '_' => 'Prioritāte', 'archived' => 'Nerādīt (arhivēts)', diff --git a/app/i18n/nl/sub.php b/app/i18n/nl/sub.php index 2080fa33f..639d628de 100644 --- a/app/i18n/nl/sub.php +++ b/app/i18n/nl/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => 'Voor huidige inhoud toevoegen', 'replace' => 'Huidige inhoud vervangen', ), + 'content_retrieval' => 'Content retrieval', // TODO 'css_cookie' => 'Cookies gebruiken bij het ophalen van artikelinhoud', 'css_cookie_help' => 'Voorbeeld: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', 'css_help' => 'Haalt onvolledige RSS-feeds op (attentie, heeft meer tijd nodig!)', 'css_path' => 'CSS-pad van artikelen op originele website', 'css_path_filter' => array( '_' => 'CSS selector van de elementen om te verwijderen', - 'help' => 'Een CSS selector kan een lijst zijn, zoals: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', + 'help' => 'Een CSS selector kan een lijst zijn, zoals: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', ), 'description' => 'Omschrijving', 'empty' => 'Deze feed is leeg. Controleer of deze nog actueel is.', @@ -201,6 +202,7 @@ return array( 'no_selected' => 'Geen feed geselecteerd.', 'number_entries' => '%d artikelen', 'open_feed' => 'Open feed %s', // TODO + 'path_entries_condition' => 'Condition for content retrieval', // TODO 'priority' => array( '_' => 'Zichtbaarheid', 'archived' => 'Niet weergeven (gearchiveerd)', diff --git a/app/i18n/oc/sub.php b/app/i18n/oc/sub.php index 5acd97e20..f4d33a83d 100644 --- a/app/i18n/oc/sub.php +++ b/app/i18n/oc/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => 'Apondre abans lo contengut existent', 'replace' => 'Remplaçar lo contengut existent', ), + 'content_retrieval' => 'Content retrieval', // TODO 'css_cookie' => 'Utilizar los cookies en recuperant lo contengut de l’article', 'css_cookie_help' => 'Exemple : <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', 'css_help' => 'Permet de recuperar los fluxes troncats (atencion, demanda mai de temps !)', 'css_path' => 'Selector CSS dels articles sul site d’origina', 'css_path_filter' => array( '_' => 'Selector CSS de l’element de tirar', - 'help' => 'Un selector CSS pòt èsser una lista coma : <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', + 'help' => 'Un selector CSS pòt èsser una lista coma : <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', ), 'description' => 'Descripcion', // IGNORE 'empty' => 'Aqueste flux es void. Assegurats-vos qu’es totjorn mantengut.', @@ -201,6 +202,7 @@ return array( 'no_selected' => 'Cap de flux pas seleccionat.', 'number_entries' => '%d articles', // IGNORE 'open_feed' => 'Open feed %s', // TODO + 'path_entries_condition' => 'Condition for content retrieval', // TODO 'priority' => array( '_' => 'Visibilitat', 'archived' => 'Mostrar pas (archivat)', diff --git a/app/i18n/pl/sub.php b/app/i18n/pl/sub.php index d96e6378e..53875b8c8 100644 --- a/app/i18n/pl/sub.php +++ b/app/i18n/pl/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => 'Umieść przed treścią z kanału', 'replace' => 'Zastąp treść z kanału', ), + 'content_retrieval' => 'Content retrieval', // TODO 'css_cookie' => 'Użyj plików cookie podczas pobierania wiadomości', 'css_cookie_help' => 'Przykład: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', 'css_help' => 'Pozwala na ograniczenie zawartości kanałów (uwaga, wymaga więcej czasu!)', 'css_path' => 'Selektor CSS dla wiadomości na pierwotnej stronie', 'css_path_filter' => array( '_' => 'Selektor CSS elementów do usunięcia', - 'help' => 'Selector CSS może być listą, na przykład: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', + 'help' => 'Selector CSS może być listą, na przykład: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', ), 'description' => 'Opis', 'empty' => 'Ten kanał jest pusty. Należy sprawdzić czy kanał w dalszym ciągu działa.', @@ -201,6 +202,7 @@ return array( 'no_selected' => 'Brak kanałów.', 'number_entries' => '%d wiadomości', 'open_feed' => 'Open feed %s', // TODO + 'path_entries_condition' => 'Condition for content retrieval', // TODO 'priority' => array( '_' => 'Widoczność', 'archived' => 'Nie pokazuj (zarchiwizowany)', diff --git a/app/i18n/pt-br/sub.php b/app/i18n/pt-br/sub.php index 4ab45eef2..1d13a8d42 100644 --- a/app/i18n/pt-br/sub.php +++ b/app/i18n/pt-br/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => 'Adicionar antes do conteúdo existente', 'replace' => 'Substituir o conteúdo existente', ), + 'content_retrieval' => 'Content retrieval', // TODO 'css_cookie' => 'Usar cookies ao buscar pelo conteúdo de artigos', 'css_cookie_help' => 'Exemplo: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', 'css_help' => 'Retorna RSS feeds truncados (atenção, requer mais tempo!)', 'css_path' => 'Caminho do CSS do artigo no site original', 'css_path_filter' => array( '_' => 'Seletor CSS dos elementos a serem removidos', - 'help' => 'O seletor CSS pode ser uma lista com: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', + 'help' => 'O seletor CSS pode ser uma lista com: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', ), 'description' => 'Descrição', 'empty' => 'Este feed está vazio. Por favor verifique ele ainda é mantido.', @@ -201,6 +202,7 @@ return array( 'no_selected' => 'Nenhum feed selecionado.', 'number_entries' => '%d artigos', 'open_feed' => 'Open feed %s', // TODO + 'path_entries_condition' => 'Condition for content retrieval', // TODO 'priority' => array( '_' => 'Visibilidade', 'archived' => 'Não exibir (arquivado)', diff --git a/app/i18n/ru/sub.php b/app/i18n/ru/sub.php index dd5cf42c8..21ed3a66d 100644 --- a/app/i18n/ru/sub.php +++ b/app/i18n/ru/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => 'Добавить перед существующим содержимым', 'replace' => 'Заменить существующее содержимое', ), + 'content_retrieval' => 'Content retrieval', // TODO 'css_cookie' => 'Использовать куки при извлечении содержимого статьи', 'css_cookie_help' => 'Пример: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', 'css_help' => 'Получает усечённые RSS-ленты (осторожно, требует больше времени!)', 'css_path' => 'CSS селектор статьи на сайте', 'css_path_filter' => array( '_' => 'CSS селектор элемента для удаления', - 'help' => 'CSS селектор может быть списком как: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', + 'help' => 'CSS селектор может быть списком как: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', ), 'description' => 'Описание', 'empty' => 'Лента пустая. Пожалуйста, убедитесь, что её до сих пор обслуживают.', @@ -201,6 +202,7 @@ return array( 'no_selected' => 'Ленты не выбраны.', 'number_entries' => '%d статей', 'open_feed' => 'Open feed %s', // TODO + 'path_entries_condition' => 'Condition for content retrieval', // TODO 'priority' => array( '_' => 'Видимость', 'archived' => 'Не показывать (архивировано)', diff --git a/app/i18n/sk/sub.php b/app/i18n/sk/sub.php index 5783a5a96..2bbb9d5fe 100644 --- a/app/i18n/sk/sub.php +++ b/app/i18n/sk/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => 'Pridať pred existujúci obsah', 'replace' => 'Nahradiť existujúci obsh', ), + 'content_retrieval' => 'Content retrieval', // TODO 'css_cookie' => 'Pri sťahovaní obsahu článku použiť cookies', 'css_cookie_help' => 'Príklad: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', 'css_help' => 'Stiahnuť skrátenú verziu RSS kanála (pozor, vyžaduje viac času!)', 'css_path' => 'Pôvodný CSS súbor článku z webovej stránky', 'css_path_filter' => array( '_' => 'CSS selektor elementu na odstránenie', - 'help' => 'CSS selektor môže byť zoznam ako: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', + 'help' => 'CSS selektor môže byť zoznam ako: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', ), 'description' => 'Popis', 'empty' => 'Tento kanál je prázdny. Overte, prosím, či je ešte spravovaný autorom.', @@ -201,6 +202,7 @@ return array( 'no_selected' => 'Nevybrali ste kanál.', 'number_entries' => 'Počet článkov: %d', 'open_feed' => 'Open feed %s', // TODO + 'path_entries_condition' => 'Condition for content retrieval', // TODO 'priority' => array( '_' => 'Viditeľnosť', 'archived' => 'Nezobrazovať (archivované)', diff --git a/app/i18n/tr/sub.php b/app/i18n/tr/sub.php index 7f38f7b4a..8822e43fe 100644 --- a/app/i18n/tr/sub.php +++ b/app/i18n/tr/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => 'Mevcut içeriğin öncesine ekle', 'replace' => 'Mevcut içerikle değiştir', ), + 'content_retrieval' => 'Content retrieval', // TODO 'css_cookie' => 'Makale içeriğini yüklerken çerez kullan', 'css_cookie_help' => 'Örnek: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', 'css_help' => 'Dikkat, daha çok zaman gerekir!', 'css_path' => 'Makaleleri kendi CSS görünümü ile göster', 'css_path_filter' => array( '_' => 'Kaldırılacak elemana ait CSS seçicisi', - 'help' => 'CSS seçicisi şu şekilde olabilir: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', + 'help' => 'CSS seçicisi şu şekilde olabilir: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', ), 'description' => 'Tanım', 'empty' => 'Bu akış boş. Lütfen akışın aktif olduğuna emin olun.', @@ -201,6 +202,7 @@ return array( 'no_selected' => 'Hiçbir akış seçilmedi.', 'number_entries' => '%d makale', 'open_feed' => '%s akışını aç', + 'path_entries_condition' => 'Condition for content retrieval', // TODO 'priority' => array( '_' => 'Görünürlük', 'archived' => 'Gösterme (arşivlenmiş)', diff --git a/app/i18n/zh-cn/sub.php b/app/i18n/zh-cn/sub.php index 873c49447..ca27d722c 100644 --- a/app/i18n/zh-cn/sub.php +++ b/app/i18n/zh-cn/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => '添加在现有内容前部', 'replace' => '替换现有内容', ), + 'content_retrieval' => 'Content retrieval', // TODO 'css_cookie' => '获取原文时的 Cookies', 'css_cookie_help' => '例:<kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', 'css_help' => '用于获取全文(注意,这将耗费更多时间!)', 'css_path' => '原文的 CSS 选择器', 'css_path_filter' => array( '_' => '需移除元素的 CSS 选择器', - 'help' => '可设置多个 CSS 选择器,例如:<kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', + 'help' => '可设置多个 CSS 选择器,例如:<kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', ), 'description' => '描述', 'empty' => '此源为空。请确认它是否正常更新。', @@ -201,6 +202,7 @@ return array( 'no_selected' => '未选择订阅源', 'number_entries' => '%d 篇文章', 'open_feed' => 'Open feed %s', // TODO + 'path_entries_condition' => 'Condition for content retrieval', // TODO 'priority' => array( '_' => '可见性', 'archived' => '不显示(归档)', diff --git a/app/i18n/zh-tw/sub.php b/app/i18n/zh-tw/sub.php index fa55ebd54..15f9a41eb 100644 --- a/app/i18n/zh-tw/sub.php +++ b/app/i18n/zh-tw/sub.php @@ -57,13 +57,14 @@ return array( 'prepend' => '添加在現有內容前部', 'replace' => '替換現有內容', ), + 'content_retrieval' => 'Content retrieval', // TODO 'css_cookie' => '獲取原文時的 Cookies', 'css_cookie_help' => '例:<kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', 'css_help' => '用於獲取全文(注意,這將耗費更多時間!)', 'css_path' => '原文的 CSS 選擇器', 'css_path_filter' => array( '_' => '需移除元素的 CSS 選擇器', - 'help' => '可設置多個 CSS 選擇器,例如:<kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', + 'help' => '可設置多個 CSS 選擇器,例如:<kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', ), 'description' => '描述', 'empty' => '此源為空。請確認它是否正常更新。', @@ -201,6 +202,7 @@ return array( 'no_selected' => '未選擇訂閱源', 'number_entries' => '%d 篇文章', 'open_feed' => 'Open feed %s', // TODO + 'path_entries_condition' => 'Condition for content retrieval', // TODO 'priority' => array( '_' => '可見性', 'archived' => '不顯示(歸檔)', diff --git a/app/views/helpers/feed/update.phtml b/app/views/helpers/feed/update.phtml index b6ae16f34..f58d46d0f 100644 --- a/app/views/helpers/feed/update.phtml +++ b/app/views/helpers/feed/update.phtml @@ -265,7 +265,8 @@ <div class="form-group"> <label class="group-name" for="filteractions_read"><?= _t('conf.reading.read.when') ?></label> <div class="group-controls"> - <textarea name="filteractions_read" id="filteractions_read" class="w100"><?php + <textarea name="filteractions_read" id="filteractions_read" class="w100" + placeholder="<?= _t('gen.short.blank_to_disable') ?>"><?php foreach ($this->feed->filtersAction('read') as $filterRead) { echo $filterRead->getRawInput(), PHP_EOL; } @@ -646,7 +647,7 @@ </fieldset> <fieldset> - <legend><?= _t('sub.feed.advanced') ?></legend> + <legend><?= _t('sub.feed.content_retrieval') ?></legend> <div class="form-group"> <label class="group-name" for="path_entries"><?= _t('sub.feed.css_path') ?></label> <div class="group-controls"> @@ -661,6 +662,22 @@ </div> <div class="form-group"> + <label class="group-name" for="path_entries_condition"><?= _t('sub.feed.path_entries_condition') ?></label> + <div class="group-controls"> + <textarea class="w100" id="path_entries_condition" name="path_entries_condition" + rows="3" cols="64" spellcheck="false" placeholder="<?= _t('gen.short.blank_to_disable') ?>"><?php + foreach ($this->feed->attributeArray('path_entries_condition') ?? [] as $condition) { + echo htmlspecialchars($condition, ENT_NOQUOTES, 'UTF-8'), PHP_EOL; + } + ?></textarea> + <p class="help"><?= _i('help') ?> <?= _t('sub.feed.filteractions.help') ?></p> + </div> + </div> + </fieldset> + + <fieldset> + <legend><?= _t('sub.feed.advanced') ?></legend> + <div class="form-group"> <?php $path_entries_filter = Minz_Helper::htmlspecialchars_utf8($this->feed->attributeString('path_entries_filter') ?? ''); ?> |
