From 8f3164027bd9a5d240244d8be0d2c7e83b63a674 Mon Sep 17 00:00:00 2001 From: Connor Turland Date: Sat, 22 Sep 2012 22:39:12 -0400 Subject: [PATCH] added all files --- .gitignore | 15 + Gemfile | 42 +++ Gemfile.lock | 123 +++++++++ README.rdoc | 261 ++++++++++++++++++ Rakefile | 7 + app/assets/images/action.png | Bin 0 -> 8646 bytes app/assets/images/experience.png | Bin 0 -> 8830 bytes app/assets/images/group.png | Bin 0 -> 8763 bytes app/assets/images/idea.png | Bin 0 -> 8777 bytes app/assets/images/intention.png | Bin 0 -> 9114 bytes app/assets/images/location.png | Bin 0 -> 11723 bytes app/assets/images/opinion.png | Bin 0 -> 8620 bytes app/assets/images/person.png | Bin 0 -> 8449 bytes app/assets/images/question.png | Bin 0 -> 8630 bytes app/assets/images/reference.png | Bin 0 -> 8676 bytes app/assets/images/resource.png | Bin 0 -> 8724 bytes app/assets/images/tool.png | Bin 0 -> 8408 bytes app/assets/javascripts/application.js | 19 ++ app/assets/javascripts/groups.js.coffee | 3 + app/assets/javascripts/items.js.coffee | 3 + app/assets/javascripts/main.js.coffee | 3 + app/assets/javascripts/people.js.coffee | 3 + app/assets/javascripts/sessions.js.coffee | 3 + app/assets/javascripts/users.js.coffee | 3 + app/assets/stylesheets/application.css | 58 ++++ app/assets/stylesheets/groups.css.scss | 16 ++ app/assets/stylesheets/items.css.scss | 15 + app/assets/stylesheets/main.css.scss | 3 + app/assets/stylesheets/people.css.scss | 14 + app/assets/stylesheets/sessions.css.scss | 3 + app/assets/stylesheets/users.css.scss | 3 + app/controllers/application_controller.rb | 54 ++++ app/controllers/groups_controller.rb | 77 ++++++ app/controllers/items_controller.rb | 81 ++++++ app/controllers/main_controller.rb | 13 + app/controllers/people_controller.rb | 86 ++++++ app/controllers/sessions_controller.rb | 41 +++ app/controllers/users_controller.rb | 54 ++++ app/helpers/application_helper.rb | 2 + app/helpers/groups_helper.rb | 2 + app/helpers/items_helper.rb | 2 + app/helpers/main_helper.rb | 2 + app/helpers/people_helper.rb | 2 + app/helpers/sessions_helper.rb | 2 + app/helpers/users_helper.rb | 2 + app/mailers/.gitkeep | 0 app/models/.gitkeep | 0 app/models/group.rb | 17 ++ app/models/groupgroup.rb | 7 + app/models/groupitem.rb | 7 + app/models/groupperson.rb | 7 + app/models/item.rb | 19 ++ app/models/item_category.rb | 5 + app/models/itemitem.rb | 7 + app/models/person.rb | 11 + app/models/personitem.rb | 7 + app/models/session.rb | 5 + app/models/user.rb | 25 ++ app/views/groups/_group.html.erb | 6 + app/views/groups/index.html.erb | 11 + app/views/groups/new.html.erb | 8 + app/views/groups/show.html.erb | 58 ++++ app/views/items/_item.html.erb | 6 + app/views/items/index.html.erb | 11 + app/views/items/new.html.erb | 8 + app/views/items/show.html.erb | 59 ++++ app/views/layouts/application.html.erb | 45 +++ app/views/main/home.html.erb | 9 + app/views/people/_person.html.erb | 6 + app/views/people/index.html.erb | 11 + app/views/people/new.html.erb | 8 + app/views/people/show.html.erb | 39 +++ app/views/sessions/new.html.erb | 7 + app/views/users/edit.html.erb | 0 app/views/users/new.html.erb | 10 + app/views/users/show.html.erb | 0 config.ru | 4 + config/application.rb | 59 ++++ config/boot.rb | 6 + config/database.yml | 32 +++ config/environment.rb | 5 + config/environments/development.rb | 37 +++ config/environments/production.rb | 67 +++++ config/environments/test.rb | 37 +++ config/initializers/backtrace_silencers.rb | 7 + config/initializers/inflections.rb | 15 + config/initializers/mime_types.rb | 5 + config/initializers/secret_token.rb | 7 + config/initializers/session_store.rb | 8 + config/initializers/wrap_parameters.rb | 14 + config/locales/en.yml | 5 + config/routes.rb | 68 +++++ db/migrate/20120920013446_create_users.rb | 14 + db/migrate/20120920014101_create_people.rb | 15 + db/migrate/20120920014449_create_groups.rb | 15 + db/migrate/20120920014810_create_items.rb | 15 + .../20120922070158_create_groupgroups.rb | 10 + .../20120922070346_create_grouppeople.rb | 10 + .../20120922070921_create_groupitems.rb | 10 + .../20120922071146_create_personitems.rb | 10 + db/migrate/20120922072659_create_itemitems.rb | 10 + .../20120922164150_create_item_categories.rb | 10 + db/schema.rb | 105 +++++++ db/seeds.rb | 7 + doc/README_FOR_APP | 2 + lib/assets/.gitkeep | 0 lib/tasks/.gitkeep | 0 lib/tasks/heroku.rake | 0 log/.gitkeep | 0 public/404.html | 26 ++ public/422.html | 26 ++ public/500.html | 25 ++ public/favicon.ico | 0 public/robots.txt | 5 + public/style.css | 59 ++++ script/rails | 6 + test/fixtures/.gitkeep | 0 test/fixtures/groupgroups.yml | 5 + test/fixtures/groupitems.yml | 5 + test/fixtures/grouppeople.yml | 5 + test/fixtures/groups.yml | 11 + test/fixtures/item_categories.yml | 40 +++ test/fixtures/itemitems.yml | 3 + test/fixtures/items.yml | 6 + test/fixtures/people.yml | 11 + test/fixtures/personitems.yml | 5 + test/fixtures/users.yml | 9 + test/functional/.gitkeep | 0 test/functional/groups_controller_test.rb | 7 + test/functional/items_controller_test.rb | 7 + test/functional/main_controller_test.rb | 7 + test/functional/people_controller_test.rb | 7 + test/functional/sessions_controller_test.rb | 7 + test/functional/users_controller_test.rb | 7 + test/integration/.gitkeep | 0 test/performance/browsing_test.rb | 12 + test/test_helper.rb | 13 + test/unit/.gitkeep | 0 test/unit/group_test.rb | 7 + test/unit/groupgroup_test.rb | 7 + test/unit/groupitem_test.rb | 7 + test/unit/groupperson_test.rb | 7 + test/unit/helpers/groups_helper_test.rb | 4 + test/unit/helpers/items_helper_test.rb | 4 + test/unit/helpers/main_helper_test.rb | 4 + test/unit/helpers/people_helper_test.rb | 4 + test/unit/helpers/sessions_helper_test.rb | 4 + test/unit/helpers/users_helper_test.rb | 4 + test/unit/item_category_test.rb | 7 + test/unit/item_test.rb | 7 + test/unit/itemitem_test.rb | 7 + test/unit/person_test.rb | 7 + test/unit/personitem_test.rb | 7 + test/unit/session_test.rb | 7 + test/unit/user_test.rb | 7 + vendor/assets/javascripts/.gitkeep | 0 vendor/assets/stylesheets/.gitkeep | 0 vendor/plugins/.gitkeep | 0 158 files changed, 2460 insertions(+) create mode 100644 .gitignore create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 README.rdoc create mode 100644 Rakefile create mode 100644 app/assets/images/action.png create mode 100644 app/assets/images/experience.png create mode 100644 app/assets/images/group.png create mode 100644 app/assets/images/idea.png create mode 100644 app/assets/images/intention.png create mode 100644 app/assets/images/location.png create mode 100644 app/assets/images/opinion.png create mode 100644 app/assets/images/person.png create mode 100644 app/assets/images/question.png create mode 100644 app/assets/images/reference.png create mode 100644 app/assets/images/resource.png create mode 100644 app/assets/images/tool.png create mode 100644 app/assets/javascripts/application.js create mode 100644 app/assets/javascripts/groups.js.coffee create mode 100644 app/assets/javascripts/items.js.coffee create mode 100644 app/assets/javascripts/main.js.coffee create mode 100644 app/assets/javascripts/people.js.coffee create mode 100644 app/assets/javascripts/sessions.js.coffee create mode 100644 app/assets/javascripts/users.js.coffee create mode 100644 app/assets/stylesheets/application.css create mode 100644 app/assets/stylesheets/groups.css.scss create mode 100644 app/assets/stylesheets/items.css.scss create mode 100644 app/assets/stylesheets/main.css.scss create mode 100644 app/assets/stylesheets/people.css.scss create mode 100644 app/assets/stylesheets/sessions.css.scss create mode 100644 app/assets/stylesheets/users.css.scss create mode 100644 app/controllers/application_controller.rb create mode 100644 app/controllers/groups_controller.rb create mode 100644 app/controllers/items_controller.rb create mode 100644 app/controllers/main_controller.rb create mode 100644 app/controllers/people_controller.rb create mode 100644 app/controllers/sessions_controller.rb create mode 100644 app/controllers/users_controller.rb create mode 100644 app/helpers/application_helper.rb create mode 100644 app/helpers/groups_helper.rb create mode 100644 app/helpers/items_helper.rb create mode 100644 app/helpers/main_helper.rb create mode 100644 app/helpers/people_helper.rb create mode 100644 app/helpers/sessions_helper.rb create mode 100644 app/helpers/users_helper.rb create mode 100644 app/mailers/.gitkeep create mode 100644 app/models/.gitkeep create mode 100644 app/models/group.rb create mode 100644 app/models/groupgroup.rb create mode 100644 app/models/groupitem.rb create mode 100644 app/models/groupperson.rb create mode 100644 app/models/item.rb create mode 100644 app/models/item_category.rb create mode 100644 app/models/itemitem.rb create mode 100644 app/models/person.rb create mode 100644 app/models/personitem.rb create mode 100644 app/models/session.rb create mode 100644 app/models/user.rb create mode 100644 app/views/groups/_group.html.erb create mode 100644 app/views/groups/index.html.erb create mode 100644 app/views/groups/new.html.erb create mode 100644 app/views/groups/show.html.erb create mode 100644 app/views/items/_item.html.erb create mode 100644 app/views/items/index.html.erb create mode 100644 app/views/items/new.html.erb create mode 100644 app/views/items/show.html.erb create mode 100644 app/views/layouts/application.html.erb create mode 100644 app/views/main/home.html.erb create mode 100644 app/views/people/_person.html.erb create mode 100644 app/views/people/index.html.erb create mode 100644 app/views/people/new.html.erb create mode 100644 app/views/people/show.html.erb create mode 100644 app/views/sessions/new.html.erb create mode 100644 app/views/users/edit.html.erb create mode 100644 app/views/users/new.html.erb create mode 100644 app/views/users/show.html.erb create mode 100644 config.ru create mode 100644 config/application.rb create mode 100644 config/boot.rb create mode 100644 config/database.yml create mode 100644 config/environment.rb create mode 100644 config/environments/development.rb create mode 100644 config/environments/production.rb create mode 100644 config/environments/test.rb create mode 100644 config/initializers/backtrace_silencers.rb create mode 100644 config/initializers/inflections.rb create mode 100644 config/initializers/mime_types.rb create mode 100644 config/initializers/secret_token.rb create mode 100644 config/initializers/session_store.rb create mode 100644 config/initializers/wrap_parameters.rb create mode 100644 config/locales/en.yml create mode 100644 config/routes.rb create mode 100644 db/migrate/20120920013446_create_users.rb create mode 100644 db/migrate/20120920014101_create_people.rb create mode 100644 db/migrate/20120920014449_create_groups.rb create mode 100644 db/migrate/20120920014810_create_items.rb create mode 100644 db/migrate/20120922070158_create_groupgroups.rb create mode 100644 db/migrate/20120922070346_create_grouppeople.rb create mode 100644 db/migrate/20120922070921_create_groupitems.rb create mode 100644 db/migrate/20120922071146_create_personitems.rb create mode 100644 db/migrate/20120922072659_create_itemitems.rb create mode 100644 db/migrate/20120922164150_create_item_categories.rb create mode 100644 db/schema.rb create mode 100644 db/seeds.rb create mode 100644 doc/README_FOR_APP create mode 100644 lib/assets/.gitkeep create mode 100644 lib/tasks/.gitkeep create mode 100644 lib/tasks/heroku.rake create mode 100644 log/.gitkeep create mode 100644 public/404.html create mode 100644 public/422.html create mode 100644 public/500.html create mode 100644 public/favicon.ico create mode 100644 public/robots.txt create mode 100644 public/style.css create mode 100644 script/rails create mode 100644 test/fixtures/.gitkeep create mode 100644 test/fixtures/groupgroups.yml create mode 100644 test/fixtures/groupitems.yml create mode 100644 test/fixtures/grouppeople.yml create mode 100644 test/fixtures/groups.yml create mode 100644 test/fixtures/item_categories.yml create mode 100644 test/fixtures/itemitems.yml create mode 100644 test/fixtures/items.yml create mode 100644 test/fixtures/people.yml create mode 100644 test/fixtures/personitems.yml create mode 100644 test/fixtures/users.yml create mode 100644 test/functional/.gitkeep create mode 100644 test/functional/groups_controller_test.rb create mode 100644 test/functional/items_controller_test.rb create mode 100644 test/functional/main_controller_test.rb create mode 100644 test/functional/people_controller_test.rb create mode 100644 test/functional/sessions_controller_test.rb create mode 100644 test/functional/users_controller_test.rb create mode 100644 test/integration/.gitkeep create mode 100644 test/performance/browsing_test.rb create mode 100644 test/test_helper.rb create mode 100644 test/unit/.gitkeep create mode 100644 test/unit/group_test.rb create mode 100644 test/unit/groupgroup_test.rb create mode 100644 test/unit/groupitem_test.rb create mode 100644 test/unit/groupperson_test.rb create mode 100644 test/unit/helpers/groups_helper_test.rb create mode 100644 test/unit/helpers/items_helper_test.rb create mode 100644 test/unit/helpers/main_helper_test.rb create mode 100644 test/unit/helpers/people_helper_test.rb create mode 100644 test/unit/helpers/sessions_helper_test.rb create mode 100644 test/unit/helpers/users_helper_test.rb create mode 100644 test/unit/item_category_test.rb create mode 100644 test/unit/item_test.rb create mode 100644 test/unit/itemitem_test.rb create mode 100644 test/unit/person_test.rb create mode 100644 test/unit/personitem_test.rb create mode 100644 test/unit/session_test.rb create mode 100644 test/unit/user_test.rb create mode 100644 vendor/assets/javascripts/.gitkeep create mode 100644 vendor/assets/stylesheets/.gitkeep create mode 100644 vendor/plugins/.gitkeep diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..eb3489a9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. +# +# If you find yourself ignoring temporary files generated by your text editor +# or operating system, you probably want to add a global ignore instead: +# git config --global core.excludesfile ~/.gitignore_global + +# Ignore bundler config +/.bundle + +# Ignore the default SQLite database. +/db/*.sqlite3 + +# Ignore all logfiles and tempfiles. +/log/*.log +/tmp diff --git a/Gemfile b/Gemfile new file mode 100644 index 00000000..53318cf6 --- /dev/null +++ b/Gemfile @@ -0,0 +1,42 @@ +source 'https://rubygems.org' + +gem 'rails', '3.2.1' + +# Bundle edge Rails instead: +# gem 'rails', :git => 'git://github.com/rails/rails.git' + +gem 'pg' +gem 'authlogic' +gem 'cancan' +gem 'formula' +gem 'formtastic' + + +# Gems used only for assets and not required +# in production environments by default. +group :assets do + gem 'sass-rails', '~> 3.2.3' + gem 'coffee-rails', '~> 3.2.1' + + # See https://github.com/sstephenson/execjs#readme for more supported runtimes + # gem 'therubyracer' + + gem 'uglifier', '>= 1.0.3' +end + +gem 'jquery-rails' + +# To use ActiveModel has_secure_password +# gem 'bcrypt-ruby', '~> 3.0.0' + +# To use Jbuilder templates for JSON +# gem 'jbuilder' + +# Use unicorn as the web server +# gem 'unicorn' + +# Deploy with Capistrano +# gem 'capistrano' + +# To use debugger +# gem 'ruby-debug19', :require => 'ruby-debug' diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 00000000..63866d32 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,123 @@ +GEM + remote: https://rubygems.org/ + specs: + actionmailer (3.2.1) + actionpack (= 3.2.1) + mail (~> 2.4.0) + actionpack (3.2.1) + activemodel (= 3.2.1) + activesupport (= 3.2.1) + builder (~> 3.0.0) + erubis (~> 2.7.0) + journey (~> 1.0.1) + rack (~> 1.4.0) + rack-cache (~> 1.1) + rack-test (~> 0.6.1) + sprockets (~> 2.1.2) + activemodel (3.2.1) + activesupport (= 3.2.1) + builder (~> 3.0.0) + activerecord (3.2.1) + activemodel (= 3.2.1) + activesupport (= 3.2.1) + arel (~> 3.0.0) + tzinfo (~> 0.3.29) + activeresource (3.2.1) + activemodel (= 3.2.1) + activesupport (= 3.2.1) + activesupport (3.2.1) + i18n (~> 0.6) + multi_json (~> 1.0) + arel (3.0.2) + authlogic (3.1.0) + activerecord (>= 3.0.7) + activerecord (>= 3.0.7) + builder (3.0.3) + cancan (1.6.7) + coffee-rails (3.2.2) + coffee-script (>= 2.2.0) + railties (~> 3.2.0) + coffee-script (2.2.0) + coffee-script-source + execjs + coffee-script-source (1.3.3) + erubis (2.7.0) + execjs (1.4.0) + multi_json (~> 1.0) + formtastic (2.0.2) + rails (~> 3.0) + formula (0.3.3) + rails (> 3.0.0) + hike (1.2.1) + i18n (0.6.1) + journey (1.0.4) + jquery-rails (2.1.2) + railties (>= 3.1.0, < 5.0) + thor (~> 0.14) + json (1.7.5) + mail (2.4.4) + i18n (>= 0.4.0) + mime-types (~> 1.16) + treetop (~> 1.4.8) + mime-types (1.19) + multi_json (1.3.6) + pg (0.12.2-x86-mingw32) + polyglot (0.3.3) + rack (1.4.1) + rack-cache (1.2) + rack (>= 0.4) + rack-ssl (1.3.2) + rack + rack-test (0.6.1) + rack (>= 1.0) + rails (3.2.1) + actionmailer (= 3.2.1) + actionpack (= 3.2.1) + activerecord (= 3.2.1) + activeresource (= 3.2.1) + activesupport (= 3.2.1) + bundler (~> 1.0) + railties (= 3.2.1) + railties (3.2.1) + actionpack (= 3.2.1) + activesupport (= 3.2.1) + rack-ssl (~> 1.3.2) + rake (>= 0.8.7) + rdoc (~> 3.4) + thor (~> 0.14.6) + rake (0.9.2.2) + rdoc (3.12) + json (~> 1.4) + sass (3.2.1) + sass-rails (3.2.5) + railties (~> 3.2.0) + sass (>= 3.1.10) + tilt (~> 1.3) + sprockets (2.1.3) + hike (~> 1.2) + rack (~> 1.0) + tilt (~> 1.1, != 1.3.0) + thor (0.14.6) + tilt (1.3.3) + treetop (1.4.10) + polyglot + polyglot (>= 0.3.1) + tzinfo (0.3.33) + uglifier (1.3.0) + execjs (>= 0.3.0) + multi_json (>= 1.0.2, ~> 1.0) + +PLATFORMS + x86-mingw32 + +DEPENDENCIES + authlogic + cancan + coffee-rails (~> 3.2.1) + formtastic + formula + jquery-rails + pg + rails (= 3.2.1) + sass-rails (~> 3.2.3) + uglifier (>= 1.0.3) diff --git a/README.rdoc b/README.rdoc new file mode 100644 index 00000000..7c36f235 --- /dev/null +++ b/README.rdoc @@ -0,0 +1,261 @@ +== Welcome to Rails + +Rails is a web-application framework that includes everything needed to create +database-backed web applications according to the Model-View-Control pattern. + +This pattern splits the view (also called the presentation) into "dumb" +templates that are primarily responsible for inserting pre-built data in between +HTML tags. The model contains the "smart" domain objects (such as Account, +Product, Person, Post) that holds all the business logic and knows how to +persist themselves to a database. The controller handles the incoming requests +(such as Save New Account, Update Product, Show Post) by manipulating the model +and directing data to the view. + +In Rails, the model is handled by what's called an object-relational mapping +layer entitled Active Record. This layer allows you to present the data from +database rows as objects and embellish these data objects with business logic +methods. You can read more about Active Record in +link:files/vendor/rails/activerecord/README.html. + +The controller and view are handled by the Action Pack, which handles both +layers by its two parts: Action View and Action Controller. These two layers +are bundled in a single package due to their heavy interdependence. This is +unlike the relationship between the Active Record and Action Pack that is much +more separate. Each of these packages can be used independently outside of +Rails. You can read more about Action Pack in +link:files/vendor/rails/actionpack/README.html. + + +== Getting Started + +1. At the command prompt, create a new Rails application: + rails new myapp (where myapp is the application name) + +2. Change directory to myapp and start the web server: + cd myapp; rails server (run with --help for options) + +3. Go to http://localhost:3000/ and you'll see: + "Welcome aboard: You're riding Ruby on Rails!" + +4. Follow the guidelines to start developing your application. You can find +the following resources handy: + +* The Getting Started Guide: http://guides.rubyonrails.org/getting_started.html +* Ruby on Rails Tutorial Book: http://www.railstutorial.org/ + + +== Debugging Rails + +Sometimes your application goes wrong. Fortunately there are a lot of tools that +will help you debug it and get it back on the rails. + +First area to check is the application log files. Have "tail -f" commands +running on the server.log and development.log. Rails will automatically display +debugging and runtime information to these files. Debugging info will also be +shown in the browser on requests from 127.0.0.1. + +You can also log your own messages directly into the log file from your code +using the Ruby logger class from inside your controllers. Example: + + class WeblogController < ActionController::Base + def destroy + @weblog = Weblog.find(params[:id]) + @weblog.destroy + logger.info("#{Time.now} Destroyed Weblog ID ##{@weblog.id}!") + end + end + +The result will be a message in your log file along the lines of: + + Mon Oct 08 14:22:29 +1000 2007 Destroyed Weblog ID #1! + +More information on how to use the logger is at http://www.ruby-doc.org/core/ + +Also, Ruby documentation can be found at http://www.ruby-lang.org/. There are +several books available online as well: + +* Programming Ruby: http://www.ruby-doc.org/docs/ProgrammingRuby/ (Pickaxe) +* Learn to Program: http://pine.fm/LearnToProgram/ (a beginners guide) + +These two books will bring you up to speed on the Ruby language and also on +programming in general. + + +== Debugger + +Debugger support is available through the debugger command when you start your +Mongrel or WEBrick server with --debugger. This means that you can break out of +execution at any point in the code, investigate and change the model, and then, +resume execution! You need to install ruby-debug to run the server in debugging +mode. With gems, use sudo gem install ruby-debug. Example: + + class WeblogController < ActionController::Base + def index + @posts = Post.all + debugger + end + end + +So the controller will accept the action, run the first line, then present you +with a IRB prompt in the server window. Here you can do things like: + + >> @posts.inspect + => "[#nil, "body"=>nil, "id"=>"1"}>, + #"Rails", "body"=>"Only ten..", "id"=>"2"}>]" + >> @posts.first.title = "hello from a debugger" + => "hello from a debugger" + +...and even better, you can examine how your runtime objects actually work: + + >> f = @posts.first + => #nil, "body"=>nil, "id"=>"1"}> + >> f. + Display all 152 possibilities? (y or n) + +Finally, when you're ready to resume execution, you can enter "cont". + + +== Console + +The console is a Ruby shell, which allows you to interact with your +application's domain model. Here you'll have all parts of the application +configured, just like it is when the application is running. You can inspect +domain models, change values, and save to the database. Starting the script +without arguments will launch it in the development environment. + +To start the console, run rails console from the application +directory. + +Options: + +* Passing the -s, --sandbox argument will rollback any modifications + made to the database. +* Passing an environment name as an argument will load the corresponding + environment. Example: rails console production. + +To reload your controllers and models after launching the console run +reload! + +More information about irb can be found at: +link:http://www.rubycentral.org/pickaxe/irb.html + + +== dbconsole + +You can go to the command line of your database directly through rails +dbconsole. You would be connected to the database with the credentials +defined in database.yml. Starting the script without arguments will connect you +to the development database. Passing an argument will connect you to a different +database, like rails dbconsole production. Currently works for MySQL, +PostgreSQL and SQLite 3. + +== Description of Contents + +The default directory structure of a generated Ruby on Rails application: + + |-- app + | |-- assets + | |-- images + | |-- javascripts + | `-- stylesheets + | |-- controllers + | |-- helpers + | |-- mailers + | |-- models + | `-- views + | `-- layouts + |-- config + | |-- environments + | |-- initializers + | `-- locales + |-- db + |-- doc + |-- lib + | `-- tasks + |-- log + |-- public + |-- script + |-- test + | |-- fixtures + | |-- functional + | |-- integration + | |-- performance + | `-- unit + |-- tmp + | |-- cache + | |-- pids + | |-- sessions + | `-- sockets + `-- vendor + |-- assets + `-- stylesheets + `-- plugins + +app + Holds all the code that's specific to this particular application. + +app/assets + Contains subdirectories for images, stylesheets, and JavaScript files. + +app/controllers + Holds controllers that should be named like weblogs_controller.rb for + automated URL mapping. All controllers should descend from + ApplicationController which itself descends from ActionController::Base. + +app/models + Holds models that should be named like post.rb. Models descend from + ActiveRecord::Base by default. + +app/views + Holds the template files for the view that should be named like + weblogs/index.html.erb for the WeblogsController#index action. All views use + eRuby syntax by default. + +app/views/layouts + Holds the template files for layouts to be used with views. This models the + common header/footer method of wrapping views. In your views, define a layout + using the layout :default and create a file named default.html.erb. + Inside default.html.erb, call <% yield %> to render the view using this + layout. + +app/helpers + Holds view helpers that should be named like weblogs_helper.rb. These are + generated for you automatically when using generators for controllers. + Helpers can be used to wrap functionality for your views into methods. + +config + Configuration files for the Rails environment, the routing map, the database, + and other dependencies. + +db + Contains the database schema in schema.rb. db/migrate contains all the + sequence of Migrations for your schema. + +doc + This directory is where your application documentation will be stored when + generated using rake doc:app + +lib + Application specific libraries. Basically, any kind of custom code that + doesn't belong under controllers, models, or helpers. This directory is in + the load path. + +public + The directory available for the web server. Also contains the dispatchers and the + default HTML files. This should be set as the DOCUMENT_ROOT of your web + server. + +script + Helper scripts for automation and generation. + +test + Unit and functional tests along with fixtures. When using the rails generate + command, template test files will be generated for you and placed in this + directory. + +vendor + External libraries that the application depends on. Also includes the plugins + subdirectory. If the app has frozen rails, those gems also go here, under + vendor/rails/. This directory is in the load path. diff --git a/Rakefile b/Rakefile new file mode 100644 index 00000000..b21a66b9 --- /dev/null +++ b/Rakefile @@ -0,0 +1,7 @@ +#!/usr/bin/env rake +# Add your own tasks in files placed in lib/tasks ending in .rake, +# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. + +require File.expand_path('../config/application', __FILE__) + +ISSAD::Application.load_tasks diff --git a/app/assets/images/action.png b/app/assets/images/action.png new file mode 100644 index 0000000000000000000000000000000000000000..91b6755c7a8162d67471b1cd52232cf9fa2c6a0a GIT binary patch literal 8646 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 literal 0 HcmV?d00001 diff --git a/app/assets/images/experience.png b/app/assets/images/experience.png new file mode 100644 index 0000000000000000000000000000000000000000..decf6f47cdb24f3ba9b09278100c84d2ec420898 GIT binary patch literal 8830 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 Ax&QzG literal 0 HcmV?d00001 diff --git a/app/assets/images/group.png b/app/assets/images/group.png new file mode 100644 index 0000000000000000000000000000000000000000..1557b5540196c62d5ffc51261c2bec6ab3467d11 GIT binary patch literal 8763 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 IM6N<$g3i&)G5`Po literal 0 HcmV?d00001 diff --git a/app/assets/images/reference.png b/app/assets/images/reference.png new file mode 100644 index 0000000000000000000000000000000000000000..67f23d87850af579fad63b5813a748abb87fc5e4 GIT binary patch literal 8676 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 literal 0 HcmV?d00001 diff --git a/app/assets/images/tool.png b/app/assets/images/tool.png new file mode 100644 index 0000000000000000000000000000000000000000..c4cac46352b8249da148709b99e3ebafc8d2bfff GIT binary patch literal 8408 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 'parent_group_id', :class_name => 'Groupgroup' +has_many :groupgroup_p, :foreign_key => 'group_id', :class_name => 'Groupgroup' + +has_many :grouppeople +has_many :groupitems + +has_many :child_groups, :through => :groupgroup_c, :source => :group +has_many :parent_groups, :through => :groupgroup_p, :source => :parent_group + +has_many :people, :through => :grouppeople +has_many :items, :through => :groupitems + +end diff --git a/app/models/groupgroup.rb b/app/models/groupgroup.rb new file mode 100644 index 00000000..d641f18d --- /dev/null +++ b/app/models/groupgroup.rb @@ -0,0 +1,7 @@ +class Groupgroup < ActiveRecord::Base + +belongs_to :group + +belongs_to :parent_group, :class_name => "Group", :foreign_key => "parent_group_id" + +end diff --git a/app/models/groupitem.rb b/app/models/groupitem.rb new file mode 100644 index 00000000..72b2c0e5 --- /dev/null +++ b/app/models/groupitem.rb @@ -0,0 +1,7 @@ +class Groupitem < ActiveRecord::Base + +belongs_to :group, :class_name => "Group", :foreign_key => "group_id" + +belongs_to :item, :class_name => "Item", :foreign_key => "item_id" + +end diff --git a/app/models/groupperson.rb b/app/models/groupperson.rb new file mode 100644 index 00000000..2b11c0d4 --- /dev/null +++ b/app/models/groupperson.rb @@ -0,0 +1,7 @@ +class Groupperson < ActiveRecord::Base + +belongs_to :group, :class_name => "Group", :foreign_key => "group_id" + +belongs_to :person, :class_name => "Person", :foreign_key => "person_id" + +end diff --git a/app/models/item.rb b/app/models/item.rb new file mode 100644 index 00000000..16d4a46f --- /dev/null +++ b/app/models/item.rb @@ -0,0 +1,19 @@ +class Item < ActiveRecord::Base + +belongs_to :user + +has_many :itemitem_c, :foreign_key => 'parent_item_id', :class_name => 'Itemitem' +has_many :itemitem_p, :foreign_key => 'item_id', :class_name => 'Itemitem' + +has_many :groupitems +has_many :personitems + +has_many :groups, :through => :groupitems +has_many :people, :through => :personitems + +belongs_to :item_category + +has_many :child_items, :through => :itemitem_c, :source => :item +has_many :parent_items, :through => :itemitem_p, :source => :parent_item + +end diff --git a/app/models/item_category.rb b/app/models/item_category.rb new file mode 100644 index 00000000..a2863948 --- /dev/null +++ b/app/models/item_category.rb @@ -0,0 +1,5 @@ +class ItemCategory < ActiveRecord::Base + +has_many :items + +end diff --git a/app/models/itemitem.rb b/app/models/itemitem.rb new file mode 100644 index 00000000..8d7d9fee --- /dev/null +++ b/app/models/itemitem.rb @@ -0,0 +1,7 @@ +class Itemitem < ActiveRecord::Base + +belongs_to :item + +belongs_to :parent_item, :class_name => "Item", :foreign_key => "parent_item_id" + +end diff --git a/app/models/person.rb b/app/models/person.rb new file mode 100644 index 00000000..56335233 --- /dev/null +++ b/app/models/person.rb @@ -0,0 +1,11 @@ +class Person < ActiveRecord::Base + +belongs_to :user + +has_many :grouppeople +has_many :personitems + +has_many :groups, :through => :grouppeople +has_many :items, :through => :personitems + +end diff --git a/app/models/personitem.rb b/app/models/personitem.rb new file mode 100644 index 00000000..54d96bf1 --- /dev/null +++ b/app/models/personitem.rb @@ -0,0 +1,7 @@ +class Personitem < ActiveRecord::Base + +belongs_to :person, :class_name => "Person", :foreign_key => "person_id" + +belongs_to :item, :class_name => "Item", :foreign_key => "item_id" + +end diff --git a/app/models/session.rb b/app/models/session.rb new file mode 100644 index 00000000..45ec37ba --- /dev/null +++ b/app/models/session.rb @@ -0,0 +1,5 @@ +class Session < Authlogic::Session::Base + + authenticate_with User + +end diff --git a/app/models/user.rb b/app/models/user.rb new file mode 100644 index 00000000..e10074be --- /dev/null +++ b/app/models/user.rb @@ -0,0 +1,25 @@ +require 'open-uri' + +class User < ActiveRecord::Base + +has_many :people +has_many :groups +has_many :items + + acts_as_authentic do |configuration| + configuration.session_class = Session + configuration.require_password_confirmation = false + + configuration.merge_validates_format_of_email_field_options unless: Proc.new { |user| user.email.blank? and user.authed? } + configuration.merge_validates_length_of_email_field_options unless: Proc.new { |user| user.email.blank? and user.authed? } + #configuration.merge_validates_length_of_password_field_options unless: Proc.new { |user| user.password.blank? and user.authed? } + end + + validates :password, :presence => true, + :length => {:within => 6..20}, + :on => :create + validates :password, :length => {:within => 6..20}, + :allow_blank => true, + :on => :update + +end diff --git a/app/views/groups/_group.html.erb b/app/views/groups/_group.html.erb new file mode 100644 index 00000000..0f07e4c8 --- /dev/null +++ b/app/views/groups/_group.html.erb @@ -0,0 +1,6 @@ +<%= div_for group do %> + <%= image_tag "group.png", :class => 'icon' %> + <%= link_to group.name, group_url(group), :class => 'title' %> +

