From 4f7968dfbb499c335877aad1a5d92c5bcfe5a616 Mon Sep 17 00:00:00 2001 From: Nicolas Bally Date: Tue, 20 Mar 2018 17:24:52 +0100 Subject: [PATCH] plume step 1 --- Gemfile | 10 +- Gemfile.lock | 77 +- app/assets/javascripts/event_form.coffee | 21 +- app/assets/javascripts/public.js.coffee | 5 + app/assets/stylesheets/admin.css.scss | 231 +++-- app/assets/stylesheets/admin.old.css.scss | 868 ++++++++++++++++++ app/assets/stylesheets/admin/qi.scss | 143 +++ app/assets/stylesheets/public.scss | 2 + app/assets/stylesheets/public/plume.css.scss | 216 +++++ .../admin/plume_articles_controller.rb | 107 +++ .../admin/plume_cats_controller.rb | 107 +++ .../admin/plume_events_controller.rb | 116 +++ app/controllers/admin/plumes_controller.rb | 107 +++ .../public/plume_articles_controller.rb | 13 + app/controllers/public/plumes_controller.rb | 42 + app/models/plume.rb | 9 + app/models/plume_article.rb | 27 + app/models/plume_cat.rb | 5 + app/models/plume_event.rb | 122 +++ .../admin/plume_articles/_form.html.haml | 12 + .../plume_articles/_index_block.html.haml | 5 + .../plume_articles/_plume_article.html.haml | 13 + .../admin/plume_articles/_show.html.haml | 7 + app/views/admin/plume_articles/create.js.erb | 5 + app/views/admin/plume_articles/destroy.js.erb | 2 + app/views/admin/plume_articles/edit.html.haml | 81 ++ app/views/admin/plume_articles/edit.js.erb | 2 + .../admin/plume_articles/index.html.haml | 5 + app/views/admin/plume_articles/index.js.erb | 2 + app/views/admin/plume_articles/new.js.erb | 2 + .../admin/plume_articles/reseau.html.haml | 54 ++ app/views/admin/plume_articles/update.js.erb | 8 + app/views/admin/plume_cats/_form.html.haml | 10 + .../admin/plume_cats/_index_block.html.haml | 5 + .../admin/plume_cats/_plume_cat.html.haml | 17 + app/views/admin/plume_cats/_show.html.haml | 0 app/views/admin/plume_cats/_tags.html.haml | 14 + app/views/admin/plume_cats/create.js.erb | 5 + app/views/admin/plume_cats/destroy.js.erb | 2 + app/views/admin/plume_cats/edit.html.haml | 21 + app/views/admin/plume_cats/edit.js.erb | 2 + app/views/admin/plume_cats/index.html.haml | 5 + app/views/admin/plume_cats/index.js.erb | 2 + app/views/admin/plume_cats/new.js.erb | 2 + app/views/admin/plume_cats/reseau.html.haml | 54 ++ app/views/admin/plume_cats/update.js.erb | 9 + app/views/admin/plume_events/_form.html.haml | 51 + .../admin/plume_events/_index_block.html.haml | 3 + .../admin/plume_events/_plume_event.html.haml | 10 + app/views/admin/plume_events/_show.html.haml | 6 + app/views/admin/plume_events/cible.html.haml | 6 + app/views/admin/plume_events/create.js.erb | 4 + app/views/admin/plume_events/destroy.js.erb | 1 + app/views/admin/plume_events/edit.html.haml | 81 ++ app/views/admin/plume_events/edit.js.erb | 1 + app/views/admin/plume_events/index.html.haml | 8 + app/views/admin/plume_events/index.js.erb | 1 + app/views/admin/plume_events/new.js.erb | 3 + app/views/admin/plume_events/update.js.erb | 5 + app/views/admin/plumes/_form.html.haml | 18 + app/views/admin/plumes/_index_block.html.haml | 5 + app/views/admin/plumes/_plume.html.haml | 14 + app/views/admin/plumes/_show.html.haml | 11 + app/views/admin/plumes/_tags.html.haml | 14 + app/views/admin/plumes/create.js.erb | 5 + app/views/admin/plumes/destroy.js.erb | 2 + app/views/admin/plumes/edit.html.haml | 29 + app/views/admin/plumes/edit.js.erb | 2 + app/views/admin/plumes/index.html.haml | 7 + app/views/admin/plumes/index.js.erb | 2 + app/views/admin/plumes/new.js.erb | 2 + app/views/admin/plumes/reseau.html.haml | 54 ++ app/views/admin/plumes/update.js.erb | 9 + app/views/layouts/admin.html.haml | 13 +- app/views/layouts/plume.html.haml | 71 ++ .../public/plume_articles/show.html.haml | 28 + app/views/public/plumes/_sommaire.html.haml | 17 + app/views/public/plumes/_top.html.haml | 7 + app/views/public/plumes/agenda.html.haml | 34 + app/views/public/plumes/breves.html.haml | 35 + app/views/public/plumes/show.html.haml | 49 + config/database.yml | 2 +- .../initializers/abstract_mysql2_adapter.rb | 3 + config/routes.rb | 33 + db/migrate/20180319211920_create_plumes.rb | 20 + .../20180319212908_create_plume_cats.rb | 12 + .../20180319213119_create_plume_articles.rb | 15 + .../20180320123351_create_plume_events.rb | 16 + db/schema.rb | 57 +- public/plume-logo.png | Bin 0 -> 165777 bytes test/fixtures/plume_articles.yml | 15 + test/fixtures/plume_cats.yml | 9 + test/fixtures/plume_events.yml | 9 + test/fixtures/plumes.yml | 23 + test/models/plume_article_test.rb | 7 + test/models/plume_cat_test.rb | 7 + test/models/plume_event_test.rb | 7 + test/models/plume_test.rb | 7 + 98 files changed, 3314 insertions(+), 110 deletions(-) create mode 100644 app/assets/stylesheets/admin.old.css.scss create mode 100644 app/assets/stylesheets/admin/qi.scss create mode 100644 app/assets/stylesheets/public/plume.css.scss create mode 100644 app/controllers/admin/plume_articles_controller.rb create mode 100644 app/controllers/admin/plume_cats_controller.rb create mode 100644 app/controllers/admin/plume_events_controller.rb create mode 100644 app/controllers/admin/plumes_controller.rb create mode 100644 app/controllers/public/plume_articles_controller.rb create mode 100644 app/controllers/public/plumes_controller.rb create mode 100644 app/models/plume.rb create mode 100644 app/models/plume_article.rb create mode 100644 app/models/plume_cat.rb create mode 100644 app/models/plume_event.rb create mode 100644 app/views/admin/plume_articles/_form.html.haml create mode 100644 app/views/admin/plume_articles/_index_block.html.haml create mode 100644 app/views/admin/plume_articles/_plume_article.html.haml create mode 100644 app/views/admin/plume_articles/_show.html.haml create mode 100644 app/views/admin/plume_articles/create.js.erb create mode 100644 app/views/admin/plume_articles/destroy.js.erb create mode 100644 app/views/admin/plume_articles/edit.html.haml create mode 100644 app/views/admin/plume_articles/edit.js.erb create mode 100644 app/views/admin/plume_articles/index.html.haml create mode 100644 app/views/admin/plume_articles/index.js.erb create mode 100644 app/views/admin/plume_articles/new.js.erb create mode 100644 app/views/admin/plume_articles/reseau.html.haml create mode 100644 app/views/admin/plume_articles/update.js.erb create mode 100644 app/views/admin/plume_cats/_form.html.haml create mode 100644 app/views/admin/plume_cats/_index_block.html.haml create mode 100644 app/views/admin/plume_cats/_plume_cat.html.haml create mode 100644 app/views/admin/plume_cats/_show.html.haml create mode 100644 app/views/admin/plume_cats/_tags.html.haml create mode 100644 app/views/admin/plume_cats/create.js.erb create mode 100644 app/views/admin/plume_cats/destroy.js.erb create mode 100644 app/views/admin/plume_cats/edit.html.haml create mode 100644 app/views/admin/plume_cats/edit.js.erb create mode 100644 app/views/admin/plume_cats/index.html.haml create mode 100644 app/views/admin/plume_cats/index.js.erb create mode 100644 app/views/admin/plume_cats/new.js.erb create mode 100644 app/views/admin/plume_cats/reseau.html.haml create mode 100644 app/views/admin/plume_cats/update.js.erb create mode 100644 app/views/admin/plume_events/_form.html.haml create mode 100644 app/views/admin/plume_events/_index_block.html.haml create mode 100644 app/views/admin/plume_events/_plume_event.html.haml create mode 100644 app/views/admin/plume_events/_show.html.haml create mode 100644 app/views/admin/plume_events/cible.html.haml create mode 100644 app/views/admin/plume_events/create.js.erb create mode 100644 app/views/admin/plume_events/destroy.js.erb create mode 100644 app/views/admin/plume_events/edit.html.haml create mode 100644 app/views/admin/plume_events/edit.js.erb create mode 100644 app/views/admin/plume_events/index.html.haml create mode 100644 app/views/admin/plume_events/index.js.erb create mode 100644 app/views/admin/plume_events/new.js.erb create mode 100644 app/views/admin/plume_events/update.js.erb create mode 100644 app/views/admin/plumes/_form.html.haml create mode 100644 app/views/admin/plumes/_index_block.html.haml create mode 100644 app/views/admin/plumes/_plume.html.haml create mode 100644 app/views/admin/plumes/_show.html.haml create mode 100644 app/views/admin/plumes/_tags.html.haml create mode 100644 app/views/admin/plumes/create.js.erb create mode 100644 app/views/admin/plumes/destroy.js.erb create mode 100644 app/views/admin/plumes/edit.html.haml create mode 100644 app/views/admin/plumes/edit.js.erb create mode 100644 app/views/admin/plumes/index.html.haml create mode 100644 app/views/admin/plumes/index.js.erb create mode 100644 app/views/admin/plumes/new.js.erb create mode 100644 app/views/admin/plumes/reseau.html.haml create mode 100644 app/views/admin/plumes/update.js.erb create mode 100644 app/views/layouts/plume.html.haml create mode 100644 app/views/public/plume_articles/show.html.haml create mode 100644 app/views/public/plumes/_sommaire.html.haml create mode 100644 app/views/public/plumes/_top.html.haml create mode 100644 app/views/public/plumes/agenda.html.haml create mode 100644 app/views/public/plumes/breves.html.haml create mode 100644 app/views/public/plumes/show.html.haml create mode 100644 config/initializers/abstract_mysql2_adapter.rb create mode 100644 db/migrate/20180319211920_create_plumes.rb create mode 100644 db/migrate/20180319212908_create_plume_cats.rb create mode 100644 db/migrate/20180319213119_create_plume_articles.rb create mode 100644 db/migrate/20180320123351_create_plume_events.rb create mode 100644 public/plume-logo.png create mode 100644 test/fixtures/plume_articles.yml create mode 100644 test/fixtures/plume_cats.yml create mode 100644 test/fixtures/plume_events.yml create mode 100644 test/fixtures/plumes.yml create mode 100644 test/models/plume_article_test.rb create mode 100644 test/models/plume_cat_test.rb create mode 100644 test/models/plume_event_test.rb create mode 100644 test/models/plume_test.rb diff --git a/Gemfile b/Gemfile index 7b7d488..7246cfd 100644 --- a/Gemfile +++ b/Gemfile @@ -1,13 +1,13 @@ source 'https://rubygems.org' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' -gem 'rails', '4.0.12' +gem 'rails', '4.0.13' gem 'bcrypt-ruby', '3.1.2' # Use sqlite3 as the database for Active Record -gem 'mysql2' - gem 'sass-rails' +gem 'mysql2', '~> 0.3.18' +gem 'sass-rails' # Use Uglifier as compressor for JavaScript assets gem 'uglifier', '>= 1.3.0' @@ -28,7 +28,7 @@ gem 'turbolinks' # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder gem 'jbuilder', '~> 1.0.1' -gem "therubyracer" +gem "therubyracer", group: :production #gem "less-rails" #gem "twitter-bootstrap-rails" @@ -48,7 +48,7 @@ group :doc do end gem "capistrano", group: :development -gem "rvm-capistrano", group: :development +gem "rvm-capistrano", group: :development, :require => false gem 'net-ssh', '~>2.7.0' # Use ActiveModel has_secure_password # gem 'bcrypt-ruby', '~> 3.0.0' diff --git a/Gemfile.lock b/Gemfile.lock index 3ad0131..a955f68 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,25 +1,25 @@ GEM remote: https://rubygems.org/ specs: - actionmailer (4.0.12) - actionpack (= 4.0.12) + actionmailer (4.0.13) + actionpack (= 4.0.13) mail (~> 2.5, >= 2.5.4) - actionpack (4.0.12) - activesupport (= 4.0.12) + actionpack (4.0.13) + activesupport (= 4.0.13) builder (~> 3.1.0) erubis (~> 2.7.0) rack (~> 1.5.2) rack-test (~> 0.6.2) - activemodel (4.0.12) - activesupport (= 4.0.12) + activemodel (4.0.13) + activesupport (= 4.0.13) builder (~> 3.1.0) - activerecord (4.0.12) - activemodel (= 4.0.12) + activerecord (4.0.13) + activemodel (= 4.0.13) activerecord-deprecated_finders (~> 1.0.2) - activesupport (= 4.0.12) + activesupport (= 4.0.13) arel (~> 4.0.0) - activerecord-deprecated_finders (1.0.3) - activesupport (4.0.12) + activerecord-deprecated_finders (1.0.4) + activesupport (4.0.13) i18n (~> 0.6, >= 0.6.9) minitest (~> 4.2) multi_json (~> 1.3) @@ -50,6 +50,7 @@ GEM coffee-script-source execjs coffee-script-source (1.8.0) + concurrent-ruby (1.0.5) devise (3.4.1) bcrypt (~> 3.0) orm_adapter (~> 0.1) @@ -81,7 +82,8 @@ GEM hpricot (~> 0.8.6) ruby_parser (~> 3.1.1) htmlentities (4.3.2) - i18n (0.6.11) + i18n (0.9.5) + concurrent-ruby (~> 1.0) jbuilder (1.0.2) activesupport (>= 3.0.0) jquery-rails (3.1.2) @@ -98,13 +100,13 @@ GEM rails kgio (2.9.2) libv8 (3.16.14.7) - mail (2.6.3) - mime-types (>= 1.16, < 3) - mime-types (2.4.3) + mail (2.7.0) + mini_mime (>= 0.1.1) + mini_mime (1.0.0) mini_portile (0.6.1) minitest (4.7.5) - multi_json (1.10.1) - mysql2 (0.3.17) + multi_json (1.13.1) + mysql2 (0.3.21) net-scp (1.2.1) net-ssh (>= 2.6.5) net-sftp (2.1.2) @@ -125,24 +127,24 @@ GEM pygments.rb (0.6.0) posix-spawn (~> 0.3.6) yajl-ruby (~> 1.1.0) - rack (1.5.2) - rack-test (0.6.2) + rack (1.5.5) + rack-test (0.6.3) rack (>= 1.0) - rails (4.0.12) - actionmailer (= 4.0.12) - actionpack (= 4.0.12) - activerecord (= 4.0.12) - activesupport (= 4.0.12) + rails (4.0.13) + actionmailer (= 4.0.13) + actionpack (= 4.0.13) + activerecord (= 4.0.13) + activesupport (= 4.0.13) bundler (>= 1.3.0, < 2.0) - railties (= 4.0.12) + railties (= 4.0.13) sprockets-rails (~> 2.0) - railties (4.0.12) - actionpack (= 4.0.12) - activesupport (= 4.0.12) + railties (4.0.13) + actionpack (= 4.0.13) + activesupport (= 4.0.13) rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) raindrops (0.13.0) - rake (10.4.2) + rake (12.3.0) rdoc (4.2.0) json (~> 1.4) redcarpet (3.2.1) @@ -164,20 +166,20 @@ GEM json (~> 1.7, >= 1.7.7) rdoc (~> 4.0) sexp_processor (4.4.4) - sprockets (2.12.3) + sprockets (2.12.4) hike (~> 1.2) multi_json (~> 1.0) rack (~> 1.0) tilt (~> 1.1, != 1.3.0) - sprockets-rails (2.2.2) + sprockets-rails (2.3.3) actionpack (>= 3.0) activesupport (>= 3.0) sprockets (>= 2.8, < 4.0) therubyracer (0.12.1) libv8 (~> 3.16.14.0) ref - thor (0.19.1) - thread_safe (0.3.4) + thor (0.20.0) + thread_safe (0.3.6) tilt (1.4.1) turbolinks (2.5.3) coffee-rails @@ -186,7 +188,7 @@ GEM execjs rails (>= 3.1) railties (>= 3.1) - tzinfo (0.3.42) + tzinfo (0.3.53) uglifier (2.5.3) execjs (>= 0.3.0) json (>= 1.8.0) @@ -223,14 +225,14 @@ DEPENDENCIES jquery-ui-rails kaminari kaminari-bootstrap - mysql2 + mysql2 (~> 0.3.18) net-ssh (~> 2.7.0) nokogiri non-stupid-digest-assets paypal-sdk-merchant posix-spawn pygments.rb - rails (= 4.0.12) + rails (= 4.0.13) redcarpet rmagick rvm-capistrano @@ -242,3 +244,6 @@ DEPENDENCIES uglifier (>= 1.3.0) unicorn (= 4.6.3) wicked_pdf + +BUNDLED WITH + 1.16.1 diff --git a/app/assets/javascripts/event_form.coffee b/app/assets/javascripts/event_form.coffee index 9271bba..d428d3d 100644 --- a/app/assets/javascripts/event_form.coffee +++ b/app/assets/javascripts/event_form.coffee @@ -14,4 +14,23 @@ $ -> $(document).on 'change', ".event_date_form input:checkbox", -> - update_event_form() \ No newline at end of file + update_event_form() + + + + +@update_plume_event_form = -> + if $("#plume_event_stop_date").is(":checked") + $(".stop_at").show() + else + $(".stop_at").hide() + if $("#plume_event_entire_day").is(":checked") + $(".plume_event_time").hide() + $(".plume_event_time_input").attr "value", "" + else + $(".plume_event_time").show() + +$ -> + + $(document).on 'change', ".plume_event_date_form input:checkbox", -> + update_plume_event_form() \ No newline at end of file diff --git a/app/assets/javascripts/public.js.coffee b/app/assets/javascripts/public.js.coffee index 69f70ac..c76a630 100644 --- a/app/assets/javascripts/public.js.coffee +++ b/app/assets/javascripts/public.js.coffee @@ -257,7 +257,12 @@ $("document").ready -> offset= 0 resize = -> + $(".with_ratio").each -> + ratio = parseFloat($(this).data("ratio")) + height = $(this).width()*ratio + $(this).css("height",height+"px") + $("iframe").each -> $(this).css "height" : Math.round($(this).width()/ 1.77)+"px" diff --git a/app/assets/stylesheets/admin.css.scss b/app/assets/stylesheets/admin.css.scss index 73760f7..e8b2dc2 100644 --- a/app/assets/stylesheets/admin.css.scss +++ b/app/assets/stylesheets/admin.css.scss @@ -10,11 +10,67 @@ @import "admin/topics"; @import "admin/uploads"; +@import "admin/qi"; + + +$vert:rgba(143,193,46,0.9); + +#edit_watcher_result{ + .inner{ + position:fixed; + bottom:3px; + + left:3px; + z-index:10; + width:450px; + + color: #856404; + background-color: #fff3cd; + border-color: #ffeeba; + padding:8px 12px; + border:1px solid rgba(#856404, 0.1); + + } +} + +.shiped{ + background:green; +} + +.image_file_helper{ + + background:rgba(255,255,255,0.8); + border-radius:20px; + border:1px solid rgba(0,0,0,0.2); + padding:5px 10px; + +} +.navbar{ + margin-bottom:0; +} +.home_slider_slide_css{ + border:1px solid black; + border-left:10px solid black; + padding:10px; + margin:5px; + position:relative; + &.active{ + border-color:green; + } + .actions{ + position:absolute; + top:10px; + right:10px; + } + +} + #admin_nav{ border-radius:0px; } + span.preview{ img{ max-width:125px; @@ -35,9 +91,12 @@ html { } body { - height: 100%; + width: 100%; - + font-family:"Roboto"; + background:#E9ECEE no-repeat fixed; + background-size:100%; + background-position:bottom center; } @@ -95,7 +154,7 @@ border:1px solid #0088cc; display:inline-block; padding:6px; border-radius:50%; - +min-width: 27px; text-align:center; background:white; @@ -267,13 +326,34 @@ text-decoration:none; } - + #menu_item_breadcrumb{ + margin-bottom:20px; + a.root{ + padding:9px 0px; + + display:inline-block; + &.child:before{ + content:"> "; + } + + } + + span, .child{ + padding:9px 0px; + + display:inline-block; + + &:before{ + content:"> "; + } + } + + } #sortable_menu_item{ .menu_item_row{ - padding:8px 0px; - background:rgba(240,240,240,1); - margin:3px 0px; - + padding:4px 0px; + border-top:1px solid rgba(240,240,240,1); + .actions{ text-align:right; @@ -337,7 +417,8 @@ text-decoration:none; .block_portlets{ min-height:50px; - border:1px dotted rgba(227,227,227,1); + padding:10px; + border:1px dotted rgba(0,0,0,0.5); } @@ -614,26 +695,19 @@ margin:0.5em; } .portlet_placeholder{ -background:rgba(80,80,80,0.5); - -height:5px; - +background:lighten($vert,40); +cursor:pointer; +padding:3px; +text-align:center; i{ -display:none; -top:-20px; -left:-5px; -font-size:15px; - -padding:5px; - - +font-size:17px; +color:lighten($vert,60); } &:hover{ -background:rgba(80,80,80,1); +background:darken($vert,0); i{ -display:block; -position:absolute;top:-9px; + } } @@ -641,6 +715,30 @@ position:absolute;top:-9px; .portlet{ cursor:pointer; box-sizing: border-box; +position:relative; +border:1px solid rgba(0,0,0,0.3); +margin:10px 5px; +padding:5px; +&.portlet_block_content{ + border:0; + padding:0; +} + +.portlet_label{ + position:absolute; + top:0; + right:0; + font-size:12px; + background:rgba(0,0,0,0.4); + color:white; + padding:2px 4px; + border-radius:0 0px 0 5px; + &:hover{ + z-index:100; + background:rgba(0,0,0,1); + } + +} &.active{ border:3px solid rgba(129,155,237,1); .redactor-editor{ @@ -649,7 +747,7 @@ background:rgba(225,237,251,1); } } &.portlet_text_content{ -border:0; +//border:0; } &.move{ @@ -657,10 +755,7 @@ opacity:0.5; } } -h1{ -margin-top:0; -} .table-striped tr:nth-child(odd) td, .table-striped tr:nth-child(odd) th{ @@ -673,6 +768,22 @@ background:rgba(235,244,250,1) !important; min-height:50px; } +.portlet_video_content{ + + .video_thumb{ + width:300px; + height:200px; + margin:auto; + .play_button{ + text-align:center; + color:white; + font-size:50px; + padding-top:70px; + } + + } +} + } #menu_item_informations{ @@ -726,7 +837,7 @@ min-height:50px; .row{ margin:auto; -max-width:1100px; + display:block; @@ -822,47 +933,41 @@ height:auto !important; } -.select2-container.form-control{ - - padding: 0px; - border: 0px; - border-radius: 0; - height: auto; - margin: 0; +h1{ + font-size: 28px !important; + margin-top: 21px; + margin-bottom: 10.5px } -.newsletter_block_edit{ - max-width:770px; - margin:10px auto; - padding:10px; - box-shadow:0 0 10px rgba(0,0,0,0.1); - border:1px solid #C8C8CA; - - - - +.recurrent_cb{ + td{background:#dff0d8 !important;} } -.cancel{ - - color:#C5C1C5; - a .icon{ - color:#C5C1C5; - border-color:#C5C1C5; - - } - &:hover{ - a .icon{ - color:#428bca; - border-color:#428bca; - &:hover{ - color:white; - +.recurrent_sepa{ + td{background:#fcf8e3 !important;} +} + +.donate_cheque{ + td{background:#ffdec5 !important;} +} + +.donate_cb{ + td{background:#d9edf7 !important;} +} + +.formtastic{ + .form-wrapper{ + .row{ + .col-xs-1, .col-xs-2, .col-xs-3{ + width:auto; + margin:0; + padding:0px 5px; } } - color:black; + } + + } - diff --git a/app/assets/stylesheets/admin.old.css.scss b/app/assets/stylesheets/admin.old.css.scss new file mode 100644 index 0000000..73760f7 --- /dev/null +++ b/app/assets/stylesheets/admin.old.css.scss @@ -0,0 +1,868 @@ +@import "bootstrap"; + +@import "fontawesome/font-awesome"; +@import "manager"; +@import "redactor"; +@import "pane_hover"; +@import "vendor/select2"; + +@import "admin/sheets"; +@import "admin/topics"; +@import "admin/uploads"; + +#admin_nav{ +border-radius:0px; + +} + +span.preview{ +img{ +max-width:125px; +max-height:125px; +cursor:pointer; +} + +} +img{ + +max-width:100%; +} + +html { + height: 100%; + width: 100%; + +} + +body { + height: 100%; + width: 100%; + + +} + + +#tags .tag_label{ + i{ display:none;} + + &.active{ + + background:rgba(0,136,204,1); + color:white; + i{ display:inline;} + + } +} + +.set_tag{ +display:none; +} + +.tag_label{ + border-radius:11px;background:rgba(206,220,244,1);border:1px solid rgba(170,196,238,1);padding:2px 9px;display:inline-block;cursor:default;color:black; + margin-bottom:5px; +} + +.map_content_map img { + max-width: none; +} + +#mapCanvas label { + width: auto; display:inline; +} + +body.admin{ + +#artworks{ +.artwork{ + float:left;width:250px;height:270px;margin:0px 10px 10px 0px; + } + +} + + + + +padding:0px; + +.right{ +float:right; + +} + +.icon{ +border:1px solid #0088cc; +display:inline-block; +padding:6px; +border-radius:50%; + +text-align:center; +background:white; + +&:hover{ +background:#0088cc; +color:white; +text-decoration:none; +} + + +} + + #upload_details{ + display:none; + .content{ + position:absolute; + top:0px; + left:0px; + right:0px; + bottom:0px; + overflow:auto; + + } + + height:400px; + width:800px; + position:absolute; + top:-400px; + right:1em; + + background:white; + box-shadow:0 5px 10px rgba(0, 0, 0, 0.2); + //background-color: @dropdownBackground; + border: 1px solid #ccc; // Fallback for IE7-8 + //border: 1px solid @dropdownBorder; + *border-right-width: 2px; + *border-bottom-width: 2px; + //.border-radius(6px); + //.box-shadow(0 5px 10px rgba(0,0,0,.2)); + + + + } + #upload_details::before { + + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + + position: absolute; + + right: 215px; + border-top: 7px solid rgba(0, 0, 0, 0.2); + + border-bottom: 0; + bottom: -7px; + + + + + + } + + #upload_details::after { + + + + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + + position: absolute; + + right: 216px; + border-top: 6px solid #ffffff; + border-bottom: 0; + bottom: -6px; + + } + + + + + #toolbar-text{ + position:fixed; + z-index:2; + + top:52px; + left:0px; + right:330px; + + + } + + #flashs{ + position:fixed; + bottom:0px; + + left:1em; + min-width:600px; + width:50%; + z-index:3; + + } + + + form .clearfix:before, form .clearfix:after { + display: inline; + } + + .error{ + color:red; + + input{ + border-color:red; + } + + *{ + color:red; + } + } + + body.dragging, body.dragging * { + cursor: move !important; + + } + + .dragged { + position: absolute; + opacity: 0.5; + z-index: 2000; + } + + ol.sortable li.placeholder { + position: relative; + } + + ol.sortable li.placeholder:before { + position: absolute; + + } + + + + + + .placeholder{ + background:rgba(143,202,70,0.8); + height:10px; + } + + .prevv_folder{ + + border-top:1px solid #999999; + border-bottom:1px solid #999999; + padding:8px 0px; + + .placeholder{ + height:0px; + } + + &.active{ + background:rgba(143,202,70,0.8); + + } + + } + + + + #sortable_menu_item{ + .menu_item_row{ + padding:8px 0px; + background:rgba(240,240,240,1); + margin:3px 0px; + + .actions{ + text-align:right; + + } + + } + + + + .receptable{ + position:relative; + + .placeholder{ + position:absolute; + top:0px; + left:0px; + right:0px; + bottom:0px; + height:auto; + } + + } + + } + + #menu_item_informations{ + + + form{ + + .preview{ + + img{ + height:50px; + + } + } + } + + position:fixed; + z-index:3; + overflow:auto; + box-shadow:rgba(0,0,0,1) 0px 0px 5px; + margin-bottom:0px; + top:52px; + right:0px; + width:330px; + bottom:0px; + background:white; + .placeholder{ + display:inline-block; + width:91px; + height:91px; + margin:0px; +} + + + } + + + + .block_portlets{ + min-height:50px; + border:1px dotted rgba(227,227,227,1); + + + } + + .block_portlets_sortable{ + border:0px; + + } + + + + #menu_item_inspector_container{ + .panel{ + border-radius:0px; + border-left:0px; + border-right:0px; + + } + .accordion{ + + height:auto; + + } + + .accordion-group{ + border:0px; + border-radius:0px; + } + + + .accordion-body{ + background:white; + + } + .accordion-heading{ + border-radius:0px; + border:0px; + background:-webkit-linear-gradient(top, #222222, #111111); + padding:0px; + min-height:0px; + a{ + padding:10px 20px; + color:white; + + &:hover{ + text-decoration:none; + } + } + + } + .inspector_handle{ + height:10px; + width:100%; + background:black; + cursor:pointer; + + } + + .content_type{ + display:inline-block; + img{height:50px;cursor:pointer;} + + } + } + + .btn-toolbar{ + display:none; + top:-35px; + + } + + + #column_sliders{ + + position:relative; + + .slider{ + position:absolute; + top:0px; + left:0px; + width:100%; + } + + .slider-selection{ + display:none !important; + } + + .slider:not(:first-child){ + + + .slider-track{ + background:transparent; + box-shadow:transparent 0px 0px 0px; + } + } + + + .slider-handle{ + z-index:100; + } + + } + + .html_content_form{ + + + + + + #ace_editor_pre{ + position:relative; + width:100%; + height:400px; + background:white; + border:1px solid #353535; + + } + + + + + + &.large{ + position:fixed; + top:0px; + left:0px; + bottom:0px; + right:0px; + background:white; + z-index:2000 !important; + + + #ace_editor_pre{ + position:absolute; + top:10px; + left:10px; + bottom:50px; + right:10px; + width:inherit; + height:inherit; + + + } + + .action{ + + position:absolute; + + bottom:15px; + right:5px; + + + } + + + + + } + + + } + + + + .image_square{ + display:inline-block; + padding:5px; + margin:5px; + position:relative; + border : 1px solid rgb(230,230,230); + + background:white; + + .actions{ + display:none; + position:absolute; + top:0px; + right:0px; + } + } + + .image_square .img{ + text-align:center; + width:150px; + height:150px; + margin:0px; + background-position:center center; + background-repeat:no-repeat; + + background-size: contain; + + + + } + + .image_square:hover .actions{ + display:block; + border:none; + padding:0px; + margin:0px; + + + + } + + .image_square:hover .actions:hover{ + + opacity:1; + + } + + + +} + +.event_date_form{ + background:rgba(143,193,46,0.9); + margin:0px -10px 20px -10px; + padding:10px; + + color:black; + + p{ + line-height:35px; + } + + label{ + display:inline; + } + +} + + +.field_with_suppr{ + display:inline-block; + position:relative; + + .suppr{ + + display:block; + position:absolute; + top:7px; + right:5px; + img{ + cursor:pointer; + } + + } + +} + +.periodes_form .field, .jockers_form .field{ +border:1px solid #5b94c7; +margin:0.5em; +} + + +.table-striped{ + + tr:nth-child(odd) { + td, th{ + background:#f9f9f9 !important; + }} + +} + +@media print { + .visible-print { display: inherit !important; } + .hidden-print { display: none !important; } + + + + +} + +.portlet_placeholder{ +background:rgba(80,80,80,0.5); + +height:5px; + +i{ +display:none; +top:-20px; +left:-5px; +font-size:15px; + +padding:5px; + + +} +&:hover{ +background:rgba(80,80,80,1); + +i{ +display:block; +position:absolute;top:-9px; +} +} + +} +.portlet{ +cursor:pointer; +box-sizing: border-box; +&.active{ +border:3px solid rgba(129,155,237,1); +.redactor-editor{ +background:rgba(225,237,251,1); + +} +} +&.portlet_text_content{ +border:0; +} + +&.move{ +opacity:0.5; +} + +} +h1{ +margin-top:0; + +} + +.table-striped tr:nth-child(odd) td, .table-striped tr:nth-child(odd) th{ + +background:rgba(235,244,250,1) !important; + +} + +.block_portlets{ +.portlet{ +min-height:50px; +} + +} + +#menu_item_informations{ + #collapse3{ + + position:relative; + padding-bottom:50px; + } + + + #element_form_action{ + + position:fixed; + width:330px; + right:0; + bottom:0; + border-top:solid rgba(221,221,221,1) 1px; + + .portlet_handle, .trash, .save{ + border-radius:0; + border:0; + margin:0; + display:block; + float:left; + padding:10px 12px; + + } + + .portlet_handle{ + width:35%; + + .cancel_message{ + display:none; + } + } + .trash{ + width:20%; + } + .save{ + width:45%; + } + + + } + +} + + + + +.row{ + +margin:auto; +max-width:1100px; +display:block; + + +&:after{ +content: ""; + display: table; + clear: both; + +} + +.columns{ + +display:block; + +box-sizing: border-box; +float:left; +display:inline-block; + +&.span_12{ +width:100%; + +} + +&.span_11{ +width:100/12*11; + +} +&.span_10{ +width:percentage(1/12*10); + +} +&.span_9{ +width:percentage(1/12*9); + +} +&.span_8{ +width:percentage(1/12*8); + +} +&.span_7{ +width:percentage(1/12*7); + +} + +&.span_6{ +width:percentage(1/12*6); + +} +&.span_5{ +width:percentage(1/12*5); + +} +&.span_4{ +width:percentage(1/12*4); + +} +&.span_3{ +width:percentage(1/12*3); + +} +&.span_2{ +width:percentage(1/12*2); + +} + +&.span_1{ +width:percentage(1/12*1); + +} + + +} +} +#menu_item_informations{ +h4{ +color: #333333; +background-color: whitesmoke; +border:1px solid #dddddd; +padding:10px 15px; +font-size:16px; +cursor:pointer; +border-left:0px; +border-right:0px; +} + +.panel{ +padding:0 10px; +} +} +#collapse3{ +height:auto !important; + +} + + +.select2-container.form-control{ + + padding: 0px; + border: 0px; + border-radius: 0; + height: auto; + margin: 0; + +} + +.newsletter_block_edit{ + + max-width:770px; + margin:10px auto; + padding:10px; + box-shadow:0 0 10px rgba(0,0,0,0.1); + border:1px solid #C8C8CA; + + + + +} + +.cancel{ + + color:#C5C1C5; + a .icon{ + color:#C5C1C5; + border-color:#C5C1C5; + + } + &:hover{ + a .icon{ + color:#428bca; + border-color:#428bca; + &:hover{ + color:white; + + } + } + color:black; + } +} + diff --git a/app/assets/stylesheets/admin/qi.scss b/app/assets/stylesheets/admin/qi.scss new file mode 100644 index 0000000..a69013c --- /dev/null +++ b/app/assets/stylesheets/admin/qi.scss @@ -0,0 +1,143 @@ +$blue :#2388B8; + + +.navbar-inverse .navbar-nav > li > a, .navbar-inverse .navbar-brand{ + color:rgba(255, 255, 255, 0.80); + +} + +.navbar-inverse{ + background:#31373d; +} + + + + +.qi_header{ + box-sizing:border-box; + + padding: 13px 20px; + + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.07); + background:white; + .right{ + float:right; + + .btn{ + position:relative; + top:-5px; + } + } + + h1{ + font-size: 20px !important; + + font-weight: 400; + margin:0; + + span{ + color:rgba(0,0,0,0.6); + display:inline-block; + &:before{ + content : "/ "; + } + + } + } + + + +} + + +.qi_row{ + padding:20px; +} + +.qi_pannel{ + &.padding{ + padding:20px; + } + &.qi_plain{ + + background-color: #ffffff; + border-radius: 3px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + + .header{ + h2{ + margin-top:0; + } + margin-bottom:30px; + } + + .sub_header{ + padding-top:20px; + margin:0 -20px; + padding:0 20px; + padding-top:20px; + border-top:1px solid rgba(0, 0, 0, 0.1); + h2{ + margin-top:0; + } + margin-bottom:30px; + + } + } + +} + +.qi_pagination { + .pagination{ + padding:0; + margin:0; + } + text-align:center; + display:block; + margin:0 -20px; + border-top:1px solid rgba(0, 0, 0, 0.1); + padding-top:20px; + .arrows, .pages{ + display:inline; + } + + .gap, .current, a{ + + display:inline-block; + //border-radius:50%; + padding:8px 14px; + + margin-right:5px; + + + color:black; + + + &:hover{ + background:$blue; + font-weight:bold; + cursor:pointer; + color:white; + text-decoration:none; + } + + } + .current{ + background:$blue; + color:white; + font-weight:bold; + + } + +} + +td{ + &.actions{ + min-width:110px; + text-align:right; + } +} + +.qi_cancel_margins{ + margin:0 -15px !important; +} \ No newline at end of file diff --git a/app/assets/stylesheets/public.scss b/app/assets/stylesheets/public.scss index 6f62949..7abaeb7 100644 --- a/app/assets/stylesheets/public.scss +++ b/app/assets/stylesheets/public.scss @@ -5,6 +5,8 @@ @import "public/top"; +@import "public/plume"; + .observer-et-photographier-la-faune-sans-deranger{ .couv{ diff --git a/app/assets/stylesheets/public/plume.css.scss b/app/assets/stylesheets/public/plume.css.scss new file mode 100644 index 0000000..4b6d614 --- /dev/null +++ b/app/assets/stylesheets/public/plume.css.scss @@ -0,0 +1,216 @@ +$grey:#61676A; +$marron:#9A9289; +$vert:#7BAE53; +#main_plume{ + background:white; +} +#plume_wrapper{ + + + + #plume_header{ + .plume_logo_mobile{ + display:none; + } + + text-align:center; + img{ + display:block; + margin:auto; + width:990px; + max-width:100%; + padding:20px; + } + + .baseline{ + font-size:25px; + font-weight:normal; + } + + .hr{ + margin:20px 0; + height:30px; + background:$grey; + } + } + + .sommaire{ + float:left; + width:30%; + text-align:left; + + .sommaire_panel{ + background:$marron; + padding:20px; + .content{ + padding:10px 20px; + border:dashed 1px white; + h2{ + font-weight:bold; + color:white; + font-size:40px; + text-align:center; + text-transform:uppercase; + margin-top:0; + padding-top:0; + } + h3{ + text-transform:uppercase; + margin:0; + padding:0; + margin-top:10px; + font-weight:bold; + color:white; + } + + a{ + display:block; + color:black; + font-size:18px; + &:hover{ + text-decoration:none; + } + } + } + + + } + } + .plume_home{ + max-width:1250px; + margin:auto; + .right_plume{ + margin-left:2%; + width:68%; + float:left; + } + + .plume-article_header{ + .plume_cat{ + text-transform:uppercase; + color:$vert; + font-size:25px; + margin-top:15px; + font-weight:bold; + margin-bottom:20px; + } + h1{ + font-size:30px; + margin:10px 0; + font-weight:bold; + color:black; + text-transform:none; + } + + } + .render_block{ + padding:30px 0; + padding-bottom:100px; + } + + + .plume_event{ + border-bottom:1px dashed $marron; + padding: 10px 0; + + h2{ + color:$vert; + font-size:20px; + text-transform:none; + margin:0; + } + .date{ + margin: 5px 0; + + } + margin-bottom:10px; + + } + + .plume_breve{ + border-bottom:1px dashed $marron; + padding: 10px 0; + + h2{ + color:$vert; + font-size:20px; + text-transform:none; + margin:0; + } + + margin-bottom:10px; + .render_block{ + padding-bottom:20px; + padding-top:20px; + } + } + + + .article{ + + + width:50%; + float:left; + + &.article_large{ + float:none; + width:auto; + margin-top:60px; + margin-bottom:100px; + .image{ + width:47%; + margin-left:1%; + float:left; + } + .description{ + margin-left:50%; + padding-left:20px; + } + + } + .inner{ + margin:0 20px; + } + + .image{ + height:300px; + } + + .plume_cat{ + text-transform:uppercase; + color:$vert; + font-size:30px; + margin-top:15px; + font-weight:bold; + } + h2{ + font-size:20px; + margin:10px 0; + font-weight:bold; + } + } + } + .plume_bottom{ + background:$grey; + padding:10px 20px; + margin-top:20px; + .big{ + font-size:20px; + } + p{ + margin:5px 0; + + } + *{ + color:white; + } + + } + +} + +.fill_img{ + background:center center no-repeat; + background-size:100%; + background-size:cover; +} \ No newline at end of file diff --git a/app/controllers/admin/plume_articles_controller.rb b/app/controllers/admin/plume_articles_controller.rb new file mode 100644 index 0000000..e23a073 --- /dev/null +++ b/app/controllers/admin/plume_articles_controller.rb @@ -0,0 +1,107 @@ +# -*- encoding : utf-8 -*- + +class Admin::PlumeArticlesController < ApplicationController + + before_filter :auth_admin + + layout "admin" + + + + before_filter :find_plume_articles + + def index + + end + + + def cible + + render :layout => false + + end + + + def new + + @plume_article = PlumeArticle.new(:plume_cat_id => params[:plume_cat_id]) + + end + + + def edit + + @plume_article = PlumeArticle.find(params[:id]) + + + end + + + def create + + @plume_article = PlumeArticle.new(plume_article_params) + + + if @plume_article.save + flash[:notice] = "L'plume_article à été ajouté avec succès." + @plume_articles = @plume_article.plume_cat.plume_articles.order(:position) + + else + render :action => "new" + + end + + end + + + def update + + @plume_article = PlumeArticle.find(params[:id]) + + + if params[:plume_article] + if @plume_article.update_attributes(plume_article_params) + flash[:notice] = "L'plume_article à été modifié avec succès." + else + render :action => "edit" + end + + + elsif params[:tag_id] + @plume_article.tag_by_tag_ids(params[:tag_id]) + end + + + + + end + + + def destroy + + @plume_article = PlumeArticle.find(params[:id]) + @plume_article.destroy + + end + + protected + + def find_plume_articles + + + @plume_articles = PlumeArticle.all + + + end + + private + def plume_article_params + params.require(:plume_article).permit! + + + + + end + + +end diff --git a/app/controllers/admin/plume_cats_controller.rb b/app/controllers/admin/plume_cats_controller.rb new file mode 100644 index 0000000..3fb3d49 --- /dev/null +++ b/app/controllers/admin/plume_cats_controller.rb @@ -0,0 +1,107 @@ +# -*- encoding : utf-8 -*- + +class Admin::PlumeCatsController < ApplicationController + + before_filter :auth_admin + + layout "admin" + + + + before_filter :find_plume_cats + + def index + + end + + + def cible + + render :layout => false + + end + + + def new + + @plume_cat = PlumeCat.new(:plume_id => params[:plume_id]) + + end + + + def edit + + @plume_cat = PlumeCat.find(params[:id]) + + + end + + + def create + + @plume_cat = PlumeCat.new(plume_cat_params) + + + if @plume_cat.save + flash[:notice] = "L'plume_cat à été ajouté avec succès." + @plume_cats = @plume_cat.plume.plume_cats + + else + render :action => "new" + + end + + end + + + def update + + @plume_cat = PlumeCat.find(params[:id]) + + + if params[:plume_cat] + if @plume_cat.update_attributes(plume_cat_params) + flash[:notice] = "L'plume_cat à été modifié avec succès." + else + render :action => "edit" + end + + + elsif params[:tag_id] + @plume_cat.tag_by_tag_ids(params[:tag_id]) + end + + + + + end + + + def destroy + + @plume_cat = PlumeCat.find(params[:id]) + @plume_cat.destroy + + end + + protected + + def find_plume_cats + + + @plume_cats = PlumeCat.all + + + end + + private + def plume_cat_params + params.require(:plume_cat).permit! + + + + + end + + +end diff --git a/app/controllers/admin/plume_events_controller.rb b/app/controllers/admin/plume_events_controller.rb new file mode 100644 index 0000000..3ddf34c --- /dev/null +++ b/app/controllers/admin/plume_events_controller.rb @@ -0,0 +1,116 @@ +# -*- encoding : utf-8 -*- + +class Admin::PlumeEventsController < ApplicationController + before_filter :auth_admin + + + layout "admin" + + before_filter :find_plume_events + + + def index + + end + + + def cible + @plume_events = PlumeEvent.all + + render :layout => false + end + + + def new + if params[:plume_event_id] and PlumeEvent.find(params[:plume_event_id]) + @plume_event = PlumeEvent.find(params[:plume_event_id]).dup + @plume_event.plume_event_id = params[:plume_event_id] + else + @plume_event = PlumeEvent.new(:start_at_date =>[ Date.today.day, Date.today.month, Date.today.year].join("/"), :start_at_time => "20:00") + + end + + @plume_event.plume_id = params[:plume_id] + + end + + def edit + @plume_event = PlumeEvent.find(params[:id]) + + + end + + + def create + @plume_event = PlumeEvent.new(params.require(:plume_event).permit!) + + + if @plume_event.save + + + flash[:notice] = "L'événement à été ajouté avec succès." + + @plume_events = @plume_event.plume.plume_events.order('start_at, stop_at') + + else + render :action => "new" + + end + + end + + + def update + @plume_event = PlumeEvent.find(params[:id]) + + if @plume_event.update_attributes(params.require(:plume_event).permit!) + flash[:notice] = "L'événement à été modifié avec succès." + else + render :action => "edit" + + end + + end + + + def destroy + @plume_event = PlumeEvent.find(params[:id]) + @plume_event.destroy + + end + + + protected + + def find_plume_events + date_regex = /^(0[1-9]|[12][0-9]|3[01])[\/](0[1-9]|1[012])[\/](19|20)\d\d$/i + if params[:start] and params[:start] =~ date_regex + start = Date.parse(params[:start]).beginning_of_day + params[:start]= start.strftime('%d/%m/%Y') + else + params[:start] = "Début" + end + if params[:stop] and params[:stop] =~ date_regex + stop = Date.parse(params[:stop]).end_of_day + params[:stop]= stop.strftime('%d/%m/%Y') + else + params[:stop] = "Fin" + end + + @plume_events = PlumeEvent.order('start_at, stop_at') + @plume_events = @plume_events.after(start) if start + @plume_events = @plume_events.before(stop) if stop + per_page = (params[:per_page] and params[:per_page] != "") ? params[:per_page] : 20 + page = (params[:page] and params[:page] != "") ? params[:page] : 1 + #@plume_events = PlumeEvent.all.page(page).per(per_page) + + @plume_events = PlumeEvent.order('start_at DESC, stop_at DESC') + @plume_events = @plume_events.after(start) if start + @plume_events = @plume_events.before(stop) if stop + + + + + @plume_events = @plume_events.page(page).per(per_page) + end +end diff --git a/app/controllers/admin/plumes_controller.rb b/app/controllers/admin/plumes_controller.rb new file mode 100644 index 0000000..2c86ff0 --- /dev/null +++ b/app/controllers/admin/plumes_controller.rb @@ -0,0 +1,107 @@ +# -*- encoding : utf-8 -*- + +class Admin::PlumesController < ApplicationController + + before_filter :auth_admin + + layout "admin" + + + + before_filter :find_plumes + + def index + + end + + + def cible + + render :layout => false + + end + + + def new + + @plume = Plume.new() + + end + + + def edit + + @plume = Plume.find(params[:id]) + + + end + + + def create + + @plume = Plume.new(plume_params) + + + if @plume.save + flash[:notice] = "L'plume à été ajouté avec succès." + self.find_plumes + + else + render :action => "new" + + end + + end + + + def update + + @plume = Plume.find(params[:id]) + + + if params[:plume] + if @plume.update_attributes(plume_params) + flash[:notice] = "L'plume à été modifié avec succès." + else + render :action => "edit" + end + + + elsif params[:tag_id] + @plume.tag_by_tag_ids(params[:tag_id]) + end + + + + + end + + + def destroy + + @plume = Plume.find(params[:id]) + @plume.destroy + + end + + protected + + def find_plumes + + + @plumes = Plume.all + + + end + + private + def plume_params + params.require(:plume).permit! + + + + + end + + +end diff --git a/app/controllers/public/plume_articles_controller.rb b/app/controllers/public/plume_articles_controller.rb new file mode 100644 index 0000000..627544e --- /dev/null +++ b/app/controllers/public/plume_articles_controller.rb @@ -0,0 +1,13 @@ +# -*- encoding : utf-8 -*- + +class Public::PlumeArticlesController < ApplicationController + + layout "plume" + + def show + @plume_article = PlumeArticle.find(params[:id]) + @plume = @plume_article.plume + end + + +end diff --git a/app/controllers/public/plumes_controller.rb b/app/controllers/public/plumes_controller.rb new file mode 100644 index 0000000..5d54b7e --- /dev/null +++ b/app/controllers/public/plumes_controller.rb @@ -0,0 +1,42 @@ +# -*- encoding : utf-8 -*- + +class Public::PlumesController < ApplicationController + + layout "plume" + + + + def index + + @plumes = Plume.all + + @index_title = "La plume du Pic Vert" + end + + + + + def show + @plume = Plume.find(params[:id]) + + if @plume and (@plume.enabled or current_admin) + + @title = @plume.title + + + else + redirect_to "/", :notice => "La page que vous demandez n'a pas pu être trouvée.

