mirror of
https://github.com/FreshRSS/FreshRSS.git
synced 2025-12-24 05:57:45 -05:00
Option to show user labels instead of tags in RSS share (#8112)
* Option to show user labels instead of tags in RSS share fix https://github.com/FreshRSS/FreshRSS/discussions/8108#discussioncomment-14668813 <img width="711" height="182" alt="image" src="https://github.com/user-attachments/assets/8effb2cd-fffb-4f00-b628-54e963e8b2dc" />
This commit is contained in:
committed by
GitHub
parent
faaa770bc0
commit
b7bd18148e
@@ -238,7 +238,7 @@ Voir le [dépôt dédié à ces extensions](https://github.com/FreshRSS/Extensio
|
||||
| עברית (he) | ■■■■・・・・・・ 45% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhe+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Magyar (hu) | ■■■■■■■■■・ 98% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhu+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Bahasa Indonesia (id) | ■■■■■■■■■・ 96% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fid+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Italiano (it) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fit+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Italiano (it) | ■■■■■■■■■・ 99% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fit+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| 日本語 (ja) | ■■■■■■■■■・ 94% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fja+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| 한국어 (ko) | ■■■■■■■■・・ 88% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fko+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Latviešu (lv) | ■■■■■■■■・・ 82% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Flv+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
@@ -248,8 +248,8 @@ Voir le [dépôt dédié à ces extensions](https://github.com/FreshRSS/Extensio
|
||||
| Português (Brasil) (pt-BR) | ■■■■■■■■・・ 87% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-BR+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Português (Portugal) (pt-PT) | ■■■■■■■■・・ 87% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-PT+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Русский (ru) | ■■■■■■■■・・ 88% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fru+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Slovenčina (sk) | ■■■■■■■■・・ 88% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fsk+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Türkçe (tr) | ■■■■■■■■■・ 96% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ftr+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Slovenčina (sk) | ■■■■■■■■・・ 87% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fsk+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Türkçe (tr) | ■■■■■■■■■・ 95% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ftr+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Українська (uk) | ■■■■■■■■■・ 98% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fuk+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| 简体中文 (zh-CN) | ■■■■■■■■・・ 89% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-CN+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| 正體中文 (zh-TW) | ■■■■■■■■・・ 88% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-TW+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
|
||||
@@ -134,7 +134,7 @@ See the [repository dedicated to those extensions](https://github.com/FreshRSS/E
|
||||
| עברית (he) | ■■■■・・・・・・ 45% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhe+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Magyar (hu) | ■■■■■■■■■・ 98% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhu+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Bahasa Indonesia (id) | ■■■■■■■■■・ 96% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fid+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Italiano (it) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fit+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Italiano (it) | ■■■■■■■■■・ 99% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fit+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| 日本語 (ja) | ■■■■■■■■■・ 94% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fja+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| 한국어 (ko) | ■■■■■■■■・・ 88% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fko+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Latviešu (lv) | ■■■■■■■■・・ 82% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Flv+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
@@ -144,8 +144,8 @@ See the [repository dedicated to those extensions](https://github.com/FreshRSS/E
|
||||
| Português (Brasil) (pt-BR) | ■■■■■■■■・・ 87% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-BR+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Português (Portugal) (pt-PT) | ■■■■■■■■・・ 87% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-PT+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Русский (ru) | ■■■■■■■■・・ 88% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fru+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Slovenčina (sk) | ■■■■■■■■・・ 88% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fsk+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Türkçe (tr) | ■■■■■■■■■・ 96% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ftr+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Slovenčina (sk) | ■■■■■■■■・・ 87% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fsk+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Türkçe (tr) | ■■■■■■■■■・ 95% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ftr+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Українська (uk) | ■■■■■■■■■・ 98% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fuk+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| 简体中文 (zh-CN) | ■■■■■■■■・・ 89% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-CN+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| 正體中文 (zh-TW) | ■■■■■■■■・・ 88% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-TW+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
|
||||
@@ -458,6 +458,9 @@ class FreshRSS_configure_Controller extends FreshRSS_ActionController {
|
||||
if (!empty($params['shareRss']) && ctype_digit($params['shareRss'])) {
|
||||
$queryParams['shareRss'] = (bool)$params['shareRss'];
|
||||
}
|
||||
if (!empty($params['publishLabelsInsteadOfTags']) && ctype_digit($params['publishLabelsInsteadOfTags'])) {
|
||||
$queryParams['publishLabelsInsteadOfTags'] = (bool)$params['publishLabelsInsteadOfTags'];
|
||||
}
|
||||
|
||||
$queries = FreshRSS_Context::userConf()->queries;
|
||||
$queries[$id] = (new FreshRSS_UserQuery($queryParams, FreshRSS_Context::categories(), FreshRSS_Context::labels()))->toArray();
|
||||
@@ -518,7 +521,7 @@ class FreshRSS_configure_Controller extends FreshRSS_ActionController {
|
||||
$params = array_filter($_GET, 'is_string', ARRAY_FILTER_USE_KEY);
|
||||
unset($params['name']);
|
||||
unset($params['rid']);
|
||||
/** @var array{get?:string,name?:string,order?:string,search?:string,state?:int,url?:string,token?:string,shareRss?:bool,shareOpml?:bool,description?:string,imageUrl?:string} $params */
|
||||
/** @var array{get?:string,name?:string,order?:string,search?:string,state?:int,url?:string,token?:string,shareRss?:bool,shareOpml?:bool,publishLabelsInsteadOfTags?:bool,description?:string,imageUrl?:string} $params */
|
||||
$params['url'] = Minz_Url::display(['params' => $params]);
|
||||
$params['name'] = _t('conf.query.number', count($queries) + 1);
|
||||
$queries[] = (new FreshRSS_UserQuery($params, FreshRSS_Context::categories(), FreshRSS_Context::labels()))->toArray();
|
||||
|
||||
@@ -21,6 +21,7 @@ class FreshRSS_UserQuery {
|
||||
private string $token = '';
|
||||
private bool $shareRss = false;
|
||||
private bool $shareOpml = false;
|
||||
private bool $publishLabelsInsteadOfTags = false;
|
||||
/** @var array<int,FreshRSS_Category> $categories where the key is the category ID */
|
||||
private array $categories;
|
||||
/** @var array<int,FreshRSS_Tag> $labels where the key is the label ID */
|
||||
@@ -43,7 +44,7 @@ class FreshRSS_UserQuery {
|
||||
|
||||
/**
|
||||
* @param array{get?:string,name?:string,order?:string,search?:string,state?:int,url?:string,token?:string,
|
||||
* shareRss?:bool,shareOpml?:bool,description?:string,imageUrl?:string} $query
|
||||
* shareRss?:bool,shareOpml?:bool,publishLabelsInsteadOfTags?:bool,description?:string,imageUrl?:string} $query
|
||||
* @param array<FreshRSS_Category> $categories
|
||||
* @param array<FreshRSS_Tag> $labels
|
||||
*/
|
||||
@@ -75,6 +76,7 @@ class FreshRSS_UserQuery {
|
||||
unset($link['name']);
|
||||
unset($link['shareOpml']);
|
||||
unset($link['shareRss']);
|
||||
unset($link['publishLabelsInsteadOfTags']);
|
||||
$this->url = Minz_Url::display(['params' => $link]);
|
||||
}
|
||||
} else {
|
||||
@@ -92,6 +94,9 @@ class FreshRSS_UserQuery {
|
||||
if (isset($query['shareOpml'])) {
|
||||
$this->shareOpml = $query['shareOpml'];
|
||||
}
|
||||
if (isset($query['publishLabelsInsteadOfTags'])) {
|
||||
$this->publishLabelsInsteadOfTags = (bool)$query['publishLabelsInsteadOfTags'];
|
||||
}
|
||||
if (isset($query['description'])) {
|
||||
$this->description = $query['description'];
|
||||
}
|
||||
@@ -109,7 +114,9 @@ class FreshRSS_UserQuery {
|
||||
/**
|
||||
* Convert the current object to an array.
|
||||
*
|
||||
* @return array{'get'?:string,'name'?:string,'order'?:string,'search'?:string,'state'?:int,'url'?:string,'token'?:string}
|
||||
* @return array{get?:string,name?:string,order?:string,search?:string,
|
||||
* state?:int,url?:string,token?:string,shareRss?:bool,shareOpml?:bool,
|
||||
* publishLabelsInsteadOfTags?:bool,description?:string,imageUrl?:string}
|
||||
*/
|
||||
public function toArray(): array {
|
||||
return array_filter([
|
||||
@@ -122,6 +129,7 @@ class FreshRSS_UserQuery {
|
||||
'token' => $this->token,
|
||||
'shareRss' => $this->shareRss,
|
||||
'shareOpml' => $this->shareOpml,
|
||||
'publishLabelsInsteadOfTags' => $this->publishLabelsInsteadOfTags,
|
||||
'description' => $this->description,
|
||||
'imageUrl' => $this->imageUrl,
|
||||
], fn($v): bool => $v !== '' && $v !== 0 && $v !== false);
|
||||
@@ -279,6 +287,14 @@ class FreshRSS_UserQuery {
|
||||
return $this->shareOpml;
|
||||
}
|
||||
|
||||
public function setPublishLabelsInsteadOfTags(bool $publishLabelsInsteadOfTags): void {
|
||||
$this->publishLabelsInsteadOfTags = $publishLabelsInsteadOfTags;
|
||||
}
|
||||
|
||||
public function publishLabelsInsteadOfTags(): bool {
|
||||
return $this->publishLabelsInsteadOfTags;
|
||||
}
|
||||
|
||||
protected function sharedUrl(bool $xmlEscaped = true): string {
|
||||
$currentUser = Minz_User::name() ?? '';
|
||||
return Minz_Url::display("/api/query.php?user={$currentUser}&t={$this->token}", $xmlEscaped ? 'html' : '', true);
|
||||
|
||||
@@ -78,7 +78,7 @@ class FreshRSS_View extends Minz_View {
|
||||
// Export / Import
|
||||
public string $content;
|
||||
/** @var array<string,array<string>> */
|
||||
public array $entryIdsTagNames;
|
||||
public array $entryIdsTagNames = [];
|
||||
public string $list_title;
|
||||
public int $queryId;
|
||||
public string $type;
|
||||
@@ -111,6 +111,7 @@ class FreshRSS_View extends Minz_View {
|
||||
public bool $internal_rendering = false;
|
||||
public string $description = '';
|
||||
public string $image_url = '';
|
||||
public bool $publishLabelsInsteadOfTags = false;
|
||||
|
||||
// Content preview
|
||||
public string $fatalError;
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => 'Zobrazit podle kategorie',
|
||||
'feeds' => 'Zobrazit podle kanálu',
|
||||
'order' => 'Seřadit podle data',
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => 'Výraz',
|
||||
'shareOpml' => 'Povolit sdílení příslušných kategorií a kanálů pomocí OPML',
|
||||
'shareRss' => 'Povolit sdílení pomocí HTML & RSS',
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => 'Nach Kategorie filtern',
|
||||
'feeds' => 'Nach Feed filtern',
|
||||
'order' => 'Nach Datum sortieren',
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => 'Suchbegriff',
|
||||
'shareOpml' => 'Teilen via OPML mit zugehörigen Kategorien und Feeds aktivieren',
|
||||
'shareRss' => 'Teilen via HTML & RSS aktivieren',
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => 'Display by category', // TODO
|
||||
'feeds' => 'Display by feed', // TODO
|
||||
'order' => 'Sort by date', // TODO
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => 'Expression', // TODO
|
||||
'shareOpml' => 'Enable sharing by OPML of corresponding categories and feeds', // TODO
|
||||
'shareRss' => 'Enable sharing by HTML & RSS', // TODO
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => 'Display by category', // IGNORE
|
||||
'feeds' => 'Display by feed', // IGNORE
|
||||
'order' => 'Sort by date', // IGNORE
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // IGNORE
|
||||
'search' => 'Expression', // IGNORE
|
||||
'shareOpml' => 'Enable sharing by OPML of corresponding categories and feeds', // IGNORE
|
||||
'shareRss' => 'Enable sharing by HTML & RSS', // IGNORE
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => 'Display by category',
|
||||
'feeds' => 'Display by feed',
|
||||
'order' => 'Sort by date',
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS',
|
||||
'search' => 'Expression',
|
||||
'shareOpml' => 'Enable sharing by OPML of corresponding categories and feeds',
|
||||
'shareRss' => 'Enable sharing by HTML & RSS',
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => 'Mostrar por categoría',
|
||||
'feeds' => 'Mostrar por fuente',
|
||||
'order' => 'Ordenar por fecha',
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => 'Expresión',
|
||||
'shareOpml' => 'Permitir que OPML comparta las categorías y fuentes correspondientes',
|
||||
'shareRss' => 'Permite compartir por HTML & RSS',
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => ' نمایش بر اساس دسته بندی',
|
||||
'feeds' => ' نمایش با فید',
|
||||
'order' => ' مرتب سازی بر اساس تاریخ',
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => ' بیان',
|
||||
'shareOpml' => 'فعالسازی اشتراکگذاری دستهها و فیدهای مربوطه با OPML',
|
||||
'shareRss' => 'اشتراکگذاری RSS',
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => 'Näytä luokan mukaan',
|
||||
'feeds' => 'Näytä syötteen mukaan',
|
||||
'order' => 'Lajittele päivämäärän mukaan',
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => 'Lauseke',
|
||||
'shareOpml' => 'Jaa kyselyä vastaavat luokat ja syötteet OPML-muodossa',
|
||||
'shareRss' => 'Jaa HTML & RSS -muodossa',
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => 'Afficher par catégorie',
|
||||
'feeds' => 'Afficher par flux',
|
||||
'order' => 'Tri par date',
|
||||
'publish_labels_instead_of_tags' => 'Remplacer les <i>tags des flux</i> par les <i>étiquettes d’utilisateur</i> dans le RSS partagé',
|
||||
'search' => 'Expression', // IGNORE
|
||||
'shareOpml' => 'Active le partage par OPML des catégories et flux correspondants',
|
||||
'shareRss' => 'Active le partage par HTML & RSS',
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => 'Display by category', // TODO
|
||||
'feeds' => 'Display by feed', // TODO
|
||||
'order' => 'Sort by date', // TODO
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => 'Expression', // TODO
|
||||
'shareOpml' => 'Enable sharing by OPML of corresponding categories and feeds', // TODO
|
||||
'shareRss' => 'Enable sharing by HTML & RSS', // TODO
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => 'Rendezés kategória szerint',
|
||||
'feeds' => 'Rendezés hírforrás szerint',
|
||||
'order' => 'Rendezés dátum szerint',
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => 'Kifejezés',
|
||||
'shareOpml' => 'Engedélyezze a megfelelő kategóriák és hírcsatornák OPML-alapú megosztását',
|
||||
'shareRss' => 'Engedélyezze a HTML & RSS megosztást',
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => 'Tampilkan berdasarkan kategori',
|
||||
'feeds' => 'Tampilkan berdasarkan umpan',
|
||||
'order' => 'Urutkan berdasarkan tanggal',
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => 'Ekspresi Pencarian',
|
||||
'shareOpml' => 'Aktifkan berbagi melalui OPML dari kategori dan umpan terkait',
|
||||
'shareRss' => 'Aktifkan berbagi melalui HTML & RSS',
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => 'Mostra per categoria',
|
||||
'feeds' => 'Mostra per feed',
|
||||
'order' => 'Ordina per data',
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => 'Espressione',
|
||||
'shareOpml' => 'Abilita la condivisione di OPML di categorie e feed corrispondenti',
|
||||
'shareRss' => 'Abilita la condivisione di HTML & RSS',
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => 'カテゴリごとに表示する',
|
||||
'feeds' => 'フィードごとに表示する',
|
||||
'order' => '日付ごとにソートする',
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => '式',
|
||||
'shareOpml' => 'カテゴリとフィードのOPMLによる共有を有効にする',
|
||||
'shareRss' => 'HTMLとRSSによる共有を有効にする',
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => '카테고리별로 표시',
|
||||
'feeds' => '피드별로 표시',
|
||||
'order' => '날짜순으로 정렬',
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => '정규 표현식',
|
||||
'shareOpml' => '해당 카테고리와 피드에 대한 OPML 공유 활성화',
|
||||
'shareRss' => 'HTML 및 RSS 공유 활성화',
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => 'Rādīt pēc kategorijas',
|
||||
'feeds' => 'Rādīt pēc barotnes',
|
||||
'order' => 'Kārtot pēc datuma',
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => 'Izteiksme',
|
||||
'shareOpml' => 'Enable sharing by OPML of corresponding categories and feeds', // TODO
|
||||
'shareRss' => 'Enable sharing by HTML & RSS', // TODO
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => 'Weergeven op categorie',
|
||||
'feeds' => 'Weergeven op feed',
|
||||
'order' => 'Sorteren op datum',
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => 'Expressie',
|
||||
'shareOpml' => 'Via OPML delen van bijbehorende categorieën en feeds aanzetten',
|
||||
'shareRss' => 'Via HTML & RSS delen aanzetten',
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => 'Afichatge per categoria',
|
||||
'feeds' => 'Afichatge per flux',
|
||||
'order' => 'Triar per data',
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => 'Expression', // IGNORE
|
||||
'shareOpml' => 'Enable sharing by OPML of corresponding categories and feeds', // TODO
|
||||
'shareRss' => 'Enable sharing by HTML & RSS', // TODO
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => 'Według kategorii',
|
||||
'feeds' => 'Według kanału',
|
||||
'order' => 'Sortowanie wg daty',
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => 'Wyrażenie',
|
||||
'shareOpml' => 'Włącz udostępnianie OPML-ów zawierających kategorie i kanały',
|
||||
'shareRss' => 'Włącz udostępnianie przez HTML i RSS',
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => 'Exibir por categoria',
|
||||
'feeds' => 'Exibir por feed',
|
||||
'order' => 'Ordenar por data',
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => 'Expressão',
|
||||
'shareOpml' => 'Habilita o compartilhamento por OPML de categorias e feeds correspondentes',
|
||||
'shareRss' => 'Habilita o compartilhamento por HTML & RSS',
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => 'Mostrar por categoria',
|
||||
'feeds' => 'Mostrar por feed',
|
||||
'order' => 'Ordenar por data',
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => 'Expressão',
|
||||
'shareOpml' => 'Activa a partilha por OPML de categorias e feeds correspondentes',
|
||||
'shareRss' => 'Activa o partilha por HTML & RSS',
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => 'Отображение по категории',
|
||||
'feeds' => 'Отображение по ленте',
|
||||
'order' => 'Сортировать по дате',
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => 'Выражение',
|
||||
'shareOpml' => 'Включить общий доступ с помощью OPML к соответствующим категориям и лентам',
|
||||
'shareRss' => 'Включить общий доступ с помощью HTML & RSS',
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => 'Zobraziť podľa kategórie',
|
||||
'feeds' => 'Zobraziť podľa kanála',
|
||||
'order' => 'Zobraziť podľa dátumu',
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => 'Výraz',
|
||||
'shareOpml' => 'Povoliť zdieľanie prostredníctvom OPML zodpovedajúdich kategórií a kanálov',
|
||||
'shareRss' => 'Povoliť zdieľanie prostredníctvom HTML & RSS',
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => 'Kategoriye göre göster',
|
||||
'feeds' => 'Beslemeye göre göster',
|
||||
'order' => 'Tarihe göre sırala',
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => 'İfade',
|
||||
'shareOpml' => 'İlgili kategori ve beslemelerin OPML ile paylaşımını etkinleştir',
|
||||
'shareRss' => 'HTML ve RSS ile paylaşımı etkinleştir',
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => 'Показати категорію',
|
||||
'feeds' => 'Показати стрічку',
|
||||
'order' => 'Впорядкувати за датою',
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => 'Вираз',
|
||||
'shareOpml' => 'Увімкнути OPML-поширення відповідних категорій і стрічок',
|
||||
'shareRss' => 'Увімкнути поширення в форматі HTML і RSS',
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => '按分类显示',
|
||||
'feeds' => '按订阅源显示',
|
||||
'order' => '按日期排序',
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => '表达式',
|
||||
'shareOpml' => '启用相应类别和 feed 的 OPML 分享',
|
||||
'shareRss' => '启用 HTML 和 RSS 分享',
|
||||
|
||||
@@ -152,6 +152,7 @@ return array(
|
||||
'categories' => '按分類顯示',
|
||||
'feeds' => '按訂閱源顯示',
|
||||
'order' => '按日期排序',
|
||||
'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS', // TODO
|
||||
'search' => '表達式',
|
||||
'shareOpml' => '啟用透過對應類別和源的OPML分享',
|
||||
'shareRss' => '啟用透過HTML分享 & RSS',
|
||||
|
||||
@@ -46,9 +46,13 @@
|
||||
<?php if ($this->query->sharedUrlRss() !== ''): ?>
|
||||
<ul>
|
||||
<li><a href="<?= $this->query->sharedUrlHtml() ?>"><?= _i('link') ?> <?= _t('conf.query.share.html') ?></a></li>
|
||||
<li><a href="<?= $this->query->sharedUrlRss() ?>"><?= _i('link') ?> <?= _t('conf.query.share.rss') ?></a></li>
|
||||
<li><a href="<?= $this->query->sharedUrlGreader() ?>"><?= _i('link') ?> <?= _t('conf.query.share.greader') ?></a></li>
|
||||
<li><a href="<?= $this->query->sharedUrlRss() ?>"><?= _i('link') ?> <?= _t('conf.query.share.rss') ?></a></li>
|
||||
</ul>
|
||||
<label class="checkbox" for="publishLabelsInsteadOfTags">
|
||||
<input type="checkbox" name="query[publishLabelsInsteadOfTags]" id="publishLabelsInsteadOfTags" value="1" <?= $this->query->publishLabelsInsteadOfTags() ? 'checked="checked"' : ''?> />
|
||||
<?= _t('conf.query.filter.publish_labels_instead_of_tags') ?>
|
||||
</label>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class="group-controls">
|
||||
|
||||
@@ -39,14 +39,24 @@ foreach ($this->entries as $item) {
|
||||
echo "\t\t\t", '<dc:creator>', $author, '</dc:creator>', "\n";
|
||||
}
|
||||
}
|
||||
$categories = $item->tags();
|
||||
if (is_array($categories)) {
|
||||
foreach ($categories as $category) {
|
||||
echo "\t\t\t", '<category>', $category, '</category>', "\n";
|
||||
|
||||
if ($this->publishLabelsInsteadOfTags) {
|
||||
$categories = $this->entryIdsTagNames['e_' . $item->id()] ?? [];
|
||||
if (is_array($categories)) {
|
||||
foreach ($categories as $category) {
|
||||
echo "\t\t\t", '<category>', $category, '</category>', "\n";
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$categories = $item->tags();
|
||||
if (is_array($categories)) {
|
||||
foreach ($categories as $category) {
|
||||
echo "\t\t\t", '<category>', $category, '</category>', "\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$enclosures = iterator_to_array($item->enclosures(false)); // TODO: Optimise: avoid iterator_to_array if possible
|
||||
$enclosures = iterator_to_array($item->enclosures(false), preserve_keys: false); // TODO: Optimise: avoid iterator_to_array if possible
|
||||
$thumbnail = $item->thumbnail(false);
|
||||
if (!empty($thumbnail['url'])) {
|
||||
// https://www.rssboard.org/media-rss#media-thumbnails
|
||||
|
||||
@@ -160,6 +160,16 @@ $view->rss_url = $query->sharedUrlRss();
|
||||
$view->rss_title = $query->getName();
|
||||
$view->image_url = $query->getImageUrl();
|
||||
$view->description = $query->getDescription() ?: _t('index.feed.rss_of', $view->rss_title);
|
||||
$view->publishLabelsInsteadOfTags = $query->publishLabelsInsteadOfTags();
|
||||
$view->entryIdsTagNames = [];
|
||||
if ($view->publishLabelsInsteadOfTags && in_array($format, ['rss', 'atom'], true)) {
|
||||
$entries = iterator_to_array($view->entries, preserve_keys: false); // TODO: Optimise: avoid iterator_to_array if possible
|
||||
$view->entries = $entries;
|
||||
if (!empty($entries)) {
|
||||
$tagDAO = FreshRSS_Factory::createTagDao();
|
||||
$view->entryIdsTagNames = $tagDAO->getEntryIdsTagNames($entries);
|
||||
}
|
||||
}
|
||||
if ($query->getName() != '') {
|
||||
FreshRSS_View::_title($query->getName());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user