About

<%= group.desc %>
+ <%= link_to group.link, group.link, :class => 'link' %> +<% end %> \ No newline at end of file diff --git a/app/views/groups/index.html.erb b/app/views/groups/index.html.erb new file mode 100644 index 00000000..e8082caa --- /dev/null +++ b/app/views/groups/index.html.erb @@ -0,0 +1,11 @@ +

Groups

+ +
+ <% @groups.each do |group| %> + <%= render group %> + <% end %> + <% if @groups.empty? %> +


Shucks, there are no groups.

+ <% end %> +

+
diff --git a/app/views/groups/new.html.erb b/app/views/groups/new.html.erb new file mode 100644 index 00000000..787b9eb2 --- /dev/null +++ b/app/views/groups/new.html.erb @@ -0,0 +1,8 @@ +<%= form_for @group || Group.new, url: groups_path do |form| %> + + <%= form.text_field :name, label: "Name", class: "name" %> + <%= form.text_field :desc, label: "Description", class: "description" %> + <%= form.text_field :link, label: "Link", class: "link" %> + <%= form.submit "Add Group", class: "add" %> + +<% end %> \ No newline at end of file diff --git a/app/views/groups/show.html.erb b/app/views/groups/show.html.erb new file mode 100644 index 00000000..eb25f2bf --- /dev/null +++ b/app/views/groups/show.html.erb @@ -0,0 +1,58 @@ +
+
+

