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 @@
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 @@
-
+
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 @@
-partial('nav_menu'); ?>
-
-entries)) { ?>
-
- '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)) {
-?>
-
-
-
-
-
-display_posts ? '' : ' class="hide_posts"'; ?>>
-
-
-
-
-
-
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 @@
+partial('nav_menu'); ?>
+
+
+ '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)) {
+?>
+
+
+
+
+ nbNotRead();
+ $error = $feed->inError() ? 'error ' : '';
+ $empty = $feed->nbEntries() === 0 ? 'empty ' : '';
+ $url_base['params']['get'] = 'f_' . $feed->id();
+ ?>
+ -
+
+ name(); ?>
+
+
+
+
+
+
+
+
+display_posts ? '' : ' class="hide_posts"'; ?>>
+
+
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);