Vous avez donc été redirigé sur notre page d'accueil" + + end + end + + def agenda + @plume = Plume.find(params[:id]) + end + + def breves + @plume = Plume.find(params[:id]) + end + + +end diff --git a/app/models/plume.rb b/app/models/plume.rb new file mode 100644 index 0000000..993511f --- /dev/null +++ b/app/models/plume.rb @@ -0,0 +1,9 @@ +class Plume < ActiveRecord::Base + belongs_to :image_file + + has_many :plume_cats + + has_many :plume_articles, :through => :plume_cats + + has_many :plume_events +end diff --git a/app/models/plume_article.rb b/app/models/plume_article.rb new file mode 100644 index 0000000..dcb8d35 --- /dev/null +++ b/app/models/plume_article.rb @@ -0,0 +1,27 @@ +class PlumeArticle < ActiveRecord::Base + belongs_to :plume_cat + has_one :plume, :through => :plume_cat + belongs_to :image_file + + has_one :block, :as => :blockable + before_validation do + + end + + after_create :after_creation + + + def after_creation + @block = Block.new(:block_name => "Contenu") + @block.blockable = self + @block.save + + + end + + def alloweds_types + self.block.allow_types :TitleContent, :TextContent, :ImageContent, :LinkContent, :GalleryContent, :HtmlContent + + end + +end diff --git a/app/models/plume_cat.rb b/app/models/plume_cat.rb new file mode 100644 index 0000000..67d28c9 --- /dev/null +++ b/app/models/plume_cat.rb @@ -0,0 +1,5 @@ +class PlumeCat < ActiveRecord::Base + belongs_to :plume + + has_many :plume_articles +end diff --git a/app/models/plume_event.rb b/app/models/plume_event.rb new file mode 100644 index 0000000..796c632 --- /dev/null +++ b/app/models/plume_event.rb @@ -0,0 +1,122 @@ +class PlumeEvent < ActiveRecord::Base + belongs_to :plume + + date_format = /\A(0[1-9]|[12][0-9]|3[01])[\/](0[1-9]|1[012])[\/](19|20)\d\d\z/i + hour_format = /\A([0-1]?[0-9]|2[0-3]):([0-5][0-9])(:[0-5][0-9])?\z/i + validates :title, :presence => true + + belongs_to :image_file + +# validates :start_at_date, :presence => true, :format => { :with => date_format } +# validates :start_at_time, :presence => true, :format => { :with => hour_format }, :if => :with_time? +# validates :stop_at_date, :presence => true, :format => { :with => date_format }, :if => :stop_date +# validates :stop_at_time, :presence => true, :format => { :with => hour_format }, :if => [:with_time?,:stop_date] + + attr_accessor :start_at_date, :start_at_time, :stop_at_date, :stop_at_time, :plume_event_id, :skip_date + + has_one :block, :as => :blockable + + + scope :between, lambda { |start, stop| + after(start).before(stop) + } + + scope :after, lambda { |date| + where("(start_at >= ? or stop_at >= ?)", date, date ) + } + scope :before, lambda { |date| + where("(stop_at <= ?) or (start_at <= ?)", date, date ) + } + + def alloweds_types + self.block.allow_types :TitleContent, :TextContent, :ImageContent, :LinkContent, :GalleryContent, :HtmlContent + + end + + after_create do + if self.plume_event_id and PlumeEvent.where(:id => self.plume_event_id).exists? + + plume_event = PlumeEvent.find(self.plume_event_id) + + @block = plume_event.block.dup + @block.blockable = self + @block.save + + else + @block = Block.new(:block_name => "general") + @block.blockable = self + @block.save + end + + + end + + def create_block(plume_event_id=nil) + if plume_event_id + + else + + + + end + end + + before_validation do + + if !self.skip_date + self.stop_at_date, self.stop_at_time = nil, nil if !self.stop_date + self.start_at_time, self.stop_at_time = nil, nil if self.entire_day + + if self.entire_day + self.start_at = self.start_at_date.to_s + self.stop_at = self.stop_at_date.to_s + else + self.start_at = self.start_at_date.to_s+" "+self.start_at_time.to_s + self.stop_at = self.stop_at_date.to_s+" "+self.stop_at_time.to_s + + end + + end + + if self.stop_date and self.start_at and (self.stop_at.beginning_of_day != self.start_at.beginning_of_day) + self.many_days = true + else + self.many_days = false + end + + true + + end + + def with_time? + true if !self.entire_day + end + + after_initialize do + if self.start_at + if self.entire_day + self.start_at_date = self.start_at.strftime('%d/%m/%Y') + else + self.start_at_date = self.start_at.strftime('%d/%m/%Y') + self.start_at_time = self.start_at.strftime('%H:%M') + end + end + + if self.stop_at + if self.entire_day + self.stop_at_date = self.stop_at.strftime('%d/%m/%Y') + else + self.stop_at_date = self.stop_at.strftime('%d/%m/%Y') + self.stop_at_time = self.stop_at.strftime('%H:%M') + end + end + end + + def human_date + + + + end + + +end diff --git a/app/views/admin/plume_articles/_form.html.haml b/app/views/admin/plume_articles/_form.html.haml new file mode 100644 index 0000000..39414a3 --- /dev/null +++ b/app/views/admin/plume_articles/_form.html.haml @@ -0,0 +1,12 @@ += semantic_form_for [:admin,@plume_article], :remote => true do |form| + .content + = form.inputs do + = form.input :plume_cat_id, :label => "Catégorie", :collection => @plume_article.plume_cat.plume.plume_cats.order(:position).all, :as => :select, :include_blank => false + = form.input :article_type, :label => "Type d'article :", :collection => [["Article pleine page", "page"],["Demi article", "demi"] ], :as => :select, :include_blank => false + = form.input :title, :label => "Titre :" + = form.input :description, :label => "Description courte :" + = form.input :image_file_id, :as => :qi_image_select + + + .actions + = form.submit "Sauvegarder", :class => "btn btn-primary" diff --git a/app/views/admin/plume_articles/_index_block.html.haml b/app/views/admin/plume_articles/_index_block.html.haml new file mode 100644 index 0000000..877dbf4 --- /dev/null +++ b/app/views/admin/plume_articles/_index_block.html.haml @@ -0,0 +1,5 @@ + + +%table#plume_articles.table + =render @plume_cat.plume_articles + \ No newline at end of file diff --git a/app/views/admin/plume_articles/_plume_article.html.haml b/app/views/admin/plume_articles/_plume_article.html.haml new file mode 100644 index 0000000..489c252 --- /dev/null +++ b/app/views/admin/plume_articles/_plume_article.html.haml @@ -0,0 +1,13 @@ +%tr#plume_article_row.plume_article_row{:id => plume_article.id} + + %td=plume_article.title + + + + + %td{:style => "width:140px"} + = link_to i(:"trash-o"), [:admin, plume_article], :confirm => 'Voulez-vous vraiment supprimer cet plume_article ?', :method => :delete, :remote => true + + = link_to i(:pencil), edit_admin_plume_article_path(plume_article), :style => "padding:0px 0px 0px 0px;", :remote => true + = link_to i(:eye), edit_admin_plume_article_path(plume_article), :style => "padding:0px 0px 0px 0px;" + \ No newline at end of file diff --git a/app/views/admin/plume_articles/_show.html.haml b/app/views/admin/plume_articles/_show.html.haml new file mode 100644 index 0000000..c9f99b6 --- /dev/null +++ b/app/views/admin/plume_articles/_show.html.haml @@ -0,0 +1,7 @@ +#plume_article_show.QI_background_middle.QI_padding_small + %table + + %tr + %td{:style => "width:150px;"} Nom : + %td=@plume_article.title + diff --git a/app/views/admin/plume_articles/create.js.erb b/app/views/admin/plume_articles/create.js.erb new file mode 100644 index 0000000..f363738 --- /dev/null +++ b/app/views/admin/plume_articles/create.js.erb @@ -0,0 +1,5 @@ + +close_pane_hover(); + +$('#plume_articles').html("<%= escape_javascript(render(@plume_articles))%>"); + diff --git a/app/views/admin/plume_articles/destroy.js.erb b/app/views/admin/plume_articles/destroy.js.erb new file mode 100644 index 0000000..2365405 --- /dev/null +++ b/app/views/admin/plume_articles/destroy.js.erb @@ -0,0 +1,2 @@ + +$('#plume_article_row_<%=@plume_article.id%>').remove(); diff --git a/app/views/admin/plume_articles/edit.html.haml b/app/views/admin/plume_articles/edit.html.haml new file mode 100644 index 0000000..76d1923 --- /dev/null +++ b/app/views/admin/plume_articles/edit.html.haml @@ -0,0 +1,81 @@ +#toolbar-text + +#menu_item_block_edit{:style => "margin-right:330px;margin-top:45px;"} + + =render :partial => "admin/blocks/block", :locals => {:block => @plume_article.block, :sortable => true} + + +%br +%br +%br +%br +%br +%br +%br +%br +%br +%br +%br +#menu_item_inspector_container + + + + + + + + #menu_item_informations + %h4 + Infos sur l'article + + + .panel#collapseOne{:style => "display:none;"} + =render :partial => "form" + + %h4 éléments + + .panel#collapse2 + .block_portlets_sortable#content_types + -@plume_article.block.alloweds_types.each do |slug, name| + + .content_type{:id => slug, :"data-type" => slug} + =#i slug.to_s.constantize.picto + =image_tag("admin/content_type/type_"+slug.to_s+".png", :alt => name, :title => name, :class => "handle") + + + #collapse3{:style => "display:none;"} + %h4 Modifier l'élément + + + .panel + #element_form + + %div#element_form_action + %a.move.btn.btn-default.portlet_handle{:href => "#", :data => {:portlet_id => nil}} + %span.move_message + =ic :arrows +   + déplacer + %span.cancel_message + =ic :ban +   + annuler + + =link_to ic(:"trash-o"), "#", :method => :delete, :data => { :confirm => "Etes-vous sûr ?"}, :remote => true, :class => "btn btn-danger trash" + + %button.save.btn.btn-primary + =ic(:"floppy-o") +   + Sauvegarder + + + + + + + + + + + + diff --git a/app/views/admin/plume_articles/edit.js.erb b/app/views/admin/plume_articles/edit.js.erb new file mode 100644 index 0000000..d042e6f --- /dev/null +++ b/app/views/admin/plume_articles/edit.js.erb @@ -0,0 +1,2 @@ + +show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",700,900); diff --git a/app/views/admin/plume_articles/index.html.haml b/app/views/admin/plume_articles/index.html.haml new file mode 100644 index 0000000..17cd7fb --- /dev/null +++ b/app/views/admin/plume_articles/index.html.haml @@ -0,0 +1,5 @@ + +.right= link_to 'Créer un article', new_admin_plume_article_path(:plume_cat_id => @plume_cat.id), :class => "btn btn-primary", :remote => true +%h1 Liste des plume_articles + +#plume_articles_index=render :partial => "index_block" diff --git a/app/views/admin/plume_articles/index.js.erb b/app/views/admin/plume_articles/index.js.erb new file mode 100644 index 0000000..95876a4 --- /dev/null +++ b/app/views/admin/plume_articles/index.js.erb @@ -0,0 +1,2 @@ +$('#plumes_index').html("<%= escape_javascript(render(:partial => "index_block"))%>"); +unset_busy(); \ No newline at end of file diff --git a/app/views/admin/plume_articles/new.js.erb b/app/views/admin/plume_articles/new.js.erb new file mode 100644 index 0000000..7cfbb16 --- /dev/null +++ b/app/views/admin/plume_articles/new.js.erb @@ -0,0 +1,2 @@ + +show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",700,900); \ No newline at end of file diff --git a/app/views/admin/plume_articles/reseau.html.haml b/app/views/admin/plume_articles/reseau.html.haml new file mode 100644 index 0000000..4fd6dae --- /dev/null +++ b/app/views/admin/plume_articles/reseau.html.haml @@ -0,0 +1,54 @@ +.row{:style => "max-width:inherit;"} + .col-xs-9 + .right= link_to 'Ajouter un plume', new_admin_plume_path(), :class => "btn btn-primary", :remote => true + %h1 Liste des plumes + + #plumes_index=render :partial => "index_block" + + .col-xs-3 + %h3 Tags + =render :partial => "tags" + + + :coffeescript + root = exports ? this + root.tag_id = [] + + + $(document.body).on "click", "#tags .tag_label", -> + + if $(this).hasClass("active") + $(this).removeClass "active" + + else + $(this).addClass "active" + + root.tag_id = [] + + $("#tags .tag_label.active").each -> + root.tag_id.push $(this).data "tag_id" + + if root.tag_id.length > 0 + $(".set_tag").show() + else + $(".set_tag").hide() + + + $(document.body).on "click", ".set_tag", -> + + $.ajax({ + url:$(this).attr("href"), + type: "PUT", + data: { + tag_id : tag_id + } + + }) + + return false + + + + + + diff --git a/app/views/admin/plume_articles/update.js.erb b/app/views/admin/plume_articles/update.js.erb new file mode 100644 index 0000000..98a45c5 --- /dev/null +++ b/app/views/admin/plume_articles/update.js.erb @@ -0,0 +1,8 @@ + + +$('#plume_article_row_<%= @plume_article.id %>').replaceWith("<%= escape_javascript(render(@plume_article))%>"); + +$('#plume_article_show').replaceWith("<%= escape_javascript(render(:partial => "show"))%>"); + + +close_pane_hover(); \ No newline at end of file diff --git a/app/views/admin/plume_cats/_form.html.haml b/app/views/admin/plume_cats/_form.html.haml new file mode 100644 index 0000000..35a0bf1 --- /dev/null +++ b/app/views/admin/plume_cats/_form.html.haml @@ -0,0 +1,10 @@ += semantic_form_for [:admin,@plume_cat], :remote => true do |form| + .content + = form.inputs do + = form.hidden_field :plume_id + = form.input :title, :label => "Titre :" + + + + .actions + = form.submit "Sauvegarder", :class => "btn btn-primary" diff --git a/app/views/admin/plume_cats/_index_block.html.haml b/app/views/admin/plume_cats/_index_block.html.haml new file mode 100644 index 0000000..572572c --- /dev/null +++ b/app/views/admin/plume_cats/_index_block.html.haml @@ -0,0 +1,5 @@ + + +%table#plume_cats.table + =render @plume.plume_cats.order(:position) + \ No newline at end of file diff --git a/app/views/admin/plume_cats/_plume_cat.html.haml b/app/views/admin/plume_cats/_plume_cat.html.haml new file mode 100644 index 0000000..a049a56 --- /dev/null +++ b/app/views/admin/plume_cats/_plume_cat.html.haml @@ -0,0 +1,17 @@ +%tr#plume_cat_row.plume_cat_row{:id => plume_cat.id} + + %td + =plume_cat.title + ="-" + =plume_cat.plume_articles.count + article(s) + + + + + %td{:style => "width:140px"} + = link_to i(:"trash-o"), [:admin, plume_cat], :confirm => 'Voulez-vous vraiment supprimer cet plume_cat ?', :method => :delete, :remote => true + + = link_to i(:pencil), edit_admin_plume_cat_path(plume_cat), :style => "padding:0px 0px 0px 0px;", :remote => true + = link_to i(:eye), edit_admin_plume_cat_path(plume_cat), :style => "padding:0px 0px 0px 0px;" + \ No newline at end of file diff --git a/app/views/admin/plume_cats/_show.html.haml b/app/views/admin/plume_cats/_show.html.haml new file mode 100644 index 0000000..e69de29 diff --git a/app/views/admin/plume_cats/_tags.html.haml b/app/views/admin/plume_cats/_tags.html.haml new file mode 100644 index 0000000..ef51708 --- /dev/null +++ b/app/views/admin/plume_cats/_tags.html.haml @@ -0,0 +1,14 @@ +#tags + -Tag.order(:name).all.each do |tag| + .tag_label#tag_label{:"data-tag_id" => tag.id, :id => tag.id} + =tag.name + =ic(:"level-up") + + +:coffeescript + + if typeof(tag_id) != 'undefined' + $(".set_tag").show() + $.each tag_id, (i,a) -> + $("#tag_label_"+a).addClass("active") + \ No newline at end of file diff --git a/app/views/admin/plume_cats/create.js.erb b/app/views/admin/plume_cats/create.js.erb new file mode 100644 index 0000000..480f9ae --- /dev/null +++ b/app/views/admin/plume_cats/create.js.erb @@ -0,0 +1,5 @@ + +close_pane_hover(); + +$('#plume_cats').html("<%= escape_javascript(render(@plume_cats))%>"); + diff --git a/app/views/admin/plume_cats/destroy.js.erb b/app/views/admin/plume_cats/destroy.js.erb new file mode 100644 index 0000000..26bf0bc --- /dev/null +++ b/app/views/admin/plume_cats/destroy.js.erb @@ -0,0 +1,2 @@ + +$('#plume_cat_row_<%=@plume_cat.id%>').remove(); diff --git a/app/views/admin/plume_cats/edit.html.haml b/app/views/admin/plume_cats/edit.html.haml new file mode 100644 index 0000000..df9eb99 --- /dev/null +++ b/app/views/admin/plume_cats/edit.html.haml @@ -0,0 +1,21 @@ +-@plume = @plume_cat.plume + +.qi_header + .right= link_to 'Ajouter un article', new_admin_plume_article_path(:plume_cat_id => @plume_cat.id), :class => "btn btn-primary", :remote => true + %h1 + Plumes + %span + + ="Plume N° "+@plume.number.to_s + ="- "+@plume.p_version + + + +.qi_row + .qi_pannel.qi_plain.padding + + %h3 + Articles de la catégorie + =@plume_cat.title + + #plume_articles_index=render :partial => "admin/plume_articles/index_block" diff --git a/app/views/admin/plume_cats/edit.js.erb b/app/views/admin/plume_cats/edit.js.erb new file mode 100644 index 0000000..d042e6f --- /dev/null +++ b/app/views/admin/plume_cats/edit.js.erb @@ -0,0 +1,2 @@ + +show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",700,900); diff --git a/app/views/admin/plume_cats/index.html.haml b/app/views/admin/plume_cats/index.html.haml new file mode 100644 index 0000000..043b2d1 --- /dev/null +++ b/app/views/admin/plume_cats/index.html.haml @@ -0,0 +1,5 @@ + +.right= link_to 'Créer une plume_cat', new_admin_plume_cat_path(), :class => "btn btn-primary", :remote => true +%h1 Liste des plume_cats + +#plume_cats_index=render :partial => "index_block" diff --git a/app/views/admin/plume_cats/index.js.erb b/app/views/admin/plume_cats/index.js.erb new file mode 100644 index 0000000..f2f26e3 --- /dev/null +++ b/app/views/admin/plume_cats/index.js.erb @@ -0,0 +1,2 @@ +$('#plume_cats_index').html("<%= escape_javascript(render(:partial => "index_block"))%>"); +unset_busy(); \ No newline at end of file diff --git a/app/views/admin/plume_cats/new.js.erb b/app/views/admin/plume_cats/new.js.erb new file mode 100644 index 0000000..7cfbb16 --- /dev/null +++ b/app/views/admin/plume_cats/new.js.erb @@ -0,0 +1,2 @@ + +show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",700,900); \ No newline at end of file diff --git a/app/views/admin/plume_cats/reseau.html.haml b/app/views/admin/plume_cats/reseau.html.haml new file mode 100644 index 0000000..9c27679 --- /dev/null +++ b/app/views/admin/plume_cats/reseau.html.haml @@ -0,0 +1,54 @@ +.row{:style => "max-width:inherit;"} + .col-xs-9 + .right= link_to 'Ajouter un plume_cat', new_admin_plume_cat_path(), :class => "btn btn-primary", :remote => true + %h1 Liste des plume_cats + + #plume_cats_index=render :partial => "index_block" + + .col-xs-3 + %h3 Tags + =render :partial => "tags" + + + :coffeescript + root = exports ? this + root.tag_id = [] + + + $(document.body).on "click", "#tags .tag_label", -> + + if $(this).hasClass("active") + $(this).removeClass "active" + + else + $(this).addClass "active" + + root.tag_id = [] + + $("#tags .tag_label.active").each -> + root.tag_id.push $(this).data "tag_id" + + if root.tag_id.length > 0 + $(".set_tag").show() + else + $(".set_tag").hide() + + + $(document.body).on "click", ".set_tag", -> + + $.ajax({ + url:$(this).attr("href"), + type: "PUT", + data: { + tag_id : tag_id + } + + }) + + return false + + + + + + diff --git a/app/views/admin/plume_cats/update.js.erb b/app/views/admin/plume_cats/update.js.erb new file mode 100644 index 0000000..c267231 --- /dev/null +++ b/app/views/admin/plume_cats/update.js.erb @@ -0,0 +1,9 @@ + + +$('#plume_cat_row_<%= @plume_cat.id %>').replaceWith("<%= escape_javascript(render(@plume_cat))%>"); + +$('#plume_cat_show').replaceWith("<%= escape_javascript(render(:partial => "show"))%>"); + + +$('#tags').replaceWith("<%= escape_javascript(render(:partial => 'tags'))%>"); +close_pane_hover(); \ No newline at end of file diff --git a/app/views/admin/plume_events/_form.html.haml b/app/views/admin/plume_events/_form.html.haml new file mode 100644 index 0000000..e7c9c89 --- /dev/null +++ b/app/views/admin/plume_events/_form.html.haml @@ -0,0 +1,51 @@ += semantic_form_for [:admin,@plume_event], :remote => true do |form| + .content + = form.inputs do + =form.input :plume_id, :collection => Plume.all, :label => "Plume :", :as => :select + = form.input :title, :label => "Titre :" + = form.hidden_field :plume_event_id + + .plume_event_date_form + -if form.object.errors.messages[:start_at_date] or form.object.errors.messages[:start_at_time] or form.object.errors.messages[:stop_at_date] or form.object.errors.messages[:stop_at_time] + %p.errors + Tout les champs doivent être remplis. Les dates doivent être au format jj/mm/yyyy et les heures au format hh:mm. + .div + =form.label :start_at_date, "Début :", :style=>"display:inline-block;width:50px" + =form.text_field :start_at_date, :id => "plume_event_start_at_date", :class => "datepicker" + .plume_event_time{:style => "display:inline;"} + =form.label :start_at_time, "heure :" + .input-append.bootstrap-timepicke{:style => "display:inline-block;"} + =form.text_field :start_at_time, :id => "plume_event_start_at_time", :class => "timepicker input-small", :style => "width:50px" + %span.add-on + %i.icon-time + + + =form.check_box :entire_day, :id => "plume_event_entire_day" + =form.label :entire_day, "jour entier ?" + .div + %span.stop_at + =form.label :stop_at_date, "Fin :", :style=>"display:inline-block;width:50px" + =form.text_field :stop_at_date, :id => "plume_event_stop_at_date", :class => "datepicker" + .plume_event_time{:style => "display:inline;"} + =form.label :stop_at_time, "heure :" + .input-append.bootstrap-timepicke{:style => "display:inline-block;"} + =form.text_field :stop_at_time, :id => "plume_event_stop_at_time", :class => "timepicker input-small", :style => "width:50px" + %span.add-on + %i.icon-time + + + =form.check_box :stop_date, :id => "plume_event_stop_date" + =form.label :stop_date, "fin précisée ?" + + + = form.inputs do + = form.input :description, :label => "Description courte :", :as => :text + + + + + .actions + = form.submit "Sauvegarder", :class => "btn" + + :javascript + update_plume_event_form(); \ No newline at end of file diff --git a/app/views/admin/plume_events/_index_block.html.haml b/app/views/admin/plume_events/_index_block.html.haml new file mode 100644 index 0000000..abe63ce --- /dev/null +++ b/app/views/admin/plume_events/_index_block.html.haml @@ -0,0 +1,3 @@ +%table#plume_events.table.table-hover + =render @plume_events + \ No newline at end of file diff --git a/app/views/admin/plume_events/_plume_event.html.haml b/app/views/admin/plume_events/_plume_event.html.haml new file mode 100644 index 0000000..3456e8c --- /dev/null +++ b/app/views/admin/plume_events/_plume_event.html.haml @@ -0,0 +1,10 @@ +%tr#plume_event_row.plume_event_row{:id => plume_event.id} + + %td{:style => "width:400px"}=raw event_human_date(plume_event) + %td=plume_event.title + + + %td.actions{:style => "width:200px;text-align:right;"} + = link_to i(:"trash-o"), [:admin, plume_event], :confirm => 'Voulez-vous vraiment supprimer cet événement ?', :method => :delete, :remote => true + = link_to i(:pencil), edit_admin_plume_event_path(plume_event), :remote => true + \ No newline at end of file diff --git a/app/views/admin/plume_events/_show.html.haml b/app/views/admin/plume_events/_show.html.haml new file mode 100644 index 0000000..790f925 --- /dev/null +++ b/app/views/admin/plume_events/_show.html.haml @@ -0,0 +1,6 @@ +#plume_event_show + %h1 + =@plume_event.title + %em=plume_event_human_date(@plume_event) + + .desc=simple_format @plume_event.description \ No newline at end of file diff --git a/app/views/admin/plume_events/cible.html.haml b/app/views/admin/plume_events/cible.html.haml new file mode 100644 index 0000000..dc7582c --- /dev/null +++ b/app/views/admin/plume_events/cible.html.haml @@ -0,0 +1,6 @@ + +-Event.all.each do |actuality| + + %h4 + =actuality.title + = link_to i(:check_alt, :gray_light,12), "#",:onclick => "manager_send_cible("+actuality.id.to_s+", 'Folder', '#{escape_javascript(actuality.cible_name)}');return false;" if params[:manager] diff --git a/app/views/admin/plume_events/create.js.erb b/app/views/admin/plume_events/create.js.erb new file mode 100644 index 0000000..7a7f0ce --- /dev/null +++ b/app/views/admin/plume_events/create.js.erb @@ -0,0 +1,4 @@ +close_pane_hover(); + +$('#plume_events').html("<%= escape_javascript(render(@plume_events))%>"); +$('#plume_event_row_<%= @plume_event.id %>').effect("highlight", {}, 3000); diff --git a/app/views/admin/plume_events/destroy.js.erb b/app/views/admin/plume_events/destroy.js.erb new file mode 100644 index 0000000..26266aa --- /dev/null +++ b/app/views/admin/plume_events/destroy.js.erb @@ -0,0 +1 @@ +$('#plume_event_row_<%=@plume_event.id%>').remove(); diff --git a/app/views/admin/plume_events/edit.html.haml b/app/views/admin/plume_events/edit.html.haml new file mode 100644 index 0000000..efe41e2 --- /dev/null +++ b/app/views/admin/plume_events/edit.html.haml @@ -0,0 +1,81 @@ +#toolbar-text + +#menu_item_block_edit{:style => "margin-right:330px;margin-top:45px;"} + + =render :partial => "admin/blocks/block", :locals => {:block => @plume_event.block, :sortable => true} + + +%br +%br +%br +%br +%br +%br +%br +%br +%br +%br +%br +#menu_item_inspector_container + + + + + + + + #menu_item_informations + %h4 + Infos sur l'plume_event + + + .panel#collapseOne{:style => "display:none;"} + =render :partial => "form" + + %h4 éléments + + .panel#collapse2 + .block_portlets_sortable#content_types + -@plume_event.block.alloweds_types.each do |slug, name| + + .content_type{:id => slug, :"data-type" => slug} + =#i slug.to_s.constantize.picto + =image_tag("admin/content_type/type_"+slug.to_s+".png", :alt => name, :title => name, :class => "handle") + + + #collapse3{:style => "display:none;"} + %h4 Modifier l'élément + + + .panel + #element_form + + %div#element_form_action + %a.move.btn.btn-default.portlet_handle{:href => "#", :data => {:portlet_id => nil}} + %span.move_message + =ic :arrows +   + déplacer + %span.cancel_message + =ic :ban +   + annuler + + =link_to ic(:"trash-o"), "#", :method => :delete, :data => { :confirm => "Etes-vous sûr ?"}, :remote => true, :class => "btn btn-danger trash" + + %button.save.btn.btn-primary + =ic(:"floppy-o") +   + Sauvegarder + + + + + + + + + + + + diff --git a/app/views/admin/plume_events/edit.js.erb b/app/views/admin/plume_events/edit.js.erb new file mode 100644 index 0000000..61c7a6f --- /dev/null +++ b/app/views/admin/plume_events/edit.js.erb @@ -0,0 +1 @@ +show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",850,600); \ No newline at end of file diff --git a/app/views/admin/plume_events/index.html.haml b/app/views/admin/plume_events/index.html.haml new file mode 100644 index 0000000..7da4269 --- /dev/null +++ b/app/views/admin/plume_events/index.html.haml @@ -0,0 +1,8 @@ +.header + .right= link_to 'Ajouter un événement', new_admin_plume_event_path, :class => "btn", :remote => true + %h1 Agenda + +#plume_events_index=render :partial => "index_block" + +#plume_event_detail + diff --git a/app/views/admin/plume_events/index.js.erb b/app/views/admin/plume_events/index.js.erb new file mode 100644 index 0000000..cc31c7e --- /dev/null +++ b/app/views/admin/plume_events/index.js.erb @@ -0,0 +1 @@ +$('#plume_events_index').html("<%= escape_javascript(render(:partial => "index_block"))%>"); diff --git a/app/views/admin/plume_events/new.js.erb b/app/views/admin/plume_events/new.js.erb new file mode 100644 index 0000000..696edd1 --- /dev/null +++ b/app/views/admin/plume_events/new.js.erb @@ -0,0 +1,3 @@ + +show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",850,600); + diff --git a/app/views/admin/plume_events/update.js.erb b/app/views/admin/plume_events/update.js.erb new file mode 100644 index 0000000..5e00365 --- /dev/null +++ b/app/views/admin/plume_events/update.js.erb @@ -0,0 +1,5 @@ +close_pane_hover(); + +$('#plume_event_show').replaceWith("<%= escape_javascript(render(:partial => "show"))%>"); +$('#plume_events').html("<%= escape_javascript(render(@plume_events))%>"); +$('#plume_event_row_<%= @plume_event.id %>').effect("highlight", {}, 3000); \ No newline at end of file diff --git a/app/views/admin/plumes/_form.html.haml b/app/views/admin/plumes/_form.html.haml new file mode 100644 index 0000000..4b84058 --- /dev/null +++ b/app/views/admin/plumes/_form.html.haml @@ -0,0 +1,18 @@ += semantic_form_for [:admin,@plume], :remote => true do |form| + .content + = form.inputs do + = form.input :enabled,:as => :boolean , :label => "Actif" + + + = form.input :title, :label => "Titre :" + = form.input :number, :label => "Numéro plume :" + = form.input :p_version, :label => "Ligne 'version' :" + = form.input :image_file_id, :as => :qi_image_select + = form.input :credits, :label => "Crédit photo couverture :" + = form.input :redaction_credits, :label => "Crédits rédac & relecture :" + + + + + .actions + = form.submit "Sauvegarder", :class => "btn btn-primary" diff --git a/app/views/admin/plumes/_index_block.html.haml b/app/views/admin/plumes/_index_block.html.haml new file mode 100644 index 0000000..d9ff752 --- /dev/null +++ b/app/views/admin/plumes/_index_block.html.haml @@ -0,0 +1,5 @@ + + +%table#plumes.table + =render @plumes + \ No newline at end of file diff --git a/app/views/admin/plumes/_plume.html.haml b/app/views/admin/plumes/_plume.html.haml new file mode 100644 index 0000000..85c6935 --- /dev/null +++ b/app/views/admin/plumes/_plume.html.haml @@ -0,0 +1,14 @@ +%tr#plume_row.plume_row{:id => plume.id, :class => ("warning" if !plume.enabled)} + + %td=plume.title + %td + =link_to "voir", public_plume_path(plume) + + + + %td{:style => "width:140px"} + = link_to i(:"trash-o"), [:admin, plume], :confirm => 'Voulez-vous vraiment supprimer cet plume ?', :method => :delete, :remote => true + + = link_to i(:pencil), edit_admin_plume_path(plume), :style => "padding:0px 0px 0px 0px;", :remote => true + = link_to i(:eye), edit_admin_plume_path(plume), :style => "padding:0px 0px 0px 0px;" + \ No newline at end of file diff --git a/app/views/admin/plumes/_show.html.haml b/app/views/admin/plumes/_show.html.haml new file mode 100644 index 0000000..44a88ac --- /dev/null +++ b/app/views/admin/plumes/_show.html.haml @@ -0,0 +1,11 @@ +#plume_show.QI_background_middle.QI_padding_small + %table + + %tr + %td{:style => "width:150px;"} Nom : + %td=@plume.title + + %tr + %td Statut : + %td=@plume.enabled ? "Publié" : "Brouillon" + diff --git a/app/views/admin/plumes/_tags.html.haml b/app/views/admin/plumes/_tags.html.haml new file mode 100644 index 0000000..ef51708 --- /dev/null +++ b/app/views/admin/plumes/_tags.html.haml @@ -0,0 +1,14 @@ +#tags + -Tag.order(:name).all.each do |tag| + .tag_label#tag_label{:"data-tag_id" => tag.id, :id => tag.id} + =tag.name + =ic(:"level-up") + + +:coffeescript + + if typeof(tag_id) != 'undefined' + $(".set_tag").show() + $.each tag_id, (i,a) -> + $("#tag_label_"+a).addClass("active") + \ No newline at end of file diff --git a/app/views/admin/plumes/create.js.erb b/app/views/admin/plumes/create.js.erb new file mode 100644 index 0000000..47821e6 --- /dev/null +++ b/app/views/admin/plumes/create.js.erb @@ -0,0 +1,5 @@ + +close_pane_hover(); + +$('#plumes').html("<%= escape_javascript(render(@plumes))%>"); + diff --git a/app/views/admin/plumes/destroy.js.erb b/app/views/admin/plumes/destroy.js.erb new file mode 100644 index 0000000..a6f0085 --- /dev/null +++ b/app/views/admin/plumes/destroy.js.erb @@ -0,0 +1,2 @@ + +$('#plume_row_<%=@plume.id%>').remove(); diff --git a/app/views/admin/plumes/edit.html.haml b/app/views/admin/plumes/edit.html.haml new file mode 100644 index 0000000..6478545 --- /dev/null +++ b/app/views/admin/plumes/edit.html.haml @@ -0,0 +1,29 @@ +.qi_header + + %h1 + Plumes + %span + + ="Plume N° "+@plume.number.to_s + ="- "+@plume.p_version + +.qi_row + .qi_pannel.qi_plain.padding + + + .right= link_to 'Ajouter une catégorie', new_admin_plume_cat_path(:plume_id => @plume.id), :class => "btn btn-primary", :remote => true + + %h3 Liste des catégories + + #plumes_index=render :partial => "admin/plume_cats/index_block" + + +.qi_row + .qi_pannel.qi_plain.padding + + -@plume_events = @plume.plume_events.order('start_at, stop_at') + + .right= link_to 'Ajouter un événement', new_admin_plume_event_path(:plume_id => @plume.id), :class => "btn btn-primary", :remote => true + %h3 Agenda + + #plume_events_index=render :partial => "admin/plume_events/index_block" diff --git a/app/views/admin/plumes/edit.js.erb b/app/views/admin/plumes/edit.js.erb new file mode 100644 index 0000000..d042e6f --- /dev/null +++ b/app/views/admin/plumes/edit.js.erb @@ -0,0 +1,2 @@ + +show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",700,900); diff --git a/app/views/admin/plumes/index.html.haml b/app/views/admin/plumes/index.html.haml new file mode 100644 index 0000000..be6bf8b --- /dev/null +++ b/app/views/admin/plumes/index.html.haml @@ -0,0 +1,7 @@ +.qi_header + .right= link_to 'Ajouter une plume', new_admin_plume_path(), :class => "btn btn-primary", :remote => true + %h1 Plumes + +.qi_row + .qi_pannel.qi_plain.padding + #plumes_index=render :partial => "index_block" diff --git a/app/views/admin/plumes/index.js.erb b/app/views/admin/plumes/index.js.erb new file mode 100644 index 0000000..95876a4 --- /dev/null +++ b/app/views/admin/plumes/index.js.erb @@ -0,0 +1,2 @@ +$('#plumes_index').html("<%= escape_javascript(render(:partial => "index_block"))%>"); +unset_busy(); \ No newline at end of file diff --git a/app/views/admin/plumes/new.js.erb b/app/views/admin/plumes/new.js.erb new file mode 100644 index 0000000..7cfbb16 --- /dev/null +++ b/app/views/admin/plumes/new.js.erb @@ -0,0 +1,2 @@ + +show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",700,900); \ No newline at end of file diff --git a/app/views/admin/plumes/reseau.html.haml b/app/views/admin/plumes/reseau.html.haml new file mode 100644 index 0000000..4fd6dae --- /dev/null +++ b/app/views/admin/plumes/reseau.html.haml @@ -0,0 +1,54 @@ +.row{:style => "max-width:inherit;"} + .col-xs-9 + .right= link_to 'Ajouter un plume', new_admin_plume_path(), :class => "btn btn-primary", :remote => true + %h1 Liste des plumes + + #plumes_index=render :partial => "index_block" + + .col-xs-3 + %h3 Tags + =render :partial => "tags" + + + :coffeescript + root = exports ? this + root.tag_id = [] + + + $(document.body).on "click", "#tags .tag_label", -> + + if $(this).hasClass("active") + $(this).removeClass "active" + + else + $(this).addClass "active" + + root.tag_id = [] + + $("#tags .tag_label.active").each -> + root.tag_id.push $(this).data "tag_id" + + if root.tag_id.length > 0 + $(".set_tag").show() + else + $(".set_tag").hide() + + + $(document.body).on "click", ".set_tag", -> + + $.ajax({ + url:$(this).attr("href"), + type: "PUT", + data: { + tag_id : tag_id + } + + }) + + return false + + + + + + diff --git a/app/views/admin/plumes/update.js.erb b/app/views/admin/plumes/update.js.erb new file mode 100644 index 0000000..47fa319 --- /dev/null +++ b/app/views/admin/plumes/update.js.erb @@ -0,0 +1,9 @@ + + +$('#plume_row_<%= @plume.id %>').replaceWith("<%= escape_javascript(render(@plume))%>"); + +$('#plume_show').replaceWith("<%= escape_javascript(render(:partial => "show"))%>"); + + +$('#tags').replaceWith("<%= escape_javascript(render(:partial => 'tags'))%>"); +close_pane_hover(); \ No newline at end of file diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml index 37e3269..b96e90d 100644 --- a/app/views/layouts/admin.html.haml +++ b/app/views/layouts/admin.html.haml @@ -7,6 +7,8 @@ %title= @title || "Admin" = csrf_meta_tags = stylesheet_link_tag :admin, :media => :all + + = javascript_include_tag "admin" =javascript_include_tag "http://maps.google.com/maps/api/js?sensor=false®ion=FR" @@ -66,6 +68,13 @@ %li= link_to "Fichiers", admin_data_files_path %li.divider %li= link_to "Contributeurs", admin_authors_path + %li.dropdown + %a{:href => "#", :class => "dropdown-toggle", :data => {:toggle => "dropdown"}} + Plume + %b.caret + %ul.dropdown-menu + + %li= link_to "Plumes", admin_plumes_path %li.dropdown %a{:href => "#", :data => {:toggle => "dropdown"}} @@ -100,9 +109,7 @@ - .container-fluid - - = yield + = yield diff --git a/app/views/layouts/plume.html.haml b/app/views/layouts/plume.html.haml new file mode 100644 index 0000000..a5c34d6 --- /dev/null +++ b/app/views/layouts/plume.html.haml @@ -0,0 +1,71 @@ +!!! + +%html{:lang => "fr", "xml:lang" => "fr", :xmlns => "http://www.w3.org/1999/xhtml"} + %head + %title=@title.to_s+" " + + + %meta{ :"http-equiv" => "Content-Type", :content => "text/html; charset=utf-8" } + %meta{ :"name" => "Description", :content => @description } + %meta{ :"name" => "Keywords", :content => @keywords } + + + = javascript_include_tag "public" + + = csrf_meta_tag + + = stylesheet_link_tag 'public' + = stylesheet_link_tag '/fonts/Stylograph/stylesheet.css' + + + + =javascript_include_tag "http://maps.google.com/maps/api/js?sensor=false®ion=FR" + + %body + + + -if flash[:error] or flash[:notice] or flash[:alert] + .flash + + =flash[:error] + =flash[:notice] + =flash[:alert] + + + + + + -if !(@menu_item and @menu_item.slug and @menu_item.slug == "index" ) + %p{:style => "height:80px;"} + + -if @menu_item and @menu_item.slug and @menu_item.slug == "index" + #slider_content + + + + + =render :partial => "public/shared/top" + + + + + #main_plume + =yield + + + .bottom{:style => "display:none;"} + + =link_to image_tag("/nb.png"), "http://nicolasbally.com", :target => "_blank" + + + + + + + + diff --git a/app/views/public/plume_articles/show.html.haml b/app/views/public/plume_articles/show.html.haml new file mode 100644 index 0000000..bf20aee --- /dev/null +++ b/app/views/public/plume_articles/show.html.haml @@ -0,0 +1,28 @@ +#plume_wrapper + =render :partial => "public/plumes/top" + + .plume_home + .sommaire + =render :partial => "public/plumes/sommaire" + + .right_plume + .plume-article_header + -if @plume_article.plume_cat + .plume_cat= @plume_article.plume_cat.title + %h1=@plume_article.title + + .render_block + =render @plume_article.block + + .clear + + .plume_bottom + %p + ="N°"+@plume.number + ="-" + =@plume.p_version + + %p.big + Comité de rédaction et de relecture : + %p + =@plume.redaction_credits \ No newline at end of file diff --git a/app/views/public/plumes/_sommaire.html.haml b/app/views/public/plumes/_sommaire.html.haml new file mode 100644 index 0000000..45dd72f --- /dev/null +++ b/app/views/public/plumes/_sommaire.html.haml @@ -0,0 +1,17 @@ +.sommaire_panel + .content + %h2 Sommaire + + -@plume.plume_cats.order(:position).each do |plume_cat| + -if plume_cat.title != "Brèves" + %h3 + =plume_cat.title + + -plume_cat.plume_articles.each do |plume_article| + =link_to plume_article.title, public_plume_article_path(plume_article) + + =link_to agenda_public_plume_path(@plume) do + %h3 Agenda + =link_to breves_public_plume_path(@plume) do + %h3 Brèves + \ No newline at end of file diff --git a/app/views/public/plumes/_top.html.haml b/app/views/public/plumes/_top.html.haml new file mode 100644 index 0000000..99089c2 --- /dev/null +++ b/app/views/public/plumes/_top.html.haml @@ -0,0 +1,7 @@ +#plume_header + =image_tag "/plume-logo.png", :class => "plume_logo" + =image_tag "/plume-logo-mobile.png", :class => "plume_logo_mobile" + .baseline + Bulletin indépendant des lobbies, d’un électorat, consacré à l’intérêt général et super intéressant ! + + .hr \ No newline at end of file diff --git a/app/views/public/plumes/agenda.html.haml b/app/views/public/plumes/agenda.html.haml new file mode 100644 index 0000000..5f937e5 --- /dev/null +++ b/app/views/public/plumes/agenda.html.haml @@ -0,0 +1,34 @@ +#plume_wrapper + =render :partial => "public/plumes/top" + + .plume_home + .sommaire + =render :partial => "public/plumes/sommaire" + + .right_plume + .plume-article_header + + .plume_cat Agenda + + + -@plume.plume_events.each do |plume_event| + .plume_event + %h2=plume_event.title + .date + =raw event_human_date(plume_event) + .desc + =plume_event.description + + + .clear + + .plume_bottom + %p + ="N°"+@plume.number + ="-" + =@plume.p_version + + %p.big + Comité de rédaction et de relecture : + %p + =@plume.redaction_credits \ No newline at end of file diff --git a/app/views/public/plumes/breves.html.haml b/app/views/public/plumes/breves.html.haml new file mode 100644 index 0000000..3f834ac --- /dev/null +++ b/app/views/public/plumes/breves.html.haml @@ -0,0 +1,35 @@ +#plume_wrapper + =render :partial => "public/plumes/top" + + .plume_home + .sommaire + =render :partial => "public/plumes/sommaire" + + .right_plume + .plume-article_header + + .plume_cat Brèves + + -@breve_cat = @plume.plume_cats.where(:title => "Brèves").first + -if @breve_cat + + -@breve_cat.plume_articles.each do |plume_article| + .plume_breve + %h2=plume_article.title + + .render_block + =render plume_article.block + + + .clear + + .plume_bottom + %p + ="N°"+@plume.number + ="-" + =@plume.p_version + + %p.big + Comité de rédaction et de relecture : + %p + =@plume.redaction_credits \ No newline at end of file diff --git a/app/views/public/plumes/show.html.haml b/app/views/public/plumes/show.html.haml new file mode 100644 index 0000000..74d6705 --- /dev/null +++ b/app/views/public/plumes/show.html.haml @@ -0,0 +1,49 @@ +#plume_wrapper + =render :partial => "top" + + .plume_home + .sommaire + =render :partial => "sommaire" + + .right_plume + -@plume.plume_articles.where(:id => [1,4]).each do |article| + .article + .inner + .image.with_ratio.fill_img{:style => "background-image:url('"+(article.image_file.file.large.medium.url if article.image_file).to_s+"');", :data => {:ratio => 0.6}} + + + .description + -if article.plume_cat + .plume_cat= article.plume_cat.title + %h2=article.title + .desc + =article.description + + .clear + + -@plume.plume_articles.where(:id => [5]).each do |article| + .article.article_large + .inner + .image.with_ratio.fill_img{:style => "background-image:url('"+(article.image_file.file.large.medium.url if article.image_file).to_s+"');", :data => {:ratio => 0.6}} + + + .description + -if article.plume_cat + .plume_cat= article.plume_cat.title + %h2=article.title + .desc + =article.description + .clear + + .clear + + .plume_bottom + %p + ="N°"+@plume.number + ="-" + =@plume.p_version + + %p.big + Comité de rédaction et de relecture : + %p + =@plume.redaction_credits \ No newline at end of file diff --git a/config/database.yml b/config/database.yml index 67e1e14..4ed95f9 100644 --- a/config/database.yml +++ b/config/database.yml @@ -7,7 +7,7 @@ development: adapter: mysql2 encoding: utf8 - database: pic_vert + database: pic_vert_app pool: 5 username: root socket: /tmp/mysql.sock diff --git a/config/initializers/abstract_mysql2_adapter.rb b/config/initializers/abstract_mysql2_adapter.rb new file mode 100644 index 0000000..7914669 --- /dev/null +++ b/config/initializers/abstract_mysql2_adapter.rb @@ -0,0 +1,3 @@ +class ActiveRecord::ConnectionAdapters::Mysql2Adapter + NATIVE_DATABASE_TYPES[:primary_key] = "int(11) auto_increment PRIMARY KEY" +end \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 6f89e7c..c5bd290 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -35,6 +35,18 @@ Survey::Application.routes.draw do namespace :public do resources :faqs + resources :plumes do + + member do + get :print + get :breves + get :agenda + end + + end + + resources :plume_articles + resources :orders do @@ -82,7 +94,28 @@ Survey::Application.routes.draw do #admin namespace :admin do + resources :plume_events + resources :plume_articles do + collection do + get :reorder + end + + + end + resources :plume_cats do + collection do + get :reorder + end + + + end + + resources :plumes do + + + end + resources :faqs diff --git a/db/migrate/20180319211920_create_plumes.rb b/db/migrate/20180319211920_create_plumes.rb new file mode 100644 index 0000000..8c79152 --- /dev/null +++ b/db/migrate/20180319211920_create_plumes.rb @@ -0,0 +1,20 @@ +class CreatePlumes < ActiveRecord::Migration + def change + create_table :plumes do |t| + t.string :title + t.string :number + t.string :p_version + t.references :image_file#, index: true + t.references :couv_image_file + t.string :credits + t.integer :edito_plume_article_id + t.integer :dossier_plume_article_id + t.integer :other_plume_article_id + t.string :redaction_credits + t.boolean :enabled + t.datetime :enabled_at + + t.timestamps + end + end +end diff --git a/db/migrate/20180319212908_create_plume_cats.rb b/db/migrate/20180319212908_create_plume_cats.rb new file mode 100644 index 0000000..94f3cad --- /dev/null +++ b/db/migrate/20180319212908_create_plume_cats.rb @@ -0,0 +1,12 @@ +class CreatePlumeCats < ActiveRecord::Migration + def change + create_table :plume_cats do |t| + t.string :title + t.integer :position + t.references :plume + t.references :image_file + + t.timestamps + end + end +end diff --git a/db/migrate/20180319213119_create_plume_articles.rb b/db/migrate/20180319213119_create_plume_articles.rb new file mode 100644 index 0000000..b49ab1c --- /dev/null +++ b/db/migrate/20180319213119_create_plume_articles.rb @@ -0,0 +1,15 @@ +class CreatePlumeArticles < ActiveRecord::Migration + def change + create_table :plume_articles do |t| + t.string :title + t.string :slug + t.integer :position + t.references :plume_cat, index: true + t.text :description + t.references :image_file + t.string :article_type + + t.timestamps + end + end +end diff --git a/db/migrate/20180320123351_create_plume_events.rb b/db/migrate/20180320123351_create_plume_events.rb new file mode 100644 index 0000000..3af86f6 --- /dev/null +++ b/db/migrate/20180320123351_create_plume_events.rb @@ -0,0 +1,16 @@ +class CreatePlumeEvents < ActiveRecord::Migration + def change + create_table :plume_events do |t| + t.references :plume, index: true + t.string :title + t.text :description + t.datetime :start_at + t.boolean :entire_day + t.boolean :stop_date + t.datetime :stop_at + t.boolean :many_days + + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb index dbfaa18..7740c87 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20151106153327) do +ActiveRecord::Schema.define(version: 20180320123351) do create_table "admins", force: true do |t| t.string "email", default: "", null: false @@ -649,6 +649,61 @@ ActiveRecord::Schema.define(version: 20151106153327) do t.datetime "updated_at", null: false end + create_table "plume_articles", force: true do |t| + t.string "title" + t.string "slug" + t.integer "position" + t.integer "plume_cat_id" + t.text "description" + t.integer "image_file_id" + t.string "article_type" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "plume_articles", ["plume_cat_id"], name: "index_plume_articles_on_plume_cat_id", using: :btree + + create_table "plume_cats", force: true do |t| + t.string "title" + t.integer "position" + t.integer "plume_id" + t.integer "image_file_id" + t.datetime "created_at" + t.datetime "updated_at" + end + + create_table "plume_events", force: true do |t| + t.integer "plume_id" + t.string "title" + t.text "description" + t.datetime "start_at" + t.boolean "entire_day" + t.boolean "stop_date" + t.datetime "stop_at" + t.boolean "many_days" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "plume_events", ["plume_id"], name: "index_plume_events_on_plume_id", using: :btree + + create_table "plumes", force: true do |t| + t.string "title" + t.string "number" + t.string "p_version" + t.integer "image_file_id" + t.integer "couv_image_file_id" + t.string "credits" + t.integer "edito_plume_article_id" + t.integer "dossier_plume_article_id" + t.integer "other_plume_article_id" + t.string "redaction_credits" + t.boolean "enabled" + t.datetime "enabled_at" + t.datetime "created_at" + t.datetime "updated_at" + end + create_table "portlets", force: true do |t| t.integer "block_id" t.integer "content_id" diff --git a/public/plume-logo.png b/public/plume-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4ba0628b0278a19766d6ffea878476553a50c050 GIT binary patch literal 165777 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

