summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2014-10-20 19:35:22 +0200
committerGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2014-10-20 19:35:22 +0200
commit8a7bab3a55442f85553ab1d897084e89c10f7e05 (patch)
tree3d98b3f07a3bab84b3c39116c9d5e4ec81abdba5
parent1a22a87fb1b1fcb61d201de399c33c2185dc1f6e (diff)
Refactoring of indexController
Global view has been moved to a different action (all is not working) See https://github.com/marienfressinaud/FreshRSS/issues/634 and https://github.com/marienfressinaud/FreshRSS/issues/655
-rw-r--r--app/Controllers/errorController.php2
-rwxr-xr-xapp/Controllers/indexController.php33
-rw-r--r--app/layout/nav_menu.phtml2
-rw-r--r--app/views/helpers/view/global_view.phtml53
-rw-r--r--app/views/index/global.phtml46
-rw-r--r--app/views/index/index.phtml2
-rw-r--r--lib/lib_rss.php4
-rw-r--r--p/scripts/global_view.js3
8 files changed, 79 insertions, 66 deletions
diff --git a/app/Controllers/errorController.php b/app/Controllers/errorController.php
index 76ab930e0..6c080bea8 100644
--- a/app/Controllers/errorController.php
+++ b/app/Controllers/errorController.php
@@ -37,7 +37,7 @@ class FreshRSS_error_Controller extends Minz_ActionController {
if ($this->view->errorMessage == '') {
switch($code_int) {
case 403:
- $this->view->errorMessage = _t('forbidden_access');
+ $this->view->errorMessage = _t('access_denied');
break;
case 404:
default:
diff --git a/app/Controllers/indexController.php b/app/Controllers/indexController.php
index f994e257c..e1ce71b28 100755
--- a/app/Controllers/indexController.php
+++ b/app/Controllers/indexController.php
@@ -1,5 +1,8 @@
<?php
+/**
+ * This class handles main actions of FreshRSS.
+ */
class FreshRSS_index_Controller extends Minz_ActionController {
private $nb_not_read_cat = 0;
@@ -12,10 +15,7 @@ class FreshRSS_index_Controller extends Minz_ActionController {
$token_param = Minz_Request::param('token', '');
$token_is_ok = ($token != '' && $token === $token_param);
if ($output === 'rss' && !$token_is_ok) {
- Minz_Error::error(
- 403,
- array('error' => array(_t('access_denied')))
- );
+ Minz_Error::error(403);
return;
} elseif ($output !== 'rss') {
// "hard" redirection is not required, just ask dispatcher to
@@ -201,17 +201,34 @@ class FreshRSS_index_Controller extends Minz_ActionController {
return false;
}
}
+
+ /**
+ * This action displays the global view of FreshRSS.
+ */
+ public function globalAction() {
+ if (!FreshRSS_Auth::hasAccess() && !Minz_Configuration::allowAnonymous()) {
+ Minz_Error::error(403);
+ }
+
+ Minz_View::appendScript(Minz_Url::display('/scripts/global_view.js?' . @filemtime(PUBLIC_PATH . '/scripts/global_view.js')));
+
+ $catDAO = new FreshRSS_CategoryDAO();
+ $this->view->categories = $catDAO->listCategories();
+ }
+ /**
+ * This action displays the about page of FreshRSS.
+ */
public function aboutAction() {
Minz_View::prependTitle(_t('about') . ' · ');
}
+ /**
+ * This action displays logs of FreshRSS for the current user.
+ */
public function logsAction() {
if (!FreshRSS_Auth::hasAccess()) {
- Minz_Error::error(
- 403,
- array('error' => array(_t('access_denied')))
- );
+ Minz_Error::error(403);
}
Minz_View::prependTitle(_t('logs') . ' · ');
diff --git a/app/layout/nav_menu.phtml b/app/layout/nav_menu.phtml
index bb9468ab1..1a26422df 100644
--- a/app/layout/nav_menu.phtml
+++ b/app/layout/nav_menu.phtml
@@ -240,7 +240,7 @@
<?php echo _i("view-normal"); ?>
</a>
- <?php $url_output['params']['output'] = 'global'; ?>
+ <?php $url_output['a'] = 'global'; unset($url_output['params']['output']); ?>
<a class="view_global btn <?php echo $actual_view == 'global'? 'active' : ''; ?>" title="<?php echo _t('global_view'); ?>" href="<?php echo Minz_Url::display($url_output); ?>">
<?php echo _i("view-global"); ?>
</a>
diff --git a/app/views/helpers/view/global_view.phtml b/app/views/helpers/view/global_view.phtml
deleted file mode 100644
index ae8af820d..000000000
--- a/app/views/helpers/view/global_view.phtml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php $this->partial('nav_menu'); ?>
-
-<?php if (!empty($this->entries)) { ?>
-<div id="stream" class="global categories">
-<?php
- $arUrl = array('c' => 'index', 'a' => 'index', 'params' => array());
- if (FreshRSS_Context::$conf->view_mode !== 'normal') {
- $arUrl['params']['output'] = 'normal';
- }
- $p = Minz_Request::param('state', '');
- if (($p != '') && (FreshRSS_Context::$conf->default_view !== $p)) {
- $arUrl['params']['state'] = $p;
- }
-
- foreach ($this->cat_aside as $cat) {
- $feeds = $cat->feeds();
- if (!empty($feeds)) {
-?>
- <div class="box-category">
- <div class="category">
- <a data-unread="<?php echo formatNumber($cat->nbNotRead()); ?>" class="btn" href="<?php $arUrl['params']['get'] = 'c_' . $cat->id(); echo Minz_Url::display($arUrl); ?>">
- <?php echo $cat->name(); ?>
- </a>
- </div>
- <ul class="feeds">
- <?php foreach ($feeds as $feed) { ?>
- <?php $not_read = $feed->nbNotRead(); ?>
- <li id="f_<?php echo $feed->id(); ?>" class="item<?php echo $feed->inError() ? ' error' : ''; ?><?php echo $feed->nbEntries() == 0 ? ' empty' : ''; ?>">
- <img class="favicon" src="<?php echo $feed->favicon(); ?>" alt="✇" />
- <a class="feed" data-unread="<?php echo formatNumber($feed->nbNotRead()); ?>" data-priority="<?php echo $feed->priority(); ?>" href="<?php $arUrl['params']['get'] = 'f_' . $feed->id(); echo Minz_Url::display($arUrl); ?>">
- <?php echo $feed->name(); ?>
- </a>
- </li>
- <?php } ?>
- </ul>
- </div>
-<?php
- }
- }
-?>
-</div>
-
-<div id="overlay"></div>
-<div id="panel"<?php echo FreshRSS_Context::$conf->display_posts ? '' : ' class="hide_posts"'; ?>>
- <a class="close" href="#"><?php echo _i('close'); ?></a>
-</div>
-
-<?php } else { ?>
-<div id="stream" class="prompt alert alert-warn global">
- <h2><?php echo _t('no_feed_to_display'); ?></h2>
- <a href="<?php echo _url('subscription', 'index'); ?>"><?php echo _t('think_to_add'); ?></a><br /><br />
-</div>
-<?php } ?>
diff --git a/app/views/index/global.phtml b/app/views/index/global.phtml
new file mode 100644
index 000000000..a72e431df
--- /dev/null
+++ b/app/views/index/global.phtml
@@ -0,0 +1,46 @@
+<?php //$this->partial('nav_menu'); ?>
+
+<div id="stream" class="global categories">
+<?php
+ $url_base = array(
+ 'c' => 'index',
+ 'a' => 'index',
+ 'params' => array(
+ 'state' => FreshRSS_Context::$state
+ )
+ );
+
+ foreach ($this->categories as $cat) {
+ $feeds = $cat->feeds();
+ $url_base['params']['get'] = 'c_' . $cat->id();
+
+ if (!empty($feeds)) {
+?>
+ <div class="box">
+ <div class="box-title"><a data-unread="<?php echo format_number($cat->nbNotRead()); ?>" href="<?php echo Minz_Url::display($url_base); ?>"><?php echo $cat->name(); ?></a></div>
+
+ <ul class="box-content">
+ <?php
+ foreach ($feeds as $feed) {
+ $nb_not_read = $feed->nbNotRead();
+ $error = $feed->inError() ? 'error ' : '';
+ $empty = $feed->nbEntries() === 0 ? 'empty ' : '';
+ $url_base['params']['get'] = 'f_' . $feed->id();
+ ?>
+ <li class="item feed<?php echo $error, $empty; ?>">
+ <img class="favicon" src="<?php echo $feed->favicon(); ?>" alt="✇" />
+ <a data-unread="<?php echo format_number($feed->nbNotRead()); ?>" data-priority="<?php echo $feed->priority(); ?>" href="<?php echo Minz_Url::display($url_base); ?>"><?php echo $feed->name(); ?></a>
+ </li>
+ <?php } ?>
+ </ul>
+ </div>
+<?php
+ }
+ }
+?>
+</div>
+
+<div id="overlay"></div>
+<div id="panel"<?php echo FreshRSS_Context::$conf->display_posts ? '' : ' class="hide_posts"'; ?>>
+ <a class="close" href="#"><?php echo _i('close'); ?></a>
+</div>
diff --git a/app/views/index/index.phtml b/app/views/index/index.phtml
index a59063557..8b93461dd 100644
--- a/app/views/index/index.phtml
+++ b/app/views/index/index.phtml
@@ -7,8 +7,6 @@ if (FreshRSS_Auth::hasAccess() || Minz_Configuration::allowAnonymous()) {
$this->renderHelper('view/normal_view');
} elseif ($output === 'reader') {
$this->renderHelper('view/reader_view');
- } elseif ($output === 'global') {
- $this->renderHelper('view/global_view');
} elseif ($output === 'rss') {
$this->renderHelper('view/rss_view');
} else {
diff --git a/lib/lib_rss.php b/lib/lib_rss.php
index 9abdf18ce..80eb206d2 100644
--- a/lib/lib_rss.php
+++ b/lib/lib_rss.php
@@ -60,6 +60,10 @@ function formatNumber($n, $precision = 0) {
return str_replace(' ', ' ', //Espace insécable //TODO: remplacer par une espace _fine_ insécable
number_format($n, $precision, '.', ' ')); //number_format does not seem to be Unicode-compatible
}
+function format_number($n, $precision = 0) {
+ // TODO: coding style, prefer THIS function. Remove formatNumber.
+ return formatNumber($n, $precision);
+}
function formatBytes($bytes, $precision = 2, $system = 'IEC') {
if ($system === 'IEC') {
diff --git a/p/scripts/global_view.js b/p/scripts/global_view.js
index 6e1f61066..8c2e6c1a2 100644
--- a/p/scripts/global_view.js
+++ b/p/scripts/global_view.js
@@ -50,7 +50,8 @@ function init_close_panel() {
}
function init_global_view() {
- $("#stream .box-category a").click(function () {
+ // TODO: should be based on generic classes.
+ $(".box a").click(function () {
var link = $(this).attr("href");
load_panel(link);