Browse Source

Option pour marquer les articles comme lus dès la réception

https://github.com/marienfressinaud/FreshRSS/issues/237
https://github.com/marienfressinaud/FreshRSS/issues/309
Alexandre Alapetite 12 years ago
parent
commit
0425432271

+ 2 - 0
app/controllers/configureController.php

@@ -171,6 +171,7 @@ class configureController extends ActionController {
 			$openArticle = Request::param ('mark_open_article', 'no');
 			$openSite = Request::param ('mark_open_site', 'no');
 			$scroll = Request::param ('mark_scroll', 'no');
+			$reception = Request::param ('mark_upon_reception', 'no');
 			$theme = Request::param ('theme', 'default');
 			$topline_read = Request::param ('topline_read', 'no');
 			$topline_favorite = Request::param ('topline_favorite', 'no');
@@ -200,6 +201,7 @@ class configureController extends ActionController {
 				'article' => $openArticle,
 				'site' => $openSite,
 				'scroll' => $scroll,
+				'reception' => $reception,
 			));
 			$this->view->conf->_theme ($theme);
 			$this->view->conf->_topline_read ($topline_read);

+ 6 - 0
app/controllers/feedController.php

@@ -88,6 +88,8 @@ class feedController extends ActionController {
 						$feed->_id ($id);
 						$feed->faviconPrepare();
 
+						$is_read = $this->view->conf->markUponReception() === 'yes' ? 1 : 0;
+
 						$entryDAO = new EntryDAO ();
 						$entries = $feed->entries ();
 						usort($entries, 'self::entryDateComparer');
@@ -105,6 +107,7 @@ class feedController extends ActionController {
 								$values = $entry->toArray ();
 								$values['id_feed'] = $feed->id ();
 								$values['id'] = min(time(), $entry->date (true)) . '.' . rand(0, 999999);
+								$values['is_read'] = $is_read;
 								$entryDAO->addEntry ($values);
 							}
 						}
@@ -197,6 +200,8 @@ class feedController extends ActionController {
 				$entries = $feed->entries ();
 				usort($entries, 'self::entryDateComparer');
 
+				$is_read = $this->view->conf->markUponReception() === 'yes' ? 1 : 0;
+
 				//For this feed, check last n entry GUIDs already in database
 				$existingGuids = array_fill_keys ($entryDAO->listLastGuidsByFeed ($feed->id (), count($entries) + 10), 1);
 
@@ -210,6 +215,7 @@ class feedController extends ActionController {
 						$values = $entry->toArray ();
 						//Use declared date at first import, otherwise use discovery date
 						$values['id'] = empty($existingGuids) ? min(time(), $entry->date (true)) . '.' . rand(0, 999999) : microtime(true);
+						$values['is_read'] = $is_read;
 						$entryDAO->addEntry ($values);
 					}
 				}

+ 7 - 6
app/i18n/en.php

