Skip to content

Commit

Permalink
Users can have accounts
Browse files Browse the repository at this point in the history
  • Loading branch information
elizabrock committed Feb 21, 2010
1 parent 686d750 commit 3d6534e
Show file tree
Hide file tree
Showing 73 changed files with 1,729 additions and 136 deletions.
19 changes: 9 additions & 10 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
# Edit this Gemfile to bundle your application's dependencies.
source 'http://gemcutter.org'

gem "activesupport", "3.0.0.beta"

gem "rails", "3.0.0.beta"

## Bundle edge rails:
# gem "rails", :git => "git://github.com/rails/rails.git"
gem "rails", :git => "git://github.com/rails/rails.git"
# gem "rails", "3.0.0.beta"

gem "haml"
gem "andand"
gem "mysql"

gem 'warden'
gem 'devise', "1.1.pre2"
gem "bcrypt-ruby"


# group :test do
# git "git://github.com/thoughtbot/shoulda.git", :branch =>"rails3"
# gem "shoulda"
# end
group :test do
git "git://github.com/thoughtbot/shoulda.git", :branch =>"rails3"
gem "shoulda"
end
1 change: 1 addition & 0 deletions app/controllers/application_controller.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
class ApplicationController < ActionController::Base
protect_from_forgery
layout "iPhone"
end
2 changes: 2 additions & 0 deletions app/controllers/goals_controller.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
class GoalsController < ApplicationController
before_filter :authenticate_user!

# GET /goals
# GET /goals.xml
def index
Expand Down
8 changes: 8 additions & 0 deletions app/helpers/application_helper.rb
Original file line number Diff line number Diff line change
@@ -1,2 +1,10 @@
module ApplicationHelper

def iphone_error_messages_for(f)
message = f.error_messages :header_tag => 'span', :header_message => raw("<span class='header'>There was a problem:</span>"), :message => ''
unless message.blank?
contents = content_tag(:li, message, :class => 'textbox')
content_tag(:ul, contents, :class => 'pageitem')
end
end
end
2 changes: 0 additions & 2 deletions app/helpers/goals_helper.rb

This file was deleted.

5 changes: 5 additions & 0 deletions app/models/user.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class User < ActiveRecord::Base
devise :authenticatable, :confirmable, :recoverable, :rememberable, :registerable, :trackable, :validatable

attr_accessible :email, :password, :password_confirmation
end
27 changes: 13 additions & 14 deletions app/views/goals/_form.html.haml
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
- form_for(@goal) do |f|
= f.error_messages

.field
= f.label :description
%br
= f.text_field :description
.field
= f.label :completed_at
%br
= f.datetime_select :completed_at
.field
= f.label :parent_goal
%br
= f.text_field :parent_goal
%ul.pageitem
%li.bigfield
= f.text_field :description, :placeholder=>"Description"
%li.button
= f.submit
/ .field
/ = f.label :completed
/ %br
/ = f.datetime_select :completed_at
/ .field
/ = f.label :parent_goal_id
/ %br
/ = f.text_field :parent_goal_id
.actions
= f.submit
2 changes: 2 additions & 0 deletions app/views/goals/edit.html.haml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
-content_for :header, @goal.description

%h1 Editing goal

= render 'form'
Expand Down
52 changes: 32 additions & 20 deletions app/views/goals/index.html.haml
Original file line number Diff line number Diff line change
@@ -1,22 +1,34 @@
%h1 Listing goals
- content_for :body_class, ''

%table
%thead
%tr
%th Description
%th Completed at
%th Parent goal
%th{ :colspan => 3 }

%tbody
- for goal in @goals
%tr{ :class => cycle(:odd, :even) }
%td= goal.description
%td= goal.completed_at
%td= goal.parent_goal
%td= link_to 'Show', goal
%td= link_to 'Edit', edit_goal_path(goal)
%td= link_to 'Destroy', goal, :confirm => 'Are you sure?', :method => :delete
%span.graytitle
Goals
%ul.pageitem
- for goal in @goals
%li.store
-link_to goal do
%span.image
%span.comment
comment
%span.name
= goal.description
%span.stars4
%span.starcomment
98% done
%span.arrow
%span.graytitle
You can finish these right now!
%ul.pageitem
- for goal in @goals
%li.menu
-link_to goal do
%span.name
= goal.description
%span.arrow
/ %tr{ :class => cycle(:odd, :even) }
/ %td= goal.description
/ %td= goal.completed_at
/ %td= goal.parent_goal
/ %td= link_to 'Show', goal
/ %td= link_to 'Edit', edit_goal_path(goal)
/ %td= link_to 'Destroy', goal, :confirm => 'Are you sure?', :method => :delete
%br
= link_to 'New goal', new_goal_path
3 changes: 1 addition & 2 deletions app/views/goals/new.html.haml
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
%h1 New goal
-content_for :header, "New Goal"

