hobo 0.8.7 → 0.8.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -102,6 +102,10 @@ module Hobo
102
102
  options[:state_field]
103
103
  end
104
104
 
105
+ def self.key_timeout
106
+ options[:key_timeout]
107
+ end
108
+
105
109
 
106
110
  # --- Instance Features --- #
107
111
 
@@ -192,6 +196,9 @@ module Hobo
192
196
  record.class::Lifecycle.options[:key_timestamp_field]
193
197
  end
194
198
 
199
+ def key_timeout
200
+ record.class::Lifecycle.options[:key_timeout]
201
+ end
195
202
 
196
203
  def generate_key
197
204
  if Time.zone.nil?
@@ -212,10 +219,14 @@ module Hobo
212
219
  end
213
220
  end
214
221
 
215
- def valid_key?
216
- provided_key && provided_key == key
222
+ def key_expired?
223
+ timestamp = record.read_attribute(key_timestamp_field)
224
+ timestamp.nil? || (timestamp.getutc + key_timeout < Time.now.utc)
217
225
  end
218
226
 
227
+ def valid_key?
228
+ provided_key && provided_key == key && !key_expired?
229
+ end
219
230
 
220
231
  def invariants_satisfied?
221
232
  self.class.invariants.all? { |i| record.instance_eval(&i) }
@@ -134,6 +134,8 @@ module Hobo
134
134
 
135
135
 
136
136
  module ClassMethods
137
+ require 'active_record/viewhints_validations_interceptor'
138
+ include Hobo::ViewHintsValidationsInterceptor
137
139
 
138
140
  attr_accessor :creator_attribute
139
141
  attr_writer :name_attribute, :primary_content_attribute
@@ -484,7 +486,12 @@ module Hobo
484
486
 
485
487
  elsif field_type <= Time || field_type <= ActiveSupport::TimeWithZone
486
488
  if value.is_a? Hash
487
- Time.local(*(%w{year month day hour minute}.map{|s| value[s].to_i}))
489
+ parts = %w{year month day hour minute second}.map{|s| value[s].to_i}
490
+ if parts[0..2].include?(0)
491
+ nil
492
+ else
493
+ Time.local(*parts)
494
+ end
488
495
  else
489
496
  value
490
497
  end
@@ -401,6 +401,8 @@ module Hobo
401
401
  if o
402
402
  url = if o.is_a?(Symbol)
403
403
  object_url(this, o)
404
+ elsif o.is_a?(String) || o.is_a?(Hash)
405
+ o
404
406
  else
405
407
  object_url(*Array(o))
406
408
  end
@@ -631,10 +633,18 @@ module Hobo
631
633
  self.this = @creator.run!(current_user, attribute_parameters)
632
634
  response_block(&b) or
633
635
  if valid?
634
- redirect_after_submit options
636
+ respond_to do |wants|
637
+ wants.html { redirect_after_submit(options) }
638
+ wants.js { hobo_ajax_response || render(:nothing => true) }
639
+ end
635
640
  else
636
641
  this.exempt_from_edit_checks = true
637
- re_render_form(name)
642
+ respond_to do |wants|
643
+ wants.html { re_render_form(name) }
644
+ wants.js { render(:status => 500,
645
+ :text => ("Couldn't do creator #{name}.\n" +
646
+ this.errors.full_messages.join("\n"))) }
647
+ end
638
648
  end
639
649
  end
640
650
 
@@ -663,9 +673,17 @@ module Hobo
663
673
  @transition.run!(this, current_user, attribute_parameters)
664
674
  response_block(&b) or
665
675
  if valid?
666
- redirect_after_submit options
676
+ respond_to do |wants|
677
+ wants.html { redirect_after_submit(options) }
678
+ wants.js { hobo_ajax_response || render(:nothing => true) }
679
+ end
667
680
  else
668
- re_render_form(name)
681
+ respond_to do |wants|
682
+ wants.html { re_render_form(name) }
683
+ wants.js { render(:status => 500,
684
+ :text => ("Couldn't do transition #{name}.\n" +
685
+ this.errors.full_messages.join("\n"))) }
686
+ end
669
687
  end
670
688
  end
671
689
 
@@ -253,7 +253,9 @@ module Hobo
253
253
  def_scope do |*args|
254
254
  field, asc = args
255
255
  type = klass.attr_type(field)
256
- if type.respond_to?(:table_name) && (name = type.name_attribute)
256
+ if type.nil? #a virtual attribute from an SQL alias, e.g., 'total' from 'COUNT(*) AS total'
257
+ colspec = "#{field}" # don't prepend the table name
258
+ elsif type.respond_to?(:table_name) && (name = type.name_attribute)
257
259
  include = field
258
260
  colspec = "#{type.table_name}.#{name}"
259
261
  else
@@ -29,7 +29,7 @@ module Hobo
29
29
 
30
30
  def available_auto_actions_with_user_actions
31
31
  available_auto_actions_without_user_actions +
32
- [:login, :signup, :logout, :forgot_password, :reset_password, :account]
32
+ [:login, :logout, :forgot_password, :reset_password, :account]
33
33
  end
34
34
 
35
35
 
@@ -39,6 +39,7 @@ module Hobo
39
39
  class_eval do
40
40
  def login; hobo_login; end if include_action?(:login)
41
41
  def logout; hobo_logout; end if include_action?(:logout)
42
+ def signup; hobo_signup; end if include_action?(:signup)
42
43
  def do_signup; hobo_do_signup end if include_action?(:do_signup)
43
44
  def forgot_password; hobo_forgot_password; end if include_action?(:forgot_password)
44
45
  def do_reset_password; hobo_do_reset_password; end if include_action?(:do_reset_password)
@@ -84,6 +85,13 @@ module Hobo
84
85
  end
85
86
  end
86
87
 
88
+ def hobo_signup(&b)
89
+ if logged_in?
90
+ redirect_back_or_default(home_page)
91
+ else
92
+ creator_page_action(:signup, &b)
93
+ end
94
+ end
87
95
 
