Просмотр исходного кода

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 12 лет назад
Родитель
Сommit
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
 }