Group

+ <%= image_tag "group.png", :class => 'icon' %> +
+
+

<%= @group.name %>

+
+

About

+

<%= @group.desc %>

+
+
+
+

Link

+ <%= link_to @group.link, @group.link, :class => 'link' %> +
+
+
+ +
+ <% @gparents.each do |group| %> + <%= render group %> + <% end %> + <% if @gparents.empty? %> +


Shucks, there are no groups.

+ <% end %> +

+
+ +
+ <% @gchildren.each do |group| %> + <%= render group %> + <% end %> + <% if @gchildren.empty? %> +


Shucks, there are no groups.

+ <% end %> +

+
+ +
+ <% @pchildren.each do |people| %> + <%= render people %> + <% end %> + <% if @pchildren.empty? %> +


Shucks, there are no people.

+ <% end %> +

+
+ +
+ <% @ichildren.each do |item| %> + <%= render item %> + <% end %> + <% if @ichildren.empty? %> +


Shucks, there are no items.

+ <% end %> +

+
\ No newline at end of file diff --git a/app/views/items/_item.html.erb b/app/views/items/_item.html.erb new file mode 100644 index 00000000..91fa231b --- /dev/null +++ b/app/views/items/_item.html.erb @@ -0,0 +1,6 @@ +<%= div_for item do %> + <%= image_tag item.item_category.icon, :class => 'icon' %> + <%= link_to item.name, item_url(item), :class => 'title' %> +

