diff --git a/Gemfile b/Gemfile index c8ab155..3326883 100644 --- a/Gemfile +++ b/Gemfile @@ -2,7 +2,6 @@ source 'https://rubygems.org' ruby '2.1.2' gem 'rails', '4.1.4' - gem 'pg' gem 'active_admin_editor' @@ -15,11 +14,12 @@ gem 'devise' gem 'friendly_id' gem 'haml-rails' gem 'jquery-rails' # , '~> 2.3.0' +gem 'kaminari' +gem 'paperclip' # , '~> 3.0' gem 'rails_12factor', group: :production +gem 'react-rails', '~> 0.13.0.0' gem 'sass-rails' gem 'uglifier' # , '>= 1.0.3' -gem 'paperclip' # , '~> 3.0' -gem 'kaminari' group :development, :test do gem 'pry-rails' diff --git a/Gemfile.lock b/Gemfile.lock index 5ef439e..60ee263 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,20 +1,21 @@ GIT remote: git://github.com/gregbell/active_admin.git - revision: 99d76711783c229965095d4b818d02b46093ba5e + revision: f7483e3b8fcd74437b03c18fb658dac62a9fc62e specs: - activeadmin (1.0.0.pre) + activeadmin (1.0.0.pre2) arbre (~> 1.0, >= 1.0.2) bourbon coffee-rails - formtastic (~> 3.0) + formtastic (~> 3.1) formtastic_i18n - inherited_resources (~> 1.4, != 1.5.0) + inherited_resources (~> 1.6) jquery-rails - jquery-ui-rails (~> 5.0) + jquery-ui-rails kaminari (~> 0.15) - rails (>= 3.2, < 4.2) + rails (>= 3.2, < 5.0) ransack (~> 1.3) sass-rails + sprockets (< 4) GEM remote: https://rubygems.org/ @@ -49,174 +50,192 @@ GEM minitest (~> 5.1) thread_safe (~> 0.1) tzinfo (~> 1.1) - acts_as_list (0.4.0) + acts_as_list (0.7.2) activerecord (>= 3.0) - arbre (1.0.2) + addressable (2.4.0) + arbre (1.0.3) activesupport (>= 3.0.0) arel (5.0.1.20140414130214) - ast (2.0.0) - astrolabe (1.3.0) - parser (>= 2.2.0.pre.3, < 3.0) - awesome_print (1.2.0) - aws-sdk (1.5.8) - httparty (~> 0.7) - json (~> 1.4) - nokogiri (>= 1.4.4) - uuidtools (~> 2.1) + ast (2.2.0) + aws-sdk (2.2.24) + aws-sdk-resources (= 2.2.24) + aws-sdk-core (2.2.24) + jmespath (~> 1.0) + aws-sdk-resources (2.2.24) + aws-sdk-core (= 2.2.24) axiom-types (0.1.1) descendants_tracker (~> 0.0.4) ice_nine (~> 0.11.0) thread_safe (~> 0.3, >= 0.3.1) - bcrypt (3.1.7) - better_errors (1.1.0) + bcrypt (3.1.10) + better_errors (2.1.1) coderay (>= 1.0.0) erubis (>= 2.6.6) - bourbon (3.2.3) - sass (~> 3.2) - thor - brakeman (2.6.1) + rack (>= 0.9.0) + bourbon (4.2.6) + sass (~> 3.4) + thor (~> 0.19) + brakeman (3.2.1) erubis (~> 2.6) - fastercsv (~> 1.5) haml (>= 3.0, < 5.0) - highline (~> 1.6.20) - multi_json (~> 1.2) - ruby2ruby (~> 2.0.5) - ruby_parser (~> 3.5.0) + highline (>= 1.6.20, < 2.0) + ruby2ruby (~> 2.3.0) + ruby_parser (~> 3.8.1) + safe_yaml (>= 1.0) sass (~> 3.0) - slim (>= 1.3.6, < 3.0) + slim (>= 1.3.6, < 4.0) terminal-table (~> 1.4) builder (3.2.2) - bullet (4.14.0) + bullet (5.0.0) activesupport (>= 3.0.0) - uniform_notifier (>= 1.6.0) - chunky_png (1.3.1) + uniform_notifier (~> 1.9.0) + chunky_png (1.3.5) climate_control (0.0.3) activesupport (>= 3.0) - cocaine (0.5.4) + cocaine (0.5.8) climate_control (>= 0.0.3, < 1.0) code_analyzer (0.4.5) sexp_processor - coderay (1.1.0) + codeclimate-engine-rb (0.3.1) + virtus (~> 1.0) + coderay (1.1.1) coercible (1.0.0) descendants_tracker (~> 0.0.1) - coffee-rails (4.1.0) + coffee-rails (4.1.1) coffee-script (>= 2.2.0) - railties (>= 4.0.0, < 5.0) - coffee-script (2.3.0) + railties (>= 4.0.0, < 5.1.x) + coffee-script (2.4.1) coffee-script-source execjs - coffee-script-source (1.8.0) - colored (1.2) - compass (0.12.7) + coffee-script-source (1.10.0) + colorize (0.7.7) + compass (1.0.3) chunky_png (~> 1.2) - fssm (>= 0.2.7) - sass (~> 3.2.19) - compass-rails (2.0.0) - compass (>= 0.12.2) - database_cleaner (1.3.0) + compass-core (~> 1.0.2) + compass-import-once (~> 1.0.5) + rb-fsevent (>= 0.9.3) + rb-inotify (>= 0.9) + sass (>= 3.3.13, < 3.5) + compass-core (1.0.3) + multi_json (~> 1.0) + sass (>= 3.3.0, < 3.5) + compass-import-once (1.0.5) + sass (>= 3.2, < 3.5) + compass-rails (3.0.2) + compass (~> 1.0.0) + sass-rails (< 5.1) + sprockets (< 4.0) + concurrent-ruby (1.0.1) + database_cleaner (1.5.1) descendants_tracker (0.0.4) thread_safe (~> 0.3, >= 0.3.1) - devise (3.2.4) + devise (3.5.6) bcrypt (~> 3.0) orm_adapter (~> 0.1) railties (>= 3.2.6, < 5) + responders thread_safe (~> 0.1) warden (~> 1.2.3) diff-lcs (1.2.5) docile (1.1.5) ejs (1.1.1) - equalizer (0.0.9) + equalizer (0.0.11) erubis (2.7.0) - execjs (2.2.2) - factory_girl (4.4.0) + execjs (2.6.0) + factory_girl (4.5.0) activesupport (>= 3.0.0) - factory_girl_rails (4.4.1) - factory_girl (~> 4.4.0) + factory_girl_rails (4.6.0) + factory_girl (~> 4.5.0) railties (>= 3.0.0) - faker (1.4.2) + faker (1.6.3) i18n (~> 0.5) - fastercsv (1.5.5) - flay (2.4.0) + ffi (1.9.10) + flay (2.7.0) + erubis (~> 2.7.0) ruby_parser (~> 3.0) sexp_processor (~> 4.0) - flog (4.2.1) + flog (4.3.2) ruby_parser (~> 3.1, > 3.1.0) sexp_processor (~> 4.4) - formtastic (3.1.2) + formtastic (3.1.3) actionpack (>= 3.2.13) - formtastic_i18n (0.1.1) - friendly_id (5.0.4) + formtastic_i18n (0.5.0) + friendly_id (5.1.0) activerecord (>= 4.0.0) - fssm (0.2.10) - haml (4.0.5) + haml (4.0.7) tilt - haml-rails (0.5.3) + haml-rails (0.9.0) actionpack (>= 4.0.1) activesupport (>= 4.0.1) - haml (>= 3.1, < 5.0) + haml (>= 4.0.6, < 5.0) + html2haml (>= 1.0.1) railties (>= 4.0.1) - has_scope (0.6.0.rc) + has_scope (0.6.0) actionpack (>= 3.2, < 5) activesupport (>= 3.2, < 5) - highline (1.6.21) - hike (1.2.3) - httparty (0.13.1) - json (~> 1.8) - multi_xml (>= 0.5.2) - i18n (0.6.11) - ice_nine (0.11.0) - inherited_resources (1.5.1) - actionpack (>= 3.2, < 4.2) + highline (1.7.8) + html2haml (2.0.0) + erubis (~> 2.7.0) + haml (~> 4.0.0) + nokogiri (~> 1.6.0) + ruby_parser (~> 3.5) + i18n (0.7.0) + ice_nine (0.11.2) + inherited_resources (1.6.0) + actionpack (>= 3.2, < 5) has_scope (~> 0.6.0.rc) - railties (>= 3.2, < 4.2) - responders (~> 1.0) - jquery-rails (3.1.2) + railties (>= 3.2, < 5) + responders + jmespath (1.1.3) + jquery-rails (3.1.4) railties (>= 3.0, < 5.0) thor (>= 0.14, < 2.0) - jquery-ui-rails (5.0.2) + jquery-ui-rails (5.0.5) railties (>= 3.2.16) - json (1.8.1) - kaminari (0.16.1) + json (1.8.3) + kaminari (0.16.3) actionpack (>= 3.0.0) activesupport (>= 3.0.0) + launchy (2.4.3) + addressable (~> 2.3) mail (2.5.4) mime-types (~> 1.16) treetop (~> 1.4.8) method_source (0.8.2) mime-types (1.25.1) - mini_portile (0.6.0) - minitest (5.4.3) - multi_json (1.10.1) - multi_xml (0.5.5) - nokogiri (1.6.2.1) - mini_portile (= 0.6.0) + mimemagic (0.3.0) + mini_portile2 (2.0.0) + minitest (5.8.4) + multi_json (1.11.2) + nokogiri (1.6.7.2) + mini_portile2 (~> 2.0.0.rc2) orm_adapter (0.5.0) - paperclip (4.2.0) - activemodel (>= 3.0.0) - activesupport (>= 3.0.0) - cocaine (~> 0.5.3) + paperclip (4.3.5) + activemodel (>= 3.2.0) + activesupport (>= 3.2.0) + cocaine (~> 0.5.5) mime-types - parser (2.2.0.pre.7) - ast (>= 1.1, < 3.0) - slop (~> 3.4, >= 3.4.5) - pg (0.17.1) - polyamorous (1.1.0) + mimemagic (= 0.3.0) + parser (2.3.0.6) + ast (~> 2.2) + pg (0.18.4) + polyamorous (1.3.0) activerecord (>= 3.0) polyglot (0.3.5) - powerpack (0.0.9) - pry (0.10.0) + powerpack (0.1.1) + pry (0.10.3) coderay (~> 1.1.0) method_source (~> 0.8.1) slop (~> 3.4) - pry-rails (0.3.2) + pry-rails (0.3.4) pry (>= 0.9.10) pry-remote (0.1.8) pry (~> 0.9) slop (~> 3.0) - rack (1.5.2) - rack-mini-profiler (0.9.2) + rack (1.5.5) + rack-mini-profiler (0.9.8) rack (>= 1.1.3) - rack-test (0.6.2) + rack-test (0.6.3) rack (>= 1.0) rails (4.1.4) actionmailer (= 4.1.4) @@ -228,124 +247,133 @@ GEM bundler (>= 1.3.0, < 2.0) railties (= 4.1.4) sprockets-rails (~> 2.0) - rails_12factor (0.0.2) + rails_12factor (0.0.3) rails_serve_static_assets rails_stdout_logging - rails_best_practices (1.15.4) + rails_best_practices (1.16.0) activesupport - awesome_print code_analyzer (>= 0.4.3) - colored erubis i18n json require_all ruby-progressbar - rails_serve_static_assets (0.0.2) - rails_stdout_logging (0.0.3) + rails_serve_static_assets (0.0.5) + rails_stdout_logging (0.0.4) railties (4.1.4) actionpack (= 4.1.4) activesupport (= 4.1.4) rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) - rainbow (2.0.0) - rake (10.3.2) - ransack (1.5.1) + rainbow (2.1.0) + rake (10.5.0) + ransack (1.7.0) actionpack (>= 3.0) activerecord (>= 3.0) activesupport (>= 3.0) i18n - polyamorous (~> 1.1) - reek (1.3.8) - rainbow (>= 1.99, < 3.0) - ruby2ruby (>= 2.0.8, < 3.0) - ruby_parser (~> 3.3) - sexp_processor - require_all (1.3.2) + polyamorous (~> 1.2) + rb-fsevent (0.9.7) + rb-inotify (0.9.7) + ffi (>= 0.5.0) + react-rails (0.13.0.0) + execjs + rails (>= 3.1) + react-source (= 0.13.0) + react-source (0.13.0) + reek (3.11) + codeclimate-engine-rb (~> 0.3.1) + parser (~> 2.3, >= 2.3.0.6) + rainbow (~> 2.0) + require_all (1.3.3) responders (1.1.2) railties (>= 3.2, < 4.2) - rspec-core (3.1.7) - rspec-support (~> 3.1.0) - rspec-expectations (3.1.2) + rspec-core (3.4.3) + rspec-support (~> 3.4.0) + rspec-expectations (3.4.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.1.0) - rspec-mocks (3.1.3) - rspec-support (~> 3.1.0) - rspec-rails (3.1.0) - actionpack (>= 3.0) - activesupport (>= 3.0) - railties (>= 3.0) - rspec-core (~> 3.1.0) - rspec-expectations (~> 3.1.0) - rspec-mocks (~> 3.1.0) - rspec-support (~> 3.1.0) - rspec-support (3.1.2) - rubocop (0.27.1) - astrolabe (~> 1.3) - parser (>= 2.2.0.pre.7, < 3.0) - powerpack (~> 0.0.6) + rspec-support (~> 3.4.0) + rspec-mocks (3.4.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.4.0) + rspec-rails (3.4.2) + actionpack (>= 3.0, < 4.3) + activesupport (>= 3.0, < 4.3) + railties (>= 3.0, < 4.3) + rspec-core (~> 3.4.0) + rspec-expectations (~> 3.4.0) + rspec-mocks (~> 3.4.0) + rspec-support (~> 3.4.0) + rspec-support (3.4.1) + rubocop (0.37.2) + parser (>= 2.3.0.4, < 3.0) + powerpack (~> 0.1) rainbow (>= 1.99.1, < 3.0) - ruby-progressbar (~> 1.4) - ruby-progressbar (1.5.1) - ruby2ruby (2.0.8) + ruby-progressbar (~> 1.7) + unicode-display_width (~> 0.3) + ruby-progressbar (1.7.5) + ruby2ruby (2.3.0) ruby_parser (~> 3.1) sexp_processor (~> 4.0) - ruby_parser (3.5.0) + ruby_parser (3.8.1) sexp_processor (~> 4.1) - rubycritic (1.0.1) - flay (= 2.4.0) - flog (= 4.2.1) - parser (~> 2.1) - reek (= 1.3.8) + rubycritic (2.8.0) + colorize + flay (= 2.7.0) + flog (= 4.3.2) + launchy (= 2.4.3) + parser (~> 2.3) + reek (= 3.11) + ruby_parser (~> 3.8) virtus (~> 1.0) - sass (3.2.19) - sass-rails (4.0.4) + safe_yaml (1.0.4) + sass (3.4.21) + sass-rails (5.0.4) railties (>= 4.0.0, < 5.0) - sass (~> 3.2.2) - sprockets (~> 2.8, < 2.12) - sprockets-rails (~> 2.0) - sexp_processor (4.4.3) - simplecov (0.9.0) + sass (~> 3.1) + sprockets (>= 2.8, < 4.0) + sprockets-rails (>= 2.0, < 4.0) + tilt (>= 1.1, < 3) + sexp_processor (4.7.0) + simplecov (0.11.2) docile (~> 1.1.0) - multi_json - simplecov-html (~> 0.8.0) - simplecov-html (0.8.0) - slim (2.0.3) - temple (~> 0.6.6) + json (~> 1.8) + simplecov-html (~> 0.10.0) + simplecov-html (0.10.0) + slim (3.0.6) + temple (~> 0.7.3) tilt (>= 1.3.3, < 2.1) - slop (3.5.0) - sprockets (2.11.3) - hike (~> 1.2) - multi_json (~> 1.0) - rack (~> 1.0) - tilt (~> 1.1, != 1.3.0) - sprockets-rails (2.2.0) + slop (3.6.0) + sprockets (3.5.2) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (2.3.3) actionpack (>= 3.0) activesupport (>= 3.0) sprockets (>= 2.8, < 4.0) - temple (0.6.8) - terminal-table (1.4.5) + temple (0.7.6) + terminal-table (1.5.2) thor (0.19.1) - thread_safe (0.3.4) - tilt (1.4.1) - traceroute (0.4.0) + thread_safe (0.3.5) + tilt (2.0.2) + traceroute (0.5.0) rails (>= 3.0.0) treetop (1.4.15) polyglot polyglot (>= 0.3.1) tzinfo (1.2.2) thread_safe (~> 0.1) - uglifier (2.5.1) + uglifier (2.7.2) execjs (>= 0.3.0) json (>= 1.8.0) - uniform_notifier (1.6.2) - uuidtools (2.1.4) - virtus (1.0.3) + unicode-display_width (0.3.1) + uniform_notifier (1.9.0) + virtus (1.0.5) axiom-types (~> 0.1) coercible (~> 1.0) descendants_tracker (~> 0.0, >= 0.0.3) equalizer (~> 0.0, >= 0.0.9) - warden (1.2.3) + warden (1.2.6) rack (>= 1.0) PLATFORMS @@ -377,6 +405,7 @@ DEPENDENCIES rails (= 4.1.4) rails_12factor rails_best_practices + react-rails (~> 0.13.0.0) rspec-rails rubocop rubycritic diff --git a/app/admin/people.rb b/app/admin/people.rb index d6df0ad..1e85185 100644 --- a/app/admin/people.rb +++ b/app/admin/people.rb @@ -43,7 +43,7 @@ end # Add New Person button to show page, for quick editing - action_item only: [:show] do + action_item(:show) do link_to t('admin.person.new'), new_admin_person_path end diff --git a/app/admin/stories.rb b/app/admin/stories.rb index aa4187f..aa5b76f 100644 --- a/app/admin/stories.rb +++ b/app/admin/stories.rb @@ -71,12 +71,12 @@ # pf.input :image, # image_preview: true, # hint: t('admin.page.image_hint') - pf.input :image, + pf.input :image, as: :file, image_preview: true, hint: t('admin.page.image_hint') # hint: (f.template.image_tag(f.object.image.url(:thumb)) if f.object.image?) - + end end end @@ -112,9 +112,9 @@ # Return to index after create, update controller do def create - @story = Story.new(permitted_params[:story]) + story = Story.new(permitted_params[:story]) respond_to do |format| - if @story.save + if story.save format.html do redirect_to admin_stories_url, notice: 'Story successfully created.' end @@ -125,9 +125,9 @@ def create end def update - @story = Story.friendly.find(params[:id]) + story = Story.friendly.find(params[:id]) respond_to do |format| - if @story.update_attributes(permitted_params[:story]) + if story.update_attributes(permitted_params[:story]) format.html do redirect_to admin_stories_url, notice: 'Story successfully updated.' end diff --git a/app/assets/images/logo.svg b/app/assets/images/logo.svg index b61d4bd..d710e29 100644 --- a/app/assets/images/logo.svg +++ b/app/assets/images/logo.svg @@ -4,6 +4,7 @@ + + + Logo + Created with Sketch. + + + + + + + + + + + + + + + diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index faef821..818c30e 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -13,3 +13,4 @@ //= require jquery //= require jquery_ujs //= require bootstrap +//= require react diff --git a/app/assets/javascripts/bootstrap.js.coffee b/app/assets/javascripts/bootstrap.js.coffee index b7f17b7..d360b39 100644 --- a/app/assets/javascripts/bootstrap.js.coffee +++ b/app/assets/javascripts/bootstrap.js.coffee @@ -10,12 +10,11 @@ jQuery -> $('#carousel-pages').carousel('next') $('#carousel-pages').on 'slid.bs.carousel', -> - active_page_index = $('#carousel-pages .carousel-inner .item.active').index() - new_active_page = $('ol.pages li[data-slide-to="' + active_page_index + '"]') - $('ol.pages li').removeClass("active") - new_active_page.addClass("active") - - + active_page_index = $('#carousel-pages .carousel-inner .item.active').index() + new_active_page = $('ol.pages li[data-slide-to="' + active_page_index + '"]') + $('ol.pages li').removeClass("active") + new_active_page.addClass("active") + $(document).keydown (e) -> switch e.which when 37 #left arrow diff --git a/app/assets/javascripts/helloworld.js.jsx b/app/assets/javascripts/helloworld.js.jsx new file mode 100644 index 0000000..f53aec9 --- /dev/null +++ b/app/assets/javascripts/helloworld.js.jsx @@ -0,0 +1,5 @@ +alert('foo'); +React.render( +

