From b5e26df8b10d1e2f1ba50d34c6dcee69a02b0080 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Wed, 10 Apr 2013 22:04:56 +0200 Subject: Quelques ajustements CSS --- public/theme/base.css | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'public') diff --git a/public/theme/base.css b/public/theme/base.css index b2e47fd69..7e2ce0520 100644 --- a/public/theme/base.css +++ b/public/theme/base.css @@ -158,7 +158,6 @@ input, select, textarea { .stick .btn + .dropdown > .btn { border-left: none; border-radius: 0 3px 3px 0; - font-size: 0px; } .stick .btn + .dropdown a { font-size: 12px; @@ -666,7 +665,7 @@ input, select, textarea { .flux_header .item.manage .read { display: inline-block; width: 30px; - height: 35px; + height: 40px; background: url("icons/read.svg") center center no-repeat; vertical-align: middle; } @@ -679,7 +678,7 @@ input, select, textarea { .flux_header .item.manage .bookmark { display: inline-block; width: 30px; - height: 35px; + height: 40px; background: url("icons/non-starred.svg") center center no-repeat; vertical-align: middle; } @@ -692,7 +691,7 @@ input, select, textarea { .flux_header .item.manage .note { display: inline-block; width: 30px; - height: 35px; + height: 40px; vertical-align: middle; line-height: 35px; font-size: 12px; @@ -707,7 +706,7 @@ input, select, textarea { .flux_header .item.website a { display: block; padding: 0 5px; - height: 35px; + height: 40px; } .flux_header .item.title { overflow: hidden; @@ -740,7 +739,7 @@ input, select, textarea { .flux_header .item.link a { display: inline-block; width: 35px; - height: 35px; + height: 40px; background: url("icons/link.svg") center center no-repeat; vertical-align: middle; } -- cgit v1.2.3 From 8938c2547d2bbdba9ee83d293b515d34034fd101 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Wed, 10 Apr 2013 22:20:45 +0200 Subject: Catch FeedException lors de l'actualisation --- app/controllers/feedController.php | 30 +++++++++++++++++------------- public/theme/base.css | 2 +- 2 files changed, 18 insertions(+), 14 deletions(-) (limited to 'public') diff --git a/app/controllers/feedController.php b/app/controllers/feedController.php index c205801af..77893e547 100755 --- a/app/controllers/feedController.php +++ b/app/controllers/feedController.php @@ -98,23 +98,27 @@ class feedController extends ActionController { $date_min = time () - (60 * 60 * 24 * 30 * $nb_month_old); $i = 0; - foreach ($feeds as $feed) { - $feed->load (); - $entries = $feed->entries (); - - foreach ($entries as $entry) { - if ($entry->date (true) >= $date_min) { - $values = $entry->toArray (); - $entryDAO->addEntry ($values); + try { + foreach ($feeds as $feed) { + $feed->load (); + $entries = $feed->entries (); + + foreach ($entries as $entry) { + if ($entry->date (true) >= $date_min) { + $values = $entry->toArray (); + $entryDAO->addEntry ($values); + } } - } - $feedDAO->updateLastUpdate ($feed->id ()); + $feedDAO->updateLastUpdate ($feed->id ()); - $i++; - if ($i >= 10) { - break; + $i++; + if ($i >= 10) { + break; + } } + } catch (FeedException $e) { + Log::record ($e->getMessage (), Log::ERROR); } $entryDAO->cleanOldEntries ($nb_month_old); diff --git a/public/theme/base.css b/public/theme/base.css index 7e2ce0520..98d387150 100644 --- a/public/theme/base.css +++ b/public/theme/base.css @@ -693,7 +693,7 @@ input, select, textarea { width: 30px; height: 40px; vertical-align: middle; - line-height: 35px; + line-height: 40px; font-size: 12px; } .flux_header .item.website { -- cgit v1.2.3 From 327b4ed3740db45ae0b52528f5f3fd73e3ec87df Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Thu, 11 Apr 2013 21:47:39 +0200 Subject: Séparation du style en deux fichiers pour faciliter la lecture et les mises à jour MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/App_FrontController.php | 3 +- app/controllers/feedController.php | 2 +- public/theme/base.css | 868 ------------------------------------- 3 files changed, 3 insertions(+), 870 deletions(-) delete mode 100644 public/theme/base.css (limited to 'public') diff --git a/app/App_FrontController.php b/app/App_FrontController.php index 8a5dcdcba..1ddbfd89c 100644 --- a/app/App_FrontController.php +++ b/app/App_FrontController.php @@ -33,7 +33,8 @@ class App_FrontController extends FrontController { } private function loadStylesAndScripts () { - View::prependStyle (Url::display ('/theme/base.css')); + View::prependStyle (Url::display ('/theme/global.css')); + View::prependStyle (Url::display ('/theme/freshrss.css')); View::appendScript ('https://login.persona.org/include.js'); View::appendScript (Url::display ('/scripts/jquery.js')); View::appendScript (Url::display ('/scripts/notification.js')); diff --git a/app/controllers/feedController.php b/app/controllers/feedController.php index d2a2f29f5..3e6ae4800 100755 --- a/app/controllers/feedController.php +++ b/app/controllers/feedController.php @@ -132,7 +132,7 @@ class feedController extends ActionController { // notif $notif = array ( 'type' => 'good', - 'content' => '10 flux ont été mis à jour' + 'content' => $i . ' flux ont été mis à jour' ); Session::_param ('notification', $notif); diff --git a/public/theme/base.css b/public/theme/base.css deleted file mode 100644 index 98d387150..000000000 --- a/public/theme/base.css +++ /dev/null @@ -1,868 +0,0 @@ -/* FONTS */ -@font-face { - font-family: 'OpenSans'; - src: local('fonts/openSans.woff') format('woff'); -} - - -* { - margin: 0; - padding: 0; -} -html, body { - height: 100%; - font-size: 95%; - font-family: "Cantarell", "Helvetica", "Arial", "sans-serif"; -} - -/* LIENS */ -a { - color: #0062BE; - text-decoration: none; -} - a:hover { - text-decoration: underline; - } - -/* LISTES */ -ul, ol, dl { - margin: 10px 0 10px 30px; - line-height: 190%; -} - dd { - margin: 0 0 10px 30px; - } - -/* TITRES */ -h1, h2, h3 { - min-height: 40px; - margin: 15px 0 5px; - line-height: 40px; -} - -/* IMG */ -img { - max-width: 100%; - vertical-align: middle; -} - a img { - border: none; - } - -/* FORMULAIRES */ -legend { - display: block; - width: 100%; - margin: 20px 0 5px; - padding: 5px 0; - border-bottom: 1px solid #ddd; - font-size: 150%; - clear: both; -} -label { - display: block; - min-height: 25px; - padding: 5px 0; - font-size: 14px; - line-height: 25px; - cursor: pointer; -} -input, select, textarea { - display: inline-block; - min-height: 25px; - padding: 5px; - background: #fdfdfd; - border: 1px solid #bbb; - border-radius: 3px; - color: #666; - line-height: 25px; - vertical-align: middle; - box-shadow: 0 2px 2px #eee inset; -} - input[type="radio"], - input[type="checkbox"] { - width: 15px; - min-height: 15px; - } - input:focus, select:focus, textarea:focus { - color: #0062BE; - border-color: #33BBFF; - box-shadow: 0 2px 2px #DDDDFF inset; - } - -.form-group { - margin: 0; - clear: both; -} - .form-group.form-actions { - min-width: 250px; - padding: 5px 0; - background: #f4f4f4; - border-top: 1px solid #ddd; - } - .form-group.form-actions .btn { - margin: 0 10px; - } - .form-group .group-name { - display: block; - float: left; - width: 200px; - padding: 10px 0; - text-align: right; - } - .form-group .group-controls { - min-width: 250px; - min-height: 25px; - margin: 0 0 0 220px; - padding: 5px 0; - } - .form-group .group-controls .control { - display: block; - min-height: 30px; - padding: 5px 0; - line-height: 25px; - font-size: 14px; - } - -.stick { - display: inline-block; - white-space: nowrap; - font-size: 0px; - vertical-align: middle; -} - .stick input { - border-radius: 0; - font-size: 14px; - } - .stick .btn { - border-radius: 0; - font-size: 14px; - } - .stick .btn:first-child, - .stick input:first-child { - border-radius: 3px 0 0 3px; - } - .stick .btn:last-child, - .stick input:last-child { - border-radius: 0 3px 3px 0; - } - .stick .btn + .btn, - .stick .btn + input, - .stick input + .btn, - .stick input + input { - border-left: none; - } - .stick input + .btn { - border-top: 1px solid #bbb; - } - .stick .btn + .dropdown > .btn { - border-left: none; - border-radius: 0 3px 3px 0; - } - .stick .btn + .dropdown a { - font-size: 12px; - } - -.btn { - display: inline-block; - min-height: 37px; - min-width: 15px; - padding: 5px 10px; - background: #fff; - background: linear-gradient(#fff, #eee); - border-radius: 3px; - border: 1px solid #ddd; - border-bottom: 1px solid #aaa; - border-right: 1px solid #aaa; - color: #666; - text-shadow: 0px -1px 0 #ddd; - line-height: 20px; - vertical-align: middle; - cursor: pointer; -} - a.btn { - min-height: 25px; - line-height: 25px; - } - .btn:hover { - background: #f0f0f0; - background: linear-gradient(#f8f8f8, #f0f0f0); - text-decoration: none; - } - .btn.active, - .btn:active { - box-shadow: 0px 2px 4px #e0e0e0 inset, 0px 1px 2px #fafafa; - background: #eee; - } - - .btn.btn-important { - background: #0084CC; - background: linear-gradient(#0084CC, #0045CC); - color: #fff; - border: 1px solid #0062B7; - text-shadow: 0px -1px 0 #aaa; - } - .btn.btn-important:hover { - background: linear-gradient(#0066CC, #0045CC); - } - .btn.btn-important:active { - background: #0044CB; - box-shadow: none; - } - - .btn.btn-attention { - background: #E95B57; - background: linear-gradient(#E95B57, #BD362F); - color: #fff; - border: 1px solid #C44742; - text-shadow: 0px -1px 0px #666; - } - .btn.btn-attention:hover { - background: linear-gradient(#D14641, #BD362F); - } - .btn.btn-attention:active { - background: #BD362F; - box-shadow: none; - } - -/* NAVIGATION */ -.nav.nav-list .nav-header, -.nav.nav-list .item { - display: block; - height: 35px; - line-height: 35px; -} - .nav.nav-list .item:hover { - background: #fafafa; - } - .nav.nav-list .item:hover a { - color: #003388; - } - .nav.nav-list .item.active { - background: #0062BE; - color: #fff; - } - .nav.nav-list .item.active a { - color: #fff; - } - .nav.nav-list .disable { - color: #aaa; - background: #fafafa; - text-align: center; - } - .nav.nav-list .item > * { - display: block; - padding: 0 10px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - } - .nav.nav-list a:hover { - text-decoration: none; - } - - .nav.nav-list .nav-header { - padding: 0 10px; - color: #888; - background: #f4f4f4; - border-bottom: 1px solid #ddd; - font-weight: bold; - text-shadow: 0 0 1px #ddd; - } - .nav.nav-list .separator { - display: block; - height: 0; - margin: 5px 0; - border-bottom: 1px solid #ddd; - } - - .nav.nav-list .nav-form { - padding: 3px; - text-align: center; - } - -.nav-head { - display: block; - margin: 0; - background: #fff; - background: linear-gradient(#fff, #f0f0f0); - border-bottom: 1px solid #ddd; - text-align: right; -} - .nav-head .item { - display: inline-block; - padding: 5px 10px; - } - -/* DROPDOWN */ -.dropdown { - position: relative; - display: inline-block; -} - .dropdown .dropdown-target { - display: none; - } - - .dropdown .dropdown-menu { - display: none; - min-width: 200px; - margin: 5px 0 0; - padding: 5px 0; - position: absolute; - right: 0px; - background: #fff; - border: 1px solid #ddd; - border-radius: 5px; - text-align: left; - box-shadow: 3px 3px 3px #ddd; - } - .dropdown .dropdown-menu .dropdown-header { - display: block; - padding: 0 5px; - color: #888; - font-weight: bold; - font-size: 14px; - line-height: 30px; - } - .dropdown .dropdown-menu .item { - display: block; - height: 30px; - font-size: 90%; - line-height: 30px; - } - .dropdown .dropdown-menu .item > * { - display: block; - padding: 0 25px; - line-height: 30px; - } - .dropdown .dropdown-menu .item:hover { - background: #0062BE; - color: #fff; - } - .dropdown .dropdown-menu .item:hover > * { - color: #fff; - text-decoration: none; - } - .dropdown .dropdown-menu .separator { - display: block; - height: 0; - margin: 5px 0; - border-bottom: 1px solid #ddd; - } - .dropdown .dropdown-target:target ~ .dropdown-menu { - display: block; - z-index: 10; - } - .dropdown .dropdown-close { - display: inline-block; - position: absolute; - top: -16px; right: -16px; - width: 16px; - height: 16px; - padding: 5px; - background: #fff; - border-radius: 50px; - border: 1px solid #ddd; - line-height: 16px; - text-align: center; - } - .dropdown .dropdown-close:hover { - background: #f4f4f4; - } - -/* ALERTS */ -.alert { - display: block; - width: 90%; - margin: 15px auto; - padding: 10px 15px; - background: #f4f4f4; - border: 1px solid #ccc; - border-right: 1px solid #aaa; - border-bottom: 1px solid #aaa; - border-radius: 5px; - color: #aaa; - text-shadow: 0 0 1px #eee; - box-shadow: 1px 1px 3px #aaa inset; -} - .alert .alert-head { - margin: 0; - font-weight: bold; - font-size: 110%; - } - -/* ICONES */ -.icon { - display: inline-block; - width: 16px; - height: 16px; - vertical-align: middle; - line-height: 16px; - background: center center no-repeat; -} - .icon.i_refresh { - background-image: url("icons/refresh.svg"); - } - .icon.i_bookmark { - background-image: url("icons/starred.svg"); - } - .icon.i_not_bookmark { - background-image: url("icons/unstarred.svg"); - } - .icon.i_read { - background-image: url("icons/read.svg"); - } - .icon.i_unread { - background-image: url("icons/unread.svg"); - } - .icon.i_all { - background-image: url("icons/all.svg"); - } - .icon.i_close { - background-image: url("icons/close.svg"); - } - .icon.i_search { - background-image: url("icons/search.svg"); - } - .icon.i_configure { - background-image: url("icons/configure.svg"); - } - .icon.i_login { - background-image: url("icons/login.svg"); - } - .icon.i_logout { - background-image: url("icons/logout.svg"); - } - .icon.i_add { - background-image: url("icons/add.svg"); - } - .icon.i_link { - background-image: url("icons/link.svg"); - } - .icon.i_down { - background-image: url("icons/down.svg"); - } - .icon.i_up { - background-image: url("icons/up.svg"); - } - .icon.i_help { - background-image: url("icons/help.svg"); - } - .icon.i_note { - background-image: url("icons/note.svg"); - } - .icon.i_note_empty { - background-image: url("icons/note_empty.svg"); - } - -/* STRUCTURE */ -.header { - display: table; - width: 100%; - background: #f4f4f4; - table-layout: fixed; -} - .header > .item { - display: table-cell; - padding: 10px 0; - border-bottom: 1px solid #aaa; - vertical-align: middle; - text-align: center; - } - .header > .item.title { - width: 250px; - } - .header > .item.title h1 { - margin: 0; - text-shadow: 1px -1px 0 #ccc; - } - .header > .item.title a:hover { - text-decoration: none; - } - .header > .item.search input { - width: 200px; - transition: all 200ms linear; - } - .header .item.search input:focus { - width: 300px; - } - .header > .item.configure { - width: 100px; - } - -#global { - display: table; - width: 100%; - height: 100%; - background: #fafafa; - table-layout: fixed; -} - .aside { - display: table-cell; - height: 100%; - width: 250px; - vertical-align: top; - border-right: 1px solid #aaa; - background: #fff; - } - .aside .nav-form input { - width: 180px; - } - .aside.aside_flux { - padding: 10px 0; - } - .aside.aside_feed .nav-form input { - width: 140px; - } - .aside.aside_feed .nav-form .dropdown .dropdown-menu { - right: -20px; - } - - .nav_menu { - width: 100%; - background: #fafafa; - border-bottom: 1px solid #aaa; - text-align: center; - padding: 5px 0; - } - -.favicon { - width: 16px; -} - -.categories { - margin: 0; - padding: 0; - text-align: center; - list-style: none; -} - .categories .all, - .categories .favorites, - .categories .category { - display: block; - padding: 5px 0; - width: 220px; - margin: 5px auto; - text-align: left; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - } - .categories .all .btn, - .categories .favorites .btn, - .categories .category .btn:first-child { - width: 195px; - position: relative; - } - .categories .feeds { - width: 220px; - margin: 0 auto; - list-style: none; - } - .categories .feeds .item.active:after { - content: "⇢"; - line-height: 35px; - float: right; - } - .categories .feeds .item .feed { - display: inline-block; - margin: 0; - width: 165px; - line-height: 35px; - font-size: 90%; - vertical-align: middle; - text-align: left; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - } - .categories .feeds .dropdown .dropdown-menu { - left: 0; - } - .categories .feeds .item .dropdown-toggle i { - background-image: none; - } - .categories .feeds .item .dropdown-target:target ~ .dropdown-toggle i, - .categories .feeds .item:hover .dropdown-toggle i { - background-image: url("icons/configure.svg"); - } - .categories .notRead { - position: absolute; - top: 3px; right: 3px; - padding: 1px 5px; - background: #ccc; - color: #fff; - font-size: 90%; - border: 1px solid #bbb; - border-radius: 5px; - box-shadow: 1px 3px 3px #aaa inset; - text-shadow: 0 0 1px #aaa; - } - -.post { - padding: 10px 50px; -} - .post form { - margin: 10px 0; - } - -.day { - height: 50px; - padding: 0 10px; - font-size: 130%; - font-weight: bold; - line-height: 50px; - background: #fff; - border-top: 1px solid #aaa; - border-bottom: 1px solid #aaa; -} - .day:first-child { - border-top: none; - } - -.flux { - border-left: 10px solid #aaa; - background: #fafafa; -} - .flux:hover { - background: #fff; - } - .flux.active { - border-left: 10px solid #0062BE; - background: #fff; - } - .flux.not_read { - border-left: 10px solid #FF5300; - background: #FFF3ED; - } - .flux.favorite { - border-left: 10px solid #FFC300; - background: #FFF6DA; - } - - .flux_header { - display: table; - table-layout: fixed; - margin: 0; - padding: 0; - width: 100%; - height: 25px; - font-size: 12px; - line-height: 25px; - border-top: 1px solid #ddd; - } - .flux_header .item { - display: table-cell; - vertical-align: middle; - } - .flux_header .item.manage { - width: 90px; - white-space: nowrap; - font-size: 0px; - vertical-align: middle; - text-align: center; - } - .flux_header .item.manage .read { - display: inline-block; - width: 30px; - height: 40px; - background: url("icons/read.svg") center center no-repeat; - vertical-align: middle; - } - .flux_header .item.manage .read:hover { - text-decoration: none; - } - .flux.not_read .flux_header .item.manage .read { - background: url("icons/unread.svg") center center no-repeat; - } - .flux_header .item.manage .bookmark { - display: inline-block; - width: 30px; - height: 40px; - background: url("icons/non-starred.svg") center center no-repeat; - vertical-align: middle; - } - .flux_header .item.manage .bookmark:hover { - text-decoration: none; - } - .flux.favorite .flux_header .item.manage .bookmark { - background: url("icons/starred.svg") center center no-repeat; - } - .flux_header .item.manage .note { - display: inline-block; - width: 30px; - height: 40px; - vertical-align: middle; - line-height: 40px; - font-size: 12px; - } - .flux_header .item.website { - width: 200px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - line-height: 35px; - } - .flux_header .item.website a { - display: block; - padding: 0 5px; - height: 40px; - } - .flux_header .item.title { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - cursor: pointer; - } - .flux_header .item.title h1 { - font-size: 12px; - margin: 0; - font-weight: normal; - } - .flux.not_read .flux_header .item.title h1 { - font-weight: bold; - } - .flux_header .item.date { - width: 200px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - text-align: right; - font-size: 10px; - color: #666; - cursor: pointer; - } - .flux_header .item.link { - width: 35px; - text-align: center; - } - .flux_header .item.link a { - display: inline-block; - width: 35px; - height: 40px; - background: url("icons/link.svg") center center no-repeat; - vertical-align: middle; - } - .flux_header .item.link a:hover { - text-decoration: none; - } - -.content { - max-width: 550px; - margin: 0 auto; - padding: 10px; - line-height: 170%; - font-family: 'OpenSans'; -} - .content h1, .content h2, .content h3 { - margin: 20px 0 5px; - } - .content p { - margin: 0 0 20px; - } - .content img.big { - display: block; - margin: 10px 0; - width: 100%; - box-shadow: 0 0 5px #000; - border-radius: 5px; - } - .content pre { - width: 90%; - margin: 10px auto; - padding: 10px; - overflow: auto; - background: #666; - border: 1px solid #000; - color: #fafafa; - border-radius: 5px; - } - .content q, .content blockquote { - display: block; - margin: 5px 0; - padding: 5px 20px; - font-style: italic; - border-left: 4px solid #ccc; - color: #666; - } - .content blockquote p { - margin: 0; - } - -/*** PAGINATION ***/ -.pagination { - display: table; - width: 100%; - margin: 0; - background: #fafafa; - text-align: center; - color: #333; - font-size: 80%; - line-height: 200%; - table-layout: fixed; -} - .pagination .item { - display: table-cell; - padding: 5px 10px; - border-top: 1px solid #aaa; - } - .pagination .item a { - color: #333; - font-style: italic; - } - .pagination .pager-previous, .pagination .pager-next { - width: 200px; - } - .pagination .item.pager-current { - font-weight: bold; - } - -/*** NOTIFICATION ***/ -.notification { - position: fixed; - bottom: 0; - left: 5%; right: 5%; - min-height: 30px; - padding: 10px; - line-height: 30px; - text-align: center; - border-radius: 5px 5px 0 0; - box-shadow: 0 0 5px #666; - background: #ddd; - color: #666; - font-weight: bold; -} - .notification.good { - background: #f4f899; - } - .notification.bad { - background: #f4a899; - } - .notification a.close { - display: inline-block; - width: 16px; - height: 16px; - float: right; - margin: -20px -20px 0 0; - padding: 5px; - background: #fff; - border-radius: 50px; - border: 1px solid #aaa; - line-height: 16px; - } - -@media(max-width: 840px) { - .header, - .aside, - .flux_header .item.website span, - .flux_header .item.date { - display: none; - } - .flux_header .item.website { - width: 30px; - text-align: center; - } - .pagination .pager-previous, .pagination .pager-next { - width: 100px; - } -} -- cgit v1.2.3 From 52ab1f4b95440e2efabddd1a224989258421434c Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Thu, 11 Apr 2013 21:48:15 +0200 Subject: Oubli des deux fichiers CSS --- public/theme/freshrss.css | 411 +++++++++++++++++++++++++++++++++++++++++ public/theme/global.css | 456 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 867 insertions(+) create mode 100644 public/theme/freshrss.css create mode 100644 public/theme/global.css (limited to 'public') diff --git a/public/theme/freshrss.css b/public/theme/freshrss.css new file mode 100644 index 000000000..d6a29d4ba --- /dev/null +++ b/public/theme/freshrss.css @@ -0,0 +1,411 @@ +/* STRUCTURE */ +.header { + display: table; + width: 100%; + background: #f4f4f4; + table-layout: fixed; +} + .header > .item { + display: table-cell; + padding: 10px 0; + border-bottom: 1px solid #aaa; + vertical-align: middle; + text-align: center; + } + .header > .item.title { + width: 250px; + } + .header > .item.title h1 { + margin: 0; + text-shadow: 1px -1px 0 #ccc; + } + .header > .item.title a:hover { + text-decoration: none; + } + .header > .item.search input { + width: 200px; + transition: all 200ms linear; + } + .header .item.search input:focus { + width: 300px; + } + .header > .item.configure { + width: 100px; + } + +#global { + display: table; + width: 100%; + height: 100%; + background: #fafafa; + table-layout: fixed; +} + .aside { + display: table-cell; + height: 100%; + width: 250px; + vertical-align: top; + border-right: 1px solid #aaa; + background: #fff; + } + .aside .nav-form input { + width: 180px; + } + .aside.aside_flux { + padding: 10px 0; + } + .aside.aside_feed .nav-form input { + width: 140px; + } + .aside.aside_feed .nav-form .dropdown .dropdown-menu { + right: -20px; + } + + .nav_menu { + width: 100%; + background: #fafafa; + border-bottom: 1px solid #aaa; + text-align: center; + padding: 5px 0; + } + +.favicon { + width: 16px; +} + +.categories { + margin: 0; + padding: 0; + text-align: center; + list-style: none; +} + .categories .all, + .categories .favorites, + .categories .category { + display: block; + padding: 5px 0; + width: 220px; + margin: 5px auto; + text-align: left; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + .categories .all .btn, + .categories .favorites .btn, + .categories .category .btn:first-child { + width: 195px; + position: relative; + } + .categories .feeds { + width: 220px; + margin: 0 auto; + list-style: none; + } + .categories .feeds .item.active:after { + content: "⇢"; + line-height: 35px; + float: right; + } + .categories .feeds .item .feed { + display: inline-block; + margin: 0; + width: 165px; + line-height: 35px; + font-size: 90%; + vertical-align: middle; + text-align: left; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + .categories .feeds .dropdown .dropdown-menu { + left: 0; + } + .categories .feeds .item .dropdown-toggle i { + background-image: none; + } + .categories .feeds .item .dropdown-target:target ~ .dropdown-toggle i, + .categories .feeds .item:hover .dropdown-toggle i { + background-image: url("icons/configure.svg"); + } + .categories .notRead { + position: absolute; + top: 3px; right: 3px; + padding: 1px 5px; + background: #ccc; + color: #fff; + font-size: 90%; + border: 1px solid #bbb; + border-radius: 5px; + box-shadow: 1px 3px 3px #aaa inset; + text-shadow: 0 0 1px #aaa; + } + +.post { + padding: 10px 50px; +} + .post form { + margin: 10px 0; + } + +.day { + height: 50px; + padding: 0 10px; + font-size: 130%; + font-weight: bold; + line-height: 50px; + background: #fff; + border-top: 1px solid #aaa; + border-bottom: 1px solid #aaa; +} + .day:first-child { + border-top: none; + } + +.flux { + border-left: 10px solid #aaa; + background: #fafafa; +} + .flux:hover { + background: #fff; + } + .flux.active { + border-left: 10px solid #0062BE; + background: #fff; + } + .flux.not_read { + border-left: 10px solid #FF5300; + background: #FFF3ED; + } + .flux.favorite { + border-left: 10px solid #FFC300; + background: #FFF6DA; + } + + .flux_header { + display: table; + table-layout: fixed; + margin: 0; + padding: 0; + width: 100%; + height: 25px; + font-size: 12px; + line-height: 25px; + border-top: 1px solid #ddd; + } + .flux_header .item { + display: table-cell; + vertical-align: middle; + } + .flux_header .item.manage { + width: 90px; + white-space: nowrap; + font-size: 0px; + vertical-align: middle; + text-align: center; + } + .flux_header .item.manage .read { + display: inline-block; + width: 30px; + height: 40px; + background: url("icons/read.svg") center center no-repeat; + vertical-align: middle; + } + .flux_header .item.manage .read:hover { + text-decoration: none; + } + .flux.not_read .flux_header .item.manage .read { + background: url("icons/unread.svg") center center no-repeat; + } + .flux_header .item.manage .bookmark { + display: inline-block; + width: 30px; + height: 40px; + background: url("icons/non-starred.svg") center center no-repeat; + vertical-align: middle; + } + .flux_header .item.manage .bookmark:hover { + text-decoration: none; + } + .flux.favorite .flux_header .item.manage .bookmark { + background: url("icons/starred.svg") center center no-repeat; + } + .flux_header .item.manage .note { + display: inline-block; + width: 30px; + height: 40px; + vertical-align: middle; + line-height: 40px; + font-size: 12px; + } + .flux_header .item.website { + width: 200px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + line-height: 40px; + } + .flux_header .item.website a { + display: block; + padding: 0 5px; + height: 40px; + } + .flux_header .item.title { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + cursor: pointer; + } + .flux_header .item.title h1 { + font-size: 12px; + margin: 0; + font-weight: normal; + } + .flux.not_read .flux_header .item.title h1 { + font-weight: bold; + } + .flux_header .item.date { + width: 200px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + text-align: right; + font-size: 10px; + color: #666; + cursor: pointer; + } + .flux_header .item.link { + width: 35px; + text-align: center; + } + .flux_header .item.link a { + display: inline-block; + width: 35px; + height: 40px; + background: url("icons/link.svg") center center no-repeat; + vertical-align: middle; + } + .flux_header .item.link a:hover { + text-decoration: none; + } + +.content { + max-width: 550px; + margin: 0 auto; + padding: 10px; + line-height: 170%; + font-family: 'OpenSans'; +} + .content h1, .content h2, .content h3 { + margin: 20px 0 5px; + } + .content p { + margin: 0 0 20px; + } + .content img.big { + display: block; + margin: 10px 0; + width: 100%; + box-shadow: 0 0 5px #000; + border-radius: 5px; + } + .content pre { + width: 90%; + margin: 10px auto; + padding: 10px; + overflow: auto; + background: #666; + border: 1px solid #000; + color: #fafafa; + border-radius: 5px; + } + .content q, .content blockquote { + display: block; + margin: 5px 0; + padding: 5px 20px; + font-style: italic; + border-left: 4px solid #ccc; + color: #666; + } + .content blockquote p { + margin: 0; + } + +/*** PAGINATION ***/ +.pagination { + display: table; + width: 100%; + margin: 0; + background: #fafafa; + text-align: center; + color: #333; + font-size: 80%; + line-height: 200%; + table-layout: fixed; +} + .pagination .item { + display: table-cell; + padding: 5px 10px; + border-top: 1px solid #aaa; + } + .pagination .item a { + color: #333; + font-style: italic; + } + .pagination .pager-previous, .pagination .pager-next { + width: 200px; + } + .pagination .item.pager-current { + font-weight: bold; + } + +/*** NOTIFICATION ***/ +.notification { + position: fixed; + bottom: 0; + left: 5%; right: 5%; + min-height: 30px; + padding: 10px; + line-height: 30px; + text-align: center; + border-radius: 5px 5px 0 0; + box-shadow: 0 0 5px #666; + background: #ddd; + color: #666; + font-weight: bold; +} + .notification.good { + background: #f4f899; + } + .notification.bad { + background: #f4a899; + } + .notification a.close { + display: inline-block; + width: 16px; + height: 16px; + float: right; + margin: -20px -20px 0 0; + padding: 5px; + background: #fff; + border-radius: 50px; + border: 1px solid #aaa; + line-height: 16px; + } + +@media(max-width: 840px) { + .header, + .aside, + .flux_header .item.website span, + .flux_header .item.date { + display: none; + } + .flux_header .item.website { + width: 30px; + text-align: center; + } + .pagination .pager-previous, .pagination .pager-next { + width: 100px; + } +} diff --git a/public/theme/global.css b/public/theme/global.css new file mode 100644 index 000000000..ad6521c54 --- /dev/null +++ b/public/theme/global.css @@ -0,0 +1,456 @@ +/* FONTS */ +@font-face { + font-family: 'OpenSans'; + src: local('fonts/openSans.woff') format('woff'); +} + + +* { + margin: 0; + padding: 0; +} +html, body { + height: 100%; + font-size: 95%; + font-family: "Cantarell", "Helvetica", "Arial", "sans-serif"; +} + +/* LIENS */ +a { + color: #0062BE; + text-decoration: none; +} + a:hover { + text-decoration: underline; + } + +/* LISTES */ +ul, ol, dl { + margin: 10px 0 10px 30px; + line-height: 190%; +} + dd { + margin: 0 0 10px 30px; + } + +/* TITRES */ +h1, h2, h3 { + min-height: 40px; + margin: 15px 0 5px; + line-height: 40px; +} + +/* IMG */ +img { + max-width: 100%; + vertical-align: middle; +} + a img { + border: none; + } + +/* FORMULAIRES */ +legend { + display: block; + width: 100%; + margin: 20px 0 5px; + padding: 5px 0; + border-bottom: 1px solid #ddd; + font-size: 150%; + clear: both; +} +label { + display: block; + min-height: 25px; + padding: 5px 0; + font-size: 14px; + line-height: 25px; + cursor: pointer; +} +input, select, textarea { + display: inline-block; + min-height: 25px; + padding: 5px; + background: #fdfdfd; + border: 1px solid #bbb; + border-radius: 3px; + color: #666; + line-height: 25px; + vertical-align: middle; + box-shadow: 0 2px 2px #eee inset; +} + input[type="radio"], + input[type="checkbox"] { + width: 15px; + min-height: 15px; + } + input:focus, select:focus, textarea:focus { + color: #0062BE; + border-color: #33BBFF; + box-shadow: 0 2px 2px #DDDDFF inset; + } + +.form-group { + margin: 0; + clear: both; +} + .form-group.form-actions { + min-width: 250px; + padding: 5px 0; + background: #f4f4f4; + border-top: 1px solid #ddd; + } + .form-group.form-actions .btn { + margin: 0 10px; + } + .form-group .group-name { + display: block; + float: left; + width: 200px; + padding: 10px 0; + text-align: right; + } + .form-group .group-controls { + min-width: 250px; + min-height: 25px; + margin: 0 0 0 220px; + padding: 5px 0; + } + .form-group .group-controls .control { + display: block; + min-height: 30px; + padding: 5px 0; + line-height: 25px; + font-size: 14px; + } + +.stick { + display: inline-block; + white-space: nowrap; + font-size: 0px; + vertical-align: middle; +} + .stick input { + border-radius: 0; + font-size: 14px; + } + .stick .btn { + border-radius: 0; + font-size: 14px; + } + .stick .btn:first-child, + .stick input:first-child { + border-radius: 3px 0 0 3px; + } + .stick .btn:last-child, + .stick input:last-child { + border-radius: 0 3px 3px 0; + } + .stick .btn + .btn, + .stick .btn + input, + .stick input + .btn, + .stick input + input { + border-left: none; + } + .stick input + .btn { + border-top: 1px solid #bbb; + } + .stick .btn + .dropdown > .btn { + border-left: none; + border-radius: 0 3px 3px 0; + } + .stick .btn + .dropdown a { + font-size: 12px; + } + +.btn { + display: inline-block; + min-height: 37px; + min-width: 15px; + padding: 5px 10px; + background: #fff; + background: linear-gradient(#fff, #eee); + border-radius: 3px; + border: 1px solid #ddd; + border-bottom: 1px solid #aaa; + border-right: 1px solid #aaa; + color: #666; + text-shadow: 0px -1px 0 #ddd; + line-height: 20px; + vertical-align: middle; + cursor: pointer; +} + a.btn { + min-height: 25px; + line-height: 25px; + } + .btn:hover { + background: #f0f0f0; + background: linear-gradient(#f8f8f8, #f0f0f0); + text-decoration: none; + } + .btn.active, + .btn:active { + box-shadow: 0px 2px 4px #e0e0e0 inset, 0px 1px 2px #fafafa; + background: #eee; + } + + .btn.btn-important { + background: #0084CC; + background: linear-gradient(#0084CC, #0045CC); + color: #fff; + border: 1px solid #0062B7; + text-shadow: 0px -1px 0 #aaa; + } + .btn.btn-important:hover { + background: linear-gradient(#0066CC, #0045CC); + } + .btn.btn-important:active { + background: #0044CB; + box-shadow: none; + } + + .btn.btn-attention { + background: #E95B57; + background: linear-gradient(#E95B57, #BD362F); + color: #fff; + border: 1px solid #C44742; + text-shadow: 0px -1px 0px #666; + } + .btn.btn-attention:hover { + background: linear-gradient(#D14641, #BD362F); + } + .btn.btn-attention:active { + background: #BD362F; + box-shadow: none; + } + +/* NAVIGATION */ +.nav.nav-list .nav-header, +.nav.nav-list .item { + display: block; + height: 35px; + line-height: 35px; +} + .nav.nav-list .item:hover { + background: #fafafa; + } + .nav.nav-list .item:hover a { + color: #003388; + } + .nav.nav-list .item.active { + background: #0062BE; + color: #fff; + } + .nav.nav-list .item.active a { + color: #fff; + } + .nav.nav-list .disable { + color: #aaa; + background: #fafafa; + text-align: center; + } + .nav.nav-list .item > * { + display: block; + padding: 0 10px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + .nav.nav-list a:hover { + text-decoration: none; + } + + .nav.nav-list .nav-header { + padding: 0 10px; + color: #888; + background: #f4f4f4; + border-bottom: 1px solid #ddd; + font-weight: bold; + text-shadow: 0 0 1px #ddd; + } + .nav.nav-list .separator { + display: block; + height: 0; + margin: 5px 0; + border-bottom: 1px solid #ddd; + } + + .nav.nav-list .nav-form { + padding: 3px; + text-align: center; + } + +.nav-head { + display: block; + margin: 0; + background: #fff; + background: linear-gradient(#fff, #f0f0f0); + border-bottom: 1px solid #ddd; + text-align: right; +} + .nav-head .item { + display: inline-block; + padding: 5px 10px; + } + +/* DROPDOWN */ +.dropdown { + position: relative; + display: inline-block; +} + .dropdown .dropdown-target { + display: none; + } + + .dropdown .dropdown-menu { + display: none; + min-width: 200px; + margin: 5px 0 0; + padding: 5px 0; + position: absolute; + right: 0px; + background: #fff; + border: 1px solid #ddd; + border-radius: 5px; + text-align: left; + box-shadow: 3px 3px 3px #ddd; + } + .dropdown .dropdown-menu .dropdown-header { + display: block; + padding: 0 5px; + color: #888; + font-weight: bold; + font-size: 14px; + line-height: 30px; + } + .dropdown .dropdown-menu .item { + display: block; + height: 30px; + font-size: 90%; + line-height: 30px; + } + .dropdown .dropdown-menu .item > * { + display: block; + padding: 0 25px; + line-height: 30px; + } + .dropdown .dropdown-menu .item:hover { + background: #0062BE; + color: #fff; + } + .dropdown .dropdown-menu .item:hover > * { + color: #fff; + text-decoration: none; + } + .dropdown .dropdown-menu .separator { + display: block; + height: 0; + margin: 5px 0; + border-bottom: 1px solid #ddd; + } + .dropdown .dropdown-target:target ~ .dropdown-menu { + display: block; + z-index: 10; + } + .dropdown .dropdown-close { + display: inline-block; + position: absolute; + top: -16px; right: -16px; + width: 16px; + height: 16px; + padding: 5px; + background: #fff; + border-radius: 50px; + border: 1px solid #ddd; + line-height: 16px; + text-align: center; + } + .dropdown .dropdown-close:hover { + background: #f4f4f4; + } + +/* ALERTS */ +.alert { + display: block; + width: 90%; + margin: 15px auto; + padding: 10px 15px; + background: #f4f4f4; + border: 1px solid #ccc; + border-right: 1px solid #aaa; + border-bottom: 1px solid #aaa; + border-radius: 5px; + color: #aaa; + text-shadow: 0 0 1px #eee; + box-shadow: 1px 1px 3px #aaa inset; +} + .alert .alert-head { + margin: 0; + font-weight: bold; + font-size: 110%; + } + +/* ICONES */ +.icon { + display: inline-block; + width: 16px; + height: 16px; + vertical-align: middle; + line-height: 16px; + background: center center no-repeat; +} + .icon.i_refresh { + background-image: url("icons/refresh.svg"); + } + .icon.i_bookmark { + background-image: url("icons/starred.svg"); + } + .icon.i_not_bookmark { + background-image: url("icons/unstarred.svg"); + } + .icon.i_read { + background-image: url("icons/read.svg"); + } + .icon.i_unread { + background-image: url("icons/unread.svg"); + } + .icon.i_all { + background-image: url("icons/all.svg"); + } + .icon.i_close { + background-image: url("icons/close.svg"); + } + .icon.i_search { + background-image: url("icons/search.svg"); + } + .icon.i_configure { + background-image: url("icons/configure.svg"); + } + .icon.i_login { + background-image: url("icons/login.svg"); + } + .icon.i_logout { + background-image: url("icons/logout.svg"); + } + .icon.i_add { + background-image: url("icons/add.svg"); + } + .icon.i_link { + background-image: url("icons/link.svg"); + } + .icon.i_down { + background-image: url("icons/down.svg"); + } + .icon.i_up { + background-image: url("icons/up.svg"); + } + .icon.i_help { + background-image: url("icons/help.svg"); + } + .icon.i_note { + background-image: url("icons/note.svg"); + } + .icon.i_note_empty { + background-image: url("icons/note_empty.svg"); + } -- cgit v1.2.3 From cb3c97b811e6d820b8bf4d86861cfcae3b267c20 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Thu, 11 Apr 2013 21:56:55 +0200 Subject: Amélioration affichage grosses images MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/javascript/main.phtml | 2 +- public/theme/freshrss.css | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) (limited to 'public') diff --git a/app/views/javascript/main.phtml b/app/views/javascript/main.phtml index 4f049e11d..05368683c 100644 --- a/app/views/javascript/main.phtml +++ b/app/views/javascript/main.phtml @@ -110,7 +110,7 @@ function mark_favorite (active) { function init_img () { $(".flux .content img").each (function () { - if ($(this).width () > ($("#stream").width()) / 2) { + if ($(this).width () > ($("#stream .content").width()) / 2) { $(this).addClass("big"); } }); diff --git a/public/theme/freshrss.css b/public/theme/freshrss.css index d6a29d4ba..d15487db3 100644 --- a/public/theme/freshrss.css +++ b/public/theme/freshrss.css @@ -305,10 +305,7 @@ } .content img.big { display: block; - margin: 10px 0; - width: 100%; - box-shadow: 0 0 5px #000; - border-radius: 5px; + margin: 10px auto; } .content pre { width: 90%; -- cgit v1.2.3 From 2f7ecb2e490ade40350a68b902b4ff28e3168cbb Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Sat, 13 Apr 2013 11:11:48 +0200 Subject: Fix issue #46 : ajout de la select list pour les catégories en vue mobile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/layout/aside_flux.phtml | 2 ++ app/layout/nav_menu.phtml | 2 +- public/theme/freshrss.css | 38 +++++++++++++++++++++++++++++++++++++- public/theme/global.css | 3 +++ public/theme/icons/category.svg | 31 +++++++++++++++++++++++++++++++ 5 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 public/theme/icons/category.svg (limited to 'public') diff --git a/app/layout/aside_flux.phtml b/app/layout/aside_flux.phtml index c7b520b35..198103428 100644 --- a/app/layout/aside_flux.phtml +++ b/app/layout/aside_flux.phtml @@ -1,4 +1,6 @@
+ +
    conf) || is_logged ()) { ?>
  • Gestion des abonnements
  • diff --git a/app/layout/nav_menu.phtml b/app/layout/nav_menu.phtml index 4deb20836..90fe4aea1 100644 --- a/app/layout/nav_menu.phtml +++ b/app/layout/nav_menu.phtml @@ -1,5 +1,5 @@ diff --git a/app/views/javascript/main.phtml b/app/views/javascript/main.phtml index 05368683c..e6c882333 100644 --- a/app/views/javascript/main.phtml +++ b/app/views/javascript/main.phtml @@ -26,10 +26,10 @@ function toggleContent (new_active, old_active) { } if (hide_posts) { - old_active.children (".content").toggle (0); + old_active.children (".flux_content").toggle (0); if (old_active[0] != new_active[0]) { - new_active.children (".content").toggle (0, function () { + new_active.children (".flux_content").toggle (0, function () { $("html,body").scrollTop (new_active.position ().top); }); } @@ -127,7 +127,7 @@ function init_posts () { init_img (); if (hide_posts) { - $(".flux:not(.active) .content").hide (); + $(".flux:not(.active) .flux_content").hide (); } $(".flux_header .item.title, .flux_header .item.date").click (function () { diff --git a/public/theme/freshrss.css b/public/theme/freshrss.css index 46b8cb57b..e60310354 100644 --- a/public/theme/freshrss.css +++ b/public/theme/freshrss.css @@ -184,122 +184,103 @@ } .flux_header { - display: table; - table-layout: fixed; - margin: 0; - padding: 0; - width: 100%; height: 25px; font-size: 12px; line-height: 25px; border-top: 1px solid #ddd; } - .flux_header .item { - display: table-cell; - vertical-align: middle; + .flux_header .item.manage { + width: 60px; + white-space: nowrap; + font-size: 0px; + text-align: center; } - .flux_header .item.manage { - width: 90px; - white-space: nowrap; - font-size: 0px; + .flux_header .item.manage .read { + display: inline-block; + width: 30px; + height: 40px; + background: url("icons/read.svg") center center no-repeat; vertical-align: middle; - text-align: center; } - .flux_header .item.manage .read { - display: inline-block; - width: 30px; - height: 40px; - background: url("icons/read.svg") center center no-repeat; - vertical-align: middle; + .flux_header .item.manage .read:hover { + text-decoration: none; } - .flux_header .item.manage .read:hover { - text-decoration: none; - } - .flux.not_read .flux_header .item.manage .read { - background: url("icons/unread.svg") center center no-repeat; - } - .flux_header .item.manage .bookmark { - display: inline-block; - width: 30px; - height: 40px; - background: url("icons/non-starred.svg") center center no-repeat; - vertical-align: middle; + .flux.not_read .flux_header .item.manage .read { + background: url("icons/unread.svg") center center no-repeat; } - .flux_header .item.manage .bookmark:hover { - text-decoration: none; - } - .flux.favorite .flux_header .item.manage .bookmark { - background: url("icons/starred.svg") center center no-repeat; - } - .flux_header .item.manage .note { - display: inline-block; - width: 30px; - height: 40px; - vertical-align: middle; - line-height: 40px; - font-size: 12px; - } - .flux_header .item.website { - width: 200px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - line-height: 40px; + .flux_header .item.manage .bookmark { + display: inline-block; + width: 30px; + height: 40px; + background: url("icons/non-starred.svg") center center no-repeat; + vertical-align: middle; } - .flux_header .item.website a { - display: block; - padding: 0 5px; - height: 40px; + .flux_header .item.manage .bookmark:hover { + text-decoration: none; } - .flux_header .item.title { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - cursor: pointer; - } - .flux_header .item.title h1 { - font-size: 12px; - margin: 0; - font-weight: normal; + .flux.favorite .flux_header .item.manage .bookmark { + background: url("icons/starred.svg") center center no-repeat; } - .flux.not_read .flux_header .item.title h1 { - font-weight: bold; - } - .flux_header .item.date { - width: 200px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - text-align: right; - font-size: 10px; - color: #666; - cursor: pointer; + .flux_header .item.website { + width: 200px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + line-height: 40px; + } + .flux_header .item.website a { + display: block; + padding: 0 5px; + height: 40px; } - .flux_header .item.link { + .flux_header .item.title { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + cursor: pointer; + } + .flux.not_read .flux_header .item.title { + font-weight: bold; + } + .flux_header .item.date { + width: 200px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + text-align: right; + font-size: 10px; + color: #666; + cursor: pointer; + } + .flux_header .item.link { + width: 35px; + text-align: center; + } + .flux_header .item.link a { + display: inline-block; width: 35px; - text-align: center; + height: 40px; + background: url("icons/link.svg") center center no-repeat; + vertical-align: middle; } - .flux_header .item.link a { - display: inline-block; - width: 35px; - height: 40px; - background: url("icons/link.svg") center center no-repeat; - vertical-align: middle; + .flux_header .item.link a:hover { + text-decoration: none; } - .flux_header .item.link a:hover { - text-decoration: none; - } .content { max-width: 550px; margin: 0 auto; - padding: 10px; + padding: 20px 10px; line-height: 170%; font-family: 'OpenSans'; } + .content .title { + margin: 0 0 5px; + } .content h1, .content h2, .content h3 { margin: 20px 0 5px; } + .content p { margin: 0 0 20px; } @@ -329,6 +310,11 @@ margin: 0; } +.flux_content .bottom { + font-size: 90%; + text-align: center; +} + /*** PAGINATION ***/ .pagination { display: table; @@ -400,7 +386,8 @@ .aside .btn-important, .aside .feeds .dropdown, .flux_header .item.website span, - .flux_header .item.date { + .flux_header .item.date, + .flux_content .bottom { display: none; } .flux_header .item.website { diff --git a/public/theme/global.css b/public/theme/global.css index 3262036be..f4466cec1 100644 --- a/public/theme/global.css +++ b/public/theme/global.css @@ -69,6 +69,7 @@ label { } input, select, textarea { display: inline-block; + max-width: 100%; min-height: 25px; padding: 5px; background: #fdfdfd; @@ -294,6 +295,19 @@ input, select, textarea { padding: 5px 10px; } +/* HORIZONTAL-LIST */ +.horizontal-list { + display: table; + table-layout: fixed; + margin: 0; + padding: 0; + width: 100%; +} + .horizontal-list .item { + display: table-cell; + vertical-align: middle; + } + /* DROPDOWN */ .dropdown { position: relative; -- cgit v1.2.3 From c2bf3ead8ae15288eb99c82643fb0cbd595e1454 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Sat, 13 Apr 2013 13:02:21 +0200 Subject: Export des flux au format RSS pleinement supporté (voir issue #34) - possibilité de les filtrer comme pour la vue principale MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/indexController.php | 14 +++++++++++++ app/controllers/rssController.php | 35 ------------------------------- app/layout/nav_menu.phtml | 19 +++++++++++++++++ app/models/Entry.php | 42 ++++++++++++++++++++++++++++--------- app/views/helpers/rss.phtml | 30 ++++++++++++++++++++++++++ app/views/index/index.phtml | 9 +++++++- app/views/rss/public.phtml | 31 --------------------------- public/theme/global.css | 6 ++++++ public/theme/icons/rss.svg | 32 ++++++++++++++++++++++++++++ public/theme/icons/share.svg | 34 ++++++++++++++++++++++++++++++ 10 files changed, 175 insertions(+), 77 deletions(-) delete mode 100755 app/controllers/rssController.php create mode 100755 app/views/helpers/rss.phtml delete mode 100755 app/views/rss/public.phtml create mode 100644 public/theme/icons/rss.svg create mode 100644 public/theme/icons/share.svg (limited to 'public') diff --git a/app/controllers/indexController.php b/app/controllers/indexController.php index 1eba7231f..a11c26044 100755 --- a/app/controllers/indexController.php +++ b/app/controllers/indexController.php @@ -38,6 +38,9 @@ class indexController extends ActionController { } elseif ($this->get['type'] == 'favoris') { $entries = $entryDAO->listFavorites ($this->mode, $search, $order); View::prependTitle ('Vos favoris - '); + } elseif ($this->get['type'] == 'public') { + $entries = $entryDAO->listPublic ($this->mode, $search, $order); + View::prependTitle ('Public - '); } elseif ($this->get != false) { if ($this->get['type'] == 'c') { $cat = $catDAO->searchById ($this->get['filter']); @@ -81,6 +84,10 @@ class indexController extends ActionController { $this->view->cat_aside = $catDAO->listCategories (); $this->view->nb_favorites = $entryDAO->countFavorites (); $this->view->nb_total = $entryDAO->count (); + + if (Request::param ('output', '') == 'rss') { + $this->view->_useLayout (false); + } } } @@ -157,6 +164,13 @@ class indexController extends ActionController { if ($get == 'favoris') { $this->view->get_c = $get; + $this->get = array ( + 'type' => $get, + 'filter' => $get + ); + } elseif ($get == 'public') { + $this->view->get_c = $get; + $this->get = array ( 'type' => $get, 'filter' => $get diff --git a/app/controllers/rssController.php b/app/controllers/rssController.php deleted file mode 100755 index 1f66f4517..000000000 --- a/app/controllers/rssController.php +++ /dev/null @@ -1,35 +0,0 @@ -view->_useLayout (false); - } - - public function publicAction () { - $entryDAO = new EntryDAO (); - $entryDAO->_nbItemsPerPage (-1); - - $items = $entryDAO->listPublic ('low_to_high'); - - try { - $page = Request::param('page', 1); - $nb = Request::param('nb', 15); - $this->view->itemPaginator = new Paginator($items); - $this->view->itemPaginator->_nbItemsPerPage($nb); - $this->view->itemPaginator->_currentPage($page); - } catch(CurrentPagePaginationException $e) { - Error::error( - 404, - array('error' => array('La page que vous cherchez n\'existe pas')) - ); - } - } - - public function getNbNotReadAction() { - } -} diff --git a/app/layout/nav_menu.phtml b/app/layout/nav_menu.phtml index 90fe4aea1..71a5bd11e 100644 --- a/app/layout/nav_menu.phtml +++ b/app/layout/nav_menu.phtml @@ -62,4 +62,23 @@
+ + 'index', + 'a' => 'index', + 'params' => array ( + 'output' => 'rss' + ) + ); + if ($get != '') { + $url['params']['get'] = $get; + } + if ($search != '') { + $url['params']['search'] = $search; + } + ?> + diff --git a/app/models/Entry.php b/app/models/Entry.php index b9b6d30db..230b457bf 100755 --- a/app/models/Entry.php +++ b/app/models/Entry.php @@ -422,7 +422,7 @@ class EntryDAO extends Model_pdo { $values = array(); if ($search) { $values[] = '%'.$search.'%'; - $where = ' AND title LIKE ?'; + $where .= ' AND title LIKE ?'; } if ($order == 'low_to_high') { @@ -455,8 +455,17 @@ class EntryDAO extends Model_pdo { return HelperEntry::daoToEntry ($stm->fetchAll (PDO::FETCH_ASSOC)); } - public function listPublic ($order = 'high_to_low') { + public function listPublic ($mode, $search = false, $order = 'high_to_low') { $where = ' WHERE is_public=1'; + if ($mode == 'not_read') { + $where .= ' AND is_read=0'; + } + + $values = array(); + if ($search) { + $values[] = '%'.$search.'%'; + $where .= ' AND title LIKE ?'; + } if ($order == 'low_to_high') { $order = ' DESC'; @@ -464,10 +473,26 @@ class EntryDAO extends Model_pdo { $order = ''; } - $sql = 'SELECT * FROM entry' . $where . ' ORDER BY date' . $order; + $sql = 'SELECT COUNT(*) AS count FROM entry' . $where; + $stm = $this->bd->prepare ($sql); + $stm->execute ($values); + $res = $stm->fetchAll (PDO::FETCH_ASSOC); + $this->nbItems = $res[0]['count']; + if($this->nbItemsPerPage < 0) { + $sql = 'SELECT * FROM entry' . $where + . ' ORDER BY date' . $order; + } else { + $deb = ($this->currentPage () - 1) * $this->nbItemsPerPage; + $fin = $this->nbItemsPerPage; + + $sql = 'SELECT * FROM entry' . $where + . ' ORDER BY date' . $order + . ' LIMIT ' . $deb . ', ' . $fin; + } $stm = $this->bd->prepare ($sql); - $stm->execute (); + + $stm->execute ($values); return HelperEntry::daoToEntry ($stm->fetchAll (PDO::FETCH_ASSOC)); } @@ -481,7 +506,7 @@ class EntryDAO extends Model_pdo { $values = array ($cat); if ($search) { $values[] = '%'.$search.'%'; - $where = ' AND title LIKE ?'; + $where .= ' AND title LIKE ?'; } if ($order == 'low_to_high') { @@ -515,10 +540,10 @@ class EntryDAO extends Model_pdo { $where .= ' AND is_read=0'; } - $values = array(); + $values = array($feed); if ($search) { $values[] = '%'.$search.'%'; - $where = ' AND title LIKE ?'; + $where .= ' AND title LIKE ?'; } if ($order == 'low_to_high') { @@ -529,7 +554,6 @@ class EntryDAO extends Model_pdo { $sql = 'SELECT COUNT(*) AS count FROM entry' . $where; $stm = $this->bd->prepare ($sql); - $values = array ($feed); $stm->execute ($values); $res = $stm->fetchAll (PDO::FETCH_ASSOC); $this->nbItems = $res[0]['count']; @@ -542,8 +566,6 @@ class EntryDAO extends Model_pdo { $stm = $this->bd->prepare ($sql); - $values = array ($feed); - $stm->execute ($values); return HelperEntry::daoToEntry ($stm->fetchAll (PDO::FETCH_ASSOC)); diff --git a/app/views/helpers/rss.phtml b/app/views/helpers/rss.phtml new file mode 100755 index 000000000..b75e6d3bc --- /dev/null +++ b/app/views/helpers/rss.phtml @@ -0,0 +1,30 @@ +'; ?> + + + <?php echo View::title(); ?> + + Flux RSS de + + GMT + +entryPaginator->items (); +foreach ($items as $item) { +?> + + <?php echo htmlspecialchars(html_entity_decode($item->title ())); ?> + link (); ?> + author (); ?> + + + + content (); +?>]]> + date (true)); ?> + guid (); ?> + + + + + diff --git a/app/views/index/index.phtml b/app/views/index/index.phtml index f9e953858..cd0ff0504 100644 --- a/app/views/index/index.phtml +++ b/app/views/index/index.phtml @@ -1,3 +1,10 @@ +renderHelper ('rss'); + return; +} +?> + partial ('aside_flux'); ?> partial ('nav_menu'); ?> @@ -67,7 +74,7 @@ if (isset ($this->entryPaginator)) {
  • - - 'index', - 'a' => 'index', - 'params' => array ( - 'output' => 'rss' - ) - ); - if ($get != '') { - $url['params']['get'] = $get; - } - if ($search != '') { - $url['params']['search'] = $search; - } - ?> - diff --git a/public/theme/freshrss.css b/public/theme/freshrss.css index e60310354..6db467a76 100644 --- a/public/theme/freshrss.css +++ b/public/theme/freshrss.css @@ -150,7 +150,7 @@ } .day { - height: 50px; + min-height: 50px; padding: 0 10px; font-size: 130%; font-weight: bold; diff --git a/public/theme/global.css b/public/theme/global.css index e44cda059..e4c503dfc 100644 --- a/public/theme/global.css +++ b/public/theme/global.css @@ -143,6 +143,9 @@ input, select, textarea { .stick input:first-child { border-radius: 3px 0 0 3px; } + .stick .btn.btn-important:first-child { + border-right: 1px solid #06f; + } .stick .btn:last-child, .stick input:last-child { border-radius: 0 3px 3px 0; diff --git a/public/theme/icons/rss.svg b/public/theme/icons/rss.svg index fe588c2cf..ceaddceee 100644 --- a/public/theme/icons/rss.svg +++ b/public/theme/icons/rss.svg @@ -22,8 +22,8 @@ - - + + -- cgit v1.2.3 From 9b9543109e36a5409fe71eb084cfac680dfc7cbd Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Sat, 13 Apr 2013 15:27:36 +0200 Subject: Fix issue #39 : actualisation de tous les flux grâce à Ajax MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/feedController.php | 8 ++++-- app/controllers/indexController.php | 1 + app/controllers/javascriptController.php | 9 ++++--- app/layout/nav_menu.phtml | 2 +- app/views/javascript/actualize.phtml | 46 ++++++++++++++++++++++++++++++++ public/theme/freshrss.css | 20 ++++++++++++++ 6 files changed, 80 insertions(+), 6 deletions(-) create mode 100644 app/views/javascript/actualize.phtml (limited to 'public') diff --git a/app/controllers/feedController.php b/app/controllers/feedController.php index d2a2184eb..83fc19e20 100755 --- a/app/controllers/feedController.php +++ b/app/controllers/feedController.php @@ -156,9 +156,13 @@ class feedController extends ActionController { 'content' => 'Aucun flux n\'a pu être mis à jour' ); } - Session::_param ('notification', $notif); - Request::forward (array (), true); + if (Request::param ('ajax', 0) == 0) { + Session::_param ('notification', $notif); + Request::forward (array (), true); + } else { + $this->view->_useLayout (false); + } } public function massiveImportAction () { diff --git a/app/controllers/indexController.php b/app/controllers/indexController.php index a11c26044..8fa911631 100755 --- a/app/controllers/indexController.php +++ b/app/controllers/indexController.php @@ -8,6 +8,7 @@ class indexController extends ActionController { public function indexAction () { View::appendScript (Url::display ('/scripts/shortcut.js')); View::appendScript (Url::display (array ('c' => 'javascript', 'a' => 'main'))); + View::appendScript (Url::display (array ('c' => 'javascript', 'a' => 'actualize'))); $entryDAO = new EntryDAO (); $feedDAO = new FeedDAO (); diff --git a/app/controllers/javascriptController.php b/app/controllers/javascriptController.php index 8060f560c..071cf65a4 100755 --- a/app/controllers/javascriptController.php +++ b/app/controllers/javascriptController.php @@ -5,8 +5,11 @@ class javascriptController extends ActionController { $this->view->_useLayout (false); header('Content-type: text/javascript'); } - - public function mainAction () { - + + public function mainAction () {} + + public function actualizeAction () { + $feedDAO = new FeedDAO (); + $this->view->feeds = $feedDAO->listFeeds (); } } diff --git a/app/layout/nav_menu.phtml b/app/layout/nav_menu.phtml index 90fe4aea1..5d7dd3091 100644 --- a/app/layout/nav_menu.phtml +++ b/app/layout/nav_menu.phtml @@ -1,7 +1,7 @@ + Partage +
    + +
    + +
    +
    +
    diff --git a/app/views/index/index.phtml b/app/views/index/index.phtml index cd0ff0504..6889a8b51 100644 --- a/app/views/index/index.phtml +++ b/app/views/index/index.phtml @@ -80,6 +80,12 @@ if (isset ($this->entryPaginator)) {
  • Par mail
  • + conf->urlShaarli (); + if ($shaarli) { + ?> +
  • Shaarli
  • + diff --git a/public/install.php b/public/install.php index fca4ff38e..7065e3a77 100644 --- a/public/install.php +++ b/public/install.php @@ -91,32 +91,13 @@ function saveStep2 () { $file_data = PUBLIC_PATH . '/data/Configuration.array.php'; - $conf = array ( - 'posts_per_page' => 20, - 'default_view' => 'not_read', - 'display_posts' => 'no', - 'sort_order' => 'low_to_high', - 'old_entries' => $_SESSION['old_entries'], - 'mail_login' => $_SESSION['mail_login'], - 'shortcuts' => array ( - 'mark_read' => 'r', - 'mark_favorite' => 'f', - 'go_website' => 'space', - 'next_entry' => 'j', - 'prev_entry' => 'k', - 'next_page' => 'right', - 'prev_page' => 'left', - ), - 'mark_when' => array ( - 'article' => 'yes', - 'site' => 'yes', - 'page' => 'no', - ), - ); $f = fopen ($file_data, 'w'); writeLine ($f, ' $_SESSION['old_entries'], + 'mail_login' => $_SESSION['mail_login'] + )); writeLine ($f, ');'); fclose ($f); -- cgit v1.2.3 From 6ce2b575eb501733e6936ac4b5f2e70d0f6ca13b Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Wed, 17 Apr 2013 18:30:14 +0200 Subject: Fix issue #59 : ajout des répertoires vides, obligatoires pour le fonctionnement de FreshRSS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 ---- app/configuration/.gitignore | 1 + cache/.gitignore | 1 + log/.gitignore | 1 + public/data/.gitignore | 1 + 5 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 app/configuration/.gitignore create mode 100644 cache/.gitignore create mode 100644 log/.gitignore create mode 100644 public/data/.gitignore (limited to 'public') diff --git a/.gitignore b/.gitignore index 61908804a..c9c8cacf4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1 @@ -app/configuration/application.ini lib/minz -log/application.log -cache -public/data diff --git a/app/configuration/.gitignore b/app/configuration/.gitignore new file mode 100644 index 000000000..72e8ffc0d --- /dev/null +++ b/app/configuration/.gitignore @@ -0,0 +1 @@ +* diff --git a/cache/.gitignore b/cache/.gitignore new file mode 100644 index 000000000..72e8ffc0d --- /dev/null +++ b/cache/.gitignore @@ -0,0 +1 @@ +* diff --git a/log/.gitignore b/log/.gitignore new file mode 100644 index 000000000..72e8ffc0d --- /dev/null +++ b/log/.gitignore @@ -0,0 +1 @@ +* diff --git a/public/data/.gitignore b/public/data/.gitignore new file mode 100644 index 000000000..72e8ffc0d --- /dev/null +++ b/public/data/.gitignore @@ -0,0 +1 @@ +* -- cgit v1.2.3