= render 'form'

= link_to 'Back', goals_path
38 changes: 27 additions & 11 deletions app/views/goals/show.html.haml
Original file line number Diff line number Diff line change
@@ -1,11 +1,27 @@
%p
%strong Description:
= @goal.description
%p
%strong Completed at:
= @goal.completed_at
%p
%strong Parent goal:
= @goal.parent_goal

== #{ link_to 'Edit', edit_goal_path(@goal) } | #{ link_to 'Back', goals_path }
-content_for :header, @goal.description

-content_for :breadcrumb, link_to(@goal.parent_goal, :show => @goal.parent_goal)

%ul.pageitem
%li.store
%span.image
%span.comment
comment
%span.name
= @goal.description
%span.stars4
%span.starcomment
98% done

=@goal.completed_at

%br
%span.graytitle
Progress

%br

Child goals here...

%br
== #{ link_to 'Edit', edit_goal_path(@goal) }
12 changes: 0 additions & 12 deletions app/views/layouts/goals.html.haml

This file was deleted.

33 changes: 33 additions & 0 deletions app/views/layouts/iPhone.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
!!! Strict
%html{ :xmlns => "http://www.w3.org/1999/xhtml" }
%head
%title== Goals: #{ controller.action_name }
%meta{ :name => "apple-mobile-web-app-capable", :content => "yes" }
%meta{ :content => "text/html; charset=iso-8859-1", "http-equiv" => "Content-Type" }
%meta{ :name => "viewport", :content => "minimum-scale=1.0, width=device-width, maximum-scale=0.6667, user-scalable=no" }

= stylesheet_link_tag 'iWebKit/style.css'
= javascript_include_tag 'iWebKit/functions.js' #:defaults
= csrf_meta_tag
%meta{ :name => "keywords", :content => "keyword1,keyword2,keyword3" }
%meta{ :name => "description", :content => "Description of your page" }

%body{:class=>((content_for? :body_class)? yield(:body_class) : '')}
#topbar
#title
= (content_for? :header)? yield(:header) : "FuturePerfect"
#leftnav
= #link_to image_tag("iWebKit/home.png", :alt => "Home"), {:controller => "goals", :action => "index"}
= #link_to "P1 Goal", :action => "index"
= #link_to "P2 Goal", :action => "index"
#rightbutton
=link_to "+", :action => "new"
#content
%ul.pageitem
%li.textbox
%p.notice= notice
=yield

#footer
%a.noeffect{ :href => "http://iwebkit.net" }
Powered by iWebKit
9 changes: 7 additions & 2 deletions config/application.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

require 'rails/all'

# Auto-require default libraries and those for the current Rails environment.
Bundler.require :default, Rails.env
# Auto-require default libraries
Bundler.require :default

module FuturePerfect
class Application < Rails::Application
Expand Down Expand Up @@ -38,5 +38,10 @@ class Application < Rails::Application

# Configure sensitive parameters which will be filtered from the log file.
config.filter_parameters << :password
config.filter_parameters << :password_confirmation
end
end

# Auto-require the libraries the current Rails environment.
# This fixes a problem with shoulda trying to access things in before they are loaded.
Bundler.require Rails.env
2 changes: 1 addition & 1 deletion config/environment.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
require File.expand_path('../application', __FILE__)

# Initialize the rails application
FuturePerfect::Application.initialize!
FuturePerfect::Application.initialize!
1 change: 1 addition & 0 deletions config/environments/development.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,5 @@

# Don't care if the mailer can't send
config.action_mailer.raise_delivery_errors = false
config.action_mailer.default_url_options = { :host => 'futureperfect.local' }
end
102 changes: 102 additions & 0 deletions config/initializers/devise.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
# Use this hook to configure devise mailer, warden hooks and so forth. The first
# four configuration values can also be set straight in your models.
Devise.setup do |config|
# Configure the e-mail address which will be shown in DeviseMailer.
config.mailer_sender = "elizabrock@gmail.com"

