From d800d59a241826ba0a7555aa5620a8b919519881 Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Thu, 29 Jun 2017 18:55:00 -0700 Subject: [PATCH 001/161] Updated README with Heroku link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e2ecb37..f4adf2c 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ CS 169 Fall 2016. This project is based on the work of the previous group from Spring 2016. -https://ancient-river-67510.herokuapp.com/ +https://protected-escarpment-64354.herokuapp.com [Pivotal Tracker](https://www.pivotaltracker.com/projects/1887169/memberships?page=1) From ade404e79ff2c0eb4a98a3aab7d0141f178398f0 Mon Sep 17 00:00:00 2001 From: Claire Scheele Date: Mon, 3 Jul 2017 03:16:15 +0000 Subject: [PATCH 002/161] Deploying to new Heroku. --- Gemfile.lock | 293 +++++++++++++++++++++++++++------------------------ 1 file changed, 158 insertions(+), 135 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 5232588..a91283a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ GEM remote: https://rubygems.org/ specs: - ZenTest (4.11.0) + ZenTest (4.11.1) abstract_type (0.0.7) actionmailer (4.2.5) actionpack (= 4.2.5) @@ -41,28 +41,29 @@ GEM adamantium (0.2.0) ice_nine (~> 0.11.0) memoizable (~> 0.4.0) - addressable (2.4.0) - arel (6.0.3) + addressable (2.5.1) + public_suffix (~> 2.0, >= 2.0.2) + arel (6.0.4) arrayfields (4.9.2) - ast (2.2.0) - autoprefixer-rails (6.5.1) + ast (2.3.0) + autoprefixer-rails (7.1.1.2) execjs autotest-rails (4.2.1) ZenTest (~> 4.5) bcrypt (3.1.11) binding_of_caller (0.7.2) debug_inspector (>= 0.0.1) - bootstrap (4.0.0.alpha4) + bootstrap (4.0.0.alpha6) autoprefixer-rails (>= 6.0.3) sass (>= 3.4.19) bootstrap-datepicker-rails (1.6.4.1) railties (>= 3.0) - builder (3.2.2) - byebug (8.2.2) - cancancan (1.15.0) + builder (3.2.3) + byebug (9.0.6) + cancancan (1.17.0) cane (2.6.2) parallel - capybara (2.6.2) + capybara (2.14.4) addressable mime-types (>= 1.16) nokogiri (>= 1.3.3) @@ -78,11 +79,10 @@ GEM rest-client (>= 1.6.0) ruby_parser (~> 3.0) sexp_processor (~> 4.1) - climate_control (0.0.3) - activesupport (>= 3.0) + climate_control (0.2.0) cocaine (0.5.8) climate_control (>= 0.0.3, < 1.0) - code_analyzer (0.4.5) + code_analyzer (0.4.7) sexp_processor code_metrics (0.1.3) coderay (1.1.1) @@ -92,71 +92,73 @@ GEM coffee-script (2.4.1) coffee-script-source execjs - coffee-script-source (1.10.0) - colored (1.2) + coffee-script-source (1.12.2) concord (0.1.5) adamantium (~> 0.2.0) equalizer (~> 0.0.9) - concurrent-ruby (1.0.0) - cucumber (2.3.2) + concurrent-ruby (1.0.5) + cucumber (2.4.0) builder (>= 2.1.2) - cucumber-core (~> 1.4.0) + cucumber-core (~> 1.5.0) cucumber-wire (~> 0.0.1) diff-lcs (>= 1.1.3) - gherkin (~> 3.2.0) + gherkin (~> 4.0) multi_json (>= 1.7.5, < 2.0) multi_test (>= 0.1.2) - cucumber-core (1.4.0) - gherkin (~> 3.2.0) - cucumber-rails (1.4.3) + cucumber-core (1.5.0) + gherkin (~> 4.0) + cucumber-rails (1.5.0) capybara (>= 1.1.2, < 3) - cucumber (>= 1.3.8, < 3) - mime-types (>= 1.16, < 4) + cucumber (>= 1.3.8, < 4) + mime-types (>= 1.17, < 4) nokogiri (~> 1.5) - railties (>= 3, < 5) + railties (>= 4, < 5.2) cucumber-rails-training-wheels (1.0.0) cucumber-rails (>= 1.1.1) cucumber-wire (0.0.1) - database_cleaner (1.5.1) - debug_inspector (0.0.2) - devise (4.2.0) + database_cleaner (1.6.1) + debug_inspector (0.0.3) + devise (4.3.0) bcrypt (~> 3.0) orm_adapter (~> 0.1) - railties (>= 4.1.0, < 5.1) + railties (>= 4.1.0, < 5.2) responders warden (~> 1.2.3) - diff-lcs (1.2.5) + diff-lcs (1.3) docile (1.1.5) - domain_name (0.5.20160128) + domain_name (0.5.20170404) unf (>= 0.0.5, < 1.0.0) equalizer (0.0.11) erubis (2.7.0) - execjs (2.6.0) - fattr (2.2.2) - flay (2.7.0) + execjs (2.7.0) + fattr (2.3.0) + flay (2.9.0) erubis (~> 2.7.0) + path_expander (~> 1.0) ruby_parser (~> 3.0) sexp_processor (~> 4.0) - flog (4.3.2) + flog (4.6.1) + path_expander (~> 1.0) ruby_parser (~> 3.1, > 3.1.0) - sexp_processor (~> 4.4) - font-awesome-rails (4.6.3.1) - railties (>= 3.2, < 5.1) - gherkin (3.2.0) - globalid (0.3.6) - activesupport (>= 4.1.0) - haml (4.0.7) + sexp_processor (~> 4.8) + font-awesome-rails (4.7.0.2) + railties (>= 3.2, < 5.2) + gherkin (4.1.3) + globalid (0.4.0) + activesupport (>= 4.2.0) + haml (5.0.1) + temple (>= 0.8.0) tilt hirb (0.7.3) - http-cookie (1.0.2) + http-cookie (1.0.3) domain_name (~> 0.5) - i18n (0.7.0) + i18n (0.8.4) ice_nine (0.11.2) - jbuilder (2.4.1) - activesupport (>= 3.0.0, < 5.1) - multi_json (~> 1.2) - jquery-rails (4.1.0) - rails-dom-testing (~> 1.0) + jbuilder (2.7.0) + activesupport (>= 4.2.0) + multi_json (>= 1.2) + jquery-rails (4.3.1) + rails-dom-testing (>= 1, < 3) railties (>= 4.2.0) thor (>= 0.14, < 2.0) jquery-turbolinks (2.1.0) @@ -164,23 +166,32 @@ GEM turbolinks jquery-ui-rails (5.0.5) railties (>= 3.2.16) - json (1.8.3) - json_pure (1.8.3) - kaminari (0.17.0) - actionpack (>= 3.0.0) - activesupport (>= 3.0.0) - language_list (1.1.0) + json (1.8.6) + json_pure (2.1.0) + kaminari (1.0.1) + activesupport (>= 4.1.0) + kaminari-actionview (= 1.0.1) + kaminari-activerecord (= 1.0.1) + kaminari-core (= 1.0.1) + kaminari-actionview (1.0.1) + actionview + kaminari-core (= 1.0.1) + kaminari-activerecord (1.0.1) + activerecord + kaminari-core (= 1.0.1) + kaminari-core (1.0.1) + language_list (1.2.1) launchy (2.4.3) addressable (~> 2.3) loofah (2.0.3) nokogiri (>= 1.5.9) - mail (2.6.3) - mime-types (>= 1.16, < 3) - main (6.2.0) - arrayfields (>= 4.7.4) - chronic (>= 0.6.2) - fattr (>= 2.2.0) - map (>= 6.1.0) + mail (2.6.6) + mime-types (>= 1.16, < 4) + main (6.2.2) + arrayfields (~> 4.7, >= 4.7.4) + chronic (~> 0.6, >= 0.6.2) + fattr (~> 2.2, >= 2.2.0) + map (~> 6.1, >= 6.1.0) map (6.6.0) memoizable (0.4.2) thread_safe (~> 0.3, >= 0.3.1) @@ -199,16 +210,18 @@ GEM reek (>= 1.3.4, < 3.0) roodi (~> 3.1) metric_fu-Saikuro (1.1.3) - mime-types (2.99.1) + mime-types (3.1) + mime-types-data (~> 3.2015) + mime-types-data (3.2016.0521) mimemagic (0.3.0) - mini_portile2 (2.0.0) - minitest (5.8.4) - multi_json (1.11.2) + mini_portile2 (2.2.0) + minitest (5.10.2) + multi_json (1.12.1) multi_test (0.1.2) nested_form (0.3.2) netrc (0.11.0) - nokogiri (1.6.7.2) - mini_portile2 (~> 2.0.0.rc2) + nokogiri (1.8.0) + mini_portile2 (~> 2.2.0) orm_adapter (0.5.0) paperclip (4.3.7) activemodel (>= 3.2.0) @@ -216,15 +229,17 @@ GEM cocaine (~> 0.5.5) mime-types mimemagic (= 0.3.0) - parallel (1.6.1) - parser (2.3.0.6) + parallel (1.11.2) + parser (2.4.0.0) ast (~> 2.2) - pg (0.18.4) + path_expander (1.0.2) + pg (0.21.0) polyamorous (1.3.1) activerecord (>= 3.0) - power_assert (0.2.6) - procto (0.0.2) - rack (1.6.4) + power_assert (1.0.2) + procto (0.0.3) + public_suffix (2.0.5) + rack (1.6.8) rack-pjax (1.0.0) nokogiri (~> 1.5) rack (>= 1.1) @@ -244,9 +259,9 @@ GEM rails-assets-tether (1.1.1) rails-deprecated_sanitizer (1.0.3) activesupport (>= 4.2.0.alpha) - rails-dom-testing (1.0.7) + rails-dom-testing (1.0.8) activesupport (>= 4.2.0.beta, < 5.0) - nokogiri (~> 1.6.0) + nokogiri (~> 1.6) rails-deprecated_sanitizer (>= 1.0.1) rails-html-sanitizer (1.0.3) loofah (~> 2.0) @@ -255,133 +270,141 @@ GEM rails_12factor (0.0.3) rails_serve_static_assets rails_stdout_logging - rails_admin (1.0.0) + rails_admin (1.2.0) builder (~> 3.1) coffee-rails (~> 4.0) font-awesome-rails (>= 3.0, < 5) - haml (~> 4.0) + haml (>= 4.0, < 6) jquery-rails (>= 3.0, < 5) jquery-ui-rails (~> 5.0) - kaminari (~> 0.14) + kaminari (>= 0.14, < 2.0) nested_form (~> 0.3) rack-pjax (>= 0.7) rails (>= 4.0, < 6) remotipart (~> 1.3) sass-rails (>= 4.0, < 6) - rails_best_practices (1.15.7) + rails_best_practices (1.18.1) activesupport code_analyzer (>= 0.4.3) - colored erubis i18n json require_all ruby-progressbar rails_serve_static_assets (0.0.5) - rails_stdout_logging (0.0.4) + rails_stdout_logging (0.0.5) railties (4.2.5) actionpack (= 4.2.5) activesupport (= 4.2.5) rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) - rainbow (2.1.0) - rake (10.5.0) - ransack (1.8.2) + rainbow (2.2.2) + rake + rake (12.0.0) + ransack (1.8.3) actionpack (>= 3.0) activerecord (>= 3.0) activesupport (>= 3.0) i18n polyamorous (~> 1.3) - rdoc (4.2.2) - json (~> 1.4) + rdoc (4.3.0) redcard (1.1.0) reek (2.2.1) parser (~> 2.2) rainbow (~> 2.0) unparser (~> 0.2.2) remotipart (1.3.1) - require_all (1.3.3) - responders (2.3.0) - railties (>= 4.2.0, < 5.1) - rest-client (1.8.0) + require_all (1.4.0) + responders (2.4.0) + actionpack (>= 4.2.0, < 5.3) + railties (>= 4.2.0, < 5.3) + rest-client (2.0.2) http-cookie (>= 1.0.2, < 2.0) - mime-types (>= 1.16, < 3.0) - netrc (~> 0.7) + mime-types (>= 1.16, < 4.0) + netrc (~> 0.8) roodi (3.3.1) ruby_parser (~> 3.2, >= 3.2.2) - rspec-core (2.14.8) - rspec-expectations (2.14.5) - diff-lcs (>= 1.1.3, < 2.0) - rspec-mocks (2.14.6) - rspec-rails (2.14.0) + rspec-core (3.6.0) + rspec-support (~> 3.6.0) + rspec-expectations (3.6.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.6.0) + rspec-mocks (3.6.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.6.0) + rspec-rails (3.6.0) actionpack (>= 3.0) activesupport (>= 3.0) railties (>= 3.0) - rspec-core (~> 2.14.0) - rspec-expectations (~> 2.14.0) - rspec-mocks (~> 2.14.0) - ruby-progressbar (1.7.5) - ruby_parser (3.8.1) + rspec-core (~> 3.6.0) + rspec-expectations (~> 3.6.0) + rspec-mocks (~> 3.6.0) + rspec-support (~> 3.6.0) + rspec-support (3.6.0) + ruby-progressbar (1.8.1) + ruby_parser (3.9.0) sexp_processor (~> 4.1) - sass (3.4.21) - sass-rails (5.0.4) - railties (>= 4.0.0, < 5.0) + sass (3.4.24) + sass-rails (5.0.6) + railties (>= 4.0.0, < 6) sass (~> 3.1) sprockets (>= 2.8, < 4.0) sprockets-rails (>= 2.0, < 4.0) tilt (>= 1.1, < 3) - sdoc (0.4.1) + sdoc (0.4.2) json (~> 1.7, >= 1.7.7) rdoc (~> 4.0) - sexp_processor (4.7.0) - simple_form (3.3.1) - actionpack (> 4, < 5.1) - activemodel (> 4, < 5.1) - simplecov (0.11.2) + sexp_processor (4.9.0) + simple_form (3.5.0) + actionpack (> 4, < 5.2) + activemodel (> 4, < 5.2) + simplecov (0.14.1) docile (~> 1.1.0) - json (~> 1.8) + json (>= 1.8, < 3) simplecov-html (~> 0.10.0) - simplecov-html (0.10.0) - spring (1.6.3) - sprockets (3.5.2) + simplecov-html (0.10.1) + spring (2.0.2) + activesupport (>= 4.2) + sprockets (3.7.1) concurrent-ruby (~> 1.0) rack (> 1, < 3) - sprockets-rails (3.0.1) + sprockets-rails (3.2.0) actionpack (>= 4.0) activesupport (>= 4.0) sprockets (>= 3.0.0) - sqlite3 (1.3.11) - test-unit (3.1.5) + sqlite3 (1.3.13) + temple (0.8.0) + test-unit (3.2.5) power_assert - thor (0.19.1) - thread_safe (0.3.5) - tilt (2.0.2) - turbolinks (2.5.3) - coffee-rails - tzinfo (1.2.2) + thor (0.19.4) + thread_safe (0.3.6) + tilt (2.0.7) + turbolinks (5.0.1) + turbolinks-source (~> 5) + turbolinks-source (5.0.3) + tzinfo (1.2.3) thread_safe (~> 0.1) - uglifier (2.7.2) - execjs (>= 0.3.0) - json (>= 1.8.0) + uglifier (3.2.0) + execjs (>= 0.3.0, < 3) unf (0.1.4) unf_ext - unf_ext (0.0.7.2) - unparser (0.2.5) + unf_ext (0.0.7.4) + unparser (0.2.6) abstract_type (~> 0.0.7) adamantium (~> 0.2.0) concord (~> 0.1.5) - diff-lcs (~> 1.2.5) + diff-lcs (~> 1.3) equalizer (~> 0.0.9) - parser (~> 2.3.0) + parser (>= 2.3.1.2, < 2.5) procto (~> 0.0.2) - warden (1.2.6) + warden (1.2.7) rack (>= 1.0) web-console (2.3.0) activemodel (>= 4.0) binding_of_caller (>= 0.7.2) railties (>= 4.0) sprockets-rails (>= 2.0, < 4.0) - xpath (2.0.0) + xpath (2.1.0) nokogiri (~> 1.3) PLATFORMS @@ -429,4 +452,4 @@ DEPENDENCIES web-console (~> 2.0) BUNDLED WITH - 1.13.6 + 1.15.1 From 3bc575dbe72c1bbe3e021518fefae57c6b44de3a Mon Sep 17 00:00:00 2001 From: Claire Scheele Date: Mon, 3 Jul 2017 03:29:48 +0000 Subject: [PATCH 003/161] Updated README with new Heroku, Pivotal Tracker, Client info for Summer 2017. --- Procfile | 1 + README.md | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 Procfile diff --git a/Procfile b/Procfile new file mode 100644 index 0000000..8c99558 --- /dev/null +++ b/Procfile @@ -0,0 +1 @@ +web: bundle exec rackup config.ru -p $PORT diff --git a/README.md b/README.md index f4adf2c..9be7b4d 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,11 @@ CS 169 Fall 2016. This project is based on the work of the previous group from Spring 2016. -https://protected-escarpment-64354.herokuapp.com +https://morning-earth-50247.herokuapp.com/ -[Pivotal Tracker](https://www.pivotaltracker.com/projects/1887169/memberships?page=1) +[Pivotal Tracker](https://www.pivotaltracker.com/n/projects/2071107) -[Client Intro](https://youtu.be/FlaDXKL6-yk) +[Client Intro](https://www.youtube.com/watch?v=vTYoWUjP5xo&feature=youtu.be) [ScreenCast](https://youtu.be/71nNvWm0Itk) From d4e103f068b1563d79fb22e72a78e2f504956c4b Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 3 Jul 2017 03:52:15 +0000 Subject: [PATCH 004/161] hello it's me arman, i should show up as contributor --- Gemfile.lock | 293 +++++++++++++++++++++++++++------------------------ 1 file changed, 158 insertions(+), 135 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 5232588..a91283a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ GEM remote: https://rubygems.org/ specs: - ZenTest (4.11.0) + ZenTest (4.11.1) abstract_type (0.0.7) actionmailer (4.2.5) actionpack (= 4.2.5) @@ -41,28 +41,29 @@ GEM adamantium (0.2.0) ice_nine (~> 0.11.0) memoizable (~> 0.4.0) - addressable (2.4.0) - arel (6.0.3) + addressable (2.5.1) + public_suffix (~> 2.0, >= 2.0.2) + arel (6.0.4) arrayfields (4.9.2) - ast (2.2.0) - autoprefixer-rails (6.5.1) + ast (2.3.0) + autoprefixer-rails (7.1.1.2) execjs autotest-rails (4.2.1) ZenTest (~> 4.5) bcrypt (3.1.11) binding_of_caller (0.7.2) debug_inspector (>= 0.0.1) - bootstrap (4.0.0.alpha4) + bootstrap (4.0.0.alpha6) autoprefixer-rails (>= 6.0.3) sass (>= 3.4.19) bootstrap-datepicker-rails (1.6.4.1) railties (>= 3.0) - builder (3.2.2) - byebug (8.2.2) - cancancan (1.15.0) + builder (3.2.3) + byebug (9.0.6) + cancancan (1.17.0) cane (2.6.2) parallel - capybara (2.6.2) + capybara (2.14.4) addressable mime-types (>= 1.16) nokogiri (>= 1.3.3) @@ -78,11 +79,10 @@ GEM rest-client (>= 1.6.0) ruby_parser (~> 3.0) sexp_processor (~> 4.1) - climate_control (0.0.3) - activesupport (>= 3.0) + climate_control (0.2.0) cocaine (0.5.8) climate_control (>= 0.0.3, < 1.0) - code_analyzer (0.4.5) + code_analyzer (0.4.7) sexp_processor code_metrics (0.1.3) coderay (1.1.1) @@ -92,71 +92,73 @@ GEM coffee-script (2.4.1) coffee-script-source execjs - coffee-script-source (1.10.0) - colored (1.2) + coffee-script-source (1.12.2) concord (0.1.5) adamantium (~> 0.2.0) equalizer (~> 0.0.9) - concurrent-ruby (1.0.0) - cucumber (2.3.2) + concurrent-ruby (1.0.5) + cucumber (2.4.0) builder (>= 2.1.2) - cucumber-core (~> 1.4.0) + cucumber-core (~> 1.5.0) cucumber-wire (~> 0.0.1) diff-lcs (>= 1.1.3) - gherkin (~> 3.2.0) + gherkin (~> 4.0) multi_json (>= 1.7.5, < 2.0) multi_test (>= 0.1.2) - cucumber-core (1.4.0) - gherkin (~> 3.2.0) - cucumber-rails (1.4.3) + cucumber-core (1.5.0) + gherkin (~> 4.0) + cucumber-rails (1.5.0) capybara (>= 1.1.2, < 3) - cucumber (>= 1.3.8, < 3) - mime-types (>= 1.16, < 4) + cucumber (>= 1.3.8, < 4) + mime-types (>= 1.17, < 4) nokogiri (~> 1.5) - railties (>= 3, < 5) + railties (>= 4, < 5.2) cucumber-rails-training-wheels (1.0.0) cucumber-rails (>= 1.1.1) cucumber-wire (0.0.1) - database_cleaner (1.5.1) - debug_inspector (0.0.2) - devise (4.2.0) + database_cleaner (1.6.1) + debug_inspector (0.0.3) + devise (4.3.0) bcrypt (~> 3.0) orm_adapter (~> 0.1) - railties (>= 4.1.0, < 5.1) + railties (>= 4.1.0, < 5.2) responders warden (~> 1.2.3) - diff-lcs (1.2.5) + diff-lcs (1.3) docile (1.1.5) - domain_name (0.5.20160128) + domain_name (0.5.20170404) unf (>= 0.0.5, < 1.0.0) equalizer (0.0.11) erubis (2.7.0) - execjs (2.6.0) - fattr (2.2.2) - flay (2.7.0) + execjs (2.7.0) + fattr (2.3.0) + flay (2.9.0) erubis (~> 2.7.0) + path_expander (~> 1.0) ruby_parser (~> 3.0) sexp_processor (~> 4.0) - flog (4.3.2) + flog (4.6.1) + path_expander (~> 1.0) ruby_parser (~> 3.1, > 3.1.0) - sexp_processor (~> 4.4) - font-awesome-rails (4.6.3.1) - railties (>= 3.2, < 5.1) - gherkin (3.2.0) - globalid (0.3.6) - activesupport (>= 4.1.0) - haml (4.0.7) + sexp_processor (~> 4.8) + font-awesome-rails (4.7.0.2) + railties (>= 3.2, < 5.2) + gherkin (4.1.3) + globalid (0.4.0) + activesupport (>= 4.2.0) + haml (5.0.1) + temple (>= 0.8.0) tilt hirb (0.7.3) - http-cookie (1.0.2) + http-cookie (1.0.3) domain_name (~> 0.5) - i18n (0.7.0) + i18n (0.8.4) ice_nine (0.11.2) - jbuilder (2.4.1) - activesupport (>= 3.0.0, < 5.1) - multi_json (~> 1.2) - jquery-rails (4.1.0) - rails-dom-testing (~> 1.0) + jbuilder (2.7.0) + activesupport (>= 4.2.0) + multi_json (>= 1.2) + jquery-rails (4.3.1) + rails-dom-testing (>= 1, < 3) railties (>= 4.2.0) thor (>= 0.14, < 2.0) jquery-turbolinks (2.1.0) @@ -164,23 +166,32 @@ GEM turbolinks jquery-ui-rails (5.0.5) railties (>= 3.2.16) - json (1.8.3) - json_pure (1.8.3) - kaminari (0.17.0) - actionpack (>= 3.0.0) - activesupport (>= 3.0.0) - language_list (1.1.0) + json (1.8.6) + json_pure (2.1.0) + kaminari (1.0.1) + activesupport (>= 4.1.0) + kaminari-actionview (= 1.0.1) + kaminari-activerecord (= 1.0.1) + kaminari-core (= 1.0.1) + kaminari-actionview (1.0.1) + actionview + kaminari-core (= 1.0.1) + kaminari-activerecord (1.0.1) + activerecord + kaminari-core (= 1.0.1) + kaminari-core (1.0.1) + language_list (1.2.1) launchy (2.4.3) addressable (~> 2.3) loofah (2.0.3) nokogiri (>= 1.5.9) - mail (2.6.3) - mime-types (>= 1.16, < 3) - main (6.2.0) - arrayfields (>= 4.7.4) - chronic (>= 0.6.2) - fattr (>= 2.2.0) - map (>= 6.1.0) + mail (2.6.6) + mime-types (>= 1.16, < 4) + main (6.2.2) + arrayfields (~> 4.7, >= 4.7.4) + chronic (~> 0.6, >= 0.6.2) + fattr (~> 2.2, >= 2.2.0) + map (~> 6.1, >= 6.1.0) map (6.6.0) memoizable (0.4.2) thread_safe (~> 0.3, >= 0.3.1) @@ -199,16 +210,18 @@ GEM reek (>= 1.3.4, < 3.0) roodi (~> 3.1) metric_fu-Saikuro (1.1.3) - mime-types (2.99.1) + mime-types (3.1) + mime-types-data (~> 3.2015) + mime-types-data (3.2016.0521) mimemagic (0.3.0) - mini_portile2 (2.0.0) - minitest (5.8.4) - multi_json (1.11.2) + mini_portile2 (2.2.0) + minitest (5.10.2) + multi_json (1.12.1) multi_test (0.1.2) nested_form (0.3.2) netrc (0.11.0) - nokogiri (1.6.7.2) - mini_portile2 (~> 2.0.0.rc2) + nokogiri (1.8.0) + mini_portile2 (~> 2.2.0) orm_adapter (0.5.0) paperclip (4.3.7) activemodel (>= 3.2.0) @@ -216,15 +229,17 @@ GEM cocaine (~> 0.5.5) mime-types mimemagic (= 0.3.0) - parallel (1.6.1) - parser (2.3.0.6) + parallel (1.11.2) + parser (2.4.0.0) ast (~> 2.2) - pg (0.18.4) + path_expander (1.0.2) + pg (0.21.0) polyamorous (1.3.1) activerecord (>= 3.0) - power_assert (0.2.6) - procto (0.0.2) - rack (1.6.4) + power_assert (1.0.2) + procto (0.0.3) + public_suffix (2.0.5) + rack (1.6.8) rack-pjax (1.0.0) nokogiri (~> 1.5) rack (>= 1.1) @@ -244,9 +259,9 @@ GEM rails-assets-tether (1.1.1) rails-deprecated_sanitizer (1.0.3) activesupport (>= 4.2.0.alpha) - rails-dom-testing (1.0.7) + rails-dom-testing (1.0.8) activesupport (>= 4.2.0.beta, < 5.0) - nokogiri (~> 1.6.0) + nokogiri (~> 1.6) rails-deprecated_sanitizer (>= 1.0.1) rails-html-sanitizer (1.0.3) loofah (~> 2.0) @@ -255,133 +270,141 @@ GEM rails_12factor (0.0.3) rails_serve_static_assets rails_stdout_logging - rails_admin (1.0.0) + rails_admin (1.2.0) builder (~> 3.1) coffee-rails (~> 4.0) font-awesome-rails (>= 3.0, < 5) - haml (~> 4.0) + haml (>= 4.0, < 6) jquery-rails (>= 3.0, < 5) jquery-ui-rails (~> 5.0) - kaminari (~> 0.14) + kaminari (>= 0.14, < 2.0) nested_form (~> 0.3) rack-pjax (>= 0.7) rails (>= 4.0, < 6) remotipart (~> 1.3) sass-rails (>= 4.0, < 6) - rails_best_practices (1.15.7) + rails_best_practices (1.18.1) activesupport code_analyzer (>= 0.4.3) - colored erubis i18n json require_all ruby-progressbar rails_serve_static_assets (0.0.5) - rails_stdout_logging (0.0.4) + rails_stdout_logging (0.0.5) railties (4.2.5) actionpack (= 4.2.5) activesupport (= 4.2.5) rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) - rainbow (2.1.0) - rake (10.5.0) - ransack (1.8.2) + rainbow (2.2.2) + rake + rake (12.0.0) + ransack (1.8.3) actionpack (>= 3.0) activerecord (>= 3.0) activesupport (>= 3.0) i18n polyamorous (~> 1.3) - rdoc (4.2.2) - json (~> 1.4) + rdoc (4.3.0) redcard (1.1.0) reek (2.2.1) parser (~> 2.2) rainbow (~> 2.0) unparser (~> 0.2.2) remotipart (1.3.1) - require_all (1.3.3) - responders (2.3.0) - railties (>= 4.2.0, < 5.1) - rest-client (1.8.0) + require_all (1.4.0) + responders (2.4.0) + actionpack (>= 4.2.0, < 5.3) + railties (>= 4.2.0, < 5.3) + rest-client (2.0.2) http-cookie (>= 1.0.2, < 2.0) - mime-types (>= 1.16, < 3.0) - netrc (~> 0.7) + mime-types (>= 1.16, < 4.0) + netrc (~> 0.8) roodi (3.3.1) ruby_parser (~> 3.2, >= 3.2.2) - rspec-core (2.14.8) - rspec-expectations (2.14.5) - diff-lcs (>= 1.1.3, < 2.0) - rspec-mocks (2.14.6) - rspec-rails (2.14.0) + rspec-core (3.6.0) + rspec-support (~> 3.6.0) + rspec-expectations (3.6.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.6.0) + rspec-mocks (3.6.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.6.0) + rspec-rails (3.6.0) actionpack (>= 3.0) activesupport (>= 3.0) railties (>= 3.0) - rspec-core (~> 2.14.0) - rspec-expectations (~> 2.14.0) - rspec-mocks (~> 2.14.0) - ruby-progressbar (1.7.5) - ruby_parser (3.8.1) + rspec-core (~> 3.6.0) + rspec-expectations (~> 3.6.0) + rspec-mocks (~> 3.6.0) + rspec-support (~> 3.6.0) + rspec-support (3.6.0) + ruby-progressbar (1.8.1) + ruby_parser (3.9.0) sexp_processor (~> 4.1) - sass (3.4.21) - sass-rails (5.0.4) - railties (>= 4.0.0, < 5.0) + sass (3.4.24) + sass-rails (5.0.6) + railties (>= 4.0.0, < 6) sass (~> 3.1) sprockets (>= 2.8, < 4.0) sprockets-rails (>= 2.0, < 4.0) tilt (>= 1.1, < 3) - sdoc (0.4.1) + sdoc (0.4.2) json (~> 1.7, >= 1.7.7) rdoc (~> 4.0) - sexp_processor (4.7.0) - simple_form (3.3.1) - actionpack (> 4, < 5.1) - activemodel (> 4, < 5.1) - simplecov (0.11.2) + sexp_processor (4.9.0) + simple_form (3.5.0) + actionpack (> 4, < 5.2) + activemodel (> 4, < 5.2) + simplecov (0.14.1) docile (~> 1.1.0) - json (~> 1.8) + json (>= 1.8, < 3) simplecov-html (~> 0.10.0) - simplecov-html (0.10.0) - spring (1.6.3) - sprockets (3.5.2) + simplecov-html (0.10.1) + spring (2.0.2) + activesupport (>= 4.2) + sprockets (3.7.1) concurrent-ruby (~> 1.0) rack (> 1, < 3) - sprockets-rails (3.0.1) + sprockets-rails (3.2.0) actionpack (>= 4.0) activesupport (>= 4.0) sprockets (>= 3.0.0) - sqlite3 (1.3.11) - test-unit (3.1.5) + sqlite3 (1.3.13) + temple (0.8.0) + test-unit (3.2.5) power_assert - thor (0.19.1) - thread_safe (0.3.5) - tilt (2.0.2) - turbolinks (2.5.3) - coffee-rails - tzinfo (1.2.2) + thor (0.19.4) + thread_safe (0.3.6) + tilt (2.0.7) + turbolinks (5.0.1) + turbolinks-source (~> 5) + turbolinks-source (5.0.3) + tzinfo (1.2.3) thread_safe (~> 0.1) - uglifier (2.7.2) - execjs (>= 0.3.0) - json (>= 1.8.0) + uglifier (3.2.0) + execjs (>= 0.3.0, < 3) unf (0.1.4) unf_ext - unf_ext (0.0.7.2) - unparser (0.2.5) + unf_ext (0.0.7.4) + unparser (0.2.6) abstract_type (~> 0.0.7) adamantium (~> 0.2.0) concord (~> 0.1.5) - diff-lcs (~> 1.2.5) + diff-lcs (~> 1.3) equalizer (~> 0.0.9) - parser (~> 2.3.0) + parser (>= 2.3.1.2, < 2.5) procto (~> 0.0.2) - warden (1.2.6) + warden (1.2.7) rack (>= 1.0) web-console (2.3.0) activemodel (>= 4.0) binding_of_caller (>= 0.7.2) railties (>= 4.0) sprockets-rails (>= 2.0, < 4.0) - xpath (2.0.0) + xpath (2.1.0) nokogiri (~> 1.3) PLATFORMS @@ -429,4 +452,4 @@ DEPENDENCIES web-console (~> 2.0) BUNDLED WITH - 1.13.6 + 1.15.1 From 873e0cdb7449b00c29143babcda87793c794a1dc Mon Sep 17 00:00:00 2001 From: Claire Scheele Date: Mon, 3 Jul 2017 04:04:36 +0000 Subject: [PATCH 005/161] Added 5/6 team member's screencast links to iter0.md in iterations directory. --- MIT License => LICENSE | 0 README.md | 6 +++--- iterations/iter0.md | 8 ++++++-- 3 files changed, 9 insertions(+), 5 deletions(-) rename MIT License => LICENSE (100%) diff --git a/MIT License b/LICENSE similarity index 100% rename from MIT License rename to LICENSE diff --git a/README.md b/README.md index 9be7b4d..224ae7d 100644 --- a/README.md +++ b/README.md @@ -3,15 +3,15 @@ # Engineer Without Borders' Volunteer System -CS 169 Fall 2016. -This project is based on the work of the previous group from Spring 2016. +CS 169 Summer 2017. +This project is based on the work of the previous groups from Spring 2016 and Fall 2016. + https://morning-earth-50247.herokuapp.com/ [Pivotal Tracker](https://www.pivotaltracker.com/n/projects/2071107) [Client Intro](https://www.youtube.com/watch?v=vTYoWUjP5xo&feature=youtu.be) -[ScreenCast](https://youtu.be/71nNvWm0Itk) Project Summary: diff --git a/iterations/iter0.md b/iterations/iter0.md index f4ecf62..9f90e72 100644 --- a/iterations/iter0.md +++ b/iterations/iter0.md @@ -1,3 +1,7 @@ --[Interview with Jennifer](https://www.youtube.com/watch?v=FlaDXKL6-yk) +-[Interview with Adolfo](https://www.youtube.com/watch?v=vTYoWUjP5xo&feature=youtu.be) --[Screencast](https://www.youtube.com/watch?v=71nNvWm0Itk) +-[Screencasts] +https://www.youtube.com/watch?v=l6XsC3JbtRI&feature=youtu.be -- Claire Scheele +https://www.youtube.com/watch?v=3fm2pmslVcE&feature=youtu.be -- Toby Brachmann +https://www.youtube.com/watch?v=9rYq7RD7-cQ&feature=youtu.be -- Bill Yeo +https://www.youtube.com/watch?v=iJtlG43GDDQ&feature=youtu.be -- Arman Jaffer \ No newline at end of file From b02b8917a821ae6c40def1e955a0c41ce598c449 Mon Sep 17 00:00:00 2001 From: Claire Scheele Date: Mon, 3 Jul 2017 04:06:02 +0000 Subject: [PATCH 006/161] Added 5/6 team member's screencast links to iter0.md in iterations directory. --- iterations/iter0.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/iterations/iter0.md b/iterations/iter0.md index 9f90e72..041f1a7 100644 --- a/iterations/iter0.md +++ b/iterations/iter0.md @@ -4,4 +4,5 @@ https://www.youtube.com/watch?v=l6XsC3JbtRI&feature=youtu.be -- Claire Scheele https://www.youtube.com/watch?v=3fm2pmslVcE&feature=youtu.be -- Toby Brachmann https://www.youtube.com/watch?v=9rYq7RD7-cQ&feature=youtu.be -- Bill Yeo -https://www.youtube.com/watch?v=iJtlG43GDDQ&feature=youtu.be -- Arman Jaffer \ No newline at end of file +https://www.youtube.com/watch?v=iJtlG43GDDQ&feature=youtu.be -- Arman Jaffer +https://www.youtube.com/watch?v=1iXo2UrphsA&feature=youtu.be -- Jerry Wu \ No newline at end of file From dea77290d37284f99728dcfc7643a7410c08e929 Mon Sep 17 00:00:00 2001 From: Claire Scheele Date: Mon, 3 Jul 2017 04:46:18 +0000 Subject: [PATCH 007/161] Added 6/6 team member's screencast links to iter0.md in iterations directory. Added Code Climate coverage badge to README. --- README.md | 4 ++-- iterations/iter0.md | 17 +++++++++++------ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 224ae7d..f4625cf 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ [![Code Climate](https://codeclimate.com/github/mark-craig/engineerswithoutborders/badges/gpa.svg)](https://codeclimate.com/github/mark-craig/engineerswithoutborders) +[![Code Climate](https://codeclimate.com/github/mark-craig/engineerswithoutborders/badges/coverage.svg)](https://codeclimate.com/github/mark-craig/engineerswithoutborders) [![Build Status](https://travis-ci.org/mark-craig/engineerswithoutborders.svg?branch=master)](https://travis-ci.org/mark-craig/engineerswithoutborders) # Engineer Without Borders' Volunteer System @@ -6,13 +7,12 @@ CS 169 Summer 2017. This project is based on the work of the previous groups from Spring 2016 and Fall 2016. -https://morning-earth-50247.herokuapp.com/ +[Heroku App](https://morning-earth-50247.herokuapp.com/) [Pivotal Tracker](https://www.pivotaltracker.com/n/projects/2071107) [Client Intro](https://www.youtube.com/watch?v=vTYoWUjP5xo&feature=youtu.be) - Project Summary: UC Berkeley students partner with Engineers Without Borders (San Francisco Professional Chapter) in the development of a web application to help manage the vast network of volunteer and funding resources amongst the various international community-driven development programs. www.web-sfp.org diff --git a/iterations/iter0.md b/iterations/iter0.md index 041f1a7..e61471d 100644 --- a/iterations/iter0.md +++ b/iterations/iter0.md @@ -1,8 +1,13 @@ -[Interview with Adolfo](https://www.youtube.com/watch?v=vTYoWUjP5xo&feature=youtu.be) --[Screencasts] -https://www.youtube.com/watch?v=l6XsC3JbtRI&feature=youtu.be -- Claire Scheele -https://www.youtube.com/watch?v=3fm2pmslVcE&feature=youtu.be -- Toby Brachmann -https://www.youtube.com/watch?v=9rYq7RD7-cQ&feature=youtu.be -- Bill Yeo -https://www.youtube.com/watch?v=iJtlG43GDDQ&feature=youtu.be -- Arman Jaffer -https://www.youtube.com/watch?v=1iXo2UrphsA&feature=youtu.be -- Jerry Wu \ No newline at end of file +-[Arman Jaffer's Screencast](https://www.youtube.com/watch?v=iJtlG43GDDQ&feature=youtu.be) + +-[Bill Yeo's Screencast](https://www.youtube.com/watch?v=9rYq7RD7-cQ&feature=youtu.be) + +-[Claire Scheele's Screencast](https://www.youtube.com/watch?v=l6XsC3JbtRI&feature=youtu.be) + +-[Jerry Wu's Screencast](https://www.youtube.com/watch?v=1iXo2UrphsA&feature=youtu.be) + +-[Sasank Chaganty's Screencast](https://www.youtube.com/watch?v=13epkw_iPMc&feature=youtu.be) + +-[Toby Brachmann's Screencast](https://www.youtube.com/watch?v=3fm2pmslVcE&feature=youtu.be) \ No newline at end of file From 22cfda554aab4d3eadf597e3390322f1053ccab6 Mon Sep 17 00:00:00 2001 From: Claire Scheele Date: Mon, 3 Jul 2017 04:46:40 +0000 Subject: [PATCH 008/161] Added 6/6 team member's screencast links to iter0.md in iterations directory. Added Code Climate coverage badge to README. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f4625cf..a2ed76c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [![Code Climate](https://codeclimate.com/github/mark-craig/engineerswithoutborders/badges/gpa.svg)](https://codeclimate.com/github/mark-craig/engineerswithoutborders) -[![Code Climate](https://codeclimate.com/github/mark-craig/engineerswithoutborders/badges/coverage.svg)](https://codeclimate.com/github/mark-craig/engineerswithoutborders) +[![Code Climate](https://codeclimate.com/github/mark-craig/engineerswithoutborders/badges/cove.svg)](https://codeclimate.com/github/mark-craig/engineerswithoutborders) [![Build Status](https://travis-ci.org/mark-craig/engineerswithoutborders.svg?branch=master)](https://travis-ci.org/mark-craig/engineerswithoutborders) # Engineer Without Borders' Volunteer System From ab59e9be6dfc27b766570a9726739e4441a2403f Mon Sep 17 00:00:00 2001 From: Claire Scheele Date: Mon, 3 Jul 2017 04:51:33 +0000 Subject: [PATCH 009/161] Added 6/6 team member's screencast links to iter0.md in iterations directory. Added Code Climate coverage badge to README. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a2ed76c..f4625cf 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [![Code Climate](https://codeclimate.com/github/mark-craig/engineerswithoutborders/badges/gpa.svg)](https://codeclimate.com/github/mark-craig/engineerswithoutborders) -[![Code Climate](https://codeclimate.com/github/mark-craig/engineerswithoutborders/badges/cove.svg)](https://codeclimate.com/github/mark-craig/engineerswithoutborders) +[![Code Climate](https://codeclimate.com/github/mark-craig/engineerswithoutborders/badges/coverage.svg)](https://codeclimate.com/github/mark-craig/engineerswithoutborders) [![Build Status](https://travis-ci.org/mark-craig/engineerswithoutborders.svg?branch=master)](https://travis-ci.org/mark-craig/engineerswithoutborders) # Engineer Without Borders' Volunteer System From d741deda29b5dc42162a7df33d446b10bccbac55 Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Sun, 2 Jul 2017 22:50:04 -0700 Subject: [PATCH 010/161] Updated Gemfile --- Gemfile | 1 + Gemfile.lock | 294 ++++++++++++++++++++++++++++----------------------- 2 files changed, 160 insertions(+), 135 deletions(-) diff --git a/Gemfile b/Gemfile index 5dd2f6f..50d22c7 100644 --- a/Gemfile +++ b/Gemfile @@ -31,6 +31,7 @@ gem 'devise' gem 'rails-assets-tether', '>= 1.1.0' gem 'kaminari' gem 'rails_admin', '~> 1.0' +gem 'json' group :development, :test do gem 'sqlite3' diff --git a/Gemfile.lock b/Gemfile.lock index 5232588..8847a1b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ GEM remote: https://rubygems.org/ specs: - ZenTest (4.11.0) + ZenTest (4.11.1) abstract_type (0.0.7) actionmailer (4.2.5) actionpack (= 4.2.5) @@ -41,28 +41,29 @@ GEM adamantium (0.2.0) ice_nine (~> 0.11.0) memoizable (~> 0.4.0) - addressable (2.4.0) - arel (6.0.3) + addressable (2.5.1) + public_suffix (~> 2.0, >= 2.0.2) + arel (6.0.4) arrayfields (4.9.2) - ast (2.2.0) - autoprefixer-rails (6.5.1) + ast (2.3.0) + autoprefixer-rails (7.1.1.2) execjs autotest-rails (4.2.1) ZenTest (~> 4.5) bcrypt (3.1.11) binding_of_caller (0.7.2) debug_inspector (>= 0.0.1) - bootstrap (4.0.0.alpha4) + bootstrap (4.0.0.alpha6) autoprefixer-rails (>= 6.0.3) sass (>= 3.4.19) bootstrap-datepicker-rails (1.6.4.1) railties (>= 3.0) - builder (3.2.2) - byebug (8.2.2) - cancancan (1.15.0) + builder (3.2.3) + byebug (9.0.6) + cancancan (1.17.0) cane (2.6.2) parallel - capybara (2.6.2) + capybara (2.14.4) addressable mime-types (>= 1.16) nokogiri (>= 1.3.3) @@ -78,11 +79,10 @@ GEM rest-client (>= 1.6.0) ruby_parser (~> 3.0) sexp_processor (~> 4.1) - climate_control (0.0.3) - activesupport (>= 3.0) + climate_control (0.2.0) cocaine (0.5.8) climate_control (>= 0.0.3, < 1.0) - code_analyzer (0.4.5) + code_analyzer (0.4.7) sexp_processor code_metrics (0.1.3) coderay (1.1.1) @@ -92,71 +92,73 @@ GEM coffee-script (2.4.1) coffee-script-source execjs - coffee-script-source (1.10.0) - colored (1.2) + coffee-script-source (1.12.2) concord (0.1.5) adamantium (~> 0.2.0) equalizer (~> 0.0.9) - concurrent-ruby (1.0.0) - cucumber (2.3.2) + concurrent-ruby (1.0.5) + cucumber (2.4.0) builder (>= 2.1.2) - cucumber-core (~> 1.4.0) + cucumber-core (~> 1.5.0) cucumber-wire (~> 0.0.1) diff-lcs (>= 1.1.3) - gherkin (~> 3.2.0) + gherkin (~> 4.0) multi_json (>= 1.7.5, < 2.0) multi_test (>= 0.1.2) - cucumber-core (1.4.0) - gherkin (~> 3.2.0) - cucumber-rails (1.4.3) + cucumber-core (1.5.0) + gherkin (~> 4.0) + cucumber-rails (1.5.0) capybara (>= 1.1.2, < 3) - cucumber (>= 1.3.8, < 3) - mime-types (>= 1.16, < 4) + cucumber (>= 1.3.8, < 4) + mime-types (>= 1.17, < 4) nokogiri (~> 1.5) - railties (>= 3, < 5) + railties (>= 4, < 5.2) cucumber-rails-training-wheels (1.0.0) cucumber-rails (>= 1.1.1) cucumber-wire (0.0.1) - database_cleaner (1.5.1) - debug_inspector (0.0.2) - devise (4.2.0) + database_cleaner (1.6.1) + debug_inspector (0.0.3) + devise (4.3.0) bcrypt (~> 3.0) orm_adapter (~> 0.1) - railties (>= 4.1.0, < 5.1) + railties (>= 4.1.0, < 5.2) responders warden (~> 1.2.3) - diff-lcs (1.2.5) + diff-lcs (1.3) docile (1.1.5) - domain_name (0.5.20160128) + domain_name (0.5.20170404) unf (>= 0.0.5, < 1.0.0) equalizer (0.0.11) erubis (2.7.0) - execjs (2.6.0) - fattr (2.2.2) - flay (2.7.0) + execjs (2.7.0) + fattr (2.3.0) + flay (2.9.0) erubis (~> 2.7.0) + path_expander (~> 1.0) ruby_parser (~> 3.0) sexp_processor (~> 4.0) - flog (4.3.2) + flog (4.6.1) + path_expander (~> 1.0) ruby_parser (~> 3.1, > 3.1.0) - sexp_processor (~> 4.4) - font-awesome-rails (4.6.3.1) - railties (>= 3.2, < 5.1) - gherkin (3.2.0) - globalid (0.3.6) - activesupport (>= 4.1.0) - haml (4.0.7) + sexp_processor (~> 4.8) + font-awesome-rails (4.7.0.2) + railties (>= 3.2, < 5.2) + gherkin (4.1.3) + globalid (0.4.0) + activesupport (>= 4.2.0) + haml (5.0.1) + temple (>= 0.8.0) tilt hirb (0.7.3) - http-cookie (1.0.2) + http-cookie (1.0.3) domain_name (~> 0.5) - i18n (0.7.0) + i18n (0.8.4) ice_nine (0.11.2) - jbuilder (2.4.1) - activesupport (>= 3.0.0, < 5.1) - multi_json (~> 1.2) - jquery-rails (4.1.0) - rails-dom-testing (~> 1.0) + jbuilder (2.7.0) + activesupport (>= 4.2.0) + multi_json (>= 1.2) + jquery-rails (4.3.1) + rails-dom-testing (>= 1, < 3) railties (>= 4.2.0) thor (>= 0.14, < 2.0) jquery-turbolinks (2.1.0) @@ -164,23 +166,32 @@ GEM turbolinks jquery-ui-rails (5.0.5) railties (>= 3.2.16) - json (1.8.3) - json_pure (1.8.3) - kaminari (0.17.0) - actionpack (>= 3.0.0) - activesupport (>= 3.0.0) - language_list (1.1.0) + json (1.8.6) + json_pure (2.1.0) + kaminari (1.0.1) + activesupport (>= 4.1.0) + kaminari-actionview (= 1.0.1) + kaminari-activerecord (= 1.0.1) + kaminari-core (= 1.0.1) + kaminari-actionview (1.0.1) + actionview + kaminari-core (= 1.0.1) + kaminari-activerecord (1.0.1) + activerecord + kaminari-core (= 1.0.1) + kaminari-core (1.0.1) + language_list (1.2.1) launchy (2.4.3) addressable (~> 2.3) loofah (2.0.3) nokogiri (>= 1.5.9) - mail (2.6.3) - mime-types (>= 1.16, < 3) - main (6.2.0) - arrayfields (>= 4.7.4) - chronic (>= 0.6.2) - fattr (>= 2.2.0) - map (>= 6.1.0) + mail (2.6.6) + mime-types (>= 1.16, < 4) + main (6.2.2) + arrayfields (~> 4.7, >= 4.7.4) + chronic (~> 0.6, >= 0.6.2) + fattr (~> 2.2, >= 2.2.0) + map (~> 6.1, >= 6.1.0) map (6.6.0) memoizable (0.4.2) thread_safe (~> 0.3, >= 0.3.1) @@ -199,16 +210,18 @@ GEM reek (>= 1.3.4, < 3.0) roodi (~> 3.1) metric_fu-Saikuro (1.1.3) - mime-types (2.99.1) + mime-types (3.1) + mime-types-data (~> 3.2015) + mime-types-data (3.2016.0521) mimemagic (0.3.0) - mini_portile2 (2.0.0) - minitest (5.8.4) - multi_json (1.11.2) + mini_portile2 (2.2.0) + minitest (5.10.2) + multi_json (1.12.1) multi_test (0.1.2) nested_form (0.3.2) netrc (0.11.0) - nokogiri (1.6.7.2) - mini_portile2 (~> 2.0.0.rc2) + nokogiri (1.8.0) + mini_portile2 (~> 2.2.0) orm_adapter (0.5.0) paperclip (4.3.7) activemodel (>= 3.2.0) @@ -216,15 +229,17 @@ GEM cocaine (~> 0.5.5) mime-types mimemagic (= 0.3.0) - parallel (1.6.1) - parser (2.3.0.6) + parallel (1.11.2) + parser (2.4.0.0) ast (~> 2.2) - pg (0.18.4) + path_expander (1.0.2) + pg (0.21.0) polyamorous (1.3.1) activerecord (>= 3.0) - power_assert (0.2.6) - procto (0.0.2) - rack (1.6.4) + power_assert (1.0.2) + procto (0.0.3) + public_suffix (2.0.5) + rack (1.6.8) rack-pjax (1.0.0) nokogiri (~> 1.5) rack (>= 1.1) @@ -244,9 +259,9 @@ GEM rails-assets-tether (1.1.1) rails-deprecated_sanitizer (1.0.3) activesupport (>= 4.2.0.alpha) - rails-dom-testing (1.0.7) + rails-dom-testing (1.0.8) activesupport (>= 4.2.0.beta, < 5.0) - nokogiri (~> 1.6.0) + nokogiri (~> 1.6) rails-deprecated_sanitizer (>= 1.0.1) rails-html-sanitizer (1.0.3) loofah (~> 2.0) @@ -255,133 +270,141 @@ GEM rails_12factor (0.0.3) rails_serve_static_assets rails_stdout_logging - rails_admin (1.0.0) + rails_admin (1.2.0) builder (~> 3.1) coffee-rails (~> 4.0) font-awesome-rails (>= 3.0, < 5) - haml (~> 4.0) + haml (>= 4.0, < 6) jquery-rails (>= 3.0, < 5) jquery-ui-rails (~> 5.0) - kaminari (~> 0.14) + kaminari (>= 0.14, < 2.0) nested_form (~> 0.3) rack-pjax (>= 0.7) rails (>= 4.0, < 6) remotipart (~> 1.3) sass-rails (>= 4.0, < 6) - rails_best_practices (1.15.7) + rails_best_practices (1.18.1) activesupport code_analyzer (>= 0.4.3) - colored erubis i18n json require_all ruby-progressbar rails_serve_static_assets (0.0.5) - rails_stdout_logging (0.0.4) + rails_stdout_logging (0.0.5) railties (4.2.5) actionpack (= 4.2.5) activesupport (= 4.2.5) rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) - rainbow (2.1.0) - rake (10.5.0) - ransack (1.8.2) + rainbow (2.2.2) + rake + rake (12.0.0) + ransack (1.8.3) actionpack (>= 3.0) activerecord (>= 3.0) activesupport (>= 3.0) i18n polyamorous (~> 1.3) - rdoc (4.2.2) - json (~> 1.4) + rdoc (4.3.0) redcard (1.1.0) reek (2.2.1) parser (~> 2.2) rainbow (~> 2.0) unparser (~> 0.2.2) remotipart (1.3.1) - require_all (1.3.3) - responders (2.3.0) - railties (>= 4.2.0, < 5.1) - rest-client (1.8.0) + require_all (1.4.0) + responders (2.4.0) + actionpack (>= 4.2.0, < 5.3) + railties (>= 4.2.0, < 5.3) + rest-client (2.0.2) http-cookie (>= 1.0.2, < 2.0) - mime-types (>= 1.16, < 3.0) - netrc (~> 0.7) + mime-types (>= 1.16, < 4.0) + netrc (~> 0.8) roodi (3.3.1) ruby_parser (~> 3.2, >= 3.2.2) - rspec-core (2.14.8) - rspec-expectations (2.14.5) - diff-lcs (>= 1.1.3, < 2.0) - rspec-mocks (2.14.6) - rspec-rails (2.14.0) + rspec-core (3.6.0) + rspec-support (~> 3.6.0) + rspec-expectations (3.6.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.6.0) + rspec-mocks (3.6.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.6.0) + rspec-rails (3.6.0) actionpack (>= 3.0) activesupport (>= 3.0) railties (>= 3.0) - rspec-core (~> 2.14.0) - rspec-expectations (~> 2.14.0) - rspec-mocks (~> 2.14.0) - ruby-progressbar (1.7.5) - ruby_parser (3.8.1) + rspec-core (~> 3.6.0) + rspec-expectations (~> 3.6.0) + rspec-mocks (~> 3.6.0) + rspec-support (~> 3.6.0) + rspec-support (3.6.0) + ruby-progressbar (1.8.1) + ruby_parser (3.9.0) sexp_processor (~> 4.1) - sass (3.4.21) - sass-rails (5.0.4) - railties (>= 4.0.0, < 5.0) + sass (3.4.24) + sass-rails (5.0.6) + railties (>= 4.0.0, < 6) sass (~> 3.1) sprockets (>= 2.8, < 4.0) sprockets-rails (>= 2.0, < 4.0) tilt (>= 1.1, < 3) - sdoc (0.4.1) + sdoc (0.4.2) json (~> 1.7, >= 1.7.7) rdoc (~> 4.0) - sexp_processor (4.7.0) - simple_form (3.3.1) - actionpack (> 4, < 5.1) - activemodel (> 4, < 5.1) - simplecov (0.11.2) + sexp_processor (4.9.0) + simple_form (3.5.0) + actionpack (> 4, < 5.2) + activemodel (> 4, < 5.2) + simplecov (0.14.1) docile (~> 1.1.0) - json (~> 1.8) + json (>= 1.8, < 3) simplecov-html (~> 0.10.0) - simplecov-html (0.10.0) - spring (1.6.3) - sprockets (3.5.2) + simplecov-html (0.10.1) + spring (2.0.2) + activesupport (>= 4.2) + sprockets (3.7.1) concurrent-ruby (~> 1.0) rack (> 1, < 3) - sprockets-rails (3.0.1) + sprockets-rails (3.2.0) actionpack (>= 4.0) activesupport (>= 4.0) sprockets (>= 3.0.0) - sqlite3 (1.3.11) - test-unit (3.1.5) + sqlite3 (1.3.13) + temple (0.8.0) + test-unit (3.2.5) power_assert - thor (0.19.1) - thread_safe (0.3.5) - tilt (2.0.2) - turbolinks (2.5.3) - coffee-rails - tzinfo (1.2.2) + thor (0.19.4) + thread_safe (0.3.6) + tilt (2.0.7) + turbolinks (5.0.1) + turbolinks-source (~> 5) + turbolinks-source (5.0.3) + tzinfo (1.2.3) thread_safe (~> 0.1) - uglifier (2.7.2) - execjs (>= 0.3.0) - json (>= 1.8.0) + uglifier (3.2.0) + execjs (>= 0.3.0, < 3) unf (0.1.4) unf_ext - unf_ext (0.0.7.2) - unparser (0.2.5) + unf_ext (0.0.7.4) + unparser (0.2.6) abstract_type (~> 0.0.7) adamantium (~> 0.2.0) concord (~> 0.1.5) - diff-lcs (~> 1.2.5) + diff-lcs (~> 1.3) equalizer (~> 0.0.9) - parser (~> 2.3.0) + parser (>= 2.3.1.2, < 2.5) procto (~> 0.0.2) - warden (1.2.6) + warden (1.2.7) rack (>= 1.0) web-console (2.3.0) activemodel (>= 4.0) binding_of_caller (>= 0.7.2) railties (>= 4.0) sprockets-rails (>= 2.0, < 4.0) - xpath (2.0.0) + xpath (2.1.0) nokogiri (~> 1.3) PLATFORMS @@ -404,6 +427,7 @@ DEPENDENCIES jquery-rails jquery-turbolinks jquery-ui-rails + json kaminari language_list (~> 1.1) metric_fu @@ -429,4 +453,4 @@ DEPENDENCIES web-console (~> 2.0) BUNDLED WITH - 1.13.6 + 1.15.1 From b6d230bb27714863d064cda9466a53b240668494 Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Sun, 2 Jul 2017 23:00:20 -0700 Subject: [PATCH 011/161] Added travis.yml --- .travis.yml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index a9c9912..0ad1164 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,10 +1,5 @@ language: ruby rvm: - - 2.2.2 # may need to update this - -before_script: - - psql -c "CREATE USER sfewb WITH PASSWORD 'cs169';" -U postgres - - bundle exec rake db:migrate RAILS_ENV=test -notifications: - email: false - + - 2.2 + - jruby + - rbx-2 From 18578168df612cd5c7e1b3f24cd1d4e29ae80d24 Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Sun, 2 Jul 2017 23:03:27 -0700 Subject: [PATCH 012/161] Update travis.yml --- .travis.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0ad1164..0e793f8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,3 @@ language: ruby rvm: - - 2.2 - - jruby - - rbx-2 + - 2.2 \ No newline at end of file From 37111da3dd60d6db7c5c82b6880c2e832224826b Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Sun, 2 Jul 2017 23:13:53 -0700 Subject: [PATCH 013/161] tried to update test coverage --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f4625cf..f61e8e6 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [![Code Climate](https://codeclimate.com/github/mark-craig/engineerswithoutborders/badges/gpa.svg)](https://codeclimate.com/github/mark-craig/engineerswithoutborders) -[![Code Climate](https://codeclimate.com/github/mark-craig/engineerswithoutborders/badges/coverage.svg)](https://codeclimate.com/github/mark-craig/engineerswithoutborders) +[![Test Coverage](https://codeclimate.com/github/codeclimate/codeclimate/badges/coverage.svg)](https://codeclimate.com/github/codeclimate/codeclimate/coverage) [![Build Status](https://travis-ci.org/mark-craig/engineerswithoutborders.svg?branch=master)](https://travis-ci.org/mark-craig/engineerswithoutborders) # Engineer Without Borders' Volunteer System From 325aa984d68af844e45fa342d715188dcd71e474 Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Sun, 2 Jul 2017 23:18:37 -0700 Subject: [PATCH 014/161] Updated travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 0e793f8..aa79f3d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,3 @@ language: ruby rvm: - - 2.2 \ No newline at end of file + - 2.4.0 \ No newline at end of file From dcca6a9cdbfaca708359d04f067479a46102dca9 Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Sun, 2 Jul 2017 23:36:04 -0700 Subject: [PATCH 015/161] Trying 2.2.2 again --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index aa79f3d..e2c5f81 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,3 @@ language: ruby rvm: - - 2.4.0 \ No newline at end of file + - 2.2.2 \ No newline at end of file From c3fb1a60f8c3c8db078a6ec48b7bdd587dfd3eb2 Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Mon, 3 Jul 2017 13:51:26 -0700 Subject: [PATCH 016/161] Updated Gemfile --- Gemfile | 26 ++++++++++++------------ Gemfile.lock | 56 ++++++++++++++++++++++++++-------------------------- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/Gemfile b/Gemfile index 50d22c7..2c22927 100644 --- a/Gemfile +++ b/Gemfile @@ -1,36 +1,36 @@ source 'https://rubygems.org' -#ruby '2.2.2' +ruby '2.2.2' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '4.2.5' gem 'sprockets-rails', :require => 'sprockets/railtie' # Boostrap for styling -gem 'bootstrap', '~> 4.0.0.alpha4' +gem 'bootstrap' # Use SCSS for stylesheets -gem 'sass-rails', '~> 5.0' +gem 'sass-rails' # Use Uglifier as compressor for JavaScript assets -gem 'uglifier', '>= 1.3.0' +gem 'uglifier' # Use CoffeeScript for .coffee assets and views -gem 'coffee-rails', '~> 4.1.0' +gem 'coffee-rails' gem 'jquery-rails' gem 'jquery-ui-rails' gem 'bootstrap-datepicker-rails' -gem "paperclip", "~>4.2" +gem "paperclip" gem 'rails4-autocomplete' -gem 'language_list', '~> 1.1' +gem 'language_list' gem 'turbolinks' gem 'ransack' -gem 'jbuilder', '~> 2.0' +gem 'jbuilder' gem 'sdoc', '~> 0.4.0', group: :doc gem 'jquery-turbolinks' -gem 'bcrypt', '~> 3.1.7' -gem 'cancancan', '~> 1.10' +gem 'bcrypt' +gem 'cancancan' gem 'simple_form' gem 'devise' -gem 'rails-assets-tether', '>= 1.1.0' +gem 'rails-assets-tether' gem 'kaminari' -gem 'rails_admin', '~> 1.0' +gem 'rails_admin' gem 'json' group :development, :test do @@ -42,7 +42,7 @@ end group :development do # Access an IRB console on exception pages or by using <%= console %> in views - gem 'web-console', '~> 2.0' + gem 'web-console' # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring gem 'spring' diff --git a/Gemfile.lock b/Gemfile.lock index 8847a1b..4e5c4f2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -46,13 +46,11 @@ GEM arel (6.0.4) arrayfields (4.9.2) ast (2.3.0) - autoprefixer-rails (7.1.1.2) + autoprefixer-rails (7.1.1.3) execjs autotest-rails (4.2.1) ZenTest (~> 4.5) bcrypt (3.1.11) - binding_of_caller (0.7.2) - debug_inspector (>= 0.0.1) bootstrap (4.0.0.alpha6) autoprefixer-rails (>= 6.0.3) sass (>= 3.4.19) @@ -60,7 +58,7 @@ GEM railties (>= 3.0) builder (3.2.3) byebug (9.0.6) - cancancan (1.17.0) + cancancan (2.0.0) cane (2.6.2) parallel capybara (2.14.4) @@ -86,9 +84,9 @@ GEM sexp_processor code_metrics (0.1.3) coderay (1.1.1) - coffee-rails (4.1.1) + coffee-rails (4.2.2) coffee-script (>= 2.2.0) - railties (>= 4.0.0, < 5.1.x) + railties (>= 4.0.0) coffee-script (2.4.1) coffee-script-source execjs @@ -213,7 +211,7 @@ GEM mime-types (3.1) mime-types-data (~> 3.2015) mime-types-data (3.2016.0521) - mimemagic (0.3.0) + mimemagic (0.3.2) mini_portile2 (2.2.0) minitest (5.10.2) multi_json (1.12.1) @@ -223,12 +221,12 @@ GEM nokogiri (1.8.0) mini_portile2 (~> 2.2.0) orm_adapter (0.5.0) - paperclip (4.3.7) - activemodel (>= 3.2.0) - activesupport (>= 3.2.0) + paperclip (5.1.0) + activemodel (>= 4.2.0) + activesupport (>= 4.2.0) cocaine (~> 0.5.5) mime-types - mimemagic (= 0.3.0) + mimemagic (~> 0.3.0) parallel (1.11.2) parser (2.4.0.0) ast (~> 2.2) @@ -399,11 +397,10 @@ GEM procto (~> 0.0.2) warden (1.2.7) rack (>= 1.0) - web-console (2.3.0) - activemodel (>= 4.0) - binding_of_caller (>= 0.7.2) - railties (>= 4.0) - sprockets-rails (>= 2.0, < 4.0) + web-console (3.3.0) + activemodel (>= 4.2) + debug_inspector + railties (>= 4.2) xpath (2.1.0) nokogiri (~> 1.3) @@ -412,35 +409,35 @@ PLATFORMS DEPENDENCIES autotest-rails - bcrypt (~> 3.1.7) - bootstrap (~> 4.0.0.alpha4) + bcrypt + bootstrap bootstrap-datepicker-rails byebug - cancancan (~> 1.10) - coffee-rails (~> 4.1.0) + cancancan + coffee-rails cucumber-rails cucumber-rails-training-wheels database_cleaner devise haml - jbuilder (~> 2.0) + jbuilder jquery-rails jquery-turbolinks jquery-ui-rails json kaminari - language_list (~> 1.1) + language_list metric_fu - paperclip (~> 4.2) + paperclip pg rails (= 4.2.5) - rails-assets-tether (>= 1.1.0) + rails-assets-tether rails4-autocomplete rails_12factor - rails_admin (~> 1.0) + rails_admin ransack rspec-rails - sass-rails (~> 5.0) + sass-rails sdoc (~> 0.4.0) simple_form simplecov @@ -449,8 +446,11 @@ DEPENDENCIES sqlite3 test-unit turbolinks - uglifier (>= 1.3.0) - web-console (~> 2.0) + uglifier + web-console + +RUBY VERSION + ruby 2.2.2p95 BUNDLED WITH 1.15.1 From b14b2a1bca914ee279ad8c96268d5619f7483863 Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Mon, 3 Jul 2017 15:06:59 -0700 Subject: [PATCH 017/161] Just trying anything From c9880f0bd3b419b778c466b719ae65f2a9efc793 Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Mon, 3 Jul 2017 15:12:49 -0700 Subject: [PATCH 018/161] Migrated From 7d64d87b3c2208f85430d8762b5656e08a2aad2e Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Mon, 3 Jul 2017 15:17:44 -0700 Subject: [PATCH 019/161] Added script to travis.yml --- .travis.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index e2c5f81..2b44fa7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,5 @@ language: ruby rvm: - - 2.2.2 \ No newline at end of file + - 2.2.2 + script: + - rake db:migrate \ No newline at end of file From f83b3c6a58f1cebf007783896f019796ef8d5e08 Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Mon, 3 Jul 2017 15:20:15 -0700 Subject: [PATCH 020/161] Added script to travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 2b44fa7..7fe6b62 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ language: ruby rvm: - 2.2.2 - script: +script: - rake db:migrate \ No newline at end of file From 95f7377d9effc990d2e50c60f79676166abe75a2 Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Mon, 3 Jul 2017 15:26:42 -0700 Subject: [PATCH 021/161] Added rake to Gemfile --- Gemfile | 1 + Gemfile.lock | 1 + 2 files changed, 2 insertions(+) diff --git a/Gemfile b/Gemfile index 2c22927..d19dc4f 100644 --- a/Gemfile +++ b/Gemfile @@ -32,6 +32,7 @@ gem 'rails-assets-tether' gem 'kaminari' gem 'rails_admin' gem 'json' +gem 'rake' group :development, :test do gem 'sqlite3' diff --git a/Gemfile.lock b/Gemfile.lock index 4e5c4f2..12985e0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -435,6 +435,7 @@ DEPENDENCIES rails4-autocomplete rails_12factor rails_admin + rake ransack rspec-rails sass-rails From 37729a4868978d96bc2e024cbe269a309a7fe71e Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Mon, 3 Jul 2017 15:35:04 -0700 Subject: [PATCH 022/161] Updated rake version in Gemfile --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index d19dc4f..962c0cd 100644 --- a/Gemfile +++ b/Gemfile @@ -32,7 +32,7 @@ gem 'rails-assets-tether' gem 'kaminari' gem 'rails_admin' gem 'json' -gem 'rake' +gem 'rake', '10.4.2' group :development, :test do gem 'sqlite3' diff --git a/Gemfile.lock b/Gemfile.lock index 12985e0..a0b7770 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -298,7 +298,7 @@ GEM thor (>= 0.18.1, < 2.0) rainbow (2.2.2) rake - rake (12.0.0) + rake (10.4.2) ransack (1.8.3) actionpack (>= 3.0) activerecord (>= 3.0) @@ -435,7 +435,7 @@ DEPENDENCIES rails4-autocomplete rails_12factor rails_admin - rake + rake (= 10.4.2) ransack rspec-rails sass-rails From 2691e477225a0856f32ed7e63cacff6470518b59 Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Mon, 3 Jul 2017 15:40:43 -0700 Subject: [PATCH 023/161] Updated README with the proper badges --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f61e8e6..bb19386 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -[![Code Climate](https://codeclimate.com/github/mark-craig/engineerswithoutborders/badges/gpa.svg)](https://codeclimate.com/github/mark-craig/engineerswithoutborders) +[![Code Climate](https://codeclimate.com/github/codeclimate/codeclimate/badges/gpa.svg)](https://codeclimate.com/github/codeclimate/codeclimate) [![Test Coverage](https://codeclimate.com/github/codeclimate/codeclimate/badges/coverage.svg)](https://codeclimate.com/github/codeclimate/codeclimate/coverage) -[![Build Status](https://travis-ci.org/mark-craig/engineerswithoutborders.svg?branch=master)](https://travis-ci.org/mark-craig/engineerswithoutborders) +[![Build Status](https://travis-ci.org/tbrachmann/engineerswithoutborders.svg?branch=master)](https://travis-ci.org/tbrachmann/engineerswithoutborders) # Engineer Without Borders' Volunteer System From 5e47fca0127f7c0d727c71619cf2a359dda09fee Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Mon, 3 Jul 2017 15:43:03 -0700 Subject: [PATCH 024/161] OK, now they have the proper badges --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bb19386..684a69a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Code Climate](https://codeclimate.com/github/codeclimate/codeclimate/badges/gpa.svg)](https://codeclimate.com/github/codeclimate/codeclimate) +[![Code Climate](https://codeclimate.com/github/codeclimate/codeclimate/badges/gpa.svg)](https://codeclimate.com/github/tbrachmann/engineerswithoutborders) [![Test Coverage](https://codeclimate.com/github/codeclimate/codeclimate/badges/coverage.svg)](https://codeclimate.com/github/codeclimate/codeclimate/coverage) [![Build Status](https://travis-ci.org/tbrachmann/engineerswithoutborders.svg?branch=master)](https://travis-ci.org/tbrachmann/engineerswithoutborders) From 43384cb81e33341a68c09eb51f4a84b0e5ab1ca4 Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Mon, 3 Jul 2017 16:06:37 -0700 Subject: [PATCH 025/161] Added test coverage to .travis.yml --- .travis.yml | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7fe6b62..491f5a1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,20 @@ +env: + global: + - CC_TEST_REPORTER_ID=7aa7f481fab6b43c98fd0c009f4bea7803b8578b528751ee4aa7d6db69ba5799 + - GIT_COMMITTED_AT=$(if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then git log -1 --pretty=format:%ct; else git log -1 --skip 1 --pretty=format:%ct; fi) language: ruby rvm: - - 2.2.2 + - 2.2.2 +before_script: + - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter + - chmod +x ./cc-test-reporter script: - - rake db:migrate \ No newline at end of file + - rake db:migrate + - bundle exec rspec +# Preferably you will run test-reporter on branch update events. But +# if you setup travis to build PR updates only, you don't need to run +# the line below + - if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT; fi +# In the case where travis is setup to build PR updates only, +# uncomment the line below +# - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT \ No newline at end of file From e485343890156d57dbc3c352d38c926aeb8156ff Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Mon, 3 Jul 2017 16:11:15 -0700 Subject: [PATCH 026/161] NOW all the badges are correct --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 684a69a..2fe0ff6 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [![Code Climate](https://codeclimate.com/github/codeclimate/codeclimate/badges/gpa.svg)](https://codeclimate.com/github/tbrachmann/engineerswithoutborders) -[![Test Coverage](https://codeclimate.com/github/codeclimate/codeclimate/badges/coverage.svg)](https://codeclimate.com/github/codeclimate/codeclimate/coverage) +[![Test Coverage](https://codeclimate.com/github/codeclimate/codeclimate/badges/coverage.svg)](https://codeclimate.com/github/tbrachmann/engineerswithoutborders/coverage) [![Build Status](https://travis-ci.org/tbrachmann/engineerswithoutborders.svg?branch=master)](https://travis-ci.org/tbrachmann/engineerswithoutborders) # Engineer Without Borders' Volunteer System From 6ac16e660227df3057a1b63f80d80445cd518159 Mon Sep 17 00:00:00 2001 From: Date: Wed, 5 Jul 2017 11:08:50 -0700 Subject: [PATCH 027/161] Just a check to make sure the badges are working --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2fe0ff6..365c197 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -[![Code Climate](https://codeclimate.com/github/codeclimate/codeclimate/badges/gpa.svg)](https://codeclimate.com/github/tbrachmann/engineerswithoutborders) -[![Test Coverage](https://codeclimate.com/github/codeclimate/codeclimate/badges/coverage.svg)](https://codeclimate.com/github/tbrachmann/engineerswithoutborders/coverage) +[![Code Climate](https://codeclimate.com/github/tbrachmann/engineerswithoutborders/badges/gpa.svg)](https://codeclimate.com/github/tbrachmann/engineerswithoutborders) +[![Test Coverage](https://codeclimate.com/github/tbrachmann/engineerswithoutborders/badges/coverage.svg)](https://codeclimate.com/github/tbrachmann/engineerswithoutborders/coverage) [![Build Status](https://travis-ci.org/tbrachmann/engineerswithoutborders.svg?branch=master)](https://travis-ci.org/tbrachmann/engineerswithoutborders) # Engineer Without Borders' Volunteer System From 3738943488bdf5166c785ba26aa6f0d828b22c43 Mon Sep 17 00:00:00 2001 From: Date: Fri, 7 Jul 2017 12:26:11 -0700 Subject: [PATCH 028/161] Updated Procfile --- Procfile | 1 + features/user_update.feature | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Procfile b/Procfile index 8c99558..8352e82 100644 --- a/Procfile +++ b/Procfile @@ -1 +1,2 @@ +web: rake db:migrate web: bundle exec rackup config.ru -p $PORT diff --git a/features/user_update.feature b/features/user_update.feature index d642dad..dda6bb7 100644 --- a/features/user_update.feature +++ b/features/user_update.feature @@ -22,4 +22,4 @@ Scenario: Updating Profile Information Then I should see "Computer Science" Then I should see "20" Then I should see "College rules!" - Then I should see "Berkeley" \ No newline at end of file + Then I should see "Berkeley" From 53cd91341431096cc6d4f8f43ee01a2f9ac67ef6 Mon Sep 17 00:00:00 2001 From: Date: Fri, 7 Jul 2017 19:20:26 -0700 Subject: [PATCH 029/161] Added project_users table and manager_id --- .gitignore | 1 + app/models/project.rb | 8 +++++--- app/models/user.rb | 4 ++-- .../20170708015523_create_join_table_users_projects.rb | 8 ++++++++ db/migrate/20170708020315_add_manager_to_projects.rb | 5 +++++ db/migrate/20170708020714_add_manager_to_projects_fix.rb | 6 ++++++ db/schema.rb | 8 +++++++- 7 files changed, 34 insertions(+), 6 deletions(-) create mode 100644 db/migrate/20170708015523_create_join_table_users_projects.rb create mode 100644 db/migrate/20170708020315_add_manager_to_projects.rb create mode 100644 db/migrate/20170708020714_add_manager_to_projects_fix.rb diff --git a/.gitignore b/.gitignore index e21d1c2..a5f8f70 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ /db/test.sqlite3 /coverage/ /spring-1000/ +*~ \ No newline at end of file diff --git a/app/models/project.rb b/app/models/project.rb index a674721..0d82a4c 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -1,5 +1,7 @@ class Project < ActiveRecord::Base - has_many :events - has_attached_file :image, styles: { large: "600x600>", medium: "300x300>", thumb: "150x150#" } - validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/ + has_many :events + has_and_belongs_to_many :users + belongs_to :manager, :class_name => 'User', :foreign_key => 'manager_id' + has_attached_file :image, styles: { large: "600x600>", medium: "300x300>", thumb: "150x150#" } + validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/ end diff --git a/app/models/user.rb b/app/models/user.rb index e3e2695..1c60498 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -4,5 +4,5 @@ class User < ActiveRecord::Base devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable ROLES = %w[admin manager volunteer].freeze - -end \ No newline at end of file + has_and_belongs_to_many :projects +end diff --git a/db/migrate/20170708015523_create_join_table_users_projects.rb b/db/migrate/20170708015523_create_join_table_users_projects.rb new file mode 100644 index 0000000..3a33810 --- /dev/null +++ b/db/migrate/20170708015523_create_join_table_users_projects.rb @@ -0,0 +1,8 @@ +class CreateJoinTableUsersProjects < ActiveRecord::Migration + def change + create_join_table :users, :projects do |t| + # t.index [:user_id, :project_id] + # t.index [:project_id, :user_id] + end + end +end diff --git a/db/migrate/20170708020315_add_manager_to_projects.rb b/db/migrate/20170708020315_add_manager_to_projects.rb new file mode 100644 index 0000000..2af7ed8 --- /dev/null +++ b/db/migrate/20170708020315_add_manager_to_projects.rb @@ -0,0 +1,5 @@ +class AddManagerToProjects < ActiveRecord::Migration + def change + add_foreign_key :projects, :users + end +end diff --git a/db/migrate/20170708020714_add_manager_to_projects_fix.rb b/db/migrate/20170708020714_add_manager_to_projects_fix.rb new file mode 100644 index 0000000..ffab213 --- /dev/null +++ b/db/migrate/20170708020714_add_manager_to_projects_fix.rb @@ -0,0 +1,6 @@ +class AddManagerToProjectsFix < ActiveRecord::Migration + def change + remove_foreign_key :projects, :users + add_column :projects, :manager_id, :integer + end +end diff --git a/db/schema.rb b/db/schema.rb index f717a46..57acb56 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: 20161129205702) do +ActiveRecord::Schema.define(version: 20170708020714) do create_table "events", force: :cascade do |t| t.datetime "created_at", null: false @@ -41,6 +41,12 @@ t.integer "image_file_size" t.datetime "image_updated_at" t.integer "hours_per_week" + t.integer "manager_id" + end + + create_table "projects_users", id: false, force: :cascade do |t| + t.integer "user_id", null: false + t.integer "project_id", null: false end create_table "users", force: :cascade do |t| From 8ae08556f7d05c7c77fc6eb2422c52c1addbc353 Mon Sep 17 00:00:00 2001 From: Claire Scheele Date: Sat, 8 Jul 2017 23:46:57 +0000 Subject: [PATCH 030/161] Added very basic Cucumber feature files for view project info and viewing event info. --- features/view_event_info.feature | 12 ++++++++++++ features/view_project_info.feature | 15 +++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 features/view_event_info.feature create mode 100644 features/view_project_info.feature diff --git a/features/view_event_info.feature b/features/view_event_info.feature new file mode 100644 index 0000000..eb1e3f9 --- /dev/null +++ b/features/view_event_info.feature @@ -0,0 +1,12 @@ +Feature: Viewing Event Information + As a volunteer for Engineers Without Borders + I should be able to view information about various events + So that I can pick events to attend + + Scenario: Clicking on an Event + Given I am a new, authenticated user + Given I am on the events page + When I follow an Event Link + Then I should see "Event Description" + And I should see "Event Dates" + And I should see "Event Location" \ No newline at end of file diff --git a/features/view_project_info.feature b/features/view_project_info.feature new file mode 100644 index 0000000..2e33d4e --- /dev/null +++ b/features/view_project_info.feature @@ -0,0 +1,15 @@ +Feature: Viewing Project Information + As a volunteer for Engineers Without Borders + I should be able to view information about various projects + So that I can choose projects to apply for + + Scenario: Clicking on a Project Listing + Given I am a new, authenticated user + Given I am on the projects page + When I follow a Project Link + Then I should see "Project Description" + And I should see "Project Dates" + And I should see "Project Location" + And I should see "Project Manager" + And I should see "Manager Contact Information" + And I should see "Current Volunteers" \ No newline at end of file From b1255b1c6fe41e2770582bb6fe5734598f1fe16a Mon Sep 17 00:00:00 2001 From: Sasank Chaganty Date: Sat, 8 Jul 2017 23:52:11 +0000 Subject: [PATCH 031/161] Added step definitions for the filter by attributes user story --- features/filter_attributes.feature | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 features/filter_attributes.feature diff --git a/features/filter_attributes.feature b/features/filter_attributes.feature new file mode 100644 index 0000000..6f84f67 --- /dev/null +++ b/features/filter_attributes.feature @@ -0,0 +1,25 @@ +Feature: display list of volunteers filtered by different skills/certifications + + As a EWB Project Manager + So that I can recruit potential volunteers for my project + I want to see only volunteers that meet the selected qualifications + +Background: Volunteers have been added to the project page + + Given the following volunteers exist: + |User | ABET Certified?| Fluency in Spanish | + |"Schmoe, Joe" | N/A| Yes| + |"User, Random"| Yes| No| + + And I am on a project page + +Scenario: filter the volunteers list by a certain attribute + When I select "ABET Certified" + + When I select "Professional Fluency in Spanish" + + When I press the "Apply" button + + Then I should see "Schmoe, Joe" #A user that meets these specified qualifications + + Then I should not see "User, Random" #A user that does not From 2652ec35cc50a97a38a9871818bfe99661d23f6b Mon Sep 17 00:00:00 2001 From: Sasank Chaganty Date: Sun, 9 Jul 2017 00:23:15 +0000 Subject: [PATCH 032/161] Added the alphabetize and filter_attributes cucumber step definitions --- features/alphabetize.feature | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 features/alphabetize.feature diff --git a/features/alphabetize.feature b/features/alphabetize.feature new file mode 100644 index 0000000..371d367 --- /dev/null +++ b/features/alphabetize.feature @@ -0,0 +1,20 @@ +Feature: display alphabetized list of volunteers + + As a EWB Project Manager + So that I can recruit volunteers for my project + I want to see an alphabetized list of applicants + +Background: Volunteers have been added to the project page + + Given the following volunteers exist: + |User | + |"Schmoe, Joe" | + |"User, Random"| + + And I am on a project page + +Scenario: Sort volunteers list alphabetically + + When I press "View Applicants" + + Then I should see "Schmoe, Joe" before "User, Random" From ed40751ef394eaa4a5a7eb05ab5a9120a029f2d4 Mon Sep 17 00:00:00 2001 From: Tobias Date: Wed, 12 Jul 2017 01:45:38 +0000 Subject: [PATCH 033/161] Valid factory and new user tests for associations --- Gemfile | 2 ++ Gemfile.lock | 9 ++++++ spec/factories/project_factory.rb | 6 ++++ spec/factories/user_factory.rb | 22 +++++++++++++ spec/user_spec.rb | 54 +++++++++++++++++++++++++++++++ 5 files changed, 93 insertions(+) create mode 100644 spec/factories/project_factory.rb create mode 100644 spec/factories/user_factory.rb diff --git a/Gemfile b/Gemfile index 962c0cd..dc20977 100644 --- a/Gemfile +++ b/Gemfile @@ -39,6 +39,8 @@ group :development, :test do gem 'byebug' gem 'rspec-rails' gem 'test-unit' + gem 'factory_girl_rails' + gem 'faker' end group :development do diff --git a/Gemfile.lock b/Gemfile.lock index a0b7770..30425fc 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -129,6 +129,13 @@ GEM equalizer (0.0.11) erubis (2.7.0) execjs (2.7.0) + factory_girl (4.8.0) + activesupport (>= 3.0.0) + factory_girl_rails (4.8.0) + factory_girl (~> 4.8.0) + railties (>= 3.0.0) + faker (1.8.2) + i18n (~> 0.5) fattr (2.3.0) flay (2.9.0) erubis (~> 2.7.0) @@ -419,6 +426,8 @@ DEPENDENCIES cucumber-rails-training-wheels database_cleaner devise + factory_girl_rails + faker haml jbuilder jquery-rails diff --git a/spec/factories/project_factory.rb b/spec/factories/project_factory.rb new file mode 100644 index 0000000..3c811e4 --- /dev/null +++ b/spec/factories/project_factory.rb @@ -0,0 +1,6 @@ +FactoryGirl.define do + factory :project do + created_at { 5.years.ago } + updated_at { 10.years.ago } + end +end \ No newline at end of file diff --git a/spec/factories/user_factory.rb b/spec/factories/user_factory.rb new file mode 100644 index 0000000..3844761 --- /dev/null +++ b/spec/factories/user_factory.rb @@ -0,0 +1,22 @@ +FactoryGirl.define do + factory :user do + first_name Faker::Name.first_name + last_name Faker::Name.last_name + email Faker::Internet.email + encrypted_password "asdfghjkl" + sign_in_count 1 + created_at { 10.years.ago } + updated_at { 10.years.ago } + role "volunteer" + end + factory :manager, class: User do + first_name Faker::Name.first_name + last_name Faker::Name.last_name + email Faker::Internet.email + encrypted_password "asdfghjkl" + sign_in_count 1 + created_at { 10.years.ago } + updated_at { 10.years.ago } + role "manager" + end +end \ No newline at end of file diff --git a/spec/user_spec.rb b/spec/user_spec.rb index cd13fcf..83217ef 100644 --- a/spec/user_spec.rb +++ b/spec/user_spec.rb @@ -90,3 +90,57 @@ end end +# Association tests added by TRB + +RSpec.describe User, :type => :model do + describe "Regular user" do + before(:each) do + @example_user = FactoryGirl.create(:user, password: "asdfghjkl") + @example_project = FactoryGirl.create(:project) + end + it "Has a valid factory" do + expect(@example_user).to be_valid + expect(@example_project).to be_valid + end + context "When a new user is created" do + # I'm confused. Sometimes these return nil, sometimes they return a + # CollectionProxy + it "will not be linked to any projects" do + expect(@example_user.projects.count).to eq 0 + end + it "will not manage any projects" do + expect(@example_project.manager).to be_nil + end + end + context "When a user is added to a project" do + it "will be linked to a project" do + end + it "user will be in the list of project's volunteers" do + end + end + context "When a user is a part of multiple projects" do + it "will have multiple projects" do + end + it "projects will have multiple users" do + end + end + end + describe "Manager" do + context "When a new manager is created" do + context "Manager has one project" do + it "will automatically be linked to a project" do + end + it "will not be linked to any other projects" do + end + it "project will be linked to its manager" do + end + end + context "Manager has multiple projects" do + it "will have multiple projects" do + end + it "both projects will point to their manager" do + end + end + end + end +end \ No newline at end of file From df494567f21011d672998d4dbca6bfb90a63b4ae Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Wed, 12 Jul 2017 10:57:57 -0700 Subject: [PATCH 034/161] Attempt to update ruby version --- Gemfile | 1 + spec/factories/user_factory.rb | 14 ++-- spec/user_spec.rb | 114 ++++++++++++++++++++------------- 3 files changed, 78 insertions(+), 51 deletions(-) diff --git a/Gemfile b/Gemfile index dc20977..c44b64f 100644 --- a/Gemfile +++ b/Gemfile @@ -41,6 +41,7 @@ group :development, :test do gem 'test-unit' gem 'factory_girl_rails' gem 'faker' + gem 'guard-rspec' end group :development do diff --git a/spec/factories/user_factory.rb b/spec/factories/user_factory.rb index 3844761..4acb18b 100644 --- a/spec/factories/user_factory.rb +++ b/spec/factories/user_factory.rb @@ -1,8 +1,8 @@ FactoryGirl.define do factory :user do - first_name Faker::Name.first_name - last_name Faker::Name.last_name - email Faker::Internet.email + first_name { Faker::Name.first_name } + last_name { Faker::Name.last_name } + email { Faker::Internet.email } encrypted_password "asdfghjkl" sign_in_count 1 created_at { 10.years.ago } @@ -10,13 +10,13 @@ role "volunteer" end factory :manager, class: User do - first_name Faker::Name.first_name - last_name Faker::Name.last_name - email Faker::Internet.email + first_name { Faker::Name.first_name } + last_name { Faker::Name.last_name } + email { Faker::Internet.email } encrypted_password "asdfghjkl" sign_in_count 1 created_at { 10.years.ago } updated_at { 10.years.ago } role "manager" end -end \ No newline at end of file +end diff --git a/spec/user_spec.rb b/spec/user_spec.rb index 83217ef..6135dbd 100644 --- a/spec/user_spec.rb +++ b/spec/user_spec.rb @@ -93,54 +93,80 @@ # Association tests added by TRB RSpec.describe User, :type => :model do - describe "Regular user" do - before(:each) do - @example_user = FactoryGirl.create(:user, password: "asdfghjkl") - @example_project = FactoryGirl.create(:project) + describe "Regular user" do + before(:each) do + #Need to manually specify the password here, otherwise it won't work, + #because of "Strong Params" + @example_user = FactoryGirl.create(:user, password: "asdfghjkl") + @example_project = FactoryGirl.create(:project) + end + it "Has a valid factory" do + expect(@example_user).to be_valid + expect(@example_project).to be_valid + end + context "When a new user is created" do + # I'm confused. Sometimes these return nil, sometimes they return a + # CollectionProxy + # Nil if its a singular relation and CollectionProxy otherwise? + it "will not be linked to any projects" do + expect(@example_user.projects.count).to eq 0 + end + it "will not manage any projects" do + expect(@example_project.manager).to be_nil + end + it "will not be a part of any projects" do + expect(@example_project.users.count).to eq 0 + end + end + context "When a user is added to a project" do + before(:each) do + #Try this method of adding objects to a has_many relation + @example_user.projects << @example_project + end + it "will be linked to a project" do + expect(@example_user.projects.count).to eq 1 + expect(@example_user.projects.first.name).to match @example_project.name + end + it "user will be in the list of project's volunteers" do + expect(@example_project.users.count).to eq 1 + expect(@example_project.users.first.first_name).to match @example_user.first_name + end + end + context "When a user is a part of multiple projects" do + before(:each) do + @example_user2 = FactoryGirl.create(:user, password: "adfghjkl") + @example_project2 = FactoryGirl.create(:project) + @example_user.projects << @example_project + @example_user.projects << @example_project2 + @example_user2.projects << @example_project + @example_user2.projects << @example_project2 + end + it "will have multiple projects" do + expect(@example_user.projects.count).to eq 2 + end + it "projects will have multiple users" do + expect(@example_project.users.count).to eq 2 + end + end + end + describe "Manager" do + context "When a new manager is created" do + context "Manager has one project" do + it "will automatically be linked to a project" do end - it "Has a valid factory" do - expect(@example_user).to be_valid - expect(@example_project).to be_valid + it "will not be linked to any other projects" do end - context "When a new user is created" do - # I'm confused. Sometimes these return nil, sometimes they return a - # CollectionProxy - it "will not be linked to any projects" do - expect(@example_user.projects.count).to eq 0 - end - it "will not manage any projects" do - expect(@example_project.manager).to be_nil - end + it "project will be linked to its manager" do end - context "When a user is added to a project" do - it "will be linked to a project" do - end - it "user will be in the list of project's volunteers" do - end + it "project will not have more than one manager" do end - context "When a user is a part of multiple projects" do - it "will have multiple projects" do - end - it "projects will have multiple users" do - end + end + context "Manager has multiple projects" do + it "will have multiple projects" do end - end - describe "Manager" do - context "When a new manager is created" do - context "Manager has one project" do - it "will automatically be linked to a project" do - end - it "will not be linked to any other projects" do - end - it "project will be linked to its manager" do - end - end - context "Manager has multiple projects" do - it "will have multiple projects" do - end - it "both projects will point to their manager" do - end - end + it "both projects will point to their manager" do end + end end -end \ No newline at end of file + end +end From 9c3b53f71cf5008055649e234b30e07b2f9dc0f0 Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Wed, 12 Jul 2017 13:32:58 -0700 Subject: [PATCH 035/161] Finished manager expected behavior tests for TDD --- Gemfile | 8 ++-- Gemfile.lock | 120 ++++++++++++++++++++++++++++++---------------- Guardfile | 70 +++++++++++++++++++++++++++ spec/user_spec.rb | 48 +++++++++++++------ 4 files changed, 187 insertions(+), 59 deletions(-) create mode 100644 Guardfile diff --git a/Gemfile b/Gemfile index c44b64f..b9b7f77 100644 --- a/Gemfile +++ b/Gemfile @@ -1,9 +1,9 @@ source 'https://rubygems.org' -ruby '2.2.2' +ruby '2.4.1' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' -gem 'rails', '4.2.5' +gem 'rails', '4.2.9' gem 'sprockets-rails', :require => 'sprockets/railtie' # Boostrap for styling gem 'bootstrap' @@ -22,7 +22,7 @@ gem 'language_list' gem 'turbolinks' gem 'ransack' gem 'jbuilder' -gem 'sdoc', '~> 0.4.0', group: :doc +gem 'sdoc' # , '~> 0.4.0', group: :doc gem 'jquery-turbolinks' gem 'bcrypt' gem 'cancancan' @@ -32,7 +32,7 @@ gem 'rails-assets-tether' gem 'kaminari' gem 'rails_admin' gem 'json' -gem 'rake', '10.4.2' +gem 'rake' # , '10.4.2' group :development, :test do gem 'sqlite3' diff --git a/Gemfile.lock b/Gemfile.lock index 30425fc..c51963c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -3,38 +3,37 @@ GEM specs: ZenTest (4.11.1) abstract_type (0.0.7) - actionmailer (4.2.5) - actionpack (= 4.2.5) - actionview (= 4.2.5) - activejob (= 4.2.5) + actionmailer (4.2.9) + actionpack (= 4.2.9) + actionview (= 4.2.9) + activejob (= 4.2.9) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 1.0, >= 1.0.5) - actionpack (4.2.5) - actionview (= 4.2.5) - activesupport (= 4.2.5) + actionpack (4.2.9) + actionview (= 4.2.9) + activesupport (= 4.2.9) rack (~> 1.6) rack-test (~> 0.6.2) rails-dom-testing (~> 1.0, >= 1.0.5) rails-html-sanitizer (~> 1.0, >= 1.0.2) - actionview (4.2.5) - activesupport (= 4.2.5) + actionview (4.2.9) + activesupport (= 4.2.9) builder (~> 3.1) erubis (~> 2.7.0) rails-dom-testing (~> 1.0, >= 1.0.5) - rails-html-sanitizer (~> 1.0, >= 1.0.2) - activejob (4.2.5) - activesupport (= 4.2.5) + rails-html-sanitizer (~> 1.0, >= 1.0.3) + activejob (4.2.9) + activesupport (= 4.2.9) globalid (>= 0.3.0) - activemodel (4.2.5) - activesupport (= 4.2.5) + activemodel (4.2.9) + activesupport (= 4.2.9) builder (~> 3.1) - activerecord (4.2.5) - activemodel (= 4.2.5) - activesupport (= 4.2.5) + activerecord (4.2.9) + activemodel (= 4.2.9) + activesupport (= 4.2.9) arel (~> 6.0) - activesupport (4.2.5) + activesupport (4.2.9) i18n (~> 0.7) - json (~> 1.7, >= 1.7.7) minitest (~> 5.1) thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) @@ -46,7 +45,7 @@ GEM arel (6.0.4) arrayfields (4.9.2) ast (2.3.0) - autoprefixer-rails (7.1.1.3) + autoprefixer-rails (7.1.2.2) execjs autotest-rails (4.2.1) ZenTest (~> 4.5) @@ -134,9 +133,10 @@ GEM factory_girl_rails (4.8.0) factory_girl (~> 4.8.0) railties (>= 3.0.0) - faker (1.8.2) + faker (1.8.3) i18n (~> 0.5) fattr (2.3.0) + ffi (1.9.18) flay (2.9.0) erubis (~> 2.7.0) path_expander (~> 1.0) @@ -148,16 +148,31 @@ GEM sexp_processor (~> 4.8) font-awesome-rails (4.7.0.2) railties (>= 3.2, < 5.2) + formatador (0.2.5) gherkin (4.1.3) globalid (0.4.0) activesupport (>= 4.2.0) + guard (2.14.1) + formatador (>= 0.2.4) + listen (>= 2.7, < 4.0) + lumberjack (~> 1.0) + nenv (~> 0.1) + notiffany (~> 0.0) + pry (>= 0.9.12) + shellany (~> 0.0) + thor (>= 0.18.1) + guard-compat (1.2.1) + guard-rspec (4.7.3) + guard (~> 2.1) + guard-compat (~> 1.1) + rspec (>= 2.99.0, < 4.0) haml (5.0.1) temple (>= 0.8.0) tilt hirb (0.7.3) http-cookie (1.0.3) domain_name (~> 0.5) - i18n (0.8.4) + i18n (0.8.6) ice_nine (0.11.2) jbuilder (2.7.0) activesupport (>= 4.2.0) @@ -188,8 +203,13 @@ GEM language_list (1.2.1) launchy (2.4.3) addressable (~> 2.3) + listen (3.1.5) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + ruby_dep (~> 1.2) loofah (2.0.3) nokogiri (>= 1.5.9) + lumberjack (1.0.12) mail (2.6.6) mime-types (>= 1.16, < 4) main (6.2.2) @@ -200,6 +220,7 @@ GEM map (6.6.0) memoizable (0.4.2) thread_safe (~> 0.3, >= 0.3.1) + method_source (0.8.2) metric_fu (4.12.0) cane (~> 2.5, >= 2.5.2) churn (~> 0.0.35) @@ -223,10 +244,14 @@ GEM minitest (5.10.2) multi_json (1.12.1) multi_test (0.1.2) + nenv (0.3.0) nested_form (0.3.2) netrc (0.11.0) nokogiri (1.8.0) mini_portile2 (~> 2.2.0) + notiffany (0.1.1) + nenv (~> 0.1) + shellany (~> 0.0) orm_adapter (0.5.0) paperclip (5.1.0) activemodel (>= 4.2.0) @@ -243,6 +268,10 @@ GEM activerecord (>= 3.0) power_assert (1.0.2) procto (0.0.3) + pry (0.10.4) + coderay (~> 1.1.0) + method_source (~> 0.8.1) + slop (~> 3.4) public_suffix (2.0.5) rack (1.6.8) rack-pjax (1.0.0) @@ -250,16 +279,16 @@ GEM rack (>= 1.1) rack-test (0.6.3) rack (>= 1.0) - rails (4.2.5) - actionmailer (= 4.2.5) - actionpack (= 4.2.5) - actionview (= 4.2.5) - activejob (= 4.2.5) - activemodel (= 4.2.5) - activerecord (= 4.2.5) - activesupport (= 4.2.5) + rails (4.2.9) + actionmailer (= 4.2.9) + actionpack (= 4.2.9) + actionview (= 4.2.9) + activejob (= 4.2.9) + activemodel (= 4.2.9) + activerecord (= 4.2.9) + activesupport (= 4.2.9) bundler (>= 1.3.0, < 2.0) - railties (= 4.2.5) + railties (= 4.2.9) sprockets-rails rails-assets-tether (1.1.1) rails-deprecated_sanitizer (1.0.3) @@ -298,20 +327,23 @@ GEM ruby-progressbar rails_serve_static_assets (0.0.5) rails_stdout_logging (0.0.5) - railties (4.2.5) - actionpack (= 4.2.5) - activesupport (= 4.2.5) + railties (4.2.9) + actionpack (= 4.2.9) + activesupport (= 4.2.9) rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) rainbow (2.2.2) rake - rake (10.4.2) + rake (12.0.0) ransack (1.8.3) actionpack (>= 3.0) activerecord (>= 3.0) activesupport (>= 3.0) i18n polyamorous (~> 1.3) + rb-fsevent (0.10.2) + rb-inotify (0.9.10) + ffi (>= 0.5.0, < 2) rdoc (4.3.0) redcard (1.1.0) reek (2.2.1) @@ -329,6 +361,10 @@ GEM netrc (~> 0.8) roodi (3.3.1) ruby_parser (~> 3.2, >= 3.2.2) + rspec (3.6.0) + rspec-core (~> 3.6.0) + rspec-expectations (~> 3.6.0) + rspec-mocks (~> 3.6.0) rspec-core (3.6.0) rspec-support (~> 3.6.0) rspec-expectations (3.6.0) @@ -347,9 +383,10 @@ GEM rspec-support (~> 3.6.0) rspec-support (3.6.0) ruby-progressbar (1.8.1) + ruby_dep (1.5.0) ruby_parser (3.9.0) sexp_processor (~> 4.1) - sass (3.4.24) + sass (3.4.25) sass-rails (5.0.6) railties (>= 4.0.0, < 6) sass (~> 3.1) @@ -360,6 +397,7 @@ GEM json (~> 1.7, >= 1.7.7) rdoc (~> 4.0) sexp_processor (4.9.0) + shellany (0.0.1) simple_form (3.5.0) actionpack (> 4, < 5.2) activemodel (> 4, < 5.2) @@ -368,6 +406,7 @@ GEM json (>= 1.8, < 3) simplecov-html (~> 0.10.0) simplecov-html (0.10.1) + slop (3.6.0) spring (2.0.2) activesupport (>= 4.2) sprockets (3.7.1) @@ -428,6 +467,7 @@ DEPENDENCIES devise factory_girl_rails faker + guard-rspec haml jbuilder jquery-rails @@ -439,16 +479,16 @@ DEPENDENCIES metric_fu paperclip pg - rails (= 4.2.5) + rails (= 4.2.9) rails-assets-tether rails4-autocomplete rails_12factor rails_admin - rake (= 10.4.2) + rake ransack rspec-rails sass-rails - sdoc (~> 0.4.0) + sdoc simple_form simplecov spring @@ -460,7 +500,7 @@ DEPENDENCIES web-console RUBY VERSION - ruby 2.2.2p95 + ruby 2.4.1p111 BUNDLED WITH 1.15.1 diff --git a/Guardfile b/Guardfile new file mode 100644 index 0000000..3215f01 --- /dev/null +++ b/Guardfile @@ -0,0 +1,70 @@ +# A sample Guardfile +# More info at https://github.com/guard/guard#readme + +## Uncomment and set this to only include directories you want to watch +# directories %w(app lib config test spec features) \ +# .select{|d| Dir.exists?(d) ? d : UI.warning("Directory #{d} does not exist")} + +## Note: if you are using the `directories` clause above and you are not +## watching the project directory ('.'), then you will want to move +## the Guardfile to a watched dir and symlink it back, e.g. +# +# $ mkdir config +# $ mv Guardfile config/ +# $ ln -s config/Guardfile . +# +# and, you'll have to watch "config/Guardfile" instead of "Guardfile" + +# Note: The cmd option is now required due to the increasing number of ways +# rspec may be run, below are examples of the most common uses. +# * bundler: 'bundle exec rspec' +# * bundler binstubs: 'bin/rspec' +# * spring: 'bin/rspec' (This will use spring if running and you have +# installed the spring binstubs per the docs) +# * zeus: 'zeus rspec' (requires the server to be started separately) +# * 'just' rspec: 'rspec' + +guard :rspec, cmd: "bundle exec rspec" do + require "guard/rspec/dsl" + dsl = Guard::RSpec::Dsl.new(self) + + # Feel free to open issues for suggestions and improvements + + # RSpec files + rspec = dsl.rspec + watch(rspec.spec_helper) { rspec.spec_dir } + watch(rspec.spec_support) { rspec.spec_dir } + watch(rspec.spec_files) + + # Ruby files + ruby = dsl.ruby + dsl.watch_spec_files_for(ruby.lib_files) + + # Rails files + rails = dsl.rails(view_extensions: %w(erb haml slim)) + dsl.watch_spec_files_for(rails.app_files) + dsl.watch_spec_files_for(rails.views) + + watch(rails.controllers) do |m| + [ + rspec.spec.call("routing/#{m[1]}_routing"), + rspec.spec.call("controllers/#{m[1]}_controller"), + rspec.spec.call("acceptance/#{m[1]}") + ] + end + + # Rails config changes + watch(rails.spec_helper) { rspec.spec_dir } + watch(rails.routes) { "#{rspec.spec_dir}/routing" } + watch(rails.app_controller) { "#{rspec.spec_dir}/controllers" } + + # Capybara features specs + watch(rails.view_dirs) { |m| rspec.spec.call("features/#{m[1]}") } + watch(rails.layouts) { |m| rspec.spec.call("features/#{m[1]}") } + + # Turnip features and steps + watch(%r{^spec/acceptance/(.+)\.feature$}) + watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) do |m| + Dir[File.join("**/#{m[1]}.feature")][0] || "spec/acceptance" + end +end diff --git a/spec/user_spec.rb b/spec/user_spec.rb index 6135dbd..ffb1f87 100644 --- a/spec/user_spec.rb +++ b/spec/user_spec.rb @@ -91,6 +91,7 @@ end # Association tests added by TRB +# TODO: test destroying as well RSpec.describe User, :type => :model do describe "Regular user" do @@ -98,6 +99,8 @@ #Need to manually specify the password here, otherwise it won't work, #because of "Strong Params" @example_user = FactoryGirl.create(:user, password: "asdfghjkl") + #operating under the assumption that a project can be created without + #a manager. @example_project = FactoryGirl.create(:project) end it "Has a valid factory" do @@ -150,22 +153,37 @@ end end describe "Manager" do - context "When a new manager is created" do - context "Manager has one project" do - it "will automatically be linked to a project" do - end - it "will not be linked to any other projects" do - end - it "project will be linked to its manager" do - end - it "project will not have more than one manager" do - end + before(:each) do + @example_manager = FactoryGirl.create(:manager, password: "asdfghjkl") + @example_user = FactoryGirl.create(:user, password: "asdfghjkl") + #operating under the assumption that a project can be created without + #a manager. + @example_project = FactoryGirl.create(:project) + end + it "has a valid factory" do + expect(@example_manager).to be_valid + expect(@example_project).to be_valid + end + context "Manager has one project" do + before(:each) do + @example_user.manages << @example_project +# @example_project.managers << @example_manager end - context "Manager has multiple projects" do - it "will have multiple projects" do - end - it "both projects will point to their manager" do - end + it "will be linked to its project" do + expect(@example_user.manages.first.name).to match @example_project.name + #expect(@example_manager.project.name).to match @example_project.name + end + it "will not be linked to any other projects" do + + end + it "project will be linked to its manager" do + expect(@example_project.managers.first.first_name).to match @example_manager.first_name + end + end + context "Manager has multiple projects" do + it "will have multiple projects" do + end + it "both projects will point to their manager" do end end end From 7cba1937a93bfb995e259cb194bf8bc575313d03 Mon Sep 17 00:00:00 2001 From: Arman Date: Thu, 13 Jul 2017 00:10:15 +0000 Subject: [PATCH 036/161] New Feature: Skill Functionality from /admin \n\n new skill db and join db --- app/models/skill.rb | 3 +++ app/models/user.rb | 1 + db/migrate/20170712173011_create_skills.rb | 13 +++++++++++++ ...70712180231_add_skill_association_to_user.rb | 4 ++++ db/migrate/20170712234605_skills_users.rb | 8 ++++++++ db/schema.rb | 17 ++++++++++++++++- 6 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 app/models/skill.rb create mode 100644 db/migrate/20170712173011_create_skills.rb create mode 100644 db/migrate/20170712180231_add_skill_association_to_user.rb create mode 100644 db/migrate/20170712234605_skills_users.rb diff --git a/app/models/skill.rb b/app/models/skill.rb new file mode 100644 index 0000000..78734c7 --- /dev/null +++ b/app/models/skill.rb @@ -0,0 +1,3 @@ +class Skill < ActiveRecord::Base + has_and_belongs_to_many :users +end \ No newline at end of file diff --git a/app/models/user.rb b/app/models/user.rb index e3e2695..ebb4a24 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,4 +1,5 @@ class User < ActiveRecord::Base + has_and_belongs_to_many :skills # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable and :omniauthable devise :database_authenticatable, :registerable, diff --git a/db/migrate/20170712173011_create_skills.rb b/db/migrate/20170712173011_create_skills.rb new file mode 100644 index 0000000..c23c634 --- /dev/null +++ b/db/migrate/20170712173011_create_skills.rb @@ -0,0 +1,13 @@ +class CreateSkills < ActiveRecord::Migration + + def change + create_table :skills do |t| + t.belongs_to :user, index: true + + t.string :name + t.string :description + + t.timestamps + end + end +end diff --git a/db/migrate/20170712180231_add_skill_association_to_user.rb b/db/migrate/20170712180231_add_skill_association_to_user.rb new file mode 100644 index 0000000..60a1e9a --- /dev/null +++ b/db/migrate/20170712180231_add_skill_association_to_user.rb @@ -0,0 +1,4 @@ +class AddSkillAssociationToUser < ActiveRecord::Migration + def change + end +end diff --git a/db/migrate/20170712234605_skills_users.rb b/db/migrate/20170712234605_skills_users.rb new file mode 100644 index 0000000..656293d --- /dev/null +++ b/db/migrate/20170712234605_skills_users.rb @@ -0,0 +1,8 @@ +class SkillsUsers < ActiveRecord::Migration + def change + create_table :skills_users, :id => false do |t| + t.integer :skill_id + t.integer :user_id + end + end +end diff --git a/db/schema.rb b/db/schema.rb index f717a46..a4ef51e 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: 20161129205702) do +ActiveRecord::Schema.define(version: 20170712234605) do create_table "events", force: :cascade do |t| t.datetime "created_at", null: false @@ -43,6 +43,21 @@ t.integer "hours_per_week" end + create_table "skills", force: :cascade do |t| + t.integer "user_id" + t.string "name" + t.string "description" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "skills", ["user_id"], name: "index_skills_on_user_id" + + create_table "skills_users", id: false, force: :cascade do |t| + t.integer "skill_id" + t.integer "user_id" + end + create_table "users", force: :cascade do |t| t.string "email", default: "", null: false t.string "encrypted_password", default: "", null: false From cbac72ec4a27f4bdaf81a64d4d3ecfbb44e7b7d7 Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Wed, 12 Jul 2017 19:28:01 -0700 Subject: [PATCH 037/161] Done with projects, managers, users, role - with tests! --- app/models/manager_relationship.rb | 4 ++ app/models/project.rb | 65 ++++++++++++++++- app/models/user.rb | 11 ++- app/models/volunteer_relationship.rb | 4 ++ .../20170712204144_create_manager_model.rb | 8 +++ ...170712205703_rename_manager_to_managers.rb | 5 ++ ...ename_managers_to_manager_relationships.rb | 5 ++ ...rojects_users_to_volunteer_relationship.rb | 12 ++++ db/schema.rb | 24 +++++-- spec/user_spec.rb | 70 +++++++++++++++---- 10 files changed, 185 insertions(+), 23 deletions(-) create mode 100644 app/models/manager_relationship.rb create mode 100644 app/models/volunteer_relationship.rb create mode 100644 db/migrate/20170712204144_create_manager_model.rb create mode 100644 db/migrate/20170712205703_rename_manager_to_managers.rb create mode 100644 db/migrate/20170712215536_rename_managers_to_manager_relationships.rb create mode 100644 db/migrate/20170712234535_change_projects_users_to_volunteer_relationship.rb diff --git a/app/models/manager_relationship.rb b/app/models/manager_relationship.rb new file mode 100644 index 0000000..d879d74 --- /dev/null +++ b/app/models/manager_relationship.rb @@ -0,0 +1,4 @@ +class ManagerRelationship < ActiveRecord::Base + belongs_to :user + belongs_to :project +end diff --git a/app/models/project.rb b/app/models/project.rb index 0d82a4c..0723a1f 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -1,7 +1,68 @@ class Project < ActiveRecord::Base has_many :events - has_and_belongs_to_many :users - belongs_to :manager, :class_name => 'User', :foreign_key => 'manager_id' + #has_many :roles + #has_and_belongs_to_many :users + + has_many :manager_relationships + has_many :managers, through: :manager_relationships, source: :user + + has_many :volunteer_relationships + has_many :volunteers, through: :volunteer_relationships, source: :user + has_attached_file :image, styles: { large: "600x600>", medium: "300x300>", thumb: "150x150#" } validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/ + + def add_with_role(volunteer, role) + if(User.find(volunteer.id).blank?) + return false + end + self.volunteer_relationships << VolunteerRelationship.new(:user_id => volunteer.id, + :project_id => self.id, + :role => role) + end + + def assign_role(volunteer, role) + begin + relationship = VolunteerRelationship.find(volunteer.id) + rescue ActiveRecord::RecordNotFound => e + if(!self.managers.include?(volunteer)) + return false + else + relationship = VolunteerRelationship.new(:user_id => volunteer.id, + :project_id => self.id, + :role => role) + self.volunteer_relationships << relationship + return true + end + end + if(!relationship.role.blank?) + relationship.role << (", " + role) + #relationship.role << role + else + relationship.role = role + end + relationship.save! + return true + end + + def role_of(volunteer) + begin + User.find(volunteer.id) + rescue ActiveRecord::RecordNotFound => e + return false + end + role = VolunteerRelationship.find(volunteer.id).role + if(!role.blank? && self.managers.include?(volunteer)) + return role + " / manager" + elsif(role.blank? && self.managers.include?(volunteer)) + return "manager" + elsif(!role.blank?) + return role + else + return "No role" + end + end + + #private :manager_relationships, :manager_relationships= + #private :volunteer_relationships, :volunteer_relationships= end diff --git a/app/models/user.rb b/app/models/user.rb index 1c60498..20502ca 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -4,5 +4,14 @@ class User < ActiveRecord::Base devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable ROLES = %w[admin manager volunteer].freeze - has_and_belongs_to_many :projects + #has_and_belongs_to_many :projects + + has_many :manager_relationships + has_many :manages, through: :manager_relationships, source: :project + + has_many :volunteer_relationships + has_many :projects, through: :volunteer_relationships, source: :project + + private :manager_relationships, :manager_relationships= + private :volunteer_relationships, :volunteer_relationships= end diff --git a/app/models/volunteer_relationship.rb b/app/models/volunteer_relationship.rb new file mode 100644 index 0000000..9bfc362 --- /dev/null +++ b/app/models/volunteer_relationship.rb @@ -0,0 +1,4 @@ +class VolunteerRelationship < ActiveRecord::Base + belongs_to :user + belongs_to :project +end diff --git a/db/migrate/20170712204144_create_manager_model.rb b/db/migrate/20170712204144_create_manager_model.rb new file mode 100644 index 0000000..acba11f --- /dev/null +++ b/db/migrate/20170712204144_create_manager_model.rb @@ -0,0 +1,8 @@ +class CreateManagerModel < ActiveRecord::Migration + def change + create_table :manager do |t| + t.belongs_to :user, index: true + t.belongs_to :project, index: true + end + end +end diff --git a/db/migrate/20170712205703_rename_manager_to_managers.rb b/db/migrate/20170712205703_rename_manager_to_managers.rb new file mode 100644 index 0000000..36b57bf --- /dev/null +++ b/db/migrate/20170712205703_rename_manager_to_managers.rb @@ -0,0 +1,5 @@ +class RenameManagerToManagers < ActiveRecord::Migration + def change + rename_table :manager, :managers + end +end diff --git a/db/migrate/20170712215536_rename_managers_to_manager_relationships.rb b/db/migrate/20170712215536_rename_managers_to_manager_relationships.rb new file mode 100644 index 0000000..647c7ce --- /dev/null +++ b/db/migrate/20170712215536_rename_managers_to_manager_relationships.rb @@ -0,0 +1,5 @@ +class RenameManagersToManagerRelationships < ActiveRecord::Migration + def change + rename_table :managers, :manager_relationships + end +end diff --git a/db/migrate/20170712234535_change_projects_users_to_volunteer_relationship.rb b/db/migrate/20170712234535_change_projects_users_to_volunteer_relationship.rb new file mode 100644 index 0000000..ae1a721 --- /dev/null +++ b/db/migrate/20170712234535_change_projects_users_to_volunteer_relationship.rb @@ -0,0 +1,12 @@ +class ChangeProjectsUsersToVolunteerRelationship < ActiveRecord::Migration + def change + drop_table :projects_users + + create_table :volunteer_relationships do |t| + t.belongs_to :user, index: true + t.belongs_to :project, index: true + t.string :role + end + + end +end diff --git a/db/schema.rb b/db/schema.rb index 57acb56..15a7b9a 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: 20170708020714) do +ActiveRecord::Schema.define(version: 20170712234535) do create_table "events", force: :cascade do |t| t.datetime "created_at", null: false @@ -26,6 +26,14 @@ t.integer "project_id" end + create_table "manager_relationships", force: :cascade do |t| + t.integer "user_id" + t.integer "project_id" + end + + add_index "manager_relationships", ["project_id"], name: "index_manager_relationships_on_project_id" + add_index "manager_relationships", ["user_id"], name: "index_manager_relationships_on_user_id" + create_table "projects", force: :cascade do |t| t.datetime "created_at", null: false t.datetime "updated_at", null: false @@ -44,11 +52,6 @@ t.integer "manager_id" end - create_table "projects_users", id: false, force: :cascade do |t| - t.integer "user_id", null: false - t.integer "project_id", null: false - end - create_table "users", force: :cascade do |t| t.string "email", default: "", null: false t.string "encrypted_password", default: "", null: false @@ -95,4 +98,13 @@ add_index "users", ["email"], name: "index_users_on_email", unique: true add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true + create_table "volunteer_relationships", force: :cascade do |t| + t.integer "user_id" + t.integer "project_id" + t.string "role" + end + + add_index "volunteer_relationships", ["project_id"], name: "index_volunteer_relationships_on_project_id" + add_index "volunteer_relationships", ["user_id"], name: "index_volunteer_relationships_on_user_id" + end diff --git a/spec/user_spec.rb b/spec/user_spec.rb index ffb1f87..2fcb131 100644 --- a/spec/user_spec.rb +++ b/spec/user_spec.rb @@ -115,24 +115,45 @@ expect(@example_user.projects.count).to eq 0 end it "will not manage any projects" do - expect(@example_project.manager).to be_nil + expect(@example_project.managers.count).to eq 0 end it "will not be a part of any projects" do - expect(@example_project.users.count).to eq 0 + expect(@example_project.volunteers.count).to eq 0 end end context "When a user is added to a project" do before(:each) do + @example_user2 = FactoryGirl.create(:user, password: "asdfghjkl") + @example_user3 = FactoryGirl.create(:user, password: "asdfghjkl") #Try this method of adding objects to a has_many relation + #No role @example_user.projects << @example_project + #with role + @example_project.add_with_role(@example_user2, "programmer") + #assign role after + @example_user3.projects << @example_project + @example_project.assign_role(@example_user3, "engineer") end - it "will be linked to a project" do + it "user will be linked to a project" do expect(@example_user.projects.count).to eq 1 expect(@example_user.projects.first.name).to match @example_project.name end - it "user will be in the list of project's volunteers" do - expect(@example_project.users.count).to eq 1 - expect(@example_project.users.first.first_name).to match @example_user.first_name + it "users will be in the list of project's volunteers" do + expect(@example_project.volunteers.count).to eq 3 + expect(@example_project.volunteers.first.first_name).to match @example_user.first_name + end + it "user 2 and 3 will have correct roles" do + expect(@example_project.role_of(@example_user)).to match "No role" + expect(@example_project.role_of(@example_user2)).to match "programmer" + expect(@example_project.role_of(@example_user3)).to match "engineer" + end + it "user can have multiple roles" do + @example_project.assign_role(@example_user2, "cook") + expect(@example_project.role_of(@example_user2)).to match "programmer, cook" + end + it "catches error and returns false if volunteer does not exist" do + @fake_user = instance_double('User', id: 10) + expect(@example_project.assign_role(@fake_user, "cook")).to be_falsy end end context "When a user is a part of multiple projects" do @@ -148,17 +169,19 @@ expect(@example_user.projects.count).to eq 2 end it "projects will have multiple users" do - expect(@example_project.users.count).to eq 2 + expect(@example_project.volunteers.count).to eq 2 end end end describe "Manager" do before(:each) do @example_manager = FactoryGirl.create(:manager, password: "asdfghjkl") + @example_manager2 = FactoryGirl.create(:manager, password: "asdfghjkl") @example_user = FactoryGirl.create(:user, password: "asdfghjkl") #operating under the assumption that a project can be created without #a manager. - @example_project = FactoryGirl.create(:project) + @example_project = FactoryGirl.build(:project) + @example_project2 = FactoryGirl.build(:project) end it "has a valid factory" do expect(@example_manager).to be_valid @@ -166,24 +189,43 @@ end context "Manager has one project" do before(:each) do - @example_user.manages << @example_project -# @example_project.managers << @example_manager + @example_manager.manages << @example_project + @example_user.projects << @example_project end it "will be linked to its project" do - expect(@example_user.manages.first.name).to match @example_project.name + expect(@example_manager.manages.first.name).to match @example_project.name #expect(@example_manager.project.name).to match @example_project.name - end - it "will not be linked to any other projects" do - end it "project will be linked to its manager" do expect(@example_project.managers.first.first_name).to match @example_manager.first_name end + it "user will not manage project" do + expect(@example_user.manages.count).to eq 0 + end + it "user will not be a manager of project" do + expect(@example_project.managers.count).to eq 1 + expect(@example_project.volunteers.count).to eq 1 + end + it "manager has correct role" do + expect(@example_project.role_of(@example_manager)).to match "manager" + end + it "manager also assigns himself a role" do + @example_project.assign_role(@example_manager, "programmer") + expect(@example_project.role_of(@example_manager)).to match "programmer / manager" + end end context "Manager has multiple projects" do + before(:each) do + @example_manager.manages << @example_project + @example_manager.manages << @example_project2 + @example_user.projects << @example_project + end it "will have multiple projects" do + expect(@example_manager.manages.count).to eq 2 end it "both projects will point to their manager" do + expect(@example_project.managers.count).to eq 1 + expect(@example_project2.managers.count).to eq 1 end end end From c6914684f7a29c133aca3a239e4d58a501c338b5 Mon Sep 17 00:00:00 2001 From: Arman Date: Thu, 13 Jul 2017 04:17:54 +0000 Subject: [PATCH 038/161] New Feature add on: users able to add skills to their profile --- app/views/users/_form.html.erb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/views/users/_form.html.erb b/app/views/users/_form.html.erb index 52a401f..907b0dd 100644 --- a/app/views/users/_form.html.erb +++ b/app/views/users/_form.html.erb @@ -89,6 +89,14 @@ +
+
+ <%= simple_form_for @user do |f| %> + <%= f.association :skills %> + <% end %> +
+
+
<%= f.input :description, label: "About:", as: :text, hint: "Please tell us very briefly a little about yourself and why you want to volunteer for Engineers without Borders.", :input_html => {:style => 'width: 100%', :rows => 4, class: 'response-project'} %> From 1aaa51f4e87e268877ccf05b17972d2e7531d171 Mon Sep 17 00:00:00 2001 From: Arman Date: Thu, 13 Jul 2017 05:12:21 +0000 Subject: [PATCH 039/161] Feature Add On: update database when skills are submitted --- app/controllers/users_controller.rb | 5 +++++ app/models/skill.rb | 14 ++++++++++++++ app/models/user.rb | 10 ++++++++++ 3 files changed, 29 insertions(+) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index b898794..4bd6770 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -71,6 +71,10 @@ def update end user = User.find(params[:id]) # update fields + + puts user_params + + user.first_name = user_params[:first_name] user.last_name = user_params[:last_name] user.age = user_params[:age] @@ -97,6 +101,7 @@ def update user.friday_availability = user_params[:friday_availability] user.saturday_availability = user_params[:saturday_availability] user.availability_comments = user_params[:availability_comments] + user.skills = Skill.get_skills(user_params[:skill_ids]) user.save diff --git a/app/models/skill.rb b/app/models/skill.rb index 78734c7..b0c1643 100644 --- a/app/models/skill.rb +++ b/app/models/skill.rb @@ -1,3 +1,17 @@ class Skill < ActiveRecord::Base has_and_belongs_to_many :users + + def self.get_skills(skill_ids) + total = [] + if skill_ids + skill_ids.each do |x| + if Skill.exists? x + total << Skill.find(x) + end + end + return total + else + return [] + end + end end \ No newline at end of file diff --git a/app/models/user.rb b/app/models/user.rb index ebb4a24..c2317ac 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -6,4 +6,14 @@ class User < ActiveRecord::Base :recoverable, :rememberable, :trackable, :validatable ROLES = %w[admin manager volunteer].freeze + + + def set_skills(skill_ids) + if skill_ids + return skill_ids.map{|x| Skill.find(i) if Skills.include? x} + else + return [] + end + end + end \ No newline at end of file From 1ca12c51bdfb11a41a2427354cda72facdf8ecf9 Mon Sep 17 00:00:00 2001 From: Arman Date: Thu, 13 Jul 2017 05:21:48 +0000 Subject: [PATCH 040/161] cleaned up --- app/controllers/users_controller.rb | 3 --- app/models/user.rb | 9 --------- 2 files changed, 12 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 4bd6770..769a6e3 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -71,10 +71,7 @@ def update end user = User.find(params[:id]) # update fields - - puts user_params - user.first_name = user_params[:first_name] user.last_name = user_params[:last_name] user.age = user_params[:age] diff --git a/app/models/user.rb b/app/models/user.rb index c2317ac..5f5ff59 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -7,13 +7,4 @@ class User < ActiveRecord::Base ROLES = %w[admin manager volunteer].freeze - - def set_skills(skill_ids) - if skill_ids - return skill_ids.map{|x| Skill.find(i) if Skills.include? x} - else - return [] - end - end - end \ No newline at end of file From 62f059f819f48a7e94d302c9c348f8aa57d5674a Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Thu, 13 Jul 2017 15:32:03 -0700 Subject: [PATCH 041/161] Got desired role behavior working correctly --- Guardfile | 6 ++++ app/models/project.rb | 73 ++++++++++++++++++++++--------------------- spec/user_spec.rb | 22 +++++++------ 3 files changed, 56 insertions(+), 45 deletions(-) diff --git a/Guardfile b/Guardfile index 3215f01..8c25403 100644 --- a/Guardfile +++ b/Guardfile @@ -67,4 +67,10 @@ guard :rspec, cmd: "bundle exec rspec" do watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) do |m| Dir[File.join("**/#{m[1]}.feature")][0] || "spec/acceptance" end + + # User & Project watching + watch(%r{^app/models/(user|project)\.rb}) { "#{rspec.spec_dir}/user_spec.rb" } + + + end diff --git a/app/models/project.rb b/app/models/project.rb index 0723a1f..a6fa609 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -4,62 +4,63 @@ class Project < ActiveRecord::Base #has_and_belongs_to_many :users has_many :manager_relationships - has_many :managers, through: :manager_relationships, source: :user + has_many :managers, -> { distinct }, through: :manager_relationships, source: :user has_many :volunteer_relationships has_many :volunteers, through: :volunteer_relationships, source: :user - has_attached_file :image, styles: { large: "600x600>", medium: "300x300>", thumb: "150x150#" } + has_attached_file :image, styles: { large: "600x600>", + medium: "300x300>", + thumb: "150x150#" } validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/ + #Overrides the rails-created "volunteers" so that we can return only unique user IDs. + def volunteers + join_statement = "LEFT OUTER JOIN 'volunteer_relationships' ON 'volunteer_relationships'.'user_id' = 'users'.'id' WHERE 'volunteer_relationships'.'project_id' = #{self.id}" + User.joins(join_statement).uniq + end + def add_with_role(volunteer, role) - if(User.find(volunteer.id).blank?) + #If user does not exist. + if(!User.exists?(volunteer.id)) return false + #If user is already a volunteer on this project. + elsif(volunteers.include?(volunteer)) + return false + #Else add the volunteer with specified role + else + self.volunteer_relationships << VolunteerRelationship.new(:user_id => volunteer.id, + :project_id => self.id, + :role => role) end - self.volunteer_relationships << VolunteerRelationship.new(:user_id => volunteer.id, - :project_id => self.id, - :role => role) end def assign_role(volunteer, role) - begin - relationship = VolunteerRelationship.find(volunteer.id) - rescue ActiveRecord::RecordNotFound => e - if(!self.managers.include?(volunteer)) - return false - else - relationship = VolunteerRelationship.new(:user_id => volunteer.id, - :project_id => self.id, - :role => role) - self.volunteer_relationships << relationship - return true - end - end - if(!relationship.role.blank?) - relationship.role << (", " + role) - #relationship.role << role + #If user is not a part of project nor a manager + if(!volunteers.include?(volunteer) && !managers.include?(volunteer)) + return false + #Add a new relationship with the new role else - relationship.role = role + relationship = VolunteerRelationship.new(:user_id => volunteer.id, + :project_id => self.id, + :role => role) + self.volunteer_relationships << relationship end - relationship.save! - return true end def role_of(volunteer) - begin - User.find(volunteer.id) - rescue ActiveRecord::RecordNotFound => e + if(!volunteers.include?(volunteer)&& !managers.include?(volunteer)) return false end - role = VolunteerRelationship.find(volunteer.id).role - if(!role.blank? && self.managers.include?(volunteer)) - return role + " / manager" - elsif(role.blank? && self.managers.include?(volunteer)) - return "manager" - elsif(!role.blank?) - return role + #role = VolunteerRelationship.find(volunteer.id).role + roles = VolunteerRelationship.where(user_id: volunteer.id).pluck(:role) + if(managers.include?(volunteer)) + roles << "manager" + end + if(roles.all? &:blank?) + return nil else - return "No role" + return roles end end diff --git a/spec/user_spec.rb b/spec/user_spec.rb index 2fcb131..719a55f 100644 --- a/spec/user_spec.rb +++ b/spec/user_spec.rb @@ -125,7 +125,6 @@ before(:each) do @example_user2 = FactoryGirl.create(:user, password: "asdfghjkl") @example_user3 = FactoryGirl.create(:user, password: "asdfghjkl") - #Try this method of adding objects to a has_many relation #No role @example_user.projects << @example_project #with role @@ -133,6 +132,7 @@ #assign role after @example_user3.projects << @example_project @example_project.assign_role(@example_user3, "engineer") + @example_project.assign_role(@example_user3, "cook") end it "user will be linked to a project" do expect(@example_user.projects.count).to eq 1 @@ -140,16 +140,18 @@ end it "users will be in the list of project's volunteers" do expect(@example_project.volunteers.count).to eq 3 - expect(@example_project.volunteers.first.first_name).to match @example_user.first_name + expect(@example_project.volunteers.first.first_name) + .to match @example_user.first_name end it "user 2 and 3 will have correct roles" do - expect(@example_project.role_of(@example_user)).to match "No role" - expect(@example_project.role_of(@example_user2)).to match "programmer" - expect(@example_project.role_of(@example_user3)).to match "engineer" + expect(@example_project.role_of(@example_user)).to be_nil + expect(@example_project.role_of(@example_user2)).to include "programmer" + expect(@example_project.role_of(@example_user3)).to include "engineer" end it "user can have multiple roles" do @example_project.assign_role(@example_user2, "cook") - expect(@example_project.role_of(@example_user2)).to match "programmer, cook" + expect(@example_project.role_of(@example_user2)) + .to match_array ["programmer", "cook"] end it "catches error and returns false if volunteer does not exist" do @fake_user = instance_double('User', id: 10) @@ -197,7 +199,8 @@ #expect(@example_manager.project.name).to match @example_project.name end it "project will be linked to its manager" do - expect(@example_project.managers.first.first_name).to match @example_manager.first_name + expect(@example_project.managers.first.first_name) + .to match @example_manager.first_name end it "user will not manage project" do expect(@example_user.manages.count).to eq 0 @@ -207,11 +210,12 @@ expect(@example_project.volunteers.count).to eq 1 end it "manager has correct role" do - expect(@example_project.role_of(@example_manager)).to match "manager" + expect(@example_project.role_of(@example_manager)).to include "manager" end it "manager also assigns himself a role" do @example_project.assign_role(@example_manager, "programmer") - expect(@example_project.role_of(@example_manager)).to match "programmer / manager" + expect(@example_project.role_of(@example_manager)) + .to match_array ["programmer", "manager"] end end context "Manager has multiple projects" do From bf9b30f2fb3843b6d30b19a25ecc6699c363fa2d Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Thu, 13 Jul 2017 19:14:19 -0700 Subject: [PATCH 042/161] Updated Gemfile, moved tests to association_spec.rb --- Gemfile | 1 + Gemfile.lock | 3 + Guardfile | 2 +- config/environments/test.rb | 3 + spec/association_spec.rb | 145 ++++++++++++++++++++++++++++++++++++ spec/rails_helper.rb | 57 ++++++++++++++ spec/spec_helper.rb | 119 +++++++++++++++++++++-------- spec/user_spec.rb | 2 +- 8 files changed, 297 insertions(+), 35 deletions(-) create mode 100644 spec/association_spec.rb create mode 100644 spec/rails_helper.rb diff --git a/Gemfile b/Gemfile index b9b7f77..8790024 100644 --- a/Gemfile +++ b/Gemfile @@ -50,6 +50,7 @@ group :development do # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring gem 'spring' + gem 'spring-commands-rspec' end # Setup Cucumber, RSpec, autotest support diff --git a/Gemfile.lock b/Gemfile.lock index c51963c..9eb8ad8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -409,6 +409,8 @@ GEM slop (3.6.0) spring (2.0.2) activesupport (>= 4.2) + spring-commands-rspec (1.0.4) + spring (>= 0.9.1) sprockets (3.7.1) concurrent-ruby (~> 1.0) rack (> 1, < 3) @@ -492,6 +494,7 @@ DEPENDENCIES simple_form simplecov spring + spring-commands-rspec sprockets-rails sqlite3 test-unit diff --git a/Guardfile b/Guardfile index 8c25403..e50c28d 100644 --- a/Guardfile +++ b/Guardfile @@ -24,7 +24,7 @@ # * zeus: 'zeus rspec' (requires the server to be started separately) # * 'just' rspec: 'rspec' -guard :rspec, cmd: "bundle exec rspec" do +guard :rspec, cmd: "bundle exec spring rspec" do require "guard/rspec/dsl" dsl = Guard::RSpec::Dsl.new(self) diff --git a/config/environments/test.rb b/config/environments/test.rb index a66c99a..48ccc1e 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -40,4 +40,7 @@ # Raises error for missing translations # config.action_view.raise_on_missing_translations = true + + #config.active_record.maintain_test_schema = false + end diff --git a/spec/association_spec.rb b/spec/association_spec.rb new file mode 100644 index 0000000..bd418ae --- /dev/null +++ b/spec/association_spec.rb @@ -0,0 +1,145 @@ +require 'rails_helper' + +# TODO: test destroying as well + +RSpec.describe User, :type => :model do + describe "Regular user" do + before(:each) do + #Need to manually specify the password here, otherwise it won't work, + #because of "Strong Params" + @example_user = FactoryGirl.create(:user, password: "asdfghjkl") + #operating under the assumption that a project can be created without + #a manager. + @example_project = FactoryGirl.create(:project) + end + it "Has a valid factory" do + expect(@example_user).to be_valid + expect(@example_project).to be_valid + end + context "When a new user is created" do + # I'm confused. Sometimes these return nil, sometimes they return a + # CollectionProxy + # Nil if its a singular relation and CollectionProxy otherwise? + it "will not be linked to any projects" do + expect(@example_user.projects.count).to eq 0 + end + it "will not manage any projects" do + expect(@example_project.managers.count).to eq 0 + end + it "will not be a part of any projects" do + expect(@example_project.volunteers.count).to eq 0 + end + end + context "When a user is added to a project" do + before(:each) do + @example_user2 = FactoryGirl.create(:user, password: "asdfghjkl") + @example_user3 = FactoryGirl.create(:user, password: "asdfghjkl") + #No role + @example_user.projects << @example_project + #with role + @example_project.add_with_role(@example_user2, "programmer") + #assign role after + @example_user3.projects << @example_project + @example_project.assign_role(@example_user3, "engineer") + @example_project.assign_role(@example_user3, "cook") + end + it "user will be linked to a project" do + expect(@example_user.projects.count).to eq 1 + expect(@example_user.projects.first.name).to match @example_project.name + end + it "users will be in the list of project's volunteers" do + expect(@example_project.volunteers.count).to eq 3 + expect(@example_project.volunteers.first.first_name) + .to match @example_user.first_name + end + it "user 2 and 3 will have correct roles" do + expect(@example_project.role_of(@example_user)).to be_nil + expect(@example_project.role_of(@example_user2)).to include "programmer" + expect(@example_project.role_of(@example_user3)).to include "engineer" + end + it "user can have multiple roles" do + @example_project.assign_role(@example_user2, "cook") + expect(@example_project.role_of(@example_user2)) + .to match_array ["programmer", "cook"] + end + it "catches error and returns false if volunteer does not exist" do + @fake_user = instance_double('User', id: 10) + expect(@example_project.assign_role(@fake_user, "cook")).to be_falsy + end + end + context "When a user is a part of multiple projects" do + before(:each) do + @example_user2 = FactoryGirl.create(:user, password: "adfghjkl") + @example_project2 = FactoryGirl.create(:project) + @example_user.projects << @example_project + @example_user.projects << @example_project2 + @example_user2.projects << @example_project + @example_user2.projects << @example_project2 + end + it "will have multiple projects" do + expect(@example_user.projects.count).to eq 2 + end + it "projects will have multiple users" do + expect(@example_project.volunteers.count).to eq 2 + end + end + end + describe "Manager" do + before(:each) do + @example_manager = FactoryGirl.create(:manager, password: "asdfghjkl") + @example_manager2 = FactoryGirl.create(:manager, password: "asdfghjkl") + @example_user = FactoryGirl.create(:user, password: "asdfghjkl") + #operating under the assumption that a project can be created without + #a manager. + @example_project = FactoryGirl.build(:project) + @example_project2 = FactoryGirl.build(:project) + end + it "has a valid factory" do + expect(@example_manager).to be_valid + expect(@example_project).to be_valid + end + context "Manager has one project" do + before(:each) do + @example_manager.manages << @example_project + @example_user.projects << @example_project + end + it "will be linked to its project" do + expect(@example_manager.manages.first.name).to match @example_project.name + #expect(@example_manager.project.name).to match @example_project.name + end + it "project will be linked to its manager" do + expect(@example_project.managers.first.first_name) + .to match @example_manager.first_name + end + it "user will not manage project" do + expect(@example_user.manages.count).to eq 0 + end + it "user will not be a manager of project" do + expect(@example_project.managers.count).to eq 1 + expect(@example_project.volunteers.count).to eq 1 + end + it "manager has correct role" do + expect(@example_project.role_of(@example_manager)).to include "manager" + end + it "manager also assigns himself a role" do + @example_project.assign_role(@example_manager, "programmer") + expect(@example_project.role_of(@example_manager)) + .to match_array ["programmer", "manager"] + end + end + context "Manager has multiple projects" do + before(:each) do + @example_manager.manages << @example_project + @example_manager.manages << @example_project2 + @example_user.projects << @example_project + end + it "will have multiple projects" do + expect(@example_manager.manages.count).to eq 2 + end + it "both projects will point to their manager" do + expect(@example_project.managers.count).to eq 1 + expect(@example_project2.managers.count).to eq 1 + end + end + end +end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb new file mode 100644 index 0000000..46ba8e0 --- /dev/null +++ b/spec/rails_helper.rb @@ -0,0 +1,57 @@ +# This file is copied to spec/ when you run 'rails generate rspec:install' +require 'spec_helper' +ENV['RAILS_ENV'] ||= 'test' +require File.expand_path('../../config/environment', __FILE__) +# Prevent database truncation if the environment is production +abort("The Rails environment is running in production mode!") if Rails.env.production? +require 'rspec/rails' +# Add additional requires below this line. Rails is not loaded until this point! + +# Requires supporting ruby files with custom matchers and macros, etc, in +# spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are +# run as spec files by default. This means that files in spec/support that end +# in _spec.rb will both be required and run as specs, causing the specs to be +# run twice. It is recommended that you do not name files matching this glob to +# end with _spec.rb. You can configure this pattern with the --pattern +# option on the command line or in ~/.rspec, .rspec or `.rspec-local`. +# +# The following line is provided for convenience purposes. It has the downside +# of increasing the boot-up time by auto-requiring all files in the support +# directory. Alternatively, in the individual `*_spec.rb` files, manually +# require only the support files necessary. +# +# Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f } + +# Checks for pending migration and applies them before tests are run. +# If you are not using ActiveRecord, you can remove this line. +ActiveRecord::Migration.maintain_test_schema! + +RSpec.configure do |config| + # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures + config.fixture_path = "#{::Rails.root}/spec/fixtures" + + # If you're not using ActiveRecord, or you'd prefer not to run each of your + # examples within a transaction, remove the following line or assign false + # instead of true. + config.use_transactional_fixtures = true + + # RSpec Rails can automatically mix in different behaviours to your tests + # based on their file location, for example enabling you to call `get` and + # `post` in specs under `spec/controllers`. + # + # You can disable this behaviour by removing the line below, and instead + # explicitly tag your specs with their type, e.g.: + # + # RSpec.describe UsersController, :type => :controller do + # # ... + # end + # + # The different available types are documented in the features, such as in + # https://relishapp.com/rspec/rspec-rails/docs + config.infer_spec_type_from_file_location! + + # Filter lines from Rails gems in backtraces. + config.filter_rails_from_backtrace! + # arbitrary gems may also be filtered via: + # config.filter_gems_from_backtrace("gem name") +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 4480b03..251aa51 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,47 +1,100 @@ -# This file is copied to spec/ when you run 'rails generate rspec:install' - -require 'simplecov' -SimpleCov.start +# This file was generated by the `rspec --init` command. Conventionally, all +# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`. +# The generated `.rspec` file contains `--require spec_helper` which will cause +# this file to always be loaded, without a need to explicitly require it in any +# files. +# +# Given that it is always loaded, you are encouraged to keep this file as +# light-weight as possible. Requiring heavyweight dependencies from this file +# will add to the boot time of your test suite on EVERY test run, even for an +# individual file that may not need all of that loaded. Instead, consider making +# a separate helper file that requires the additional dependencies and performs +# the additional setup, and require it from the spec files that actually need +# it. +# +# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration +RSpec.configure do |config| + # rspec-expectations config goes here. You can use an alternate + # assertion/expectation library such as wrong or the stdlib/minitest + # assertions if you prefer. + config.expect_with :rspec do |expectations| + # This option will default to `true` in RSpec 4. It makes the `description` + # and `failure_message` of custom matchers include text for helper methods + # defined using `chain`, e.g.: + # be_bigger_than(2).and_smaller_than(4).description + # # => "be bigger than 2 and smaller than 4" + # ...rather than: + # # => "be bigger than 2" + expectations.include_chain_clauses_in_custom_matcher_descriptions = true + end -ENV["RAILS_ENV"] ||= 'test' -require File.expand_path("../../config/environment", __FILE__) -require 'rspec/rails' -require 'rspec/autorun' + # rspec-mocks config goes here. You can use an alternate test double + # library (such as bogus or mocha) by changing the `mock_with` option here. + config.mock_with :rspec do |mocks| + # Prevents you from mocking or stubbing a method that does not exist on + # a real object. This is generally recommended, and will default to + # `true` in RSpec 4. + mocks.verify_partial_doubles = true + end -# Requires supporting ruby files with custom matchers and macros, etc, -# in spec/support/ and its subdirectories. -Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f } + # This option will default to `:apply_to_host_groups` in RSpec 4 (and will + # have no way to turn it off -- the option exists only for backwards + # compatibility in RSpec 3). It causes shared context metadata to be + # inherited by the metadata hash of host groups and examples, rather than + # triggering implicit auto-inclusion in groups with matching metadata. + config.shared_context_metadata_behavior = :apply_to_host_groups -# Checks for pending migrations before tests are run. -# If you are not using ActiveRecord, you can remove this line. -ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration) +# The settings below are suggested to provide a good initial experience +# with RSpec, but feel free to customize to your heart's content. +=begin + # This allows you to limit a spec run to individual examples or groups + # you care about by tagging them with `:focus` metadata. When nothing + # is tagged with `:focus`, all examples get run. RSpec also provides + # aliases for `it`, `describe`, and `context` that include `:focus` + # metadata: `fit`, `fdescribe` and `fcontext`, respectively. + config.filter_run_when_matching :focus -RSpec.configure do |config| - # ## Mock Framework - # - # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line: - # - # config.mock_with :mocha - # config.mock_with :flexmock - # config.mock_with :rr + # Allows RSpec to persist some state between runs in order to support + # the `--only-failures` and `--next-failure` CLI options. We recommend + # you configure your source control system to ignore this file. + config.example_status_persistence_file_path = "spec/examples.txt" + # Limits the available syntax to the non-monkey patched syntax that is + # recommended. For more details, see: + # - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/ + # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/ + # - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode + config.disable_monkey_patching! - # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures - config.fixture_path = "#{::Rails.root}/spec/fixtures" + # This setting enables warnings. It's recommended, but in some cases may + # be too noisy due to issues in dependencies. + config.warnings = true - # If you're not using ActiveRecord, or you'd prefer not to run each of your - # examples within a transaction, remove the following line or assign false - # instead of true. - config.use_transactional_fixtures = true + # Many RSpec users commonly either run the entire suite or an individual + # file, and it's useful to allow more verbose output when running an + # individual spec file. + if config.files_to_run.one? + # Use the documentation formatter for detailed output, + # unless a formatter has already been configured + # (e.g. via a command-line flag). + config.default_formatter = "doc" + end - # If true, the base class of anonymous controllers will be inferred - # automatically. This will be the default behavior in future versions of - # rspec-rails. - config.infer_base_class_for_anonymous_controllers = false + # Print the 10 slowest examples and example groups at the + # end of the spec run, to help surface which specs are running + # particularly slow. + config.profile_examples = 10 # Run specs in random order to surface order dependencies. If you find an # order dependency and want to debug it, you can fix the order by providing # the seed, which is printed after each run. # --seed 1234 - config.order = "random" + config.order = :random + + # Seed global randomization in this process using the `--seed` CLI option. + # Setting this allows you to use `--seed` to deterministically reproduce + # test failures related to randomization by passing the same `--seed` value + # as the one that triggered the failure. + Kernel.srand config.seed +=end end diff --git a/spec/user_spec.rb b/spec/user_spec.rb index 719a55f..3d9e46f 100644 --- a/spec/user_spec.rb +++ b/spec/user_spec.rb @@ -1,4 +1,4 @@ -require 'spec_helper' +require 'rails_helper' RSpec.describe User, "#first_name" do context "when the user first enters in their first name" do From 380ae647d3daed995140d170eaf4f0096e73d1f5 Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Thu, 13 Jul 2017 19:16:05 -0700 Subject: [PATCH 043/161] Moved tests from user_spec.rb to association_spec.rb --- spec/association_spec.rb | 3 - spec/user_spec.rb | 145 --------------------------------------- 2 files changed, 148 deletions(-) diff --git a/spec/association_spec.rb b/spec/association_spec.rb index bd418ae..0d1e232 100644 --- a/spec/association_spec.rb +++ b/spec/association_spec.rb @@ -17,9 +17,6 @@ expect(@example_project).to be_valid end context "When a new user is created" do - # I'm confused. Sometimes these return nil, sometimes they return a - # CollectionProxy - # Nil if its a singular relation and CollectionProxy otherwise? it "will not be linked to any projects" do expect(@example_user.projects.count).to eq 0 end diff --git a/spec/user_spec.rb b/spec/user_spec.rb index 3d9e46f..4e7d1a5 100644 --- a/spec/user_spec.rb +++ b/spec/user_spec.rb @@ -89,148 +89,3 @@ end end end - -# Association tests added by TRB -# TODO: test destroying as well - -RSpec.describe User, :type => :model do - describe "Regular user" do - before(:each) do - #Need to manually specify the password here, otherwise it won't work, - #because of "Strong Params" - @example_user = FactoryGirl.create(:user, password: "asdfghjkl") - #operating under the assumption that a project can be created without - #a manager. - @example_project = FactoryGirl.create(:project) - end - it "Has a valid factory" do - expect(@example_user).to be_valid - expect(@example_project).to be_valid - end - context "When a new user is created" do - # I'm confused. Sometimes these return nil, sometimes they return a - # CollectionProxy - # Nil if its a singular relation and CollectionProxy otherwise? - it "will not be linked to any projects" do - expect(@example_user.projects.count).to eq 0 - end - it "will not manage any projects" do - expect(@example_project.managers.count).to eq 0 - end - it "will not be a part of any projects" do - expect(@example_project.volunteers.count).to eq 0 - end - end - context "When a user is added to a project" do - before(:each) do - @example_user2 = FactoryGirl.create(:user, password: "asdfghjkl") - @example_user3 = FactoryGirl.create(:user, password: "asdfghjkl") - #No role - @example_user.projects << @example_project - #with role - @example_project.add_with_role(@example_user2, "programmer") - #assign role after - @example_user3.projects << @example_project - @example_project.assign_role(@example_user3, "engineer") - @example_project.assign_role(@example_user3, "cook") - end - it "user will be linked to a project" do - expect(@example_user.projects.count).to eq 1 - expect(@example_user.projects.first.name).to match @example_project.name - end - it "users will be in the list of project's volunteers" do - expect(@example_project.volunteers.count).to eq 3 - expect(@example_project.volunteers.first.first_name) - .to match @example_user.first_name - end - it "user 2 and 3 will have correct roles" do - expect(@example_project.role_of(@example_user)).to be_nil - expect(@example_project.role_of(@example_user2)).to include "programmer" - expect(@example_project.role_of(@example_user3)).to include "engineer" - end - it "user can have multiple roles" do - @example_project.assign_role(@example_user2, "cook") - expect(@example_project.role_of(@example_user2)) - .to match_array ["programmer", "cook"] - end - it "catches error and returns false if volunteer does not exist" do - @fake_user = instance_double('User', id: 10) - expect(@example_project.assign_role(@fake_user, "cook")).to be_falsy - end - end - context "When a user is a part of multiple projects" do - before(:each) do - @example_user2 = FactoryGirl.create(:user, password: "adfghjkl") - @example_project2 = FactoryGirl.create(:project) - @example_user.projects << @example_project - @example_user.projects << @example_project2 - @example_user2.projects << @example_project - @example_user2.projects << @example_project2 - end - it "will have multiple projects" do - expect(@example_user.projects.count).to eq 2 - end - it "projects will have multiple users" do - expect(@example_project.volunteers.count).to eq 2 - end - end - end - describe "Manager" do - before(:each) do - @example_manager = FactoryGirl.create(:manager, password: "asdfghjkl") - @example_manager2 = FactoryGirl.create(:manager, password: "asdfghjkl") - @example_user = FactoryGirl.create(:user, password: "asdfghjkl") - #operating under the assumption that a project can be created without - #a manager. - @example_project = FactoryGirl.build(:project) - @example_project2 = FactoryGirl.build(:project) - end - it "has a valid factory" do - expect(@example_manager).to be_valid - expect(@example_project).to be_valid - end - context "Manager has one project" do - before(:each) do - @example_manager.manages << @example_project - @example_user.projects << @example_project - end - it "will be linked to its project" do - expect(@example_manager.manages.first.name).to match @example_project.name - #expect(@example_manager.project.name).to match @example_project.name - end - it "project will be linked to its manager" do - expect(@example_project.managers.first.first_name) - .to match @example_manager.first_name - end - it "user will not manage project" do - expect(@example_user.manages.count).to eq 0 - end - it "user will not be a manager of project" do - expect(@example_project.managers.count).to eq 1 - expect(@example_project.volunteers.count).to eq 1 - end - it "manager has correct role" do - expect(@example_project.role_of(@example_manager)).to include "manager" - end - it "manager also assigns himself a role" do - @example_project.assign_role(@example_manager, "programmer") - expect(@example_project.role_of(@example_manager)) - .to match_array ["programmer", "manager"] - end - end - context "Manager has multiple projects" do - before(:each) do - @example_manager.manages << @example_project - @example_manager.manages << @example_project2 - @example_user.projects << @example_project - end - it "will have multiple projects" do - expect(@example_manager.manages.count).to eq 2 - end - it "both projects will point to their manager" do - expect(@example_project.managers.count).to eq 1 - expect(@example_project2.managers.count).to eq 1 - end - end - end -end From 1734235f2f565027bda3d1ee18203b75d7b68036 Mon Sep 17 00:00:00 2001 From: Tobias Date: Fri, 14 Jul 2017 22:36:21 +0000 Subject: [PATCH 044/161] Decided that bug was actually a feature --- app/controllers/projects_controller.rb | 2 +- app/models/manager_relationship.rb | 4 +-- app/models/project.rb | 4 +-- app/models/user.rb | 3 ++- ...precated_column_volunteers_from_project.rb | 5 ++++ db/schema.rb | 3 +-- spec/association_spec.rb | 5 +++- spec/project_spec.rb | 11 +++++--- spec/rails_helper.rb | 25 +++++++++++++++++++ 9 files changed, 50 insertions(+), 12 deletions(-) create mode 100644 db/migrate/20170714213211_remove_deprecated_column_volunteers_from_project.rb diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 853dfce..4f434f9 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -44,7 +44,7 @@ def update private def project_params - params.require(:project).permit(:name, :description, :start_date, :volunteer_capacity, :volunteers, :location, :image, :hours_per_week) + params.require(:project).permit(:name, :description, :start_date, :volunteer_capacity, :volunteer, :location, :image, :hours_per_week) end def destroy diff --git a/app/models/manager_relationship.rb b/app/models/manager_relationship.rb index d879d74..ffdeffc 100644 --- a/app/models/manager_relationship.rb +++ b/app/models/manager_relationship.rb @@ -1,4 +1,4 @@ class ManagerRelationship < ActiveRecord::Base - belongs_to :user - belongs_to :project + belongs_to :user, inverse_of: :manager_relationships + belongs_to :project, inverse_of: :manager_relationships end diff --git a/app/models/project.rb b/app/models/project.rb index a6fa609..8c6013e 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -6,7 +6,7 @@ class Project < ActiveRecord::Base has_many :manager_relationships has_many :managers, -> { distinct }, through: :manager_relationships, source: :user - has_many :volunteer_relationships + has_many :volunteer_relationships, inverse_of: :project has_many :volunteers, through: :volunteer_relationships, source: :user has_attached_file :image, styles: { large: "600x600>", @@ -19,7 +19,7 @@ def volunteers join_statement = "LEFT OUTER JOIN 'volunteer_relationships' ON 'volunteer_relationships'.'user_id' = 'users'.'id' WHERE 'volunteer_relationships'.'project_id' = #{self.id}" User.joins(join_statement).uniq end - + def add_with_role(volunteer, role) #If user does not exist. if(!User.exists?(volunteer.id)) diff --git a/app/models/user.rb b/app/models/user.rb index 3f9cb52..c5382c4 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -10,9 +10,10 @@ class User < ActiveRecord::Base has_many :manager_relationships has_many :manages, through: :manager_relationships, source: :project - has_many :volunteer_relationships + has_many :volunteer_relationships, inverse_of: :user has_many :projects, through: :volunteer_relationships, source: :project + private :manager_relationships, :manager_relationships= private :volunteer_relationships, :volunteer_relationships= end diff --git a/db/migrate/20170714213211_remove_deprecated_column_volunteers_from_project.rb b/db/migrate/20170714213211_remove_deprecated_column_volunteers_from_project.rb new file mode 100644 index 0000000..99e080c --- /dev/null +++ b/db/migrate/20170714213211_remove_deprecated_column_volunteers_from_project.rb @@ -0,0 +1,5 @@ +class RemoveDeprecatedColumnVolunteersFromProject < ActiveRecord::Migration + def change + remove_column :projects, :volunteers + end +end diff --git a/db/schema.rb b/db/schema.rb index 90ef28e..618728f 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: 20170712234605) do +ActiveRecord::Schema.define(version: 20170714213211) do create_table "events", force: :cascade do |t| t.datetime "created_at", null: false @@ -42,7 +42,6 @@ t.string "description" t.string "string" t.integer "volunteer_capacity" - t.integer "volunteers" t.string "location" t.string "image_file_name" t.string "image_content_type" diff --git a/spec/association_spec.rb b/spec/association_spec.rb index 0d1e232..211ed26 100644 --- a/spec/association_spec.rb +++ b/spec/association_spec.rb @@ -32,6 +32,8 @@ @example_user2 = FactoryGirl.create(:user, password: "asdfghjkl") @example_user3 = FactoryGirl.create(:user, password: "asdfghjkl") #No role + #@example_project.volunteers << @example_user <- THIS IS NOT WORKING + #RIGHT NOW because i overrode "volunteers" @example_user.projects << @example_project #with role @example_project.add_with_role(@example_user2, "programmer") @@ -97,7 +99,8 @@ end context "Manager has one project" do before(:each) do - @example_manager.manages << @example_project + #@example_manager.manages << @example_project + @example_project.managers << @example_manager @example_user.projects << @example_project end it "will be linked to its project" do diff --git a/spec/project_spec.rb b/spec/project_spec.rb index f895fdd..c955802 100644 --- a/spec/project_spec.rb +++ b/spec/project_spec.rb @@ -30,12 +30,17 @@ end end +# This use of "volunteers is deprecated." RSpec.describe Project, "#volunteers" do context "when a project manager enters the amount of volunteers currently assinged to a project" do it "saves the value into the volunteers field" do - project = Project.new - project.volunteers = 15 - expect(project.volunteers).to eq 15 + @project = FactoryGirl.create(:project) + 15.times do + @example_user = FactoryGirl.create(:user, password: "asdfghjkl") + @example_user.projects << @project + end + #project.volunteers = 15 + expect(@project.volunteers.count).to eq 15 end end end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 46ba8e0..daa545c 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -5,6 +5,7 @@ # Prevent database truncation if the environment is production abort("The Rails environment is running in production mode!") if Rails.env.production? require 'rspec/rails' +require 'database_cleaner' # Add additional requires below this line. Rails is not loaded until this point! # Requires supporting ruby files with custom matchers and macros, etc, in @@ -55,3 +56,27 @@ # arbitrary gems may also be filtered via: # config.filter_gems_from_backtrace("gem name") end + +=begin + +RSpec.configure do |config| + + config.before(:suite) do + DatabaseCleaner.clean_with(:truncation) + end + + config.before(:each) do + DatabaseCleaner.strategy = :transaction + end + + config.before(:each) do + DatabaseCleaner.start + end + + config.after(:each) do + DatabaseCleaner.clean + end + +end + +=end \ No newline at end of file From 03f3c59723fbaeb5d57f0054817126ea7b5fce28 Mon Sep 17 00:00:00 2001 From: Tobias Date: Fri, 14 Jul 2017 23:32:39 +0000 Subject: [PATCH 045/161] Updated travis.yml Ruby version to 2.4.1 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 491f5a1..b8197b8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ env: - GIT_COMMITTED_AT=$(if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then git log -1 --pretty=format:%ct; else git log -1 --skip 1 --pretty=format:%ct; fi) language: ruby rvm: - - 2.2.2 + - 2.4.1 before_script: - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter - chmod +x ./cc-test-reporter From b0fa9aa1e0cd9cb46a0241c0bfc4dde2f2373fd8 Mon Sep 17 00:00:00 2001 From: Tobias Date: Fri, 14 Jul 2017 23:37:35 +0000 Subject: [PATCH 046/161] Updated travis.yml again --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index b8197b8..6e0fa2e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,7 +14,7 @@ script: # Preferably you will run test-reporter on branch update events. But # if you setup travis to build PR updates only, you don't need to run # the line below - - if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT; fi +# - if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT; fi # In the case where travis is setup to build PR updates only, # uncomment the line below -# - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT \ No newline at end of file + - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT \ No newline at end of file From 84587361339ee258a13d1b0f7063ed1924557dd5 Mon Sep 17 00:00:00 2001 From: Tobias Date: Fri, 14 Jul 2017 23:40:25 +0000 Subject: [PATCH 047/161] Updated travis.yml again --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 6e0fa2e..6fa7194 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,4 +17,4 @@ script: # - if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT; fi # In the case where travis is setup to build PR updates only, # uncomment the line below - - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT \ No newline at end of file + - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT \ No newline at end of file From f84328d56830be3d7c89f1171abe3994f8df963f Mon Sep 17 00:00:00 2001 From: Tobias Date: Fri, 14 Jul 2017 23:51:38 +0000 Subject: [PATCH 048/161] Added simplecov back to spec_helper.rb --- spec/spec_helper.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 251aa51..f7a4a25 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,8 +1,11 @@ +require 'simplecov' +SimpleCov.start # This file was generated by the `rspec --init` command. Conventionally, all # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`. # The generated `.rspec` file contains `--require spec_helper` which will cause # this file to always be loaded, without a need to explicitly require it in any # files. + # # Given that it is always loaded, you are encouraged to keep this file as # light-weight as possible. Requiring heavyweight dependencies from this file From fbadd869c0f6a1c961c4e43aabd92d58e196967e Mon Sep 17 00:00:00 2001 From: Claire Scheele Date: Sat, 15 Jul 2017 21:30:47 +0000 Subject: [PATCH 049/161] Deleted events view folder, controller, model. Deleted project model dependencies on events. Deleted events table from schema.rb. Deleted events code from application view and welcome view. --- app/controllers/projects_controller.rb | 2 -- app/models/event.rb | 3 --- app/models/project.rb | 1 - app/views/events/_form.html.erb | 16 ------------- app/views/events/edit.html.erb | 3 --- app/views/events/index.html.erb | 15 ------------ app/views/events/new.html.erb | 4 ---- app/views/events/show.html.erb | 32 -------------------------- app/views/layouts/application.html.erb | 3 --- app/views/welcome/index.html.erb | 6 +---- db/schema.rb | 13 ----------- 11 files changed, 1 insertion(+), 97 deletions(-) delete mode 100644 app/models/event.rb delete mode 100644 app/views/events/_form.html.erb delete mode 100644 app/views/events/edit.html.erb delete mode 100644 app/views/events/index.html.erb delete mode 100644 app/views/events/new.html.erb delete mode 100644 app/views/events/show.html.erb diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 853dfce..3355d98 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -10,13 +10,11 @@ def index def show @project = Project.find(params[:id]) - @all_events = Event.all session[:current_project_id] = @project.id end def new @project = Project.new - @all_events = Event.all end def edit diff --git a/app/models/event.rb b/app/models/event.rb deleted file mode 100644 index 367df41..0000000 --- a/app/models/event.rb +++ /dev/null @@ -1,3 +0,0 @@ -class Event < ActiveRecord::Base - belongs_to :project -end diff --git a/app/models/project.rb b/app/models/project.rb index a674721..e656f71 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -1,5 +1,4 @@ class Project < ActiveRecord::Base - has_many :events has_attached_file :image, styles: { large: "600x600>", medium: "300x300>", thumb: "150x150#" } validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/ end diff --git a/app/views/events/_form.html.erb b/app/views/events/_form.html.erb deleted file mode 100644 index 82367c9..0000000 --- a/app/views/events/_form.html.erb +++ /dev/null @@ -1,16 +0,0 @@ -<%= simple_form_for(@event) do |f| %> - <%= f.input :name %> - <%= f.input :description %> - <%= f.label :starting_time %>: - <%= f.datetime_select :start_time, { :include_blank => false } %> -
- <%= f.label :ending_time %>: - <%= f.datetime_select :end_time, { :include_blank => false } %> -
- <%= f.input :location %> - <%= f.input :repeats, label: "Repeats:", collection: ["Yes", "No"] %> - - - <%= f.button :submit, class: "btn btn-md btn-success" %>

-<% end %> - diff --git a/app/views/events/edit.html.erb b/app/views/events/edit.html.erb deleted file mode 100644 index 2be2ec7..0000000 --- a/app/views/events/edit.html.erb +++ /dev/null @@ -1,3 +0,0 @@ -

Editing Event

- -<%= render 'form' %> diff --git a/app/views/events/index.html.erb b/app/views/events/index.html.erb deleted file mode 100644 index f607c83..0000000 --- a/app/views/events/index.html.erb +++ /dev/null @@ -1,15 +0,0 @@ -

Listing Events

- -
-
    -<% @events.each do |event| %> -
  • -

    <%= event.name %>

    <%= event.project.name %> -

    <%= event.description %>

    -

    -

    -
  • -<% end %> -
      - -<%= paginate @events %> \ No newline at end of file diff --git a/app/views/events/new.html.erb b/app/views/events/new.html.erb deleted file mode 100644 index 99b44cd..0000000 --- a/app/views/events/new.html.erb +++ /dev/null @@ -1,4 +0,0 @@ -

      New Event

      -<%= render 'form' %> - - diff --git a/app/views/events/show.html.erb b/app/views/events/show.html.erb deleted file mode 100644 index 4a6c489..0000000 --- a/app/views/events/show.html.erb +++ /dev/null @@ -1,32 +0,0 @@ -

      Event Information

      - -

      - -
      -
      -

      <%= @event.name %>

      -
      -
      -

      <%= @event.description %>

      -
      -
      -

      This event will start on <%= @event.start_time.to_date %>.

      -
      - -
      - Location: - <%= @event.location %> -
      -
      - -

      - -<% if can? :manage, @project %> - <%= link_to 'Edit Event', edit_event_path(@event), class: "btn btn-md btn-primary" %> | - <%= link_to 'Home', root_path, class: "btn btn-md btn-primary" %> -<% else %> - <%= link_to 'Home', root_path, class: "btn btn-md btn-primary" %> -<% end %> - -
      -
      diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 7559955..65b8c5d 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -35,9 +35,6 @@ - <% if can? :read, :all %>
-

This event will start on <%= @event.start_time.to_date %>.

+ <% if @event.start_time && @event.start_time.to_date %> +

This event will start on <%= @event.start_time.to_date %>.

+ <% else %> +

Event time has not been set!

+ <% end %>
diff --git a/app/views/projects/show.html.erb b/app/views/projects/show.html.erb index faf795b..cd26482 100644 --- a/app/views/projects/show.html.erb +++ b/app/views/projects/show.html.erb @@ -51,7 +51,11 @@
-

This project will start on <%= @project.start_date.to_date %>.

+ <%if @project.start_date && @project.start_date.to_date %> +

This project will start on <%= @project.start_date.to_date %>.

+ <% else %> +

Project start date to be announced

+ <% end %>
@@ -59,7 +63,9 @@ <%= @project.location %>
-

Project <%= @project.name %> Has <%= @project.volunteers %> volunteers, needs <%= @project.volunteer_capacity - @project.volunteers %> more!

+ <% if @project && @project.volunteer_capacity %> +

Project <%= @project.name %> Has <%= @project.volunteers %> volunteers, needs <%= @project.volunteer_capacity - @project.volunteers %> more!

+ <% end %>

Upcoming Events

diff --git a/db/schema.rb b/db/schema.rb index a4ef51e..618728f 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: 20170712234605) do +ActiveRecord::Schema.define(version: 20170714213211) do create_table "events", force: :cascade do |t| t.datetime "created_at", null: false @@ -26,6 +26,14 @@ t.integer "project_id" end + create_table "manager_relationships", force: :cascade do |t| + t.integer "user_id" + t.integer "project_id" + end + + add_index "manager_relationships", ["project_id"], name: "index_manager_relationships_on_project_id" + add_index "manager_relationships", ["user_id"], name: "index_manager_relationships_on_user_id" + create_table "projects", force: :cascade do |t| t.datetime "created_at", null: false t.datetime "updated_at", null: false @@ -34,13 +42,13 @@ t.string "description" t.string "string" t.integer "volunteer_capacity" - t.integer "volunteers" t.string "location" t.string "image_file_name" t.string "image_content_type" t.integer "image_file_size" t.datetime "image_updated_at" t.integer "hours_per_week" + t.integer "manager_id" end create_table "skills", force: :cascade do |t| @@ -104,4 +112,13 @@ add_index "users", ["email"], name: "index_users_on_email", unique: true add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true + create_table "volunteer_relationships", force: :cascade do |t| + t.integer "user_id" + t.integer "project_id" + t.string "role" + end + + add_index "volunteer_relationships", ["project_id"], name: "index_volunteer_relationships_on_project_id" + add_index "volunteer_relationships", ["user_id"], name: "index_volunteer_relationships_on_user_id" + end From af7cee67aa1846da6e6d6e687b5f17cc2ae209b1 Mon Sep 17 00:00:00 2001 From: Claire Scheele Date: Sat, 15 Jul 2017 21:57:49 +0000 Subject: [PATCH 052/161] Wrote migration to drop Events table. --- .../20170715215531_drop_events_table.rb | 9 ++++++++ db/schema.rb | 21 +++++++++++++++++-- features/delete_events.feature | 13 ++++++++++++ 3 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20170715215531_drop_events_table.rb create mode 100644 features/delete_events.feature diff --git a/db/migrate/20170715215531_drop_events_table.rb b/db/migrate/20170715215531_drop_events_table.rb new file mode 100644 index 0000000..89f9fe0 --- /dev/null +++ b/db/migrate/20170715215531_drop_events_table.rb @@ -0,0 +1,9 @@ +class DropEventsTable < ActiveRecord::Migration + def up + drop_table :events + end + + def down + raise ActiveRecord::IrreversibleMigration + end +end diff --git a/db/schema.rb b/db/schema.rb index 90e79d3..e51f32a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,15 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20170712234605) do +ActiveRecord::Schema.define(version: 20170715215531) do + + create_table "manager_relationships", force: :cascade do |t| + t.integer "user_id" + t.integer "project_id" + end + + add_index "manager_relationships", ["project_id"], name: "index_manager_relationships_on_project_id" + add_index "manager_relationships", ["user_id"], name: "index_manager_relationships_on_user_id" create_table "projects", force: :cascade do |t| t.datetime "created_at", null: false @@ -21,13 +29,13 @@ t.string "description" t.string "string" t.integer "volunteer_capacity" - t.integer "volunteers" t.string "location" t.string "image_file_name" t.string "image_content_type" t.integer "image_file_size" t.datetime "image_updated_at" t.integer "hours_per_week" + t.integer "manager_id" end create_table "skills", force: :cascade do |t| @@ -91,4 +99,13 @@ add_index "users", ["email"], name: "index_users_on_email", unique: true add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true + create_table "volunteer_relationships", force: :cascade do |t| + t.integer "user_id" + t.integer "project_id" + t.string "role" + end + + add_index "volunteer_relationships", ["project_id"], name: "index_volunteer_relationships_on_project_id" + add_index "volunteer_relationships", ["user_id"], name: "index_volunteer_relationships_on_user_id" + end diff --git a/features/delete_events.feature b/features/delete_events.feature new file mode 100644 index 0000000..1ad195b --- /dev/null +++ b/features/delete_events.feature @@ -0,0 +1,13 @@ +Feature: Refactor Events + As a volunteer for Engineers Without Borders + I do not want to see an Events Listing page + Because it already exists on the main EWB page + + As an admin + I do not want to see an Events Listing page + Because I want to reduce redundancy on my website + + Scenario: On the Home Page + Given I am a new, authenticated user + Given I am on the home page + Then I should not see "Event Listings" \ No newline at end of file From 95878946e11c9dcb4aafe9d832a541c736ea65fa Mon Sep 17 00:00:00 2001 From: Claire Scheele Date: Sat, 15 Jul 2017 22:42:32 +0000 Subject: [PATCH 053/161] Wrote cucumber test for deleted events page. --- app/controllers/projects_controller.rb | 2 +- app/views/projects/_form.html.erb | 1 - app/views/projects/show.html.erb | 17 +---------------- db/schema.rb | 19 +------------------ features/delete_events.feature | 25 +++++++++++++++++++++---- 5 files changed, 24 insertions(+), 40 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 3355d98..463b43a 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -42,7 +42,7 @@ def update private def project_params - params.require(:project).permit(:name, :description, :start_date, :volunteer_capacity, :volunteers, :location, :image, :hours_per_week) + params.require(:project).permit(:name, :description, :start_date, :volunteer_capacity, :location, :image, :hours_per_week) end def destroy diff --git a/app/views/projects/_form.html.erb b/app/views/projects/_form.html.erb index ba90274..ed048ae 100644 --- a/app/views/projects/_form.html.erb +++ b/app/views/projects/_form.html.erb @@ -5,7 +5,6 @@ <%= f.label :Start_Date %>: <%= f.datetime_select :start_date, { :include_blank => false } %> <%= f.input :volunteer_capacity %> - <%= f.input :volunteers %> <%= f.input :location %> <%= f.label :Time_Commitment %>
<%= f.input :hours_per_week %> diff --git a/app/views/projects/show.html.erb b/app/views/projects/show.html.erb index faf795b..7371cad 100644 --- a/app/views/projects/show.html.erb +++ b/app/views/projects/show.html.erb @@ -25,7 +25,6 @@

Project <%= @project.name %>

-<%= link_to "Create Event", new_event_path, class: "btn btn-md btn-success" %> <% if can? :manage, @project %> <%= link_to 'Edit Project', edit_project_path(@project), class: "btn btn-md btn-primary" %> <%= link_to 'Home', root_path, class: "btn btn-md btn-primary" %> @@ -59,22 +58,8 @@ <%= @project.location %>
-

Project <%= @project.name %> Has <%= @project.volunteers %> volunteers, needs <%= @project.volunteer_capacity - @project.volunteers %> more!

+

Project <%= @project.name %> Needs <%= @project.volunteer_capacity %> more!

-

Upcoming Events

-
-
    - <% @all_events.each do |event| %> - <% if event.project_id == @project.id %> -
  • <%= link_to event.name, event %> -
      Date: <%= @project.start_date.to_date %>
    -
      Location: <%= event.location %>
    - -
  • - <% end %> - <% end %> -
-


diff --git a/db/schema.rb b/db/schema.rb index e51f32a..d04c60d 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -13,14 +13,6 @@ ActiveRecord::Schema.define(version: 20170715215531) do - create_table "manager_relationships", force: :cascade do |t| - t.integer "user_id" - t.integer "project_id" - end - - add_index "manager_relationships", ["project_id"], name: "index_manager_relationships_on_project_id" - add_index "manager_relationships", ["user_id"], name: "index_manager_relationships_on_user_id" - create_table "projects", force: :cascade do |t| t.datetime "created_at", null: false t.datetime "updated_at", null: false @@ -29,13 +21,13 @@ t.string "description" t.string "string" t.integer "volunteer_capacity" + t.integer "volunteers" t.string "location" t.string "image_file_name" t.string "image_content_type" t.integer "image_file_size" t.datetime "image_updated_at" t.integer "hours_per_week" - t.integer "manager_id" end create_table "skills", force: :cascade do |t| @@ -99,13 +91,4 @@ add_index "users", ["email"], name: "index_users_on_email", unique: true add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true - create_table "volunteer_relationships", force: :cascade do |t| - t.integer "user_id" - t.integer "project_id" - t.string "role" - end - - add_index "volunteer_relationships", ["project_id"], name: "index_volunteer_relationships_on_project_id" - add_index "volunteer_relationships", ["user_id"], name: "index_volunteer_relationships_on_user_id" - end diff --git a/features/delete_events.feature b/features/delete_events.feature index 1ad195b..615b96c 100644 --- a/features/delete_events.feature +++ b/features/delete_events.feature @@ -3,11 +3,28 @@ Feature: Refactor Events I do not want to see an Events Listing page Because it already exists on the main EWB page - As an admin + As a project manager I do not want to see an Events Listing page Because I want to reduce redundancy on my website - Scenario: On the Home Page - Given I am a new, authenticated user + Background: + Given I am a project manager Given I am on the home page - Then I should not see "Event Listings" \ No newline at end of file + + Scenario: On the Home Page + Then I should not see "Event Listings" + + Scenario: On a Project Page + When I follow "Project Listings" + And I follow "Create New Project" + Then I should be on the new project page + And I fill in "Name" with "Tester Project" + And I fill in "Description" with "Tester Project for Events" + And I fill in "Volunteer capacity" with "25" + And I fill in "Location" with "Berkeley" + And I press "Create Project" + When I follow "Project Listings" + Then I should be on the projects page + And I should see "Tester Project" + And I follow "Tester Project" + Then I should not see "Create Event" \ No newline at end of file From 765efb2de9d2d6c6dda21c2998efdf48be07e1c6 Mon Sep 17 00:00:00 2001 From: Claire Scheele Date: Sat, 15 Jul 2017 22:55:48 +0000 Subject: [PATCH 054/161] Removed Events details from existing Cucumber tests. --- features/manage_events.feature | 41 ----------------------------- features/manage_projects.feature | 1 - features/view_event_info.feature | 12 --------- features/volunteer_register.feature | 1 - 4 files changed, 55 deletions(-) delete mode 100644 features/manage_events.feature delete mode 100644 features/view_event_info.feature diff --git a/features/manage_events.feature b/features/manage_events.feature deleted file mode 100644 index 8a1ae1a..0000000 --- a/features/manage_events.feature +++ /dev/null @@ -1,41 +0,0 @@ -Feature: Managing Projects - As a project manager - I should be able to create and edit events - So that volunteers can sign up for individual events - - Background: - Given I am a project manager - Given the following users exist: - | email | password | first_name | last_name | - | admin@gmail.com | testPass | Admin | Guy | - - Scenario: Creating and Updating an Event - Given I am on the projects page - When I follow "New Project" - Then I should be on the new project page - And I fill in "Name" with "Tester Project" - And I fill in "Description" with "Tester Project for Events" - And I fill in "Volunteer capacity" with "25" - And I fill in "Volunteers" with "10" - And I fill in "Location" with "Berkeley" - And I press "Create Project" - When I follow "Project Listings" - Then I should be on the projects page - And I should see "Tester Project" - And I follow "Tester Project" - - Then I should see "Create Event" - Then I follow "Create Event" - Then I should be on the new event page - And I fill in "Name" with "Tester Event" - And I fill in "Description" with "Tester Event basic description" - And I fill in "Location" with "Berkeley" - And select "Yes" from "Repeats:" - And I press "Create Event" - - Then I should see "Tester Event" - And I should see "Tester Event basic description" - And I should see "Berkeley" - - - diff --git a/features/manage_projects.feature b/features/manage_projects.feature index 578272d..749e8f2 100644 --- a/features/manage_projects.feature +++ b/features/manage_projects.feature @@ -16,7 +16,6 @@ Scenario: Creating and Updating a Project And I fill in "Name" with "Remove Snakes From Boots" And I fill in "Description" with "Assist toy cowboys with recurring problem." And I fill in "Volunteer capacity" with "2" - And I fill in "Volunteers" with "1" And I fill in "Location" with "Andy's Room" And I press "Create Project" When I follow "Project Listings" diff --git a/features/view_event_info.feature b/features/view_event_info.feature deleted file mode 100644 index eb1e3f9..0000000 --- a/features/view_event_info.feature +++ /dev/null @@ -1,12 +0,0 @@ -Feature: Viewing Event Information - As a volunteer for Engineers Without Borders - I should be able to view information about various events - So that I can pick events to attend - - Scenario: Clicking on an Event - Given I am a new, authenticated user - Given I am on the events page - When I follow an Event Link - Then I should see "Event Description" - And I should see "Event Dates" - And I should see "Event Location" \ No newline at end of file diff --git a/features/volunteer_register.feature b/features/volunteer_register.feature index 6764274..96f812d 100644 --- a/features/volunteer_register.feature +++ b/features/volunteer_register.feature @@ -12,5 +12,4 @@ Scenario: Filling out the Volunteer Form by subscribing And I fill in "user_password_confirmation" with "reachforthesky" And I press "Sign up" Then I should see "Update Your Profile" - Then I should see "Event Listings" Then I should see "Project Listings" From 1c38079f510f370115bee9ff0f6f739184b265ed Mon Sep 17 00:00:00 2001 From: Bill Yeo Date: Sat, 15 Jul 2017 23:04:29 +0000 Subject: [PATCH 055/161] Redo UI --- app/assets/images/main1.png | Bin 0 -> 115937 bytes app/assets/images/main2.png | Bin 0 -> 120939 bytes app/assets/images/main3.png | Bin 0 -> 84758 bytes app/assets/stylesheets/application.scss | 94 ++++++++++++++++- app/views/devise/registrations/new.html.erb | 35 ++++--- app/views/devise/sessions/new.html.erb | 33 +++--- app/views/layouts/application.html.erb | 72 +++++-------- app/views/projects/index.html.erb | 65 ++++++------ app/views/users/show.html.erb | 97 +++++++++-------- app/views/welcome/index.html.erb | 110 ++++++++++++++------ 10 files changed, 325 insertions(+), 181 deletions(-) create mode 100644 app/assets/images/main1.png create mode 100644 app/assets/images/main2.png create mode 100644 app/assets/images/main3.png diff --git a/app/assets/images/main1.png b/app/assets/images/main1.png new file mode 100644 index 0000000000000000000000000000000000000000..85a30169bfe22f79b1661ca94b83d2e12a1e9e51 GIT binary patch literal 115937 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 * zI0t2~Yse}lq6!B(4|v>ojHCk(7V@soRZ*%xR)mSO4KO( z(wB6_>`YozJes( zuD^r23Sk2l`dCi5tM#;gjOz``p14A;BoOup5^f_QqU`M)ZI*HdR3Whn@Y_@ zod@FCguoyai1hEE_gqW=?)yK69;*k(_$G}icjd8txVx=Q9Y{G7$~Z0QpUZz|3TIDu znn9nuyY`uSzfA~?%Xv5_a<3Y%QzPYE6DC)pp6vaiADv=Ewkc0|_cKU&fJOTYbLsUv z|7&U+dl_AGkjIlEL7@vsAN9wk$J|*#xeVb*pc;=|>`*0GeT(sNIH1DY8a65pduX>E zDzh{St7BW0fh66+dmq7rYuJ&`=Y`>?HhZY%M1xUxznZ&Ty(%oP=NVR}j{u@P$&m7& z#*8DIJ8I7L^6{b}1p#OsLGnu`$$ai>D9#glt91%~VGQ6YRG+}L2npx)+HShHitM91 zqc7b`TMYQA@Yn`$Jv=Z2Tc_i%)ZL%)-h%{_89@Adh?KBg-JQ3S-w}&|%zNHN-m+eK z@eob6CbG%EG=I+tonzKpO=-3kDS&qhqgr7|Pxq+bZZ3%&L`+dPmxe}Jt{^%sLZkCT z*neSQfLO(z-t5}W?%hC*_3W-(c1#d_E}p}_BX_dH@AT#-Qu;7uked>4FmmeL!?lWF#Mzn7kU>ZSDMS6)u9y!b3EXT}-a(Z{ew ztA8r3barumREjYXi}vEV!Kc!1cK>~fN!QcT?kvH_j~RwPNqb`klRS2w47zA_*-(sG zxYH_8NFez$FAbzG$02`Wv`iv-C6-?(x9UOfIyhrCW2eJOIya(P*G9DBrE69(mlLzVDdMc`R=$V=95IOS}&hhPhZEV z3d1XHK#AR$pVCV{W%z&;L~~5B>%5v4Ae5VE)BpfL07*naR8quH=U)6IZxNJAv#E(N zR*cxGXz8uvskeFidXZI)r#}^46}_ekg9xRQ6GrVQn0C=zqMC978(Bgho>@>LY8}T+ z)Cr}@hSntfKshoFIp?5IrYHX}z4B-^{qifKsRP`3z2dDci_)TKs@ULdq%7wLQU@gd zc@=;w`zj!sHr8C<7Q%`1myt(mykSsQqw_3lodwuOTJMwu=0|C)bS zW=VzqQ63+O#+_Bx@dEDMvtP{s97Vwu{hUqFcvH9D5fL2WXB6e@k$Rn4$0iYD2%JO% zm78DyrMXC7p-_WH;`xiPkefh=so$>v< zX73S;08)34Fvt{?yLid07G$4u_h zr*OG7ox5lP%f;>VQvpnI_h>o2^Tv-@9b^oiEdZLsZo~-y(t3=`nVz%>^fE(C10~&{ zNU}dM?vQCSotjJ6KYcH~_;go#K#(CwGzDnz*$g$AHk(jRc0pc^St6VSUda`EgV`ki zZdA7F?q|WE*L^KdDe@By%wO}lxYBC)A51M^sm=RYHFRFLXcL_*nE{2L-ZNyxl7n{O z0dxzO`!0}_4V}L_kWb}>qF~0Lcr+KiZQss z_6iDV$WB#4D#&K*lP5+e+kud*+@-V5>&~4*%VYEA}0*p@|Z+Z6~5M!0m@YkSyYb9YmIFgcoK6Et$6jp zL*aZ>&F!gAc`IRG`;&4_GK`@5& z$TME(lf0MxY$tQlwb>$U<+jnFzP$MMcC);EQ> zqKsS}fG>=OgW*AB;d!XVWW<`-=lZO3oqbuo9+Ny(*H>u7A=Lm`Pl;-T07YSVTm)us zC_RQDI8xa;PB;mk|CuNQ(u7^f2#HFo*2#xR6Fdio=D;3^s=*mc2F?ZGF~q!(tX(6E z^6= zZNM>j{K~Vb{kQ+;^xc2HMR0>HO0JGLu%I^|kb6scmrw{V}GN zt}ISLc_Lt5`pA2I&bfN!t>|@b;Bg(oMX~Ya(NO~vXVUiEY`S#=(mza~ zaN?r5;rVoTaf@)pIMN5J>&EJ^nJU8hVHP$RVRa9bb!?<5(MI$ZPt%1P92!nNUwtuc zKXW-Pf9_X=?#t<||KT4g?Ku3=c_ft1+pIxW$!1yGC>*an;=u~@VmMuNPMz{LA%2(% zK?tF?05L@%STlojY=gxppgl4Bc_^{x^Nq(WF2WfoyjW-Ka7c`=kLCs&FaqKNHpb}IHOj@&O;0HGpLm~|Na1*M8A%Y=VB!+Y(TP*}}kqg}QqG+q(vZ{ebs;0xnD#q^BLG|~sNp)asXtfR`yUBo?a zwZ=1Nx6?N7bwY+KCpy5P${Yl#Ug-edHX~Ey#e!5L;9@u&T>CC&sk@VGYD*a16UJ(v z0js*m5`Z;~47gH;iy7zjA+4Nwe?}rQ`5eMa&2`u8oy=uBD8YY^%r-div4`?4YW4d3 z3#OQeVN#6_!pXh6_Kyn4CV-E@%MT0*pRK`~vS)DAM}{-}pn`93VsJ=IbEzN14dJQ} zG%UrS$FL`Pd$P(f#I)7u%deP<8vhW_l4DnLj#sg}eiaF)ZgeV{X^$;340+|j2lwxL zZoBE3@r!`bNd}O9o@nz(TC%yTBstWb2C2iC5i0t`_Plg8{q6t!?+Mo*Pv85&_tQp2 zdHC`GrR3&}$kcbCDP51xN)0>dxi7wwa@(Iv*KdAER!N;xIN2l@Z6ReGQz5He>Wmz6 zAyi>(`043;5OJQVaDzVCM7qifee}tzgc!~n|3dhn;gM{>`k9F+4eHhl8;fq5#a4#d z6^gbv=)sc9(`wt?pG=#d-b|M-oKs7j2;3x9yPMLL)<;vTg)DnGEkq-4%uJ=lL%F~D z{WIeo>E_$l<$fa&a0@ZDk~;O@R=@Gfsr46sB^^yXlTPJdYlhgp`;Y%o+P^=SZ6y0E zv+5yB6oc=Mc*e+|L#im6V(NK|K-OdQYmvnc&F(n}_s-gyNiqYeTRKvO^uz$g1|Zxq z;}XoQJ9j6Qtvo1zPeog0AtyxuJ=ZXpD%4)jSn4pO%>x%0N}E&ZD<;5{(L487DA~02 zh+tZX{oQ6CTB+Kw%5=bnpSTS7ut|A^@)1w3_jT#|k5hj0`wkAAqqv!M+#T7-Cms;2 zSE#Nu$=b(u+GiLH98RSP^>2XT5lL(N+O?x3D_I6mcj#d4Nhg+8@2B1A_vO3z(Lt+( z;O0wS--Fb8MT#W^KGcR=5IIyK)oVHmzx!hqnY&6l?(6&rfXg)uTc>6Q>|?0@hH_IM z2N1RR7>gB+RmL#T z@LWv@?&mTM_3+~EH@tKlbs1CU&EtDj_ZOZ%#2z!$yl)`o1}Eg+bl;?1XG@bQzrLhp zSecHuEe<}Ca#zOuyw4Pku6Ht6^lCb-Psn zwI{HdCZ)9f=(J;)LR>UZ0t^Y>oFicXqJyyig{!G;RBEh3^W+Q9rgyLXnSmRp>BDPp zV#Dd8M7ZkcS$6OGJK$ZL+uD1(daZZ65MI>n9(()y(_j1b-z2N{Wcq*p`1jHefA2MI z)br{5%PLnFMy-iu?Y(%IKK=2eIpTw<_uL==N8Z9?MeFG9;hM#BX*N!D1+{wPZ32gR zBJfoQ;tYFiaqok4e2#L8aO_C9OD<6P=`{6|JL>2gk+&k&nme z4j`V`0PU9?W+i|DRx=t!J_U}AqF_FC>5ByFS6Ft6t}7^^NC1yMb5#T%gCIK6CRF?O z8Pq?{m}CV`D$r&=HzP@VOTyF^4;Hx2zjW z_?_|bdFpLdfny23pt z^GqH!T@Z?*N~!&wQl*IWZ1px+LKSx+24^&~DD@0oU=GeCcOId(NJ=_TkaNfPiY#xW z2bs&`xuXobY+dI?Mm6uX$FprHgI0LyAj_0QV159A<^YG6_g?_8ap-+~_B;cr&%QjH zsuUq=dxbcd`T%NxIFh@mx-?5k2=5@gKckeBm**IP8fDZPV6A`_op-=VpZa&3$H&%R zlDlKo#lVPAd@VEfnfM2Zu;xxJ(YOay&$E$(%sDR=xp}D@5DVi8?L8HJ)gweADVrD~ zwLJM)dg4F+PYr-%Gn|X_l{={ySo-I$eUMcU`dnY1Dof1$>kyfpsQT=mZrDz+GQ&rP zP{47pvMA}9XP(yjdm+8?qi>`?|H(g3lP7ISieT}w4KQ0_QOOKD|^}r5O3o#uOrL~>7U5LoV z;Ds$ErRdm-`CNx;kz2|Q=PwWYS&jIt_3hh>1n6(4&u-o{fn+ybyEd8b$@S;uqb)+w z?&f}@lPSlXZ0ZQx#B35iVyAV>J#!{#wEg;Tq}{LlvPF5s_@&0w$#U28o{b*f!W%zL z3xD`(%3q!`^2ID?<=;%GeGOCPp1U6j)+_Kv?D?5H4m)Hwr^z*uV+nu!|2I z3b6+cMobEc{42;LfoMni5MC%eRT07)A_O4}5%b4O4r+n%0IAy`i#E57Eia4_yC5c| zxcano?KRx?Ngls3ogY@NYgMxJepTRHgxE0|Lki0qV`e#sMP)VaAPtLh_FdB<&!CD9 z{y;nB{ql_5F{4^>z*+~+XB*j*b(TtKr+UZ%s2g|0h!MwOK+8bO5O4@7 zXQ$BrpyZxUNw^ji))=H12R_j7LWEgj+HKGGquI6e-jsP>4ts}k+^#$|Xy!3FC4jcr zo00!I+t%_SV3&pD*+J)19m<;5M4df;#UT$`YaGk~-wMFNDmGn20zxRj+qmBIK^wt( zJRL z43Hai>EMh+BTG1*Gi8$)auR**F`?+QXpSv?s|jHNaFY& zyVY`$=YekSl8`DP!qgo2ZqYyuTpR70hkI(|g9GGdS#n|S>c&3x(tf!+bR4%Frzy3d z!CvgSn#%X+n|&%5ol}Bil(+k7wEgwJosP>Rc*b&2_4eB{1MYx^N=R_N<6#FAET)3^ru(&tEa;I#(#9%BiR;+Ch5|~HO??u( z%lm{^iP1W%sFg8sBl5~juE^Wubc3DZ)SqCvyD&e`^rYqwsEStXyd zYQ|T1wOIEE(X+$p1t9==zzg1A+wjXEOX1c&_Sv4+%P2isT)Qh~^C9Pub=t57tL{D0 zE&QMGH`!MhjPUdsQzs$>hb~%DBYdw(Gh&Ua4oPUM7uszk5lxN*i?3>w)kG$Rp;7z| z04)+vVUQ<3HiZ}VaE3FU@55d17xp9QoQhaW4tva3J7xeHL}a<>UWB}tM25BlJRzQs z+7%;MVw_{fS~gGJok!igSrw|%M(vk;(>9($D6R^XK|7`htyAd5iHQA)H|e=smneH0 z4|argcMKRl3_#fR4x*lSI!Dd!zlntUFTC_y>BaNkOrPDjg$%=@Elimk=O@UZ0HgC@DZo6GuQw;-`qH@{;N#pt*}f}=y8tg_Mif{lhJKedo@ zYOtdt{ptSuMU5xutMzWMTQ2kRH`BdBPkOsUk9gNf>UP+g09FU&na+zq_U}AMOCMZQ z|E1O%?%GC+QM?hZ#>R@TIP3x3#A3xJi2mTTcsdq_Hs*)X zR&NV;kuI!#Kh5m&;c!~mQ*yHbdpnfyY@PR z*2qb1i8>kqhB11$V(lwRccE9_(gCn@Ou~oM12T(@blGO;!i{KZJns# z?y1lScq0iG0tmrZAC$rc=(d727i_;HHTj|(Jjf|^0gQQWhhdD|6KKMjWJKbSiS**j z5ra=WG(55SBS*EHvww-96rmNj2xPh`S6=2FvzLmV4&pg52!VGr>fIiV7EH#aOGFtx z0P9f|!CDFS;KQK^@#eyBQBq#2z?@`jR1@|W9L$#UnY zK;?DvVIKe?$I1-_N>L#hm{h(nf+Pc%(WO|C?nU<;EHX2~WqUlQ9DE#la@MP)tX6f< z!zhK7J8{iaFF6Bi6^2uIj(NcgH>bg?kEQL|x6@}vlpPy~)F!ps!N9cP+!J{)^|OJV zsv(k}Ac;BX{cCBzkD#Re65!|&{rp#jHD-r(_jYIlr$c2T z%F^y)y5r||KA0nZ$huJQXzmF187eF=p`{!`j!WsL5WS8iY!?nK&&+8zZB09?Tj`VQ zpJWd|g!*EtcaAwvH=_VznmIg`JFV0Ec40uT{U1s^?v^cY4f{(oUYtoN&od^ zK7H}F$l<*^>9vopqx|8BI|vbGM_B%FyTyYEuqHMhzvA~e&=3DiGtFU*(C(Op4)1<^ zC=3cnbSa~E2iPwe!38#{Egtc6>$QRNCK4FvGci;QO_@xkj%;y+U z;A2_Xx;^u*36`(((i_sFTsjAgTys$72ugMg45hJi35WCy*@uV_FCk1qDe^5%#ZqlqIMr^E)4cfFfwGo`%oJNi zDAD)LW@xaHLaJ88T(zo3pFFQ8li`f`c%P9;Hv4?4qFEjsYETbbRT+W!a9*z_%*}hx z8uu@rV~kvp+&>$_u)ds*G-TCQdF;XsyCYKzE%hk($&<;n0(cu0s)+^@wui-GBFc>HRle(*(9D zMU7@5FY(pk&_+w^`f^OHkxqEFhjRa{dcq*pTtjqqo-st>H1=sN24A4W2-ifPON)!& zDU6QvecSA(&a2N~QN|JK2`{1_dS??UAj&X0n(F1NLChE@I`@rly~t8WFKszp7#C{G zn_G$lS}e&niQKEKRJ{Xog7{EVn`)_VOIIc?2=(-dhi8zh2Q{?^gK6ZP(gaId;t5XV z9>?nPhrvCzF}HdB4&FUK5Vcj|kbc>dbH9+v-~4jA^ZasJX{7;Y;>!L1_8+C?|MO4M z*Pzt@<@n=RVW(+clM(h;a^$71G{E378S6`7^XLGSEc!b;G@dM-u zPk&eJ>ed4uYIAU&CY|1ERg&c9r%5GB_zyW911KIBf_ALWFxfSbuiMF;T56%B|yx7BZ07C1&CV%>R z>P7=@HkoBl$);0!(+^X)B?8*EnFRT1NEwJO2BAtb)HdhbE`SI^eSYHcG{JE6Y0PLo zi0-zZq}vbf&;qbg(3Rs5J^j+<^mqTO|1kZ|Z~ZC*wny#u4nS3u;_x>gqO+zJb+u z6b7D$3ig=1!gZI^U;0krZ~nC}eS33xz4M*-Z_{`)O_7m_nsFDju(g#nf(>;J zG?I;NAo*&vFk;O4N0ju7$AlQ#(nQ;()NM1~xb_}G3h-&5N-D|VK8tjY*FJw?OsJ@@ zTMktxA78eqqN^*K99B#r*+DkQA4J%qGzCP8?ysmVAB!B0^_w>UzSj03mrY+um9IRK zZeFD2B^(K_I`bE=r@eph-Sm0FcYp6!zeKaW33)*H2BkT4IA6a*d~sEIBo1#JYVRG- zK8|DNjk9pq=J2-ws^U+P|Hk2t*Tm1npW~rr-}Cp%&;BiX#^Wmvdw_MB&EPpCeVKP} z&mE=9x#cuQVPt%uGhL+?J0N1YE!^4@ikWrdgGJZ)K`NtTfl#4Pk-mz-%4NkvZ$+mSE=vR zG*%b~j&zj0qNLf0=N$*H8w;<8;fSy_B)8&FTS0~tk;di=LdaPhBnuS74Z=GIDqf8A z!hN1vM~H#F<2^g+%`+M?9X5K}>%3nWjV{mi@;MaEm!D2w{`zyNZ4lBwDykd>5CXVX zmVmW9LjciEgXI z3~cF>gA5}K#C46mIA*#EaROHLj+*mYGpc26h5XDB1Mp(1oEO%ADxcU;`z$Msjn`*W z7c)FXOxDOIvoIV6!7(ta#dDl64o9G}om zcaPk$Txa;_Qu^Z4X?~0l;<1{uhKUFFK244C&Tm{8PyfmDPo~BZHAE`1&Ldz9Iu3Li zm%rUxB58%t5zn+LAF7BXI2xOX9d-aBCyz}KUL}rg9PI3S9$p;uhle~4y5P>k`2P>S zjTxHdLE4D#1vCK+pP6!)Q_>kzwz>U($1affBNBDT49ZZ))spN zi4J}Gho4SLNI!8~-#EQGd}vV+xF+6NPTtB!k(Y+p?-4JIi6up4o(OY;)7=Ji8KPwu zIcqS)V#vj=4S(bi?8i06C)lK`b5rTo$M55%YXvqMx_CMb6&9`R@rG)%eWbI$`O8nF zm%pY|RGLid?zwn*GmU&bmnJ_`5}X%)JK*g|88Nmey3~r+u_E8yvv+C^ZOrM)3}bjq zS09JEPRJRNN;X;40SPio$S=pVne4pz`?g3TMp1tq?ej&YtN`9NeedzBPo!3<#g_C@ zz?jKh?_1wC%*3nXLuQN_bEG5-_I8g96+;9-;36GDg*>shgCF-7tV5_M9O29+@X1mR zzY|r=cRAcq0SP?d&O$=$$Hv5EA3raWaNX80-Y;X=`I*rD3k8}Aa5m?D3ifXdVm#i| zW8nLx5jp|t`EwtBiuu=_`imO4q@vwD=*CijIF^z4Y1L25_G90dzMckWrJbL?o0gHW zPVChY9dMz_bBY!C^5-AT!tbdY3k<$|U&^s-bk)j~^hQVCHZsq^4koIfJwP))7JZiK z{iSPfr{c5EKCQ$9@pePIHb*FFRC$_x@ckhRRXS-&k2F1oVRc>W;iNIQqv=#*!oet7 zsVNo9hch;&HwE6@d`&dqP<{T<$8pvJI9o|g6WSD8q0rFh3JVjS;?gC=7dhOC%^jar z$+=y5{t>jY5r9#ow|xlZ-7byDcfOjMKmSy^bK$nUWZvS-e{JT9TD6m$zVO@MOc!)Y z?HCv16lW!n7*u~M%z8nYXbySj6Nf*hdjwULEf+3F=pOz%46jwTNsE!dWkU&`l!sABB8S}X#0*FHxU%@(yJTI6}yFA8qdHM#)=hXPkQBBUCLK?AlrySy4p5X0h-3kY2wAvwDb{hQ5xWXqOmY)3@0yk z%4(i5SRw2f>k=Vkgu_u0R(dpRUm0zr(}V;Y>mf{{d1;; zI6~w2bC%)>^+nhC2mm}4qcSI15vewCpp5{&nzI$u>| zmf=Q*8Xtn<>e>tmHIeY`J9pD_Pd}-|ww-REP)Dol+U~Sa{m|rDKzA4vLB`SyDm2Hj zAA?I{g04N#Olm8>if76&XL#lH1R9D^R;Gx7Y@ zba(S(x?wyvW>kGN11NhmQdZXheqhtcn89^CNvNiFdU*K`;SJz#epxAmi>h@#s;W z$$YO3>F_$={_n56d3fkJ*#3(UFZ-K+cdGd=hc7&PypMy<@@CFoqes-_OC+nKfBUXF zv>6p?*5O-aUB8ac{##EyngLXQ|IdD?{wyr>mbP=23dC&bdJQl2NH+m)*5O*$0Xrhk zuPPJdC=?GJ;XAmeW zJt>5d@w3sIdm=;)W0~O<)+6j=%*zftYFAlu;8R3U*n)A$%TXeNd`DTcVvj{Rwh>Up z{y$t?I7c*$oWL52x*hL)@=m&Q^JC3A%MPgZcCZF|hce?9=yHcTeMf6a707e2{w4Pq z(LsPj84)GIY$YcG2g<#@7?nEB;1`)xvj

G1Z$`nbFJ?)dAsa#%Z6P&3-=T^%jT_ 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 W8{OR6?}-Zl0000N literal 0 HcmV?d00001 diff --git a/app/assets/images/main2.png b/app/assets/images/main2.png new file mode 100644 index 0000000000000000000000000000000000000000..73c7ae30deb9c722e672f1c90dbccf3ef395b851 GIT binary patch literal 120939 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 z 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 literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 125d593..48b997b 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -1,7 +1,9 @@ -@import "bootstrap"; -body { - padding-top: 70px; } + +html, body { + height: 100%; + min-height: 100% + } /* * This is a manifest file that'll be compiled into application.css, which will include all the files * listed below. @@ -72,4 +74,90 @@ p, div { #projects ul { font-size: 11px; padding-left: 20px; +} + +.temp { + background-image: url('/assets/ewb.jpg'); + background-repeat: no-repeat; + background-size: contain; + background-position: center center; + width: 100%; + height: 90%; + } +.fill { + height: 100%; + min-height: 100%; + } +.main { + background: #FFFFFF; + position: relative; + z-index: 3; +} +.main-raised { + margin: -60px 30px 0px; + border-radius: 6px; + /* box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.2); */ +} +.section { + background-position: center center; + background-size: cover; + padding: 70px 0; +} +.card { + border-radius: 6px; + box-shadow: 0 16px 24px 2px #333, 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.2); + display: inline-block; + position: relative; + width: 100%; + margin-bottom: 30px; + color: rgba(0,0,0, 0.87); + background: #fff; +} +.card-title { + font-weight: 700; + font-family: nanum-barun-gothic-regular; +} +.card-image { + margin: 0; + border-radius: 3px; + height: 60%; + position: relative; + overflow: hidden; + box-shadow: 0 16px 38px -12px rgba(0, 0, 0, 0.56), 0 4px 25px 0px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.2); +} +.btn-color { + background-color: #3D3C40; + color: #FFFFFF; +} +.bg-color { + background-color: #E5E5E5; +} +.nav-shadow{ + box-shadow: 0 10px 20px -12px rgba(0, 0, 0, 0.42), 0 3px 20px 0px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.2); +} +.btn-round{ + border-radius: 300px; + background-color: transparent; + -webkit-font-smoothing: subpixel-antialiased; + border: 2px solid #000; + color: #000; + text-transform: uppercase; + text-decoration: none; + letter-spacing: 1px; + font-weight: 400; + font-style: normal; + margin-left: 1em; + padding: 1em 1.5em !important; + transition: background-color .1s 0s ease-in-out, color .1s 0s ease-in-out +} +.btn-round:hover { + background-color: #313844; + color: white; + +} + +.btn-round:active { + background-color: #121721; + box-shadow: 0 5px #666; + transform: translateY(4px); } \ No newline at end of file diff --git a/app/views/devise/registrations/new.html.erb b/app/views/devise/registrations/new.html.erb index 34b4279..db12fdd 100644 --- a/app/views/devise/registrations/new.html.erb +++ b/app/views/devise/registrations/new.html.erb @@ -1,17 +1,26 @@ -

Sign up

+
+
+

Sign up

+
+
-<%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> - <%= f.error_notification %> + <%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> + <%= f.error_notification %> -
- <%= f.input :email, required: true, autofocus: true %> - <%= f.input :password, required: true, hint: ("#{@minimum_password_length} characters minimum" if @minimum_password_length) %> - <%= f.input :password_confirmation, required: true %> -
+
+ <%= f.input :email, required: true, autofocus: true %> + <%= f.input :password, required: true, hint: ("#{@minimum_password_length} characters minimum" if @minimum_password_length) %> + <%= f.input :password_confirmation, required: true %> +
-
- <%= f.button :submit, "Sign up" %> -
-<% end %> +
+ <%= f.button :submit, "Sign up", class:"btn-color" %> +
+ <% end %> + <%= render "devise/shared/links" %> + +
+
+
+
-<%= render "devise/shared/links" %> diff --git a/app/views/devise/sessions/new.html.erb b/app/views/devise/sessions/new.html.erb index 31f8a4d..126f350 100644 --- a/app/views/devise/sessions/new.html.erb +++ b/app/views/devise/sessions/new.html.erb @@ -1,15 +1,22 @@ -

Log in

+
+
+

Log in

+
+
+ <%= simple_form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %> +
+ <%= f.input :email, required: false, autofocus: true %> + <%= f.input :password, required: false %> + <%= f.input :remember_me, as: :boolean if devise_mapping.rememberable? %> +
-<%= simple_form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %> -
- <%= f.input :email, required: false, autofocus: true %> - <%= f.input :password, required: false %> - <%= f.input :remember_me, as: :boolean if devise_mapping.rememberable? %> -
+
+ <%= f.button :submit, "Log in", class:"btn-color" %> +
+ <% end %> -
- <%= f.button :submit, "Log in" %> -
-<% end %> - -<%= render "devise/shared/links" %> + <%= render "devise/shared/links" %> +
+
+
+
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 7559955..1002fe1 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -1,32 +1,29 @@ - <%= full_title(yield(:title)) %> - - - - + + + + + + + <%= csrf_meta_tags %> <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> - - -
- +
+
+
+
+
+ <%= yield %> +
+
- diff --git a/app/views/projects/index.html.erb b/app/views/projects/index.html.erb index d96b3cd..ffd316e 100644 --- a/app/views/projects/index.html.erb +++ b/app/views/projects/index.html.erb @@ -1,33 +1,40 @@ -

Listing Projects

+
+
+

Listing Projects

+
+
-<% if can? :read, :all %> -

<%= link_to "Create New Project", new_project_path, class: "btn btn-md btn-success" %>

-<% end %> + <% if can? :read, :all %> +

<%= link_to "Create New Project", new_project_path, class: "btn btn-md btn-success" %>

+ <% end %> -
-
    -<% @projects.each do |project| %> -
  • -

    <%= project.name %>

    -

    <%= project.description %>

    -

    -

    -
  • -<% end %> -
      -
      -

      <%= @date.strftime("%B %Y") %>

      - <%= calendar @date do |date| %> - <%= date.day %> - <% if @projects_by_date[date] %> -
        - <% @projects_by_date[date].each do |project| %> -
      • <%= link_to project.name, project %>
      • - <% end %> -
      - <% end %> - <% end %> -
      +
      +
        + <% @projects.each do |project| %> +
      • +

        <%= project.name %>

        +

        <%= project.description %>

        +

        +

        +
      • + <% end %> +
        +

        <%= @date.strftime("%B %Y") %>

        + <%= calendar @date do |date| %> + <%= date.day %> + <% if @projects_by_date[date] %> +
          + <% @projects_by_date[date].each do |project| %> +
        • <%= link_to project.name, project %>
        • + <% end %> +
        + <% end %> + <% end %> +
        -<%= paginate @projects %> \ No newline at end of file + <%= paginate @projects %> +
+
+
+
\ No newline at end of file diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index e618683..1e77cc7 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -1,47 +1,56 @@ -

Profile Information

-
+
- Name: - <%= @user.first_name %> - <%= @user.last_name %> -
-
- Age: - <%= @user.age %> -
-
-
-
- Education: - <%= @user.education %> -
-
- School: - <%= @user.school %> -
-
- Expertise: - <%= @user.expertise %> -
-
-
-
- About: - <%= @user.description %> -
-
-
-
- Availability: - <%= @user.availability %> -
-
+

Profile Information

+
+
+ +
+
+ Name: + <%= @user.first_name %> + <%= @user.last_name %> +
+
+ Age: + <%= @user.age %> +
+
+
+
+ Education: + <%= @user.education %> +
+
+ School: + <%= @user.school %> +
+
+ Expertise: + <%= @user.expertise %> +
+
+
+
+ About: + <%= @user.description %> +
+
+
+
+ Availability: + <%= @user.availability %> +
+
-

- Email: - <%= @user.email %> -

+

+ Email: + <%= @user.email %> +

-<%= link_to 'Edit Profile', edit_user_path(@user), class: "btn btn-sm btn-success" %> | -<%= link_to 'Home', root_path, class: "btn btn-sm btn-primary" %> -

\ No newline at end of file + <%= link_to 'Edit Profile', edit_user_path(@user), class: "btn btn-sm btn-success" %> | + <%= link_to 'Home', root_path, class: "btn btn-sm btn-primary" %> +

+
+
+
+
diff --git a/app/views/welcome/index.html.erb b/app/views/welcome/index.html.erb index 6fb7192..8fde3b3 100644 --- a/app/views/welcome/index.html.erb +++ b/app/views/welcome/index.html.erb @@ -1,36 +1,78 @@ -<% if not user_signed_in? %> -

Welcome to the Engineers Without Borders SF Volunteer System!

-

- If you would like to register as a volunteer, please click below! -

- <%= link_to "Sign up now!", new_user_registration_path, class: "btn btn-md btn-primary" %> -<% elsif not current_user.complete %> -

Your account has been created... but we need some more information!

-

- Before we can effectively match you to projects, we need to know a little more about you. Please take a couple minutes to complete your newly created profile with some background information. -

- <%= link_to "Update Your Profile", edit_user_path(current_user), class: "btn btn-md btn-danger" %> -

-

Other things you can do!

- <%= link_to("Event Listings", events_path, class:"btn btn-sm btn-primary") %> -

Check out current events that are happening!

- <%= link_to("Projects Listings", projects_path, class:"btn btn-sm btn-primary") %> -

Check out current projects we are working on and see how you can help!

-

-<% else %> -

You're all set!

-

- Thank you for your time completing this application, and your interest in volunteering. We will be in touch with you soon. -

-

- In the meantime, if you want to make changes to your profile you can update it at any time. - <%= link_to "Update Your Profile", edit_user_path(current_user), class: "btn btn-md btn-danger" %> -

-

Other things you can do!

- <%= link_to("Event Listings", events_path, class:"btn btn-sm btn-primary") %> -

Check out current events that are happening!

- <%= link_to("Projects Listings", projects_path, class:"btn btn-sm btn-primary") %> -

Check out current projects we are working on and see how you can help!

+ From c8e2ec30530ee9db82a54a290a0e77485b4dc04d Mon Sep 17 00:00:00 2001 From: Claire Scheele Date: Sat, 15 Jul 2017 23:34:56 +0000 Subject: [PATCH 056/161] Removed repeated code from merge in view/welcome/index.html --- app/views/welcome/index.html.erb | 36 +------------------------------- 1 file changed, 1 insertion(+), 35 deletions(-) diff --git a/app/views/welcome/index.html.erb b/app/views/welcome/index.html.erb index 8aa1090..1b9ae34 100644 --- a/app/views/welcome/index.html.erb +++ b/app/views/welcome/index.html.erb @@ -1,5 +1,3 @@ -<<<<<<< HEAD - -======= -<% if not user_signed_in? %> -

Welcome to the Engineers Without Borders SF Volunteer System!

-

- If you would like to register as a volunteer, please click below! -

- <%= link_to "Sign up now!", new_user_registration_path, class: "btn btn-md btn-primary" %> -<% elsif not current_user.complete %> -

Your account has been created... but we need some more information!

-

- Before we can effectively match you to projects, we need to know a little more about you. Please take a couple minutes to complete your newly created profile with some background information. -

- <%= link_to "Update Your Profile", edit_user_path(current_user), class: "btn btn-md btn-danger" %> -

-

Other things you can do!

- <%= link_to("Projects Listings", projects_path, class:"btn btn-sm btn-primary") %> -

Check out current projects we are working on and see how you can help!

-

- -<% else %> -

You're all set!

-

- Thank you for your time completing this application, and your interest in volunteering. We will be in touch with you soon. -

-

- In the meantime, if you want to make changes to your profile you can update it at any time. - <%= link_to "Update Your Profile", edit_user_path(current_user), class: "btn btn-md btn-danger" %> -

-

Other things you can do!

- <%= link_to("Projects Listings", projects_path, class:"btn btn-sm btn-primary") %> -

Check out current projects we are working on and see how you can help!

->>>>>>> be37b3b602d57f5195cd4c96d499a07f1297eec3 <% else %>
@@ -104,4 +70,4 @@
<% end %> - + \ No newline at end of file From 8e060474f74fab36db0e2ddc8b099cbb98a6c5a2 Mon Sep 17 00:00:00 2001 From: Arman Date: Sat, 15 Jul 2017 23:42:43 +0000 Subject: [PATCH 057/161] alphabetized and limited search terms --- app/controllers/users_controller.rb | 134 ++++++++++++++++++++++++++++ app/models/user.rb | 11 +++ 2 files changed, 145 insertions(+) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 769a6e3..5125bf5 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -17,6 +17,140 @@ def create end end + def index + @user = User.all + @search = User.search(params[:q]) + puts @search + @users = @search.result.page(params[:page]).per(10) + @search.build_condition + authorize! :read, @user + end + + def age_sorting + @users = User.all + @users = @users.order(age: :desc) + render :users => 'index' + end + + def first_name_sorting + @users = User.all + @users = @users.order(first_name :desc) + render :users => 'index' + end + + def last_name_sorting + @users = User.all + @users = @users.order(last_name :desc) + render :users => 'index' + end + + + def show + @user = User.find(params[:id]) + authorize! :read, @user + end + + # GET /users/1/edit + def edit + @user = User.find(params[:id]) + @education_choices = ["GED", "College Student", "Bachelor's Degree", "Master's Degree", "Doctorate Degree"] + @proficiency_choices = ["1 - Elementary Proficiency", "2 - Limited Working Proficiency", "3 - Minimum Professional Proficiency", "4 - Full Professional Proficiency", "5 - Native or Bilingual Proficiency"] + @availability_choices = ["Not Available", "Morning", "Afternoon", "Evening", "Any Time"] + @time_commitment_choices = ["1-3 hours every month", "1-3 hours every week", "More than 3 hours per week"] + @travel_availability = ["Yes", "No"] + @field_choices = ["Civil Engineering","Environmental Engineering","Mechanical Engineering","Electrical Engineering","Materials Science","Chemical Engineering","Hydraulics / Hydrology","Computer Science","Education","International Development"] + @certificate_choices = ["Agricultural and Biological Engineering","Architectural","Chemical","Civil: Construction","Civil: Geotechnical","Civil: Structural","Civil: Transportation","Civil: Water Resources and Environmental","Control Systems","Electrical and Computer: Computer Engineering","Electrical and Computer: Electrical and Electronics","Electrical and Computer: Power","Environmental","Fire Protection","Industrial and Systems","Mechanical: HVAC and Refrigeration","Mechanical: Machine Design and Materials","Mechanical: Thermal and Fluids Systems","Metallurgical and Materials","Mining and Mineral Processing","Naval Architecture and Marine","Nuclear","Petroleum","Software","Structural"] + + authorize! :manage, @user + end + + # PATCH/PUT /users/1 + # PATCH/PUT /users/1.json + def update + if not params[:id] + redirect_to root_path + end + user = User.find(params[:id]) + # update fields + + user.first_name = user_params[:first_name] + user.last_name = user_params[:last_name] + user.age = user_params[:age] + user.education = user_params[:education] + user.school = user_params[:school] + user.expertise = user_params[:expertise] + user.description = user_params[:description] + user.certifications = user_params[:certifications] + user.phone = user_params[:phone] + user.zip = user_params[:zip] + # languages + user.lang1 = user_params[:lang1] + user.lang1_fluency = user_params[:lang1_fluency] + user.lang2 = user_params[:lang2] + user.lang2_fluency = user_params[:lang2_fluency] + # availability + user.travel = user_params[:travel] + user.time_commitment = user_params[:time_commitment] + user.sunday_availability = user_params[:sunday_availability] + user.monday_availability = user_params[:monday_availability] + user.tuesday_availability = user_params[:tuesday_availability] + user.wednesday_availability = user_params[:wednesday_availability] + user.thursday_availability = user_params[:thursday_availability] + user.friday_availability = user_params[:friday_availability] + user.saturday_availability = user_params[:saturday_availability] + user.availability_comments = user_params[:availability_comments] + user.skills = Skill.get_skills(user_params[:skill_ids]) + + user.save + + # update complete flag + if not user.complete + all_fields_filled = true + user_params.each do |k, v| + if v.blank? + all_fields_filled = false + end + end + if all_fields_filled + user.complete = true + user.save + else + flash[:warning] = "Some profile information is still missing. Please fill out the missing fields so that we can determine the best projects for you!" + end + + if not flash[:warning] + flash[:notice] = "Profile was successfully updated." + end + end + + redirect_to user_path(params[:id]) + end + + private + def user_params + # this simply makes it easier to access params[:user_params[:param]] + params.require(:user) + end +end +class UsersController < ApplicationController + before_action only: [:show, :edit, :update, :age_sorting] + + autocomplete :user, :school + + rescue_from CanCan::AccessDenied do |exception| + redirect_to main_app.root_url, :alert => exception.message + end + + def create + @user = User.new(params[:user]) + if @user.save + UserMailer.signup_confirmation(@user).deliver + redirect_to @user, notice: "Signed up successfully" + else + render :new + end + end + def index @user = User.all @search = User.search(params[:q]) diff --git a/app/models/user.rb b/app/models/user.rb index 5f5ff59..76f68ed 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -7,4 +7,15 @@ class User < ActiveRecord::Base ROLES = %w[admin manager volunteer].freeze + # Over riding this method specifies which fields we want to be able to search on + def self.ransackable_attributes(auth_object = nil) + ["first_name", + "last_name", + "education", + "expertise", + "description", + "school", + "certifications"].sort + end + end \ No newline at end of file From acf8da39dde24b6a58ff02aa3a2f0fb633121cdd Mon Sep 17 00:00:00 2001 From: Arman Date: Sat, 15 Jul 2017 23:45:51 +0000 Subject: [PATCH 058/161] removed friv changes --- app/controllers/users_controller.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 5125bf5..23ca671 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -20,7 +20,6 @@ def create def index @user = User.all @search = User.search(params[:q]) - puts @search @users = @search.result.page(params[:page]).per(10) @search.build_condition authorize! :read, @user From 739323f919955326c1498232226fc4d7aa8d39fe Mon Sep 17 00:00:00 2001 From: Jerry Wu Date: Sun, 16 Jul 2017 00:15:09 +0000 Subject: [PATCH 059/161] Limited Search Parameters to Contains --- app/views/users/_condition_fields.html.erb | 2 +- features/volunteer_search.feature | 36 ++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 features/volunteer_search.feature diff --git a/app/views/users/_condition_fields.html.erb b/app/views/users/_condition_fields.html.erb index 4c46ba7..ab113eb 100644 --- a/app/views/users/_condition_fields.html.erb +++ b/app/views/users/_condition_fields.html.erb @@ -2,7 +2,7 @@ <%= f.attribute_fields do |a| %> <%= a.attribute_select %> <% end %> - <%= f.predicate_select %> + <%= f.predicate_select :only => [:cont] %> <%= f.value_fields do |v| %> <%= v.text_field :value %> <% end %> diff --git a/features/volunteer_search.feature b/features/volunteer_search.feature new file mode 100644 index 0000000..6861c5a --- /dev/null +++ b/features/volunteer_search.feature @@ -0,0 +1,36 @@ +Feature: Reducing search parameters for Find Volunteers page + As a project manager wanting to search for volunters + I should see fields for search criteria + But not see a field for conditionals such as greater than and is null + And only search using the conditional contains + + # As a person interested in joining Engineers Without Borders + # I should be able to register as a volunteer + # So that I can be added to projects + +Scenario: + Given I am a project manager + Given I am on the "Find Volunteers" page + When I select "Education" from " " + + # And test for RESTful URL + + + + # When I follow "Profile" + # And I follow "Edit Profile" + # And I select "Bachelor's Degree" from "Education:" + # And I select "Computer Science" from "Field of Study or Expertise:" + # And I select "Chemical" from "Certifications Related to Field:" + # And I select "Spanish" from "First Language:" + # And I select "5 - Native or Bilingual Proficiency" from "First Language Fluency:" + # And I select "20" from "Age" + # And I fill in "About:" with "College rules!" + # And I fill in "Name of University/College:" with "Berkeley" + # And I press "Update Background" + + # Then I should see "Bachelor's Degree" + # Then I should see "Computer Science" + # Then I should see "20" + # Then I should see "College rules!" + # Then I should see "Berkeley" \ No newline at end of file From eb3431f8eab94d7d2949f12dfd07077ddc250d0a Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 17 Jul 2017 07:21:11 +0000 Subject: [PATCH 060/161] trying to fix heroku so images how up --- config/environments/production.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/config/environments/production.rb b/config/environments/production.rb index 30e8ea8..8bd4c5b 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -30,7 +30,9 @@ # config.assets.css_compressor = :sass # Do not fallback to assets pipeline if a precompiled asset is missed. - config.assets.compile = false + config.assets.compile = true + + config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # Asset digests allow you to set far-future HTTP expiration dates on all assets, # yet still be able to expire them through the digest params. From a1b06d9b462070324d500da04a54b7619b3c460a Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 17 Jul 2017 07:35:20 +0000 Subject: [PATCH 061/161] timeout fix by changing command --- config/environments/production.rb | 4 +--- config/initializers/assets.rb | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/config/environments/production.rb b/config/environments/production.rb index 8bd4c5b..30e8ea8 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -30,9 +30,7 @@ # config.assets.css_compressor = :sass # Do not fallback to assets pipeline if a precompiled asset is missed. - config.assets.compile = true - - config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' + config.assets.compile = false # Asset digests allow you to set far-future HTTP expiration dates on all assets, # yet still be able to expire them through the digest params. diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb index cf4e79c..e6f2599 100644 --- a/config/initializers/assets.rb +++ b/config/initializers/assets.rb @@ -5,7 +5,7 @@ Rails.application.config.assets.precompile += %w( bootstrap.min.css ) # Add additional assets to the asset load path # Rails.application.config.assets.paths << Emoji.images_path - +Rails.application.config.assets.precompile << /\.(?:png|jpg|jpeg|gif)\z/ # Precompile additional assets. # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. # Rails.application.config.assets.precompile += %w( search.js ) From 32860adcc4a6811e33c259b189be80387c58e125 Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 17 Jul 2017 07:37:17 +0000 Subject: [PATCH 062/161] add more precompile exemptions --- config/initializers/assets.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb index e6f2599..81cba0e 100644 --- a/config/initializers/assets.rb +++ b/config/initializers/assets.rb @@ -6,6 +6,7 @@ # Add additional assets to the asset load path # Rails.application.config.assets.paths << Emoji.images_path Rails.application.config.assets.precompile << /\.(?:png|jpg|jpeg|gif)\z/ +Rails.application.config.assets.precompile << /\.(?:svg|eot|woff|ttf)\z/ # Precompile additional assets. # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. # Rails.application.config.assets.precompile += %w( search.js ) From 6a25084b9cfff9621220b37671954c1f8ecaeec6 Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 17 Jul 2017 07:49:42 +0000 Subject: [PATCH 063/161] probably did something bad --- config/environments/production.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/environments/production.rb b/config/environments/production.rb index 30e8ea8..6a20594 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -23,7 +23,7 @@ # Disable serving static files from the `/public` folder by default since # Apache or NGINX already handles this. - config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present? + config.serve_static_files = true # Compress JavaScripts and CSS. config.assets.js_compressor = :uglifier From 37f902d9ea467355c5cf94b18ab1f9990519ab99 Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 17 Jul 2017 07:51:01 +0000 Subject: [PATCH 064/161] probably did something bad1 --- config/environments/production.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/environments/production.rb b/config/environments/production.rb index 6a20594..e361556 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -30,7 +30,7 @@ # config.assets.css_compressor = :sass # Do not fallback to assets pipeline if a precompiled asset is missed. - config.assets.compile = false + config.assets.compile = true # Asset digests allow you to set far-future HTTP expiration dates on all assets, # yet still be able to expire them through the digest params. From b7c98bc840f3b4a8a2525cb43b8af45be1e21d10 Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 17 Jul 2017 07:52:44 +0000 Subject: [PATCH 065/161] someone else fix this --- config/environments/production.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/environments/production.rb b/config/environments/production.rb index e361556..6a20594 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -30,7 +30,7 @@ # config.assets.css_compressor = :sass # Do not fallback to assets pipeline if a precompiled asset is missed. - config.assets.compile = true + config.assets.compile = false # Asset digests allow you to set far-future HTTP expiration dates on all assets, # yet still be able to expire them through the digest params. From 52673d314f329ff25ddefe4d2db04578e6bfd88e Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 17 Jul 2017 16:31:58 +0000 Subject: [PATCH 066/161] another change to production --- config/environments/production.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/config/environments/production.rb b/config/environments/production.rb index 6a20594..bb72735 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -30,7 +30,10 @@ # config.assets.css_compressor = :sass # Do not fallback to assets pipeline if a precompiled asset is missed. - config.assets.compile = false + config.assets.compile = true + + config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' + # Asset digests allow you to set far-future HTTP expiration dates on all assets, # yet still be able to expire them through the digest params. From c56860f2c70cf7fe3c96940770934785c2f014f6 Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Mon, 17 Jul 2017 10:03:31 -0700 Subject: [PATCH 067/161] Fixed bug with project in admin view --- app/models/project.rb | 2 +- config/initializers/rails_admin.rb | 2 ++ db/schema.rb | 1 - 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/models/project.rb b/app/models/project.rb index 3b26d59..88c4855 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -1,6 +1,6 @@ class Project < ActiveRecord::Base - has_many :events + #has_many :events #has_many :roles #has_and_belongs_to_many :users diff --git a/config/initializers/rails_admin.rb b/config/initializers/rails_admin.rb index ff5fcfd..00b68d9 100644 --- a/config/initializers/rails_admin.rb +++ b/config/initializers/rails_admin.rb @@ -23,6 +23,8 @@ ## To disable Gravatar integration in Navigation Bar set to false # config.show_gravatar true + #config.excluded_models << "Event" + config.actions do dashboard # mandatory index # mandatory diff --git a/db/schema.rb b/db/schema.rb index 453186b..e51f32a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,6 @@ # # It's strongly recommended that you check this file into your version control system. - ActiveRecord::Schema.define(version: 20170715215531) do create_table "manager_relationships", force: :cascade do |t| From 9fe0aa8a4aecccbfafc341dea911a39ee2dcdf6b Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Mon, 17 Jul 2017 16:08:16 -0700 Subject: [PATCH 068/161] Roles needs a lot of help right now lmao --- app/models/project.rb | 22 +++++--- spec/association_spec.rb | 115 +++++++++++++++++++++------------------ 2 files changed, 78 insertions(+), 59 deletions(-) diff --git a/app/models/project.rb b/app/models/project.rb index 8c6013e..9ffd5d3 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -4,20 +4,28 @@ class Project < ActiveRecord::Base #has_and_belongs_to_many :users has_many :manager_relationships - has_many :managers, -> { distinct }, through: :manager_relationships, source: :user + has_many :managers, -> { distinct }, through: :manager_relationships, source: :user has_many :volunteer_relationships, inverse_of: :project - has_many :volunteers, through: :volunteer_relationships, source: :user - + has_many :volunteers, through: :volunteer_relationships, source: :user has_attached_file :image, styles: { large: "600x600>", medium: "300x300>", thumb: "150x150#" } validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/ - + #Overrides the rails-created "volunteers" so that we can return only unique user IDs. - def volunteers - join_statement = "LEFT OUTER JOIN 'volunteer_relationships' ON 'volunteer_relationships'.'user_id' = 'users'.'id' WHERE 'volunteer_relationships'.'project_id' = #{self.id}" - User.joins(join_statement).uniq + def distinct_volunteers + return self.old_volunteers.uniq + end + + def method_missing(m, *args) + if(m == "volunteers" && !caller(m).include?("project")) + puts "butt" + return + end + if (m == "volunteers") + puts "didn't catch" + end end def add_with_role(volunteer, role) diff --git a/spec/association_spec.rb b/spec/association_spec.rb index 211ed26..1d3778a 100644 --- a/spec/association_spec.rb +++ b/spec/association_spec.rb @@ -16,71 +16,22 @@ expect(@example_user).to be_valid expect(@example_project).to be_valid end - context "When a new user is created" do - it "will not be linked to any projects" do - expect(@example_user.projects.count).to eq 0 - end - it "will not manage any projects" do - expect(@example_project.managers.count).to eq 0 - end - it "will not be a part of any projects" do - expect(@example_project.volunteers.count).to eq 0 - end - end context "When a user is added to a project" do - before(:each) do - @example_user2 = FactoryGirl.create(:user, password: "asdfghjkl") - @example_user3 = FactoryGirl.create(:user, password: "asdfghjkl") - #No role - #@example_project.volunteers << @example_user <- THIS IS NOT WORKING - #RIGHT NOW because i overrode "volunteers" - @example_user.projects << @example_project - #with role - @example_project.add_with_role(@example_user2, "programmer") - #assign role after - @example_user3.projects << @example_project - @example_project.assign_role(@example_user3, "engineer") - @example_project.assign_role(@example_user3, "cook") - end it "user will be linked to a project" do + @example_user.projects << @example_project expect(@example_user.projects.count).to eq 1 expect(@example_user.projects.first.name).to match @example_project.name end - it "users will be in the list of project's volunteers" do - expect(@example_project.volunteers.count).to eq 3 - expect(@example_project.volunteers.first.first_name) - .to match @example_user.first_name - end - it "user 2 and 3 will have correct roles" do - expect(@example_project.role_of(@example_user)).to be_nil - expect(@example_project.role_of(@example_user2)).to include "programmer" - expect(@example_project.role_of(@example_user3)).to include "engineer" - end - it "user can have multiple roles" do - @example_project.assign_role(@example_user2, "cook") - expect(@example_project.role_of(@example_user2)) - .to match_array ["programmer", "cook"] - end - it "catches error and returns false if volunteer does not exist" do - @fake_user = instance_double('User', id: 10) - expect(@example_project.assign_role(@fake_user, "cook")).to be_falsy - end end context "When a user is a part of multiple projects" do before(:each) do - @example_user2 = FactoryGirl.create(:user, password: "adfghjkl") @example_project2 = FactoryGirl.create(:project) - @example_user.projects << @example_project - @example_user.projects << @example_project2 - @example_user2.projects << @example_project - @example_user2.projects << @example_project2 end it "will have multiple projects" do + @example_user.projects << @example_project + @example_user.projects << @example_project2 expect(@example_user.projects.count).to eq 2 end - it "projects will have multiple users" do - expect(@example_project.volunteers.count).to eq 2 - end end end describe "Manager" do @@ -143,3 +94,63 @@ end end end + + +RSpec.describe Project, :type => :model do + before(:each) do + @example_project = FactoryGirl.create(:project) + end + describe "Volunteers" do + before(:each) do + @example_user = FactoryGirl.create(:user, password: "asdfghjkl") + @example_user2 = FactoryGirl.create(:user, password: "asdfghjkl") + end + it "Adding volunteers" do + @example_project.volunteers << @example_user + @example_project.volunteers << @example_user2 + expect(@example_project.distinct_volunteers.count).to eq 2 + end + it "catches error and returns false if volunteer does not exist" do + @fake_user = instance_double('User', id: 10) + expect(@example_project.assign_role(@fake_user, "cook")).to be_falsy + end + it "Check the roles of volunteers" do + @example_project.volunteers << @example_user + @example_project.assign_role(@example_user, "programmer") + @example_project.add_with_role(@example_user2, "cook") + expect(@example_project.role_of(@example_user)).to include "programmer" + expect(@example_project.role_of(@example_user2)).to include "cook" + end + it "volunteer can have multiple roles" do + @example_project.add_with_role(@example_user, "programmer") + @example_project.assign_role(@example_user, "cook") + expect(@example_project.role_of(@example_user)) + .to match_array ["programmer", "cook"] + end + it "volunteer with multiple roles is still returned as one volunteer" do + @example_project.add_with_role(@example_user, "programmer") + @example_project.assign_role(@example_user, "cook") + expect(@example_project.distinct_volunteers.count).to eq 1 + end + it "Remove volunteers" do + @example_project.volunteers << @example_user + @example_project.volunteers.delete(@example_user.id) + expect(@example_project.volunteers.count).to eq 0 + end + it "Destroy volunteer" do + @example_project.volunteers << @example_user + @example_user.destroy + expect(@example_project.volunteers.count).to eq 0 + end + end + describe "Managers" do + it "Adding managers" do + end + it "Having multiple managers" do + end + it "No duplicate managers" do + end + it "Removing managerts" do + end + end +end From 7502459ac288fa7452d6e7a72c12b3a7d897b9ff Mon Sep 17 00:00:00 2001 From: Tobias Brachmann Date: Tue, 18 Jul 2017 12:34:51 -0700 Subject: [PATCH 069/161] Updated Manager, Volunteer, Project to new spec --- Guardfile | 2 +- app/models/project.rb | 94 +++++------------ app/models/user.rb | 27 ++++- spec/association_spec.rb | 218 ++++++++++++++++++++------------------- spec/event_spec.rb | 33 ------ 5 files changed, 162 insertions(+), 212 deletions(-) delete mode 100644 spec/event_spec.rb diff --git a/Guardfile b/Guardfile index e50c28d..b638d96 100644 --- a/Guardfile +++ b/Guardfile @@ -69,7 +69,7 @@ guard :rspec, cmd: "bundle exec spring rspec" do end # User & Project watching - watch(%r{^app/models/(user|project)\.rb}) { "#{rspec.spec_dir}/user_spec.rb" } + watch(%r{^app/models/(user|project)\.rb}) { "#{rspec.spec_dir}/association_spec.rb" } diff --git a/app/models/project.rb b/app/models/project.rb index 9ffd5d3..d3187a4 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -1,77 +1,35 @@ class Project < ActiveRecord::Base - has_many :events - #has_many :roles - #has_and_belongs_to_many :users - has_many :manager_relationships - has_many :managers, -> { distinct }, through: :manager_relationships, source: :user - - has_many :volunteer_relationships, inverse_of: :project - has_many :volunteers, through: :volunteer_relationships, source: :user - has_attached_file :image, styles: { large: "600x600>", - medium: "300x300>", - thumb: "150x150#" } - validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/ - - #Overrides the rails-created "volunteers" so that we can return only unique user IDs. - def distinct_volunteers - return self.old_volunteers.uniq - end - - def method_missing(m, *args) - if(m == "volunteers" && !caller(m).include?("project")) - puts "butt" - return - end - if (m == "volunteers") - puts "didn't catch" + has_many :managers, -> { distinct }, through: :manager_relationships, source: :user do + def << (*managers) + # If user is already a volunteer on the project, promote him to a manager + managers.each do |manager| + if self.proxy_association.owner.volunteers.include?(manager) + self.proxy_association.owner.volunteers.delete(manager) + end + super + end end end - def add_with_role(volunteer, role) - #If user does not exist. - if(!User.exists?(volunteer.id)) - return false - #If user is already a volunteer on this project. - elsif(volunteers.include?(volunteer)) - return false - #Else add the volunteer with specified role - else - self.volunteer_relationships << VolunteerRelationship.new(:user_id => volunteer.id, - :project_id => self.id, - :role => role) - end - end - - def assign_role(volunteer, role) - #If user is not a part of project nor a manager - if(!volunteers.include?(volunteer) && !managers.include?(volunteer)) - return false - #Add a new relationship with the new role - else - relationship = VolunteerRelationship.new(:user_id => volunteer.id, - :project_id => self.id, - :role => role) - self.volunteer_relationships << relationship - end - end - - def role_of(volunteer) - if(!volunteers.include?(volunteer)&& !managers.include?(volunteer)) - return false - end - #role = VolunteerRelationship.find(volunteer.id).role - roles = VolunteerRelationship.where(user_id: volunteer.id).pluck(:role) - if(managers.include?(volunteer)) - roles << "manager" - end - if(roles.all? &:blank?) - return nil - else - return roles + has_many :volunteer_relationships #, inverse_of: :project + has_many :volunteers, -> { distinct }, through: :volunteer_relationships, source: :user do + # If user is already a manager, do nothing + def << (*volunteers) + volunteers.each do |volunteer| + if proxy_association.owner.managers.include?(volunteer) + next + end + super + end end end - #private :manager_relationships, :manager_relationships= - #private :volunteer_relationships, :volunteer_relationships= + has_attached_file :image, styles: { large: "600x600>", + medium: "300x300>", + thumb: "150x150#" } + validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/ + + private :manager_relationships, :manager_relationships= + private :volunteer_relationships, :volunteer_relationships= end diff --git a/app/models/user.rb b/app/models/user.rb index c5382c4..8a35a36 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -8,11 +8,30 @@ class User < ActiveRecord::Base #has_and_belongs_to_many :projects has_many :manager_relationships - has_many :manages, through: :manager_relationships, source: :project + has_many :manages, through: :manager_relationships, source: :project do + def << (*projects) + projects.flatten! + projects.each do |project| + project.managers << self.proxy_association.owner + end + end + end - has_many :volunteer_relationships, inverse_of: :user - has_many :projects, through: :volunteer_relationships, source: :project - + has_many :volunteer_relationships #, inverse_of: :user + has_many :projects, through: :volunteer_relationships, source: :project do + def << (*projects) + projects.flatten! + projects.each do |project| + project.volunteers << self.proxy_association.owner + end + end + end + + def demote_manager_all + my_projects = self.manages.to_a + self.manages.delete_all + self.projects << my_projects + end private :manager_relationships, :manager_relationships= private :volunteer_relationships, :volunteer_relationships= diff --git a/spec/association_spec.rb b/spec/association_spec.rb index 1d3778a..e188ca1 100644 --- a/spec/association_spec.rb +++ b/spec/association_spec.rb @@ -1,100 +1,104 @@ require 'rails_helper' -# TODO: test destroying as well +# User associations: Project (as Volunteer through VolunteerRelationship), Roles (has_one), Skills (HABTM), Certifications (HABTM), Experience (HABTM) RSpec.describe User, :type => :model do - describe "Regular user" do - before(:each) do - #Need to manually specify the password here, otherwise it won't work, - #because of "Strong Params" - @example_user = FactoryGirl.create(:user, password: "asdfghjkl") - #operating under the assumption that a project can be created without - #a manager. - @example_project = FactoryGirl.create(:project) - end + before(:each) do + @example_user = FactoryGirl.create(:user, password: "asdfghjkl") + @example_project = FactoryGirl.create(:project) + end + describe "As a volunteer" do it "Has a valid factory" do expect(@example_user).to be_valid expect(@example_project).to be_valid end - context "When a user is added to a project" do - it "user will be linked to a project" do - @example_user.projects << @example_project - expect(@example_user.projects.count).to eq 1 - expect(@example_user.projects.first.name).to match @example_project.name - end - end - context "When a user is a part of multiple projects" do - before(:each) do - @example_project2 = FactoryGirl.create(:project) - end - it "will have multiple projects" do - @example_user.projects << @example_project - @example_user.projects << @example_project2 - expect(@example_user.projects.count).to eq 2 - end + it "Adding projects" do + @example_project2 = FactoryGirl.create(:project) + @example_user.projects << @example_project + @example_user.projects << @example_project2 + expect(@example_user.projects.count).to eq 2 end - end - describe "Manager" do - before(:each) do - @example_manager = FactoryGirl.create(:manager, password: "asdfghjkl") - @example_manager2 = FactoryGirl.create(:manager, password: "asdfghjkl") - @example_user = FactoryGirl.create(:user, password: "asdfghjkl") - #operating under the assumption that a project can be created without - #a manager. - @example_project = FactoryGirl.build(:project) - @example_project2 = FactoryGirl.build(:project) + it "Removing project from user" do + @example_user.projects << @example_project + @example_user.projects.delete(@example_project) + expect(@example_user.projects.count).to eq 0 + end + it "Destroying project" do + @example_user.projects << @example_project + @example_project.destroy + expect(@example_user.projects.count).to eq 0 end - it "has a valid factory" do + end + # Add role, skill, experience tests here +end + +RSpec.describe User, :type => :model do + before(:each) do + @example_manager = FactoryGirl.create(:manager, password: "asdfghjkl") + @example_project = FactoryGirl.create(:project) + end + describe "As a manager" do + it "Has a valid factory" do expect(@example_manager).to be_valid expect(@example_project).to be_valid end - context "Manager has one project" do - before(:each) do - #@example_manager.manages << @example_project - @example_project.managers << @example_manager - @example_user.projects << @example_project - end - it "will be linked to its project" do - expect(@example_manager.manages.first.name).to match @example_project.name - #expect(@example_manager.project.name).to match @example_project.name - end - it "project will be linked to its manager" do - expect(@example_project.managers.first.first_name) - .to match @example_manager.first_name - end - it "user will not manage project" do - expect(@example_user.manages.count).to eq 0 - end - it "user will not be a manager of project" do - expect(@example_project.managers.count).to eq 1 - expect(@example_project.volunteers.count).to eq 1 - end - it "manager has correct role" do - expect(@example_project.role_of(@example_manager)).to include "manager" - end - it "manager also assigns himself a role" do - @example_project.assign_role(@example_manager, "programmer") - expect(@example_project.role_of(@example_manager)) - .to match_array ["programmer", "manager"] - end - end - context "Manager has multiple projects" do - before(:each) do - @example_manager.manages << @example_project - @example_manager.manages << @example_project2 - @example_user.projects << @example_project - end - it "will have multiple projects" do - expect(@example_manager.manages.count).to eq 2 - end - it "both projects will point to their manager" do - expect(@example_project.managers.count).to eq 1 - expect(@example_project2.managers.count).to eq 1 - end + it "Adding managed projects" do + @example_project2 = FactoryGirl.create(:project) + @example_manager.manages << @example_project + @example_manager.manages << @example_project2 + expect(@example_manager.manages.count).to eq 2 + end + it "No duplicate projects" do + @example_manager.manages << @example_project + @example_manager.manages << @example_project + expect(@example_manager.manages.count).to eq 2 + end + it "Lose managerial status" do + # No longer be a manager but persist as a user + @example_project2 = FactoryGirl.create(:project) + @example_manager.manages << @example_project + @example_manager.manages << @example_project2 + @example_manager.manages.delete_all + expect(@example_manager.manages.count).to eq 0 + expect(@example_project.managers.count).to eq 0 + expect(@example_project2.managers.count).to eq 0 + end + it "Demote manager on all projects" do + @example_project2 = FactoryGirl.create(:project) + @example_manager.manages << [@example_project, @example_project2] + @example_manager.demote_manager_all + expect(@example_manager.manages.count).to eq 0 + expect(@example_manager.projects.count).to eq 2 + expect(@example_project.managers.count).to eq 0 + expect(@example_project2.managers.count).to eq 0 + end + it "Adding as volunteer when already manager" do + @example_manager.manages << @example_project + @example_manager.projects << @example_project + expect(@example_manager.projects.count).to eq 0 + expect(@example_manager.manages.count).to eq 1 + end + it "Adding as manager when already volunteer" do + @example_manager.projects << @example_project + @example_manager.manages << @example_project + expect(@example_manager.projects.count).to eq 0 + expect(@example_manager.manages.count).to eq 1 + end + it "Removing project from manager" do + @example_manager.manages << @example_project + @example_manager.manages.delete(@example_project) + expect(@example_manager.manages.count).to eq 0 + end + it "Destroying project" do + @example_manager.manages << @example_project + @example_project.destroy + expect(@example_manager.manages.count).to eq 0 end end end +# Project associations: Volunteers (Users through VolunteerRelationships), and Managers +# (Users through ManagerRelationships) RSpec.describe Project, :type => :model do before(:each) do @@ -108,33 +112,17 @@ it "Adding volunteers" do @example_project.volunteers << @example_user @example_project.volunteers << @example_user2 - expect(@example_project.distinct_volunteers.count).to eq 2 - end - it "catches error and returns false if volunteer does not exist" do - @fake_user = instance_double('User', id: 10) - expect(@example_project.assign_role(@fake_user, "cook")).to be_falsy + expect(@example_project.volunteers.count).to eq 2 end - it "Check the roles of volunteers" do + it "No duplicate volunteers" do + @example_project.volunteers << @example_user + @example_project.volunteers << @example_user2 @example_project.volunteers << @example_user - @example_project.assign_role(@example_user, "programmer") - @example_project.add_with_role(@example_user2, "cook") - expect(@example_project.role_of(@example_user)).to include "programmer" - expect(@example_project.role_of(@example_user2)).to include "cook" - end - it "volunteer can have multiple roles" do - @example_project.add_with_role(@example_user, "programmer") - @example_project.assign_role(@example_user, "cook") - expect(@example_project.role_of(@example_user)) - .to match_array ["programmer", "cook"] - end - it "volunteer with multiple roles is still returned as one volunteer" do - @example_project.add_with_role(@example_user, "programmer") - @example_project.assign_role(@example_user, "cook") - expect(@example_project.distinct_volunteers.count).to eq 1 + expect(@example_project.volunteers.count).to eq 2 end it "Remove volunteers" do @example_project.volunteers << @example_user - @example_project.volunteers.delete(@example_user.id) + @example_project.volunteers.delete(@example_user) expect(@example_project.volunteers.count).to eq 0 end it "Destroy volunteer" do @@ -144,13 +132,31 @@ end end describe "Managers" do - it "Adding managers" do + before(:each) do + @example_manager = FactoryGirl.create(:manager, password: "asdfghjkl") + @example_manager2 = FactoryGirl.create(:manager, password: "asdfghjkl") end - it "Having multiple managers" do + it "Adding managers" do + @example_project.managers << @example_manager + @example_project.managers << @example_manager2 + expect(@example_project.managers.count).to eq 2 end it "No duplicate managers" do - end - it "Removing managerts" do + @example_project.managers << @example_manager + @example_project.managers << @example_manager + expect(@example_project.managers.count).to eq 1 + end + it "Removing manager from project" do + @example_project.managers << @example_manager + @example_project.managers << @example_manager2 + @example_project.managers.delete(@example_manager) + expect(@example_project.managers.count).to eq 1 + end + it "Destroying manager" do + @example_project.managers << @example_manager + @example_project.managers << @example_manager2 + @example_manager.destroy + expect(@example_project.managers.count).to eq 1 end end end diff --git a/spec/event_spec.rb b/spec/event_spec.rb deleted file mode 100644 index 19629ed..0000000 --- a/spec/event_spec.rb +++ /dev/null @@ -1,33 +0,0 @@ -require 'spec_helper' - -RSpec.describe Event, "#name" do - context "when the user enters in a name for a new event" do - it "will save the name into the name field" do - event = Event.new - event.name = "Habitat for Humanity" - expect(event.name).to eq "Habitat for Humanity" - end - end -end - -RSpec.describe Event, "#description" do - context "when the user enters in a description for a new event" do - it "will save the description into the field" do - event = Event.new - event.description = "Building houses for the less fortunate." - expect(event.description).to eq "Building houses for the less fortunate." - end - end -end - -RSpec.describe Event, "#location" do - context "when the user enters in a location for a new event" do - it "will save the location into the field" do - event = Event.new - event.location = "Berkeley" - expect(event.location).to eq "Berkeley" - end - end -end - - From c0343437c5477405418a8e6a949df90b3d1974ca Mon Sep 17 00:00:00 2001 From: Bill Yeo Date: Tue, 18 Jul 2017 23:41:23 +0000 Subject: [PATCH 070/161] changing layout --- app/assets/stylesheets/application.scss | 18 ++++++- app/views/devise/sessions/new.html.erb | 37 +++++++------ app/views/layouts/application.html.erb | 6 ++- app/views/projects/index.html.erb | 2 +- app/views/welcome/index.html.erb | 72 ++++++------------------- 5 files changed, 56 insertions(+), 79 deletions(-) diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 48b997b..3891299 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -112,19 +112,33 @@ p, div { margin-bottom: 30px; color: rgba(0,0,0, 0.87); background: #fff; + padding: 7%; } .card-title { font-weight: 700; font-family: nanum-barun-gothic-regular; } .card-image { - margin: 0; border-radius: 3px; height: 60%; position: relative; overflow: hidden; + display: block; + margin: auto; + width: 40%; box-shadow: 0 16px 38px -12px rgba(0, 0, 0, 0.56), 0 4px 25px 0px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.2); } +.ripple-container{ + position: absolute; + top: 0; + left: 0; + z-index: 1; + width: 100%; + height: 100%; + overflow: hidden; + border-radius: inherit; + pointer-events: none; +} .btn-color { background-color: #3D3C40; color: #FFFFFF; @@ -160,4 +174,4 @@ p, div { background-color: #121721; box-shadow: 0 5px #666; transform: translateY(4px); -} \ No newline at end of file +} diff --git a/app/views/devise/sessions/new.html.erb b/app/views/devise/sessions/new.html.erb index 126f350..6efe8e7 100644 --- a/app/views/devise/sessions/new.html.erb +++ b/app/views/devise/sessions/new.html.erb @@ -1,22 +1,21 @@ -
-
+ diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 674c271..bf71ec5 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -55,9 +55,11 @@
-
+
+
<%= yield %> -
+
+
diff --git a/app/views/projects/index.html.erb b/app/views/projects/index.html.erb index ffd316e..c9df01d 100644 --- a/app/views/projects/index.html.erb +++ b/app/views/projects/index.html.erb @@ -19,7 +19,7 @@

<% end %> -
+

<%= @date.strftime("%B %Y") %>

<%= calendar @date do |date| %> <%= date.day %> diff --git a/app/views/welcome/index.html.erb b/app/views/welcome/index.html.erb index 8aa1090..3986094 100644 --- a/app/views/welcome/index.html.erb +++ b/app/views/welcome/index.html.erb @@ -1,9 +1,6 @@ -<<<<<<< HEAD -
diff --git a/app/views/projects/show.html.erb b/app/views/projects/show.html.erb index 38b76da..1cb7675 100644 --- a/app/views/projects/show.html.erb +++ b/app/views/projects/show.html.erb @@ -23,7 +23,7 @@ } -

Project <%= @project.name %>

+

<%= @project.name %>

<% if can? :manage, @project %> <%= link_to 'Edit Project', edit_project_path(@project), class: "btn btn-md btn-primary" %> @@ -50,6 +50,7 @@
+ Project Dates <%if @project.start_date && @project.start_date.to_date %>

This project will start on <%= @project.start_date.to_date %>.

<% else %> @@ -58,12 +59,21 @@
- Location: + Project Location: <%= @project.location %>

Project <%= @project.name %> Has <%= @project.volunteers.count %> volunteers, needs <%= @project.volunteer_capacity - @project.volunteers.count %> more!

+
+

Project Manager <%= @project.pm_name %>

+
+
+

Phone <%= @project.pm_phone %>

+
+
+

Manager Contact Information <%= @project.pm_info %>

+



diff --git a/db/schema.rb b/db/schema.rb index e51f32a..0f67fab 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: 20170715215531) do +ActiveRecord::Schema.define(version: 20170718232926) do create_table "manager_relationships", force: :cascade do |t| t.integer "user_id" @@ -22,8 +22,8 @@ add_index "manager_relationships", ["user_id"], name: "index_manager_relationships_on_user_id" create_table "projects", force: :cascade do |t| - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.date "start_date" t.string "name" t.string "description" @@ -36,6 +36,12 @@ t.datetime "image_updated_at" t.integer "hours_per_week" t.integer "manager_id" + t.string "pm_name" + t.string "pm_phone" + t.string "pm_info" + t.string "project_manager" + t.string "project_manager_phone" + t.string "project_manager_email" end create_table "skills", force: :cascade do |t| diff --git a/db/seeds.rb b/db/seeds.rb index 0cb7369..510fa4c 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -11,6 +11,10 @@ ["natalie@gmail.com", "password", "Natalie", "Barnett", 17], ["benbarns@gmail.com", "password", "Ben", "Barnett", 14]] +test_project = Project.create(name: "Remba Island Project", description: "Creating a large-scale water filter system", +volunteer_capacity: 25, location: "Remba Island, Kenya", pm_name: "John Dracup", pm_phone: "510-123-4567", +pm_info: "jdracup@berkeley.edu") + user_list.each do |email, password, first_name, last_name, age| User.create(email: email, password: password, first_name: first_name, last_name: last_name, age: age) end \ No newline at end of file diff --git a/features/alphabetize.feature b/features/alphabetize.feature index 371d367..71b84d5 100644 --- a/features/alphabetize.feature +++ b/features/alphabetize.feature @@ -6,10 +6,10 @@ Feature: display alphabetized list of volunteers Background: Volunteers have been added to the project page - Given the following volunteers exist: - |User | - |"Schmoe, Joe" | - |"User, Random"| + Given the following users exist: + |first_name | last_name| email | password | + |"Joe" | "Schmoe" | ewb1@gmail.com | "password123" | + |"Clark" | "Kent" | ewb2@gmail.com | "kryponite" | And I am on a project page diff --git a/features/step_definitions/ewb_steps.rb b/features/step_definitions/ewb_steps.rb index 33d71ab..affab33 100644 --- a/features/step_definitions/ewb_steps.rb +++ b/features/step_definitions/ewb_steps.rb @@ -32,4 +32,49 @@ :first_name => table_hash[:first_name], :last_name => table_hash[:last_name]).save! end -end \ No newline at end of file +end + + +Then(/^I should see "([^"]*)" before "([^"]*)"$/) do |arg1, arg2| + pending # Write code here that turns the phrase above into concrete actions +end + +When(/^I select "([^"]*)"$/) do |arg1| + pending # Write code here that turns the phrase above into concrete actions +end + +When(/^I press the "([^"]*)" button$/) do |arg1| + pending # Write code here that turns the phrase above into concrete actions +end + +Then(/^I should see "([^"]*)" \#A user that meets these specified qualifications$/) do |arg1| + pending # Write code here that turns the phrase above into concrete actions +end + +Then(/^I should not see "([^"]*)" \#A user that does not$/) do |arg1| + pending # Write code here that turns the phrase above into concrete actions +end + +Given(/^the following volunteers exist:$/) do |table| + # table is a Cucumber::MultilineArgument::DataTable + pending # Write code here that turns the phrase above into concrete actions +end + +When(/^I follow a Project Link$/) do + pending # Write code here that turns the phrase above into concrete actions +end + +# Given(/^there exists a project "([^"]*)"$/) do |arg1| +# Project.create(name: arg1, description: "Creating a large-scale water filter system", +# volunteer_capacity: 25, location: "Remba Island, Kenya", pm_name: "John Dracup", pm_phone: "510-123-4567", +# pm_info: "jdracup@berkeley.edu") +# end + +Given(/^there exists a project "([^"]*)"$/) do |arg1| + test_project = Project.new(name: arg1, description: "Creating a large-scale water filter system", + volunteer_capacity: 25, location: "Remba Island, Kenya", pm_name: "John Dracup", pm_phone: "510-123-4567", + pm_info: "jdracup@berkeley.edu") + test_project.save! +end + + diff --git a/features/support/paths.rb b/features/support/paths.rb index 4a502db..4ef6857 100644 --- a/features/support/paths.rb +++ b/features/support/paths.rb @@ -15,6 +15,9 @@ module NavigationHelpers def path_to(page_name) case page_name + when /^the projects page$/ + '/projects' + when /^the home\s?page$/ '/' diff --git a/features/view_project_info.feature b/features/view_project_info.feature index 2e33d4e..e159911 100644 --- a/features/view_project_info.feature +++ b/features/view_project_info.feature @@ -3,13 +3,26 @@ Feature: Viewing Project Information I should be able to view information about various projects So that I can choose projects to apply for - Scenario: Clicking on a Project Listing + Background: + # Given I am a project manager + # Given I am on the home page + # When I follow "Project Listings" + # And I follow "Create New Project" + # And I fill in "Name" with "Remove Snakes From Boots" + # And I fill in "Description" with "Assist toy cowboys with recurring problem." + # And I fill in "Volunteer capacity" with "2" + # And I fill in "Location" with "Andy's Room" + # And I press "Create Project" + Given I am a new, authenticated user Given I am on the projects page - When I follow a Project Link + # And there exists a project "Remba Island Project" + And I should see "Remba Island Project" + + Scenario: Clicking on a Project Listing + When I follow "Remba Island Project" Then I should see "Project Description" And I should see "Project Dates" And I should see "Project Location" And I should see "Project Manager" - And I should see "Manager Contact Information" - And I should see "Current Volunteers" \ No newline at end of file + And I should see "Manager Contact Information" \ No newline at end of file diff --git a/features/volunteer_register.feature b/features/volunteer_register.feature index 96f812d..a942899 100644 --- a/features/volunteer_register.feature +++ b/features/volunteer_register.feature @@ -5,8 +5,8 @@ Feature: User Registration Scenario: Filling out the Volunteer Form by subscribing Given I am on the home page - Then I should see "Sign up now!" - When I follow "Sign up now!" + Then I should see "GET INVOLVED" + When I follow "GET INVOLVED" When I fill in "Email" with "woody@andysroom.com" And I fill in "user_password" with "reachforthesky" And I fill in "user_password_confirmation" with "reachforthesky" From 88ec5bb976afacfc84221d375fd4405136ebae24 Mon Sep 17 00:00:00 2001 From: Claire Scheele Date: Wed, 19 Jul 2017 00:25:28 +0000 Subject: [PATCH 072/161] Fixed failing Cucumber test in view_project_info.feature. Commented out pm_name, pm_phone, pm_info in show.html.erb so that all the tests will pass since those attributes aren't implemented yet. --- app/views/projects/show.html.erb | 6 +++--- features/step_definitions/ewb_steps.rb | 3 +-- features/view_project_info.feature | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/app/views/projects/show.html.erb b/app/views/projects/show.html.erb index 1cb7675..e6f0c29 100644 --- a/app/views/projects/show.html.erb +++ b/app/views/projects/show.html.erb @@ -66,13 +66,13 @@

Project <%= @project.name %> Has <%= @project.volunteers.count %> volunteers, needs <%= @project.volunteer_capacity - @project.volunteers.count %> more!

-

Project Manager <%= @project.pm_name %>

+

Project Manager

-

Phone <%= @project.pm_phone %>

+

Phone

-

Manager Contact Information <%= @project.pm_info %>

+

Manager Contact Information


diff --git a/features/step_definitions/ewb_steps.rb b/features/step_definitions/ewb_steps.rb index affab33..7df637f 100644 --- a/features/step_definitions/ewb_steps.rb +++ b/features/step_definitions/ewb_steps.rb @@ -72,8 +72,7 @@ Given(/^there exists a project "([^"]*)"$/) do |arg1| test_project = Project.new(name: arg1, description: "Creating a large-scale water filter system", - volunteer_capacity: 25, location: "Remba Island, Kenya", pm_name: "John Dracup", pm_phone: "510-123-4567", - pm_info: "jdracup@berkeley.edu") + volunteer_capacity: 25, location: "Remba Island, Kenya") test_project.save! end diff --git a/features/view_project_info.feature b/features/view_project_info.feature index e159911..59e3ac4 100644 --- a/features/view_project_info.feature +++ b/features/view_project_info.feature @@ -15,8 +15,8 @@ Feature: Viewing Project Information # And I press "Create Project" Given I am a new, authenticated user + And there exists a project "Remba Island Project" Given I am on the projects page - # And there exists a project "Remba Island Project" And I should see "Remba Island Project" Scenario: Clicking on a Project Listing From 046966fb324c848c5054f1022893625874b01a92 Mon Sep 17 00:00:00 2001 From: Claire Scheele Date: Wed, 19 Jul 2017 01:23:29 +0000 Subject: [PATCH 073/161] Added line of code to devise.rb to try to fix heroku as per a stack overflow suggestion. Will delete if doesn't fix. --- config/initializers/devise.rb | 2 +- ...fest-a3550939de0f824959c7d980317dbc23.json | 2 +- ...efca604996f71feb9a044757eea6d9dd9a02b08.js | 17 + ...a604996f71feb9a044757eea6d9dd9a02b08.js.gz | Bin 0 -> 144348 bytes ...f5287e65e0e67f5eb4f971f072c3a565c2c3e3.css | 1 + ...87e65e0e67f5eb4f971f072c3a565c2c3e3.css.gz | Bin 0 -> 1018 bytes ...c5a09997aa64d675b7a3c4b6ce33da13f3fe.woff2 | Bin 0 -> 77160 bytes ...6ddc78585432cc5fa41bbd7ad0f009033b2979.eot | Bin 0 -> 165742 bytes ...c78585432cc5fa41bbd7ad0f009033b2979.eot.gz | Bin 0 -> 98200 bytes ...c043d7a9ac9a093335806694ecd6d4edc0d6a8.ttf | Bin 0 -> 165548 bytes ...3d7a9ac9a093335806694ecd6d4edc0d6a8.ttf.gz | Bin 0 -> 98106 bytes ...f1541368524bfc46f51e42fe0d945f7ef323e4.svg | 2671 +++++++++++++++++ ...41368524bfc46f51e42fe0d945f7ef323e4.svg.gz | Bin 0 -> 134485 bytes ...ee2d0d995415877ddfa223e8a8a7533474f07.woff | Bin 0 -> 98024 bytes ...336117e268fa10994cdc47a1a7f12cbc28a8c9.png | Bin 0 -> 6084 bytes ...bd45567e5a1f83eeafcf9574da0399d5f602ab.png | Bin 0 -> 180 bytes ...265df288d8eb65dbbd7cf48aed2d0129887df5.png | Bin 0 -> 178 bytes ...6ecfc33e6145c49422443b00ac2b5a0022964c.png | Bin 0 -> 120 bytes ...feccd907953317cd5c0f689901733afda260b2.png | Bin 0 -> 105 bytes ...ddd95e1664597ce6c056ae44c162cc2e28cec4.png | Bin 0 -> 111 bytes ...e90ebe74a84384cb4700658e76e754c8bfe550.png | Bin 0 -> 110 bytes ...5f012869d1ee7c984775a569827a1784d34f5c.png | Bin 0 -> 119 bytes ...80fc633b6f84b87985eb016d25a560e2c38d4a.png | Bin 0 -> 101 bytes ...74422bee7486c8a182d60133728c672f2cdbbc.png | Bin 0 -> 4369 bytes ...8a0584bdbd6b4a4a9091ff1e6b3adb31e63bd9.png | Bin 0 -> 4369 bytes ...699e856a2980753c7a47b66447da5d9f93fb7f.png | Bin 0 -> 4369 bytes ...065f5833e05b97f7a052b1c141e754d62e1a8b.png | Bin 0 -> 4369 bytes ...81550d6412aa207f48468724a6a15402b6041b.png | Bin 0 -> 4369 bytes ...560466590d70b52b8a56ed1a20536387000649.png | Bin 0 -> 115937 bytes ...8a0fa807b81325227525049e74be37c27465b1.png | Bin 0 -> 120939 bytes ...782ea2e71e5ed5a4b807356490777996de2498.png | Bin 0 -> 84758 bytes ...d0418fecdb343d3841cf9d4fee21e64e9b1.ttf.gz | Bin 0 -> 26397 bytes ...dd9d5df2633ffcccbed4f549a6163d81ecd818.png | Bin 0 -> 12600 bytes ...f7e92d7d2d205d8000a59866c12b37f10b0013.png | Bin 0 -> 8728 bytes ...0645f36814b91a6d6f348b02be338c74ad6ff5.png | Bin 0 -> 150 bytes ...e9705b3b69cd59e7ff4133509a9de3e8ae8789.png | Bin 0 -> 140 bytes ...f4ee2da589a7d5dbcbf71fd7b6fa25dff58b1c.png | Bin 0 -> 596 bytes ...fe7d8c58f498729c0e425d330a992fd0fd87cd.png | Bin 0 -> 800 bytes ...db99413fb2f56d038b29fb3d9b59989cb7fa30.png | Bin 0 -> 1550 bytes ...d84d7744ff71a9c268f47d8106c3e4a56f821b.png | Bin 0 -> 361 bytes ...5f2c25d43a6c43487275e581014d4eb9997724.png | Bin 0 -> 748 bytes ...c5d86dc303eb3b93d25294d92fc7ad65530635.png | Bin 0 -> 737 bytes ...8af74ebc09d88dac6b9575b43fb9807afc492a.png | Bin 0 -> 786 bytes ...fc32135093000653181cccce5070ace89cf453.gif | Bin 0 -> 85 bytes ...a9ece3cbba0d34b1b9f64ddba588da6f51640e.png | Bin 0 -> 749 bytes ...cdf15f49e2f69626877a67a04d82c9e72c8691.png | Bin 0 -> 805 bytes ...fafb536558104ac88ff9817429e8d6dace3d1d.png | Bin 0 -> 761 bytes ...aea1ba428894d2baeb730b16ce555f458cd4cf.png | Bin 0 -> 750 bytes ...12fc3924a786e5ea337e2124a9cfcc8b25cd72.png | Bin 0 -> 253 bytes ...b5f93b07a84f47bdb66716e4f38654394e7474.png | Bin 0 -> 235 bytes ...ff1c5dc7ebefc092eac763d85512eba90f4821.css | 1 + ...c5dc7ebefc092eac763d85512eba90f4821.css.gz | Bin 0 -> 1355 bytes ...879a17b72b7f42f3f410bae9eb8e0d5f8fcf9d9.js | 1 + ...a17b72b7f42f3f410bae9eb8e0d5f8fcf9d9.js.gz | Bin 0 -> 2780 bytes ...5fefb86e37d4084b765b917486d5621bad1156.png | Bin 0 -> 942 bytes ...fcd0f7ee942d7828677ba6b5813c98e8a71b5d.png | Bin 0 -> 319 bytes ...eeb860a5065d4a8f5a168ed531a4608990c234.css | 8 + ...860a5065d4a8f5a168ed531a4608990c234.css.gz | Bin 0 -> 32213 bytes ...05334ae846740d790fa940aa06cd820680d275d.js | 17 + ...34ae846740d790fa940aa06cd820680d275d.js.gz | Bin 0 -> 144263 bytes 60 files changed, 2718 insertions(+), 2 deletions(-) create mode 100644 public/assets/application-231c62eb209435a6798fc93f4efca604996f71feb9a044757eea6d9dd9a02b08.js create mode 100644 public/assets/application-231c62eb209435a6798fc93f4efca604996f71feb9a044757eea6d9dd9a02b08.js.gz create mode 100644 public/assets/application-83aa794b7b146afdb9a893750bf5287e65e0e67f5eb4f971f072c3a565c2c3e3.css create mode 100644 public/assets/application-83aa794b7b146afdb9a893750bf5287e65e0e67f5eb4f971f072c3a565c2c3e3.css.gz create mode 100644 public/assets/fontawesome-webfont-2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe.woff2 create mode 100644 public/assets/fontawesome-webfont-7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979.eot create mode 100644 public/assets/fontawesome-webfont-7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979.eot.gz create mode 100644 public/assets/fontawesome-webfont-aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8.ttf create mode 100644 public/assets/fontawesome-webfont-aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8.ttf.gz create mode 100644 public/assets/fontawesome-webfont-ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4.svg create mode 100644 public/assets/fontawesome-webfont-ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4.svg.gz create mode 100644 public/assets/fontawesome-webfont-ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07.woff create mode 100644 public/assets/greyzz-52f4bd54c3e5eb29a6cd5aa2f3336117e268fa10994cdc47a1a7f12cbc28a8c9.png create mode 100644 public/assets/jquery-ui/ui-bg_flat_0_aaaaaa_40x100-9a8492a580bf85d3e98ae8861fbd45567e5a1f83eeafcf9574da0399d5f602ab.png create mode 100644 public/assets/jquery-ui/ui-bg_flat_75_ffffff_40x100-39ab7ccd9f4e82579da78a9241265df288d8eb65dbbd7cf48aed2d0129887df5.png create mode 100644 public/assets/jquery-ui/ui-bg_glass_55_fbf9ee_1x400-691597e8a40a891ea94d3589976ecfc33e6145c49422443b00ac2b5a0022964c.png create mode 100644 public/assets/jquery-ui/ui-bg_glass_65_ffffff_1x400-f0e6cd91b837d5c5644d026e5ffeccd907953317cd5c0f689901733afda260b2.png create mode 100644 public/assets/jquery-ui/ui-bg_glass_75_dadada_1x400-c108f5cbf2dd9ec07a26530695ddd95e1664597ce6c056ae44c162cc2e28cec4.png create mode 100644 public/assets/jquery-ui/ui-bg_glass_75_e6e6e6_1x400-ddf5dd4e0ef2b185e8bb0af7b6e90ebe74a84384cb4700658e76e754c8bfe550.png create mode 100644 public/assets/jquery-ui/ui-bg_glass_95_fef1ec_1x400-f6f1c1bedf1a0f37cfef81d12f5f012869d1ee7c984775a569827a1784d34f5c.png create mode 100644 public/assets/jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-54270656df079c4da5182629a080fc633b6f84b87985eb016d25a560e2c38d4a.png create mode 100644 public/assets/jquery-ui/ui-icons_222222_256x240-57adb0d65f4e91dacfee975d9574422bee7486c8a182d60133728c672f2cdbbc.png create mode 100644 public/assets/jquery-ui/ui-icons_2e83ff_256x240-20f8c6667afc48aa433ee9eb6d8a0584bdbd6b4a4a9091ff1e6b3adb31e63bd9.png create mode 100644 public/assets/jquery-ui/ui-icons_454545_256x240-07460e843c3e59aaadbb34231e699e856a2980753c7a47b66447da5d9f93fb7f.png create mode 100644 public/assets/jquery-ui/ui-icons_888888_256x240-ea2e29625de3463465e93b002b065f5833e05b97f7a052b1c141e754d62e1a8b.png create mode 100644 public/assets/jquery-ui/ui-icons_cd0a0a_256x240-1e32c6dbf5d3fd342f27a78aa881550d6412aa207f48468724a6a15402b6041b.png create mode 100644 public/assets/main1-ce7842c6f5117e4e8c8b84803e560466590d70b52b8a56ed1a20536387000649.png create mode 100644 public/assets/main2-81eba1fb59738754a61af7ddbb8a0fa807b81325227525049e74be37c27465b1.png create mode 100644 public/assets/main3-015d07d3d7e7eba8aac81d6457782ea2e71e5ed5a4b807356490777996de2498.png create mode 100644 public/assets/proximanova-2d77cd2df52cebe3d1eb8711a9ab9d0418fecdb343d3841cf9d4fee21e64e9b1.ttf.gz create mode 100644 public/assets/rails_admin/bootstrap/glyphicons-halflings-d8f698f711889b597570752ec3dd9d5df2633ffcccbed4f549a6163d81ecd818.png create mode 100644 public/assets/rails_admin/bootstrap/glyphicons-halflings-white-c5007cc31a9a80308ad8fc678cf7e92d7d2d205d8000a59866c12b37f10b0013.png create mode 100644 public/assets/rails_admin/bullet_black-b7235a2da3e96f46a9c751ebca0645f36814b91a6d6f348b02be338c74ad6ff5.png create mode 100644 public/assets/rails_admin/bullet_white-1e2cfd722d716b7ded9dd1b0f7e9705b3b69cd59e7ff4133509a9de3e8ae8789.png create mode 100644 public/assets/rails_admin/calendar-36e14adbcda9a98ebe5bd007d4f4ee2da589a7d5dbcbf71fd7b6fa25dff58b1c.png create mode 100644 public/assets/rails_admin/clock-8f855a8769c00034992805bb16fe7d8c58f498729c0e425d330a992fd0fd87cd.png create mode 100644 public/assets/rails_admin/colorpicker/colorpicker_background-5dc685918f94b564efe5b37fdedb99413fb2f56d038b29fb3d9b59989cb7fa30.png create mode 100644 public/assets/rails_admin/colorpicker/colorpicker_hex-8aa461c8348958c5338be86542d84d7744ff71a9c268f47d8106c3e4a56f821b.png create mode 100644 public/assets/rails_admin/colorpicker/colorpicker_hsb_b-b41d1e159cf33b8c41dbde656c5f2c25d43a6c43487275e581014d4eb9997724.png create mode 100644 public/assets/rails_admin/colorpicker/colorpicker_hsb_h-92af49202aba35419db6d23a0cc5d86dc303eb3b93d25294d92fc7ad65530635.png create mode 100644 public/assets/rails_admin/colorpicker/colorpicker_hsb_s-57a99dad7075e5d4e2d056aa7f8af74ebc09d88dac6b9575b43fb9807afc492a.png create mode 100644 public/assets/rails_admin/colorpicker/colorpicker_indic-a6d6b9fd877155781ffd2f08c0fc32135093000653181cccce5070ace89cf453.gif create mode 100644 public/assets/rails_admin/colorpicker/colorpicker_rgb_b-a0e453946728dd84f0d7034765a9ece3cbba0d34b1b9f64ddba588da6f51640e.png create mode 100644 public/assets/rails_admin/colorpicker/colorpicker_rgb_g-eb69a1025a7fcee713e7c2ace7cdf15f49e2f69626877a67a04d82c9e72c8691.png create mode 100644 public/assets/rails_admin/colorpicker/colorpicker_rgb_r-f30bcb7d61767ab99f7ba8218bfafb536558104ac88ff9817429e8d6dace3d1d.png create mode 100644 public/assets/rails_admin/colorpicker/colorpicker_submit-1fc662963883872cd6e0061d83aea1ba428894d2baeb730b16ce555f458cd4cf.png create mode 100644 public/assets/rails_admin/colorpicker/select-d8094cb7e821a5303d07de49e112fc3924a786e5ea337e2124a9cfcc8b25cd72.png create mode 100644 public/assets/rails_admin/colorpicker/slider-4390ddaed657d5ce9f87423e32b5f93b07a84f47bdb66716e4f38654394e7474.png create mode 100644 public/assets/rails_admin/jquery.colorpicker-17a04cd55ca585e49dd291bbe9ff1c5dc7ebefc092eac763d85512eba90f4821.css create mode 100644 public/assets/rails_admin/jquery.colorpicker-17a04cd55ca585e49dd291bbe9ff1c5dc7ebefc092eac763d85512eba90f4821.css.gz create mode 100644 public/assets/rails_admin/jquery.colorpicker-aeb6c9e7214d3f2107b27be9b879a17b72b7f42f3f410bae9eb8e0d5f8fcf9d9.js create mode 100644 public/assets/rails_admin/jquery.colorpicker-aeb6c9e7214d3f2107b27be9b879a17b72b7f42f3f410bae9eb8e0d5f8fcf9d9.js.gz create mode 100644 public/assets/rails_admin/logo-15a34fba049a986902dc27d5e55fefb86e37d4084b765b917486d5621bad1156.png create mode 100644 public/assets/rails_admin/magnifier-88692f99f21f1f23c25becf583fcd0f7ee942d7828677ba6b5813c98e8a71b5d.png create mode 100644 public/assets/rails_admin/rails_admin-5e56168b8a6d559383c73157b0eeb860a5065d4a8f5a168ed531a4608990c234.css create mode 100644 public/assets/rails_admin/rails_admin-5e56168b8a6d559383c73157b0eeb860a5065d4a8f5a168ed531a4608990c234.css.gz create mode 100644 public/assets/rails_admin/rails_admin-7433259f8b06edf85f74c06ff05334ae846740d790fa940aa06cd820680d275d.js create mode 100644 public/assets/rails_admin/rails_admin-7433259f8b06edf85f74c06ff05334ae846740d790fa940aa06cd820680d275d.js.gz diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb index 12bc772..651b839 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -7,7 +7,7 @@ # Devise will use the `secret_key_base` as its `secret_key` # by default. You can change it below and use your own secret key. # config.secret_key = '707e96cf4b2f8c7da5e6c1c8cca86d70c28d00fe5ebfee39ba3a55348261b01b77088458b98512099c3047033af6846460639200b5f10a83a87207bf4dc58dd8' - +config.secret_key = '6c329cbb85fca7d021067446d279889bf15f0c42b3950b623ff4c9bb53d7de6dfbdf1564cfc42fcdab4e64a07a3025818a2eb36f3604a39c6d1ef5e6c838e210' # ==> Mailer Configuration # Configure the e-mail address which will be shown in Devise::Mailer, # note that it will be overwritten if you use your own mailer class diff --git a/public/assets/.sprockets-manifest-a3550939de0f824959c7d980317dbc23.json b/public/assets/.sprockets-manifest-a3550939de0f824959c7d980317dbc23.json index 8df5bd3..1c2b536 100644 --- a/public/assets/.sprockets-manifest-a3550939de0f824959c7d980317dbc23.json +++ b/public/assets/.sprockets-manifest-a3550939de0f824959c7d980317dbc23.json @@ -1 +1 @@ -{"files":{"rails_admin/rails_admin-5e4f49714b7a6dbb40447cf2d4515057dc9feb26067d53de726cd4470f179887.js":{"logical_path":"rails_admin/rails_admin.js","mtime":"2016-11-14T04:38:53+00:00","size":1185038,"digest":"5e4f49714b7a6dbb40447cf2d4515057dc9feb26067d53de726cd4470f179887","integrity":"sha256-Xk9JcUt6bbtARHzy1FFQV9yf6yYGfVPecmzURw8XmIc="},"rails_admin/rails_admin-4ec0f24f8655326238fbddc983b62688a6c9db2310e3f50056ea869c2e125501.css":{"logical_path":"rails_admin/rails_admin.css","mtime":"2016-11-14T04:38:53+00:00","size":520061,"digest":"4ec0f24f8655326238fbddc983b62688a6c9db2310e3f50056ea869c2e125501","integrity":"sha256-TsDyT4ZVMmI4+93Jg7YmiKbJ2yMQ4/UAVuqGnC4SVQE="},"rails_admin/aristo/images/bg_fallback-bad53cee26694a42bdba717337e2de9f997ebf3ded300b8c3ff48ac5192c1903.png":{"logical_path":"rails_admin/aristo/images/bg_fallback.png","mtime":"2016-11-14T04:38:52+00:00","size":168,"digest":"bad53cee26694a42bdba717337e2de9f997ebf3ded300b8c3ff48ac5192c1903","integrity":"sha256-utU87iZpSkK9unFzN+Len5l+vz3tMAuMP/SKxRksGQM="},"rails_admin/aristo/images/ui-icons_222222_256x240-310ae73efc6774716f0a80ce2141565fddec51702330a8066fd5e220437ae321.png":{"logical_path":"rails_admin/aristo/images/ui-icons_222222_256x240.png","mtime":"2016-11-14T04:38:52+00:00","size":3699,"digest":"310ae73efc6774716f0a80ce2141565fddec51702330a8066fd5e220437ae321","integrity":"sha256-MQrnPvxndHFvCoDOIUFWX93sUXAjMKgGb9XiIEN64yE="},"rails_admin/aristo/images/ui-icons_454545_256x240-d59c6da436d1a19aa35bcbf2d400ad160f2b2568fbbfa2f9ebfc192d14025474.png":{"logical_path":"rails_admin/aristo/images/ui-icons_454545_256x240.png","mtime":"2016-11-14T04:38:52+00:00","size":3699,"digest":"d59c6da436d1a19aa35bcbf2d400ad160f2b2568fbbfa2f9ebfc192d14025474","integrity":"sha256-1ZxtpDbRoZqjW8vy1ACtFg8rJWj7v6L56/wZLRQCVHQ="},"rails_admin/aristo/images/icon_sprite-34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded.png":{"logical_path":"rails_admin/aristo/images/icon_sprite.png","mtime":"2016-11-14T04:38:52+00:00","size":2660,"digest":"34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded","integrity":"sha256-NKMIBvy6Q6Lv/Jc5y3o3CoZRmafTi/y8fCR07z/3De0="},"rails_admin/aristo/images/slider_handles-4b523f3d1bd18af5fec23ec7d58ed85e4c7e8f4685fe85a8407e2d9017bf6484.png":{"logical_path":"rails_admin/aristo/images/slider_handles.png","mtime":"2016-11-14T04:38:52+00:00","size":1351,"digest":"4b523f3d1bd18af5fec23ec7d58ed85e4c7e8f4685fe85a8407e2d9017bf6484","integrity":"sha256-S1I/PRvRivX+wj7H1Y7YXkx+j0aF/oWoQH4tkBe/ZIQ="},"rails_admin/aristo/images/progress_bar-a2ed712d76dcffc7a06918cd389511bca2cf7bb91c12b1d865bf44c7b2c46289.gif":{"logical_path":"rails_admin/aristo/images/progress_bar.gif","mtime":"2016-11-14T04:38:52+00:00","size":494,"digest":"a2ed712d76dcffc7a06918cd389511bca2cf7bb91c12b1d865bf44c7b2c46289","integrity":"sha256-ou1xLXbc/8egaRjNOJURvKLPe7kcErHYZb9Ex7LEYok="},"rails_admin/multiselect/icon_sprite-34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded.png":{"logical_path":"rails_admin/multiselect/icon_sprite.png","mtime":"2016-11-14T04:38:52+00:00","size":2660,"digest":"34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded","integrity":"sha256-NKMIBvy6Q6Lv/Jc5y3o3CoZRmafTi/y8fCR07z/3De0="},"rails_admin/multiselect/ui-icon-circle-triangle-n-light-e7daf3169259a9fd6b8177b8e89ff2b964cd3dababd580a46d7fb4eecc07763b.png":{"logical_path":"rails_admin/multiselect/ui-icon-circle-triangle-n-light.png","mtime":"2016-11-14T04:38:52+00:00","size":492,"digest":"e7daf3169259a9fd6b8177b8e89ff2b964cd3dababd580a46d7fb4eecc07763b","integrity":"sha256-59rzFpJZqf1rgXe46J/yuWTNPaur1YCkbX+07swHdjs="},"rails_admin/multiselect/ui-icon-circle-triangle-n-dark-bb53269e44173a496d2620bad201ca838a57b67c40b3439b5ce89345ef9e888b.png":{"logical_path":"rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png","mtime":"2016-11-14T04:38:52+00:00","size":334,"digest":"bb53269e44173a496d2620bad201ca838a57b67c40b3439b5ce89345ef9e888b","integrity":"sha256-u1MmnkQXOkltJiC60gHKg4pXtnxAs0ObXOiTRe+eiIs="},"rails_admin/multiselect/ui-icon-circle-triangle-s-light-e1698d37f37f7db85ce6736810a34b1a229306be8a3f3be156fbaa47dd6cd160.png":{"logical_path":"rails_admin/multiselect/ui-icon-circle-triangle-s-light.png","mtime":"2016-11-14T04:38:52+00:00","size":484,"digest":"e1698d37f37f7db85ce6736810a34b1a229306be8a3f3be156fbaa47dd6cd160","integrity":"sha256-4WmNN/N/fbhc5nNoEKNLGiKTBr6KPzvhVvuqR91s0WA="},"rails_admin/multiselect/ui-icon-circle-triangle-s-dark-2bf097798e2b1db766a16ff4f335d3fe94bd51f92dc2ddf47c8a370ba31189c0.png":{"logical_path":"rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png","mtime":"2016-11-14T04:38:52+00:00","size":338,"digest":"2bf097798e2b1db766a16ff4f335d3fe94bd51f92dc2ddf47c8a370ba31189c0","integrity":"sha256-K/CXeY4rHbdmoW/08zXT/pS9Ufktwt30fIo3C6MRicA="},"rails_admin/colorpicker/select2-8ddf680d1a86d603653e43f694bbb6dc1010aa81f5c0c9c87181e10e064e503b.png":{"logical_path":"rails_admin/colorpicker/select2.png","mtime":"2016-11-14T04:38:52+00:00","size":305,"digest":"8ddf680d1a86d603653e43f694bbb6dc1010aa81f5c0c9c87181e10e064e503b","integrity":"sha256-jd9oDRqG1gNlPkP2lLu23BAQqoH1wMnIcYHhDgZOUDs="},"rails_admin/colorpicker/custom_background-52967b595ae718ad95520b9cf2b22551fb8cb0d81a171db869b00d2b604b4976.png":{"logical_path":"rails_admin/colorpicker/custom_background.png","mtime":"2016-11-14T04:38:52+00:00","size":1557,"digest":"52967b595ae718ad95520b9cf2b22551fb8cb0d81a171db869b00d2b604b4976","integrity":"sha256-UpZ7WVrnGK2VUguc8rIlUfuMsNgaFx24abANK2BLSXY="},"rails_admin/colorpicker/colorpicker_overlay-ba21ab85c59167b61af508e34a22ee344c97bb11454d287a47691fa2fb182856.png":{"logical_path":"rails_admin/colorpicker/colorpicker_overlay.png","mtime":"2016-11-14T04:38:52+00:00","size":6971,"digest":"ba21ab85c59167b61af508e34a22ee344c97bb11454d287a47691fa2fb182856","integrity":"sha256-uiGrhcWRZ7Ya9QjjSiLuNEyXuxFFTSh6R2kfovsYKFY="},"rails_admin/colorpicker/colorpicker_select-980ae86d6aab751f6f67a1191d78c0fa54b533583456b905ec43b34d5806ee2d.gif":{"logical_path":"rails_admin/colorpicker/colorpicker_select.gif","mtime":"2016-11-14T04:38:52+00:00","size":72,"digest":"980ae86d6aab751f6f67a1191d78c0fa54b533583456b905ec43b34d5806ee2d","integrity":"sha256-mArobWqrdR9vZ6EZHXjA+lS1M1g0VrkF7EOzTVgG7i0="},"rails_admin/colorpicker/custom_indic-8ca62ee85015e67671f2312a2fead633740335f65e254d8f4c3ea29b99f62de7.gif":{"logical_path":"rails_admin/colorpicker/custom_indic.gif","mtime":"2016-11-14T04:38:52+00:00","size":85,"digest":"8ca62ee85015e67671f2312a2fead633740335f65e254d8f4c3ea29b99f62de7","integrity":"sha256-jKYu6FAV5nZx8jEqL+rWM3QDNfZeJU2PTD6im5n2Lec="},"rails_admin/colorpicker/custom_hex-4b1a7b08312edc3732cf30c7d8d5291abea41c64311c3d05d67a586cbe3dcf37.png":{"logical_path":"rails_admin/colorpicker/custom_hex.png","mtime":"2016-11-14T04:38:52+00:00","size":347,"digest":"4b1a7b08312edc3732cf30c7d8d5291abea41c64311c3d05d67a586cbe3dcf37","integrity":"sha256-Sxp7CDEu3DcyzzDH2NUpGr6kHGQxHD0F1npYbL49zzc="},"rails_admin/colorpicker/custom_rgb_r-54289ccad89df00514d84ba6d16d1a0abc0d61de95dcfc054bf2202e238a7cb6.png":{"logical_path":"rails_admin/colorpicker/custom_rgb_r.png","mtime":"2016-11-14T04:38:52+00:00","size":727,"digest":"54289ccad89df00514d84ba6d16d1a0abc0d61de95dcfc054bf2202e238a7cb6","integrity":"sha256-VCicytid8AUU2Eum0W0aCrwNYd6V3PwFS/IgLiOKfLY="},"rails_admin/colorpicker/custom_rgb_g-8ab4d41c46fc26080b75eecc6f8c25d8f6db5264cf56ecc4993f86d100ebd71f.png":{"logical_path":"rails_admin/colorpicker/custom_rgb_g.png","mtime":"2016-11-14T04:38:52+00:00","size":780,"digest":"8ab4d41c46fc26080b75eecc6f8c25d8f6db5264cf56ecc4993f86d100ebd71f","integrity":"sha256-irTUHEb8JggLde7Mb4wl2PbbUmTPVuzEmT+G0QDr1x8="},"rails_admin/colorpicker/custom_rgb_b-22f2da1810cd9da18a1f93418b8f45bd3cb676aa9790ad5e1aba37779fb3ac31.png":{"logical_path":"rails_admin/colorpicker/custom_rgb_b.png","mtime":"2016-11-14T04:38:52+00:00","size":722,"digest":"22f2da1810cd9da18a1f93418b8f45bd3cb676aa9790ad5e1aba37779fb3ac31","integrity":"sha256-IvLaGBDNnaGKH5NBi49FvTy2dqqXkK1eGro3d5+zrDE="},"rails_admin/colorpicker/custom_hsb_h-df01edb80a710cdd9d9057201eaa682a8c86cd80ad6c6929f1d4a9182ad6aed3.png":{"logical_path":"rails_admin/colorpicker/custom_hsb_h.png","mtime":"2016-11-14T04:38:52+00:00","size":711,"digest":"df01edb80a710cdd9d9057201eaa682a8c86cd80ad6c6929f1d4a9182ad6aed3","integrity":"sha256-3wHtuApxDN2dkFcgHqpoKoyGzYCtbGkp8dSpGCrWrtM="},"rails_admin/colorpicker/custom_hsb_s-9277f3fd9eb79baef2384f7b38968184fd40d631024149c7b41543b7796c0706.png":{"logical_path":"rails_admin/colorpicker/custom_hsb_s.png","mtime":"2016-11-14T04:38:52+00:00","size":845,"digest":"9277f3fd9eb79baef2384f7b38968184fd40d631024149c7b41543b7796c0706","integrity":"sha256-knfz/Z63m67yOE97OJaBhP1A1jECQUnHtBVDt3lsBwY="},"rails_admin/colorpicker/custom_hsb_b-7160b5fd5c5779102cb91f771b80ef2621dabe10bf06e8359deaefece831b58b.png":{"logical_path":"rails_admin/colorpicker/custom_hsb_b.png","mtime":"2016-11-14T04:38:52+00:00","size":795,"digest":"7160b5fd5c5779102cb91f771b80ef2621dabe10bf06e8359deaefece831b58b","integrity":"sha256-cWC1/VxXeRAsuR93G4DvJiHavhC/Bug1nerv7OgxtYs="},"rails_admin/colorpicker/custom_submit-3a57bad878f6d608b998e36acefe2325d786d4631abeecc5d400ca5c062f5ce5.png":{"logical_path":"rails_admin/colorpicker/custom_submit.png","mtime":"2016-11-14T04:38:52+00:00","size":791,"digest":"3a57bad878f6d608b998e36acefe2325d786d4631abeecc5d400ca5c062f5ce5","integrity":"sha256-Ole62Hj21gi5mONqzv4jJdeG1GMavuzF1ADKXAYvXOU="},"fontawesome-webfont-50bbe9192697e791e2ee4ef73917aeb1b03e727dff08a1fc8d74f00e4aa812e1.eot":{"logical_path":"fontawesome-webfont.eot","mtime":"2016-11-14T04:38:51+00:00","size":76518,"digest":"50bbe9192697e791e2ee4ef73917aeb1b03e727dff08a1fc8d74f00e4aa812e1","integrity":"sha256-ULvpGSaX55Hi7k73OReusbA+cn3/CKH8jXTwDkqoEuE="},"fontawesome-webfont-7dacf83f51179de8d7980a513e67ab3a08f2c6272bb5946df8fd77c0d1763b73.woff2":{"logical_path":"fontawesome-webfont.woff2","mtime":"2016-11-14T04:38:51+00:00","size":71896,"digest":"7dacf83f51179de8d7980a513e67ab3a08f2c6272bb5946df8fd77c0d1763b73","integrity":"sha256-faz4P1EXnejXmApRPmerOgjyxicrtZRt+P13wNF2O3M="},"fontawesome-webfont-adbc4f95eb6d7f2738959cf0ecbc374672fce47e856050a8e9791f457623ac2c.woff":{"logical_path":"fontawesome-webfont.woff","mtime":"2016-11-14T04:38:51+00:00","size":90412,"digest":"adbc4f95eb6d7f2738959cf0ecbc374672fce47e856050a8e9791f457623ac2c","integrity":"sha256-rbxPlettfyc4lZzw7Lw3RnL85H6FYFCo6XkfRXYjrCw="},"fontawesome-webfont-ae19e2e4c04f2b04bf030684c4c1db8faf5c8fe3ee03d1e0c409046608b38912.ttf":{"logical_path":"fontawesome-webfont.ttf","mtime":"2016-11-14T04:38:51+00:00","size":152796,"digest":"ae19e2e4c04f2b04bf030684c4c1db8faf5c8fe3ee03d1e0c409046608b38912","integrity":"sha256-rhni5MBPKwS/AwaExMHbj69cj+PuA9HgxAkEZgiziRI="},"fontawesome-webfont-8e3586389bb4cd01b3f85bb3b622739bde6627f28bba63a020c223ca9cf1b9ae.svg":{"logical_path":"fontawesome-webfont.svg","mtime":"2016-11-14T04:38:51+00:00","size":391622,"digest":"8e3586389bb4cd01b3f85bb3b622739bde6627f28bba63a020c223ca9cf1b9ae","integrity":"sha256-jjWGOJu0zQGz+FuztiJzm95mJ/KLumOgIMIjypzxua4="},"rails_admin/jquery.colorpicker-65a540a6a8e61569a39a37bd1456543ae5e5bbe48868247372bed40a1dff2bcf.js":{"logical_path":"rails_admin/jquery.colorpicker.js","mtime":"2016-11-14T04:38:52+00:00","size":18773,"digest":"65a540a6a8e61569a39a37bd1456543ae5e5bbe48868247372bed40a1dff2bcf","integrity":"sha256-ZaVApqjmFWmjmje9FFZUOuXlu+SIaCRzcr7UCh3/K88="},"rails_admin/jquery.colorpicker-ba46621a3e148479231cc7f255b1afb7052ce3a41493c50636edafe761e6b11c.css":{"logical_path":"rails_admin/jquery.colorpicker.css","mtime":"2016-11-14T04:38:52+00:00","size":7295,"digest":"ba46621a3e148479231cc7f255b1afb7052ce3a41493c50636edafe761e6b11c","integrity":"sha256-ukZiGj4UhHkjHMfyVbGvtwUs46QUk8UGNu2v52HmsRw="},"proximanova-2d77cd2df52cebe3d1eb8711a9ab9d0418fecdb343d3841cf9d4fee21e64e9b1.ttf":{"logical_path":"proximanova.ttf","mtime":"2016-10-07T18:38:43+00:00","size":51648,"digest":"2d77cd2df52cebe3d1eb8711a9ab9d0418fecdb343d3841cf9d4fee21e64e9b1","integrity":"sha256-LXfNLfUs6+PR64cRqaudBBj+zbND04Qc+dT+4h5k6bE="},"ewb-sfp-logo-d5035f1690968fbd6a585bd28d3103171ed063c8bc370d75a222d2e1be970dcf.png":{"logical_path":"ewb-sfp-logo.png","mtime":"2016-10-07T18:38:43+00:00","size":26458,"digest":"d5035f1690968fbd6a585bd28d3103171ed063c8bc370d75a222d2e1be970dcf","integrity":"sha256-1QNfFpCWj71qWFvSjTEDFx7QY8i8Nw11oiLS4b6XDc8="},"application-f2204fdd0647c4d627dc20817b4e6d83d2105c231955d3922f5c708ba69035bb.js":{"logical_path":"application.js","mtime":"2016-11-14T08:32:56+00:00","size":992213,"digest":"f2204fdd0647c4d627dc20817b4e6d83d2105c231955d3922f5c708ba69035bb","integrity":"sha256-8iBP3QZHxNYn3CCBe05tg9IQXCMZVdOSL1xwi6aQNbs="},"application-c72f927db3f060dc6d9e86ad3fee9dca351cbecd5dffc15ba6d037539c59c630.css":{"logical_path":"application.css","mtime":"2016-11-14T07:32:23+00:00","size":266990,"digest":"c72f927db3f060dc6d9e86ad3fee9dca351cbecd5dffc15ba6d037539c59c630","integrity":"sha256-xy+SfbPwYNxtnoatP+6dyjUcvs1d/8FbptA3U5xZxjA="},"application-e5dc5e60f13ee0ab7e586d54cacdcdfbc8f23ac8f7f1adfc3a983ce44fa917e5.js":{"logical_path":"application.js","mtime":"2016-11-14T10:05:09+00:00","size":972143,"digest":"e5dc5e60f13ee0ab7e586d54cacdcdfbc8f23ac8f7f1adfc3a983ce44fa917e5","integrity":"sha256-5dxeYPE+4Kt+WG1Uys3N+8jyOsj38a38Opg85E+pF+U="}},"assets":{"rails_admin/rails_admin.js":"rails_admin/rails_admin-5e4f49714b7a6dbb40447cf2d4515057dc9feb26067d53de726cd4470f179887.js","rails_admin/rails_admin.css":"rails_admin/rails_admin-4ec0f24f8655326238fbddc983b62688a6c9db2310e3f50056ea869c2e125501.css","rails_admin/aristo/images/bg_fallback.png":"rails_admin/aristo/images/bg_fallback-bad53cee26694a42bdba717337e2de9f997ebf3ded300b8c3ff48ac5192c1903.png","rails_admin/aristo/images/ui-icons_222222_256x240.png":"rails_admin/aristo/images/ui-icons_222222_256x240-310ae73efc6774716f0a80ce2141565fddec51702330a8066fd5e220437ae321.png","rails_admin/aristo/images/ui-icons_454545_256x240.png":"rails_admin/aristo/images/ui-icons_454545_256x240-d59c6da436d1a19aa35bcbf2d400ad160f2b2568fbbfa2f9ebfc192d14025474.png","rails_admin/aristo/images/icon_sprite.png":"rails_admin/aristo/images/icon_sprite-34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded.png","rails_admin/aristo/images/slider_handles.png":"rails_admin/aristo/images/slider_handles-4b523f3d1bd18af5fec23ec7d58ed85e4c7e8f4685fe85a8407e2d9017bf6484.png","rails_admin/aristo/images/progress_bar.gif":"rails_admin/aristo/images/progress_bar-a2ed712d76dcffc7a06918cd389511bca2cf7bb91c12b1d865bf44c7b2c46289.gif","rails_admin/multiselect/icon_sprite.png":"rails_admin/multiselect/icon_sprite-34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded.png","rails_admin/multiselect/ui-icon-circle-triangle-n-light.png":"rails_admin/multiselect/ui-icon-circle-triangle-n-light-e7daf3169259a9fd6b8177b8e89ff2b964cd3dababd580a46d7fb4eecc07763b.png","rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png":"rails_admin/multiselect/ui-icon-circle-triangle-n-dark-bb53269e44173a496d2620bad201ca838a57b67c40b3439b5ce89345ef9e888b.png","rails_admin/multiselect/ui-icon-circle-triangle-s-light.png":"rails_admin/multiselect/ui-icon-circle-triangle-s-light-e1698d37f37f7db85ce6736810a34b1a229306be8a3f3be156fbaa47dd6cd160.png","rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png":"rails_admin/multiselect/ui-icon-circle-triangle-s-dark-2bf097798e2b1db766a16ff4f335d3fe94bd51f92dc2ddf47c8a370ba31189c0.png","rails_admin/colorpicker/select2.png":"rails_admin/colorpicker/select2-8ddf680d1a86d603653e43f694bbb6dc1010aa81f5c0c9c87181e10e064e503b.png","rails_admin/colorpicker/custom_background.png":"rails_admin/colorpicker/custom_background-52967b595ae718ad95520b9cf2b22551fb8cb0d81a171db869b00d2b604b4976.png","rails_admin/colorpicker/colorpicker_overlay.png":"rails_admin/colorpicker/colorpicker_overlay-ba21ab85c59167b61af508e34a22ee344c97bb11454d287a47691fa2fb182856.png","rails_admin/colorpicker/colorpicker_select.gif":"rails_admin/colorpicker/colorpicker_select-980ae86d6aab751f6f67a1191d78c0fa54b533583456b905ec43b34d5806ee2d.gif","rails_admin/colorpicker/custom_indic.gif":"rails_admin/colorpicker/custom_indic-8ca62ee85015e67671f2312a2fead633740335f65e254d8f4c3ea29b99f62de7.gif","rails_admin/colorpicker/custom_hex.png":"rails_admin/colorpicker/custom_hex-4b1a7b08312edc3732cf30c7d8d5291abea41c64311c3d05d67a586cbe3dcf37.png","rails_admin/colorpicker/custom_rgb_r.png":"rails_admin/colorpicker/custom_rgb_r-54289ccad89df00514d84ba6d16d1a0abc0d61de95dcfc054bf2202e238a7cb6.png","rails_admin/colorpicker/custom_rgb_g.png":"rails_admin/colorpicker/custom_rgb_g-8ab4d41c46fc26080b75eecc6f8c25d8f6db5264cf56ecc4993f86d100ebd71f.png","rails_admin/colorpicker/custom_rgb_b.png":"rails_admin/colorpicker/custom_rgb_b-22f2da1810cd9da18a1f93418b8f45bd3cb676aa9790ad5e1aba37779fb3ac31.png","rails_admin/colorpicker/custom_hsb_h.png":"rails_admin/colorpicker/custom_hsb_h-df01edb80a710cdd9d9057201eaa682a8c86cd80ad6c6929f1d4a9182ad6aed3.png","rails_admin/colorpicker/custom_hsb_s.png":"rails_admin/colorpicker/custom_hsb_s-9277f3fd9eb79baef2384f7b38968184fd40d631024149c7b41543b7796c0706.png","rails_admin/colorpicker/custom_hsb_b.png":"rails_admin/colorpicker/custom_hsb_b-7160b5fd5c5779102cb91f771b80ef2621dabe10bf06e8359deaefece831b58b.png","rails_admin/colorpicker/custom_submit.png":"rails_admin/colorpicker/custom_submit-3a57bad878f6d608b998e36acefe2325d786d4631abeecc5d400ca5c062f5ce5.png","fontawesome-webfont.eot":"fontawesome-webfont-50bbe9192697e791e2ee4ef73917aeb1b03e727dff08a1fc8d74f00e4aa812e1.eot","fontawesome-webfont.woff2":"fontawesome-webfont-7dacf83f51179de8d7980a513e67ab3a08f2c6272bb5946df8fd77c0d1763b73.woff2","fontawesome-webfont.woff":"fontawesome-webfont-adbc4f95eb6d7f2738959cf0ecbc374672fce47e856050a8e9791f457623ac2c.woff","fontawesome-webfont.ttf":"fontawesome-webfont-ae19e2e4c04f2b04bf030684c4c1db8faf5c8fe3ee03d1e0c409046608b38912.ttf","fontawesome-webfont.svg":"fontawesome-webfont-8e3586389bb4cd01b3f85bb3b622739bde6627f28bba63a020c223ca9cf1b9ae.svg","rails_admin/jquery.colorpicker.js":"rails_admin/jquery.colorpicker-65a540a6a8e61569a39a37bd1456543ae5e5bbe48868247372bed40a1dff2bcf.js","rails_admin/jquery.colorpicker.css":"rails_admin/jquery.colorpicker-ba46621a3e148479231cc7f255b1afb7052ce3a41493c50636edafe761e6b11c.css","proximanova.ttf":"proximanova-2d77cd2df52cebe3d1eb8711a9ab9d0418fecdb343d3841cf9d4fee21e64e9b1.ttf","ewb-sfp-logo.png":"ewb-sfp-logo-d5035f1690968fbd6a585bd28d3103171ed063c8bc370d75a222d2e1be970dcf.png","application.js":"application-e5dc5e60f13ee0ab7e586d54cacdcdfbc8f23ac8f7f1adfc3a983ce44fa917e5.js","application.css":"application-c72f927db3f060dc6d9e86ad3fee9dca351cbecd5dffc15ba6d037539c59c630.css"}} \ No newline at end of file +{"files":{"rails_admin/rails_admin-5e4f49714b7a6dbb40447cf2d4515057dc9feb26067d53de726cd4470f179887.js":{"logical_path":"rails_admin/rails_admin.js","mtime":"2016-11-14T04:38:53+00:00","size":1185038,"digest":"5e4f49714b7a6dbb40447cf2d4515057dc9feb26067d53de726cd4470f179887","integrity":"sha256-Xk9JcUt6bbtARHzy1FFQV9yf6yYGfVPecmzURw8XmIc="},"rails_admin/rails_admin-4ec0f24f8655326238fbddc983b62688a6c9db2310e3f50056ea869c2e125501.css":{"logical_path":"rails_admin/rails_admin.css","mtime":"2016-11-14T04:38:53+00:00","size":520061,"digest":"4ec0f24f8655326238fbddc983b62688a6c9db2310e3f50056ea869c2e125501","integrity":"sha256-TsDyT4ZVMmI4+93Jg7YmiKbJ2yMQ4/UAVuqGnC4SVQE="},"rails_admin/aristo/images/bg_fallback-bad53cee26694a42bdba717337e2de9f997ebf3ded300b8c3ff48ac5192c1903.png":{"logical_path":"rails_admin/aristo/images/bg_fallback.png","mtime":"2017-07-15T18:44:40+00:00","size":168,"digest":"bad53cee26694a42bdba717337e2de9f997ebf3ded300b8c3ff48ac5192c1903","integrity":"sha256-utU87iZpSkK9unFzN+Len5l+vz3tMAuMP/SKxRksGQM="},"rails_admin/aristo/images/ui-icons_222222_256x240-310ae73efc6774716f0a80ce2141565fddec51702330a8066fd5e220437ae321.png":{"logical_path":"rails_admin/aristo/images/ui-icons_222222_256x240.png","mtime":"2017-07-15T18:44:40+00:00","size":3699,"digest":"310ae73efc6774716f0a80ce2141565fddec51702330a8066fd5e220437ae321","integrity":"sha256-MQrnPvxndHFvCoDOIUFWX93sUXAjMKgGb9XiIEN64yE="},"rails_admin/aristo/images/ui-icons_454545_256x240-d59c6da436d1a19aa35bcbf2d400ad160f2b2568fbbfa2f9ebfc192d14025474.png":{"logical_path":"rails_admin/aristo/images/ui-icons_454545_256x240.png","mtime":"2017-07-15T18:44:40+00:00","size":3699,"digest":"d59c6da436d1a19aa35bcbf2d400ad160f2b2568fbbfa2f9ebfc192d14025474","integrity":"sha256-1ZxtpDbRoZqjW8vy1ACtFg8rJWj7v6L56/wZLRQCVHQ="},"rails_admin/aristo/images/icon_sprite-34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded.png":{"logical_path":"rails_admin/aristo/images/icon_sprite.png","mtime":"2017-07-15T18:44:40+00:00","size":2660,"digest":"34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded","integrity":"sha256-NKMIBvy6Q6Lv/Jc5y3o3CoZRmafTi/y8fCR07z/3De0="},"rails_admin/aristo/images/slider_handles-4b523f3d1bd18af5fec23ec7d58ed85e4c7e8f4685fe85a8407e2d9017bf6484.png":{"logical_path":"rails_admin/aristo/images/slider_handles.png","mtime":"2017-07-15T18:44:40+00:00","size":1351,"digest":"4b523f3d1bd18af5fec23ec7d58ed85e4c7e8f4685fe85a8407e2d9017bf6484","integrity":"sha256-S1I/PRvRivX+wj7H1Y7YXkx+j0aF/oWoQH4tkBe/ZIQ="},"rails_admin/aristo/images/progress_bar-a2ed712d76dcffc7a06918cd389511bca2cf7bb91c12b1d865bf44c7b2c46289.gif":{"logical_path":"rails_admin/aristo/images/progress_bar.gif","mtime":"2017-07-15T18:44:40+00:00","size":494,"digest":"a2ed712d76dcffc7a06918cd389511bca2cf7bb91c12b1d865bf44c7b2c46289","integrity":"sha256-ou1xLXbc/8egaRjNOJURvKLPe7kcErHYZb9Ex7LEYok="},"rails_admin/multiselect/icon_sprite-34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded.png":{"logical_path":"rails_admin/multiselect/icon_sprite.png","mtime":"2017-07-15T18:44:40+00:00","size":2660,"digest":"34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded","integrity":"sha256-NKMIBvy6Q6Lv/Jc5y3o3CoZRmafTi/y8fCR07z/3De0="},"rails_admin/multiselect/ui-icon-circle-triangle-n-light-e7daf3169259a9fd6b8177b8e89ff2b964cd3dababd580a46d7fb4eecc07763b.png":{"logical_path":"rails_admin/multiselect/ui-icon-circle-triangle-n-light.png","mtime":"2017-07-15T18:44:40+00:00","size":492,"digest":"e7daf3169259a9fd6b8177b8e89ff2b964cd3dababd580a46d7fb4eecc07763b","integrity":"sha256-59rzFpJZqf1rgXe46J/yuWTNPaur1YCkbX+07swHdjs="},"rails_admin/multiselect/ui-icon-circle-triangle-n-dark-bb53269e44173a496d2620bad201ca838a57b67c40b3439b5ce89345ef9e888b.png":{"logical_path":"rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png","mtime":"2017-07-15T18:44:40+00:00","size":334,"digest":"bb53269e44173a496d2620bad201ca838a57b67c40b3439b5ce89345ef9e888b","integrity":"sha256-u1MmnkQXOkltJiC60gHKg4pXtnxAs0ObXOiTRe+eiIs="},"rails_admin/multiselect/ui-icon-circle-triangle-s-light-e1698d37f37f7db85ce6736810a34b1a229306be8a3f3be156fbaa47dd6cd160.png":{"logical_path":"rails_admin/multiselect/ui-icon-circle-triangle-s-light.png","mtime":"2017-07-15T18:44:40+00:00","size":484,"digest":"e1698d37f37f7db85ce6736810a34b1a229306be8a3f3be156fbaa47dd6cd160","integrity":"sha256-4WmNN/N/fbhc5nNoEKNLGiKTBr6KPzvhVvuqR91s0WA="},"rails_admin/multiselect/ui-icon-circle-triangle-s-dark-2bf097798e2b1db766a16ff4f335d3fe94bd51f92dc2ddf47c8a370ba31189c0.png":{"logical_path":"rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png","mtime":"2017-07-15T18:44:40+00:00","size":338,"digest":"2bf097798e2b1db766a16ff4f335d3fe94bd51f92dc2ddf47c8a370ba31189c0","integrity":"sha256-K/CXeY4rHbdmoW/08zXT/pS9Ufktwt30fIo3C6MRicA="},"rails_admin/colorpicker/select2-8ddf680d1a86d603653e43f694bbb6dc1010aa81f5c0c9c87181e10e064e503b.png":{"logical_path":"rails_admin/colorpicker/select2.png","mtime":"2017-07-15T18:44:40+00:00","size":305,"digest":"8ddf680d1a86d603653e43f694bbb6dc1010aa81f5c0c9c87181e10e064e503b","integrity":"sha256-jd9oDRqG1gNlPkP2lLu23BAQqoH1wMnIcYHhDgZOUDs="},"rails_admin/colorpicker/custom_background-52967b595ae718ad95520b9cf2b22551fb8cb0d81a171db869b00d2b604b4976.png":{"logical_path":"rails_admin/colorpicker/custom_background.png","mtime":"2017-07-15T18:44:40+00:00","size":1557,"digest":"52967b595ae718ad95520b9cf2b22551fb8cb0d81a171db869b00d2b604b4976","integrity":"sha256-UpZ7WVrnGK2VUguc8rIlUfuMsNgaFx24abANK2BLSXY="},"rails_admin/colorpicker/colorpicker_overlay-ba21ab85c59167b61af508e34a22ee344c97bb11454d287a47691fa2fb182856.png":{"logical_path":"rails_admin/colorpicker/colorpicker_overlay.png","mtime":"2017-07-15T18:44:40+00:00","size":6971,"digest":"ba21ab85c59167b61af508e34a22ee344c97bb11454d287a47691fa2fb182856","integrity":"sha256-uiGrhcWRZ7Ya9QjjSiLuNEyXuxFFTSh6R2kfovsYKFY="},"rails_admin/colorpicker/colorpicker_select-980ae86d6aab751f6f67a1191d78c0fa54b533583456b905ec43b34d5806ee2d.gif":{"logical_path":"rails_admin/colorpicker/colorpicker_select.gif","mtime":"2017-07-15T18:44:40+00:00","size":72,"digest":"980ae86d6aab751f6f67a1191d78c0fa54b533583456b905ec43b34d5806ee2d","integrity":"sha256-mArobWqrdR9vZ6EZHXjA+lS1M1g0VrkF7EOzTVgG7i0="},"rails_admin/colorpicker/custom_indic-8ca62ee85015e67671f2312a2fead633740335f65e254d8f4c3ea29b99f62de7.gif":{"logical_path":"rails_admin/colorpicker/custom_indic.gif","mtime":"2017-07-15T18:44:40+00:00","size":85,"digest":"8ca62ee85015e67671f2312a2fead633740335f65e254d8f4c3ea29b99f62de7","integrity":"sha256-jKYu6FAV5nZx8jEqL+rWM3QDNfZeJU2PTD6im5n2Lec="},"rails_admin/colorpicker/custom_hex-4b1a7b08312edc3732cf30c7d8d5291abea41c64311c3d05d67a586cbe3dcf37.png":{"logical_path":"rails_admin/colorpicker/custom_hex.png","mtime":"2017-07-15T18:44:40+00:00","size":347,"digest":"4b1a7b08312edc3732cf30c7d8d5291abea41c64311c3d05d67a586cbe3dcf37","integrity":"sha256-Sxp7CDEu3DcyzzDH2NUpGr6kHGQxHD0F1npYbL49zzc="},"rails_admin/colorpicker/custom_rgb_r-54289ccad89df00514d84ba6d16d1a0abc0d61de95dcfc054bf2202e238a7cb6.png":{"logical_path":"rails_admin/colorpicker/custom_rgb_r.png","mtime":"2017-07-15T18:44:40+00:00","size":727,"digest":"54289ccad89df00514d84ba6d16d1a0abc0d61de95dcfc054bf2202e238a7cb6","integrity":"sha256-VCicytid8AUU2Eum0W0aCrwNYd6V3PwFS/IgLiOKfLY="},"rails_admin/colorpicker/custom_rgb_g-8ab4d41c46fc26080b75eecc6f8c25d8f6db5264cf56ecc4993f86d100ebd71f.png":{"logical_path":"rails_admin/colorpicker/custom_rgb_g.png","mtime":"2017-07-15T18:44:40+00:00","size":780,"digest":"8ab4d41c46fc26080b75eecc6f8c25d8f6db5264cf56ecc4993f86d100ebd71f","integrity":"sha256-irTUHEb8JggLde7Mb4wl2PbbUmTPVuzEmT+G0QDr1x8="},"rails_admin/colorpicker/custom_rgb_b-22f2da1810cd9da18a1f93418b8f45bd3cb676aa9790ad5e1aba37779fb3ac31.png":{"logical_path":"rails_admin/colorpicker/custom_rgb_b.png","mtime":"2017-07-15T18:44:40+00:00","size":722,"digest":"22f2da1810cd9da18a1f93418b8f45bd3cb676aa9790ad5e1aba37779fb3ac31","integrity":"sha256-IvLaGBDNnaGKH5NBi49FvTy2dqqXkK1eGro3d5+zrDE="},"rails_admin/colorpicker/custom_hsb_h-df01edb80a710cdd9d9057201eaa682a8c86cd80ad6c6929f1d4a9182ad6aed3.png":{"logical_path":"rails_admin/colorpicker/custom_hsb_h.png","mtime":"2017-07-15T18:44:40+00:00","size":711,"digest":"df01edb80a710cdd9d9057201eaa682a8c86cd80ad6c6929f1d4a9182ad6aed3","integrity":"sha256-3wHtuApxDN2dkFcgHqpoKoyGzYCtbGkp8dSpGCrWrtM="},"rails_admin/colorpicker/custom_hsb_s-9277f3fd9eb79baef2384f7b38968184fd40d631024149c7b41543b7796c0706.png":{"logical_path":"rails_admin/colorpicker/custom_hsb_s.png","mtime":"2017-07-15T18:44:40+00:00","size":845,"digest":"9277f3fd9eb79baef2384f7b38968184fd40d631024149c7b41543b7796c0706","integrity":"sha256-knfz/Z63m67yOE97OJaBhP1A1jECQUnHtBVDt3lsBwY="},"rails_admin/colorpicker/custom_hsb_b-7160b5fd5c5779102cb91f771b80ef2621dabe10bf06e8359deaefece831b58b.png":{"logical_path":"rails_admin/colorpicker/custom_hsb_b.png","mtime":"2017-07-15T18:44:40+00:00","size":795,"digest":"7160b5fd5c5779102cb91f771b80ef2621dabe10bf06e8359deaefece831b58b","integrity":"sha256-cWC1/VxXeRAsuR93G4DvJiHavhC/Bug1nerv7OgxtYs="},"rails_admin/colorpicker/custom_submit-3a57bad878f6d608b998e36acefe2325d786d4631abeecc5d400ca5c062f5ce5.png":{"logical_path":"rails_admin/colorpicker/custom_submit.png","mtime":"2017-07-15T18:44:40+00:00","size":791,"digest":"3a57bad878f6d608b998e36acefe2325d786d4631abeecc5d400ca5c062f5ce5","integrity":"sha256-Ole62Hj21gi5mONqzv4jJdeG1GMavuzF1ADKXAYvXOU="},"fontawesome-webfont-50bbe9192697e791e2ee4ef73917aeb1b03e727dff08a1fc8d74f00e4aa812e1.eot":{"logical_path":"fontawesome-webfont.eot","mtime":"2016-11-14T04:38:51+00:00","size":76518,"digest":"50bbe9192697e791e2ee4ef73917aeb1b03e727dff08a1fc8d74f00e4aa812e1","integrity":"sha256-ULvpGSaX55Hi7k73OReusbA+cn3/CKH8jXTwDkqoEuE="},"fontawesome-webfont-7dacf83f51179de8d7980a513e67ab3a08f2c6272bb5946df8fd77c0d1763b73.woff2":{"logical_path":"fontawesome-webfont.woff2","mtime":"2016-11-14T04:38:51+00:00","size":71896,"digest":"7dacf83f51179de8d7980a513e67ab3a08f2c6272bb5946df8fd77c0d1763b73","integrity":"sha256-faz4P1EXnejXmApRPmerOgjyxicrtZRt+P13wNF2O3M="},"fontawesome-webfont-adbc4f95eb6d7f2738959cf0ecbc374672fce47e856050a8e9791f457623ac2c.woff":{"logical_path":"fontawesome-webfont.woff","mtime":"2016-11-14T04:38:51+00:00","size":90412,"digest":"adbc4f95eb6d7f2738959cf0ecbc374672fce47e856050a8e9791f457623ac2c","integrity":"sha256-rbxPlettfyc4lZzw7Lw3RnL85H6FYFCo6XkfRXYjrCw="},"fontawesome-webfont-ae19e2e4c04f2b04bf030684c4c1db8faf5c8fe3ee03d1e0c409046608b38912.ttf":{"logical_path":"fontawesome-webfont.ttf","mtime":"2016-11-14T04:38:51+00:00","size":152796,"digest":"ae19e2e4c04f2b04bf030684c4c1db8faf5c8fe3ee03d1e0c409046608b38912","integrity":"sha256-rhni5MBPKwS/AwaExMHbj69cj+PuA9HgxAkEZgiziRI="},"fontawesome-webfont-8e3586389bb4cd01b3f85bb3b622739bde6627f28bba63a020c223ca9cf1b9ae.svg":{"logical_path":"fontawesome-webfont.svg","mtime":"2016-11-14T04:38:51+00:00","size":391622,"digest":"8e3586389bb4cd01b3f85bb3b622739bde6627f28bba63a020c223ca9cf1b9ae","integrity":"sha256-jjWGOJu0zQGz+FuztiJzm95mJ/KLumOgIMIjypzxua4="},"rails_admin/jquery.colorpicker-65a540a6a8e61569a39a37bd1456543ae5e5bbe48868247372bed40a1dff2bcf.js":{"logical_path":"rails_admin/jquery.colorpicker.js","mtime":"2016-11-14T04:38:52+00:00","size":18773,"digest":"65a540a6a8e61569a39a37bd1456543ae5e5bbe48868247372bed40a1dff2bcf","integrity":"sha256-ZaVApqjmFWmjmje9FFZUOuXlu+SIaCRzcr7UCh3/K88="},"rails_admin/jquery.colorpicker-ba46621a3e148479231cc7f255b1afb7052ce3a41493c50636edafe761e6b11c.css":{"logical_path":"rails_admin/jquery.colorpicker.css","mtime":"2016-11-14T04:38:52+00:00","size":7295,"digest":"ba46621a3e148479231cc7f255b1afb7052ce3a41493c50636edafe761e6b11c","integrity":"sha256-ukZiGj4UhHkjHMfyVbGvtwUs46QUk8UGNu2v52HmsRw="},"proximanova-2d77cd2df52cebe3d1eb8711a9ab9d0418fecdb343d3841cf9d4fee21e64e9b1.ttf":{"logical_path":"proximanova.ttf","mtime":"2017-07-03T01:35:40+00:00","size":51648,"digest":"2d77cd2df52cebe3d1eb8711a9ab9d0418fecdb343d3841cf9d4fee21e64e9b1","integrity":"sha256-LXfNLfUs6+PR64cRqaudBBj+zbND04Qc+dT+4h5k6bE="},"ewb-sfp-logo-d5035f1690968fbd6a585bd28d3103171ed063c8bc370d75a222d2e1be970dcf.png":{"logical_path":"ewb-sfp-logo.png","mtime":"2017-07-03T01:35:40+00:00","size":26458,"digest":"d5035f1690968fbd6a585bd28d3103171ed063c8bc370d75a222d2e1be970dcf","integrity":"sha256-1QNfFpCWj71qWFvSjTEDFx7QY8i8Nw11oiLS4b6XDc8="},"application-f2204fdd0647c4d627dc20817b4e6d83d2105c231955d3922f5c708ba69035bb.js":{"logical_path":"application.js","mtime":"2016-11-14T08:32:56+00:00","size":992213,"digest":"f2204fdd0647c4d627dc20817b4e6d83d2105c231955d3922f5c708ba69035bb","integrity":"sha256-8iBP3QZHxNYn3CCBe05tg9IQXCMZVdOSL1xwi6aQNbs="},"application-c72f927db3f060dc6d9e86ad3fee9dca351cbecd5dffc15ba6d037539c59c630.css":{"logical_path":"application.css","mtime":"2016-11-14T07:32:23+00:00","size":266990,"digest":"c72f927db3f060dc6d9e86ad3fee9dca351cbecd5dffc15ba6d037539c59c630","integrity":"sha256-xy+SfbPwYNxtnoatP+6dyjUcvs1d/8FbptA3U5xZxjA="},"application-e5dc5e60f13ee0ab7e586d54cacdcdfbc8f23ac8f7f1adfc3a983ce44fa917e5.js":{"logical_path":"application.js","mtime":"2016-11-14T10:05:09+00:00","size":972143,"digest":"e5dc5e60f13ee0ab7e586d54cacdcdfbc8f23ac8f7f1adfc3a983ce44fa917e5","integrity":"sha256-5dxeYPE+4Kt+WG1Uys3N+8jyOsj38a38Opg85E+pF+U="},"rails_admin/rails_admin-7433259f8b06edf85f74c06ff05334ae846740d790fa940aa06cd820680d275d.js":{"logical_path":"rails_admin/rails_admin.js","mtime":"2017-07-18T01:11:12+00:00","size":550971,"digest":"7433259f8b06edf85f74c06ff05334ae846740d790fa940aa06cd820680d275d","integrity":"sha256-dDMln4sG7fhfdMBv8FM0roRnQNeQ+pQKoGzYIGgNJ10="},"rails_admin/rails_admin-5e56168b8a6d559383c73157b0eeb860a5065d4a8f5a168ed531a4608990c234.css":{"logical_path":"rails_admin/rails_admin.css","mtime":"2017-07-18T01:11:12+00:00","size":184491,"digest":"5e56168b8a6d559383c73157b0eeb860a5065d4a8f5a168ed531a4608990c234","integrity":"sha256-XlYWi4ptVZODxzFXsO64YKUGXUqPWhaO1TGkYImQwjQ="},"fontawesome-webfont-7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979.eot":{"logical_path":"fontawesome-webfont.eot","mtime":"2017-07-15T18:44:38+00:00","size":165742,"digest":"7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979","integrity":"sha256-e/yrbbmdXPvxcFygU23ceFhUMsxfpBu9etDwCQM7KXk="},"fontawesome-webfont-2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe.woff2":{"logical_path":"fontawesome-webfont.woff2","mtime":"2017-07-15T18:44:38+00:00","size":77160,"digest":"2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe","integrity":"sha256-Kt78vAQefRj88tQXh53FoJmXqmTWdbejxLbOM9oT8/4="},"fontawesome-webfont-ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07.woff":{"logical_path":"fontawesome-webfont.woff","mtime":"2017-07-15T18:44:38+00:00","size":98024,"digest":"ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07","integrity":"sha256-ugxZ3rVFD1y0Gz+TYJ7i0NmVQVh33foiPoqKdTNHTwc="},"fontawesome-webfont-aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8.ttf":{"logical_path":"fontawesome-webfont.ttf","mtime":"2017-07-15T18:44:38+00:00","size":165548,"digest":"aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8","integrity":"sha256-qljzPyOaD7AvXHpsRcBD16msmgkzNYBmlOzW1O3A1qg="},"fontawesome-webfont-ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4.svg":{"logical_path":"fontawesome-webfont.svg","mtime":"2017-07-15T18:44:38+00:00","size":444379,"digest":"ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4","integrity":"sha256-rWFXkmwWIrpOHQPUePFUE2hSS/xG9R5C/g2UX37zI+Q="},"rails_admin/jquery.colorpicker-aeb6c9e7214d3f2107b27be9b879a17b72b7f42f3f410bae9eb8e0d5f8fcf9d9.js":{"logical_path":"rails_admin/jquery.colorpicker.js","mtime":"2017-07-15T18:44:40+00:00","size":10411,"digest":"aeb6c9e7214d3f2107b27be9b879a17b72b7f42f3f410bae9eb8e0d5f8fcf9d9","integrity":"sha256-rrbJ5yFNPyEHsnvpuHmhe3K39C8/QQuunrjg1fj8+dk="},"rails_admin/jquery.colorpicker-17a04cd55ca585e49dd291bbe9ff1c5dc7ebefc092eac763d85512eba90f4821.css":{"logical_path":"rails_admin/jquery.colorpicker.css","mtime":"2017-07-15T18:44:40+00:00","size":4202,"digest":"17a04cd55ca585e49dd291bbe9ff1c5dc7ebefc092eac763d85512eba90f4821","integrity":"sha256-F6BM1VylheSd0pG76f8cXcfr78CS6sdj2FUS66kPSCE="},"main1-ce7842c6f5117e4e8c8b84803e560466590d70b52b8a56ed1a20536387000649.png":{"logical_path":"main1.png","mtime":"2017-07-18T01:11:12+00:00","size":115937,"digest":"ce7842c6f5117e4e8c8b84803e560466590d70b52b8a56ed1a20536387000649","integrity":"sha256-znhCxvURfk6Mi4SAPlYEZlkNcLUrilbtGiBTY4cABkk="},"main2-81eba1fb59738754a61af7ddbb8a0fa807b81325227525049e74be37c27465b1.png":{"logical_path":"main2.png","mtime":"2017-07-18T01:11:12+00:00","size":120939,"digest":"81eba1fb59738754a61af7ddbb8a0fa807b81325227525049e74be37c27465b1","integrity":"sha256-geuh+1lzh1SmGvfdu4oPqAe4EyUidSUEnnS+N8J0ZbE="},"main3-015d07d3d7e7eba8aac81d6457782ea2e71e5ed5a4b807356490777996de2498.png":{"logical_path":"main3.png","mtime":"2017-07-18T01:11:12+00:00","size":84758,"digest":"015d07d3d7e7eba8aac81d6457782ea2e71e5ed5a4b807356490777996de2498","integrity":"sha256-AV0H09fn66iqyB1kV3guouceXtWkuAc1ZJB3eZbeJJg="},"application-231c62eb209435a6798fc93f4efca604996f71feb9a044757eea6d9dd9a02b08.js":{"logical_path":"application.js","mtime":"2017-07-18T01:11:12+00:00","size":545543,"digest":"231c62eb209435a6798fc93f4efca604996f71feb9a044757eea6d9dd9a02b08","integrity":"sha256-Ixxi6yCUNaZ5j8k/TvymBJlvcf65oER1fuptndmgKwg="},"application-83aa794b7b146afdb9a893750bf5287e65e0e67f5eb4f971f072c3a565c2c3e3.css":{"logical_path":"application.css","mtime":"2017-07-18T01:11:12+00:00","size":2913,"digest":"83aa794b7b146afdb9a893750bf5287e65e0e67f5eb4f971f072c3a565c2c3e3","integrity":"sha256-g6p5S3sUav25qJN1C/UofmXg5n9etPlx8HLDpWXCw+M="},"greyzz-52f4bd54c3e5eb29a6cd5aa2f3336117e268fa10994cdc47a1a7f12cbc28a8c9.png":{"logical_path":"greyzz.png","mtime":"2017-07-03T01:35:40+00:00","size":6084,"digest":"52f4bd54c3e5eb29a6cd5aa2f3336117e268fa10994cdc47a1a7f12cbc28a8c9","integrity":"sha256-UvS9VMPl6ymmzVqi8zNhF+Jo+hCZTNxHoafxLLwoqMk="},"rails_admin/bootstrap/glyphicons-halflings-white-c5007cc31a9a80308ad8fc678cf7e92d7d2d205d8000a59866c12b37f10b0013.png":{"logical_path":"rails_admin/bootstrap/glyphicons-halflings-white.png","mtime":"2017-07-15T18:44:40+00:00","size":8728,"digest":"c5007cc31a9a80308ad8fc678cf7e92d7d2d205d8000a59866c12b37f10b0013","integrity":"sha256-xQB8wxqagDCK2PxnjPfpLX0tIF2AAKWYZsErN/ELABM="},"rails_admin/bootstrap/glyphicons-halflings-d8f698f711889b597570752ec3dd9d5df2633ffcccbed4f549a6163d81ecd818.png":{"logical_path":"rails_admin/bootstrap/glyphicons-halflings.png","mtime":"2017-07-15T18:44:40+00:00","size":12600,"digest":"d8f698f711889b597570752ec3dd9d5df2633ffcccbed4f549a6163d81ecd818","integrity":"sha256-2PaY9xGIm1l1cHUuw92dXfJjP/zMvtT1SaYWPYHs2Bg="},"rails_admin/bullet_black-b7235a2da3e96f46a9c751ebca0645f36814b91a6d6f348b02be338c74ad6ff5.png":{"logical_path":"rails_admin/bullet_black.png","mtime":"2017-07-15T18:44:40+00:00","size":150,"digest":"b7235a2da3e96f46a9c751ebca0645f36814b91a6d6f348b02be338c74ad6ff5","integrity":"sha256-tyNaLaPpb0apx1HrygZF82gUuRptbzSLAr4zjHStb/U="},"rails_admin/bullet_white-1e2cfd722d716b7ded9dd1b0f7e9705b3b69cd59e7ff4133509a9de3e8ae8789.png":{"logical_path":"rails_admin/bullet_white.png","mtime":"2017-07-15T18:44:40+00:00","size":140,"digest":"1e2cfd722d716b7ded9dd1b0f7e9705b3b69cd59e7ff4133509a9de3e8ae8789","integrity":"sha256-Hiz9ci1xa33tndGw9+lwWztpzVnn/0EzUJqd4+iuh4k="},"rails_admin/calendar-36e14adbcda9a98ebe5bd007d4f4ee2da589a7d5dbcbf71fd7b6fa25dff58b1c.png":{"logical_path":"rails_admin/calendar.png","mtime":"2017-07-15T18:44:40+00:00","size":596,"digest":"36e14adbcda9a98ebe5bd007d4f4ee2da589a7d5dbcbf71fd7b6fa25dff58b1c","integrity":"sha256-NuFK282pqY6+W9AH1PTuLaWJp9Xby/cf17b6Jd/1ixw="},"rails_admin/clock-8f855a8769c00034992805bb16fe7d8c58f498729c0e425d330a992fd0fd87cd.png":{"logical_path":"rails_admin/clock.png","mtime":"2017-07-15T18:44:40+00:00","size":800,"digest":"8f855a8769c00034992805bb16fe7d8c58f498729c0e425d330a992fd0fd87cd","integrity":"sha256-j4Vah2nAADSZKAW7Fv59jFj0mHKcDkJdMwqZL9D9h80="},"rails_admin/colorpicker/colorpicker_background-5dc685918f94b564efe5b37fdedb99413fb2f56d038b29fb3d9b59989cb7fa30.png":{"logical_path":"rails_admin/colorpicker/colorpicker_background.png","mtime":"2017-07-15T18:44:40+00:00","size":1550,"digest":"5dc685918f94b564efe5b37fdedb99413fb2f56d038b29fb3d9b59989cb7fa30","integrity":"sha256-XcaFkY+UtWTv5bN/3tuZQT+y9W0Diyn7PZtZmJy3+jA="},"rails_admin/colorpicker/colorpicker_hex-8aa461c8348958c5338be86542d84d7744ff71a9c268f47d8106c3e4a56f821b.png":{"logical_path":"rails_admin/colorpicker/colorpicker_hex.png","mtime":"2017-07-15T18:44:40+00:00","size":361,"digest":"8aa461c8348958c5338be86542d84d7744ff71a9c268f47d8106c3e4a56f821b","integrity":"sha256-iqRhyDSJWMUzi+hlQthNd0T/canCaPR9gQbD5KVvghs="},"rails_admin/colorpicker/colorpicker_hsb_b-b41d1e159cf33b8c41dbde656c5f2c25d43a6c43487275e581014d4eb9997724.png":{"logical_path":"rails_admin/colorpicker/colorpicker_hsb_b.png","mtime":"2017-07-15T18:44:40+00:00","size":748,"digest":"b41d1e159cf33b8c41dbde656c5f2c25d43a6c43487275e581014d4eb9997724","integrity":"sha256-tB0eFZzzO4xB295lbF8sJdQ6bENIcnXlgQFNTrmZdyQ="},"rails_admin/colorpicker/colorpicker_hsb_h-92af49202aba35419db6d23a0cc5d86dc303eb3b93d25294d92fc7ad65530635.png":{"logical_path":"rails_admin/colorpicker/colorpicker_hsb_h.png","mtime":"2017-07-15T18:44:40+00:00","size":737,"digest":"92af49202aba35419db6d23a0cc5d86dc303eb3b93d25294d92fc7ad65530635","integrity":"sha256-kq9JICq6NUGdttI6DMXYbcMD6zuT0lKU2S/HrWVTBjU="},"rails_admin/colorpicker/colorpicker_hsb_s-57a99dad7075e5d4e2d056aa7f8af74ebc09d88dac6b9575b43fb9807afc492a.png":{"logical_path":"rails_admin/colorpicker/colorpicker_hsb_s.png","mtime":"2017-07-15T18:44:40+00:00","size":786,"digest":"57a99dad7075e5d4e2d056aa7f8af74ebc09d88dac6b9575b43fb9807afc492a","integrity":"sha256-V6mdrXB15dTi0Faqf4r3TrwJ2I2sa5V1tD+5gHr8SSo="},"rails_admin/colorpicker/colorpicker_indic-a6d6b9fd877155781ffd2f08c0fc32135093000653181cccce5070ace89cf453.gif":{"logical_path":"rails_admin/colorpicker/colorpicker_indic.gif","mtime":"2017-07-15T18:44:40+00:00","size":85,"digest":"a6d6b9fd877155781ffd2f08c0fc32135093000653181cccce5070ace89cf453","integrity":"sha256-pta5/YdxVXgf/S8IwPwyE1CTAAZTGBzMzlBwrOic9FM="},"rails_admin/colorpicker/colorpicker_rgb_b-a0e453946728dd84f0d7034765a9ece3cbba0d34b1b9f64ddba588da6f51640e.png":{"logical_path":"rails_admin/colorpicker/colorpicker_rgb_b.png","mtime":"2017-07-15T18:44:40+00:00","size":749,"digest":"a0e453946728dd84f0d7034765a9ece3cbba0d34b1b9f64ddba588da6f51640e","integrity":"sha256-oORTlGco3YTw1wNHZans48u6DTSxufZN26WI2m9RZA4="},"rails_admin/colorpicker/colorpicker_rgb_g-eb69a1025a7fcee713e7c2ace7cdf15f49e2f69626877a67a04d82c9e72c8691.png":{"logical_path":"rails_admin/colorpicker/colorpicker_rgb_g.png","mtime":"2017-07-15T18:44:40+00:00","size":805,"digest":"eb69a1025a7fcee713e7c2ace7cdf15f49e2f69626877a67a04d82c9e72c8691","integrity":"sha256-62mhAlp/zucT58Ks583xX0ni9pYmh3pnoE2CyecshpE="},"rails_admin/colorpicker/colorpicker_rgb_r-f30bcb7d61767ab99f7ba8218bfafb536558104ac88ff9817429e8d6dace3d1d.png":{"logical_path":"rails_admin/colorpicker/colorpicker_rgb_r.png","mtime":"2017-07-15T18:44:40+00:00","size":761,"digest":"f30bcb7d61767ab99f7ba8218bfafb536558104ac88ff9817429e8d6dace3d1d","integrity":"sha256-8wvLfWF2ermfe6ghi/r7U2VYEErIj/mBdCno1trOPR0="},"rails_admin/colorpicker/colorpicker_submit-1fc662963883872cd6e0061d83aea1ba428894d2baeb730b16ce555f458cd4cf.png":{"logical_path":"rails_admin/colorpicker/colorpicker_submit.png","mtime":"2017-07-15T18:44:40+00:00","size":750,"digest":"1fc662963883872cd6e0061d83aea1ba428894d2baeb730b16ce555f458cd4cf","integrity":"sha256-H8ZiljiDhyzW4AYdg66hukKIlNK663MLFs5VX0WM1M8="},"rails_admin/colorpicker/select-d8094cb7e821a5303d07de49e112fc3924a786e5ea337e2124a9cfcc8b25cd72.png":{"logical_path":"rails_admin/colorpicker/select.png","mtime":"2017-07-15T18:44:40+00:00","size":253,"digest":"d8094cb7e821a5303d07de49e112fc3924a786e5ea337e2124a9cfcc8b25cd72","integrity":"sha256-2AlMt+ghpTA9B95J4RL8OSSnhuXqM34hJKnPzIslzXI="},"rails_admin/colorpicker/slider-4390ddaed657d5ce9f87423e32b5f93b07a84f47bdb66716e4f38654394e7474.png":{"logical_path":"rails_admin/colorpicker/slider.png","mtime":"2017-07-15T18:44:40+00:00","size":235,"digest":"4390ddaed657d5ce9f87423e32b5f93b07a84f47bdb66716e4f38654394e7474","integrity":"sha256-Q5DdrtZX1c6fh0I+MrX5OweoT0e9tmcW5POGVDlOdHQ="},"rails_admin/logo-15a34fba049a986902dc27d5e55fefb86e37d4084b765b917486d5621bad1156.png":{"logical_path":"rails_admin/logo.png","mtime":"2017-07-15T18:44:40+00:00","size":942,"digest":"15a34fba049a986902dc27d5e55fefb86e37d4084b765b917486d5621bad1156","integrity":"sha256-FaNPugSamGkC3CfV5V/vuG431AhLdluRdIbVYhutEVY="},"rails_admin/magnifier-88692f99f21f1f23c25becf583fcd0f7ee942d7828677ba6b5813c98e8a71b5d.png":{"logical_path":"rails_admin/magnifier.png","mtime":"2017-07-15T18:44:40+00:00","size":319,"digest":"88692f99f21f1f23c25becf583fcd0f7ee942d7828677ba6b5813c98e8a71b5d","integrity":"sha256-iGkvmfIfHyPCW+z1g/zQ9+6ULXgoZ3umtYE8mOinG10="},"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-9a8492a580bf85d3e98ae8861fbd45567e5a1f83eeafcf9574da0399d5f602ab.png":{"logical_path":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png","mtime":"2017-07-15T18:44:37+00:00","size":180,"digest":"9a8492a580bf85d3e98ae8861fbd45567e5a1f83eeafcf9574da0399d5f602ab","integrity":"sha256-moSSpYC/hdPpiuiGH71FVn5aH4Pur8+VdNoDmdX2Aqs="},"jquery-ui/ui-bg_flat_75_ffffff_40x100-39ab7ccd9f4e82579da78a9241265df288d8eb65dbbd7cf48aed2d0129887df5.png":{"logical_path":"jquery-ui/ui-bg_flat_75_ffffff_40x100.png","mtime":"2017-07-15T18:44:37+00:00","size":178,"digest":"39ab7ccd9f4e82579da78a9241265df288d8eb65dbbd7cf48aed2d0129887df5","integrity":"sha256-Oat8zZ9Ogledp4qSQSZd8ojY62XbvXz0iu0tASmIffU="},"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-691597e8a40a891ea94d3589976ecfc33e6145c49422443b00ac2b5a0022964c.png":{"logical_path":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png","mtime":"2017-07-15T18:44:37+00:00","size":120,"digest":"691597e8a40a891ea94d3589976ecfc33e6145c49422443b00ac2b5a0022964c","integrity":"sha256-aRWX6KQKiR6pTTWJl27Pwz5hRcSUIkQ7AKwrWgAilkw="},"jquery-ui/ui-bg_glass_65_ffffff_1x400-f0e6cd91b837d5c5644d026e5ffeccd907953317cd5c0f689901733afda260b2.png":{"logical_path":"jquery-ui/ui-bg_glass_65_ffffff_1x400.png","mtime":"2017-07-15T18:44:37+00:00","size":105,"digest":"f0e6cd91b837d5c5644d026e5ffeccd907953317cd5c0f689901733afda260b2","integrity":"sha256-8ObNkbg31cVkTQJuX/7M2QeVMxfNXA9omQFzOv2iYLI="},"jquery-ui/ui-bg_glass_75_dadada_1x400-c108f5cbf2dd9ec07a26530695ddd95e1664597ce6c056ae44c162cc2e28cec4.png":{"logical_path":"jquery-ui/ui-bg_glass_75_dadada_1x400.png","mtime":"2017-07-15T18:44:37+00:00","size":111,"digest":"c108f5cbf2dd9ec07a26530695ddd95e1664597ce6c056ae44c162cc2e28cec4","integrity":"sha256-wQj1y/LdnsB6JlMGld3ZXhZkWXzmwFauRMFizC4ozsQ="},"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-ddf5dd4e0ef2b185e8bb0af7b6e90ebe74a84384cb4700658e76e754c8bfe550.png":{"logical_path":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png","mtime":"2017-07-15T18:44:37+00:00","size":110,"digest":"ddf5dd4e0ef2b185e8bb0af7b6e90ebe74a84384cb4700658e76e754c8bfe550","integrity":"sha256-3fXdTg7ysYXouwr3tukOvnSoQ4TLRwBljnbnVMi/5VA="},"jquery-ui/ui-bg_glass_95_fef1ec_1x400-f6f1c1bedf1a0f37cfef81d12f5f012869d1ee7c984775a569827a1784d34f5c.png":{"logical_path":"jquery-ui/ui-bg_glass_95_fef1ec_1x400.png","mtime":"2017-07-15T18:44:37+00:00","size":119,"digest":"f6f1c1bedf1a0f37cfef81d12f5f012869d1ee7c984775a569827a1784d34f5c","integrity":"sha256-9vHBvt8aDzfP74HRL18BKGnR7nyYR3WlaYJ6F4TTT1w="},"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-54270656df079c4da5182629a080fc633b6f84b87985eb016d25a560e2c38d4a.png":{"logical_path":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png","mtime":"2017-07-15T18:44:37+00:00","size":101,"digest":"54270656df079c4da5182629a080fc633b6f84b87985eb016d25a560e2c38d4a","integrity":"sha256-VCcGVt8HnE2lGCYpoID8YztvhLh5hesBbSWlYOLDjUo="},"jquery-ui/ui-icons_222222_256x240-57adb0d65f4e91dacfee975d9574422bee7486c8a182d60133728c672f2cdbbc.png":{"logical_path":"jquery-ui/ui-icons_222222_256x240.png","mtime":"2017-07-15T18:44:37+00:00","size":4369,"digest":"57adb0d65f4e91dacfee975d9574422bee7486c8a182d60133728c672f2cdbbc","integrity":"sha256-V62w1l9OkdrP7pddlXRCK+50hsihgtYBM3KMZy8s27w="},"jquery-ui/ui-icons_2e83ff_256x240-20f8c6667afc48aa433ee9eb6d8a0584bdbd6b4a4a9091ff1e6b3adb31e63bd9.png":{"logical_path":"jquery-ui/ui-icons_2e83ff_256x240.png","mtime":"2017-07-15T18:44:37+00:00","size":4369,"digest":"20f8c6667afc48aa433ee9eb6d8a0584bdbd6b4a4a9091ff1e6b3adb31e63bd9","integrity":"sha256-IPjGZnr8SKpDPunrbYoFhL29a0pKkJH/Hms62zHmO9k="},"jquery-ui/ui-icons_454545_256x240-07460e843c3e59aaadbb34231e699e856a2980753c7a47b66447da5d9f93fb7f.png":{"logical_path":"jquery-ui/ui-icons_454545_256x240.png","mtime":"2017-07-15T18:44:37+00:00","size":4369,"digest":"07460e843c3e59aaadbb34231e699e856a2980753c7a47b66447da5d9f93fb7f","integrity":"sha256-B0YOhDw+WaqtuzQjHmmehWopgHU8eke2ZEfaXZ+T+38="},"jquery-ui/ui-icons_888888_256x240-ea2e29625de3463465e93b002b065f5833e05b97f7a052b1c141e754d62e1a8b.png":{"logical_path":"jquery-ui/ui-icons_888888_256x240.png","mtime":"2017-07-15T18:44:37+00:00","size":4369,"digest":"ea2e29625de3463465e93b002b065f5833e05b97f7a052b1c141e754d62e1a8b","integrity":"sha256-6i4pYl3jRjRl6TsAKwZfWDPgW5f3oFKxwUHnVNYuGos="},"jquery-ui/ui-icons_cd0a0a_256x240-1e32c6dbf5d3fd342f27a78aa881550d6412aa207f48468724a6a15402b6041b.png":{"logical_path":"jquery-ui/ui-icons_cd0a0a_256x240.png","mtime":"2017-07-15T18:44:37+00:00","size":4369,"digest":"1e32c6dbf5d3fd342f27a78aa881550d6412aa207f48468724a6a15402b6041b","integrity":"sha256-HjLG2/XT/TQvJ6eKqIFVDWQSqiB/SEaHJKahVAK2BBs="}},"assets":{"rails_admin/rails_admin.js":"rails_admin/rails_admin-7433259f8b06edf85f74c06ff05334ae846740d790fa940aa06cd820680d275d.js","rails_admin/rails_admin.css":"rails_admin/rails_admin-5e56168b8a6d559383c73157b0eeb860a5065d4a8f5a168ed531a4608990c234.css","rails_admin/aristo/images/bg_fallback.png":"rails_admin/aristo/images/bg_fallback-bad53cee26694a42bdba717337e2de9f997ebf3ded300b8c3ff48ac5192c1903.png","rails_admin/aristo/images/ui-icons_222222_256x240.png":"rails_admin/aristo/images/ui-icons_222222_256x240-310ae73efc6774716f0a80ce2141565fddec51702330a8066fd5e220437ae321.png","rails_admin/aristo/images/ui-icons_454545_256x240.png":"rails_admin/aristo/images/ui-icons_454545_256x240-d59c6da436d1a19aa35bcbf2d400ad160f2b2568fbbfa2f9ebfc192d14025474.png","rails_admin/aristo/images/icon_sprite.png":"rails_admin/aristo/images/icon_sprite-34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded.png","rails_admin/aristo/images/slider_handles.png":"rails_admin/aristo/images/slider_handles-4b523f3d1bd18af5fec23ec7d58ed85e4c7e8f4685fe85a8407e2d9017bf6484.png","rails_admin/aristo/images/progress_bar.gif":"rails_admin/aristo/images/progress_bar-a2ed712d76dcffc7a06918cd389511bca2cf7bb91c12b1d865bf44c7b2c46289.gif","rails_admin/multiselect/icon_sprite.png":"rails_admin/multiselect/icon_sprite-34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded.png","rails_admin/multiselect/ui-icon-circle-triangle-n-light.png":"rails_admin/multiselect/ui-icon-circle-triangle-n-light-e7daf3169259a9fd6b8177b8e89ff2b964cd3dababd580a46d7fb4eecc07763b.png","rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png":"rails_admin/multiselect/ui-icon-circle-triangle-n-dark-bb53269e44173a496d2620bad201ca838a57b67c40b3439b5ce89345ef9e888b.png","rails_admin/multiselect/ui-icon-circle-triangle-s-light.png":"rails_admin/multiselect/ui-icon-circle-triangle-s-light-e1698d37f37f7db85ce6736810a34b1a229306be8a3f3be156fbaa47dd6cd160.png","rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png":"rails_admin/multiselect/ui-icon-circle-triangle-s-dark-2bf097798e2b1db766a16ff4f335d3fe94bd51f92dc2ddf47c8a370ba31189c0.png","rails_admin/colorpicker/select2.png":"rails_admin/colorpicker/select2-8ddf680d1a86d603653e43f694bbb6dc1010aa81f5c0c9c87181e10e064e503b.png","rails_admin/colorpicker/custom_background.png":"rails_admin/colorpicker/custom_background-52967b595ae718ad95520b9cf2b22551fb8cb0d81a171db869b00d2b604b4976.png","rails_admin/colorpicker/colorpicker_overlay.png":"rails_admin/colorpicker/colorpicker_overlay-ba21ab85c59167b61af508e34a22ee344c97bb11454d287a47691fa2fb182856.png","rails_admin/colorpicker/colorpicker_select.gif":"rails_admin/colorpicker/colorpicker_select-980ae86d6aab751f6f67a1191d78c0fa54b533583456b905ec43b34d5806ee2d.gif","rails_admin/colorpicker/custom_indic.gif":"rails_admin/colorpicker/custom_indic-8ca62ee85015e67671f2312a2fead633740335f65e254d8f4c3ea29b99f62de7.gif","rails_admin/colorpicker/custom_hex.png":"rails_admin/colorpicker/custom_hex-4b1a7b08312edc3732cf30c7d8d5291abea41c64311c3d05d67a586cbe3dcf37.png","rails_admin/colorpicker/custom_rgb_r.png":"rails_admin/colorpicker/custom_rgb_r-54289ccad89df00514d84ba6d16d1a0abc0d61de95dcfc054bf2202e238a7cb6.png","rails_admin/colorpicker/custom_rgb_g.png":"rails_admin/colorpicker/custom_rgb_g-8ab4d41c46fc26080b75eecc6f8c25d8f6db5264cf56ecc4993f86d100ebd71f.png","rails_admin/colorpicker/custom_rgb_b.png":"rails_admin/colorpicker/custom_rgb_b-22f2da1810cd9da18a1f93418b8f45bd3cb676aa9790ad5e1aba37779fb3ac31.png","rails_admin/colorpicker/custom_hsb_h.png":"rails_admin/colorpicker/custom_hsb_h-df01edb80a710cdd9d9057201eaa682a8c86cd80ad6c6929f1d4a9182ad6aed3.png","rails_admin/colorpicker/custom_hsb_s.png":"rails_admin/colorpicker/custom_hsb_s-9277f3fd9eb79baef2384f7b38968184fd40d631024149c7b41543b7796c0706.png","rails_admin/colorpicker/custom_hsb_b.png":"rails_admin/colorpicker/custom_hsb_b-7160b5fd5c5779102cb91f771b80ef2621dabe10bf06e8359deaefece831b58b.png","rails_admin/colorpicker/custom_submit.png":"rails_admin/colorpicker/custom_submit-3a57bad878f6d608b998e36acefe2325d786d4631abeecc5d400ca5c062f5ce5.png","fontawesome-webfont.eot":"fontawesome-webfont-7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979.eot","fontawesome-webfont.woff2":"fontawesome-webfont-2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe.woff2","fontawesome-webfont.woff":"fontawesome-webfont-ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07.woff","fontawesome-webfont.ttf":"fontawesome-webfont-aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8.ttf","fontawesome-webfont.svg":"fontawesome-webfont-ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4.svg","rails_admin/jquery.colorpicker.js":"rails_admin/jquery.colorpicker-aeb6c9e7214d3f2107b27be9b879a17b72b7f42f3f410bae9eb8e0d5f8fcf9d9.js","rails_admin/jquery.colorpicker.css":"rails_admin/jquery.colorpicker-17a04cd55ca585e49dd291bbe9ff1c5dc7ebefc092eac763d85512eba90f4821.css","proximanova.ttf":"proximanova-2d77cd2df52cebe3d1eb8711a9ab9d0418fecdb343d3841cf9d4fee21e64e9b1.ttf","ewb-sfp-logo.png":"ewb-sfp-logo-d5035f1690968fbd6a585bd28d3103171ed063c8bc370d75a222d2e1be970dcf.png","application.js":"application-231c62eb209435a6798fc93f4efca604996f71feb9a044757eea6d9dd9a02b08.js","application.css":"application-83aa794b7b146afdb9a893750bf5287e65e0e67f5eb4f971f072c3a565c2c3e3.css","main1.png":"main1-ce7842c6f5117e4e8c8b84803e560466590d70b52b8a56ed1a20536387000649.png","main2.png":"main2-81eba1fb59738754a61af7ddbb8a0fa807b81325227525049e74be37c27465b1.png","main3.png":"main3-015d07d3d7e7eba8aac81d6457782ea2e71e5ed5a4b807356490777996de2498.png","greyzz.png":"greyzz-52f4bd54c3e5eb29a6cd5aa2f3336117e268fa10994cdc47a1a7f12cbc28a8c9.png","rails_admin/bootstrap/glyphicons-halflings-white.png":"rails_admin/bootstrap/glyphicons-halflings-white-c5007cc31a9a80308ad8fc678cf7e92d7d2d205d8000a59866c12b37f10b0013.png","rails_admin/bootstrap/glyphicons-halflings.png":"rails_admin/bootstrap/glyphicons-halflings-d8f698f711889b597570752ec3dd9d5df2633ffcccbed4f549a6163d81ecd818.png","rails_admin/bullet_black.png":"rails_admin/bullet_black-b7235a2da3e96f46a9c751ebca0645f36814b91a6d6f348b02be338c74ad6ff5.png","rails_admin/bullet_white.png":"rails_admin/bullet_white-1e2cfd722d716b7ded9dd1b0f7e9705b3b69cd59e7ff4133509a9de3e8ae8789.png","rails_admin/calendar.png":"rails_admin/calendar-36e14adbcda9a98ebe5bd007d4f4ee2da589a7d5dbcbf71fd7b6fa25dff58b1c.png","rails_admin/clock.png":"rails_admin/clock-8f855a8769c00034992805bb16fe7d8c58f498729c0e425d330a992fd0fd87cd.png","rails_admin/colorpicker/colorpicker_background.png":"rails_admin/colorpicker/colorpicker_background-5dc685918f94b564efe5b37fdedb99413fb2f56d038b29fb3d9b59989cb7fa30.png","rails_admin/colorpicker/colorpicker_hex.png":"rails_admin/colorpicker/colorpicker_hex-8aa461c8348958c5338be86542d84d7744ff71a9c268f47d8106c3e4a56f821b.png","rails_admin/colorpicker/colorpicker_hsb_b.png":"rails_admin/colorpicker/colorpicker_hsb_b-b41d1e159cf33b8c41dbde656c5f2c25d43a6c43487275e581014d4eb9997724.png","rails_admin/colorpicker/colorpicker_hsb_h.png":"rails_admin/colorpicker/colorpicker_hsb_h-92af49202aba35419db6d23a0cc5d86dc303eb3b93d25294d92fc7ad65530635.png","rails_admin/colorpicker/colorpicker_hsb_s.png":"rails_admin/colorpicker/colorpicker_hsb_s-57a99dad7075e5d4e2d056aa7f8af74ebc09d88dac6b9575b43fb9807afc492a.png","rails_admin/colorpicker/colorpicker_indic.gif":"rails_admin/colorpicker/colorpicker_indic-a6d6b9fd877155781ffd2f08c0fc32135093000653181cccce5070ace89cf453.gif","rails_admin/colorpicker/colorpicker_rgb_b.png":"rails_admin/colorpicker/colorpicker_rgb_b-a0e453946728dd84f0d7034765a9ece3cbba0d34b1b9f64ddba588da6f51640e.png","rails_admin/colorpicker/colorpicker_rgb_g.png":"rails_admin/colorpicker/colorpicker_rgb_g-eb69a1025a7fcee713e7c2ace7cdf15f49e2f69626877a67a04d82c9e72c8691.png","rails_admin/colorpicker/colorpicker_rgb_r.png":"rails_admin/colorpicker/colorpicker_rgb_r-f30bcb7d61767ab99f7ba8218bfafb536558104ac88ff9817429e8d6dace3d1d.png","rails_admin/colorpicker/colorpicker_submit.png":"rails_admin/colorpicker/colorpicker_submit-1fc662963883872cd6e0061d83aea1ba428894d2baeb730b16ce555f458cd4cf.png","rails_admin/colorpicker/select.png":"rails_admin/colorpicker/select-d8094cb7e821a5303d07de49e112fc3924a786e5ea337e2124a9cfcc8b25cd72.png","rails_admin/colorpicker/slider.png":"rails_admin/colorpicker/slider-4390ddaed657d5ce9f87423e32b5f93b07a84f47bdb66716e4f38654394e7474.png","rails_admin/logo.png":"rails_admin/logo-15a34fba049a986902dc27d5e55fefb86e37d4084b765b917486d5621bad1156.png","rails_admin/magnifier.png":"rails_admin/magnifier-88692f99f21f1f23c25becf583fcd0f7ee942d7828677ba6b5813c98e8a71b5d.png","jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-9a8492a580bf85d3e98ae8861fbd45567e5a1f83eeafcf9574da0399d5f602ab.png","jquery-ui/ui-bg_flat_75_ffffff_40x100.png":"jquery-ui/ui-bg_flat_75_ffffff_40x100-39ab7ccd9f4e82579da78a9241265df288d8eb65dbbd7cf48aed2d0129887df5.png","jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-691597e8a40a891ea94d3589976ecfc33e6145c49422443b00ac2b5a0022964c.png","jquery-ui/ui-bg_glass_65_ffffff_1x400.png":"jquery-ui/ui-bg_glass_65_ffffff_1x400-f0e6cd91b837d5c5644d026e5ffeccd907953317cd5c0f689901733afda260b2.png","jquery-ui/ui-bg_glass_75_dadada_1x400.png":"jquery-ui/ui-bg_glass_75_dadada_1x400-c108f5cbf2dd9ec07a26530695ddd95e1664597ce6c056ae44c162cc2e28cec4.png","jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-ddf5dd4e0ef2b185e8bb0af7b6e90ebe74a84384cb4700658e76e754c8bfe550.png","jquery-ui/ui-bg_glass_95_fef1ec_1x400.png":"jquery-ui/ui-bg_glass_95_fef1ec_1x400-f6f1c1bedf1a0f37cfef81d12f5f012869d1ee7c984775a569827a1784d34f5c.png","jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-54270656df079c4da5182629a080fc633b6f84b87985eb016d25a560e2c38d4a.png","jquery-ui/ui-icons_222222_256x240.png":"jquery-ui/ui-icons_222222_256x240-57adb0d65f4e91dacfee975d9574422bee7486c8a182d60133728c672f2cdbbc.png","jquery-ui/ui-icons_2e83ff_256x240.png":"jquery-ui/ui-icons_2e83ff_256x240-20f8c6667afc48aa433ee9eb6d8a0584bdbd6b4a4a9091ff1e6b3adb31e63bd9.png","jquery-ui/ui-icons_454545_256x240.png":"jquery-ui/ui-icons_454545_256x240-07460e843c3e59aaadbb34231e699e856a2980753c7a47b66447da5d9f93fb7f.png","jquery-ui/ui-icons_888888_256x240.png":"jquery-ui/ui-icons_888888_256x240-ea2e29625de3463465e93b002b065f5833e05b97f7a052b1c141e754d62e1a8b.png","jquery-ui/ui-icons_cd0a0a_256x240.png":"jquery-ui/ui-icons_cd0a0a_256x240-1e32c6dbf5d3fd342f27a78aa881550d6412aa207f48468724a6a15402b6041b.png"}} \ No newline at end of file diff --git a/public/assets/application-231c62eb209435a6798fc93f4efca604996f71feb9a044757eea6d9dd9a02b08.js b/public/assets/application-231c62eb209435a6798fc93f4efca604996f71feb9a044757eea6d9dd9a02b08.js new file mode 100644 index 0000000..985d83e --- /dev/null +++ b/public/assets/application-231c62eb209435a6798fc93f4efca604996f71feb9a044757eea6d9dd9a02b08.js @@ -0,0 +1,17 @@ +if(function(t,e){"object"==typeof module&&"object"==typeof module.exports?module.exports=t.document?e(t,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return e(t)}:e(t)}("undefined"!=typeof window?window:this,function(t,e){function i(t){var e=!!t&&"length"in t&&t.length,i=pt.type(t);return"function"!==i&&!pt.isWindow(t)&&("array"===i||0===e||"number"==typeof e&&e>0&&e-1 in t)}function n(t,e,i){if(pt.isFunction(e))return pt.grep(t,function(t,n){return!!e.call(t,n,t)!==i});if(e.nodeType)return pt.grep(t,function(t){return t===e!==i});if("string"==typeof e){if(kt.test(e))return pt.filter(e,t,i);e=pt.filter(e,t)}return pt.grep(t,function(t){return pt.inArray(t,e)>-1!==i})}function s(t,e){do{t=t[e]}while(t&&1!==t.nodeType);return t}function o(t){var e={};return pt.each(t.match(Et)||[],function(t,i){e[i]=!0}),e}function r(){nt.addEventListener?(nt.removeEventListener("DOMContentLoaded",a),t.removeEventListener("load",a)):(nt.detachEvent("onreadystatechange",a),t.detachEvent("onload",a))}function a(){(nt.addEventListener||"load"===t.event.type||"complete"===nt.readyState)&&(r(),pt.ready())}function l(t,e,i){if(i===undefined&&1===t.nodeType){var n="data-"+e.replace(Ot,"-$1").toLowerCase();if("string"==typeof(i=t.getAttribute(n))){try{i="true"===i||"false"!==i&&("null"===i?null:+i+""===i?+i:Nt.test(i)?pt.parseJSON(i):i)}catch(t){}pt.data(t,e,i)}else i=undefined}return i}function h(t){var e;for(e in t)if(("data"!==e||!pt.isEmptyObject(t[e]))&&"toJSON"!==e)return!1;return!0}function u(t,e,i,n){if(It(t)){var s,o,r=pt.expando,a=t.nodeType,l=a?pt.cache:t,h=a?t[r]:t[r]&&r;if(h&&l[h]&&(n||l[h].data)||i!==undefined||"string"!=typeof e)return h||(h=a?t[r]=it.pop()||pt.guid++:r),l[h]||(l[h]=a?{}:{toJSON:pt.noop}),"object"!=typeof e&&"function"!=typeof e||(n?l[h]=pt.extend(l[h],e):l[h].data=pt.extend(l[h].data,e)),o=l[h],n||(o.data||(o.data={}),o=o.data),i!==undefined&&(o[pt.camelCase(e)]=i),"string"==typeof e?null==(s=o[e])&&(s=o[pt.camelCase(e)]):s=o,s}}function c(t,e,i){if(It(t)){var n,s,o=t.nodeType,r=o?pt.cache:t,a=o?t[pt.expando]:pt.expando;if(r[a]){if(e&&(n=i?r[a]:r[a].data)){pt.isArray(e)?e=e.concat(pt.map(e,pt.camelCase)):e in n?e=[e]:(e=pt.camelCase(e),e=e in n?[e]:e.split(" ")),s=e.length;for(;s--;)delete n[e[s]];if(i?!h(n):!pt.isEmptyObject(n))return}(i||(delete r[a].data,h(r[a])))&&(o?pt.cleanData([t],!0):ct.deleteExpando||r!=r.window?delete r[a]:r[a]=undefined)}}}function d(t,e,i,n){var s,o=1,r=20,a=n?function(){return n.cur()}:function(){return pt.css(t,e,"")},l=a(),h=i&&i[3]||(pt.cssNumber[e]?"":"px"),u=(pt.cssNumber[e]||"px"!==h&&+l)&&Ht.exec(pt.css(t,e));if(u&&u[3]!==h){h=h||u[3],i=i||[],u=+l||1;do{o=o||".5",u/=o,pt.style(t,e,u+h)}while(o!==(o=a()/l)&&1!==o&&--r)}return i&&(u=+u||+l||0,s=i[1]?u+(i[1]+1)*i[2]:+i[2],n&&(n.unit=h,n.start=u,n.end=s)),s}function p(t){var e=Bt.split("|"),i=t.createDocumentFragment();if(i.createElement)for(;e.length;)i.createElement(e.pop());return i}function f(t,e){var i,n,s=0,o="undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e||"*"):"undefined"!=typeof t.querySelectorAll?t.querySelectorAll(e||"*"):undefined;if(!o)for(o=[],i=t.childNodes||t;null!=(n=i[s]);s++)!e||pt.nodeName(n,e)?o.push(n):pt.merge(o,f(n,e));return e===undefined||e&&pt.nodeName(t,e)?pt.merge([t],o):o}function m(t,e){for(var i,n=0;null!=(i=t[n]);n++)pt._data(i,"globalEval",!e||pt._data(e[n],"globalEval"))}function g(t){Wt.test(t.type)&&(t.defaultChecked=t.checked)}function v(t,e,i,n,s){for(var o,r,a,l,h,u,c,d=t.length,v=p(e),y=[],b=0;b"!==c[1]||Yt.test(r)?0:l:l.firstChild,o=r&&r.childNodes.length;o--;)pt.nodeName(u=r.childNodes[o],"tbody")&&!u.childNodes.length&&r.removeChild(u);for(pt.merge(y,l.childNodes),l.textContent="";l.firstChild;)l.removeChild(l.firstChild);l=v.lastChild}else y.push(e.createTextNode(r));for(l&&v.removeChild(l),ct.appendChecked||pt.grep(f(y,"input"),g),b=0;r=y[b++];)if(n&&pt.inArray(r,n)>-1)s&&s.push(r);else if(a=pt.contains(r.ownerDocument,r),l=f(v.appendChild(r),"script"),a&&m(l),i)for(o=0;r=l[o++];)zt.test(r.type||"")&&i.push(r);return l=null,v}function y(){return!0}function b(){return!1}function _(){try{return nt.activeElement}catch(t){}}function w(t,e,i,n,s,o){var r,a;if("object"==typeof e){"string"!=typeof i&&(n=n||i,i=undefined);for(a in e)w(t,a,i,n,e[a],o);return t}if(null==n&&null==s?(s=i,n=i=undefined):null==s&&("string"==typeof i?(s=n,n=undefined):(s=n,n=i,i=undefined)),!1===s)s=b;else if(!s)return t;return 1===o&&(r=s,s=function(t){return pt().off(t),r.apply(this,arguments)},s.guid=r.guid||(r.guid=pt.guid++)),t.each(function(){pt.event.add(this,e,s,n,i)})}function C(t,e){return pt.nodeName(t,"table")&&pt.nodeName(11!==e.nodeType?e:e.firstChild,"tr")?t.getElementsByTagName("tbody")[0]||t.appendChild(t.ownerDocument.createElement("tbody")):t}function k(t){return t.type=(null!==pt.find.attr(t,"type"))+"/"+t.type,t}function D(t){var e=ne.exec(t.type);return e?t.type=e[1]:t.removeAttribute("type"),t}function T(t,e){if(1===e.nodeType&&pt.hasData(t)){var i,n,s,o=pt._data(t),r=pt._data(e,o),a=o.events;if(a){delete r.handle,r.events={};for(i in a)for(n=0,s=a[i].length;n1&&"string"==typeof p&&!ct.checkClone&&ie.test(p))return t.each(function(s){var o=t.eq(s);m&&(e[0]=p.call(this,s,o.html())),x(o,e,i,n)});if(c&&(h=v(e,t[0].ownerDocument,!1,t,n),s=h.firstChild,1===h.childNodes.length&&(h=s),s||n)){for(a=pt.map(f(h,"script"),k),r=a.length;u")).appendTo(e.documentElement),e=(ae[0].contentWindow||ae[0].contentDocument).document,e.write(),e.close(),i=A(t,e),ae.detach()),le[t]=i),i}function I(t,e){return{get:function(){return t()?void delete this.get:(this.get=e).apply(this,arguments)}}}function N(t){if(t in ke)return t;for(var e=t.charAt(0).toUpperCase()+t.slice(1),i=Ce.length;i--;)if((t=Ce[i]+e)in ke)return t}function O(t,e){for(var i,n,s,o=[],r=0,a=t.length;r=0&&i=0},isEmptyObject:function(t){var e;for(e in t)return!1;return!0},isPlainObject:function(t){var e;if(!t||"object"!==pt.type(t)||t.nodeType||pt.isWindow(t))return!1;try{if(t.constructor&&!ut.call(t,"constructor")&&!ut.call(t.constructor.prototype,"isPrototypeOf"))return!1}catch(t){return!1}if(!ct.ownFirst)for(e in t)return ut.call(t,e);for(e in t);return e===undefined||ut.call(t,e)},type:function(t){return null==t?t+"":"object"==typeof t||"function"==typeof t?lt[ht.call(t)]||"object":typeof t},globalEval:function(e){e&&pt.trim(e)&&(t.execScript||function(e){t.eval.call(t,e)})(e)},camelCase:function(t){return t.replace(mt,"ms-").replace(gt,vt)},nodeName:function(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()},each:function(t,e){var n,s=0;if(i(t))for(n=t.length;sC.cacheLength&&delete t[e.shift()],t[i+" "]=n}var e=[];return t}function n(t){return t[W]=!0,t}function s(t){var e=N.createElement("div");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function o(t,e){for(var i=t.split("|"),n=i.length;n--;)C.attrHandle[i[n]]=e}function r(t,e){var i=e&&t,n=i&&1===t.nodeType&&1===e.nodeType&&(~e.sourceIndex||J)-(~t.sourceIndex||J);if(n)return n;if(i)for(;i=i.nextSibling;)if(i===e)return-1;return t?1:-1}function a(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function l(t){return function(e){var i=e.nodeName.toLowerCase();return("input"===i||"button"===i)&&e.type===t}}function h(t){return n(function(e){return e=+e,n(function(i,n){for(var s,o=t([],i.length,e),r=o.length;r--;)i[s=o[r]]&&(i[s]=!(n[s]=i[s]))})})}function u(t){return t&&"undefined"!=typeof t.getElementsByTagName&&t}function c(){}function d(t){for(var e=0,i=t.length,n="";e1?function(e,i,n){for(var s=t.length;s--;)if(!t[s](e,i,n))return!1;return!0}:t[0]}function m(t,i,n){for(var s=0,o=i.length;s-1&&(n[h]=!(r[h]=c))}}else b=g(b===r?b.splice(f,b.length):b),o?o(null,r,b,l):$.apply(r,b)})}function y(t){for(var e,i,n,s=t.length,o=C.relative[t[0].type],r=o||C.relative[" "],a=o?1:0,l=p(function(t){return t===e},r,!0),h=p(function(t){return tt(e,t)>-1},r,!0),u=[function(t,i,n){var s=!o&&(n||i!==E)||((e=i).nodeType?l(t,i,n):h(t,i,n));return e=null,s}];a1&&f(u),a>1&&d(t.slice(0,a-1).concat({value:" "===t[a-2].type?"*":""})).replace(at,"$1"),i,a0,o=t.length>0,r=function(n,r,a,l,h){var u,c,d,p=0,f="0",m=n&&[],v=[],y=E,b=n||o&&C.find.TAG("*",h),_=z+=null==y?1:Math.random()||.1,w=b.length;for(h&&(E=r===N||r||h);f!==w&&null!=(u=b[f]);f++){if(o&&u){for(c=0,r||u.ownerDocument===N||(I(u),a=!P);d=t[c++];)if(d(u,r||N,a)){l.push(u);break}h&&(z=_)}s&&((u=!d&&u)&&p--,n&&m.push(u))}if(p+=f,s&&f!==p){for(c=0;d=i[c++];)d(m,v,r,a);if(n){if(p>0)for(;f--;)m[f]||v[f]||(v[f]=G.call(l));v=g(v)}$.apply(l,v),h&&!n&&v.length>0&&p+i.length>1&&e.uniqueSort(l)}return h&&(z=_,E=y),m};return s?n(r):r}var _,w,C,k,D,T,S,x,E,A,M,I,N,O,P,H,L,j,F,W="sizzle"+1*new Date,R=t.document,z=0,q=0,B=i(),U=i(),V=i(),Y=function(t,e){return t===e&&(M=!0),0},J=1<<31,Q={}.hasOwnProperty,K=[],G=K.pop,X=K.push,$=K.push,Z=K.slice,tt=function(t,e){for(var i=0,n=t.length;i+~]|"+it+")"+it+"*"),ut=new RegExp("="+it+"*([^\\]'\"]*?)"+it+"*\\]","g"),ct=new RegExp(ot),dt=new RegExp("^"+nt+"$"),pt={ID:new RegExp("^#("+nt+")"),CLASS:new RegExp("^\\.("+nt+")"),TAG:new RegExp("^("+nt+"|[*])"),ATTR:new RegExp("^"+st),PSEUDO:new RegExp("^"+ot),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+it+"*(even|odd|(([+-]|)(\\d*)n|)"+it+"*(?:([+-]|)"+it+"*(\\d+)|))"+it+"*\\)|)","i"),bool:new RegExp("^(?:"+et+")$","i"),needsContext:new RegExp("^"+it+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+it+"*((?:-\\d)?\\d*)"+it+"*\\)|)(?=[^-]|$)","i")},ft=/^(?:input|select|textarea|button)$/i,mt=/^h\d$/i,gt=/^[^{]+\{\s*\[native \w/,vt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,yt=/[+~]/,bt=/'|\\/g,_t=new RegExp("\\\\([\\da-f]{1,6}"+it+"?|("+it+")|.)","ig"),wt=function(t,e,i){var n="0x"+e-65536;return n!==n||i?e:n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320)},Ct=function(){I()};try{$.apply(K=Z.call(R.childNodes),R.childNodes),K[R.childNodes.length].nodeType}catch(t){$={apply:K.length?function(t,e){X.apply(t,Z.call(e))}:function(t,e){for(var i=t.length,n=0;t[i++]=e[n++];);t.length=i-1}}}w=e.support={},D=e.isXML=function(t){var e=t&&(t.ownerDocument||t).documentElement;return!!e&&"HTML"!==e.nodeName},I=e.setDocument=function(t){var e,i,n=t?t.ownerDocument||t:R;return n!==N&&9===n.nodeType&&n.documentElement?(N=n,O=N.documentElement,P=!D(N),(i=N.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",Ct,!1):i.attachEvent&&i.attachEvent("onunload",Ct)),w.attributes=s(function(t){return t.className="i",!t.getAttribute("className")}),w.getElementsByTagName=s(function(t){return t.appendChild(N.createComment("")),!t.getElementsByTagName("*").length}),w.getElementsByClassName=gt.test(N.getElementsByClassName),w.getById=s(function(t){return O.appendChild(t).id=W,!N.getElementsByName||!N.getElementsByName(W).length}),w.getById?(C.find.ID=function(t,e){if("undefined"!=typeof e.getElementById&&P){var i=e.getElementById(t);return i?[i]:[]}},C.filter.ID=function(t){var e=t.replace(_t,wt);return function(t){return t.getAttribute("id")===e}}):(delete C.find.ID,C.filter.ID=function(t){var e=t.replace(_t,wt);return function(t){var i="undefined"!=typeof t.getAttributeNode&&t.getAttributeNode("id");return i&&i.value===e}}),C.find.TAG=w.getElementsByTagName?function(t,e){return"undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t):w.qsa?e.querySelectorAll(t):void 0}:function(t,e){var i,n=[],s=0,o=e.getElementsByTagName(t);if("*"===t){for(;i=o[s++];)1===i.nodeType&&n.push(i);return n}return o},C.find.CLASS=w.getElementsByClassName&&function(t,e){if("undefined"!=typeof e.getElementsByClassName&&P)return e.getElementsByClassName(t)},L=[],H=[],(w.qsa=gt.test(N.querySelectorAll))&&(s(function(t){O.appendChild(t).innerHTML="",t.querySelectorAll("[msallowcapture^='']").length&&H.push("[*^$]="+it+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||H.push("\\["+it+"*(?:value|"+et+")"),t.querySelectorAll("[id~="+W+"-]").length||H.push("~="),t.querySelectorAll(":checked").length||H.push(":checked"),t.querySelectorAll("a#"+W+"+*").length||H.push(".#.+[+~]")}),s(function(t){var e=N.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&H.push("name"+it+"*[*^$|!~]?="),t.querySelectorAll(":enabled").length||H.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),H.push(",.*:")})),(w.matchesSelector=gt.test(j=O.matches||O.webkitMatchesSelector||O.mozMatchesSelector||O.oMatchesSelector||O.msMatchesSelector))&&s(function(t){w.disconnectedMatch=j.call(t,"div"),j.call(t,"[s!='']:x"),L.push("!=",ot)}),H=H.length&&new RegExp(H.join("|")),L=L.length&&new RegExp(L.join("|")),e=gt.test(O.compareDocumentPosition),F=e||gt.test(O.contains)?function(t,e){var i=9===t.nodeType?t.documentElement:t,n=e&&e.parentNode;return t===n||!(!n||1!==n.nodeType||!(i.contains?i.contains(n):t.compareDocumentPosition&&16&t.compareDocumentPosition(n)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},Y=e?function(t,e){if(t===e)return M=!0,0;var i=!t.compareDocumentPosition-!e.compareDocumentPosition;return i||(i=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1,1&i||!w.sortDetached&&e.compareDocumentPosition(t)===i?t===N||t.ownerDocument===R&&F(R,t)?-1:e===N||e.ownerDocument===R&&F(R,e)?1:A?tt(A,t)-tt(A,e):0:4&i?-1:1)}:function(t,e){if(t===e)return M=!0,0;var i,n=0,s=t.parentNode,o=e.parentNode,a=[t],l=[e];if(!s||!o)return t===N?-1:e===N?1:s?-1:o?1:A?tt(A,t)-tt(A,e):0;if(s===o)return r(t,e);for(i=t;i=i.parentNode;)a.unshift(i);for(i=e;i=i.parentNode;)l.unshift(i);for(;a[n]===l[n];)n++;return n?r(a[n],l[n]):a[n]===R?-1:l[n]===R?1:0},N):N},e.matches=function(t,i){return e(t,null,null,i)},e.matchesSelector=function(t,i){if((t.ownerDocument||t)!==N&&I(t),i=i.replace(ut,"='$1']"),w.matchesSelector&&P&&!V[i+" "]&&(!L||!L.test(i))&&(!H||!H.test(i)))try{var n=j.call(t,i);if(n||w.disconnectedMatch||t.document&&11!==t.document.nodeType)return n}catch(t){}return e(i,N,null,[t]).length>0},e.contains=function(t,e){return(t.ownerDocument||t)!==N&&I(t),F(t,e)},e.attr=function(t,e){(t.ownerDocument||t)!==N&&I(t);var i=C.attrHandle[e.toLowerCase()],n=i&&Q.call(C.attrHandle,e.toLowerCase())?i(t,e,!P):undefined;return n!==undefined?n:w.attributes||!P?t.getAttribute(e):(n=t.getAttributeNode(e))&&n.specified?n.value:null},e.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},e.uniqueSort=function(t){var e,i=[],n=0,s=0;if(M=!w.detectDuplicates,A=!w.sortStable&&t.slice(0),t.sort(Y),M){for(;e=t[s++];)e===t[s]&&(n=i.push(s));for(;n--;)t.splice(i[n],1)}return A=null,t},k=e.getText=function(t){var e,i="",n=0,s=t.nodeType;if(s){if(1===s||9===s||11===s){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)i+=k(t)}else if(3===s||4===s)return t.nodeValue}else for(;e=t[n++];)i+=k(e);return i},C=e.selectors={cacheLength:50,createPseudo:n,match:pt,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(_t,wt),t[3]=(t[3]||t[4]||t[5]||"").replace(_t,wt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(t){var e,i=!t[6]&&t[2];return pt.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":i&&ct.test(i)&&(e=T(i,!0))&&(e=i.indexOf(")",i.length-e)-i.length)&&(t[0]=t[0].slice(0,e),t[2]=i.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(_t,wt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=B[t+" "];return e||(e=new RegExp("(^|"+it+")"+t+"("+it+"|$)"))&&B(t,function(t){return e.test("string"==typeof t.className&&t.className||"undefined"!=typeof t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(t,i,n){return function(s){var o=e.attr(s,t);return null==o?"!="===i:!i||(o+="","="===i?o===n:"!="===i?o!==n:"^="===i?n&&0===o.indexOf(n):"*="===i?n&&o.indexOf(n)>-1:"$="===i?n&&o.slice(-n.length)===n:"~="===i?(" "+o.replace(rt," ")+" ").indexOf(n)>-1:"|="===i&&(o===n||o.slice(0,n.length+1)===n+"-"))}},CHILD:function(t,e,i,n,s){var o="nth"!==t.slice(0,3),r="last"!==t.slice(-4),a="of-type"===e;return 1===n&&0===s?function(t){return!!t.parentNode}:function(e,i,l){var h,u,c,d,p,f,m=o!==r?"nextSibling":"previousSibling",g=e.parentNode,v=a&&e.nodeName.toLowerCase(),y=!l&&!a,b=!1;if(g){if(o){for(;m;){for(d=e;d=d[m];)if(a?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;f=m="only"===t&&!f&&"nextSibling"}return!0}if(f=[r?g.firstChild:g.lastChild],r&&y){for(d=g,c=d[W]||(d[W]={}),u=c[d.uniqueID]||(c[d.uniqueID]={}),h=u[t]||[],p=h[0]===z&&h[1],b=p&&h[2],d=p&&g.childNodes[p];d=++p&&d&&d[m]||(b=p=0)||f.pop();)if(1===d.nodeType&&++b&&d===e){u[t]=[z,p,b];break}}else if(y&&(d=e,c=d[W]||(d[W]={}),u=c[d.uniqueID]||(c[d.uniqueID]={}),h=u[t]||[],p=h[0]===z&&h[1],b=p),!1===b)for(;(d=++p&&d&&d[m]||(b=p=0)||f.pop())&&((a?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++b||(y&&(c=d[W]||(d[W]={}),u=c[d.uniqueID]||(c[d.uniqueID]={}),u[t]=[z,b]),d!==e)););return(b-=s)===n||b%n==0&&b/n>=0}}},PSEUDO:function(t,i){var s,o=C.pseudos[t]||C.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return o[W]?o(i):o.length>1?(s=[t,t,"",i],C.setFilters.hasOwnProperty(t.toLowerCase())?n(function(t,e){for(var n,s=o(t,i),r=s.length;r--;)n=tt(t,s[r]),t[n]=!(e[n]=s[r]) +}):function(t){return o(t,0,s)}):o}},pseudos:{not:n(function(t){var e=[],i=[],s=S(t.replace(at,"$1"));return s[W]?n(function(t,e,i,n){for(var o,r=s(t,null,n,[]),a=t.length;a--;)(o=r[a])&&(t[a]=!(e[a]=o))}):function(t,n,o){return e[0]=t,s(e,null,o,i),e[0]=null,!i.pop()}}),has:n(function(t){return function(i){return e(t,i).length>0}}),contains:n(function(t){return t=t.replace(_t,wt),function(e){return(e.textContent||e.innerText||k(e)).indexOf(t)>-1}}),lang:n(function(t){return dt.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(_t,wt).toLowerCase(),function(e){var i;do{if(i=P?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(i=i.toLowerCase())===t||0===i.indexOf(t+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var i=t.location&&t.location.hash;return i&&i.slice(1)===e.id},root:function(t){return t===O},focus:function(t){return t===N.activeElement&&(!N.hasFocus||N.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:function(t){return!1===t.disabled},disabled:function(t){return!0===t.disabled},checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,!0===t.selected},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!C.pseudos.empty(t)},header:function(t){return mt.test(t.nodeName)},input:function(t){return ft.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:h(function(){return[0]}),last:h(function(t,e){return[e-1]}),eq:h(function(t,e,i){return[i<0?i+e:i]}),even:h(function(t,e){for(var i=0;i=0;)t.push(n);return t}),gt:h(function(t,e,i){for(var n=i<0?i+e:i;++n2&&"ID"===(r=o[0]).type&&w.getById&&9===e.nodeType&&P&&C.relative[o[1].type]){if(!(e=(C.find.ID(r.matches[0].replace(_t,wt),e)||[])[0]))return i;h&&(e=e.parentNode),t=t.slice(o.shift().value.length)}for(s=pt.needsContext.test(t)?0:o.length;s--&&(r=o[s],!C.relative[a=r.type]);)if((l=C.find[a])&&(n=l(r.matches[0].replace(_t,wt),yt.test(o[0].type)&&u(e.parentNode)||e))){if(o.splice(s,1),!(t=n.length&&d(o)))return $.apply(i,n),i;break}}return(h||S(t,c))(n,e,!P,i,!e||yt.test(t)&&u(e.parentNode)||e),i},w.sortStable=W.split("").sort(Y).join("")===W,w.detectDuplicates=!!M,I(),w.sortDetached=s(function(t){return 1&t.compareDocumentPosition(N.createElement("div"))}),s(function(t){return t.innerHTML="","#"===t.firstChild.getAttribute("href")})||o("type|href|height|width",function(t,e,i){if(!i)return t.getAttribute(e,"type"===e.toLowerCase()?1:2)}),w.attributes&&s(function(t){return t.innerHTML="",t.firstChild.setAttribute("value",""),""===t.firstChild.getAttribute("value")})||o("value",function(t,e,i){if(!i&&"input"===t.nodeName.toLowerCase())return t.defaultValue}),s(function(t){return null==t.getAttribute("disabled")})||o(et,function(t,e,i){var n;if(!i)return!0===t[e]?e.toLowerCase():(n=t.getAttributeNode(e))&&n.specified?n.value:null}),e}(t);pt.find=yt,pt.expr=yt.selectors,pt.expr[":"]=pt.expr.pseudos,pt.uniqueSort=pt.unique=yt.uniqueSort,pt.text=yt.getText,pt.isXMLDoc=yt.isXML,pt.contains=yt.contains;var bt=function(t,e,i){for(var n=[],s=i!==undefined;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(s&&pt(t).is(i))break;n.push(t)}return n},_t=function(t,e){for(var i=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&i.push(t);return i},wt=pt.expr.match.needsContext,Ct=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,kt=/^.[^:#\[\.,]*$/;pt.filter=function(t,e,i){var n=e[0];return i&&(t=":not("+t+")"),1===e.length&&1===n.nodeType?pt.find.matchesSelector(n,t)?[n]:[]:pt.find.matches(t,pt.grep(e,function(t){return 1===t.nodeType}))},pt.fn.extend({find:function(t){var e,i=[],n=this,s=n.length;if("string"!=typeof t)return this.pushStack(pt(t).filter(function(){for(e=0;e1?pt.unique(i):i),i.selector=this.selector?this.selector+" "+t:t,i},filter:function(t){return this.pushStack(n(this,t||[],!1))},not:function(t){return this.pushStack(n(this,t||[],!0))},is:function(t){return!!n(this,"string"==typeof t&&wt.test(t)?pt(t):t||[],!1).length}});var Dt,Tt=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/;(pt.fn.init=function(t,e,i){var n,s;if(!t)return this;if(i=i||Dt,"string"==typeof t){if(!(n="<"===t.charAt(0)&&">"===t.charAt(t.length-1)&&t.length>=3?[null,t,null]:Tt.exec(t))||!n[1]&&e)return!e||e.jquery?(e||i).find(t):this.constructor(e).find(t);if(n[1]){if(e=e instanceof pt?e[0]:e,pt.merge(this,pt.parseHTML(n[1],e&&e.nodeType?e.ownerDocument||e:nt,!0)),Ct.test(n[1])&&pt.isPlainObject(e))for(n in e)pt.isFunction(this[n])?this[n](e[n]):this.attr(n,e[n]);return this}if((s=nt.getElementById(n[2]))&&s.parentNode){if(s.id!==n[2])return Dt.find(t);this.length=1,this[0]=s}return this.context=nt,this.selector=t,this}return t.nodeType?(this.context=this[0]=t,this.length=1,this):pt.isFunction(t)?"undefined"!=typeof i.ready?i.ready(t):t(pt):(t.selector!==undefined&&(this.selector=t.selector,this.context=t.context),pt.makeArray(t,this))}).prototype=pt.fn,Dt=pt(nt);var St=/^(?:parents|prev(?:Until|All))/,xt={children:!0,contents:!0,next:!0,prev:!0};pt.fn.extend({has:function(t){var e,i=pt(t,this),n=i.length;return this.filter(function(){for(e=0;e-1:1===i.nodeType&&pt.find.matchesSelector(i,t))){o.push(i);break}return this.pushStack(o.length>1?pt.uniqueSort(o):o)},index:function(t){return t?"string"==typeof t?pt.inArray(this[0],pt(t)):pt.inArray(t.jquery?t[0]:t,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(pt.uniqueSort(pt.merge(this.get(),pt(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),pt.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return bt(t,"parentNode")},parentsUntil:function(t,e,i){return bt(t,"parentNode",i)},next:function(t){return s(t,"nextSibling")},prev:function(t){return s(t,"previousSibling")},nextAll:function(t){return bt(t,"nextSibling")},prevAll:function(t){return bt(t,"previousSibling")},nextUntil:function(t,e,i){return bt(t,"nextSibling",i)},prevUntil:function(t,e,i){return bt(t,"previousSibling",i)},siblings:function(t){return _t((t.parentNode||{}).firstChild,t)},children:function(t){return _t(t.firstChild)},contents:function(t){return pt.nodeName(t,"iframe")?t.contentDocument||t.contentWindow.document:pt.merge([],t.childNodes)}},function(t,e){pt.fn[t]=function(i,n){var s=pt.map(this,e,i);return"Until"!==t.slice(-5)&&(n=i),n&&"string"==typeof n&&(s=pt.filter(n,s)),this.length>1&&(xt[t]||(s=pt.uniqueSort(s)),St.test(t)&&(s=s.reverse())),this.pushStack(s)}});var Et=/\S+/g;pt.Callbacks=function(t){t="string"==typeof t?o(t):pt.extend({},t);var e,i,n,s,r=[],a=[],l=-1,h=function(){for(s=t.once,n=e=!0;a.length;l=-1)for(i=a.shift();++l-1;)r.splice(i,1),i<=l&&l--}),this},has:function(t){return t?pt.inArray(t,r)>-1:r.length>0},empty:function(){return r&&(r=[]),this},disable:function(){return s=a=[],r=i="",this},disabled:function(){return!r},lock:function(){return s=!0,i||u.disable(),this},locked:function(){return!!s},fireWith:function(t,i){return s||(i=i||[],i=[t,i.slice?i.slice():i],a.push(i),e||h()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!n}};return u},pt.extend({Deferred:function(t){var e=[["resolve","done",pt.Callbacks("once memory"),"resolved"],["reject","fail",pt.Callbacks("once memory"),"rejected"],["notify","progress",pt.Callbacks("memory")]],i="pending",n={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},then:function(){var t=arguments;return pt.Deferred(function(i){pt.each(e,function(e,o){var r=pt.isFunction(t[e])&&t[e];s[o[1]](function(){var t=r&&r.apply(this,arguments);t&&pt.isFunction(t.promise)?t.promise().progress(i.notify).done(i.resolve).fail(i.reject):i[o[0]+"With"](this===n?i.promise():this,r?[t]:arguments)})}),t=null}).promise()},promise:function(t){return null!=t?pt.extend(t,n):n}},s={};return n.pipe=n.then,pt.each(e,function(t,o){var r=o[2],a=o[3];n[o[1]]=r.add,a&&r.add(function(){i=a},e[1^t][2].disable,e[2][2].lock),s[o[0]]=function(){return s[o[0]+"With"](this===s?n:this,arguments),this},s[o[0]+"With"]=r.fireWith}),n.promise(s),t&&t.call(s,s),s},when:function(t){var e,i,n,s=0,o=st.call(arguments),r=o.length,a=1!==r||t&&pt.isFunction(t.promise)?r:0,l=1===a?t:pt.Deferred(),h=function(t,i,n){return function(s){i[t]=this,n[t]=arguments.length>1?st.call(arguments):s,n===e?l.notifyWith(i,n):--a||l.resolveWith(i,n)}};if(r>1)for(e=new Array(r),i=new Array(r),n=new Array(r);s0||(At.resolveWith(nt,[pt]),pt.fn.triggerHandler&&(pt(nt).triggerHandler("ready"),pt(nt).off("ready"))))}}),pt.ready.promise=function(e){if(!At)if(At=pt.Deferred(),"complete"===nt.readyState||"loading"!==nt.readyState&&!nt.documentElement.doScroll)t.setTimeout(pt.ready);else if(nt.addEventListener)nt.addEventListener("DOMContentLoaded",a),t.addEventListener("load",a);else{nt.attachEvent("onreadystatechange",a),t.attachEvent("onload",a);var i=!1;try{i=null==t.frameElement&&nt.documentElement}catch(t){}i&&i.doScroll&&function e(){if(!pt.isReady){try{i.doScroll("left")}catch(i){return t.setTimeout(e,50)}r(),pt.ready()}}()}return At.promise(e)},pt.ready.promise();var Mt;for(Mt in pt(ct))break;ct.ownFirst="0"===Mt,ct.inlineBlockNeedsLayout=!1,pt(function(){var t,e,i,n;(i=nt.getElementsByTagName("body")[0])&&i.style&&(e=nt.createElement("div"),n=nt.createElement("div"),n.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",i.appendChild(n).appendChild(e),"undefined"!=typeof e.style.zoom&&(e.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",ct.inlineBlockNeedsLayout=t=3===e.offsetWidth,t&&(i.style.zoom=1)),i.removeChild(n))}),function(){var t=nt.createElement("div");ct.deleteExpando=!0;try{delete t.test}catch(t){ct.deleteExpando=!1}t=null}();var It=function(t){var e=pt.noData[(t.nodeName+" ").toLowerCase()],i=+t.nodeType||1;return(1===i||9===i)&&(!e||!0!==e&&t.getAttribute("classid")===e)},Nt=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Ot=/([A-Z])/g;pt.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(t){return!!(t=t.nodeType?pt.cache[t[pt.expando]]:t[pt.expando])&&!h(t)},data:function(t,e,i){return u(t,e,i)},removeData:function(t,e){return c(t,e)},_data:function(t,e,i){return u(t,e,i,!0)},_removeData:function(t,e){return c(t,e,!0)}}),pt.fn.extend({data:function(t,e){var i,n,s,o=this[0],r=o&&o.attributes;if(t===undefined){if(this.length&&(s=pt.data(o),1===o.nodeType&&!pt._data(o,"parsedAttrs"))){for(i=r.length;i--;)r[i]&&(n=r[i].name,0===n.indexOf("data-")&&(n=pt.camelCase(n.slice(5)),l(o,n,s[n])));pt._data(o,"parsedAttrs",!0)}return s}return"object"==typeof t?this.each(function(){pt.data(this,t)}):arguments.length>1?this.each(function(){pt.data(this,t,e)}):o?l(o,t,pt.data(o,t)):undefined},removeData:function(t){return this.each(function(){pt.removeData(this,t)})}}),pt.extend({queue:function(t,e,i){var n;if(t)return e=(e||"fx")+"queue",n=pt._data(t,e),i&&(!n||pt.isArray(i)?n=pt._data(t,e,pt.makeArray(i)):n.push(i)),n||[]},dequeue:function(t,e){e=e||"fx";var i=pt.queue(t,e),n=i.length,s=i.shift(),o=pt._queueHooks(t,e),r=function(){pt.dequeue(t,e)};"inprogress"===s&&(s=i.shift(),n--),s&&("fx"===e&&i.unshift("inprogress"),delete o.stop,s.call(t,r,o)),!n&&o&&o.empty.fire()},_queueHooks:function(t,e){var i=e+"queueHooks";return pt._data(t,i)||pt._data(t,i,{empty:pt.Callbacks("once memory").add(function(){pt._removeData(t,e+"queue"),pt._removeData(t,i)})})}}),pt.fn.extend({queue:function(t,e){var i=2;return"string"!=typeof t&&(e=t,t="fx",i--),arguments.length
a",ct.leadingWhitespace=3===t.firstChild.nodeType,ct.tbody=!t.getElementsByTagName("tbody").length,ct.htmlSerialize=!!t.getElementsByTagName("link").length,ct.html5Clone="<:nav>"!==nt.createElement("nav").cloneNode(!0).outerHTML,i.type="checkbox",i.checked=!0,e.appendChild(i),ct.appendChecked=i.checked,t.innerHTML="",ct.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue,e.appendChild(t),i=nt.createElement("input"),i.setAttribute("type","radio"),i.setAttribute("checked","checked"),i.setAttribute("name","t"),t.appendChild(i),ct.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,ct.noCloneEvent=!!t.addEventListener,t[pt.expando]=1,ct.attributes=!t.getAttribute(pt.expando)}();var Ut={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:ct.htmlSerialize?[0,"",""]:[1,"X
","
"]};Ut.optgroup=Ut.option,Ut.tbody=Ut.tfoot=Ut.colgroup=Ut.caption=Ut.thead,Ut.th=Ut.td;var Vt=/<|&#?\w+;/,Yt=/-1&&(f=p.split("."),p=f.shift(),f.sort()),r=p.indexOf(":")<0&&"on"+p,e=e[pt.expando]?e:new pt.Event(p,"object"==typeof e&&e),e.isTrigger=s?2:3,e.namespace=f.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=undefined,e.target||(e.target=n),i=null==i?[e]:pt.makeArray(i,[e]),h=pt.event.special[p]||{},s||!h.trigger||!1!==h.trigger.apply(n,i))){if(!s&&!h.noBubble&&!pt.isWindow(n)){for(l=h.delegateType||p,Gt.test(l+p)||(a=a.parentNode);a;a=a.parentNode)d.push(a),u=a;u===(n.ownerDocument||nt)&&d.push(u.defaultView||u.parentWindow||t)}for(c=0;(a=d[c++])&&!e.isPropagationStopped();)e.type=c>1?l:h.bindType||p,o=(pt._data(a,"events")||{})[e.type]&&pt._data(a,"handle"),o&&o.apply(a,i),(o=r&&a[r])&&o.apply&&It(a)&&(e.result=o.apply(a,i),!1===e.result&&e.preventDefault());if(e.type=p,!s&&!e.isDefaultPrevented()&&(!h._default||!1===h._default.apply(d.pop(),i))&&It(n)&&r&&n[p]&&!pt.isWindow(n)){u=n[r],u&&(n[r]=null),pt.event.triggered=p;try{n[p]()}catch(t){}pt.event.triggered=undefined,u&&(n[r]=u)}return e.result}},dispatch:function(t){t=pt.event.fix(t);var e,i,n,s,o,r=[],a=st.call(arguments),l=(pt._data(this,"events")||{})[t.type]||[],h=pt.event.special[t.type]||{};if(a[0]=t,t.delegateTarget=this,!h.preDispatch||!1!==h.preDispatch.call(this,t)){for(r=pt.event.handlers.call(this,t,l),e=0;(s=r[e++])&&!t.isPropagationStopped();)for(t.currentTarget=s.elem,i=0;(o=s.handlers[i++])&&!t.isImmediatePropagationStopped();)t.rnamespace&&!t.rnamespace.test(o.namespace)||(t.handleObj=o,t.data=o.data,(n=((pt.event.special[o.origType]||{}).handle||o.handler).apply(s.elem,a))!==undefined&&!1===(t.result=n)&&(t.preventDefault(),t.stopPropagation()));return h.postDispatch&&h.postDispatch.call(this,t),t.result}},handlers:function(t,e){var i,n,s,o,r=[],a=e.delegateCount,l=t.target;if(a&&l.nodeType&&("click"!==t.type||isNaN(t.button)||t.button<1))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(!0!==l.disabled||"click"!==t.type)){for(n=[],i=0;i-1:pt.find(s,this,null,[l]).length),n[s]&&n.push(o);n.length&&r.push({elem:l,handlers:n})}return a]","i"),te=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,ee=/\s*$/g,oe=p(nt),re=oe.appendChild(nt.createElement("div"));pt.extend({htmlPrefilter:function(t){return t.replace(te,"<$1>")},clone:function(t,e,i){var n,s,o,r,a,l=pt.contains(t.ownerDocument,t);if(ct.html5Clone||pt.isXMLDoc(t)||!Zt.test("<"+t.nodeName+">")?o=t.cloneNode(!0):(re.innerHTML=t.outerHTML,re.removeChild(o=re.firstChild)),!(ct.noCloneEvent&&ct.noCloneChecked||1!==t.nodeType&&11!==t.nodeType||pt.isXMLDoc(t)))for(n=f(o),a=f(t),r=0;null!=(s=a[r]);++r)n[r]&&S(s,n[r]);if(e)if(i)for(a=a||f(t),n=n||f(o),r=0;null!=(s=a[r]);r++)T(s,n[r]);else T(t,o);return n=f(o,"script"),n.length>0&&m(n,!l&&f(t,"script")),n=a=s=null,o},cleanData:function(t,e){for(var i,n,s,o,r=0,a=pt.expando,l=pt.cache,h=ct.attributes,u=pt.event.special;null!=(i=t[r]);r++)if((e||It(i))&&(s=i[a],o=s&&l[s])){if(o.events)for(n in o.events)u[n]?pt.event.remove(i,n):pt.removeEvent(i,n,o.handle);l[s]&&(delete l[s],h||"undefined"==typeof i.removeAttribute?i[a]=undefined:i.removeAttribute(a),it.push(s))}}}),pt.fn.extend({domManip:x,detach:function(t){return E(this,t,!0)},remove:function(t){return E(this,t)},text:function(t){return Ft(this,function(t){return t===undefined?pt.text(this):this.empty().append((this[0]&&this[0].ownerDocument||nt).createTextNode(t))},null,t,arguments.length)},append:function(){return x(this,arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){C(this,t).appendChild(t)}})},prepend:function(){return x(this,arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=C(this,t);e.insertBefore(t,e.firstChild)}})},before:function(){return x(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this)})},after:function(){return x(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)})},empty:function(){for(var t,e=0;null!=(t=this[e]);e++){for(1===t.nodeType&&pt.cleanData(f(t,!1));t.firstChild;)t.removeChild(t.firstChild);t.options&&pt.nodeName(t,"select")&&(t.options.length=0)}return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map(function(){return pt.clone(this,t,e)})},html:function(t){return Ft(this,function(t){var e=this[0]||{},i=0,n=this.length;if(t===undefined)return 1===e.nodeType?e.innerHTML.replace($t,""):undefined;if("string"==typeof t&&!ee.test(t)&&(ct.htmlSerialize||!Zt.test(t))&&(ct.leadingWhitespace||!qt.test(t))&&!Ut[(Rt.exec(t)||["",""])[1].toLowerCase()]){t=pt.htmlPrefilter(t);try{for(;i=1||""===e)&&""===pt.trim(o.replace(ge,""))&&i.removeAttribute&&(i.removeAttribute("filter"),""===e||n&&!n.filter)||(i.filter=ge.test(o)?o.replace(ge,s):o+" "+s)}}),pt.cssHooks.marginRight=I(ct.reliableMarginRight,function(t,e){if(e)return ce(t,{display:"inline-block"},fe,[t,"marginRight"])}),pt.cssHooks.marginLeft=I(ct.reliableMarginLeft,function(t,e){if(e)return(parseFloat(fe(t,"marginLeft"))||(pt.contains(t.ownerDocument,t)?t.getBoundingClientRect().left-ce(t,{marginLeft:0},function(){return t.getBoundingClientRect().left}):0))+"px"}),pt.each({margin:"",padding:"",border:"Width"},function(t,e){pt.cssHooks[t+e]={expand:function(i){for(var n=0,s={},o="string"==typeof i?i.split(" "):[i];n<4;n++)s[t+Lt[n]+e]=o[n]||o[n-2]||o[0];return s}},he.test(t)||(pt.cssHooks[t+e].set=P)}),pt.fn.extend({css:function(t,e){return Ft(this,function(t,e,i){var n,s,o={},r=0;if(pt.isArray(e)){for(n=pe(t),s=e.length;r1)},show:function(){return O(this,!0)},hide:function(){return O(this)},toggle:function(t){return"boolean"==typeof t?t?this.show():this.hide():this.each(function(){jt(this)?pt(this).show():pt(this).hide()})}}),pt.Tween=j,j.prototype={constructor:j,init:function(t,e,i,n,s,o){this.elem=t,this.prop=i,this.easing=s||pt.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=n,this.unit=o||(pt.cssNumber[i]?"":"px")},cur:function(){var t=j.propHooks[this.prop];return t&&t.get?t.get(this):j.propHooks._default.get(this)},run:function(t){var e,i=j.propHooks[this.prop];return this.options.duration?this.pos=e=pt.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),i&&i.set?i.set(this):j.propHooks._default.set(this),this}},j.prototype.init.prototype=j.prototype,j.propHooks={_default:{get:function(t){var e;return 1!==t.elem.nodeType||null!=t.elem[t.prop]&&null==t.elem.style[t.prop]?t.elem[t.prop]:(e=pt.css(t.elem,t.prop,""),e&&"auto"!==e?e:0)},set:function(t){pt.fx.step[t.prop]?pt.fx.step[t.prop](t):1!==t.elem.nodeType||null==t.elem.style[pt.cssProps[t.prop]]&&!pt.cssHooks[t.prop]?t.elem[t.prop]=t.now:pt.style(t.elem,t.prop,t.now+t.unit)}}},j.propHooks.scrollTop=j.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},pt.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:"swing"},pt.fx=j.prototype.init,pt.fx.step={};var De,Te,Se=/^(?:toggle|show|hide)$/,xe=/queueHooks$/;pt.Animation=pt.extend(B,{tweeners:{"*":[function(t,e){var i=this.createTween(t,e);return d(i.elem,t,Ht.exec(e),i),i}]},tweener:function(t,e){pt.isFunction(t)?(e=t,t=["*"]):t=t.match(Et);for(var i,n=0,s=t.length;n
a",t=i.getElementsByTagName("a")[0],e.setAttribute("type","checkbox"),i.appendChild(e),t=i.getElementsByTagName("a")[0],t.style.cssText="top:1px",ct.getSetAttribute="t"!==i.className,ct.style=/top/.test(t.getAttribute("style")),ct.hrefNormalized="/a"===t.getAttribute("href"),ct.checkOn=!!e.value,ct.optSelected=s.selected,ct.enctype=!!nt.createElement("form").enctype,n.disabled=!0,ct.optDisabled=!s.disabled,e=nt.createElement("input"),e.setAttribute("value",""),ct.input=""===e.getAttribute("value"),e.value="t",e.setAttribute("type","radio"),ct.radioValue="t"===e.value}();var Ee=/\r/g,Ae=/[\x20\t\r\n\f]+/g;pt.fn.extend({val:function(t){var e,i,n,s=this[0];{if(arguments.length)return n=pt.isFunction(t),this.each(function(i){var s;1===this.nodeType&&(s=n?t.call(this,i,pt(this).val()):t,null==s?s="":"number"==typeof s?s+="":pt.isArray(s)&&(s=pt.map(s,function(t){return null==t?"":t+""})),(e=pt.valHooks[this.type]||pt.valHooks[this.nodeName.toLowerCase()])&&"set"in e&&e.set(this,s,"value")!==undefined||(this.value=s))});if(s)return(e=pt.valHooks[s.type]||pt.valHooks[s.nodeName.toLowerCase()])&&"get"in e&&(i=e.get(s,"value"))!==undefined?i:(i=s.value,"string"==typeof i?i.replace(Ee,""):null==i?"":i)}}}),pt.extend({valHooks:{option:{get:function(t){var e=pt.find.attr(t,"value");return null!=e?e:pt.trim(pt.text(t)).replace(Ae," ")}},select:{get:function(t){for(var e,i,n=t.options,s=t.selectedIndex,o="select-one"===t.type||s<0,r=o?null:[],a=o?s+1:n.length,l=s<0?a:o?s:0;l-1)try{n.selected=i=!0}catch(t){n.scrollHeight}else n.selected=!1;return i||(t.selectedIndex=-1),s}}}}),pt.each(["radio","checkbox"],function(){pt.valHooks[this]={set:function(t,e){if(pt.isArray(e))return t.checked=pt.inArray(pt(t).val(),e)>-1}},ct.checkOn||(pt.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})});var Me,Ie,Ne=pt.expr.attrHandle,Oe=/^(?:checked|selected)$/i,Pe=ct.getSetAttribute,He=ct.input;pt.fn.extend({attr:function(t,e){return Ft(this,pt.attr,t,e,arguments.length>1)},removeAttr:function(t){return this.each(function(){pt.removeAttr(this,t)})}}),pt.extend({attr:function(t,e,i){var n,s,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof t.getAttribute?pt.prop(t,e,i):(1===o&&pt.isXMLDoc(t)||(e=e.toLowerCase(),s=pt.attrHooks[e]||(pt.expr.match.bool.test(e)?Ie:Me)),i!==undefined?null===i?void pt.removeAttr(t,e):s&&"set"in s&&(n=s.set(t,i,e))!==undefined?n:(t.setAttribute(e,i+""),i):s&&"get"in s&&null!==(n=s.get(t,e))?n:(n=pt.find.attr(t,e),null==n?undefined:n))},attrHooks:{type:{set:function(t,e){if(!ct.radioValue&&"radio"===e&&pt.nodeName(t,"input")){var i=t.value;return t.setAttribute("type",e),i&&(t.value=i),e}}}},removeAttr:function(t,e){var i,n,s=0,o=e&&e.match(Et);if(o&&1===t.nodeType)for(;i=o[s++];)n=pt.propFix[i]||i,pt.expr.match.bool.test(i)?He&&Pe||!Oe.test(i)?t[n]=!1:t[pt.camelCase("default-"+i)]=t[n]=!1:pt.attr(t,i,""),t.removeAttribute(Pe?i:n)}}),Ie={set:function(t,e,i){return!1===e?pt.removeAttr(t,i):He&&Pe||!Oe.test(i)?t.setAttribute(!Pe&&pt.propFix[i]||i,i):t[pt.camelCase("default-"+i)]=t[i]=!0,i}},pt.each(pt.expr.match.bool.source.match(/\w+/g),function(t,e){var i=Ne[e]||pt.find.attr;He&&Pe||!Oe.test(e)?Ne[e]=function(t,e,n){var s,o;return n||(o=Ne[e],Ne[e]=s,s=null!=i(t,e,n)?e.toLowerCase():null,Ne[e]=o),s}:Ne[e]=function(t,e,i){if(!i)return t[pt.camelCase("default-"+e)]?e.toLowerCase():null}}),He&&Pe||(pt.attrHooks.value={set:function(t,e,i){if(!pt.nodeName(t,"input"))return Me&&Me.set(t,e,i);t.defaultValue=e}}),Pe||(Me={set:function(t,e,i){var n=t.getAttributeNode(i);if(n||t.setAttributeNode(n=t.ownerDocument.createAttribute(i)),n.value=e+="","value"===i||e===t.getAttribute(i))return e}},Ne.id=Ne.name=Ne.coords=function(t,e,i){var n;if(!i)return(n=t.getAttributeNode(e))&&""!==n.value?n.value:null},pt.valHooks.button={get:function(t,e){var i=t.getAttributeNode(e);if(i&&i.specified)return i.value},set:Me.set},pt.attrHooks.contenteditable={set:function(t,e,i){Me.set(t,""!==e&&e,i)}},pt.each(["width","height"],function(t,e){pt.attrHooks[e]={set:function(t,i){if(""===i)return t.setAttribute(e,"auto"),i}}})),ct.style||(pt.attrHooks.style={get:function(t){return t.style.cssText||undefined},set:function(t,e){return t.style.cssText=e+""}});var Le=/^(?:input|select|textarea|button|object)$/i,je=/^(?:a|area)$/i;pt.fn.extend({prop:function(t,e){return Ft(this,pt.prop,t,e,arguments.length>1)},removeProp:function(t){return t=pt.propFix[t]||t,this.each(function(){try{this[t]=undefined,delete this[t]}catch(t){}})}}),pt.extend({prop:function(t,e,i){var n,s,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&pt.isXMLDoc(t)||(e=pt.propFix[e]||e,s=pt.propHooks[e]),i!==undefined?s&&"set"in s&&(n=s.set(t,i,e))!==undefined?n:t[e]=i:s&&"get"in s&&null!==(n=s.get(t,e))?n:t[e]},propHooks:{tabIndex:{get:function(t){var e=pt.find.attr(t,"tabindex");return e?parseInt(e,10):Le.test(t.nodeName)||je.test(t.nodeName)&&t.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),ct.hrefNormalized||pt.each(["href","src"],function(t,e){pt.propHooks[e]={get:function(t){return t.getAttribute(e,4)}}}),ct.optSelected||(pt.propHooks.selected={get:function(t){var e=t.parentNode;return e&&(e.selectedIndex,e.parentNode&&e.parentNode.selectedIndex),null},set:function(t){var e=t.parentNode;e&&(e.selectedIndex,e.parentNode&&e.parentNode.selectedIndex)}}),pt.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){pt.propFix[this.toLowerCase()]=this}),ct.enctype||(pt.propFix.enctype="encoding");var Fe=/[\t\r\n\f]/g;pt.fn.extend({addClass:function(t){var e,i,n,s,o,r,a,l=0;if(pt.isFunction(t))return this.each(function(e){pt(this).addClass(t.call(this,e,U(this)))});if("string"==typeof t&&t)for(e=t.match(Et)||[];i=this[l++];)if(s=U(i),n=1===i.nodeType&&(" "+s+" ").replace(Fe," ")){for(r=0;o=e[r++];)n.indexOf(" "+o+" ")<0&&(n+=o+" ");a=pt.trim(n),s!==a&&pt.attr(i,"class",a)}return this},removeClass:function(t){var e,i,n,s,o,r,a,l=0;if(pt.isFunction(t))return this.each(function(e){pt(this).removeClass(t.call(this,e,U(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof t&&t)for(e=t.match(Et)||[];i=this[l++];)if(s=U(i),n=1===i.nodeType&&(" "+s+" ").replace(Fe," ")){for(r=0;o=e[r++];)for(;n.indexOf(" "+o+" ")>-1;)n=n.replace(" "+o+" "," ");a=pt.trim(n),s!==a&&pt.attr(i,"class",a)}return this},toggleClass:function(t,e){var i=typeof t;return"boolean"==typeof e&&"string"===i?e?this.addClass(t):this.removeClass(t):pt.isFunction(t)?this.each(function(i){pt(this).toggleClass(t.call(this,i,U(this),e),e)}):this.each(function(){var e,n,s,o;if("string"===i)for(n=0,s=pt(this),o=t.match(Et)||[];e=o[n++];)s.hasClass(e)?s.removeClass(e):s.addClass(e);else t!==undefined&&"boolean"!==i||(e=U(this),e&&pt._data(this,"__className__",e),pt.attr(this,"class",e||!1===t?"":pt._data(this,"__className__")||""))})},hasClass:function(t){var e,i,n=0;for(e=" "+t+" ";i=this[n++];)if(1===i.nodeType&&(" "+U(i)+" ").replace(Fe," ").indexOf(e)>-1)return!0;return!1}}),pt.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(t,e){pt.fn[e]=function(t,i){return arguments.length>0?this.on(e,null,t,i):this.trigger(e)}}),pt.fn.extend({hover:function(t,e){return this.mouseenter(t).mouseleave(e||t)}});var We=t.location,Re=pt.now(),ze=/\?/,qe=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;pt.parseJSON=function(e){if(t.JSON&&t.JSON.parse)return t.JSON.parse(e+"");var i,n=null,s=pt.trim(e+"");return s&&!pt.trim(s.replace(qe,function(t,e,s,o){return i&&e&&(n=0),0===n?t:(i=s||e,n+=!o-!s,"")}))?Function("return "+s)():pt.error("Invalid JSON: "+e)},pt.parseXML=function(e){var i,n;if(!e||"string"!=typeof e)return null;try{t.DOMParser?(n=new t.DOMParser,i=n.parseFromString(e,"text/xml")):(i=new t.ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e))}catch(t){i=undefined}return i&&i.documentElement&&!i.getElementsByTagName("parsererror").length||pt.error("Invalid XML: "+e),i};var Be=/#.*$/,Ue=/([?&])_=[^&]*/,Ve=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ye=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Je=/^(?:GET|HEAD)$/,Qe=/^\/\//,Ke=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ge={},Xe={},$e="*/".concat("*"),Ze=We.href,ti=Ke.exec(Ze.toLowerCase())||[];pt.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ze,type:"GET",isLocal:Ye.test(ti[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$e,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":pt.parseJSON,"text xml":pt.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?J(J(t,pt.ajaxSettings),e):J(pt.ajaxSettings,t)},ajaxPrefilter:V(Ge),ajaxTransport:V(Xe),ajax:function(e,i){function n(e,i,n,s){var o,c,y,b,w,k=i;2!==_&&(_=2,l&&t.clearTimeout(l),u=undefined,a=s||"",C.readyState=e>0?4:0,o=e>=200&&e<300||304===e,n&&(b=Q(d,C,n)),b=K(d,b,C,o),o?(d.ifModified&&(w=C.getResponseHeader("Last-Modified"),w&&(pt.lastModified[r]=w),(w=C.getResponseHeader("etag"))&&(pt.etag[r]=w)),204===e||"HEAD"===d.type?k="nocontent":304===e?k="notmodified":(k=b.state,c=b.data,y=b.error,o=!y)):(y=k,!e&&k||(k="error",e<0&&(e=0))),C.status=e,C.statusText=(i||k)+"",o?m.resolveWith(p,[c,k,C]):m.rejectWith(p,[C,k,y]),C.statusCode(v),v=undefined,h&&f.trigger(o?"ajaxSuccess":"ajaxError",[C,d,o?c:y]),g.fireWith(p,[C,k]),h&&(f.trigger("ajaxComplete",[C,d]),--pt.active||pt.event.trigger("ajaxStop")))}"object"==typeof e&&(i=e,e=undefined),i=i||{};var s,o,r,a,l,h,u,c,d=pt.ajaxSetup({},i),p=d.context||d,f=d.context&&(p.nodeType||p.jquery)?pt(p):pt.event,m=pt.Deferred(),g=pt.Callbacks("once memory"),v=d.statusCode||{},y={},b={},_=0,w="canceled",C={readyState:0,getResponseHeader:function(t){var e;if(2===_){if(!c)for(c={};e=Ve.exec(a);)c[e[1].toLowerCase()]=e[2];e=c[t.toLowerCase()]}return null==e?null:e},getAllResponseHeaders:function(){return 2===_?a:null},setRequestHeader:function(t,e){var i=t.toLowerCase();return _||(t=b[i]=b[i]||t,y[t]=e),this},overrideMimeType:function(t){return _||(d.mimeType=t),this},statusCode:function(t){var e;if(t)if(_<2)for(e in t)v[e]=[v[e],t[e]];else C.always(t[C.status]);return this},abort:function(t){var e=t||w;return u&&u.abort(e),n(0,e),this}};if(m.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,d.url=((e||d.url||Ze)+"").replace(Be,"").replace(Qe,ti[1]+"//"),d.type=i.method||i.type||d.method||d.type,d.dataTypes=pt.trim(d.dataType||"*").toLowerCase().match(Et)||[""],null==d.crossDomain&&(s=Ke.exec(d.url.toLowerCase()),d.crossDomain=!(!s||s[1]===ti[1]&&s[2]===ti[2]&&(s[3]||("http:"===s[1]?"80":"443"))===(ti[3]||("http:"===ti[1]?"80":"443")))),d.data&&d.processData&&"string"!=typeof d.data&&(d.data=pt.param(d.data,d.traditional)),Y(Ge,d,i,C),2===_)return C;h=pt.event&&d.global,h&&0==pt.active++&&pt.event.trigger("ajaxStart"),d.type=d.type.toUpperCase(),d.hasContent=!Je.test(d.type),r=d.url,d.hasContent||(d.data&&(r=d.url+=(ze.test(r)?"&":"?")+d.data,delete d.data),!1===d.cache&&(d.url=Ue.test(r)?r.replace(Ue,"$1_="+Re++):r+(ze.test(r)?"&":"?")+"_="+Re++)),d.ifModified&&(pt.lastModified[r]&&C.setRequestHeader("If-Modified-Since",pt.lastModified[r]),pt.etag[r]&&C.setRequestHeader("If-None-Match",pt.etag[r])),(d.data&&d.hasContent&&!1!==d.contentType||i.contentType)&&C.setRequestHeader("Content-Type",d.contentType),C.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+$e+"; q=0.01":""):d.accepts["*"]);for(o in d.headers)C.setRequestHeader(o,d.headers[o]);if(d.beforeSend&&(!1===d.beforeSend.call(p,C,d)||2===_))return C.abort();w="abort";for(o in{success:1,error:1,complete:1})C[o](d[o]);if(u=Y(Xe,d,i,C)){if(C.readyState=1,h&&f.trigger("ajaxSend",[C,d]),2===_)return C;d.async&&d.timeout>0&&(l=t.setTimeout(function(){C.abort("timeout")},d.timeout));try{_=1,u.send(y,n)}catch(t){if(!(_<2))throw t;n(-1,t)}}else n(-1,"No Transport");return C},getJSON:function(t,e,i){return pt.get(t,e,i,"json")},getScript:function(t,e){return pt.get(t,undefined,e,"script")}}),pt.each(["get","post"],function(t,e){pt[e]=function(t,i,n,s){return pt.isFunction(i)&&(s=s||n,n=i,i=undefined),pt.ajax(pt.extend({url:t,type:e,dataType:s,data:i,success:n},pt.isPlainObject(t)&&t))}}),pt._evalUrl=function(t){return pt.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},pt.fn.extend({wrapAll:function(t){if(pt.isFunction(t))return this.each(function(e){pt(this).wrapAll(t.call(this,e))});if(this[0]){var e=pt(t,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&e.insertBefore(this[0]),e.map(function(){for(var t=this;t.firstChild&&1===t.firstChild.nodeType;)t=t.firstChild;return t}).append(this)}return this},wrapInner:function(t){return pt.isFunction(t)?this.each(function(e){pt(this).wrapInner(t.call(this,e))}):this.each(function(){var e=pt(this),i=e.contents();i.length?i.wrapAll(t):e.append(t)})},wrap:function(t){var e=pt.isFunction(t);return this.each(function(i){pt(this).wrapAll(e?t.call(this,i):t)})},unwrap:function(){return this.parent().each(function(){pt.nodeName(this,"body")||pt(this).replaceWith(this.childNodes)}).end()}}),pt.expr.filters.hidden=function(t){return ct.reliableHiddenOffsets()?t.offsetWidth<=0&&t.offsetHeight<=0&&!t.getClientRects().length:X(t)},pt.expr.filters.visible=function(t){return!pt.expr.filters.hidden(t)};var ei=/%20/g,ii=/\[\]$/,ni=/\r?\n/g,si=/^(?:submit|button|image|reset|file)$/i,oi=/^(?:input|select|textarea|keygen)/i;pt.param=function(t,e){var i,n=[],s=function(t,e){e=pt.isFunction(e)?e():null==e?"":e,n[n.length]=encodeURIComponent(t)+"="+encodeURIComponent(e)};if(e===undefined&&(e=pt.ajaxSettings&&pt.ajaxSettings.traditional),pt.isArray(t)||t.jquery&&!pt.isPlainObject(t))pt.each(t,function(){s(this.name,this.value)});else for(i in t)$(i,t[i],e,s);return n.join("&").replace(ei,"+")},pt.fn.extend({serialize:function(){return pt.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var t=pt.prop(this,"elements");return t?pt.makeArray(t):this}).filter(function(){var t=this.type;return this.name&&!pt(this).is(":disabled")&&oi.test(this.nodeName)&&!si.test(t)&&(this.checked||!Wt.test(t))}).map(function(t,e){var i=pt(this).val();return null==i?null:pt.isArray(i)?pt.map(i,function(t){return{name:e.name,value:t.replace(ni,"\r\n")}}):{name:e.name,value:i.replace(ni,"\r\n")}}).get()}}),pt.ajaxSettings.xhr=t.ActiveXObject!==undefined?function(){return this.isLocal?tt():nt.documentMode>8?Z():/^(get|post|head|put|delete|options)$/i.test(this.type)&&Z()||tt()}:Z;var ri=0,ai={},li=pt.ajaxSettings.xhr();t.attachEvent&&t.attachEvent("onunload",function(){for(var t in ai)ai[t](undefined,!0)}),ct.cors=!!li&&"withCredentials"in li,li=ct.ajax=!!li,li&&pt.ajaxTransport(function(e){if(!e.crossDomain||ct.cors){var i;return{send:function(n,s){var o,r=e.xhr(),a=++ri;if(r.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(o in e.xhrFields)r[o]=e.xhrFields[o];e.mimeType&&r.overrideMimeType&&r.overrideMimeType(e.mimeType),e.crossDomain||n["X-Requested-With"]||(n["X-Requested-With"]="XMLHttpRequest");for(o in n)n[o]!==undefined&&r.setRequestHeader(o,n[o]+"");r.send(e.hasContent&&e.data||null),i=function(t,n){var o,l,h;if(i&&(n||4===r.readyState))if(delete ai[a],i=undefined,r.onreadystatechange=pt.noop,n)4!==r.readyState&&r.abort();else{h={},o=r.status,"string"==typeof r.responseText&&(h.text=r.responseText);try{l=r.statusText}catch(t){l=""}o||!e.isLocal||e.crossDomain?1223===o&&(o=204):o=h.text?200:404}h&&s(o,l,h,r.getAllResponseHeaders())},e.async?4===r.readyState?t.setTimeout(i):r.onreadystatechange=ai[a]=i:i()},abort:function(){i&&i(undefined,!0)}}}}),pt.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(t){return pt.globalEval(t),t}}}),pt.ajaxPrefilter("script",function(t){t.cache===undefined&&(t.cache=!1),t.crossDomain&&(t.type="GET",t.global=!1)}),pt.ajaxTransport("script",function(t){if(t.crossDomain){var e,i=nt.head||pt("head")[0]||nt.documentElement;return{send:function(n,s){e=nt.createElement("script"),e.async=!0,t.scriptCharset&&(e.charset=t.scriptCharset),e.src=t.url,e.onload=e.onreadystatechange=function(t,i){(i||!e.readyState||/loaded|complete/.test(e.readyState))&&(e.onload=e.onreadystatechange=null,e.parentNode&&e.parentNode.removeChild(e),e=null,i||s(200,"success"))},i.insertBefore(e,i.firstChild)},abort:function(){e&&e.onload(undefined,!0)}}}});var hi=[],ui=/(=)\?(?=&|$)|\?\?/;pt.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var t=hi.pop()||pt.expando+"_"+Re++;return this[t]=!0,t}}),pt.ajaxPrefilter("json jsonp",function(e,i,n){var s,o,r,a=!1!==e.jsonp&&(ui.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&ui.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return s=e.jsonpCallback=pt.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(ui,"$1"+s):!1!==e.jsonp&&(e.url+=(ze.test(e.url)?"&":"?")+e.jsonp+"="+s),e.converters["script json"]=function(){return r||pt.error(s+" was not called"),r[0]},e.dataTypes[0]="json",o=t[s],t[s]=function(){r=arguments},n.always(function(){o===undefined?pt(t).removeProp(s):t[s]=o,e[s]&&(e.jsonpCallback=i.jsonpCallback,hi.push(s)),r&&pt.isFunction(o)&&o(r[0]),r=o=undefined}),"script"}),pt.parseHTML=function(t,e,i){if(!t||"string"!=typeof t)return null;"boolean"==typeof e&&(i=e,e=!1),e=e||nt;var n=Ct.exec(t),s=!i&&[];return n?[e.createElement(n[1])]:(n=v([t],e,s),s&&s.length&&pt(s).remove(),pt.merge([],n.childNodes))};var ci=pt.fn.load;pt.fn.load=function(t,e,i){if("string"!=typeof t&&ci)return ci.apply(this,arguments);var n,s,o,r=this,a=t.indexOf(" ");return a>-1&&(n=pt.trim(t.slice(a,t.length)),t=t.slice(0,a)),pt.isFunction(e)?(i=e,e=undefined):e&&"object"==typeof e&&(s="POST"),r.length>0&&pt.ajax({url:t,type:s||"GET",dataType:"html",data:e}).done(function(t){o=arguments,r.html(n?pt("
").append(pt.parseHTML(t)).find(n):t)}).always(i&&function(t,e){r.each(function(){i.apply(this,o||[t.responseText,e,t])})}),this},pt.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(t,e){pt.fn[e]=function(t){return this.on(e,t)}}),pt.expr.filters.animated=function(t){return pt.grep(pt.timers,function(e){return t===e.elem}).length},pt.offset={setOffset:function(t,e,i){var n,s,o,r,a,l,h,u=pt.css(t,"position"),c=pt(t),d={};"static"===u&&(t.style.position="relative"),a=c.offset(),o=pt.css(t,"top"),l=pt.css(t,"left"),h=("absolute"===u||"fixed"===u)&&pt.inArray("auto",[o,l])>-1,h?(n=c.position(),r=n.top,s=n.left):(r=parseFloat(o)||0,s=parseFloat(l)||0),pt.isFunction(e)&&(e=e.call(t,i,pt.extend({},a))),null!=e.top&&(d.top=e.top-a.top+r),null!=e.left&&(d.left=e.left-a.left+s),"using"in e?e.using.call(t,d):c.css(d)}},pt.fn.extend({offset:function(t){if(arguments.length)return t===undefined?this:this.each(function(e){pt.offset.setOffset(this,t,e)});var e,i,n={top:0,left:0},s=this[0],o=s&&s.ownerDocument;if(o)return e=o.documentElement,pt.contains(e,s)?("undefined"!=typeof s.getBoundingClientRect&&(n=s.getBoundingClientRect()),i=et(o),{top:n.top+(i.pageYOffset||e.scrollTop)-(e.clientTop||0),left:n.left+(i.pageXOffset||e.scrollLeft)-(e.clientLeft||0)}):n},position:function(){if(this[0]){var t,e,i={top:0,left:0},n=this[0];return"fixed"===pt.css(n,"position")?e=n.getBoundingClientRect():(t=this.offsetParent(),e=this.offset(),pt.nodeName(t[0],"html")||(i=t.offset()),i.top+=pt.css(t[0],"borderTopWidth",!0),i.left+=pt.css(t[0],"borderLeftWidth",!0)),{top:e.top-i.top-pt.css(n,"marginTop",!0),left:e.left-i.left-pt.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent;t&&!pt.nodeName(t,"html")&&"static"===pt.css(t,"position");)t=t.offsetParent;return t||de})}}),pt.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,e){var i=/Y/.test(e);pt.fn[t]=function(n){return Ft(this,function(t,n,s){var o=et(t);if(s===undefined)return o?e in o?o[e]:o.document.documentElement[n]:t[n];o?o.scrollTo(i?pt(o).scrollLeft():s,i?s:pt(o).scrollTop()):t[n]=s},t,n,arguments.length,null)}}),pt.each(["top","left"],function(t,e){pt.cssHooks[e]=I(ct.pixelPosition,function(t,i){if(i)return i=fe(t,e),ue.test(i)?pt(t).position()[e]+"px":i})}),pt.each({Height:"height",Width:"width"},function(t,e){pt.each({padding:"inner"+t,content:e,"":"outer"+t},function(i,n){pt.fn[n]=function(n,s){var o=arguments.length&&(i||"boolean"!=typeof n),r=i||(!0===n||!0===s?"margin":"border");return Ft(this,function(e,i,n){var s;return pt.isWindow(e)?e.document.documentElement["client"+t]:9===e.nodeType?(s=e.documentElement,Math.max(e.body["scroll"+t],s["scroll"+t],e.body["offset"+t],s["offset"+t],s["client"+t])):n===undefined?pt.css(e,i,r):pt.style(e,i,n,r)},e,o?n:undefined,o,null)}})}),pt.fn.extend({bind:function(t,e,i){return this.on(t,null,e,i)},unbind:function(t,e){return this.off(t,null,e)},delegate:function(t,e,i,n){return this.on(e,t,i,n)},undelegate:function(t,e,i){return 1===arguments.length?this.off(t,"**"):this.off(e,t||"**",i)}}),pt.fn.size=function(){return this.length},pt.fn.andSelf=pt.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return pt});var di=t.jQuery,pi=t.$;return pt.noConflict=function(e){return t.$===pt&&(t.$=pi),e&&t.jQuery===pt&&(t.jQuery=di),pt},e||(t.jQuery=t.$=pt),pt}),function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(t){function e(e,n){var s,o,r,a=e.nodeName.toLowerCase();return"area"===a?(s=e.parentNode,o=s.name, +!(!e.href||!o||"map"!==s.nodeName.toLowerCase())&&(!!(r=t("img[usemap='#"+o+"']")[0])&&i(r))):(/^(input|select|textarea|button|object)$/.test(a)?!e.disabled:"a"===a?e.href||n:n)&&i(e)}function i(e){return t.expr.filters.visible(e)&&!t(e).parents().addBack().filter(function(){return"hidden"===t.css(this,"visibility")}).length}t.ui=t.ui||{},t.extend(t.ui,{version:"1.11.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),t.fn.extend({scrollParent:function(e){var i=this.css("position"),n="absolute"===i,s=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return(!n||"static"!==e.css("position"))&&s.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,n){return!!t.data(e,n[3])},focusable:function(i){return e(i,!isNaN(t.attr(i,"tabindex")))},tabbable:function(i){var n=t.attr(i,"tabindex"),s=isNaN(n);return(s||n>=0)&&e(i,!s)}}),t("").outerWidth(1).jquery||t.each(["Width","Height"],function(e,i){function n(e,i,n,o){return t.each(s,function(){i-=parseFloat(t.css(e,"padding"+this))||0,n&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var s="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),r={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return e===undefined?r["inner"+i].call(this):this.each(function(){t(this).css(o,n(this,e)+"px")})},t.fn["outer"+i]=function(e,s){return"number"!=typeof e?r["outer"+i].call(this,e):this.each(function(){t(this).css(o,n(this,e,!0,s)+"px")})}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t("").data("a-b","a").removeData("a-b").data("a-b")&&(t.fn.removeData=function(e){return function(i){return arguments.length?e.call(this,t.camelCase(i)):e.call(this)}}(t.fn.removeData)),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),t.fn.extend({focus:function(e){return function(i,n){return"number"==typeof i?this.each(function(){var e=this;setTimeout(function(){t(e).focus(),n&&n.call(e)},i)}):e.apply(this,arguments)}}(t.fn.focus),disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(e){if(e!==undefined)return this.css("zIndex",e);if(this.length)for(var i,n,s=t(this[0]);s.length&&s[0]!==document;){if(("absolute"===(i=s.css("position"))||"relative"===i||"fixed"===i)&&(n=parseInt(s.css("zIndex"),10),!isNaN(n)&&0!==n))return n;s=s.parent()}return 0}}),t.ui.plugin={add:function(e,i,n){var s,o=t.ui[e].prototype;for(s in n)o.plugins[s]=o.plugins[s]||[],o.plugins[s].push([i,n[s]])},call:function(t,e,i,n){var s,o=t.plugins[e];if(o&&(n||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(s=0;s",options:{disabled:!1,create:null},_createWidget:function(i,n){n=t(n||this.defaultElement||this)[0],this.element=t(n),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),n!==this&&(t.data(n,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===n&&this.destroy()}}),this.document=t(n.style?n.ownerDocument:n.document||n),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:t.noop,_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(t.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var n,s,o,r=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(r={},n=e.split("."),e=n.shift(),n.length){for(s=r[e]=t.widget.extend({},this.options[e]),o=0;o li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),e.collapsible||!1!==e.active&&null!=e.active||(e.active=0),this._processPanels(),e.active<0&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e=this.options.icons;e&&(t("").addClass("ui-accordion-header-icon ui-icon "+e.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(e.header).addClass(e.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){if("active"===t)return void this._activate(e);"event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),"disabled"===t&&(this.element.toggleClass("ui-state-disabled",!!e).attr("aria-disabled",e),this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!e))},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,n=this.headers.length,s=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(s+1)%n];break;case i.LEFT:case i.UP:o=this.headers[(s-1+n)%n];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[n-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),o.focus(),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().focus()},refresh:function(){var e=this.options;this._processPanels(),!1===e.active&&!0===e.collapsible||!this.headers.length?(e.active=!1,this.active=t()):!1===e.active?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-state-default ui-corner-all"),this.panels=this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide(),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,i=this.options,n=i.heightStyle,s=this.element.parent();this.active=this._findActive(i.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(){var e=t(this),i=e.uniqueId().attr("id"),n=e.next(),s=n.uniqueId().attr("id");e.attr("aria-controls",s),n.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===n?(e=s.height(),this.element.siblings(":visible").each(function(){var i=t(this),n=i.css("position");"absolute"!==n&&"fixed"!==n&&(e-=i.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===n&&(e=0,this.headers.next().each(function(){e=Math.max(e,t(this).css("height","").height())}).height(e))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i=this.options,n=this.active,s=t(e.currentTarget),o=s[0]===n[0],r=o&&i.collapsible,a=r?t():s.next(),l=n.next(),h={oldHeader:n,oldPanel:l,newHeader:r?t():s,newPanel:a};e.preventDefault(),o&&!i.collapsible||!1===this._trigger("beforeActivate",e,h)||(i.active=!r&&this.headers.index(s),this.active=o?t():s,this._toggle(h),n.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&n.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),o||(s.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),s.next().addClass("ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,n=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=n,this.options.animate?this._animate(i,n,e):(n.hide(),i.show(),this._toggleComplete(e)),n.attr({"aria-hidden":"true"}),n.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&n.length?n.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,i){var n,s,o,r=this,a=0,l=t.css("box-sizing"),h=t.length&&(!e.length||t.index()
"),o=n.children()[0];return t("body").append(n),e=o.offsetWidth,n.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=n[0].clientWidth),n.remove(),s=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),n=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),s="scroll"===i||"auto"===i&&e.width0?"right":"center",vertical:o<0?"top":n>0?"bottom":"middle"};mr(a(n),a(o))?l.important="horizontal":l.important="vertical",s.using.call(this,t,l)}),u.offset(t.extend(x,{using:h}))})},t.ui.position={fit:{left:function(t,e){var i,n=e.within,s=n.isWindow?n.scrollLeft:n.offset.left,o=n.width,a=t.left-e.collisionPosition.marginLeft,l=s-a,h=a+e.collisionWidth-o-s;e.collisionWidth>o?l>0&&h<=0?(i=t.left+l+e.collisionWidth-o-s,t.left+=l-i):t.left=h>0&&l<=0?s:l>h?s+o-e.collisionWidth:s:l>0?t.left+=l:h>0?t.left-=h:t.left=r(t.left-a,t.left)},top:function(t,e){var i,n=e.within,s=n.isWindow?n.scrollTop:n.offset.top,o=e.within.height,a=t.top-e.collisionPosition.marginTop,l=s-a,h=a+e.collisionHeight-o-s;e.collisionHeight>o?l>0&&h<=0?(i=t.top+l+e.collisionHeight-o-s,t.top+=l-i):t.top=h>0&&l<=0?s:l>h?s+o-e.collisionHeight:s:l>0?t.top+=l:h>0?t.top-=h:t.top=r(t.top-a,t.top)}},flip:{left:function(t,e){var i,n,s=e.within,o=s.offset.left+s.scrollLeft,r=s.width,l=s.isWindow?s.scrollLeft:s.offset.left,h=t.left-e.collisionPosition.marginLeft,u=h-l,c=h+e.collisionWidth-r-l,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];u<0?((i=t.left+d+p+f+e.collisionWidth-r-o)<0||i0&&((n=t.left-e.collisionPosition.marginLeft+d+p+f-l)>0||a(n)0&&((i=t.top-e.collisionPosition.marginTop+p+f+m-l)>0||a(i)10&&s<11,e.innerHTML="",i.removeChild(e)}()}(),t.ui.position}),function(t){"function"==typeof define&&define.amd?define(["jquery","./core","./widget","./position"],t):t(jQuery)}(function(t){return t.widget("ui.menu",{version:"1.11.4",defaultElement:"