wheels 0.1.13 → 0.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.13
1
+ 0.1.14
@@ -1,4 +1,5 @@
1
1
  class ApplicationController < ActionController::Base
2
+ include InheritedResources::DSL
2
3
  protect_from_forgery
3
4
  def include_jqueryui
4
5
  content_for :head do
@@ -9,8 +9,11 @@ class UsersController < InheritedResources::Base
9
9
  end
10
10
 
11
11
  def update
12
+ resource
13
+
14
+
12
15
  update! do |success, failure|
13
- failure.html{redirect_to "/change_password"}
16
+ failure.html{redirect_to my_account_path}
14
17
  success.html{flash[:notice] = "Your password has been updated."; redirect_to root_url}
15
18
  end
16
19
  end
@@ -9,6 +9,58 @@ module ApplicationHelper
9
9
  content_tag(:li, content_tag(:a, content_tag(:span, name, :class=>name.underscore), :href=>url), :class=>_class)
10
10
  end
11
11
 
12
+ # def your_basic_form(object, *options)
13
+ # if object.methods.include? :form_fields then options = object.form_fields.merge(options)
14
+ # options[:submit] ||= ""
15
+ # concat(capture do
16
+ # content_tag('div',
17
+ # form_for(object, remote=>options[:remote]|| false) {|f|
18
+ # if object.errors.any?
19
+ # content_tag('div',
20
+ # content_tag('h2', "#{pluralize(resource.errors.count, "error")} prohibited this change:") +
21
+ # content_tag('ul',
22
+ # resource.errors.full_messages.map{|msg| content_tag('li', msg)}.join('\n')
23
+ # )
24
+ # , :id=>'errorExplanation' )
25
+ # end
26
+ # options.except(:remote).each do |key, value|
27
+ # form_field(key, value, f)
28
+ # end
29
+ # },
30
+ # :class=>'form')
31
+ # end)
32
+ # end
33
+
34
+ # def form_field(key, value, form_helper)
35
+ # capture do
36
+ # if value.is_a?(Hash) || (value.is_a? Symbol && value.to_s.ends_with('_attributes')) # This means it's a field group.
37
+ # content_tag('div',
38
+ # content_tag('div', key.to_s, :class=>'fieldGroupTitle') +
39
+ # value.is_a?(Hash) ?
40
+ # value.map{|t,u| form_field(t,u)}.join('\n') :
41
+ # basic_fields_for(key, value, form_helper),
42
+ # :class=>'fieldGroup')
43
+ # else
44
+ # content_tag('div',
45
+ # content_tag('div',
46
+ # form_helper.label(key),
47
+ # :class=>'fieldName') +
48
+ # content_tag('div',
49
+ # form_helper.send(value, key),
50
+ # :class=>'fieldValue'),
51
+ # :class=>'field')
52
+ # end
53
+ # end
54
+ # end
55
+
56
+ # def basic_fields_for(key, value, form_helper)
57
+ # capture do
58
+ # form_helper.fields_for value.to_s.gsub(/_attributes/, '').to_sym{|f|
59
+
60
+ # }
61
+ # end
62
+ # end
63
+
12
64
  def sidebar_content(&block)
13
65
  @sidebar = true
14
66
  content_for(:sidebar) do
@@ -89,17 +89,11 @@ class AccessControlEntry < ActiveRecord::Base
89
89
  end
90
90
 
91
91
  def role=(role)
92
- unless role.empty?
93
- if role.kind_of? Role
94
- self.role_id = role.id
95
- else
96
- role = role.to_s.camelize
97
- if role.is_numeric?
98
- self.role_id= role
99
- else
100
- self.role_id= Role.find_by_name(role).id
101
- end
102
- end
92
+ if role.kind_of? Role
93
+ self.role_id = role.id
94
+ else
95
+ role = role.to_s.camelize
96
+ self.role_id = (role.is_numeric? ? role : Role.find_by_name(role).id) unless role.empty?
103
97
  end
104
98
  end
105
99
 
@@ -8,5 +8,6 @@ class Profile < ActiveRecord::Base
8
8
  :path => "/:style/:filename",
9
9
  :styles => { :medium => "300x300>", :thumb => "100x100>" }
10
10
 
11
+
11
12
  end
12
13
 
data/app/models/user.rb CHANGED
@@ -4,12 +4,15 @@ class User < ActiveRecord::Base
4
4
  has_one :profile, :dependent => :destroy
5
5
  has_many :galleries, :dependent => :destroy
6
6
  has_many :access_control_entries, :dependent=>:destroy
7
+ before_create :create_profile
8
+
9
+ form_attributes( {"Edit your profile" => :profile_attributes},
10
+ {"Change your password" => [:old_password, :new_password, {"Re-type password"=>:password_confirmation}]})
7
11
 
8
12
  accepts_nested_attributes_for :profile
