1
0
mirror of https://github.com/chylex/Nextcloud-News.git synced 2025-09-15 13:32:10 +02:00

Compare commits

3 Commits

6 changed files with 18 additions and 10 deletions

View File

@@ -5,7 +5,7 @@ The format is mostly based on [Keep a Changelog](https://keepachangelog.com/en/1
# Unreleased # Unreleased
## [21.x.x] ## [21.x.x]
### Changed ### Changed
- Improve visibility of links in dark theme (#2215)
### Fixed ### Fixed

View File

@@ -465,11 +465,6 @@
line-height: 1; line-height: 1;
} }
#app-content .feed-view .utils .title {
background: none !important;
padding-left: 10px;
}
#app-content .utils .title h1 a { #app-content .utils .title h1 a {
/*text-overflow: ellipsis;*/ /*text-overflow: ellipsis;*/
white-space: nowrap; white-space: nowrap;

View File

@@ -8,7 +8,6 @@ OC.L10N.register(
"Internal server error! Please check your data/nextcloud.log file for additional information!" : "Внутрішня помилка сервера! Щоб отримати додаткову інформацію, перевірте файл data/nextcloud.log!", "Internal server error! Please check your data/nextcloud.log file for additional information!" : "Внутрішня помилка сервера! Щоб отримати додаткову інформацію, перевірте файл data/nextcloud.log!",
"Request failed, Nextcloud is in currently in maintenance mode!" : "Помилка запиту, Nextcloud зараз у режимі обслуговування!", "Request failed, Nextcloud is in currently in maintenance mode!" : "Помилка запиту, Nextcloud зараз у режимі обслуговування!",
"Unread articles" : "Непрочитані статті", "Unread articles" : "Непрочитані статті",
"News" : "Новини",
"Last job ran {relativeTime}." : "Останнє завдання виконано {relativeTime}.", "Last job ran {relativeTime}." : "Останнє завдання виконано {relativeTime}.",
"Use system cron for updates" : "Використовуйте системний cron для оновлень", "Use system cron for updates" : "Використовуйте системний cron для оновлень",
"Maximum read count per feed" : "Максимальна кількість статей для стрічки", "Maximum read count per feed" : "Максимальна кількість статей для стрічки",

View File

@@ -6,7 +6,6 @@
"Internal server error! Please check your data/nextcloud.log file for additional information!" : "Внутрішня помилка сервера! Щоб отримати додаткову інформацію, перевірте файл data/nextcloud.log!", "Internal server error! Please check your data/nextcloud.log file for additional information!" : "Внутрішня помилка сервера! Щоб отримати додаткову інформацію, перевірте файл data/nextcloud.log!",
"Request failed, Nextcloud is in currently in maintenance mode!" : "Помилка запиту, Nextcloud зараз у режимі обслуговування!", "Request failed, Nextcloud is in currently in maintenance mode!" : "Помилка запиту, Nextcloud зараз у режимі обслуговування!",
"Unread articles" : "Непрочитані статті", "Unread articles" : "Непрочитані статті",
"News" : "Новини",
"Last job ran {relativeTime}." : "Останнє завдання виконано {relativeTime}.", "Last job ran {relativeTime}." : "Останнє завдання виконано {relativeTime}.",
"Use system cron for updates" : "Використовуйте системний cron для оновлень", "Use system cron for updates" : "Використовуйте системний cron для оновлень",
"Maximum read count per feed" : "Максимальна кількість статей для стрічки", "Maximum read count per feed" : "Максимальна кількість статей для стрічки",

View File

@@ -360,6 +360,10 @@ class Item extends Entity implements IAPI, \JsonSerializable
return json_decode($this->getCategoriesJson()); return json_decode($this->getCategoriesJson());
} }
public function getWordCount(): int {
return self::countWords(strip_tags($this->getBody()));
}
/** /**
* Turns entity attributes into an array * Turns entity attributes into an array
*/ */
@@ -384,11 +388,12 @@ class Item extends Entity implements IAPI, \JsonSerializable
'starred' => $this->isStarred(), 'starred' => $this->isStarred(),
'lastModified' => $this->getLastModified(), 'lastModified' => $this->getLastModified(),
'rtl' => $this->getRtl(), 'rtl' => $this->getRtl(),
'intro' => $this->getIntro(), 'intro' => mb_substr($this->getIntro(), 0, 500),
'fingerprint' => $this->getFingerprint(), 'fingerprint' => $this->getFingerprint(),
'categories' => $this->getCategories(), 'categories' => $this->getCategories(),
'sharedBy' => $this->getSharedBy(), 'sharedBy' => $this->getSharedBy(),
'sharedByDisplayName' => $this->getSharedByDisplayName() 'sharedByDisplayName' => $this->getSharedByDisplayName(),
'wordCount' => $this->getWordCount(),
]; ];
} }
@@ -755,4 +760,11 @@ class Item extends Entity implements IAPI, \JsonSerializable
stripos($mime, 'image/') !== false || stripos($mime, 'image/') !== false ||
stripos($mime, 'video/') !== false)); stripos($mime, 'video/') !== false));
} }
private static function countWords(string $text): int
{
$text = preg_replace('/[\pP\pM]/u', '', $text); // strip punctuation (P) and combination marks (M)
$text = preg_replace('/[^\pL\pN]+/u', ' ', $text); // convert every sequence of non-letters (L) and non-numbers (N) to a space
return 1 + substr_count($text, ' ');
}
} }

View File

@@ -62,6 +62,9 @@
{{ item.pubDate*1000 | relativeTimestamp }} {{ item.pubDate*1000 | relativeTimestamp }}
</time> </time>
</li> </li>
<li class="only-in-compact">
<span class="date">{{ item.wordCount }} words</span>
</li>
<li ng-click="Content.toggleStar(item.id)" <li ng-click="Content.toggleStar(item.id)"
class="util" class="util"
news-stop-propagation> news-stop-propagation>