From fca236dc6d6ff6e09182c560f3566904cbc7a70a Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Tue, 23 Oct 2012 18:29:43 +0200 Subject: affichage par catégories + meilleur exportation opml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/App_FrontController.php | 23 +++++++++----- app/controllers/configureController.php | 13 ++++++-- app/controllers/indexController.php | 23 +++++++++++--- app/layout/aside.phtml | 8 +++++ app/models/Entry.php | 56 +++++++++++++++++++++------------ app/models/Feed.php | 12 +++++++ app/views/configure/importExport.phtml | 4 +-- app/views/index/index.phtml | 4 +-- app/views/javascript/main.phtml | 17 +++------- lib/lib_rss.php | 21 ++++++++----- public/theme/base.css | 38 ++++++++++++++++------ 11 files changed, 151 insertions(+), 68 deletions(-) diff --git a/app/App_FrontController.php b/app/App_FrontController.php index 5a1009436..d61927c9e 100644 --- a/app/App_FrontController.php +++ b/app/App_FrontController.php @@ -10,14 +10,9 @@ class App_FrontController extends FrontController { $this->loadLibs (); $this->loadModels (); - Session::init (); - - View::prependStyle (Url::display ('/theme/base.css')); - View::appendScript (Url::display ('/scripts/jquery.js')); - View::appendScript (Url::display ('/scripts/smoothscroll.js')); - View::appendScript (Url::display ('/scripts/shortcut.js')); - View::appendScript (Url::display (array ('c' => 'javascript', 'a' => 'main'))); - View::_param ('conf', Session::param ('conf', new RSSConfiguration ())); + Session::init (); // lancement de la session doit se faire après chargement des modèles sinon bug (pourquoi ?) + $this->loadStylesAndScripts (); + $this->loadParamsView (); } private function loadLibs () { @@ -31,4 +26,16 @@ class App_FrontController extends FrontController { include (APP_PATH . '/models/Feed.php'); include (APP_PATH . '/models/Entry.php'); } + + private function loadStylesAndScripts () { + View::prependStyle (Url::display ('/theme/base.css')); + View::appendScript (Url::display ('/scripts/jquery.js')); + View::appendScript (Url::display ('/scripts/smoothscroll.js')); + View::appendScript (Url::display ('/scripts/shortcut.js')); + View::appendScript (Url::display (array ('c' => 'javascript', 'a' => 'main'))); + } + + private function loadParamsView () { + View::_param ('conf', Session::param ('conf', new RSSConfiguration ())); + } } diff --git a/app/controllers/configureController.php b/app/controllers/configureController.php index c501e5242..e61eb3872 100755 --- a/app/controllers/configureController.php +++ b/app/controllers/configureController.php @@ -99,12 +99,21 @@ class configureController extends ActionController { header('Content-type: text/xml'); $feedDAO = new FeedDAO (); - $this->view->feeds = $feedDAO->listFeeds (); - } elseif (Request::isPost ()) { + $catDAO = new CategoryDAO (); + + $list = array (); + foreach ($catDAO->listCategories () as $key => $cat) { + $list[$key]['name'] = $cat->name (); + $list[$key]['feeds'] = $feedDAO->listByCategory ($cat->id ()); + } + + $this->view->categories = $list; + } elseif ($this->view->req == 'import' && Request::isPost ()) { if ($_FILES['file']['error'] == 0) { $content = file_get_contents ($_FILES['file']['tmp_name']); $feeds = opml_import ($content); + Request::_param ('q'); Request::_param ('feeds', $feeds); Request::forward (array ('c' => 'feed', 'a' => 'massiveInsert')); } diff --git a/app/controllers/indexController.php b/app/controllers/indexController.php index b9d770e81..b8908dee3 100755 --- a/app/controllers/indexController.php +++ b/app/controllers/indexController.php @@ -3,25 +3,38 @@ class indexController extends ActionController { public function indexAction () { $entryDAO = new EntryDAO (); + $catDAO = new CategoryDAO (); $mode = Session::param ('mode', $this->view->conf->defaultView ()); - if ($mode == 'not_read') { - $entries = $entryDAO->listNotReadEntries (); - } elseif ($mode == 'all') { - $entries = $entryDAO->listEntries (); + $get = Request::param ('get'); + + // Récupère les flux par catégorie, favoris ou tous + if ($get == 'favoris') { + $entries = $entryDAO->listFavorites ($mode); + } elseif ($get != false) { + $entries = $entryDAO->listByCategory ($get, $mode); } + // Cas où on ne choisie ni catégorie ni les favoris + // ou si la catégorie ne correspond à aucune + if (!isset ($entries)) { + $entries = $entryDAO->listEntries ($mode); + } + + // Tri par date if ($this->view->conf->sortOrder () == 'high_to_low') { usort ($entries, 'sortReverseEntriesByDate'); } else { usort ($entries, 'sortEntriesByDate'); } - //gestion pagination + // Gestion pagination $page = Request::param ('page', 1); $this->view->entryPaginator = new Paginator ($entries); $this->view->entryPaginator->_nbItemsPerPage ($this->view->conf->postsPerPage ()); $this->view->entryPaginator->_currentPage ($page); + + $this->view->cat_aside = $catDAO->listCategories (); } public function changeModeAction () { diff --git a/app/layout/aside.phtml b/app/layout/aside.phtml index b154c5ea3..265a0902b 100644 --- a/app/layout/aside.phtml +++ b/app/layout/aside.phtml @@ -7,6 +7,14 @@