mirror of
https://github.com/FreshRSS/FreshRSS.git
synced 2026-04-28 18:28:28 -04:00
Implement search form (#8103)
* Add UI for advanced search To help users with the seach operators. Obviously not as powerful as a manually-written search query. Lack in particular negation and logical *and* for now, but I might try to do something about it. <img width="939" height="1438" alt="image" src="https://github.com/user-attachments/assets/0bcad39b-eff3-4f44-876b-a2552af2af00" /> * Consistency: allow multiple user queries like S:1,2 * Fix user query and add tests
This commit is contained in:
committed by
GitHub
parent
1b8bc1ae8b
commit
e070c3ed2b
46
README.fr.md
46
README.fr.md
@@ -226,33 +226,33 @@ Voir le [dépôt dédié à ces extensions](https://github.com/FreshRSS/Extensio
|
||||
|
||||
| Langage | Progression | |
|
||||
| - | - | - |
|
||||
| Čeština (cs) | ■■■■■■■■・・ 88% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fcs+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Deutsch (de) | ■■■■■■■■■・ 98% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fde+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Čeština (cs) | ■■■■■■■■・・ 86% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fcs+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Deutsch (de) | ■■■■■■■■■・ 96% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fde+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Ελληνικά (el) | ■■・・・・・・・・ 22% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fel+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| English (en) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fen+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| English (United States) (en-US) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fen-US+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Español (es) | ■■■■■■■■■・ 91% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fes+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| فارسی (fa) | ■■■■■■■■■・ 97% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffa+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Suomi (fi) | ■■■■■■■■■・ 99% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffi+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Español (es) | ■■■■■■■■・・ 89% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fes+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| فارسی (fa) | ■■■■■■■■■・ 95% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffa+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Suomi (fi) | ■■■■■■■■■・ 97% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffi+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Français (fr) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffr+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| עברית (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) | ■■■■■■■■■・ 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) |
|
||||
| Nederlands (nl) | ■■■■■■■■■・ 99% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fnl+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Occitan (oc) | ■■■■■■■■・・ 80% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Foc+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Polski (pl) | ■■■■■■■■■・ 99% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpl+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| 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) | ■■■■■■■■・・ 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) |
|
||||
| עברית (he) | ■■■■・・・・・・ 44% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhe+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Magyar (hu) | ■■■■■■■■■・ 96% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhu+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Bahasa Indonesia (id) | ■■■■■■■■■・ 94% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fid+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Italiano (it) | ■■■■■■■■■・ 97% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fit+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| 日本語 (ja) | ■■■■■■■■■・ 92% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fja+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| 한국어 (ko) | ■■■■■■■■・・ 86% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fko+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Latviešu (lv) | ■■■■■■■■・・ 80% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Flv+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Nederlands (nl) | ■■■■■■■■■・ 96% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fnl+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Occitan (oc) | ■■■■■■■・・・ 78% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Foc+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Polski (pl) | ■■■■■■■■■・ 97% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpl+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Português (Brasil) (pt-BR) | ■■■■■■■■・・ 85% | [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) | ■■■■■■■■・・ 85% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-PT+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Русский (ru) | ■■■■■■■■・・ 86% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fru+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Slovenčina (sk) | ■■■■■■■■・・ 86% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fsk+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Türkçe (tr) | ■■■■■■■■■・ 93% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ftr+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Українська (uk) | ■■■■■■■■■・ 96% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fuk+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| 简体中文 (zh-CN) | ■■■■■■■■・・ 87% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-CN+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| 正體中文 (zh-TW) | ■■■■■■■■・・ 86% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-TW+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
|
||||
</translations>
|
||||
|
||||
|
||||
46
README.md
46
README.md
@@ -122,33 +122,33 @@ See the [repository dedicated to those extensions](https://github.com/FreshRSS/E
|
||||
|
||||
| Language | Progress | |
|
||||
| - | - | - |
|
||||
| Čeština (cs) | ■■■■■■■■・・ 88% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fcs+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Deutsch (de) | ■■■■■■■■■・ 98% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fde+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Čeština (cs) | ■■■■■■■■・・ 86% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fcs+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Deutsch (de) | ■■■■■■■■■・ 96% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fde+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Ελληνικά (el) | ■■・・・・・・・・ 22% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fel+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| English (en) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fen+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| English (United States) (en-US) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fen-US+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Español (es) | ■■■■■■■■■・ 91% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fes+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| فارسی (fa) | ■■■■■■■■■・ 97% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffa+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Suomi (fi) | ■■■■■■■■■・ 99% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffi+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Español (es) | ■■■■■■■■・・ 89% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fes+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| فارسی (fa) | ■■■■■■■■■・ 95% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffa+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Suomi (fi) | ■■■■■■■■■・ 97% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffi+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Français (fr) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffr+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| עברית (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) | ■■■■■■■■■・ 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) |
|
||||
| Nederlands (nl) | ■■■■■■■■■・ 99% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fnl+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Occitan (oc) | ■■■■■■■■・・ 80% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Foc+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Polski (pl) | ■■■■■■■■■・ 99% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpl+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| 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) | ■■■■■■■■・・ 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) |
|
||||
| עברית (he) | ■■■■・・・・・・ 44% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhe+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Magyar (hu) | ■■■■■■■■■・ 96% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhu+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Bahasa Indonesia (id) | ■■■■■■■■■・ 94% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fid+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Italiano (it) | ■■■■■■■■■・ 97% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fit+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| 日本語 (ja) | ■■■■■■■■■・ 92% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fja+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| 한국어 (ko) | ■■■■■■■■・・ 86% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fko+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Latviešu (lv) | ■■■■■■■■・・ 80% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Flv+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Nederlands (nl) | ■■■■■■■■■・ 96% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fnl+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Occitan (oc) | ■■■■■■■・・・ 78% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Foc+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Polski (pl) | ■■■■■■■■■・ 97% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpl+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Português (Brasil) (pt-BR) | ■■■■■■■■・・ 85% | [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) | ■■■■■■■■・・ 85% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-PT+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Русский (ru) | ■■■■■■■■・・ 86% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fru+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Slovenčina (sk) | ■■■■■■■■・・ 86% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fsk+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Türkçe (tr) | ■■■■■■■■■・ 93% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ftr+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Українська (uk) | ■■■■■■■■■・ 96% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fuk+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| 简体中文 (zh-CN) | ■■■■■■■■・・ 87% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-CN+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| 正體中文 (zh-TW) | ■■■■■■■■・・ 86% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-TW+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
|
||||
</translations>
|
||||
|
||||
|
||||
184
app/Controllers/searchController.php
Normal file
184
app/Controllers/searchController.php
Normal file
@@ -0,0 +1,184 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* Controller to handle advanced search actions.
|
||||
*/
|
||||
class FreshRSS_search_Controller extends FreshRSS_ActionController {
|
||||
|
||||
#[\Override]
|
||||
public function firstAction(): void {
|
||||
if (!FreshRSS_Auth::hasAccess()) {
|
||||
Minz_Error::error(403);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the advanced search form.
|
||||
*/
|
||||
public function indexAction(): void {
|
||||
FreshRSS_View::prependTitle(_t('gen.menu.advanced_search') . ' · ');
|
||||
|
||||
// Get categories and feeds for dropdowns
|
||||
$catDAO = FreshRSS_Factory::createCategoryDao();
|
||||
$this->view->categories = $catDAO->listCategories(true, true);
|
||||
|
||||
$feedDAO = FreshRSS_Factory::createFeedDao();
|
||||
$this->view->feeds = $feedDAO->listFeeds();
|
||||
|
||||
// Get labels
|
||||
$tagDAO = FreshRSS_Factory::createTagDao();
|
||||
$this->view->labels = $tagDAO->listTags(true);
|
||||
|
||||
// Get user queries
|
||||
$this->view->queries = [];
|
||||
foreach (FreshRSS_Context::userConf()->queries as $key => $query) {
|
||||
$this->view->queries[intval($key)] = new FreshRSS_UserQuery($query, FreshRSS_Context::categories(), FreshRSS_Context::labels());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Build an OR-separated clause from newline delimited values.
|
||||
*/
|
||||
private static function buildOrClause(string $rawValue, string $prefix = ''): string {
|
||||
$lines = preg_split('/[\r\n]+/', $rawValue);
|
||||
if ($lines === false) {
|
||||
$lines = [$rawValue];
|
||||
}
|
||||
|
||||
$terms = [];
|
||||
foreach ($lines as $line) {
|
||||
$line = trim($line, " \n\r\t\v\0\"'"); // Also trim existing quotes
|
||||
if ($line === '') {
|
||||
continue;
|
||||
}
|
||||
$quoted = preg_match('/\s/', $line) === 1 ? "'$line'" : $line;
|
||||
$terms[] = $prefix . $quoted;
|
||||
}
|
||||
|
||||
if (empty($terms)) {
|
||||
return '';
|
||||
}
|
||||
if (count($terms) === 1) {
|
||||
return $terms[0];
|
||||
}
|
||||
return '(' . implode(' OR ', $terms) . ')';
|
||||
}
|
||||
|
||||
/**
|
||||
* Process the advanced search form submission.
|
||||
*/
|
||||
public function submitAction(): void {
|
||||
if (!Minz_Request::isPost()) {
|
||||
Minz_Request::forward(['c' => 'search', 'a' => 'index'], true);
|
||||
return;
|
||||
}
|
||||
|
||||
// Build the search query from form parameters
|
||||
$searchTerms = [];
|
||||
|
||||
$freeTextClause = self::buildOrClause(Minz_Request::paramString('free_text'));
|
||||
if ($freeTextClause !== '') {
|
||||
$searchTerms[] = $freeTextClause;
|
||||
}
|
||||
|
||||
$titleClause = self::buildOrClause(Minz_Request::paramString('title'), 'intitle:');
|
||||
if ($titleClause !== '') {
|
||||
$searchTerms[] = $titleClause;
|
||||
}
|
||||
|
||||
$contentClause = self::buildOrClause(Minz_Request::paramString('content'), 'intext:');
|
||||
if ($contentClause !== '') {
|
||||
$searchTerms[] = $contentClause;
|
||||
}
|
||||
|
||||
$urlClause = self::buildOrClause(Minz_Request::paramString('url'), 'inurl:');
|
||||
if ($urlClause !== '') {
|
||||
$searchTerms[] = $urlClause;
|
||||
}
|
||||
|
||||
$authorClause = self::buildOrClause(Minz_Request::paramString('authors'), 'author:');
|
||||
if ($authorClause !== '') {
|
||||
$searchTerms[] = $authorClause;
|
||||
}
|
||||
|
||||
$tagsClause = self::buildOrClause(Minz_Request::paramString('tags'), '#');
|
||||
if ($tagsClause !== '') {
|
||||
$searchTerms[] = $tagsClause;
|
||||
}
|
||||
|
||||
// Received date
|
||||
$dateFrom = trim(Minz_Request::paramString('date_from'));
|
||||
$dateTo = trim(Minz_Request::paramString('date_to'));
|
||||
$dateNumber = Minz_Request::paramInt('date_number');
|
||||
$dateUnit = trim(Minz_Request::paramString('date_unit'));
|
||||
|
||||
if ($dateNumber > 0 && $dateUnit !== '') {
|
||||
// Convert to ISO 8601 duration format: P1D, P1W, P1M, PT1H, etc.
|
||||
// Time units (H, M, S) require a T separator
|
||||
$prefix = ($dateUnit === 'H' || $dateUnit === 'M' || $dateUnit === 'S') ? 'PT' : 'P';
|
||||
$searchTerms[] = "date:{$prefix}{$dateNumber}{$dateUnit}";
|
||||
} elseif ($dateFrom !== '' || $dateTo !== '') {
|
||||
if ($dateFrom !== '' && $dateTo !== '') {
|
||||
$searchTerms[] = "date:$dateFrom/$dateTo";
|
||||
} elseif ($dateFrom !== '') {
|
||||
$searchTerms[] = "date:$dateFrom/";
|
||||
} elseif ($dateTo !== '') {
|
||||
$searchTerms[] = "date:/$dateTo";
|
||||
}
|
||||
}
|
||||
|
||||
// Publication date
|
||||
$pubDateFrom = trim(Minz_Request::paramString('pubdate_from'));
|
||||
$pubDateTo = trim(Minz_Request::paramString('pubdate_to'));
|
||||
$pubDateNumber = Minz_Request::paramInt('pubdate_number');
|
||||
$pubDateUnit = trim(Minz_Request::paramString('pubdate_unit'));
|
||||
|
||||
if ($pubDateNumber > 0 && $pubDateUnit !== '') {
|
||||
// Convert to ISO 8601 duration format: P1D, P1W, P1M, PT1H, etc.
|
||||
// Time units (H, M, S) require a T separator
|
||||
$prefix = ($pubDateUnit === 'H' || $pubDateUnit === 'M' || $pubDateUnit === 'S') ? 'PT' : 'P';
|
||||
$searchTerms[] = "pubdate:{$prefix}{$pubDateNumber}{$pubDateUnit}";
|
||||
} elseif ($pubDateFrom !== '' || $pubDateTo !== '') {
|
||||
if ($pubDateFrom !== '' && $pubDateTo !== '') {
|
||||
$searchTerms[] = "pubdate:$pubDateFrom/$pubDateTo";
|
||||
} elseif ($pubDateFrom !== '') {
|
||||
$searchTerms[] = "pubdate:$pubDateFrom/";
|
||||
} elseif ($pubDateTo !== '') {
|
||||
$searchTerms[] = "pubdate:/$pubDateTo";
|
||||
}
|
||||
}
|
||||
|
||||
$feedIds = Minz_Request::paramArrayInt('feed_ids');
|
||||
if (!empty($feedIds)) {
|
||||
$searchTerms[] = 'f:' . implode(',', $feedIds);
|
||||
}
|
||||
|
||||
$categoryIds = Minz_Request::paramArrayInt('category_ids');
|
||||
if (!empty($categoryIds)) {
|
||||
$searchTerms[] = 'c:' . implode(',', $categoryIds);
|
||||
}
|
||||
|
||||
$labelIds = Minz_Request::paramArrayInt('label_ids');
|
||||
if (!empty($labelIds)) {
|
||||
$searchTerms[] = 'L:' . implode(',', $labelIds);
|
||||
}
|
||||
|
||||
$userQueryIds = Minz_Request::paramArrayInt('user_query_ids');
|
||||
if (!empty($userQueryIds)) {
|
||||
$searchTerms[] = 'S:' . implode(',', $userQueryIds);
|
||||
}
|
||||
|
||||
// Combine all search terms
|
||||
$searchQuery = implode(' ', $searchTerms);
|
||||
|
||||
// Redirect to the main view with the search query
|
||||
Minz_Request::forward([
|
||||
'c' => 'index',
|
||||
'a' => 'index',
|
||||
'params' => [
|
||||
'search' => $searchQuery,
|
||||
],
|
||||
], redirect: true);
|
||||
}
|
||||
}
|
||||
@@ -102,7 +102,7 @@ class FreshRSS_BooleanSearch implements \Stringable {
|
||||
private function parseUserQueryIds(string $input, bool $allowUserQueries = true): string {
|
||||
$all_matches = [];
|
||||
|
||||
if (preg_match_all('/\bS:(?P<search>\d+)/', $input, $matchesFound)) {
|
||||
if (preg_match_all('/\bS:(?P<search>[0-9,]+)/', $input, $matchesFound)) {
|
||||
$all_matches[] = $matchesFound;
|
||||
}
|
||||
|
||||
@@ -119,16 +119,26 @@ class FreshRSS_BooleanSearch implements \Stringable {
|
||||
continue;
|
||||
}
|
||||
for ($i = count($matches['search']) - 1; $i >= 0; $i--) {
|
||||
// Index starting from 1
|
||||
$id = (int)(trim($matches['search'][$i])) - 1;
|
||||
if (!empty($queries[$id])) {
|
||||
$fromS[] = $matches[0][$i];
|
||||
if ($allowUserQueries) {
|
||||
$toS[] = '(' . self::escapeLiteralParentheses($queries[$id]) . ')';
|
||||
} else {
|
||||
$toS[] = '';
|
||||
$ids = explode(',', $matches['search'][$i]);
|
||||
$ids = array_map('intval', $ids);
|
||||
|
||||
$matchedQueries = [];
|
||||
foreach ($ids as $id) {
|
||||
if (!empty($queries[$id])) {
|
||||
$matchedQueries[] = $queries[$id];
|
||||
}
|
||||
}
|
||||
if (empty($matchedQueries)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$fromS[] = $matches[0][$i];
|
||||
if ($allowUserQueries) {
|
||||
$escapedQueries = array_map(fn(string $query): string => self::escapeLiteralParentheses($query), $matchedQueries);
|
||||
$toS[] = '(' . implode(') OR (', $escapedQueries) . ')';
|
||||
} else {
|
||||
$toS[] = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -30,6 +30,10 @@ class FreshRSS_View extends Minz_View {
|
||||
public array $tagsForEntries;
|
||||
public bool $excludeMutedFeeds;
|
||||
|
||||
// Search
|
||||
/** @var array<int,FreshRSS_Tag> where the key is the label ID */
|
||||
public array $labels;
|
||||
|
||||
// Subscriptions
|
||||
public bool $displaySlider = false;
|
||||
public bool $load_ok;
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => 'O aplikaci',
|
||||
'account' => 'Účet',
|
||||
'admin' => 'Administrace',
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => 'Archivace',
|
||||
'authentication' => 'Ověřování',
|
||||
'check_install' => 'Kontrola instalace',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'Známé základní stránky',
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => 'Info',
|
||||
'account' => 'Account', // IGNORE
|
||||
'admin' => 'Administration', // IGNORE
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => 'Archivierung',
|
||||
'authentication' => 'Authentifizierung',
|
||||
'check_install' => 'Installationsüberprüfung',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'Known-Seite (https://withknown.com)',
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => 'About', // TODO
|
||||
'account' => 'Account', // TODO
|
||||
'admin' => 'Administration', // TODO
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => 'Archiving', // TODO
|
||||
'authentication' => 'Authentication', // TODO
|
||||
'check_install' => 'Installation check', // TODO
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'Known based sites', // TODO
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => 'About', // IGNORE
|
||||
'account' => 'Account', // IGNORE
|
||||
'admin' => 'Administration', // IGNORE
|
||||
'advanced_search' => 'Advanced Search', // IGNORE
|
||||
'archiving' => 'Archiving', // IGNORE
|
||||
'authentication' => 'Authentication', // IGNORE
|
||||
'check_install' => 'Installation check', // IGNORE
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // IGNORE
|
||||
'authors' => 'Authors', // IGNORE
|
||||
'categories' => 'Categories', // IGNORE
|
||||
'content' => 'Content', // IGNORE
|
||||
'date_from' => 'From', // IGNORE
|
||||
'date_past' => 'In the past', // IGNORE
|
||||
'date_published' => 'Publication Date', // IGNORE
|
||||
'date_range' => 'Date Range', // IGNORE
|
||||
'date_received' => 'Received Date', // IGNORE
|
||||
'date_to' => 'To', // IGNORE
|
||||
'feeds' => 'Feeds', // IGNORE
|
||||
'free_text' => 'Free Text', // IGNORE
|
||||
'free_text_help' => 'Search both in title and content', // IGNORE
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // IGNORE
|
||||
'labels' => 'My Labels', // IGNORE
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // IGNORE
|
||||
'sources' => 'Sources', // IGNORE
|
||||
'tags' => 'Article Tags', // IGNORE
|
||||
'text' => 'Text Search', // IGNORE
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // IGNORE
|
||||
'text_placeholder' => 'Keyword', // IGNORE
|
||||
'title' => 'Title', // IGNORE
|
||||
'url' => 'URL', // IGNORE
|
||||
'user_queries' => 'User Queries', // IGNORE
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'Known based sites', // IGNORE
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => 'About',
|
||||
'account' => 'Account',
|
||||
'admin' => 'Administration',
|
||||
'advanced_search' => 'Advanced Search',
|
||||
'archiving' => 'Archiving',
|
||||
'authentication' => 'Authentication',
|
||||
'check_install' => 'Installation check',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language',
|
||||
'translated' => 'Progress',
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.',
|
||||
'authors' => 'Authors',
|
||||
'categories' => 'Categories',
|
||||
'content' => 'Content',
|
||||
'date_from' => 'From',
|
||||
'date_past' => 'In the past',
|
||||
'date_published' => 'Publication Date',
|
||||
'date_range' => 'Date Range',
|
||||
'date_received' => 'Received Date',
|
||||
'date_to' => 'To',
|
||||
'feeds' => 'Feeds',
|
||||
'free_text' => 'Free Text',
|
||||
'free_text_help' => 'Search both in title and content',
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>',
|
||||
'labels' => 'My Labels',
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)',
|
||||
'sources' => 'Sources',
|
||||
'tags' => 'Article Tags',
|
||||
'text' => 'Text Search',
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.',
|
||||
'text_placeholder' => 'Keyword',
|
||||
'title' => 'Title',
|
||||
'url' => 'URL',
|
||||
'user_queries' => 'User Queries',
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'Known based sites',
|
||||
'archiveIS' => 'archive.is',
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => 'Acerca de',
|
||||
'account' => 'Cuenta',
|
||||
'admin' => 'Administración',
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => 'Archivo',
|
||||
'authentication' => 'Identificación',
|
||||
'check_install' => 'Verificación de instalación',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'Sitios basados en conocidos',
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => ' در مورد',
|
||||
'account' => ' حساب',
|
||||
'admin' => ' اداره',
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => ' آرشیو',
|
||||
'authentication' => ' احراز هویت',
|
||||
'check_install' => ' بررسی نصب',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => ' سایت های مبتنی بر شناخته شده',
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => 'Tietoja',
|
||||
'account' => 'Tili',
|
||||
'admin' => 'Hallinta',
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => 'Arkistointi',
|
||||
'authentication' => 'Todentaminen',
|
||||
'check_install' => 'Asennuksen tarkistus',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'Known-sivustot',
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => 'À propos',
|
||||
'account' => 'Compte',
|
||||
'admin' => 'Administration', // IGNORE
|
||||
'advanced_search' => 'Recherche avancée',
|
||||
'archiving' => 'Archivage',
|
||||
'authentication' => 'Authentification',
|
||||
'check_install' => 'Vérification de l’installation',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Langage',
|
||||
'translated' => 'Progression',
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'Ce formulaire aide à construire des requêtes de recherche, mais les requêtes manuelles sont encore plus puissantes.',
|
||||
'authors' => 'Auteurs',
|
||||
'categories' => 'Catégories',
|
||||
'content' => 'Contenu',
|
||||
'date_from' => 'Depuis',
|
||||
'date_past' => 'Dans le passé',
|
||||
'date_published' => 'Date de publication',
|
||||
'date_range' => 'Plage de dates',
|
||||
'date_received' => 'Date de réception',
|
||||
'date_to' => 'À',
|
||||
'feeds' => 'Flux',
|
||||
'free_text' => 'Texte libre',
|
||||
'free_text_help' => 'Rechercher dans le titre et le contenu',
|
||||
'full_documentation' => 'Voir la <a href="https://freshrss.github.io/FreshRSS/fr/users/03_Main_view.html#gr%C3%A2ce-au-champ-de-recherche" target="_blank">documentation complète de recherche</a>',
|
||||
'labels' => 'Mes étiquettes',
|
||||
'multiple_help' => 'Sélectionnez un ou plusieurs (maintenez <kbd>Ctrl</kbd> ou <kbd>Cmd</kbd>)',
|
||||
'sources' => 'Sources', // IGNORE
|
||||
'tags' => 'Tags d’articles',
|
||||
'text' => 'Recherche de texte',
|
||||
'text_help' => 'Les lignes multiples sont combinées par un <i>ou</i> logique. Supporte aussi les <a href="https://freshrss.github.io/FreshRSS/fr/users/03_Main_view.html#regex" target="_blank">expressions régulières</a>.',
|
||||
'text_placeholder' => 'Mot-clef',
|
||||
'title' => 'Titre',
|
||||
'url' => 'URL', // IGNORE
|
||||
'user_queries' => 'Requêtes utilisateur',
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'Sites basés sur Known',
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => 'אודות',
|
||||
'account' => 'Account', // TODO
|
||||
'admin' => 'ניהול',
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => 'ארכוב',
|
||||
'authentication' => 'Authentication', // TODO
|
||||
'check_install' => 'Installation check', // TODO
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'Known based sites', // TODO
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => 'Névjegy',
|
||||
'account' => 'Fiók',
|
||||
'admin' => 'Adminisztráció',
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => 'Archiválás',
|
||||
'authentication' => 'Hitelesítés',
|
||||
'check_install' => 'Telepítés ellenőrzése',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'Ismert weboldalak',
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => 'Tentang',
|
||||
'account' => 'Akun',
|
||||
'admin' => 'Administrasi',
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => 'Pengarsipan',
|
||||
'authentication' => 'Autentikasi',
|
||||
'check_install' => 'Pemeriksaan pemasangan',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'Situs berbasis Known',
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => 'Informazioni',
|
||||
'account' => 'Profilo',
|
||||
'admin' => 'Amministrazione',
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => 'Archiviazione',
|
||||
'authentication' => 'Autenticazione',
|
||||
'check_install' => 'Installazione',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'Siti basati su Known',
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => 'FreshRSSについて',
|
||||
'account' => 'アカウント',
|
||||
'admin' => '管理者',
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => 'アーカイブ',
|
||||
'authentication' => '認証',
|
||||
'check_install' => 'インストール時のチェック',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'よく使われるサイト',
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => '정보',
|
||||
'account' => '계정',
|
||||
'admin' => '관리',
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => '보관',
|
||||
'authentication' => '인증',
|
||||
'check_install' => '설치 요구사항 확인',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'Known based sites', // IGNORE
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => 'Par',
|
||||
'account' => 'Konts',
|
||||
'admin' => 'Administrācija',
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => 'Arhivēšana',
|
||||
'authentication' => 'Autentifikācija',
|
||||
'check_install' => 'Uzstādīšanas pārbaude',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'Zināmas vietnes',
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => 'Over',
|
||||
'account' => 'Account', // IGNORE
|
||||
'admin' => 'Administratie',
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => 'Archiveren',
|
||||
'authentication' => 'Authenticatie',
|
||||
'check_install' => 'Installatiecontrole',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'Known-gebaseerde sites',
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => 'A prepaus',
|
||||
'account' => 'Compte',
|
||||
'admin' => 'Administracion', // IGNORE
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => 'Archivar',
|
||||
'authentication' => 'Autentificacion',
|
||||
'check_install' => 'Verificacion de l’installacion',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'Sites basats sus Known',
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => 'O serwisie',
|
||||
'account' => 'Konto',
|
||||
'admin' => 'Administracja',
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => 'Archiwizacja',
|
||||
'authentication' => 'Uwierzytelnianie',
|
||||
'check_install' => 'Sprawdzenie instalacji',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'Strony bazujące na usłudze Known',
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => 'Sobre',
|
||||
'account' => 'Conta',
|
||||
'admin' => 'Administração',
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => 'Arquivar',
|
||||
'authentication' => 'Autenticação',
|
||||
'check_install' => 'Verificação de instalação',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'Sites no Known',
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => 'Sobre',
|
||||
'account' => 'Conta',
|
||||
'admin' => 'Administração',
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => 'Arquivar',
|
||||
'authentication' => 'Autenticação',
|
||||
'check_install' => 'Verificação de instalação',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'Sites no Known',
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => 'О проекте',
|
||||
'account' => 'Аккаунт',
|
||||
'admin' => 'Администрирование',
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => 'Архивирование',
|
||||
'authentication' => 'Аутентификация',
|
||||
'check_install' => 'Проверка установки',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'Сайты на Known',
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => 'O FreshRSS',
|
||||
'account' => 'Konto',
|
||||
'admin' => 'Administrácia',
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => 'Archivácia',
|
||||
'authentication' => 'Prihlásenie',
|
||||
'check_install' => 'Kontrola inštalácie',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'Stránky založené na Known',
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => 'Hakkında',
|
||||
'account' => 'Hesap',
|
||||
'admin' => 'Yönetim',
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => 'Arşivleme',
|
||||
'authentication' => 'Kimlik doğrulama',
|
||||
'check_install' => 'Kurulum kontrolü',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'Bilinen tabanlı siteler',
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => 'Про програму',
|
||||
'account' => 'Обліковий запис',
|
||||
'admin' => 'Адміністрування',
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => 'Архівування',
|
||||
'authentication' => 'Вхід',
|
||||
'check_install' => 'Перевірка встановлення',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // TODO
|
||||
'translated' => 'Progress', // TODO
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => 'Сайти на Known',
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => '关于',
|
||||
'account' => '账户',
|
||||
'admin' => '管理',
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => '归档',
|
||||
'authentication' => '认证',
|
||||
'check_install' => '环境检查',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => '基于 Known 的站点',
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -189,6 +189,7 @@ return array(
|
||||
'about' => '關於',
|
||||
'account' => '帳號',
|
||||
'admin' => '管理',
|
||||
'advanced_search' => 'Advanced Search', // TODO
|
||||
'archiving' => '歸檔',
|
||||
'authentication' => '認證',
|
||||
'check_install' => '環境檢查',
|
||||
@@ -221,6 +222,32 @@ return array(
|
||||
'language' => 'Language', // IGNORE
|
||||
'translated' => 'Progress', // IGNORE
|
||||
),
|
||||
'search' => array(
|
||||
'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.', // TODO
|
||||
'authors' => 'Authors', // TODO
|
||||
'categories' => 'Categories', // TODO
|
||||
'content' => 'Content', // TODO
|
||||
'date_from' => 'From', // TODO
|
||||
'date_past' => 'In the past', // TODO
|
||||
'date_published' => 'Publication Date', // TODO
|
||||
'date_range' => 'Date Range', // TODO
|
||||
'date_received' => 'Received Date', // TODO
|
||||
'date_to' => 'To', // TODO
|
||||
'feeds' => 'Feeds', // TODO
|
||||
'free_text' => 'Free Text', // TODO
|
||||
'free_text_help' => 'Search both in title and content', // TODO
|
||||
'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>', // TODO
|
||||
'labels' => 'My Labels', // TODO
|
||||
'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)', // TODO
|
||||
'sources' => 'Sources', // TODO
|
||||
'tags' => 'Article Tags', // TODO
|
||||
'text' => 'Text Search', // TODO
|
||||
'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.', // TODO
|
||||
'text_placeholder' => 'Keyword', // TODO
|
||||
'title' => 'Title', // TODO
|
||||
'url' => 'URL', // TODO
|
||||
'user_queries' => 'User Queries', // TODO
|
||||
),
|
||||
'share' => array(
|
||||
'Known' => '基於 Known 的站點',
|
||||
'archiveIS' => 'archive.is', // IGNORE
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
<li class="item">
|
||||
<a href="<?= _url('index', 'index') ?>"><?= _t('gen.action.back_to_rss_feeds') ?></a>
|
||||
</li>
|
||||
<li class="item<?= Minz_Request::controllerName() === 'search' ? ' active' : '' ?>">
|
||||
<a href="<?= _url('search', 'index') ?>"><?= _t('gen.menu.advanced_search') ?></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="item nav-section">
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
value="<?= htmlspecialchars(htmlspecialchars_decode(FreshRSS_Context::$search->getRawInput(), ENT_QUOTES), ENT_COMPAT, 'UTF-8'); ?>"
|
||||
placeholder="<?= _t('gen.menu.search') ?>" title="<?= _t('gen.menu.search') ?>" /><button class="btn" type="submit" title="<?= _t('index.menu.search_short') ?>"><?= _i('search') ?></button>
|
||||
</div>
|
||||
<p class="help"><?= _i('help') ?> <?= _t('gen.menu.search_help') ?></a></p>
|
||||
<p class="help"><?= _i('help') ?> <a href="<?= _url('search', 'index') ?>"><?= _t('gen.menu.advanced_search') ?></a></p>
|
||||
</form>
|
||||
</span>
|
||||
</li>
|
||||
|
||||
200
app/views/search/index.phtml
Normal file
200
app/views/search/index.phtml
Normal file
@@ -0,0 +1,200 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
/** @var FreshRSS_View $this */
|
||||
$this->partial('aside_subscription');
|
||||
?>
|
||||
<main class="post">
|
||||
<h1><?= _t('gen.menu.advanced_search') ?></h1>
|
||||
<p class="help"><?= _i('help') ?> <?= _t('gen.search.advanced_search_help') ?></p>
|
||||
<p><?= _t('gen.search.full_documentation') ?></p>
|
||||
|
||||
<form method="post" action="<?= _url('search', 'submit') ?>">
|
||||
<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
|
||||
|
||||
<fieldset>
|
||||
<legend><?= _t('gen.search.text') ?></legend>
|
||||
<p class="help"><?= _i('help') ?> <?= _t('gen.search.text_help') ?></p>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="group-name" for="free_text"><?= _t('gen.search.free_text') ?></label>
|
||||
<div class="group-controls">
|
||||
<textarea id="free_text" name="free_text" rows="2" placeholder="<?= _t('gen.search.text_placeholder') ?>"></textarea>
|
||||
<p class="help"><?= _i('help') ?> <?= _t('gen.search.free_text_help') ?></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="group-name" for="title"><?= _t('gen.search.title') ?></label>
|
||||
<div class="group-controls">
|
||||
<textarea id="title" name="title" rows="2" placeholder="<?= _t('gen.search.text_placeholder') ?>"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="group-name" for="content"><?= _t('gen.search.content') ?></label>
|
||||
<div class="group-controls">
|
||||
<textarea id="content" name="content" rows="2" placeholder="<?= _t('gen.search.text_placeholder') ?>"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="group-name" for="url"><?= _t('gen.search.url') ?></label>
|
||||
<div class="group-controls">
|
||||
<textarea id="url" name="url" rows="2" placeholder="<?= _t('gen.search.text_placeholder') ?>"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="group-name" for="authors"><?= _t('gen.search.authors') ?></label>
|
||||
<div class="group-controls">
|
||||
<textarea id="authors" name="authors" rows="2" placeholder="<?= _t('gen.search.text_placeholder') ?>"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="group-name" for="tags"><?= _t('gen.search.tags') ?></label>
|
||||
<div class="group-controls">
|
||||
<textarea id="tags" name="tags" rows="2" placeholder="<?= _t('gen.search.text_placeholder') ?>"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?= _t('gen.search.date_past') ?></legend>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="group-name"><?= _t('gen.search.date_received') ?></label>
|
||||
<div class="group-controls">
|
||||
<div>
|
||||
<label for="date_number"><?= _t('gen.search.date_past') ?>
|
||||
<input id="date_number" name="date_number" type="number" min="1" placeholder="1" />
|
||||
<select id="date_unit" name="date_unit">
|
||||
<option value="H"><?= _t('gen.period.hours') ?></option>
|
||||
<option value="D"><?= _t('gen.period.days') ?></option>
|
||||
<option value="W"><?= _t('gen.period.weeks') ?></option>
|
||||
<option value="M"><?= _t('gen.period.months') ?></option>
|
||||
<option value="Y"><?= _t('gen.period.years') ?></option>
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="group-name"><?= _t('gen.search.date_published') ?></label>
|
||||
<div class="group-controls">
|
||||
<div>
|
||||
<label for="pubdate_number"><?= _t('gen.search.date_past') ?>
|
||||
<input id="pubdate_number" name="pubdate_number" type="number" min="1" placeholder="1" />
|
||||
<select id="pubdate_unit" name="pubdate_unit">
|
||||
<option value="H"><?= _t('gen.period.hours') ?></option>
|
||||
<option value="D"><?= _t('gen.period.days') ?></option>
|
||||
<option value="W"><?= _t('gen.period.weeks') ?></option>
|
||||
<option value="M"><?= _t('gen.period.months') ?></option>
|
||||
<option value="Y"><?= _t('gen.period.years') ?></option>
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?= _t('gen.search.date_range') ?></legend>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="group-name"><?= _t('gen.search.date_received') ?></label>
|
||||
<div class="group-controls">
|
||||
<div>
|
||||
<label for="date_from"><?= _t('gen.search.date_from') ?>
|
||||
<input id="date_from" name="date_from" type="date" />
|
||||
</label>
|
||||
<label for="date_to"><?= _t('gen.search.date_to') ?>
|
||||
<input id="date_to" name="date_to" type="date" />
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="group-name"><?= _t('gen.search.date_published') ?></label>
|
||||
<div class="group-controls">
|
||||
<div>
|
||||
<label for="pubdate_from"><?= _t('gen.search.date_from') ?>
|
||||
<input id="pubdate_from" name="pubdate_from" type="date" />
|
||||
</label>
|
||||
<label for="pubdate_to"><?= _t('gen.search.date_to') ?>
|
||||
<input id="pubdate_to" name="pubdate_to" type="date" />
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?= _t('gen.search.sources') ?></legend>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="group-name" for="feed_ids"><?= _t('gen.search.feeds') ?></label>
|
||||
<div class="group-controls">
|
||||
<select name="feed_ids[]" id="feed_ids" size="<?= min(8, count($this->feeds) + 1) ?>" multiple="multiple">
|
||||
<?php foreach ($this->feeds as $feed): ?>
|
||||
<option value="<?= $feed->id() ?>"><?= $feed->name() ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="group-name" for="category_ids"><?= _t('gen.search.categories') ?></label>
|
||||
<div class="group-controls">
|
||||
<select name="category_ids[]" id="category_ids" size="<?= min(8, count($this->categories) + 1) ?>" multiple="multiple">
|
||||
<?php foreach ($this->categories as $category): ?>
|
||||
<option value="<?= $category->id() ?>"><?= $category->name() ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<p class="help"><?= _i('help') ?> <?= _t('gen.search.multiple_help') ?></p>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?= _t('gen.search.labels') ?></legend>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="group-name" for="label_ids"><?= _t('gen.search.labels') ?></label>
|
||||
<div class="group-controls">
|
||||
<select name="label_ids[]" id="label_ids" size="<?= min(8, count($this->labels) + 1) ?>" multiple="multiple">
|
||||
<?php foreach ($this->labels as $label): ?>
|
||||
<option value="<?= $label->id() ?>"><?= $label->name() ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<p class="help"><?= _i('help') ?> <?= _t('gen.search.multiple_help') ?></p>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?= _t('gen.search.user_queries') ?></legend>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="group-name" for="user_query_ids"><?= _t('gen.search.user_queries') ?></label>
|
||||
<div class="group-controls">
|
||||
<select name="user_query_ids[]" id="user_query_ids" size="<?= min(8, count($this->queries) + 1) ?>" multiple="multiple">
|
||||
<?php foreach ($this->queries as $key => $query): ?>
|
||||
<option value="<?= $key ?>"><?= $query->getName() ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<p class="help"><?= _i('help') ?> <?= _t('gen.search.multiple_help') ?></p>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group form-actions">
|
||||
<div class="group-controls">
|
||||
<button type="submit" class="btn btn-important"><?= _t('gen.action.submit') ?></button>
|
||||
<button type="reset" class="btn"><?= _t('gen.action.cancel') ?></button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</main>
|
||||
@@ -95,7 +95,7 @@ You can use the search field to further refine results:
|
||||
* by custom label name `label:label`, `label:"my label"` or any label name from a list (*or*): `labels:"my label,my other label"`
|
||||
* by several label names (*and*): `label:"my label" label:"my other label"`
|
||||
* by entry (article) ID: `e:1639310674957894` or multiple entry IDs (*or*): `e:1639310674957894,1639310674957893`
|
||||
* by user query (saved search) name: `search:myQuery`, `search:"My query"` or saved search ID: `S:3`
|
||||
* by user query (saved search) name: `search:myQuery`, `search:"My query"` or saved search ID: `S:3` or multiple search IDs: `S:1,2`
|
||||
* internally, those references are replaced by the corresponding user query in the search expression
|
||||
|
||||
Be careful not to enter a space between the operator and the search value.
|
||||
|
||||
@@ -254,7 +254,7 @@ Il est possible d’utiliser le champ de recherche pour raffiner les résultats
|
||||
* par nom d’étiquette : `label:étiquette`, `label:"mon étiquette"` ou d’une étiquette parmi une liste (*ou*) : `labels:"mon étiquette,mon autre étiquette"`
|
||||
* par plusieurs noms d’étiquettes (*et*) : `label:"mon étiquette" label:"mon autre étiquette"`
|
||||
* par ID d’article (entrée) : `e:1639310674957894` ou de plusieurs articles (*ou*) : `e:1639310674957894,1639310674957893`
|
||||
* par nom de filtre utilisateur (recherche enregistrée) : `search:maRecherche`, `search:"Ma recherche"` ou par ID de recherche : `S:3`
|
||||
* par nom de filtre utilisateur (recherche enregistrée) : `search:maRecherche`, `search:"Ma recherche"` ou par ID de recherche : `S:3`, ou multiple IDs : `S:1,2`
|
||||
* en interne, ces références sont remplacées par le filtre utilisateur correspondant dans l’expression de recherche
|
||||
|
||||
Attention à ne pas introduire d’espace entre l’opérateur et la valeur
|
||||
|
||||
@@ -99,6 +99,18 @@ class Minz_Request {
|
||||
return $plaintext ? $result : Minz_Helper::htmlspecialchars_utf8($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list<int>
|
||||
*/
|
||||
public static function paramArrayInt(string $key): array {
|
||||
if (empty(self::$params[$key]) || !is_array(self::$params[$key])) {
|
||||
return [];
|
||||
}
|
||||
$result = array_filter(self::$params[$key], 'is_numeric');
|
||||
$result = array_map('intval', $result);
|
||||
return array_values($result);
|
||||
}
|
||||
|
||||
public static function paramTernary(string $key): ?bool {
|
||||
if (isset(self::$params[$key])) {
|
||||
$p = self::$params[$key];
|
||||
|
||||
@@ -224,6 +224,70 @@ final class SearchTest extends \PHPUnit\Framework\TestCase {
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param list<array{search:string}> $queries
|
||||
* @param array{0:string,1:list<string|int>} $expectedResult
|
||||
*/
|
||||
#[DataProvider('provideSavedQueryIdExpansion')]
|
||||
public static function test__construct_whenInputContainsSavedQueryIds_expandsSavedSearches(array $queries, string $input, array $expectedResult): void {
|
||||
$previousUserConf = FreshRSS_Context::hasUserConf() ? FreshRSS_Context::userConf() : null;
|
||||
$newUserConf = $previousUserConf instanceof FreshRSS_UserConfiguration ? clone $previousUserConf : clone FreshRSS_UserConfiguration::default();
|
||||
$newUserConf->queries = $queries;
|
||||
FreshRSS_Context::$user_conf = $newUserConf;
|
||||
|
||||
try {
|
||||
$search = new FreshRSS_BooleanSearch($input);
|
||||
[$actualValues, $actualSql] = FreshRSS_EntryDAOPGSQL::sqlBooleanSearch('e.', $search);
|
||||
self::assertSame($expectedResult[0], trim($actualSql));
|
||||
self::assertSame($expectedResult[1], $actualValues);
|
||||
} finally {
|
||||
FreshRSS_Context::$user_conf = $previousUserConf;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string,array{0:list<array{search:string}>,1:string,2:array{0:string,1:list<string|int>}}>
|
||||
*/
|
||||
public static function provideSavedQueryIdExpansion(): array {
|
||||
return [
|
||||
'expanded single group' => [
|
||||
[
|
||||
['search' => 'author:Alice'],
|
||||
['search' => 'intitle:World'],
|
||||
],
|
||||
'S:0,1',
|
||||
[
|
||||
'((e.author LIKE ? )) OR ((e.title LIKE ? ))',
|
||||
['%Alice%', '%World%'],
|
||||
],
|
||||
],
|
||||
'separate groups with OR' => [
|
||||
[
|
||||
['search' => 'author:Alice'],
|
||||
['search' => 'intitle:World'],
|
||||
['search' => 'inurl:Example'],
|
||||
['search' => 'author:Bob'],
|
||||
],
|
||||
'S:0,1 OR S:2,3',
|
||||
[
|
||||
'((e.author LIKE ? )) OR ((e.title LIKE ? )) OR ((e.link LIKE ? )) OR ((e.author LIKE ? ))',
|
||||
['%Alice%', '%World%', '%Example%', '%Bob%'],
|
||||
],
|
||||
],
|
||||
'mixed with other clauses' => [
|
||||
[
|
||||
['search' => 'author:Alice'],
|
||||
['search' => 'intitle:World'],
|
||||
],
|
||||
'intitle:Hello S:0,1 date:2025-10',
|
||||
[
|
||||
'((e.title LIKE ? )) AND ((e.author LIKE ? )) OR ((e.title LIKE ? )) AND ((e.id >= ? AND e.id <= ? ))',
|
||||
['%Hello%', '%Alice%', '%World%', strtotime('2025-10-01') . '000000', (strtotime('2025-11-01') - 1) . '000000'],
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string>|null $author_value
|
||||
* @param array<string> $intitle_value
|
||||
|
||||
Reference in New Issue
Block a user