V_2)aExO})BEeP)x(SG z`kFYi)%!stl3gE5va6ff4Lw*)4;U&?!@XBJg5GBa_d;$nQ0ufLDMd!SJ<59Ns@(FS zuafTu7NK7_)jOe8)WbhS=$EayP1v?#P78$|2rvZ6vkzds4$%&vK6bu2xf_XVZNc96 zo3R8R`s|iZTgypbT@#mGMfheX9rEa2@DSU|F5eEs_rU!*WGA)v5BGLzYaTnaVY*~M z@M!9+n(35?UO$fS-N`t|a_}rttjP2V7-Ey^ib3kT^3XNV?W!WYA@yG>un-Pic2|&@* z0&W*E<=;AK6|VRcYYNnwUn2FaAjyWT5a8`@)~w&1Z~dk?3biivgKTS$klui{s3f3| zW1+dqyo-MI!;h#%CjDKb^C20K&Z@0df7SgmSlnxuL0NW5Y?I1r$cxQTDxERkkZZp| zZx5WrGk{JLa@uFHK+AFC0vh}|^68B)HA$FyYm%GG-=%T5#-;g5!$WYp5|LplFker7 zcSZdmSpAIc;u-JSyu{jW-Cu(j5xl3Ig^;fMOmE8X55W-#gG&jbYobh2tSxb7YGp~S z*RQz7y0?+aBPHQ9W_Jb|a$&B^FL>C+YY1>HJ!=W8q&@EU&jxmJEdJ#Q$DaP|tq7R4!+X<+t(y+toB72rhg=V*Ql30=yaDK$w1cirt|w)DH+ z3*E(g#=-GC95*vhQV1K|0#pW@`^YB^SSd?{Y1I-%k=eFOez`9kD5GLA6E*>|pW}>O zvrKBI<}~T#7(fxXcrgH6|`M%!^z(v^)`4fbOdViHo% zP97CZVX`^-c9CB=jltq8&vhdMti2cz6Jf>x1KarQ#mVFkO`2xtnHv2I6&SbE%^w^< zM;zDYrZ-*?i-eB{HoltiVohDF1m5zcH_K8dV;P1Evo&mno1a~gq6)@K!DWME11Em@v^M^HPrqAECF%NW!A zL|XysCpu`#<}aM=Uj^cSd<#bdCmGiKgrG&Q9VQh6=5AtlO1VLq%6zJ&xhtFygJ8?b z2;7;Ju~J9Mju(9W5fe+GzsSUDw0=H)wXr`}$M%SO2TtLxTZ#LOE?1C!w{fwrX}@=6 zN2k+NkB0wRIF3^OJF+$(tErGFX zyr9ovT-@Uaxq*=vEPL5t7@GuatbO32PI!sL5=T!W9)>HvL_~WQl5Z8Bj|Z~e+)#IJ z{&J!G9Z*8AEHHnVn&tx}^dYsLIg`OWWXCn8t|6QMk!WVvxN|Qkt?=5~dhfT)N z7c@zXAL}K@@@2}J*I%`z{}g<5En^Tf7EhMM0hwhVAskJUJM>|H!80Msk+}CbI#r*| zkZ@FipodnrP=Huo)WHm&$HMXB+;$Gx`{`MK%r_hQ)h-$<@s=W?b*5{<95`Jn2?%U zcZ>jzxy^L=oK;yuU1 zGqpMtgI$bR=3lOhAryY{6b|#heUYYF7Onh~uV8t==Wu?%wDc!;FnN5cC`0qDgyl^H z!A&H5s5dd6noY}bo_zYq24$T0ptQ0Y7cM|KL2c4lsA1w4a@@%Q zQlZ@BlAR{NJxlb8@=#KW9sBd=e1PG73A9~_)9jaUWC^Oc{0M=&e5+clYWB}g;_P=( zW7*MyAIZ?2Fw>G(#d>70{@aTLuiiI|e3@QyVd%8M0b;Ru`@F1@W97IvvE|Lerby=4 z)$v-5ong}C58eC#FJ#=;Ek;(QmTC!eESFH*#bAtAl_-#QUXQDCUdMwRmO86H!(2-x zUB0mA2e;RaZs$e!Y-`WJS(h!Ua+bt*^1z&uo^G{Bbj{p)|ZY|8e_ZTS^8p;M69A!ro+k?sqAjYfp`-jA|6HQx2AQyP{S|qY;s!9 zb9m6XSf${M+T`S-_t zOuTT^vAtjAwpwb@#yIn8D~>A#HmIbJulY}Zq)yg0Hx_9GUT-j{bLa_s3tY~diNAfD za8dd6&h1h=#v0LtnwpAksc2NY+ZD`u6T$WXOjJ7&HJ>ohQ7&fZenP6i!azYsN8fU% z=Em6CH$47_PuWL!1{pl}3{+IzezQ_)#CckiQ^V;tf zfcbOf>wT%Ro$5U`Mc2jtnnoSd_A5}uJ;x=^J5WPzHtNT&v6xY|X%!em9nP2gnrEW6 zzw2c^SNlU$RFob=kzjGVKc0ruW|5z%ni&~f?p61iD|XBgUzC1OJSfT^g=~IQ^s2IV z7@ZUBvfL?tKLOx6U|&mIp@%vAflkD)myTiLj>!9x(_#xAa_xG3bJU4Z((M`b>Z-mp z>eb`#Q%9ePC_B#&~_D@ZWbZOyMjx)cR!)U_XB;aKlr~jWN-MjKhS# zYxbf(yW0Ge+Hq%GLuB%c=V=m?4)ka}IX=}vrvtGkuofT+|C~;WHhC?$?ab#^O}+dH zvNgXL1!HT?T>$uWK}HQ$ruoW2Gwua~+iMNcBIVX0fhl0l_ye6Z;ioW6ANhcK8#MV5 z5Ep0d?{`V&ttnC+K%fLMcQ1>w)UN4&oHwt(?`!)q0 zbO5a5_s8O>sE7!a@B%Yq6DyT6sJnU6@CvvhI(64y+qZ;=zoFpe1XZwfpFjX?$iW-W1zaoLcRit<%-vPb7q30GDl+9$vjWcY5!QUic_Uo zX47)r15Jl|PyJZsZxpW%!tho@Mn*MulNFxLRn7D5jPB08}79PWZ*P3ASfjZCWEK`Z!N5 zanob~U23AuH}oYSD_l0IUo@OBlR6`!%4Z7xko(&5t9LNTe6H4t_iKFi>URTi&gjZz zkNTTS63in*LZp$w)%QK_|NN;+whb>ioklJUS*aV}EI2Q1FR78eve=*d`u5Flpe`Ec zs4T=~x)FYiKC`v8g>QtOG$iireTpQ!Y#RGBMPKTkrkbof1|XTACqxInS{IeNpbqy& z5ND^P;Ey&}BGwx>Ffb#vfZf1RdHM&iK3LoZd2dbs&YtvYnnn**QPt9NmP=(5XR=!4 zAHBFdIr!yUEGT5V?4zd16;NaOr}@n#$iN*xGR;(d2)I{COWqJ0a3}k(C(h#!Zh7If z>bE{>{M;Esv;5Oy2z7b|z0lNdauErH4-5+l`E`4JSOlUNh8CIIlNuUkt&?scse~_< zvVYcKjn>W_e{~$5)m?Igq<_&n-2i3I%Oi(u8R7TLEOv?GrJhha%cTSQyM-oK^-z$O zF2z@3`!g;+Uch^E;K7A2ZKmNAQo@E%c2&`r6 z2c~~KK&)YywHWE?E6Z=ctDAp07f-5uV`2dU{cw+T{zMSiOrxE(1pK6$jwNh&?P+wp z+1GYCL=jzS*C=NPxl0&&tZmyq@ztW$-&~n_*B3`)_Ca<2!vt zZkx?JRbwG&#xxHs9(pgv@;U9hBpsU|#AVGjEU2i<;fpDD8MU->fr0Ri7Eeo2?S4A$ z=h3O{&o?@vS#=DWdoP@(Cp(Kj(zR#5i(4!j|VwFS4gK3|DEguAqvS`_>x z<^XwXdoLrv)Wq_SZ{AaQE%-)D2CwTAsxr1ZP}r%6C+lURqM$UrxdNxsY=dRKz15}@ z#aBE5mp(m#aR^ypaB%XnwyTsByw($sje!>%>+3F6jl1K8*)cIOaV@XPP=%lRoj#f8 zNQ(H!w}Nh&K3n@2J`vF#gbn6qcI2>!ECA^DcCK2Zc9VMQ3LGFKMaKKH=D&6B=XNi; z?(8nEl3QDs)G4_y-4W{r|LIlv2Yw#s_q!G_07~Fq+c>ZUzSk8aa-jI2tMfeZZ`@hTjHs_~)4oh`D@c+2Y z{7?CCMJH@~kS{p(?w@W2|MTx2Y5OeCUoz=E{inj?-yet<3T7I#aJ1&1YVd!*5Dz?3 x?n_V95C8O0{`-aa{Qqz56PW*xy|r!LPjO7TW;s>hYo35VQsVM&OGWkk{vSSzG|B(~ literal 0 HcmV?d00001 diff --git a/test/fixtures/plume_articles.yml b/test/fixtures/plume_articles.yml new file mode 100644 index 0000000..8a09b86 --- /dev/null +++ b/test/fixtures/plume_articles.yml @@ -0,0 +1,15 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + title: MyString + slug: MyString + position: 1 + plume_cat_id: + description: MyText + +two: + title: MyString + slug: MyString + position: 1 + plume_cat_id: + description: MyText diff --git a/test/fixtures/plume_cats.yml b/test/fixtures/plume_cats.yml new file mode 100644 index 0000000..235ec3a --- /dev/null +++ b/test/fixtures/plume_cats.yml @@ -0,0 +1,9 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + title: MyString + position: 1 + +two: + title: MyString + position: 1 diff --git a/test/fixtures/plume_events.yml b/test/fixtures/plume_events.yml new file mode 100644 index 0000000..7e536ed --- /dev/null +++ b/test/fixtures/plume_events.yml @@ -0,0 +1,9 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + plume_id: + title: MyString + +two: + plume_id: + title: MyString diff --git a/test/fixtures/plumes.yml b/test/fixtures/plumes.yml new file mode 100644 index 0000000..7d51450 --- /dev/null +++ b/test/fixtures/plumes.yml @@ -0,0 +1,23 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + title: MyString + number: MyString + version: MyString + image_file_id: + credits: MyString + edito_plume_article_id: 1 + dossier_plume_article_id: 1 + other_plume_article_id: 1 + redaction_credits: MyString + +two: + title: MyString + number: MyString + version: MyString + image_file_id: + credits: MyString + edito_plume_article_id: 1 + dossier_plume_article_id: 1 + other_plume_article_id: 1 + redaction_credits: MyString diff --git a/test/models/plume_article_test.rb b/test/models/plume_article_test.rb new file mode 100644 index 0000000..a453275 --- /dev/null +++ b/test/models/plume_article_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class PlumeArticleTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/plume_cat_test.rb b/test/models/plume_cat_test.rb new file mode 100644 index 0000000..8b988fc --- /dev/null +++ b/test/models/plume_cat_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class PlumeCatTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/plume_event_test.rb b/test/models/plume_event_test.rb new file mode 100644 index 0000000..57d26f2 --- /dev/null +++ b/test/models/plume_event_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class PlumeEventTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/plume_test.rb b/test/models/plume_test.rb new file mode 100644 index 0000000..9ad7d80 --- /dev/null +++ b/test/models/plume_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class PlumeTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end