aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xapp/controllers/entryController.php9
-rwxr-xr-xapp/controllers/indexController.php27
-rw-r--r--app/layout/nav_menu.phtml63
-rwxr-xr-xapp/models/Entry.php18
-rw-r--r--app/views/index/index.phtml26
-rw-r--r--public/theme/base.css21
6 files changed, 115 insertions, 49 deletions
diff --git a/app/controllers/entryController.php b/app/controllers/entryController.php
index cb309c567..b772e1703 100755
--- a/app/controllers/entryController.php
+++ b/app/controllers/entryController.php
@@ -31,6 +31,7 @@ class entryController extends ActionController {
$id = Request::param ('id');
$is_read = Request::param ('is_read');
$get = Request::param ('get');
+ $dateMax = Request::param ('dateMax', time ());
if ($is_read) {
$is_read = true;
@@ -41,16 +42,16 @@ class entryController extends ActionController {
$entryDAO = new EntryDAO ();
if ($id == false) {
if (!$get) {
- $entryDAO->markReadEntries ($is_read);
+ $entryDAO->markReadEntries ($is_read, $dateMax);
} else {
$typeGet = $get[0];
$get = substr ($get, 2);
if ($typeGet == 'c') {
- $entryDAO->markReadCat ($get, $is_read);
+ $entryDAO->markReadCat ($get, $is_read, $dateMax);
$this->params = array ('get' => 'c_' . $get);
} elseif ($typeGet == 'f') {
- $entryDAO->markReadFeed ($get, $is_read);
+ $entryDAO->markReadFeed ($get, $is_read, $dateMax);
$this->params = array ('get' => 'f_' . $get);
}
}
@@ -62,7 +63,7 @@ class entryController extends ActionController {
);
Session::_param ('notification', $notif);
} else {
- $entryDAO->updateEntry ($id, $values);
+ $entryDAO->updateEntry ($id, array ('is_read' => $is_read));
}
}
diff --git a/app/controllers/indexController.php b/app/controllers/indexController.php
index 79d430f99..04c74028c 100755
--- a/app/controllers/indexController.php
+++ b/app/controllers/indexController.php
@@ -10,11 +10,14 @@ class indexController extends ActionController {
$feedDAO = new FeedDAO ();
$catDAO = new CategoryDAO ();
+ $error = false;
+
// pour optimiser
$page = Request::param ('page', 1);
$entryDAO->_nbItemsPerPage ($this->view->conf->postsPerPage ());
$entryDAO->_currentPage ($page);
+ // mode de vue (tout ou seulement non lus)
$default_view = $this->view->conf->defaultView ();
$mode = Session::param ('mode');
if ($mode == false) {
@@ -25,14 +28,16 @@ class indexController extends ActionController {
}
}
- $get = Request::param ('get');
- $this->view->get_c = false;
- $this->view->get_f = false;
- $order = $this->view->conf->sortOrder ();
+ // ordre de listage des flux
+ $order = Session::param ('order', $this->view->conf->sortOrder ());
+ // recherche sur les titres (pour le moment)
$search = Request::param ('search');
- $error = false;
+ // récupération de la catégorie/flux à filtrer
+ $get = Request::param ('get');
+ $this->view->get_c = false;
+ $this->view->get_f = false;
// Récupère les flux par catégorie, favoris ou tous
if ($get == 'favoris') {
@@ -72,6 +77,7 @@ class indexController extends ActionController {
}
$this->view->mode = $mode;
+ $this->view->order = $order;
// Cas où on ne choisie ni catégorie ni les favoris
// ou si la catégorie ne correspond à aucune
@@ -110,6 +116,17 @@ class indexController extends ActionController {
Request::forward (array (), true);
}
+ public function changeOrderAction () {
+ $order = Request::param ('order');
+
+ if ($order == 'low_to_high') {
+ Session::_param ('order', 'low_to_high');
+ } else {
+ Session::_param ('order', 'high_to_low');
+ }
+
+ Request::forward (array (), true);
+ }
public function loginAction () {
$this->view->_useLayout (false);
diff --git a/app/layout/nav_menu.phtml b/app/layout/nav_menu.phtml
new file mode 100644
index 000000000..4962c3aa5
--- /dev/null
+++ b/app/layout/nav_menu.phtml
@@ -0,0 +1,63 @@
+<div class="nav_menu">
+ <a class="btn" href="<?php echo _url ('feed', 'actualize'); ?>"><i class="icon i_refresh"></i></a>
+
+ <?php
+ $get = false;
+ $string_mark = 'Tout marquer comme lu';
+ if ($this->get_f) {
+ $get = 'f_' . $this->get_f;
+ $string_mark = 'Marquer le flux comme lu';
+ } elseif ($this->get_c) {
+ $get = 'c_' . $this->get_c;
+ $string_mark = 'Marquer la catégorie comme lue';
+ }
+ ?>
+
+ <?php if (!login_is_conf ($this->conf) || is_logged ()) { ?>
+ <div class="stick">
+ <a class="read_all btn" href="<?php echo _url ('entry', 'read', 'is_read', 1, 'get', $get); ?>">Marquer comme lu</a>
+ <div class="dropdown">
+ <div id="dropdown-read" class="dropdown-target"></div>
+
+ <a class="dropdown-toggle btn" href="#dropdown-read"><i class="icon i_down"></i></a>
+ <ul class="dropdown-menu">
+ <li class="dropdown-close"><a href="#close"><i class="icon i_close"></i></a></li>
+
+ <li class="item"><a href="<?php echo _url ('entry', 'read', 'is_read', 1, 'get', $get); ?>"><?php echo $string_mark; ?></a></li>
+ <li class="separator"></li>
+<?php
+ $date = getdate ();
+ $today = mktime (0, 0, 0, $date['mon'], $date['mday'], $date['year']);
+ $one_week = $today - 604800;
+?>
+ <li class="item"><a href="<?php echo _url ('entry', 'read', 'is_read', 1, 'get', $get, 'dateMax', $today); ?>">Antérieurs à 1 jour</a></li>
+ <li class="item"><a href="<?php echo _url ('entry', 'read', 'is_read', 1, 'get', $get, 'dateMax', $one_week); ?>">Antérieurs à 1 semaine</a></li>
+ </ul>
+ </div>
+ </div>
+ <?php } ?>
+
+ <div class="dropdown">
+ <div id="dropdown-views" class="dropdown-target"></div>
+ <a class="dropdown-toggle btn" href="#dropdown-views">Affichage <i class="icon i_down"></i></a>
+ <ul class="dropdown-menu">
+ <li class="dropdown-close"><a href="#close"><i class="icon i_close"></i></a></li>
+
+ <li class="item">
+ <?php if ($this->mode == 'not_read') { ?>
+ <a class="print_all" href="<?php echo _url ('index', 'changeMode', 'mode', 'all'); ?>">Tout afficher</a>
+ <?php } else { ?>
+ <a class="print_non_read" href="<?php echo _url ('index', 'changeMode', 'mode', 'not_read'); ?>">Afficher les non lus</a>
+ <?php } ?>
+ </li>
+ <li class="separator"></li>
+ <li class="item">
+ <?php if ($this->order == 'low_to_high') { ?>
+ <a href="<?php echo _url ('index', 'changeOrder', 'order', 'high_to_low'); ?>">Plus anciens en premier</a>
+ <?php } else { ?>
+ <a href="<?php echo _url ('index', 'changeOrder', 'order', 'low_to_high'); ?>">Plus récents en premier</a>
+ <?php } ?>
+ </li>
+ </ul>
+ </div>
+</div>
diff --git a/app/models/Entry.php b/app/models/Entry.php
index 001f76b5a..245fea2f6 100755
--- a/app/models/Entry.php
+++ b/app/models/Entry.php
@@ -171,11 +171,11 @@ class EntryDAO extends Model_pdo {
}
}
- public function markReadEntries ($read) {
- $sql = 'UPDATE entry SET is_read = ?';
+ public function markReadEntries ($read, $dateMax) {
+ $sql = 'UPDATE entry SET is_read = ? WHERE date < ?';
$stm = $this->bd->prepare ($sql);
- $values = array ($read);
+ $values = array ($read, $dateMax);
if ($stm && $stm->execute ($values)) {
return true;
@@ -183,11 +183,11 @@ class EntryDAO extends Model_pdo {
return false;
}
}
- public function markReadCat ($id, $read) {
- $sql = 'UPDATE entry e INNER JOIN feed f ON e.id_feed = f.id SET is_read = ? WHERE category = ?';
+ public function markReadCat ($id, $read, $dateMax) {
+ $sql = 'UPDATE entry e INNER JOIN feed f ON e.id_feed = f.id SET is_read = ? WHERE category = ? AND date < ?';
$stm = $this->bd->prepare ($sql);
- $values = array ($read, $id);
+ $values = array ($read, $id, $dateMax);
if ($stm && $stm->execute ($values)) {
return true;
@@ -195,11 +195,11 @@ class EntryDAO extends Model_pdo {
return false;
}
}
- public function markReadFeed ($id, $read) {
- $sql = 'UPDATE entry SET is_read = ? WHERE id_feed = ?';
+ public function markReadFeed ($id, $read, $dateMax) {
+ $sql = 'UPDATE entry SET is_read = ? WHERE id_feed = ? AND date < ?';
$stm = $this->bd->prepare ($sql);
- $values = array ($read, $id);
+ $values = array ($read, $id, $dateMax);
if ($stm && $stm->execute ($values)) {
return true;
diff --git a/app/views/index/index.phtml b/app/views/index/index.phtml
index 3e213d076..7734630ef 100644
--- a/app/views/index/index.phtml
+++ b/app/views/index/index.phtml
@@ -1,30 +1,6 @@
<?php $this->partial ('aside_flux'); ?>
-<div class="nav_menu stick">
- <a class="btn" href="<?php echo _url ('feed', 'actualize'); ?>"><i class="icon i_refresh"></i></a>
-
- <?php
- $get = false;
- $string_mark = 'Tout marquer comme lu';
- if ($this->get_f) {
- $get = 'f_' . $this->get_f;
- $string_mark = 'Marquer le flux comme lu';
- } elseif ($this->get_c) {
- $get = 'c_' . $this->get_c;
- $string_mark = 'Marquer la catégorie comme lue';
- }
- ?>
-
- <?php if (!login_is_conf ($this->conf) || is_logged ()) { ?>
- <a class="read_all btn" href="<?php echo _url ('entry', 'read', 'is_read', 1, 'get', $get); ?>"><?php echo $string_mark; ?></a>
- <?php } ?>
-
- <?php if ($this->mode == 'not_read') { ?>
- <a class="print_all btn" href="<?php echo _url ('index', 'changeMode', 'mode', 'all'); ?>">Tout afficher</a>
- <?php } else { ?>
- <a class="print_non_read btn" href="<?php echo _url ('index', 'changeMode', 'mode', 'not_read'); ?>">Afficher les non lus</a>
- <?php } ?>
-</div>
+<?php $this->partial ('nav_menu'); ?>
<?php
if (isset ($this->entryPaginator)) {
diff --git a/public/theme/base.css b/public/theme/base.css
index 4011ee523..b3295cdd4 100644
--- a/public/theme/base.css
+++ b/public/theme/base.css
@@ -117,6 +117,7 @@ input {
}
.stick {
+ display: inline-block;
white-space: nowrap;
font-size: 0px;
vertical-align: middle;
@@ -137,15 +138,23 @@ input {
.stick input:last-child {
border-radius: 0 3px 3px 0;
}
- .stick .btn+.btn,
- .stick .btn+input,
- .stick input+.btn,
- .stick input+input {
+ .stick .btn + .btn,
+ .stick .btn + input,
+ .stick input + .btn,
+ .stick input + input {
border-left: none;
}
- .stick input+.btn {
+ .stick input + .btn {
border-top: 1px solid #bbb;
}
+ .stick .btn + .dropdown > .btn {
+ border-left: none;
+ border-radius: 0 3px 3px 0;
+ font-size: 0px;
+ }
+ .stick .btn + .dropdown a {
+ font-size: 12px;
+ }
.btn {
display: inline-block;
@@ -284,7 +293,7 @@ input {
.dropdown .dropdown-menu {
display: none;
min-width: 200px;
- margin: -1px 0 0;
+ margin: 5px 0 0;
padding: 5px 0;
position: absolute;
right: 0px;