@@ -165,16 +165,17 @@ return array (
 	'sort_order'			=> 'Sort order',
 	'auto_load_more'		=> 'Load next articles at the page bottom',
 	'display_articles_unfolded'	=> 'Show articles unfolded by default',
-	'after_onread'			=> 'After marked as read,',
-	'jump_next'			=> 'jump to next unread sibling',
+	'after_onread'			=> 'After “mark all as read”,',
+	'jump_next'			=> 'jump to next unread sibling (feed or category)',
 	'reading_icons'			=> 'Reading icons',
 	'top_line'			=> 'Top line',
 	'bottom_line'			=> 'Bottom line',
 	'img_with_lazyload'		=> 'Use "lazy load" mode to load pictures',
-	'auto_read_when'		=> 'Mark as read when',
-	'article_selected'		=> 'article is selected',
-	'article_open_on_website'	=> 'article is opened on its original website',
-	'scroll'			=> 'page scrolls',
+	'auto_read_when'		=> 'Mark article as read…',
+	'article_selected'		=> 'when article is selected',
+	'article_open_on_website'	=> 'when article is opened on its original website',
+	'scroll'			=> 'during page scrolls',
+	'upon_reception'		=> 'upon reception of new articles',
 	'your_shaarli'			=> 'Your Shaarli',
 	'your_poche'			=> 'Your Poche',
 	'your_diaspora_pod'		=> 'Your Diaspora* pod',

+ 6 - 5
app/i18n/fr.php

@@ -165,16 +165,17 @@ return array (
 	'sort_order'			=> 'Ordre de tri',
 	'auto_load_more'		=> 'Charger les articles suivants en bas de page',
 	'display_articles_unfolded'	=> 'Afficher les articles dépliés par défaut',
-	'after_onread'			=> 'Après marqué comme lu,',
-	'jump_next'			=> 'sauter au prochain voisin non lu',
+	'after_onread'			=> 'Après “marquer tout comme lu”,',
+	'jump_next'			=> 'sauter au prochain voisin non lu (flux ou catégorie)',
 	'reading_icons'			=> 'Icônes de lecture',
 	'top_line'			=> 'Ligne du haut',
 	'bottom_line'			=> 'Ligne du bas',
 	'img_with_lazyload'		=> 'Utiliser le mode “chargement différé” pour les images',
-	'auto_read_when'		=> 'Marquer comme lu lorsque',
-	'article_selected'		=> 'l’article est sélectionné',
-	'article_open_on_website'	=> 'l’article est ouvert sur le site d’origine',
+	'auto_read_when'		=> 'Marquer un article comme lu…',
+	'article_selected'		=> 'lorsque l’article est sélectionné',
+	'article_open_on_website'	=> 'lorsque l’article est ouvert sur le site d’origine',
 	'scroll'			=> 'au défilement de la page',
+	'upon_reception'		=> 'dès la réception d’un nouvel article',
 	'your_shaarli'			=> 'Votre Shaarli',
 	'your_poche'			=> 'Votre Poche',
 	'your_diaspora_pod'		=> 'Votre pod Diaspora*',

+ 11 - 6
app/models/RSSConfiguration.php

@@ -113,6 +113,9 @@ class RSSConfiguration extends Model {
 	public function markWhenScroll () {
 		return $this->mark_when['scroll'];
 	}
+	public function markUponReception () {
+		return $this->mark_when['reception'];
+	}
 	public function sharing ($key = false) {
 		if ($key === false) {
 			return $this->sharing;
@@ -171,11 +174,8 @@ class RSSConfiguration extends Model {
 		$this->language = $value;
 	}
 	public function _postsPerPage ($value) {
-		if (ctype_digit ($value) && $value > 0) {
-			$this->posts_per_page = $value;
-		} else {
-			$this->posts_per_page = 10;
-		}
+		$value = intval($value);
+		$this->posts_per_page = $value > 0 ? $value : 10;
 	}
 	public function _viewMode ($value) {
 		if ($value == 'global' || $value == 'reader') {
@@ -244,10 +244,14 @@ class RSSConfiguration extends Model {
 		if(!isset($values['scroll'])) {
 			$values['scroll'] = 'yes';
 		}
+		if(!isset($values['reception'])) {
+			$values['reception'] = 'no';
+		}
 
 		$this->mark_when['article'] = $values['article'];
 		$this->mark_when['site'] = $values['site'];
 		$this->mark_when['scroll'] = $values['scroll'];
+		$this->mark_when['reception'] = $values['reception'];
 	}
 	public function _sharing ($values) {
 		$are_url = array ('shaarli', 'poche', 'diaspora');
@@ -345,7 +349,8 @@ class RSSConfigurationDAO extends Model_array {
 	public $mark_when = array (
 		'article' => 'yes',
 		'site' => 'yes',
-		'scroll' => 'no'
+		'scroll' => 'no',
+		'reception' => 'no'
 	);
 	public $sharing = array (
 		'shaarli' => '',

+ 4 - 0
app/views/configure/display.phtml

@@ -143,6 +143,10 @@
 					<input type="checkbox" name="mark_scroll" id="check_scroll" value="yes"<?php echo $this->conf->markWhenScroll () == 'yes' ? ' checked="checked"' : ''; ?> />
 					<?php echo Translate::t ('scroll'); ?>
 				</label>
+				<label class="checkbox" for="check_reception">
+					<input type="checkbox" name="mark_upon_reception" id="check_reception" value="yes"<?php echo $this->conf->markUponReception () == 'yes' ? ' checked="checked"' : ''; ?> />
+					<?php echo Translate::t ('upon_reception'); ?>
+				</label>
 			</div>
 		</div>