About

<%=item.desc %>
+ <%= link_to item.link, item.link, :class => 'link' %> +<% end %> \ No newline at end of file diff --git a/app/views/items/index.html.erb b/app/views/items/index.html.erb new file mode 100644 index 00000000..570e2198 --- /dev/null +++ b/app/views/items/index.html.erb @@ -0,0 +1,11 @@ +

Items

+ +
+ <% @items.each do |item| %> + <%= render item %> + <% end %> + <% if @items.empty? %> +


Shucks, there are no items.

+ <% end %> +

+
diff --git a/app/views/items/new.html.erb b/app/views/items/new.html.erb new file mode 100644 index 00000000..51a76af8 --- /dev/null +++ b/app/views/items/new.html.erb @@ -0,0 +1,8 @@ +<%= form_for @item || Item.new, url: items_path do |form| %> + <%= select_tag "category", options_from_collection_for_select(ItemCategory.all, "id", "name") %> + <%= form.text_field :name, label: "Name", class: "name" %> + <%= form.text_field :desc, label: "Description", class: "description" %> + <%= form.text_field :link, label: "Link", class: "link" %> + <%= form.submit "Add Item", class: "add" %> + +<% end %> \ No newline at end of file diff --git a/app/views/items/show.html.erb b/app/views/items/show.html.erb new file mode 100644 index 00000000..62ef5ed0 --- /dev/null +++ b/app/views/items/show.html.erb @@ -0,0 +1,59 @@ +
+ +
+

