summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2012-11-05 21:40:58 +0100
committerGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2012-11-05 21:40:58 +0100
commit209fb252dcce8b69d05f796a914beb0e0bb7f9eb (patch)
tree90b5e72a280f5bae15e4d7895f4f6fc9adb34fce
parent33e47c5ac4cb622b51b0b23c7cad03d91ca1e26c (diff)
Fix issue #4 : ajout des retours utilisateur
-rw-r--r--app/App_FrontController.php10
-rwxr-xr-xapp/controllers/configureController.php35
-rwxr-xr-xapp/controllers/entryController.php7
-rwxr-xr-xapp/controllers/feedController.php35
-rw-r--r--app/layout/layout.phtml6
-rw-r--r--public/data/Configuration.array.php17
-rw-r--r--public/scripts/notification.js17
-rw-r--r--public/theme/base.css38
8 files changed, 147 insertions, 18 deletions
diff --git a/app/App_FrontController.php b/app/App_FrontController.php
index 80c566781..83d4372eb 100644
--- a/app/App_FrontController.php
+++ b/app/App_FrontController.php
@@ -13,6 +13,7 @@ class App_FrontController extends FrontController {
Session::init (); // lancement de la session doit se faire après chargement des modèles sinon bug (pourquoi ?)
$this->loadParamsView ();
$this->loadStylesAndScripts ();
+ $this->loadNotifications ();
}
private function loadLibs () {
@@ -31,6 +32,7 @@ class App_FrontController extends FrontController {
View::prependStyle (Url::display ('/theme/base.css'));
View::appendScript ('https://login.persona.org/include.js');
View::appendScript (Url::display ('/scripts/jquery.js'));
+ View::appendScript (Url::display ('/scripts/notification.js'));
}
private function loadParamsView () {
@@ -39,4 +41,12 @@ class App_FrontController extends FrontController {
$entryDAO = new EntryDAO ();
View::_param ('nb_not_read', $entryDAO->countNotRead ());
}
+
+ private function loadNotifications () {
+ $notif = Session::param ('notification');
+ if ($notif) {
+ View::_param ('notification', $notif);
+ Session::_param ('notification');
+ }
+ }
}
diff --git a/app/controllers/configureController.php b/app/controllers/configureController.php
index 40c514b5a..d86cda14c 100755
--- a/app/controllers/configureController.php
+++ b/app/controllers/configureController.php
@@ -41,6 +41,14 @@ class configureController extends ActionController {
$catDAO->addCategory ($values);
}
+ // notif
+ $notif = array (
+ 'type' => 'good',
+ 'content' => 'Les catégories ont été mises à jour'
+ );
+ Session::_param ('notification', $notif);
+
+ Request::forward (array ('c' => 'configure', 'a' => 'categorize'), true);
}
$this->view->categories = $catDAO->listCategories ();
@@ -75,6 +83,15 @@ class configureController extends ActionController {
$feedDAO->updateFeed ($id, $values);
$this->view->flux->_category ($cat);
+
+ // notif
+ $notif = array (
+ 'type' => 'good',
+ 'content' => 'Le flux a été mis à jour'
+ );
+ Session::_param ('notification', $notif);
+
+ Request::forward (array ('c' => 'configure', 'a' => 'feed', 'params' => array ('id' => $id)), true);
}
View::prependTitle ('Gestion des flux RSS - ' . $this->view->flux->name () . ' - ');
@@ -113,6 +130,15 @@ class configureController extends ActionController {
$confDAO->update ($values);
Session::_param ('conf', $this->view->conf);
Session::_param ('mail', $this->view->conf->mailLogin ());
+
+ // notif
+ $notif = array (
+ 'type' => 'good',
+ 'content' => 'La configuration a été mise à jour'
+ );
+ Session::_param ('notification', $notif);
+
+ Request::forward (array ('c' => 'configure', 'a' => 'display'), true);
}
View::prependTitle ('Gestion générale et affichage - ');
@@ -183,6 +209,15 @@ class configureController extends ActionController {
$confDAO = new RSSConfigurationDAO ();
$confDAO->update ($values);
Session::_param ('conf', $this->view->conf);
+
+ // notif
+ $notif = array (
+ 'type' => 'good',
+ 'content' => 'Les raccourcis ont été mis à jour'
+ );
+ Session::_param ('notification', $notif);
+
+ Request::forward (array ('c' => 'configure', 'a' => 'shortcut'), true);
}
View::prependTitle ('Gestion des raccourcis - ');
diff --git a/app/controllers/entryController.php b/app/controllers/entryController.php
index cf510e362..ca702191f 100755
--- a/app/controllers/entryController.php
+++ b/app/controllers/entryController.php
@@ -40,6 +40,13 @@ class entryController extends ActionController {
$entryDAO = new EntryDAO ();
if ($id == false) {
$entryDAO->updateEntries ($values);
+
+ // notif
+ $notif = array (
+ 'type' => 'good',
+ 'content' => 'Tous les flux ont été marqués comme lu'
+ );
+ Session::_param ('notification', $notif);
} else {
$entryDAO->updateEntry ($id, $values);
}
diff --git a/app/controllers/feedController.php b/app/controllers/feedController.php
index eed8ccafa..d459ba0cb 100755
--- a/app/controllers/feedController.php
+++ b/app/controllers/feedController.php
@@ -43,8 +43,20 @@ class feedController extends ActionController {
);
$entryDAO->addEntry ($values);
}
+
+ // notif
+ $notif = array (
+ 'type' => 'good',
+ 'content' => 'Le flux <em>' . $feed->url () . '</em> a bien été ajouté'
+ );
+ Session::_param ('notification', $notif);
} catch (Exception $e) {
- // TODO ajouter une erreur : url non valide
+ // notif
+ $notif = array (
+ 'type' => 'bad',
+ 'content' => 'L\'url <em>' . $url . '</em> est invalide'
+ );
+ Session::_param ('notification', $notif);
}
Request::forward (array (), true);
@@ -81,6 +93,13 @@ class feedController extends ActionController {
$entryDAO->cleanOldEntries ($this->view->conf->oldEntries ());
+ // notif
+ $notif = array (
+ 'type' => 'good',
+ 'content' => 'Les flux ont été mis à jour'
+ );
+ Session::_param ('notification', $notif);
+
Request::forward (array (), true);
}
@@ -139,6 +158,13 @@ class feedController extends ActionController {
);
$feedDAO->addFeed ($values);
}
+
+ // notif
+ $notif = array (
+ 'type' => 'good',
+ 'content' => 'Les flux ont été importés'
+ );
+ Session::_param ('notification', $notif);
Request::forward (array ('c' => 'configure', 'a' => 'importExport'));
}
@@ -155,6 +181,13 @@ class feedController extends ActionController {
$feedDAO = new FeedDAO ();
$feedDAO->deleteFeed ($id);
+
+ // notif
+ $notif = array (
+ 'type' => 'good',
+ 'content' => 'Le flux a été supprimé'
+ );
+ Session::_param ('notification', $notif);
Request::forward (array ('c' => 'configure', 'a' => 'feed'), true);
}
diff --git a/app/layout/layout.phtml b/app/layout/layout.phtml
index e73f14ba1..bae395033 100644
--- a/app/layout/layout.phtml
+++ b/app/layout/layout.phtml
@@ -17,5 +17,11 @@
<?php $this->partial ('persona'); ?>
+<?php if (isset ($this->notification)) { ?>
+<div id="notification" class="<?php echo $this->notification['type']; ?>">
+<?php echo $this->notification['content']; ?>
+<a class="close" href="">X</a>
+</div>
+<?php } ?>
</body>
</html>
diff --git a/public/data/Configuration.array.php b/public/data/Configuration.array.php
index 57e1710c5..b3d9bbc7f 100644
--- a/public/data/Configuration.array.php
+++ b/public/data/Configuration.array.php
@@ -1,18 +1 @@
<?php
-return array (
- 'posts_per_page' => 10,
- 'default_view' => 'all',
- 'display_posts' => 'no',
- 'sort_order' => 'low_to_high',
- 'old_entries' => 3,
- 'shortcuts' => array (
- 'mark_read' => 'r',
- 'mark_favorite' => 'f',
- 'go_website' => 'space',
- 'next_entry' => 'page_down',
- 'prev_entry' => 'page_up',
- 'next_page' => 'right',
- 'prev_page' => 'left',
- ),
- 'mail_login' => '',
-);
diff --git a/public/scripts/notification.js b/public/scripts/notification.js
new file mode 100644
index 000000000..a3a874c12
--- /dev/null
+++ b/public/scripts/notification.js
@@ -0,0 +1,17 @@
+function closeNotification () {
+ $("#notification").slideUp (200, function () {
+ $("#notification").remove ();
+ });
+}
+
+$(document).ready (function () {
+ notif = $("#notification");
+ if (notif[0] !== undefined) {
+ timer = setInterval('closeNotification()', 5000);
+
+ notif.find ("a.close").click (function () {
+ closeNotification ();
+ return false;
+ });
+ }
+});
diff --git a/public/theme/base.css b/public/theme/base.css
index fa9c8fc72..24c4f371b 100644
--- a/public/theme/base.css
+++ b/public/theme/base.css
@@ -336,3 +336,41 @@ form {
display: block;
color: #F09600;
}
+
+/*** NOTIFICATION ***/
+#notification {
+ position: fixed;
+ bottom: 0;
+ left: 25%;
+ width: 50%;
+ height: 50px;
+ padding: 0 50px;
+ line-height: 50px;
+ text-align: center;
+ border-radius: 5px 5px 0 0;
+ box-shadow: 0 0 3px #666;
+ background: #ddd;
+ color: #fff;
+ font-weight: bold;
+}
+ #notification.good {
+ background: #8FD900;
+ }
+ #notification.bad {
+ background: #FF3300;
+ }
+ #notification a.close {
+ display: inline-block;
+ width: 25px;
+ height: 25px;
+ float: right;
+ margin: -10px -60px 0 0;
+ background: #fff;
+ border-radius: 50px;
+ border: 1px solid #aaa;
+ line-height: 25px;
+ color: #666;
+ }
+ #notification a.close:hover {
+ text-decoration: none;
+ }