Hello, world!

, + document.getElementById('example') +); diff --git a/app/assets/stylesheets/_variables.css.sass b/app/assets/stylesheets/_variables.css.sass index a6a7740..edec4c1 100644 --- a/app/assets/stylesheets/_variables.css.sass +++ b/app/assets/stylesheets/_variables.css.sass @@ -4,12 +4,13 @@ $colour-rating_yellow: #ffff99 $colour-rating_red: #ff9999 $colour-rating_blue: #9999ff $default-border-radius: 5px -$colour-link-normal: #1e7944 -$colour-link-hover: #1e7944 -$colour-link-active: #1e7944 -$colour-link-visited: #1e7944 -$colour-link-focus: #1e7944 -$colour-highlight: #e6e546 +$colour-link-normal: #3e3b82 +$colour-link-hover: #3e3b82 +$colour-link-active: #3e3b82 +$colour-link-visited: #3e3b82 +$colour-link-focus: #3e3b82 +// $colour-highlight: #e6e546 +$colour-highlight: #8fd2d7 // $colour-background: #f3f0f1 $colour-background: red $colour-navbar: #231f20 diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 5449645..aa2d5e2 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -10,5 +10,6 @@ *= require promo *= require static *= require active_admin/editor/wysiwyg + *= require promo *= require_self */ diff --git a/app/assets/stylesheets/scaffolds.css.sass b/app/assets/stylesheets/scaffolds.css.sass index 1e101fd..95b8c56 100644 --- a/app/assets/stylesheets/scaffolds.css.sass +++ b/app/assets/stylesheets/scaffolds.css.sass @@ -25,7 +25,6 @@ a &:hover color: #fff - background-color: #000 div @@ -61,4 +60,3 @@ div ul li font-size: 12px list-style: square - diff --git a/app/assets/stylesheets/screen.css.sass b/app/assets/stylesheets/screen.css.sass index 1ce4330..8b265e9 100644 --- a/app/assets/stylesheets/screen.css.sass +++ b/app/assets/stylesheets/screen.css.sass @@ -11,7 +11,7 @@ body // background: $colour-background url(image_path('greyfloral.png')) 0 0 repeat - background: red, yellow + color: #222222 font-family: 'Archivo Narrow', sans-serif font-size: 16px line-height: 1.25 @@ -19,8 +19,8 @@ body a +link-colors($colour-link-normal, $colour-link-hover, $colour-link-active, $colour-link-visited, $colour-link-focus) - &:hover - background: transparent + // &:hover + // background: transparent ul padding: 0 @@ -36,15 +36,24 @@ ul @include border-radius(0) border: none background: $colour-navbar - margin: 30px 0 20px 0 + height: 200px + background: transparent font-family: 'Mouse Memoirs', sans-serif font-size: 24px line-height: 1 letter-spacing: 1px + clear: both + position: relative @media screen and (min-width: 768px) - margin: 80px 0 70px 0 + padding: 0 0 70px 0 + .ribbon + position: absolute + z-index: -1 + width: 100% + min-height: 100% .navbar-nav>li>a color: white + margin-top: 80px &:hover color: $colour-highlight .navbar-nav>.active>a @@ -56,30 +65,22 @@ ul .navbar-brand height: 0 .logo - margin-top: -33px + margin-right: 40px width: 100px @media screen and (min-width: 768px) - margin-top: -63px width: 150px @media screen and (min-width: 992px) - margin-top: -85px width: 200px .navbar-collapse border: 0 header - margin-top: -200px - margin-bottom: 2em - min-height: 170px - max-height: 500px - overflow: hidden - h1 - text-align: center - margin: 150px 0 0 0 - line-height: 1 - .header_image - img - width: 100% + position: relative + z-index: 0 + +.section + position: relative + z-index: 100 footer margin-top: 2em diff --git a/app/controllers/people_controller.rb b/app/controllers/people_controller.rb index 501b7d9..5faa56b 100644 --- a/app/controllers/people_controller.rb +++ b/app/controllers/people_controller.rb @@ -1,25 +1,36 @@ # Front-end controller for people -class PeopleController < InheritedResources::Base - # GET /people - # GET /people.json +class PeopleController < ApplicationController def index - @people = Person.alphabetical.page params[:page] - + people = repo.all.page params[:page] respond_to do |format| - format.html # index.html.erb - format.json { render json: @people } + format.html { render_index(people) } + format.json { render json: people } end end - # GET /people/1 - # GET /people/1.json def show - @person = Person.friendly.find(params[:id]) - @stories = @person.stories.with_pages.alphabetical.includes(:people) - + person = repo.find(params[:id]) respond_to do |format| - format.html # show.html.erb - format.json { render json: @person } + format.html { render_show(person) } + format.json { render json: person } end end + + private + + def repo + @people_repo ||= PeopleRepo.new + end + + def render_index(people) + render 'people/index', locals: { people: people } + end + + def render_show(person) + render 'people/show', + locals: { + person: person, + stories: person.stories.with_pages.alphabetical.includes(:people) + } + end end diff --git a/app/controllers/site_controller.rb b/app/controllers/site_controller.rb index 1293352..ce913be 100644 --- a/app/controllers/site_controller.rb +++ b/app/controllers/site_controller.rb @@ -1,15 +1,24 @@ # Front-end controller for home page -class SiteController < InheritedResources::Base - # GET /pages - # GET /pages.json +class SiteController < ApplicationController def index - @recent_stories = Story.with_pages.recent(4).includes(:people) - @stories = Story.with_pages.recent(24).offset(4).alphabetical.includes(:people) - @people = Person.recent(24).alphabetical + recent_stories = Story.with_pages.recent(4).includes(:people) + stories = Story.with_pages.recent(24).offset(4).alphabetical.includes(:people) + people = Person.recent(24).alphabetical respond_to do |format| - format.html # index.html.erb - format.json { render json: @stories } + format.html { render_index(recent_stories, stories, people) } + format.json { render json: stories } end end + + private + + def render_index(recent_stories, stories, people) + render 'site/index', + locals: { + recent_stories: recent_stories, + stories: stories, + people: people + } + end end diff --git a/app/controllers/stories_controller.rb b/app/controllers/stories_controller.rb index ca383c3..d8b0202 100644 --- a/app/controllers/stories_controller.rb +++ b/app/controllers/stories_controller.rb @@ -1,34 +1,48 @@ # Front-end controller for stories -class StoriesController < InheritedResources::Base +class StoriesController < ApplicationController # GET /stories # GET /stories.json def index - @stories ||= stories - @rating = params[:rating] - @starts_with = params[:starts_with] + rating = params[:rating] + starts_with = params[:starts_with] + stories = repo.filter(rating: rating, starts_with: starts_with).page params[:page] respond_to do |format| - format.html # index.html.erb - format.json { render json: @stories } + format.html { render_index(stories, rating, starts_with) } + format.json { render json: stories } end end # GET /stories/1 # GET /stories/1.json def show - @story = Story.friendly.find(params[:id]) - @pages = @story.pages.ordered - @people = @story.people.alphabetical.includes(:stories) - + story = repo.find(params[:id]) respond_to do |format| - format.html # show.html.erb - format.json { render json: @story } + format.html { render_show(story) } + format.json { render json: story } end end private - def stories - stories = Story.filter(params.slice(:rating, :starts_with)) - stories.with_pages.alphabetical.page params[:page] + def repo + @stories_repo ||= StoriesRepo.new + end + + def render_index(stories, rating, starts_with) + render 'stories/index', + locals: { + stories: stories, + rating: rating, + starts_with: starts_with + } + end + + def render_show(story) + render 'stories/show', + locals: { + story: story, + pages: story.pages.ordered, + people: story.people.alphabetical.includes(:stories) + } end end diff --git a/app/repos/people_repo.rb b/app/repos/people_repo.rb new file mode 100644 index 0000000..031e92c --- /dev/null +++ b/app/repos/people_repo.rb @@ -0,0 +1,9 @@ +class PeopleRepo + def all + Person.alphabetical + end + + def find(person_id) + Person.friendly.find(person_id) + end +end diff --git a/app/repos/stories_repo.rb b/app/repos/stories_repo.rb new file mode 100644 index 0000000..bf0c046 --- /dev/null +++ b/app/repos/stories_repo.rb @@ -0,0 +1,9 @@ +class StoriesRepo + def filter(filtering_params) + Story.filter(filtering_params).with_pages.alphabetical + end + + def find(story_id) + Story.friendly.find(story_id) + end +end diff --git a/app/views/_nav.html.haml b/app/views/_nav.html.haml new file mode 100644 index 0000000..8522906 --- /dev/null +++ b/app/views/_nav.html.haml @@ -0,0 +1,20 @@ +.navbar.navbar-inverse + = image_tag "ribbon.svg", class: "ribbon" + + .container + .navbar-header + %button.navbar-toggle{"data-target" => ".navbar-collapse", "data-toggle" => "collapse", :type => "button"} + Menu + %a.navbar-brand{:href => "/"} + = image_tag "logo.svg", class: "logo" + .navbar-collapse.collapse + %ul.nav.navbar-nav + = nav_link "Home", root_path + = nav_link "Stories", stories_path + = nav_link "People", people_path + = nav_link "Workshops", "/workshops" + = nav_link "Submissions", "/submissions" + = nav_link "Issue 27", "/issue-27" + + - flash.each do |name, msg| + = content_tag :div, msg, class: name diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 0c9b572..1657a13 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -1,23 +1,23 @@ -%html{:lang => "en"} +%html{lang: "en"} %head %meta(charset="utf-8") %meta(http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1") %meta(name="viewport" content="width=device-width, initial-scale=1.0") %title= content_for?(:title) ? yield(:title) + "| Funtime Comics" : "Funtime Comics" - %meta{:content => "", :name => "description"}/ - %meta{:content => "", :name => "author"}/ + %meta{content: "", name: "description"}/ + %meta{content: "", name: "author"}/ = csrf_meta_tags = stylesheet_link_tag "application", 'http://fonts.googleapis.com/css?family=Archivo+Narrow', media: "all" = stylesheet_link_tag "application", 'https://fonts.googleapis.com/css?family=Mouse+Memoirs', media: "all" - =# favicon_link_tag 'apple-touch-icon-144x144-precomposed.png', :rel => 'apple-touch-icon-precomposed', :type => 'image/png', :sizes => '144x144' - =# favicon_link_tag 'apple-touch-icon-114x114-precomposed.png', :rel => 'apple-touch-icon-precomposed', :type => 'image/png', :sizes => '114x114' - =# favicon_link_tag 'apple-touch-icon-72x72-precomposed.png', :rel => 'apple-touch-icon-precomposed', :type => 'image/png', :sizes => '72x72' - =# favicon_link_tag 'apple-touch-icon-precomposed.png', :rel => 'apple-touch-icon-precomposed', :type => 'image/png' - =# favicon_link_tag 'favicon.ico', :rel => 'shortcut icon' + =# favicon_link_tag 'apple-touch-icon-144x144-precomposed.png', rel: 'apple-touch-icon-precomposed', type: 'image/png', sizes: '144x144' + =# favicon_link_tag 'apple-touch-icon-114x114-precomposed.png', rel: 'apple-touch-icon-precomposed', type: 'image/png', sizes: '114x114' + =# favicon_link_tag 'apple-touch-icon-72x72-precomposed.png', rel: 'apple-touch-icon-precomposed', type: 'image/png', sizes: '72x72' + =# favicon_link_tag 'apple-touch-icon-precomposed.png', rel: 'apple-touch-icon-precomposed', type: 'image/png' + =# favicon_link_tag 'favicon.ico', rel: 'shortcut icon' - %link{:href=>"//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css", :rel=>"stylesheet"} + %link{href: "//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css", rel: "stylesheet"} / Le HTML5 shim, for IE6-8 support of HTML elements /[if lt IE 9] = javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.6.1/html5shiv.js" @@ -27,25 +27,10 @@ - if notice #notice= notice - .navbar.navbar-inverse - .container - .navbar-header - %button.navbar-toggle{"data-target" => ".navbar-collapse", "data-toggle" => "collapse", :type => "button"} - Menu - %a.navbar-brand{:href => "/"} - = image_tag "logo.svg", class: "logo" - .navbar-collapse.collapse - %ul.nav.navbar-nav - = nav_link "Home", root_path - = nav_link "Stories", stories_path - = nav_link "People", people_path - = nav_link "Workshops", "/workshops" - = nav_link "Submissions", "/submissions" - - - flash.each do |name, msg| - = content_tag :div, msg, class: name + %header + = render '/nav' = yield = javascript_include_tag "application" - %script{:src=>"//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"} + %script{src: "//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"} diff --git a/app/views/people/_people.html.haml b/app/views/people/_people.html.haml index 6a74f19..63d3893 100644 --- a/app/views/people/_people.html.haml +++ b/app/views/people/_people.html.haml @@ -1,3 +1,5 @@ .people %ul.people - = render partial: "people/person", collection: people \ No newline at end of file + = render partial: "people/person", collection: people + %h2.subtitle + = link_to "See All Artists", people_path diff --git a/app/views/people/index.html.haml b/app/views/people/index.html.haml index 248fe16..b53cbb6 100644 --- a/app/views/people/index.html.haml +++ b/app/views/people/index.html.haml @@ -10,13 +10,13 @@ .row .col-md-12 .pagination-wrapper - = paginate @people + = paginate people .row .col-md-12 - = render partial: "people/people", object: @people + = render partial: "people/people", object: people .row .col-md-12 .pagination-wrapper - = paginate @people + = paginate people = render partial: "site/footer" diff --git a/app/views/people/show.html.haml b/app/views/people/show.html.haml index ff35284..44c6921 100644 --- a/app/views/people/show.html.haml +++ b/app/views/people/show.html.haml @@ -1,22 +1,22 @@ - content_for :title do - = @person.name + = person.name %header .container .row .col-md-12 - %h1= @person.name + %h1= person.name .container .row .col-md-6 .person-image.original - = image_tag @person.image.url(:original) + = image_tag person.image.url(:original) .col-md-6 - = @person.bio.html_safe + = person.bio.html_safe .row .col-md-12 %h3 Stories - = render partial: "stories/stories", object: @stories, locals: {person: @person} + = render partial: "stories/stories", object: stories, locals: {person: person} -= render partial: "site/footer" \ No newline at end of file += render partial: "site/footer" diff --git a/app/views/site/index.html.haml b/app/views/site/index.html.haml index 02c0399..d539fba 100644 --- a/app/views/site/index.html.haml +++ b/app/views/site/index.html.haml @@ -1,28 +1,18 @@ .section.stories .container .row - .col-md-2.col-sm-12 - .subtitle - %h2 Stories - = link_to "See All Stories", stories_path - .col-md-10.col-sm-12 - .row - .col-md-8 - = render partial: "stories/featured_stories", object: @recent_stories, person: nil - .col-md-4.col-sm-12 - = render partial: "/promo" - .row - .col-md-12 - = render partial: "stories/stories", object: @stories, person: nil + .col-md-8 + = render partial: "stories/featured_stories", object: recent_stories, person: nil + .col-md-4.col-sm-12 + = render partial: "/promo" + .row + .col-md-12 + = render partial: "stories/stories", object: stories, person: nil .section.people .container .row - .col-md-2.col-sm-12 - .subtitle - %h2 People - = link_to "See All People", people_path - .col-md-10.col-sm-12 - = render partial: "people/people", object: @people + .col-md-12 + = render partial: "people/people", object: people = render partial: "site/footer" diff --git a/app/views/static/issue-27.html.haml b/app/views/static/issue-27.html.haml new file mode 100644 index 0000000..52e6041 --- /dev/null +++ b/app/views/static/issue-27.html.haml @@ -0,0 +1,15 @@ +- content_for :title do + Ratings + +%header + .container + .row + .col-md-12 + %h1 Issue 27 +.section + .container + .row + .col-md-12 + Info about Issue 27 + += render partial: "site/footer" diff --git a/app/views/stories/_stories.html.haml b/app/views/stories/_stories.html.haml index a3d1ee7..4b11ec8 100644 --- a/app/views/stories/_stories.html.haml +++ b/app/views/stories/_stories.html.haml @@ -1,2 +1,4 @@ %ul.stories - = render partial: "stories/story", collection: stories, locals: {person: person ||= nil} \ No newline at end of file + = render partial: "stories/story", collection: stories, locals: {person: person ||= nil} +%h2.subtitle + = link_to "See All Stories", stories_path diff --git a/app/views/stories/index.html.haml b/app/views/stories/index.html.haml index d23974f..0f4fe2d 100644 --- a/app/views/stories/index.html.haml +++ b/app/views/stories/index.html.haml @@ -12,22 +12,22 @@ .filters = form_tag stories_path, :method => :get, class: 'form-inline' do Show me - = select_tag :rating, options_for_select(Story.ratings.keys + ["unrated"], @rating), prompt: 'all', class: 'form-control input-sm' + = select_tag :rating, options_for_select(Story.ratings.keys + ["unrated"], rating), prompt: 'all', class: 'form-control input-sm' stories = submit_tag 'Filter', class: 'btn btn-default' .row .col-md-12 .pagination-wrapper - = paginate @stories + = paginate stories .row .col-md-12 - - if @stories.any? - = render partial: "stories/stories", object: @stories, person: nil + - if stories.any? + = render partial: "stories/stories", object: stories, person: nil - else = "There are no stories like that." .row .col-md-12 .pagination-wrapper - = paginate @stories + = paginate stories = render partial: "site/footer" diff --git a/app/views/stories/show.html.haml b/app/views/stories/show.html.haml index fe0d3d7..faa5186 100644 --- a/app/views/stories/show.html.haml +++ b/app/views/stories/show.html.haml @@ -1,29 +1,32 @@ - content_for :title do - = @story.name + = story.name + +%script{:type=>"text/jsx", :src=>asset_path('helloworld.js')} %header .container .row .col-md-12 - %h1= @story.name + %h1= story.name .section .container .row .col-md-9 - - if @story.page_count == 1 - = image_tag @story.pages.first.image.url(:original), class: "img-responsive" + #example + - if story.page_count == 1 + = image_tag story.pages.first.image.url(:original), class: "img-responsive" - else #carousel-pages.carousel.slide .carousel-inner - - if @story.blue? + - if story.blue? .item.active.warning_page %h2 Warning This story is rated blue, and is suitable for adults only. - - @pages.each_with_index do |page, i| - .item{:class => ("active" if i==0 && !@story.blue?)} + - pages.each_with_index do |page, i| + .item{:class => ("active" if i==0 && !story.blue?)} = image_tag page.image.url(:original), class: "img-responsive" - - if @story.unfinished? + - if story.unfinished? .item.to_be_continued %h2 To be continued… %a.left.carousel-control{"data-slide" => "prev", :href => "#carousel-pages"} @@ -34,23 +37,23 @@ .row .col-md-12 .rating-box - = rating_dot(@story) - = rating_info(@story) - - unless @story.page_count == 1 + = rating_dot(story) + = rating_info(story) + - unless story.page_count == 1 .row .col-md-12 - = render partial: "pages/pages", object: @pages, locals: {story: @story} + = render partial: "pages/pages", object: pages, locals: {story: story} .row .col-md-12 - - if @story.description? + - if story.description? .description - = @story.description.html_safe + = story.description.html_safe .row.creators .col-md-12 %h2 Creators .people %ul.people - - @people.each do |person| + - people.each do |person| %li.person = link_to person do .person-image.thumb @@ -60,7 +63,7 @@ .col-md-12 %h3 More by the same creators .stories - - Story.by_same_creators(@story).each do |story| + - Story.by_same_creators(story).each do |story| %li.story = link_to story do .story-image.thumb diff --git a/config/environments/development.rb b/config/environments/development.rb index 4fbf56d..0d03447 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -34,7 +34,7 @@ # Expands the lines which load the assets config.assets.debug = true - + config.after_initialize do Bullet.enable = true # Bullet.alert = true @@ -51,4 +51,6 @@ Bullet.add_footer = true # Bullet.stacktrace_includes = [ 'your_gem', 'your_middleware' ] end + + config.react.variant = :development end diff --git a/config/environments/production.rb b/config/environments/production.rb index 7ffb76c..db1044c 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -79,4 +79,6 @@ :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'] } } + + config.react.variant = :production end diff --git a/config/environments/test.rb b/config/environments/test.rb index 14cc4aa..e549d71 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -36,4 +36,6 @@ # Print deprecation notices to the stderr config.active_support.deprecation = :stderr + + config.react.variant = :development end diff --git a/db/schema.rb b/db/schema.rb index 7e50bd2..a6174de 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -14,108 +14,109 @@ ActiveRecord::Schema.define(version: 20141020061254) do # These are extensions that must be enabled in order to support this database - enable_extension 'plpgsql' - - create_table 'active_admin_comments', force: true do |t| - t.string 'resource_id', null: false - t.string 'resource_type', null: false - t.integer 'author_id' - t.string 'author_type' - t.text 'body' - t.datetime 'created_at' - t.datetime 'updated_at' - t.string 'namespace' + enable_extension "plpgsql" + enable_extension "hstore" + + create_table "active_admin_comments", force: true do |t| + t.string "resource_id", null: false + t.string "resource_type", null: false + t.integer "author_id" + t.string "author_type" + t.text "body" + t.datetime "created_at" + t.datetime "updated_at" + t.string "namespace" end - add_index 'active_admin_comments', ['author_type', 'author_id'], name: 'index_active_admin_comments_on_author_type_and_author_id', using: :btree - add_index 'active_admin_comments', ['namespace'], name: 'index_active_admin_comments_on_namespace', using: :btree - add_index 'active_admin_comments', ['resource_type', 'resource_id'], name: 'index_active_admin_comments_on_resource_type_and_resource_id', using: :btree - - create_table 'admin_users', force: true do |t| - t.string 'email', default: '', null: false - t.string 'encrypted_password', default: '', null: false - t.string 'reset_password_token' - t.datetime 'reset_password_sent_at' - t.datetime 'remember_created_at' - t.integer 'sign_in_count', default: 0 - t.datetime 'current_sign_in_at' - t.datetime 'last_sign_in_at' - t.string 'current_sign_in_ip' - t.string 'last_sign_in_ip' - t.datetime 'created_at' - t.datetime 'updated_at' + add_index "active_admin_comments", ["author_type", "author_id"], name: "index_active_admin_comments_on_author_type_and_author_id", using: :btree + add_index "active_admin_comments", ["namespace"], name: "index_active_admin_comments_on_namespace", using: :btree + add_index "active_admin_comments", ["resource_type", "resource_id"], name: "index_active_admin_comments_on_resource_type_and_resource_id", using: :btree + + create_table "admin_users", force: true do |t| + t.string "email", default: "", null: false + t.string "encrypted_password", default: "", null: false + t.string "reset_password_token" + t.datetime "reset_password_sent_at" + t.datetime "remember_created_at" + t.integer "sign_in_count", default: 0 + t.datetime "current_sign_in_at" + t.datetime "last_sign_in_at" + t.string "current_sign_in_ip" + t.string "last_sign_in_ip" + t.datetime "created_at" + t.datetime "updated_at" end - add_index 'admin_users', ['email'], name: 'index_admin_users_on_email', unique: true, using: :btree - add_index 'admin_users', ['reset_password_token'], name: 'index_admin_users_on_reset_password_token', unique: true, using: :btree + add_index "admin_users", ["email"], name: "index_admin_users_on_email", unique: true, using: :btree + add_index "admin_users", ["reset_password_token"], name: "index_admin_users_on_reset_password_token", unique: true, using: :btree - create_table 'controllers', force: true do |t| - t.string 'Pages' - t.datetime 'created_at' - t.datetime 'updated_at' + create_table "controllers", force: true do |t| + t.string "Pages" + t.datetime "created_at" + t.datetime "updated_at" end - create_table 'friendly_id_slugs', force: true do |t| - t.string 'slug', null: false - t.integer 'sluggable_id', null: false - t.string 'sluggable_type', limit: 40 - t.datetime 'created_at' + create_table "friendly_id_slugs", force: true do |t| + t.string "slug", null: false + t.integer "sluggable_id", null: false + t.string "sluggable_type", limit: 40 + t.datetime "created_at" end - add_index 'friendly_id_slugs', ['slug', 'sluggable_type'], name: 'index_friendly_id_slugs_on_slug_and_sluggable_type', unique: true, using: :btree - add_index 'friendly_id_slugs', ['sluggable_id'], name: 'index_friendly_id_slugs_on_sluggable_id', using: :btree - add_index 'friendly_id_slugs', ['sluggable_type'], name: 'index_friendly_id_slugs_on_sluggable_type', using: :btree - - create_table 'pages', force: true do |t| - t.integer 'story_id' - t.datetime 'created_at' - t.datetime 'updated_at' - t.string 'image_file_name' - t.string 'image_content_type' - t.integer 'image_file_size' - t.datetime 'image_updated_at' - t.integer 'position' + add_index "friendly_id_slugs", ["slug", "sluggable_type"], name: "index_friendly_id_slugs_on_slug_and_sluggable_type", unique: true, using: :btree + add_index "friendly_id_slugs", ["sluggable_id"], name: "index_friendly_id_slugs_on_sluggable_id", using: :btree + add_index "friendly_id_slugs", ["sluggable_type"], name: "index_friendly_id_slugs_on_sluggable_type", using: :btree + + create_table "pages", force: true do |t| + t.integer "story_id" + t.datetime "created_at" + t.datetime "updated_at" + t.string "image_file_name" + t.string "image_content_type" + t.integer "image_file_size" + t.datetime "image_updated_at" + t.integer "position" end - add_index 'pages', ['story_id'], name: 'index_pages_on_story_id', using: :btree - - create_table 'people', force: true do |t| - t.string 'name' - t.text 'bio' - t.datetime 'created_at' - t.datetime 'updated_at' - t.string 'image_file_name' - t.string 'image_content_type' - t.integer 'image_file_size' - t.datetime 'image_updated_at' - t.string 'slug' + add_index "pages", ["story_id"], name: "index_pages_on_story_id", using: :btree + + create_table "people", force: true do |t| + t.string "name" + t.text "bio" + t.datetime "created_at" + t.datetime "updated_at" + t.string "image_file_name" + t.string "image_content_type" + t.integer "image_file_size" + t.datetime "image_updated_at" + t.string "slug" end - add_index 'people', ['slug'], name: 'index_people_on_slug', using: :btree + add_index "people", ["slug"], name: "index_people_on_slug", using: :btree - create_table 'people_stories', force: true do |t| - t.integer 'story_id' - t.integer 'person_id' + create_table "people_stories", force: true do |t| + t.integer "story_id" + t.integer "person_id" end - add_index 'people_stories', ['person_id'], name: 'index_people_stories_on_person_id', using: :btree - add_index 'people_stories', ['story_id'], name: 'index_people_stories_on_story_id', using: :btree - - create_table 'stories', force: true do |t| - t.string 'name' - t.datetime 'created_at' - t.datetime 'updated_at' - t.string 'cover_image_file_name' - t.string 'cover_image_content_type' - t.integer 'cover_image_file_size' - t.datetime 'cover_image_updated_at' - t.string 'slug' - t.text 'description' - t.integer 'pages_count' - t.integer 'rating' - t.boolean 'unfinished' + add_index "people_stories", ["person_id"], name: "index_people_stories_on_person_id", using: :btree + add_index "people_stories", ["story_id"], name: "index_people_stories_on_story_id", using: :btree + + create_table "stories", force: true do |t| + t.string "name" + t.datetime "created_at" + t.datetime "updated_at" + t.string "cover_image_file_name" + t.string "cover_image_content_type" + t.integer "cover_image_file_size" + t.datetime "cover_image_updated_at" + t.string "slug" + t.text "description" + t.integer "pages_count" + t.integer "rating" + t.boolean "unfinished" end - add_index 'stories', ['slug'], name: 'index_stories_on_slug', using: :btree + add_index "stories", ["slug"], name: "index_stories_on_slug", using: :btree end diff --git a/public/images/funtime27_cover.jpg b/public/images/funtime27_cover.jpg new file mode 100644 index 0000000..f666d98 Binary files /dev/null and b/public/images/funtime27_cover.jpg differ