Răsfoiți Sursa

Fix issue #101 : option interdiction anonymes

Ajout d'une option pour interdire la lecture anonyme (interdit par
défaut)

Correction de l'internationalisation pour la pagination des logs
Marien Fressinaud 13 ani în urmă
părinte
comite
22febc1351

+ 3 - 0
app/controllers/configureController.php

@@ -147,6 +147,7 @@ class configureController extends ActionController {
 			$sort = Request::param ('sort_order', 'low_to_high');
 			$old = Request::param ('old_entries', 3);
 			$mail = Request::param ('mail_login', false);
+			$anon = Request::param ('anon_access', 'no');
 			$openArticle = Request::param ('mark_open_article', 'no');
 			$openSite = Request::param ('mark_open_site', 'no');
 			$scroll = Request::param ('mark_scroll', 'no');
@@ -161,6 +162,7 @@ class configureController extends ActionController {
 			$this->view->conf->_sortOrder ($sort);
 			$this->view->conf->_oldEntries ($old);
 			$this->view->conf->_mailLogin ($mail);
+			$this->view->conf->_anonAccess ($anon);
 			$this->view->conf->_markWhen (array (
 				'article' => $openArticle,
 				'site' => $openSite,
@@ -178,6 +180,7 @@ class configureController extends ActionController {
 				'sort_order' => $this->view->conf->sortOrder (),
 				'old_entries' => $this->view->conf->oldEntries (),
 				'mail_login' => $this->view->conf->mailLogin (),
+				'anon_access' => $this->view->conf->anonAccess (),
 				'mark_when' => $this->view->conf->markWhen (),
 				'url_shaarli' => $this->view->conf->urlShaarli (),
 			);

+ 10 - 0
app/i18n/en.php

@@ -45,6 +45,12 @@ return array (
 	'older_first'			=> 'Oldest first',
 	'newer_first'			=> 'Newer first',
 
+	// Pagination
+	'first'				=> 'First',
+	'previous'			=> 'Previous',
+	'next'				=> 'Next',
+	'last'				=> 'Last',
+
 	// CONTROLLERS
 	'article_published_on'		=> 'This article originally appeared on <a href="%s">%s</a>',
 	'article_published_on_author'	=> 'This article originally appeared on <a href="%s">%s</a> by %s',
@@ -144,6 +150,7 @@ return array (
 	'delete_articles_every'		=> 'Remove articles every',
 	'month'				=> 'months',
 	'persona_connection_email'	=> 'Login mail address (use <a href="https://persona.org/">Persona</a>)',
+	'allow_anonymous'		=> 'Allow anonymous reading',
 	'reading_configuration'		=> 'Reading configuration',
 	'articles_per_page'		=> 'Number of articles per page',
 	'default_view'			=> 'Default view',
@@ -196,6 +203,9 @@ return array (
 	'logs'				=> 'Logs',
 	'logs_empty'			=> 'Log file is empty',
 
+	'forbidden_access'		=> 'Forbidden access',
+	'forbidden_access_description'	=> 'Access is password protected, please <a class="signin" href="#">sign in</a> to read your feeds.',
+
 	// DATE
 	'january'			=> 'january',
 	'february'			=> 'february',

+ 10 - 0
app/i18n/fr.php

@@ -45,6 +45,12 @@ return array (
 	'older_first'			=> 'Plus anciens en premier',
 	'newer_first'			=> 'Plus récents en premier',
 
+	// Pagination
+	'first'				=> 'Début',
+	'previous'			=> 'Précédent',
+	'next'				=> 'Suivant',
+	'last'				=> 'Fin',
+
 	// CONTROLLERS
 	'article_published_on'		=> 'Article publié initialement sur <a href="%s">%s</a>',
 	'article_published_on_author'	=> 'Article publié initialement sur <a href="%s">%s</a> par %s',
@@ -144,6 +150,7 @@ return array (
 	'delete_articles_every'		=> 'Supprimer les articles tous les',
 	'month'				=> 'mois',
 	'persona_connection_email'	=> 'Adresse mail de connexion (utilise <a href="https://persona.org/">Persona</a>)',
+	'allow_anonymous'		=> 'Autoriser la lecture anonyme',
 	'reading_configuration'		=> 'Configuration de lecture',
 	'articles_per_page'		=> 'Nombre d\'articles par page',
 	'default_view'			=> 'Vue par défaut',
@@ -196,6 +203,9 @@ return array (
 	'logs'				=> 'Logs',
 	'logs_empty'			=> 'Les logs sont vides',
 
+	'forbidden_access'		=> 'Accès interdit',
+	'forbidden_access_description'	=> 'L\'accès est protégé par un mot de passe, veuillez <a class="signin" href="#">vous connecter</a> pour accéder aux flux.',
+
 	// DATE
 	'january'			=> 'janvier',
 	'february'			=> 'février',

+ 6 - 2
app/layout/header.phtml

@@ -1,9 +1,9 @@
 <?php if (login_is_conf ($this->conf)) { ?>
 <ul class="nav nav-head">
 	<?php if (!is_logged ()) { ?>
-	<li class="item"><i class="icon i_login"></i> <a id="signin" href="#"><?php echo Translate::t ('login'); ?></a></li>
+	<li class="item"><i class="icon i_login"></i> <a class="signin" href="#"><?php echo Translate::t ('login'); ?></a></li>
 	<?php } else { ?>
-	<li class="item"><i class="icon i_logout"></i> <a id="signout" href="#"><?php echo Translate::t ('logout'); ?></a></li>
+	<li class="item"><i class="icon i_logout"></i> <a class="signout" href="#"><?php echo Translate::t ('logout'); ?></a></li>
 	<?php } ?>
 </ul>
 <?php } ?>
@@ -15,6 +15,9 @@
 	</div>
 
 	<div class="item search">
+		<?php if(!login_is_conf ($this->conf) ||
+		         is_logged() ||
+		         $this->conf->anonAccess() == 'yes') { ?>
 		<form action="<?php echo _url ('index', 'index'); ?>" method="get">
 			<div class="stick">
 				<?php $search = Request::param ('search', ''); ?>
@@ -38,6 +41,7 @@
 				<button class="btn" type="submit"><i class="icon i_search"></i></button>
 			</div>
 		</form>
+		<?php } ?>
 	</div>
 
 	<?php if (!login_is_conf ($this->conf) || is_logged ()) { ?>

+ 10 - 15
app/layout/persona.phtml

@@ -1,4 +1,5 @@
 <?php if (login_is_conf ($this->conf)) { ?>
+
 <?php
 	$mail = Session::param ('mail', 'null');
 	if ($mail != 'null') {
@@ -12,21 +13,15 @@ login_url = "<?php echo Url::display (array ('a' => 'login')); ?>";
 logout_url = "<?php echo Url::display (array ('a' => 'logout')); ?>";
 currentUser = <?php echo $mail; ?>;
 
-var signinLink = $('a#signin');
-if (signinLink) {
-	signinLink.click(function() {
-		navigator.id.request();
-		return false;
-	});
-};
- 
-var signoutLink = $('a#signout');
-if (signoutLink) {
-	signoutLink.click(function() {
-		navigator.id.logout();
-		return false;
-	});
-};
+$('a.signin').click(function() {
+	navigator.id.request();
+	return false;
+});
+
+$('a.signout').click(function() {
+	navigator.id.logout();
+	return false;
+});
 
 navigator.id.watch({
 	loggedInUser: currentUser,

+ 28 - 0
app/models/RSSConfiguration.php

@@ -17,6 +17,8 @@ class RSSConfiguration extends Model {
 	private $mail_login = '';
 	private $mark_when = array ();
 	private $url_shaarli = '';
+	private $theme;
+	private $anon_access;
 	
 	public function __construct () {
 		$confDAO = new RSSConfigurationDAO ();
@@ -32,6 +34,8 @@ class RSSConfiguration extends Model {
 		$this->_mailLogin ($confDAO->mail_login);
 		$this->_markWhen ($confDAO->mark_when);
 		$this->_urlShaarli ($confDAO->url_shaarli);
+		$this->_theme ($confDAO->theme);
+		$this->_anonAccess ($confDAO->anon_access);
 	}
 	
 	public function availableLanguages () {
@@ -82,6 +86,12 @@ class RSSConfiguration extends Model {
 	public function urlShaarli () {
 		return $this->url_shaarli;
 	}
+	public function theme () {
+		return $this->theme;
+	}
+	public function anonAccess () {
+		return $this->anon_access;
+	}
 
 	public function _language ($value) {
 		if (!isset ($this->available_languages[$value])) {
@@ -171,6 +181,16 @@ class RSSConfiguration extends Model {
 			$this->url_shaarli = $value;
 		}
 	}
+	public function _theme ($value) {
+		$this->theme = $value;
+	}
+	public function _anonAccess ($value) {
+		if ($value == 'yes') {
+			$this->anon_access = 'yes';
+		} else {
+			$this->anon_access = 'no';
+		}
+	}
 }
 
 class RSSConfigurationDAO extends Model_array {
@@ -198,6 +218,8 @@ class RSSConfigurationDAO extends Model_array {
 		'scroll' => 'no'
 	);
 	public $url_shaarli = '';
+	public $theme = 'default';
+	public $anon_access = 'no';
 
 	public function __construct () {
 		parent::__construct (PUBLIC_PATH . '/data/Configuration.array.php');
@@ -238,6 +260,12 @@ class RSSConfigurationDAO extends Model_array {
 		if (isset ($this->array['url_shaarli'])) {
 			$this->url_shaarli = $this->array['url_shaarli'];
 		}
+		if (isset ($this->array['theme'])) {
+			$this->theme = $this->array['theme'];
+		}
+		if (isset ($this->array['anon_access'])) {
+			$this->anon_access = $this->array['anon_access'];
+		}
 	}
 	
 	public function update ($values) {

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

@@ -31,6 +31,10 @@
 			<div class="group-controls">
 				<input type="email" id="mail_login" name="mail_login" value="<?php echo $mail ? $mail : ''; ?>" placeholder="<?php echo Translate::t ('blank_to_disable'); ?>" />
 				<noscript><b><?php echo Translate::t ('javascript_should_be_activated'); ?></b></noscript>
+				<label class="checkbox" for="anon_access">
+					<input type="checkbox" name="anon_access" id="anon_access" value="yes"<?php echo $this->conf->anonAccess () == 'yes' ? ' checked="checked"' : ''; ?> />
+					<?php echo Translate::t ('allow_anonymous'); ?>
+				</label>
 			</div>
 		</div>
 	

+ 4 - 4
app/views/helpers/logs_pagination.phtml

@@ -9,14 +9,14 @@
 	<?php $params[$getteur] = 1; ?>
 	<li class="item pager-first">
 		<?php if ($this->currentPage > 1) { ?>
-		<a href="<?php echo Url::display (array ('c' => $c, 'a' => $a, 'params' => $params)); ?>">« Début</a>
+		<a href="<?php echo Url::display (array ('c' => $c, 'a' => $a, 'params' => $params)); ?>">« <?php echo Translate::t('first'); ?></a>
 		<?php } ?>
 	</li>
 
 	<?php $params[$getteur] = $this->currentPage - 1; ?>
 	<li class="item pager-previous">
 		<?php if ($this->currentPage > 1) { ?>
-		<a href="<?php echo Url::display (array ('c' => $c, 'a' => $a, 'params' => $params)); ?>">‹ Précédent</a>
+		<a href="<?php echo Url::display (array ('c' => $c, 'a' => $a, 'params' => $params)); ?>">‹ <?php echo Translate::t('previous'); ?></a>
 		<?php } ?>
 	</li>
 
@@ -34,13 +34,13 @@
 	<?php $params[$getteur] = $this->currentPage + 1; ?>
 	<li class="item pager-next">
 		<?php if ($this->currentPage < $this->nbPage) { ?>
-		<a href="<?php echo Url::display (array ('c' => $c, 'a' => $a, 'params' => $params)); ?>">Suivant ›</a>
+		<a href="<?php echo Url::display (array ('c' => $c, 'a' => $a, 'params' => $params)); ?>"><?php echo Translate::t('next'); ?> ›</a>
 		<?php } ?>
 	</li>
 	<?php $params[$getteur] = $this->nbPage; ?>
 	<li class="item pager-last">
 		<?php if ($this->currentPage < $this->nbPage) { ?>
-		<a href="<?php echo Url::display (array ('c' => $c, 'a' => $a, 'params' => $params)); ?>">Fin »</a>
+		<a href="<?php echo Url::display (array ('c' => $c, 'a' => $a, 'params' => $params)); ?>"><?php echo Translate::t('last'); ?> »</a>
 		<?php } ?>
 	</li>
 </ul>

+ 0 - 0
app/views/helpers/global_view.phtml → app/views/helpers/view/global_view.phtml


+ 0 - 0
app/views/helpers/normal_view.phtml → app/views/helpers/view/normal_view.phtml


+ 0 - 0
app/views/helpers/reader_view.phtml → app/views/helpers/view/reader_view.phtml


+ 0 - 0
app/views/helpers/rss_view.phtml → app/views/helpers/view/rss_view.phtml


+ 18 - 7
app/views/index/index.phtml

@@ -2,12 +2,23 @@
 
 $output = Request::param ('output', 'normal');
 
-if ($output == 'rss') {
-	$this->renderHelper ('rss_view');
-} elseif($output == 'reader') {
-	$this->renderHelper ('reader_view');
-} elseif($output == 'global') {
-	$this->renderHelper ('global_view');
+if(!login_is_conf ($this->conf) ||
+   is_logged() ||
+   $this->conf->anonAccess() == 'yes') {
+	if($output == 'rss') {
+		$this->renderHelper ('view/rss_view');
+	} elseif($output == 'reader') {
+		$this->renderHelper ('view/reader_view');
+	} elseif($output == 'global') {
+		$this->renderHelper ('view/global_view');
+	} else {
+		$this->renderHelper ('view/normal_view');
+	}
 } else {
-	$this->renderHelper ('normal_view');
+?>
+<div class="post content">
+	<h1><?php echo Translate::t ('forbidden_access'); ?></h1>
+	<p><?php echo Translate::t ('forbidden_access_description'); ?></p>
+</div>
+<?php
 }