# ==> Configuration for :authenticatable
# Invoke `rake secret` and use the printed value to setup a pepper to generate
# the encrypted password. By default no pepper is used.
config.pepper = "f9a5abbd837e836b607c40150756fa0ec1ff7ef83034ac4a08e807745a5e7d81becf60149b98fba7686132197b91410a1027c3b5784e77c5524dcc086a5fde1e"

# Configure how many times you want the password is reencrypted. Default is 10.
# config.stretches = 10

# Define which will be the encryption algorithm. Supported algorithms are :sha1
# (default), :sha512 and :bcrypt. Devise also supports encryptors from others
# authentication tools as :clearance_sha1, :authlogic_sha512 (then you should set
# stretches above to 20 for default behavior) and :restful_authentication_sha1
# (then you should set stretches to 10, and copy REST_AUTH_SITE_KEY to pepper)
config.encryptor = :bcrypt

# Configure which keys are used when authenticating an user. By default is
# just :email. You can configure it to use [:username, :subdomain], so for
# authenticating an user, both parameters are required. Remember that those
# parameters are used only when authenticating and not when retrieving from
# session. If you need permissions, you should implement that in a before filter.
# config.authentication_keys = [ :email ]

# The realm used in Http Basic Authentication
# config.http_authentication_realm = "Application"

# ==> Configuration for :confirmable
# The time you want give to your user to confirm his account. During this time
# he will be able to access your application without confirming. Default is nil.
config.confirm_within = 2.days

# ==> Configuration for :rememberable
# The time the user will be remembered without asking for credentials again.
config.remember_for = 4.weeks

# ==> Configuration for :timeoutable
# The time you want to timeout the user session without activity. After this
# time the user will be asked for credentials again.
# config.timeout_in = 10.minutes

# ==> Configuration for :lockable
# Number of authentication tries before locking an account.
# config.maximum_attempts = 20

# Defines which strategy will be used to unlock an account.
# :email = Sends an unlock link to the user email
# :time = Reanables login after a certain ammount of time (see :unlock_in below)
# :both = enables both strategies
# config.unlock_strategy = :both

# Time interval to unlock the account if :time is enabled as unlock_strategy.
# config.unlock_in = 1.hour

# ==> Configuration for :token_authenticatable
# Defines name of the authentication token params key
# config.token_authentication_key = :auth_token

# ==> General configuration
# Load and configure the ORM. Supports :active_record (default), :mongo_mapper
# (requires mongo_ext installed) and :data_mapper (experimental).
# require 'devise/orm/mongo_mapper'
# config.orm = :mongo_mapper

# Turn scoped views on. Before rendering "sessions/new", it will first check for
# "sessions/users/new". It's turned off by default because it's slower if you
# are using only default views.
# config.scoped_views = true

# By default, devise detects the role accessed based on the url. So whenever
# accessing "/users/sign_in", it knows you are accessing an User. This makes
# routes as "/sign_in" not possible, unless you tell Devise to use the default
# scope, setting true below.
# config.use_default_scope = true

# Configure the default scope used by Devise. By default it's the first devise
# role declared in your routes.
# config.default_scope = :user

# If you want to use other strategies, that are not (yet) supported by Devise,
# you can configure them inside the config.warden block. The example below
# allows you to setup OAuth, using http://github.com/roman/warden_oauth
#
# config.warden do |manager|
# manager.oauth(:twitter) do |twitter|
# twitter.consumer_secret = <YOUR CONSUMER SECRET>
# twitter.consumer_key = <YOUR CONSUMER KEY>
# twitter.options :site => 'http://twitter.com'
# end
# manager.default_strategies.unshift :twitter_oauth
# end

# Configure default_url_options if you are using dynamic segments in :path_prefix
# for devise_for.
# config.default_url_options do
# { :locale => I18n.locale }
# end
end
2 changes: 2 additions & 0 deletions config/initializers/errors.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ActionView::Base.field_error_proc = Proc.new {|html_tag, instance|
"<span class='field-with-errors'>#{html_tag}</span>".html_safe }
Loading

0 comments on commit 3d6534e

Please sign in to comment.