9
13
 
10
14
  def initialize(*args)
11
15
  super(*args)
12
- build_profile unless profile
13
16
  end
14
17
 
15
18
  def self.nobody
@@ -21,8 +24,10 @@ class User < ActiveRecord::Base
21
24
  end
22
25
 
23
26
  def create_profile
24
-
25
- Profile.create(:user=>self) unless self.profile
27
+ unless self.profile
28
+ build_profile(:alias=>email)
29
+ profile.save
30
+ end
26
31
  end
27
32
 
28
33
  def role?(role)
@@ -63,7 +68,8 @@ class FullyValidatedUser < User
63
68
  attr_accessor :old_password
64
69
  validates :email, :presence => true, :email => true
65
70
  validates :old_password, :presence=>true , :password=>true
66
- validates :password, :presence=>true , :length=>{:minimum=>6}
71
+ validates :password, :length=>{:minimum=>6}
67
72
  validates :password_confirmation, :equal_to=>{:other=>:password}
73
+ validates :phone, :phone=>true
68
74
  end
69
75
 
@@ -8,15 +8,39 @@
8
8
  %ul
9
9
  - resource.errors.full_messages.each do |msg|
10
10
  %li= msg
11
+
12
+ .fieldGroup
13
+ .fieldGroupTitle Edit your personal info
14
+ = f.fields_for :profile do |pf|
15
+ .field
16
+ .fieldName= pf.label :first_name
17
+ .fieldValue= pf.text_field :first_name
18
+ .field
19
+ .fieldName= pf.label :last_name
20
+ .fieldValue= pf.text_field :last_name
21
+ .field
22
+ .fieldName= f.label :email
23
+ .fieldValue= f.text_field :email
24
+ .field
25
+ .fieldName= pf.label :phone
26
+ .fieldValue= pf.text_field :phone
27
+ .field
28
+ .fieldName= label_tag "Company / Organization"
29
+ .fieldValue= pf.text_field :company
30
+ .field
31
+ .fieldName= pf.label :position
32
+ .fieldValue= pf.text_field :position
33
+ .fieldGroup
34
+ .fieldGroupTitle Change your password
11
35
  .field
12
- .fieldName Old Password:
13
- = f.password_field :old_password, :id=>"old_password"
36
+ .fieldName= label_tag "Old Password:"
37
+ .fieldValue= f.password_field :old_password, :id=>"old_password"
14
38
  .field
15
- .fieldName New Password:
16
- = f.password_field :password, :id=>"password"
39
+ .fieldName= label_tag "New Password:"
40
+ .fieldValue= f.password_field :password, :id=>"password"
17
41
  .field
18
- .fieldName Confirm Password:
19
- = f.password_field :password_confirmation
42
+ .fieldName= label_tag "Confirm Password:"
43
+ .fieldalue= f.password_field :password_confirmation
20
44
  .submit= f.submit "Change Password"
21
45
 
22
46
  :css
@@ -25,19 +49,12 @@
25
49
  }
26
50
 
27
51
  = content_for :head do
28
- = javascript_include_tag 'jquery.validate'
52
+ = javascript_include_tag %w(jquery.validate jquery-validate/extra-methods.js)
29
53
 
30
54
 
31
55
  :javascript
32
56
  var checkingPassword = true;