88
96
  def hobo_do_signup(&b)
89
97
  do_creator_action(:signup) do
@@ -755,7 +755,7 @@ Event.addBehavior({
755
755
 
756
756
  '.autocompleter' : AutocompleteBehavior(),
757
757
 
758
- '.string.in-place-edit, .datetime.in-place-edit, .date.in-place-edit, .integer.in-place-edit, .float.in-place-edit, big-integer.in-place-edit' :
758
+ '.string.in-place-edit, .datetime.in-place-edit, .date.in-place-edit, .integer.in-place-edit, .float.in-place-edit, .decimal.in-place-edit' :
759
759
  function (ev) {
760
760
 
761
761
  var ipe = Hobo._makeInPlaceEditor(this)
@@ -1,16 +1,5 @@
1
- /* Graphite */
2
- /*html, body {color: #222; background: #222;}
3
- .page-header {color: white; background: #444;}
4
- .page-header .main-nav a {background: #666;}
5
- .page-header .main-nav a:hover {background: #222;}
6
- .content {background: white;}
7
- .button {color: white; background: #666;}
8
- .button:hover {background-color: #222;}
9
- .add-to-collection {background: #f5f5f5;}
10
- */
11
- /* Cubicle Blue */
12
- html, body {color: #193440; background: #193440;}
13
- .page-header {color: white; background: #3F606E;}
1
+ html, body {color: #193440; background: url(../images/300-ACD3E6-fff.png) repeat-x #fff; }
2
+ .page-header {color: white; background: url(../images/100-3B5F87-ACD3E6.png) repeat-x #3F606E;}
14
3
  .page-header .navigation.main-nav a {background: #5B8BA0;}
15
4
  .page-header .navigation.main-nav li.current a {background: #FCFFF4; color: #222;}
16
5
  .page-header .navigation.main-nav a:hover {background: #193440;}
@@ -306,7 +295,8 @@ div.select-many .item .remove-item { float: right; }
306
295
 
307
296
  .front-page .welcome-message {
308
297
  padding: 10px 20px 20px; border: 1px solid #e8e8e8;
309
- color: #222; background: #eee;
298
+ color: #222;
299
+ background: url(../images/50-ACD3E6-fff.png) repeat-x #fff;
310
300
  }
311
301
  .front-page .welcome-message h2 {
312
302
  font-size: 18px; line-height: 27px;
@@ -4,7 +4,7 @@ class <%= class_name %> < ActiveRecord::Base
4
4
 
5
5
  fields do
6
6
  name :string, :unique
7
- email_address :email_address, :unique, :login => true
7
+ email_address :email_address, :login => true
8
8
  administrator :boolean, :default => false
9
9
  timestamps
10
10
  end
@@ -411,7 +411,7 @@ Assuming the context is a blog post...
411
411
  the_view = if_blank if if_blank && the_view.blank?
412
412
 
413
413
  truncate = 30 if truncate == true
414
- the_view = self.truncate(the_view, truncate.to_i) if truncate
414
+ the_view = self.truncate(the_view, :length => truncate.to_i) if truncate
415
415
  the_view = the_view.strip
416
416
 
417
417
  if no_wrapper
@@ -52,9 +52,12 @@ This area of Hobo has had less attention that the non-ajax forms of late, so it'
52
52
  <!-- Provides a simple Scriptaculous in-place-editor that uses an `<input type='text'>` -->
53
53
  <def tag="editor" for="date"><%= in_place_editor attributes %></def>
54
54
 
55
- <!-- Provides a simple Scriptaculous in-place-editor that uses an `<input type='text'>` -->
55
+ <!-- Provides a simple Scriptaculous in-place-editor that uses an `<input type='integer'>` -->
56
56
  <def tag="editor" for="integer"><%= in_place_editor attributes %></def>
57
57
 
58
+ <!-- Provides a simple Scriptaculous in-place-editor that uses an `<input type='BigDecimal'>` -->
59
+ <def tag="editor" for="BigDecimal"><%= in_place_editor attributes %></def>
60
+
58
61
  <!-- Provides a simple Scriptaculous in-place-editor that uses an `<input type='text'>` -->
59
62
  <def tag="editor" for="float"><%= in_place_editor attributes %></def>
60
63
 
@@ -317,7 +317,11 @@ edit collections a `Category` model in your application:
317
317
 
318
318
  <!-- A checkbox plus a hidden-field. The hidden field trick comes from Rails - it means that when the checkbox is not checked, the parameter name is still submitted, with a '0' value (the value is '1' when the checkbox is checked) -->
319
319
  <def tag="input" for="boolean" attrs="name">
320
- <%= check_box_tag(name, '1', this, attributes) %><%= hidden_field_tag(name, '0') unless attributes[:disabled] %>
320
+ <%= unless attributes[:disabled]
321
+ cb_tag = check_box_tag(name, '1', this, attributes)
322
+ cb_hidden_tag = hidden_field_tag(name, '0')
323
+ HoboSupport::RAILS_AT_LEAST_23 ? cb_hidden_tag + cb_tag : cb_tag + cb_hidden_tag
324
+ end %>
321
325
  </def>
322
326
 
323
327
  <!-- A password input - `<input type='password'>` -->
@@ -387,6 +391,11 @@ The menus default to the current time if the current value is nil.
387
391
  <%= text_field_tag(name, this, attributes) %>
388
392
  </def>
389
393
 
394
+ <!-- An `<input type='text'>` input. -->
395
+ <def tag="input" for="BigDecimal" attrs="name">
396
+ <%= text_field_tag(name, this, attributes) %>
397
+ </def>
398
+
390
399
  <!-- An `<input type='text'>` input. -->
391
400
  <def tag="input" for="float" attrs="name">
392
401
  <%= text_field_tag(name, this, attributes) %>
@@ -401,10 +410,11 @@ The menus default to the current time if the current value is nil.
401
410
 
402
411
  ### Attributes
403
412
 
404
- - labels: A hash that gives custom labels for the values of the enum.
413
+ - `labels` - A hash that gives custom labels for the values of the enum.
405
414
  Any values that do not have corresponding keys in this hash will get `value.titleize` as the label.
406
-
407
- - titleize: Set to false to have the value itself (rather than `value.titleize`) be the default label. Default: true
415
+ - `titleize` - Set to false to have the value itself (rather than `value.titleize`) be the default label. Default: true
416
+ - `first-option` - a string to be used for an extra option in the first position. E.g. "Please choose..."
417
+ - `first-value` - the value to be used with the `first-option`. Typically not used, meaning the option has a blank value.
408
418
 
409
419
  -->
410
420
  <def tag="input" for="HoboFields::EnumString" attrs="labels, titleize, first-option, first-value"><%
@@ -436,10 +446,10 @@ Forms). If any ajax attributes are given, the button becomes an ajax button, if
436
446
  - label: the label on the button
437
447
 
438
448
  -->
439
- <def tag="remote-method-button" attrs="method, update, label, confirm"><%=
449
+ <def tag="remote-method-button" attrs="method, update, label, confirm, url"><%=
440
450
  ajax_attributes, html_attributes = attributes.partition_hash(Hobo::RapidHelper::AJAX_ATTRS)
441
451
 
442
- url = object_url(this, method.to_s.gsub('-', '_'), :method => :post)
452
+ url ||= object_url(this, method.to_s.gsub('-', '_'), :method => :post)
443
453
  raise ArgumentError, "no such web method '#{method}' on #{this.typed_id}" unless url
444
454
 
445
455
  add_classes!(html_attributes, "button remote-method-button #{method}-button")
@@ -593,21 +603,23 @@ This is the default input that Rapid uses for `belongs_to` associations. The men
593
603
 
594
604
  - `include-none` - whether to include a 'none' option (i.e. set the foreign key to null). Defaults to false
595
605
  - `blank-message` - the message for the 'none' option. Defaults to "(No `<model-name>`)", e.g. "(No Product)"
596
- - `options` - an array of records to include in the menu. Defaults to the all the records in the target table that match any `:conditions` declared on the `belongs_to` (limited to 100).
606
+ - `options` - an array of records to include in the menu. Defaults to the all the records in the target table that match any `:conditions` declared on the `belongs_to` (subject to `limit`)
607
+ - `limit` - if `options` is not specified, this limits the number of records. Default: 100
597
608
 
598
609
  ### See Also
599
610
 
600
611
  For situations where there are too many target records to practically include in a menu, `<name-one>` provides an autocompleter which would be more suitable.
601
612
 
602
613
  -->
603
- <def tag="select-one" attrs="include-none, blank-message, options, sort"><%
614
+ <def tag="select-one" attrs="include-none, blank-message, options, sort, limit"><%
604
615
  raise HoboError.new("Not allowed to edit #{this_field}") if !attributes[:disabled] && !can_edit?
605
616
 
606
617
  blank_message ||= "(No #{this_type.name.to_s.titleize})"
618
+ limit ||= 100
607
619
 
608
620
  options ||= begin
609
621
  conditions = ActiveRecord::Associations::BelongsToAssociation.new(this_parent, this_field_reflection).conditions
610
- this_field_reflection.klass.all(:conditions => conditions, :limit => 100).select {|x| can_view?(x)}
622
+ this_field_reflection.klass.all(:conditions => conditions, :limit => limit).select {|x| can_view?(x)}
611
623
  end
612
624
 
613
625
  select_options = options.map { |x| [x.to_s, x.id ] }
@@ -664,8 +676,8 @@ The completions are provided by the server with a GET request. The `complete-tar
664
676
 
665
677
  - `options` - an array of options suitable to be passed to the Rails `options_for_select` helper.
666
678
  - `selected` - the value (from the `options` array) that should be initially selected. Defaults to `this`
667
- - first-option - A string to be used for an extra option in the first position. E.g. "Please choose..."
668
- - first-value - the value to be used with the `first-option`. Typcially not used, meaning the option has a blank value.
679
+ - `first-option` - a string to be used for an extra option in the first position. E.g. "Please choose..."
680
+ - `first-value` - the value to be used with the `first-option`. Typically not used, meaning the option has a blank value.
669
681
 
670
682
  -->
671
683
  <def tag="select-input">
@@ -680,7 +692,7 @@ The completions are provided by the server with a GET request. The `complete-tar
680
692
  <h2 param="heading">To proceed please correct the following:</h2>
681
693
  <ul param>
682
694
  <% this.errors.each do |attr, message|; next if message == "..." -%>
683
- <li param><%= attr.titleize %> <%= message %></li>
695
+ <li param><%= this.class.human_attribute_name(attr) %> <%= message %></li>
684
696
  <% end -%>
685
697
  </ul>
686
698
  </section>
@@ -761,12 +773,12 @@ Use the `uri` option to specify a redirect location:
761
773
 
762
774
  <!-- A simple wrapper around the `<select>` tag and `options_for_select` helper
763
775
 
764
- ### Attributes
776
+ ### Attributes
765
777
 
766
- - `options` - an array of options suitable to be passed to the Rails `options_for_select` helper.
767
- - `selected` - the value (from the `options` array) that should be initially selected. Defaults to `this`
768
- - first-option - A string to be used for an extra option in the first position. E.g. "Please choose..."
769
- - first-value - the value to be used with the `first-option`. Typcially not used, meaning the option has a blank value.
778
+ - `options` - an array of options suitable to be passed to the Rails `options_for_select` helper.
779
+ - `selected` - the value (from the `options` array) that should be initially selected. Defaults to `this`
780
+ - `first-option` - a string to be used for an extra option in the first position. E.g. "Please choose..."
781
+ - `first-value` - the value to be used with the `first-option`. Typically not used, meaning the option has a blank value.
770
782
 
771
783
  -->
772
784
  <def tag="select-menu" attrs="options, selected, first-option, first-value">
@@ -778,9 +790,15 @@ Use the `uri` option to specify a redirect location:
778
790
  </def>
779
791
 
780
792
 
781
- <!-- Renders a `<ul>` list of checkboxes, one for each of the potential targt in a `has_many` association. The use can check the items they wish to have associated. A typical use might be selecting categories for a blog post.
793
+ <!-- Renders a `<ul>` list of checkboxes, one for each of the potential targt in a `has_many` association. The user can check the items they wish to have associated. A typical use might be selecting categories for a blog post.
794
+
795
+ ### Attributes
796
+
797
+ - `options` - an array of models that may be added to the collection
798
+ - `disabled` - if true, sets the disabled flag on all check boxes.
799
+
782
800
  -->
783
- <def tag="check-many" attrs="disabled"><%
801
+ <def tag="check-many" attrs="options, disabled"><%
784
802
  collection = this
785
803
  param_name = param_name_for_this
786
804
  options ||= begin
@@ -809,7 +827,6 @@ Use the `uri` option to specify a redirect location:
809
827
  This tag is very different from tags like `<select-many>` and `<check-many>` in that:
810
828
 
811
829
  - Those tags are used to *chose existing records* to include in the assocaition, while `<input-many>` is used to actually create or edit the records in the association.
812
- - Those tags work by themselves, while `<input-many>` is just a wrapper for other input fields.
813
830
 
814
831
  ### Example
815
832
 
@@ -818,15 +835,21 @@ Say you are creating a new `Category` in your online shop, and you want to creat
818
835
  <input-many:products><field-list fields="name, price"/></input-many>
819
836
 
820
837
  The body of the tag will be repeated for each of the current records in the collection, or will just appear once (with blank fields) if the colleciton is empty.
838
+
839
+ ### Attributes
840
+
841
+ - fields: If you do not specify any content for the input-many, a `<field-list>` is rendered. This attribute is passed through to the `<field-list>`
821
842
 
822
843
  -->
823
- <def tag="input-many" polymorphic>
844
+ <def tag="input-many" attrs="fields" polymorphic>
824
845
  <set empty="&this.empty?"/>
825
846
  <ul class="input-many #{this_field.dasherize} #{css_data :input_many_prefix, param_name_for_this}">
826
847
  <li repeat class="#{'record-with-errors' unless this.errors.empty?}">
827
848
  <error-messages without-heading class="sub-record"/>
828
849
  <hidden-id-field/>
829
- <div class="input-many-item" param="default"/>
850
+ <div class="input-many-item" param="default">
851
+ <field-list merge-attrs="fields" />
852
+ </div>
830
853
  <div class="buttons">
831
854
  <button class="remove-item" merge-attrs="disabled">-</button>
832
855
  <button class="add-item" if="&last_item?" merge-attrs="disabled">+</button>
@@ -834,7 +857,9 @@ The body of the tag will be repeated for each of the current records in the coll
834
857
  </li>
835
858
  <li if="&empty">
836
859
  <fake-field-context fake-field="0" context="&this.try.new_candidate || this.member_class.new">
837
- <div class="input-many-item" param="default"/>
860
+ <div class="input-many-item" param="default">
861
+ <field-list merge-attrs="fields"/>
862
+ </div>
838
863
  </fake-field-context>
839
864
  <div class="buttons">
840
865
  <button class="add-item" merge-attrs="disabled">+</button>
@@ -14,6 +14,7 @@ All of the [standard ajax attributes](/api_taglibs/rapid_forms) are also support
14
14
  transition = transition.name unless transition.is_a?(String)
15
15
  ajax_attributes, html_attributes = attributes.partition_hash(Hobo::RapidHelper::AJAX_ATTRS)
16
16
 
17
+ html_attributes[:method] = :put
17
18
  url = object_url(this, transition, :method => :put)
18
19
  add_classes!(html_attributes, "transition-button #{transition}-button")
19
20
  label ||= transition.to_s.titleize
@@ -37,12 +37,14 @@ Then in your pages you can call the tag like this
37
37
 
38
38
 
39
39
  <!-- Renders a single item in a `<navigation>` menu. See [`<navigation`>](/api_tag_defs/navigation). -->
40
- <def tag="nav-item">
40
+ <def tag="nav-item" attrs="name">
41
41
  <% body = parameters.default
42
- body = h(this.to_s) if body.blank? -%>
43
- <li class="#{'current' if (c = scope.current_navigation) && c.downcase == body.downcase.gsub(/<.*?>/, '').strip}"
44
- merge-attrs="&attributes - attrs_for(:a)">
45
- <a merge-attrs="&attributes & attrs_for(:a)"><%= body %></a>
42
+ body = h(this.to_s) if body.blank?
43
+ name ||= body.gsub(/<.*?>/, '').strip
44
+ -%>
45
+ <li class="#{'current' if (c = scope.current_navigation) && c.downcase == name.downcase}"
46
+ merge-attrs="&attributes - (attrs_for(:a)+['target'])">
47
+ <a merge-attrs="&attributes & (attrs_for(:a)+['target'])"><%= body %></a>
46
48
  </li>
47
49
  </def>
48
50
 
@@ -76,7 +76,7 @@ This tag assumes the controller has a `reorder` action. This action is added aut
76
76
  %>
77
77
  <collection class="sortable" merge>
78
78
  <item: id="#{singular_name}_#{this.id}" param>
79
- <div class="ordering-handle" param="handle">&uarr;<br/>&darr;</div>
79
+ <div class="ordering-handle" param="handle" if="&can_edit?">&uarr;<br/>&darr;</div>
80
80
  <do param="default"><card param/></do>
81
81
  </item:>
82
82
  </collection>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hobo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.7
4
+ version: 0.8.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Locke
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-05-14 00:00:00 +01:00
12
+ date: 2009-06-24 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - "="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.8.7
23
+ version: 0.8.8
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: hobofields
@@ -30,7 +30,7 @@ dependencies:
30
30
  requirements:
31
31
  - - "="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.8.7
33
+ version: 0.8.8
34
34
  version:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: rails
@@ -59,223 +59,228 @@ executables:
59
59
  extensions: []
60
60
 
61
61
  extra_rdoc_files:
62
- - LICENSE.txt
63
- - README
64
- - tasks/hobo_tasks.rake
65
- - tasks/environments.rake
66
- - bin/hobo
67
62
  - lib/hobo.rb
68
- - lib/hobo/lifecycles/lifecycle.rb
63
+ - lib/hobo/lifecycles/state.rb
64
+ - lib/hobo/lifecycles/transition.rb
69
65
  - lib/hobo/lifecycles/actions.rb
70
66
  - lib/hobo/lifecycles/creator.rb
71
- - lib/hobo/lifecycles/transition.rb
72
- - lib/hobo/lifecycles/state.rb
73
- - lib/hobo/find_for.rb
74
- - lib/hobo/lifecycles.rb
67
+ - lib/hobo/lifecycles/lifecycle.rb
68
+ - lib/hobo/dryml/tag_parameters.rb
69
+ - lib/hobo/dryml/template_environment.rb
70
+ - lib/hobo/dryml/parser.rb
71
+ - lib/hobo/dryml/template_handler.rb
72
+ - lib/hobo/dryml/parser/source.rb
73
+ - lib/hobo/dryml/parser/tree_parser.rb
74
+ - lib/hobo/dryml/parser/attribute.rb
75
+ - lib/hobo/dryml/parser/text.rb
76
+ - lib/hobo/dryml/parser/base_parser.rb
77
+ - lib/hobo/dryml/parser/document.rb
78
+ - lib/hobo/dryml/parser/elements.rb
79
+ - lib/hobo/dryml/parser/element.rb
80
+ - lib/hobo/dryml/taglib.rb
81
+ - lib/hobo/dryml/dryml_support_controller.rb
82
+ - lib/hobo/dryml/dryml_builder.rb
83
+ - lib/hobo/dryml/dryml_doc.rb
84
+ - lib/hobo/dryml/part_context.rb
85
+ - lib/hobo/dryml/template.rb
86
+ - lib/hobo/dryml/dryml_generator.rb
87
+ - lib/hobo/dryml/scoped_variables.rb
75
88
  - lib/hobo/permissions.rb
89
+ - lib/hobo/guest.rb
90
+ - lib/hobo/user_controller.rb
91
+ - lib/hobo/rapid_helper.rb
92
+ - lib/hobo/tasks/rails.rb
93
+ - lib/hobo/permissions/associations.rb
76
94
  - lib/hobo/include_in_save.rb
77
- - lib/hobo/bundle.rb
78
- - lib/hobo/generator.rb
79
- - lib/hobo/model_controller.rb
80
- - lib/hobo/scopes/apply_scopes.rb
95
+ - lib/hobo/hobo_helper.rb
81
96
  - lib/hobo/scopes/named_scope_extensions.rb
97
+ - lib/hobo/scopes/apply_scopes.rb
82
98
  - lib/hobo/scopes/automatic_scopes.rb
83
99
  - lib/hobo/scopes/association_proxy_extensions.rb
84
- - lib/hobo/permissions/associations.rb
85
- - lib/hobo/view_hints.rb
86
- - lib/hobo/tasks/rails.rb
87
- - lib/hobo/hobo_helper.rb
100
+ - lib/hobo/bundle.rb
101
+ - lib/hobo/controller.rb
102
+ - lib/hobo/find_for.rb
103
+ - lib/hobo/lifecycles.rb
104
+ - lib/hobo/undefined.rb
88
105
  - lib/hobo/user.rb
106
+ - lib/hobo/dryml.rb
89
107
  - lib/hobo/undefined_access_error.rb
90
- - lib/hobo/user_controller.rb
91
- - lib/hobo/undefined.rb
92
- - lib/hobo/model.rb
93
108
  - lib/hobo/authentication_support.rb
94
- - lib/hobo/static_tags
109
+ - lib/hobo/dev_controller.rb
110
+ - lib/hobo/accessible_associations.rb
95
111
  - lib/hobo/scopes.rb
112
+ - lib/hobo/view_hints.rb
113
+ - lib/hobo/generator.rb
114
+ - lib/hobo/static_tags
96
115
  - lib/hobo/model_router.rb
97
- - lib/hobo/accessible_associations.rb
98
- - lib/hobo/dev_controller.rb
99
- - lib/hobo/dryml/part_context.rb
116
+ - lib/hobo/model_controller.rb
117
+ - lib/hobo/model.rb
118
+ - lib/action_view_extensions/helpers/tag_helper.rb
119
+ - lib/active_record/association_proxy.rb
120
+ - lib/active_record/association_reflection.rb
121
+ - lib/active_record/association_collection.rb
122
+ - lib/active_record/viewhints_validations_interceptor.rb
123
+ - bin/hobo
124
+ - tasks/hobo_tasks.rake
125
+ - tasks/environments.rake
126
+ - LICENSE.txt
127
+ - README
128
+ files:
129
+ - lib/hobo.rb
130
+ - lib/hobo/lifecycles/state.rb
131
+ - lib/hobo/lifecycles/transition.rb
132
+ - lib/hobo/lifecycles/actions.rb
133
+ - lib/hobo/lifecycles/creator.rb
134
+ - lib/hobo/lifecycles/lifecycle.rb
135
+ - lib/hobo/dryml/tag_parameters.rb
136
+ - lib/hobo/dryml/template_environment.rb
137
+ - lib/hobo/dryml/parser.rb
100
138
  - lib/hobo/dryml/template_handler.rb
101
- - lib/hobo/dryml/dryml_doc.rb
102
- - lib/hobo/dryml/dryml_builder.rb
139
+ - lib/hobo/dryml/parser/source.rb
140
+ - lib/hobo/dryml/parser/tree_parser.rb
141
+ - lib/hobo/dryml/parser/attribute.rb
142
+ - lib/hobo/dryml/parser/text.rb
143
+ - lib/hobo/dryml/parser/base_parser.rb
144
+ - lib/hobo/dryml/parser/document.rb
145
+ - lib/hobo/dryml/parser/elements.rb
146
+ - lib/hobo/dryml/parser/element.rb
103
147
  - lib/hobo/dryml/taglib.rb
104
- - lib/hobo/dryml/parser.rb
105
148
  - lib/hobo/dryml/dryml_support_controller.rb
149
+ - lib/hobo/dryml/dryml_builder.rb
150
+ - lib/hobo/dryml/dryml_doc.rb
151
+ - lib/hobo/dryml/part_context.rb
106
152
  - lib/hobo/dryml/template.rb
107
- - lib/hobo/dryml/template_environment.rb
108
- - lib/hobo/dryml/scoped_variables.rb
109
153
  - lib/hobo/dryml/dryml_generator.rb
110
- - lib/hobo/dryml/parser/elements.rb
111
- - lib/hobo/dryml/parser/element.rb
112
- - lib/hobo/dryml/parser/attribute.rb
113
- - lib/hobo/dryml/parser/source.rb
114
- - lib/hobo/dryml/parser/base_parser.rb
115
- - lib/hobo/dryml/parser/document.rb
116
- - lib/hobo/dryml/parser/tree_parser.rb
117
- - lib/hobo/dryml/parser/text.rb
118
- - lib/hobo/dryml/tag_parameters.rb
119
- - lib/hobo/dryml.rb
120
- - lib/hobo/rapid_helper.rb
154
+ - lib/hobo/dryml/scoped_variables.rb
155
+ - lib/hobo/permissions.rb
121
156
  - lib/hobo/guest.rb
157
+ - lib/hobo/user_controller.rb
158
+ - lib/hobo/rapid_helper.rb
159
+ - lib/hobo/tasks/rails.rb
160
+ - lib/hobo/permissions/associations.rb
161
+ - lib/hobo/include_in_save.rb
162
+ - lib/hobo/hobo_helper.rb
163
+ - lib/hobo/scopes/named_scope_extensions.rb
164
+ - lib/hobo/scopes/apply_scopes.rb
165
+ - lib/hobo/scopes/automatic_scopes.rb
166
+ - lib/hobo/scopes/association_proxy_extensions.rb
167
+ - lib/hobo/bundle.rb
122
168
  - lib/hobo/controller.rb
169
+ - lib/hobo/find_for.rb
170
+ - lib/hobo/lifecycles.rb
171
+ - lib/hobo/undefined.rb
172
+ - lib/hobo/user.rb
173
+ - lib/hobo/dryml.rb
174
+ - lib/hobo/undefined_access_error.rb
175
+ - lib/hobo/authentication_support.rb
176
+ - lib/hobo/dev_controller.rb
177
+ - lib/hobo/accessible_associations.rb
178
+ - lib/hobo/scopes.rb
179
+ - lib/hobo/view_hints.rb
180
+ - lib/hobo/generator.rb
181
+ - lib/hobo/static_tags
182
+ - lib/hobo/model_router.rb
183
+ - lib/hobo/model_controller.rb
184
+ - lib/hobo/model.rb
123
185
  - lib/action_view_extensions/helpers/tag_helper.rb
186
+ - lib/active_record/association_proxy.rb
124
187
  - lib/active_record/association_reflection.rb
125
188
  - lib/active_record/association_collection.rb
126
- - lib/active_record/association_proxy.rb
127
- files:
128
- - LICENSE.txt
129
- - README
130
- - rails_generators/hobo_model_controller/hobo_model_controller_generator.rb
131
- - rails_generators/hobo_model_controller/USAGE
132
- - rails_generators/hobo_model_controller/templates/functional_test.rb
133
- - rails_generators/hobo_model_controller/templates/helper.rb
134
- - rails_generators/hobo_model_controller/templates/controller.rb
135
- - rails_generators/hobo_user_model/USAGE
136
- - rails_generators/hobo_user_model/templates/forgot_password.erb
137
- - rails_generators/hobo_user_model/templates/fixtures.yml
138
- - rails_generators/hobo_user_model/templates/model.rb
139
- - rails_generators/hobo_user_model/templates/mailer.rb
140
- - rails_generators/hobo_user_model/templates/unit_test.rb
141
- - rails_generators/hobo_user_model/hobo_user_model_generator.rb
142
- - rails_generators/hobo_model/hobo_model_generator.rb
143
- - rails_generators/hobo_model/USAGE
144
- - rails_generators/hobo_model/templates/fixtures.yml
145
- - rails_generators/hobo_model/templates/model.rb
146
- - rails_generators/hobo_model/templates/hints.rb
147
- - rails_generators/hobo_model/templates/unit_test.rb
148
- - rails_generators/hobo_subsite/hobo_subsite_generator.rb
149
- - rails_generators/hobo_subsite/templates/site_taglib.dryml
150
- - rails_generators/hobo_subsite/templates/application.dryml
151
- - rails_generators/hobo_subsite/templates/controller.rb
152
- - rails_generators/hobo_rapid/hobo_rapid_generator.rb
189
+ - lib/active_record/viewhints_validations_interceptor.rb
190
+ - bin/hobo
191
+ - Rakefile
192
+ - tasks/hobo_tasks.rake
193
+ - tasks/environments.rake
194
+ - CHANGES.txt
195
+ - taglibs/rapid_document_tags.dryml
196
+ - taglibs/rapid_support.dryml
197
+ - taglibs/rapid_navigation.dryml
198
+ - taglibs/rapid_generics.dryml
199
+ - taglibs/rapid_user_pages.dryml
200
+ - taglibs/core.dryml
201
+ - taglibs/rapid_lifecycles.dryml
202
+ - taglibs/rapid.dryml
203
+ - taglibs/rapid_editing.dryml
204
+ - taglibs/rapid_pages.dryml
205
+ - taglibs/rapid_core.dryml
206
+ - taglibs/rapid_forms.dryml
207
+ - taglibs/rapid_plus.dryml
208
+ - rails_generators/hobo_user_controller/templates/functional_test.rb
209
+ - rails_generators/hobo_user_controller/templates/helper.rb
210
+ - rails_generators/hobo_user_controller/templates/controller.rb
211
+ - rails_generators/hobo_user_controller/USAGE
212
+ - rails_generators/hobo_user_controller/hobo_user_controller_generator.rb
213
+ - rails_generators/hobo_rapid/templates/IE7.js
214
+ - rails_generators/hobo_rapid/templates/reset.css
153
215
  - rails_generators/hobo_rapid/templates/blank.gif
216
+ - rails_generators/hobo_rapid/templates/lowpro.js
154
217
  - rails_generators/hobo_rapid/templates/ie7-recalc.js
155
- - rails_generators/hobo_rapid/templates/reset.css
156
- - rails_generators/hobo_rapid/templates/hobo-rapid.css
218
+ - rails_generators/hobo_rapid/templates/hobo-rapid.js
157
219
  - rails_generators/hobo_rapid/templates/themes/clean/views/clean.dryml
158
220
  - rails_generators/hobo_rapid/templates/themes/clean/public/stylesheets/clean.css
159
221
  - rails_generators/hobo_rapid/templates/themes/clean/public/stylesheets/rapid-ui.css
160
222
  - rails_generators/hobo_rapid/templates/themes/clean/public/images/fieldbg.gif
161
- - rails_generators/hobo_rapid/templates/themes/clean/public/images/spinner.gif
162
- - rails_generators/hobo_rapid/templates/themes/clean/public/images/small_close.png
163
223
  - rails_generators/hobo_rapid/templates/themes/clean/public/images/pencil.png
164
- - rails_generators/hobo_rapid/templates/IE7.js
165
- - rails_generators/hobo_rapid/templates/hobo-rapid.js
166
- - rails_generators/hobo_rapid/templates/lowpro.js
167
- - rails_generators/hobo/hobo_generator.rb
168
- - rails_generators/hobo/templates/application.css
169
- - rails_generators/hobo/templates/initializer.rb
224
+ - rails_generators/hobo_rapid/templates/themes/clean/public/images/50-ACD3E6-fff.png
225
+ - rails_generators/hobo_rapid/templates/themes/clean/public/images/small_close.png
226
+ - rails_generators/hobo_rapid/templates/themes/clean/public/images/100-3B5F87-ACD3E6.png
227
+ - rails_generators/hobo_rapid/templates/themes/clean/public/images/300-ACD3E6-fff.png
228
+ - rails_generators/hobo_rapid/templates/themes/clean/public/images/spinner.gif
229
+ - rails_generators/hobo_rapid/templates/hobo-rapid.css
230
+ - rails_generators/hobo_rapid/hobo_rapid_generator.rb
170
231
  - rails_generators/hobo/templates/dryml-support.js
171
- - rails_generators/hobo/templates/application.dryml
172
232
  - rails_generators/hobo/templates/guest.rb
173
- - rails_generators/hobo_model_resource/templates/functional_test.rb
174
- - rails_generators/hobo_model_resource/templates/helper.rb
175
- - rails_generators/hobo_model_resource/templates/controller.rb
176
- - rails_generators/hobo_model_resource/hobo_model_resource_generator.rb
233
+ - rails_generators/hobo/templates/application.dryml
234
+ - rails_generators/hobo/templates/initializer.rb
235
+ - rails_generators/hobo/templates/application.css
236
+ - rails_generators/hobo/hobo_generator.rb
177
237
  - rails_generators/hobo_front_controller/hobo_front_controller_generator.rb
178
- - rails_generators/hobo_front_controller/USAGE
179
- - rails_generators/hobo_front_controller/templates/index.dryml
180
238
  - rails_generators/hobo_front_controller/templates/functional_test.rb
181
239
  - rails_generators/hobo_front_controller/templates/helper.rb
182
240
  - rails_generators/hobo_front_controller/templates/controller.rb
183
- - rails_generators/hobo_user_controller/hobo_user_controller_generator.rb
184
- - rails_generators/hobo_user_controller/USAGE
185
- - rails_generators/hobo_user_controller/templates/functional_test.rb
186
- - rails_generators/hobo_user_controller/templates/helper.rb
187
- - rails_generators/hobo_user_controller/templates/controller.rb
188
- - tasks/hobo_tasks.rake
189
- - tasks/environments.rake
190
- - Rakefile
241
+ - rails_generators/hobo_front_controller/templates/index.dryml
242
+ - rails_generators/hobo_front_controller/USAGE
243
+ - rails_generators/hobo_user_model/templates/mailer.rb
244
+ - rails_generators/hobo_user_model/templates/fixtures.yml
245
+ - rails_generators/hobo_user_model/templates/unit_test.rb
246
+ - rails_generators/hobo_user_model/templates/forgot_password.erb
247
+ - rails_generators/hobo_user_model/templates/model.rb
248
+ - rails_generators/hobo_user_model/USAGE
249
+ - rails_generators/hobo_user_model/hobo_user_model_generator.rb
250
+ - rails_generators/hobo_model/templates/fixtures.yml
251
+ - rails_generators/hobo_model/templates/unit_test.rb
252
+ - rails_generators/hobo_model/templates/hints.rb
253
+ - rails_generators/hobo_model/templates/model.rb
254
+ - rails_generators/hobo_model/USAGE
255
+ - rails_generators/hobo_model/hobo_model_generator.rb
256
+ - rails_generators/hobo_model_controller/templates/functional_test.rb
257
+ - rails_generators/hobo_model_controller/templates/helper.rb
258
+ - rails_generators/hobo_model_controller/templates/controller.rb
259
+ - rails_generators/hobo_model_controller/USAGE
260
+ - rails_generators/hobo_model_controller/hobo_model_controller_generator.rb
261
+ - rails_generators/hobo_model_resource/templates/functional_test.rb
262
+ - rails_generators/hobo_model_resource/templates/helper.rb
263
+ - rails_generators/hobo_model_resource/templates/controller.rb
264
+ - rails_generators/hobo_model_resource/hobo_model_resource_generator.rb
265
+ - rails_generators/hobo_subsite/templates/application.dryml
266
+ - rails_generators/hobo_subsite/templates/controller.rb
267
+ - rails_generators/hobo_subsite/templates/site_taglib.dryml
268
+ - rails_generators/hobo_subsite/hobo_subsite_generator.rb
191
269
  - init.rb
192
- - script/generate
270
+ - LICENSE.txt
271
+ - README
193
272
  - script/destroy
194
- - bin/hobo
195
- - lib/hobo.rb
196
- - lib/hobo/lifecycles/lifecycle.rb
197
- - lib/hobo/lifecycles/actions.rb
198
- - lib/hobo/lifecycles/creator.rb
199
- - lib/hobo/lifecycles/transition.rb
200
- - lib/hobo/lifecycles/state.rb
201
- - lib/hobo/find_for.rb
202
- - lib/hobo/lifecycles.rb
203
- - lib/hobo/permissions.rb
204
- - lib/hobo/include_in_save.rb
205
- - lib/hobo/bundle.rb
206
- - lib/hobo/generator.rb
207
- - lib/hobo/model_controller.rb
208
- - lib/hobo/scopes/apply_scopes.rb
209
- - lib/hobo/scopes/named_scope_extensions.rb
210
- - lib/hobo/scopes/automatic_scopes.rb
211
- - lib/hobo/scopes/association_proxy_extensions.rb
212
- - lib/hobo/permissions/associations.rb
213
- - lib/hobo/view_hints.rb
214
- - lib/hobo/tasks/rails.rb
215
- - lib/hobo/hobo_helper.rb
216
- - lib/hobo/user.rb
217
- - lib/hobo/undefined_access_error.rb
218
- - lib/hobo/user_controller.rb
219
- - lib/hobo/undefined.rb
220
- - lib/hobo/model.rb
221
- - lib/hobo/authentication_support.rb
222
- - lib/hobo/static_tags
223
- - lib/hobo/scopes.rb
224
- - lib/hobo/model_router.rb
225
- - lib/hobo/accessible_associations.rb
226
- - lib/hobo/dev_controller.rb
227
- - lib/hobo/dryml/part_context.rb
228
- - lib/hobo/dryml/template_handler.rb
229
- - lib/hobo/dryml/dryml_doc.rb
230
- - lib/hobo/dryml/dryml_builder.rb
231
- - lib/hobo/dryml/taglib.rb
232
- - lib/hobo/dryml/parser.rb
233
- - lib/hobo/dryml/dryml_support_controller.rb
234
- - lib/hobo/dryml/template.rb
235
- - lib/hobo/dryml/template_environment.rb
236
- - lib/hobo/dryml/scoped_variables.rb
237
- - lib/hobo/dryml/dryml_generator.rb
238
- - lib/hobo/dryml/parser/elements.rb
239
- - lib/hobo/dryml/parser/element.rb
240
- - lib/hobo/dryml/parser/attribute.rb
241
- - lib/hobo/dryml/parser/source.rb
242
- - lib/hobo/dryml/parser/base_parser.rb
243
- - lib/hobo/dryml/parser/document.rb
244
- - lib/hobo/dryml/parser/tree_parser.rb
245
- - lib/hobo/dryml/parser/text.rb
246
- - lib/hobo/dryml/tag_parameters.rb
247
- - lib/hobo/dryml.rb
248
- - lib/hobo/rapid_helper.rb
249
- - lib/hobo/guest.rb
250
- - lib/hobo/controller.rb
251
- - lib/action_view_extensions/helpers/tag_helper.rb
252
- - lib/active_record/association_reflection.rb
253
- - lib/active_record/association_collection.rb
254
- - lib/active_record/association_proxy.rb
255
- - Manifest
273
+ - script/generate
256
274
  - dryml_generators/rapid/forms.dryml.erb
257
- - dryml_generators/rapid/cards.dryml.erb
258
275
  - dryml_generators/rapid/pages.dryml.erb
259
- - test/generators/test_generator_helper.rb
276
+ - dryml_generators/rapid/cards.dryml.erb
277
+ - Manifest
278
+ - test/permissions/models/models.rb
279
+ - test/permissions/models/schema.rb
280
+ - test/permissions/test_permissions.rb
260
281
  - test/generators/test_hobo_model_controller_generator.rb
282
+ - test/generators/test_generator_helper.rb
261
283
  - test/generators/test_helper.rb
262
- - test/permissions/test_permissions.rb
263
- - test/permissions/models/schema.rb
264
- - test/permissions/models/models.rb
265
- - taglibs/rapid_generics.dryml
266
- - taglibs/rapid_editing.dryml
267
- - taglibs/rapid_pages.dryml
268
- - taglibs/rapid.dryml
269
- - taglibs/rapid_plus.dryml
270
- - taglibs/rapid_navigation.dryml
271
- - taglibs/core.dryml
272
- - taglibs/rapid_forms.dryml
273
- - taglibs/rapid_lifecycles.dryml
274
- - taglibs/rapid_user_pages.dryml
275
- - taglibs/rapid_core.dryml
276
- - taglibs/rapid_support.dryml
277
- - taglibs/rapid_document_tags.dryml
278
- - CHANGES.txt
279
284
  - hobo.gemspec
280
285
  has_rdoc: true
281
286
  homepage: http://hobocentral.net/