<%= @item.item_category.name %>

+ <%= image_tag @item.item_category.icon, :class => 'icon' %> +
+
+

<%= @item.name %>

+
+

About

+

<%= @item.desc %>

+
+
+
+

Link

+ <%= link_to @item.link, @item.link, :class => 'link' %> +
+
+
+ +
+ <% @gparents.each do |group| %> + <%= render group %> + <% end %> + <% if @gparents.empty? %> +


Shucks, there are no groups.

+ <% end %> +

+
+ +
+ <% @pparents.each do |person| %> + <%= render person %> + <% end %> + <% if @pparents.empty? %> +


Shucks, there are no people.

+ <% end %> +

+
+ +
+ <% @iparents.each do |item| %> + <%= render item %> + <% end %> + <% if @iparents.empty? %> +


Shucks, there are no items.

+ <% end %> +

+
+ +
+ <% @ichildren.each do |item| %> + <%= render item %> + <% end %> + <% if @ichildren.empty? %> +


Shucks, there are no items.

+ <% end %> +

+
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb new file mode 100644 index 00000000..d5d070fb --- /dev/null +++ b/app/views/layouts/application.html.erb @@ -0,0 +1,45 @@ + + + + ISSAD + <%= stylesheet_link_tag "application", :media => "all" %> + <%= stylesheet_link_tag 'style.css' %> + <%= javascript_include_tag "application" %> + <%= csrf_meta_tags %> + + + <%= content_tag :div, class: authenticated? ? "main authenticated" : "main unauthenticated" do %> + +
+

<%= link_to "ISSAD", root_path %>

 beta + <% unless authenticated? %> +
    +
  • <%= link_to "Login", new_session_path, id: "Login" %>
  • +
+ <% end %> + <% if authenticated? %> +
    +
  • <%= link_to "Logout", session_path, method: 'delete', id: "Login" %>
  • +
  • <%= link_to "New Item", new_item_path %>
  • +
  • <%= link_to "Items", items_path %>
  • +
  • <%= link_to "New Person", new_person_path %>
  • +
  • <%= link_to "People", people_path %>
  • +
  • <%= link_to "New Group", new_group_path %>
  • +
  • <%= link_to "Groups", groups_path %>
  • +
+ <% end %> +
+
+
+ <%= yield %> +
+ +