33
57
  $(function(){
34
- jQuery.validator.addMethod("verify_user", function(value, element, params) {
35
- //alert($(element).attr('data-verify-user-path'));
36
- return $.ajax({
37
- async: false,
38
- url: $(element).attr('data-verify-user-path')+ '?password='+value
39
- }).responseText == "true";
40
- }, "Password is incorrect.");
41
58
 
42
59
  $('form').validate({onkeyup: function(element) {}});
43
60
  $('#old_password').rules("add", {verify_user : true, alphanumeric: true})
@@ -1,44 +1,14 @@
1
1
  module Wheels
2
2
  module ActiveRecordExtensions
3
- def commentable_tags
3
+ def form_attributes(attrib={}, options={})
4
+ @form_attributes = attrib
4
5
  class_eval do
5
- after_save.reject! {|callback| callback.method.to_s == 'save_tags' }
6
-
7
- def save_commentable_tags
8
- tagging_contexts.each do |context|
9
- next unless tag_list_cache_set_on(context)
10
-
11
- tag_list = tag_list_cache_on(context).uniq
12
-
13
- # Do it normal like, but get the taggings, too.
14
-
15
-
16
- # Find existing tags or create non-existing tags:
17
- tag_list = ActsAsTaggableOn::Tag.find_or_create_all_with_like_by_name(tag_list)
18
-
19
- current_tags = tags_on(context)
20
- old_tags = current_tags - tag_list
21
- new_tags = tag_list - current_tags
22
-
23
- # Find taggings to remove:
24
- old_taggings = taggings.where(:tagger_type => nil, :tagger_id => nil,
25
- :context => context.to_s, :tag_id => old_tags).all
26
-
27
- if old_taggings.present?
28
- # Destroy old taggings:
29
- ActsAsTaggableOn::Tagging.destroy_all :id => old_taggings.map(&:id)
30
- end
31
-
32
- # Create new taggings:
33
- new_tags.each do |tag|
34
- taggings.create!(:tag_id => tag.id, :context => context.to_s, :taggable => self)
35
- end
36
- end
6
+ def form_fields
7
+ self.class.instance_variable_get('@form_attributes')
37
8
  end
38
- after_save :save_commentable_tags
39
-
40
9
  end
41
10
  end
42
11
  end
43
12
  end
13
+ ActiveRecord::Base.extend Wheels::ActiveRecordExtensions
44
14
 
@@ -0,0 +1,49 @@
1
+ require 'action_view'
2
+
3
+ class HtmlWriter
4
+ include ActionView::Helpers::TagHelper
5
+
6
+ def initialize(representation={})
7
+ @representation = representation
8
+ end
9
+
10
+ # Wanna be able to do:
11
+ # HtmlWriter.new.div.div(:id=>:nice, :cool=>:bar).a('Cool', :href=>'http://...')
12
+ HtmlWriter.new.div[:fieldName].div.id('nice') {|h|
13
+ h.div(@page.comments) {|ht, comment|
14
+ ht.div
15
+
16
+ }
17
+ }
18
+
19
+ def method_missing(sym, *args, &block)
20
+ if args[0].is_a? Array
21
+ # Then the first argument is an array of objects.
22
+ end
23
+ @representation[sym] = {:args=>args[0]}
24
+ if block_given?
25
+ block.call(self)
26
+ end
27
+ return HtmlWriter.new(@representation[sym])
28
+ end
29
+
30
+ def val(value)
31
+ @representation[:value] = value
32
+ return self
33
+ end
34
+
35
+ def [](html_class)
36
+ @representation[:args][:class] = html_class.to_s
37
+ return self
38
+ end
39
+
40
+ def id(_id)
41
+ @representation[:args][:class] = _id.to_s
42
+ end
43
+
44
+ def html
45
+ concat
46
+
47
+ end
48
+ end
49
+
data/lib/wheels/routes.rb CHANGED
@@ -49,7 +49,7 @@ module ActionDispatch::Routing
49
49
 
50
50
  match '/css' => 'app_configs#css'
51
51
  match '/admin' => "sitemaps#index"
52
- match "change_password" => "users#edit"
52
+ match "my_account" => "users#edit"
53
53
  match "verify_password" => "users#verify", :format=>:json
54
54
  end
55
55
  end
data/lib/wheels.rb CHANGED
@@ -2,6 +2,7 @@ require 'wheels/wheels_engine.rb'
2
2
  require 'wheels/routes.rb'
3
3
  require 'wheels/action_controller_extensions.rb'
4
4
  require 'wheels/action_view_helper_extensions.rb'
5
+ require 'wheels/active_record_extensions.rb'
5
6
  require 'wheels/flash_session_cookie_middleware.rb'
6
7
  require 'wheels/paperclip_interpolations.rb'
7
8
  require 'wheels/password_validators.rb'
data/wheels.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{wheels}
8
- s.version = "0.1.13"
8
+ s.version = "0.1.14"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Tyler Gannon"]
12
- s.date = %q{2010-09-13}
12
+ s.date = %q{2010-09-16}
13
13
  s.description = %q{Call rails generate wheels.}
14
14
  s.email = %q{tgannon@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -291,6 +291,7 @@ Gem::Specification.new do |s|
291
291
  "lib/wheels/active_record_extensions.rb",
292
292
  "lib/wheels/active_record_user_extensions.rb",
293
293
  "lib/wheels/flash_session_cookie_middleware.rb",
294
+ "lib/wheels/html_writer.rb",
294
295
  "lib/wheels/paperclip_interpolations.rb",
295
296
  "lib/wheels/password_validators.rb",
296
297
  "lib/wheels/routes.rb",
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 13
9
- version: 0.1.13
8
+ - 14
9
+ version: 0.1.14
10
10
  platform: ruby
11
11
  authors:
12
12
  - Tyler Gannon
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-09-13 00:00:00 -07:00
17
+ date: 2010-09-16 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -314,6 +314,7 @@ files:
314
314
  - lib/wheels/active_record_extensions.rb
315
315
  - lib/wheels/active_record_user_extensions.rb
316
316
  - lib/wheels/flash_session_cookie_middleware.rb
317
+ - lib/wheels/html_writer.rb
317
318
  - lib/wheels/paperclip_interpolations.rb
318
319
  - lib/wheels/password_validators.rb
319
320
  - lib/wheels/routes.rb