hobo 1.3.0.pre16 → 1.3.0.pre18
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/app/controllers/dev_controller.rb +1 -1
- data/{lib/generators/hobo/front_controller/templates → app/views/dev}/summary.dryml +7 -10
- data/config/routes.rb +1 -1
- data/lib/generators/hobo/{basic/basic_generator.rb → assets/assets_generator.rb} +2 -2
- data/lib/generators/hobo/{basic → assets}/templates/application.css +0 -0
- data/lib/generators/hobo/{basic → assets}/templates/application.dryml.erb +0 -0
- data/lib/generators/hobo/{basic → assets}/templates/dryml-support.js +0 -0
- data/lib/generators/hobo/{basic → assets}/templates/dryml_taglibs_initializer.rb +0 -0
- data/lib/generators/hobo/{basic → assets}/templates/en_injection.yml +0 -0
- data/lib/generators/hobo/{basic → assets}/templates/guest.rb +0 -0
- data/lib/generators/hobo/front_controller/front_controller_generator.rb +1 -2
- data/lib/generators/hobo/i18n/templates/hobo.pt-PT.yml +5 -5
- data/lib/generators/hobo/model/USAGE +0 -1
- data/lib/generators/hobo/model/model_generator.rb +2 -1
- data/lib/generators/hobo/setup_wizard/setup_wizard_generator.rb +12 -12
- data/lib/generators/hobo/subsite.rb +1 -1
- data/lib/generators/hobo/subsite/subsite_generator.rb +1 -1
- data/lib/generators/hobo/user_mailer/templates/mailer.rb.erb +3 -10
- data/lib/generators/hobo/user_model/user_model_generator.rb +2 -1
- data/lib/hobo/controller/model.rb +1 -13
- data/lib/hobo/helper.rb +12 -0
- data/lib/hobo/model.rb +9 -1
- data/lib/hobo/model/view_hints.rb +102 -0
- data/lib/hobo/rapid/taglibs/rapid_core.dryml +8 -1
- data/lib/hobo/rapid/taglibs/rapid_forms.dryml +1 -1
- data/lib/hobo/rapid/taglibs/rapid_generics.dryml +1 -1
- data/lib/hobo/rapid/taglibs/rapid_i18n.dryml +1 -2
- data/lib/hobo/rapid/taglibs/rapid_plus.dryml +2 -2
- data/lib/hobo/rapid/taglibs/rapid_summary.dryml +12 -41
- data/test/irt/generators/admin_subsite.irt +1 -1
- data/test/irt/generators/{basic.irt → assets.irt} +2 -2
- data/test/irt/generators/front_controller.irt +1 -3
- data/test/irt/generators/subsite.irt +1 -1
- metadata +23 -27
- data/lib/generators/hobo/hints/hints_generator.rb +0 -12
- data/lib/generators/hobo/hints/templates/hints.rb.erb +0 -5
- data/lib/generators/hobo/hints/templates/model_injection.rb.erb +0 -36
- data/lib/generators/hobo/model.rb +0 -13
- data/lib/hobo/view_hints.rb +0 -101
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.3.0.
|
1
|
+
1.3.0.pre18
|
@@ -18,7 +18,7 @@ class DevController < ActionController::Base
|
|
18
18
|
|
19
19
|
def developer_modes_only
|
20
20
|
# Belt and braces. In addition to this check, the routes only get
|
21
|
-
# defined when developer_features
|
21
|
+
# defined when developer_features is true
|
22
22
|
render :text => "Permission Denied", :status => 403 unless Rails.application.config.hobo.developer_features
|
23
23
|
end
|
24
24
|
|
@@ -8,12 +8,11 @@
|
|
8
8
|
<tr> <td>Application Name</td> <td><app-name/></td> </tr>
|
9
9
|
<tr> <td>Application Location</td> <td><rails-root/></td> </tr>
|
10
10
|
<tr> <td>Rails Version</td> <td><rails-version/></td> </tr>
|
11
|
-
<tr> <td>Rails Location</td> <td><rails-location/></td> </tr>
|
12
11
|
<tr> <td>Mode</td> <td><rails-env/></td> </tr>
|
13
12
|
</table>
|
14
13
|
|
15
14
|
<h3>Change Control</h3>
|
16
|
-
<table class="app-summary">
|
15
|
+
<table class="app-summary">
|
17
16
|
<tr> <th></th><th></th></tr>
|
18
17
|
<tr> <td>Method</td> <td><cms-method/></td> </tr>
|
19
18
|
<if test="&cms_method.strip=='git'">
|
@@ -25,15 +24,13 @@
|
|
25
24
|
</table>
|
26
25
|
|
27
26
|
|
28
|
-
<h3>Gems</h3>
|
27
|
+
<h3>Bundled Gems</h3>
|
29
28
|
<table class="app-summary">
|
30
29
|
<with-gems>
|
31
|
-
<tr if="&first_item?"><th></th><th>
|
30
|
+
<tr if="&first_item?"><th></th><th>Version</th><th>Dependencies</th></tr>
|
32
31
|
<tr>
|
33
32
|
<td><gem-name/></td>
|
34
|
-
<td><gem-version
|
35
|
-
<td><gem-version/></td>
|
36
|
-
<td><gem-frozen/></td>
|
33
|
+
<td><gem-version/></td>
|
37
34
|
<td><gem-dependencies/></td>
|
38
35
|
</tr>
|
39
36
|
</with-gems>
|
@@ -75,8 +72,8 @@
|
|
75
72
|
<td><model-table-comment/></td>
|
76
73
|
</tr>
|
77
74
|
</with-models>
|
78
|
-
</table>
|
79
|
-
|
75
|
+
</table>
|
76
|
+
|
80
77
|
<with-models>
|
81
78
|
<h3 if="&this.try.table_name"><model-name /></h3>
|
82
79
|
<table class="app-summary">
|
@@ -102,4 +99,4 @@
|
|
102
99
|
</with-models>
|
103
100
|
</div>
|
104
101
|
</content:>
|
105
|
-
</page>
|
102
|
+
</page>
|
data/config/routes.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Rails.application.routes.draw do
|
2
2
|
|
3
3
|
match 'dryml/:action', :controller => 'dryml_support', :as => 'dryml_support'
|
4
|
-
match 'dev/:action', :controller => 'dev', :as => 'dev_support'
|
4
|
+
match 'dev/:action', :controller => 'dev', :as => 'dev_support' if Rails.application.config.hobo.developer_features
|
5
5
|
|
6
6
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
module Hobo
|
2
|
-
class
|
2
|
+
class AssetsGenerator < Rails::Generators::Base
|
3
3
|
source_root File.expand_path('../templates', __FILE__)
|
4
4
|
|
5
5
|
def self.banner
|
6
|
-
"rails generate hobo:
|
6
|
+
"rails generate hobo:assets"
|
7
7
|
end
|
8
8
|
|
9
9
|
def copy_rapid_files
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -32,9 +32,8 @@ module Hobo
|
|
32
32
|
template 'controller.rb.erb', File.join('app/controllers',"#{file_path}_controller.rb")
|
33
33
|
end
|
34
34
|
|
35
|
-
def
|
35
|
+
def generate_index
|
36
36
|
template("index.dryml", File.join('app/views', file_path, "index.dryml"))
|
37
|
-
template("summary.dryml", File.join('app/views', file_path, "summary.dryml"))
|
38
37
|
end
|
39
38
|
|
40
39
|
def remove_index_html
|
@@ -50,7 +50,7 @@
|
|
50
50
|
email_address: &email_address "E-mail"
|
51
51
|
name: "Name"
|
52
52
|
password: "Palavra-chave"
|
53
|
-
remember_me: "
|
53
|
+
remember_me: "Gravar Login"
|
54
54
|
login: "Login"
|
55
55
|
signup: "Resgistar"
|
56
56
|
forgot_password: &forgot_password "Esqueceu-se da senha?"
|
@@ -63,14 +63,14 @@
|
|
63
63
|
forgot_password:
|
64
64
|
title: *forgot_password
|
65
65
|
heading: *forgot_password
|
66
|
-
text: "Introduza o seu endereço de e-mail, o mesmo com que se registou. Vamos enviar
|
66
|
+
text: "Introduza o seu endereço de e-mail, o mesmo com que se registou. Vamos enviar uma mensagem para recuperar a palavra-chave."
|
67
67
|
email: "E-mail"
|
68
68
|
send: "Enviar"
|
69
69
|
|
70
70
|
forgot_password_sent:
|
71
71
|
title: "Recuperação da palavra-chave - e-mail enviado"
|
72
72
|
heading: "Recuperação da palavra-chave - e-mail enviado"
|
73
|
-
text: "
|
73
|
+
text: "Foi enviada uma mensagem para %{email_address} com as instruções de como gerar uma nova palavra-chave. Se não o receber, por favor verifique o filtro de SPAM."
|
74
74
|
|
75
75
|
account_disabled:
|
76
76
|
title: "Conta não encontrada"
|
@@ -119,7 +119,7 @@
|
|
119
119
|
success: "O %{model} foi removido"
|
120
120
|
signup:
|
121
121
|
success: "Obrigado por efectuar o registo!"
|
122
|
-
must_activate: "Deve ativar o seu registo antes de se identificar. Por favor, verifique na sua caixa de correio electrônico.
|
122
|
+
must_activate: "Deve ativar o seu registo antes de se identificar. Por favor, verifique na sua caixa de correio electrônico."
|
123
123
|
login:
|
124
124
|
success: "Está indetificado no sistema."
|
125
125
|
error: "Não especificou um utilizador válido ({{login}}) e respectiva palavra-chave!"
|
@@ -178,7 +178,7 @@
|
|
178
178
|
|
179
179
|
admin:
|
180
180
|
subsite_name: "Administração"
|
181
|
-
invite_new_user: "
|
181
|
+
invite_new_user: "Convidar Novo Utilizador"
|
182
182
|
|
183
183
|
subsite:
|
184
184
|
back_link: "Sítio Principal"
|
@@ -1,10 +1,11 @@
|
|
1
1
|
require 'rails/generators/active_record'
|
2
|
+
require 'generators/hobo_support/model'
|
2
3
|
|
3
4
|
module Hobo
|
4
5
|
class ModelGenerator < ActiveRecord::Generators::Base
|
5
6
|
source_root File.expand_path('../templates', __FILE__)
|
6
7
|
|
7
|
-
include Generators::
|
8
|
+
include Generators::HoboSupport::Model
|
8
9
|
|
9
10
|
end
|
10
11
|
end
|
@@ -33,7 +33,7 @@ module Hobo
|
|
33
33
|
:desc => "Generate migration only"
|
34
34
|
|
35
35
|
class_option :migration_migrate, :type => :boolean,
|
36
|
-
:desc => "Generate migration and migrate"
|
36
|
+
:desc => "Generate migration and migrate", :default => true
|
37
37
|
|
38
38
|
class_option :default_locale, :type => :string,
|
39
39
|
:desc => "Sets the default locale"
|
@@ -51,9 +51,9 @@ module Hobo
|
|
51
51
|
def startup
|
52
52
|
if wizard?
|
53
53
|
say_title options[:main_title] ? 'Hobo Setup Wizard' : 'Startup'
|
54
|
-
say 'Installing
|
54
|
+
say 'Installing Hobo assets...'
|
55
55
|
end
|
56
|
-
invoke 'hobo:
|
56
|
+
invoke 'hobo:assets'
|
57
57
|
end
|
58
58
|
|
59
59
|
def choose_test_framework
|
@@ -78,12 +78,12 @@ module Hobo
|
|
78
78
|
:update => true
|
79
79
|
end
|
80
80
|
|
81
|
-
def
|
81
|
+
def site_options
|
82
82
|
if wizard?
|
83
83
|
say_title 'Invite Only Option'
|
84
84
|
return unless (@invite_only = yes_no?("Do you want to add the features for an invite only website?"))
|
85
|
-
private_site = yes_no?("Do you want to prevent all access to the site to non-members
|
86
|
-
say %( If you wish to prevent all access to some controller to non-members, add 'before_filter :login_required'
|
85
|
+
private_site = yes_no?("Do you want to prevent all access to the site to non-members?\n(Choose 'y' only if ALL your site will be private, choose 'n' if at least one controller will be public)")
|
86
|
+
say( %( If you wish to prevent all access to some controller to non-members, add 'before_filter :login_required'
|
87
87
|
to the relevant controllers:
|
88
88
|
|
89
89
|
include Hobo::Controller::AuthenticationSupport
|
@@ -92,7 +92,7 @@ to the relevant controllers:
|
|
92
92
|
(note that the include statement is not required for hobo_controllers)
|
93
93
|
|
94
94
|
NOTE: You might want to sign up as the administrator before adding this!
|
95
|
-
), Color::YELLOW
|
95
|
+
), Color::YELLOW) unless private_site
|
96
96
|
else
|
97
97
|
@invite_only = invite_only?
|
98
98
|
private_site = options[:private_site]
|
@@ -113,7 +113,7 @@ EOI
|
|
113
113
|
invoke 'hobo:rapid'
|
114
114
|
end
|
115
115
|
|
116
|
-
def
|
116
|
+
def user_options
|
117
117
|
if wizard?
|
118
118
|
say_title 'User Resource'
|
119
119
|
@user_resource_name = ask("Choose a name for the user resource [<enter>=user|<custom_name>]:", 'user')
|
@@ -158,10 +158,10 @@ EOI
|
|
158
158
|
:invite_only => @invite_only
|
159
159
|
end
|
160
160
|
|
161
|
-
def
|
161
|
+
def generate_migration
|
162
162
|
if wizard?
|
163
163
|
say_title 'DB Migration'
|
164
|
-
action = choose(
|
164
|
+
action = choose("Initial Migration: [s]kip, [g]enerate migration file only, generate and [m]igrate [s|g|m]:", /^(s|g|m)$/)
|
165
165
|
opt = case action
|
166
166
|
when 's'
|
167
167
|
return say('Migration skipped!')
|
@@ -172,8 +172,8 @@ EOI
|
|
172
172
|
end
|
173
173
|
say action == 'g' ? 'Generating Migration...' : 'Migrating...'
|
174
174
|
else
|
175
|
-
return if options[:migration_generate]
|
176
|
-
opt = options[:migration_migrate]
|
175
|
+
return if !options[:migration_generate] && !options[:migration_migrate]
|
176
|
+
opt = options[:migration_migrate] ? {:migrate => true} : {:generate => true}
|
177
177
|
end
|
178
178
|
rake 'db:setup'
|
179
179
|
invoke 'hobo:migration', ['initial_migration'], opt
|
@@ -20,7 +20,7 @@ module Generators
|
|
20
20
|
end
|
21
21
|
say "Renaming app/views/taglibs/application.dryml to app/views/taglibs/front_site.dryml" \
|
22
22
|
unless options[:quiet]
|
23
|
-
FileUtils.mv('app/views/taglibs/application.dryml', "app/views/taglibs/front_site.dryml")
|
23
|
+
FileUtils.mv('app/views/taglibs/application.dryml', "app/views/taglibs/front_site.dryml") unless options[:pretend]
|
24
24
|
copy_file "application.dryml", 'app/views/taglibs/application.dryml'
|
25
25
|
end
|
26
26
|
|
@@ -2,31 +2,24 @@ class <%= class_name -%>Mailer < ActionMailer::Base
|
|
2
2
|
default :from => "no-reply@#{host}"
|
3
3
|
|
4
4
|
def forgot_password(user, key)
|
5
|
-
|
5
|
+
@user, @key = user, key
|
6
6
|
mail( :subject => "#{app_name} -- forgotten password",
|
7
7
|
:to => user.email_address )
|
8
8
|
end
|
9
9
|
|
10
10
|
<% if invite_only? -%>
|
11
11
|
def invite(user, key)
|
12
|
-
|
12
|
+
@user, @key = user, key
|
13
13
|
mail( :subject => "Invitation to #{app_name}",
|
14
14
|
:to => user.email_address )
|
15
15
|
end
|
16
16
|
|
17
17
|
<% elsif options[:activation_email] %>
|
18
18
|
def activation(user, key)
|
19
|
-
|
19
|
+
@user, @key = user, key
|
20
20
|
mail :subject => "#{app_name} -- activate",
|
21
21
|
:to => user.email_address
|
22
22
|
end
|
23
23
|
|
24
24
|
<% end -%>
|
25
|
-
private
|
26
|
-
|
27
|
-
def set_variables(user, key)
|
28
|
-
@user = user
|
29
|
-
@key = key
|
30
|
-
end
|
31
|
-
|
32
25
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'generators/hobo_support/model'
|
1
2
|
module Hobo
|
2
3
|
class UserModelGenerator < Rails::Generators::NamedBase
|
3
4
|
source_root File.expand_path('../templates', __FILE__)
|
@@ -5,7 +6,7 @@ module Hobo
|
|
5
6
|
# overrides the default
|
6
7
|
argument :name, :type => :string, :default => 'user', :optional => true
|
7
8
|
|
8
|
-
include Generators::
|
9
|
+
include Generators::HoboSupport::Model
|
9
10
|
include Generators::Hobo::InviteOnly
|
10
11
|
include Generators::Hobo::ActivationEmail
|
11
12
|
|
@@ -356,9 +356,7 @@ module Hobo
|
|
356
356
|
def re_render_form(default_action=nil)
|
357
357
|
if params[:page_path]
|
358
358
|
@invalid_record = this
|
359
|
-
|
360
|
-
controller = opt[:controller]
|
361
|
-
action = opt[:action]
|
359
|
+
controller, action = controller_action_from_page_path
|
362
360
|
|
363
361
|
# Hack fix for Bug 477. See also bug 489.
|
364
362
|
if self.class.name == "#{controller.camelize}Controller" && action == "index"
|
@@ -399,16 +397,6 @@ module Hobo
|
|
399
397
|
end
|
400
398
|
|
401
399
|
|
402
|
-
def url_for_page_path
|
403
|
-
url_for ActionController::Routing::Routes.recognize_path(params[:page_path])
|
404
|
-
end
|
405
|
-
|
406
|
-
# TODO: Get rid of this joke of an idea that fails miserably if you open another browser window.
|
407
|
-
def previous_page_path
|
408
|
-
session[:previous_page_path]
|
409
|
-
end
|
410
|
-
|
411
|
-
|
412
400
|
def redirect_after_submit(*args)
|
413
401
|
options = args.extract_options!
|
414
402
|
o = options[:redirect]
|
data/lib/hobo/helper.rb
CHANGED
@@ -126,6 +126,18 @@ module Hobo
|
|
126
126
|
end
|
127
127
|
|
128
128
|
|
129
|
+
def recognize_page_path
|
130
|
+
ActionController::Routing::Routes.recognize_path(params[:page_path])
|
131
|
+
end
|
132
|
+
|
133
|
+
def url_for_page_path(options={})
|
134
|
+
url_for recognize_page_path.merge(options)
|
135
|
+
end
|
136
|
+
|
137
|
+
def controller_action_from_page_path
|
138
|
+
recognize_page_path.values_at(:controller,:action)
|
139
|
+
end
|
140
|
+
|
129
141
|
def _as_params(name, obj)
|
130
142
|
if obj.is_a? Array
|
131
143
|
obj.map {|x| _as_params("#{name}[]", x)}.join("&")
|
data/lib/hobo/model.rb
CHANGED
@@ -330,7 +330,15 @@ module Hobo
|
|
330
330
|
|
331
331
|
def view_hints
|
332
332
|
class_name = "#{name}Hints"
|
333
|
-
class_name.safe_constantize or Object.class_eval("class #{class_name} < Hobo::ViewHints; end; #{class_name}")
|
333
|
+
class_name.safe_constantize or Object.class_eval("class #{class_name} < Hobo::Model::ViewHints; end; #{class_name}")
|
334
|
+
end
|
335
|
+
|
336
|
+
def children(*args)
|
337
|
+
view_hints.children *args
|
338
|
+
end
|
339
|
+
|
340
|
+
def inline_booleans(*args)
|
341
|
+
view_hints.inline_booleans *args
|
334
342
|
end
|
335
343
|
|
336
344
|
def table_exists?
|
@@ -0,0 +1,102 @@
|
|
1
|
+
module Hobo
|
2
|
+
module Model
|
3
|
+
class ViewHints
|
4
|
+
|
5
|
+
def self.setter(name, default=nil, &block)
|
6
|
+
ivname = name.to_s.remove(/\?$/)
|
7
|
+
metaclass.send :define_method, name do |*args|
|
8
|
+
if args.empty?
|
9
|
+
val = instance_variable_get("@#{ivname}")
|
10
|
+
if val.nil?
|
11
|
+
val = default.is_a?(Proc) ? instance_eval(&default) : default
|
12
|
+
instance_variable_set("@#{ivname}", val)
|
13
|
+
end
|
14
|
+
val
|
15
|
+
else
|
16
|
+
arg = if block
|
17
|
+
instance_exec(*args, &block)
|
18
|
+
else
|
19
|
+
args.first
|
20
|
+
end
|
21
|
+
instance_variable_set("@#{ivname}", arg)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
setter :children, [] do |*args|
|
27
|
+
# Setting children also gives a default parent using the reverse association
|
28
|
+
child_model = model.reflections[args.first].klass
|
29
|
+
if child_model.view_hints.parent.nil? and !child_model.view_hints.parent_defined
|
30
|
+
parent = model.reverse_reflection(args.first)
|
31
|
+
child_model.view_hints.parent(parent.name, :undefined => true) if parent
|
32
|
+
end
|
33
|
+
args
|
34
|
+
end
|
35
|
+
|
36
|
+
setter :parent, nil do |*args|
|
37
|
+
options = args.extract_options!
|
38
|
+
parent_defined(true) unless options[:undefined]
|
39
|
+
args.first
|
40
|
+
end
|
41
|
+
|
42
|
+
setter :parent_defined, nil
|
43
|
+
|
44
|
+
setter :paginate?, proc { !sortable? }
|
45
|
+
|
46
|
+
setter :sortable?, proc { defined?(ActiveRecord::Acts::List::InstanceMethods) &&
|
47
|
+
model < ActiveRecord::Acts::List::InstanceMethods &&
|
48
|
+
model.new.try.scope_condition == "1 = 1" }
|
49
|
+
|
50
|
+
setter :inline_booleans, [] do |*args|
|
51
|
+
if args[0] == true
|
52
|
+
model.columns.select { |c| c.type == :boolean }.*.name
|
53
|
+
else
|
54
|
+
args.*.to_s
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# Accessors
|
59
|
+
|
60
|
+
class << self
|
61
|
+
|
62
|
+
def _name
|
63
|
+
@_name ||= name.sub(/Hints$/, '')
|
64
|
+
end
|
65
|
+
|
66
|
+
def model
|
67
|
+
@model ||= _name.constantize
|
68
|
+
end
|
69
|
+
|
70
|
+
def primary_children
|
71
|
+
children.first
|
72
|
+
end
|
73
|
+
|
74
|
+
def secondary_children
|
75
|
+
children.rest
|
76
|
+
end
|
77
|
+
|
78
|
+
|
79
|
+
##### LEGACY METHODS TO REMOVE #####
|
80
|
+
|
81
|
+
def model_name(*)
|
82
|
+
raise NotImplementedError, "ViewHints.model_name is no longer supported, please use model.model_name.human and set a the activerecord.models.<model_name> key in a locale file"
|
83
|
+
end
|
84
|
+
|
85
|
+
def model_name_plural(*)
|
86
|
+
raise NotImplementedError, "ViewHints.model_name_plural is no longer supported, please use model.model_name.human(:count => n) and set a the activerecord.models.<model_name> key in a locale file"
|
87
|
+
end
|
88
|
+
|
89
|
+
def field_name(*)
|
90
|
+
raise NotImplementedError, "ViewHints.field_name is no longer supported, please use model..human_attribute_name and set a the activerecord.attributes.<model_name>.<field_name> key in a locale file"
|
91
|
+
end
|
92
|
+
|
93
|
+
def field_names(*)
|
94
|
+
raise NotImplementedError, "ViewHints.field_names is no longer supported, please set the activerecord.attributes.<model_name>.<field_name> keys in a locale file"
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
end
|
@@ -236,6 +236,8 @@ Provides a short hand way of displaying images in public/images
|
|
236
236
|
|
237
237
|
<!-- Renders a human readable name of a collection
|
238
238
|
|
239
|
+
This tag has been deprecated in favour of human-collection-name
|
240
|
+
|
239
241
|
### Details
|
240
242
|
|
241
243
|
- Uses `this.origin_attribute` as the name.
|
@@ -417,7 +419,7 @@ Assuming the context is a blog post...
|
|
417
419
|
<view:created_at no-wrapper/> -> June 09, 2008 15:36
|
418
420
|
-->
|
419
421
|
<def tag="view" attrs="inline, block, if-blank, no-wrapper, truncate"><%=
|
420
|
-
raise Hobo::
|
422
|
+
raise Hobo::PermissionDeniedError, "view of non-viewable field '#{this_field}' of #{this_parent.typed_id rescue this_parent}" unless
|
421
423
|
can_view?
|
422
424
|
|
423
425
|
res = if this.nil? && if_blank.nil?
|
@@ -644,6 +646,11 @@ that you add the keys in the correct namespaces.
|
|
644
646
|
|
645
647
|
- capitalize: the first letter of the resulting sentence will be capitalized
|
646
648
|
|
649
|
+
|
650
|
+
### Additional Notes
|
651
|
+
|
652
|
+
The "titleize" attribute is deprecated: use "capitalize" instead.
|
653
|
+
|
647
654
|
-->
|
648
655
|
<def tag="you" attrs="titleize, capitalize">
|
649
656
|
<% Rails.logger.warn "'titleize' is a deprecated attribute of the 'you' tag. Please, use 'capitalize' instead." -%>
|
@@ -652,7 +652,7 @@ For situations where there are too many target records to practically include in
|
|
652
652
|
|
653
653
|
-->
|
654
654
|
<def tag="select-one" attrs="include-none, blank-message, options, sort, limit, text-method"><%
|
655
|
-
raise Hobo::
|
655
|
+
raise Hobo::PermissionDeniedError.new("Not allowed to edit #{this_field}") if !attributes[:disabled] && !can_edit?
|
656
656
|
blank_message ||= ht("#{this_type.name.tableize}.message.no", :default=>"(No #{this_type.model_name.human})")
|
657
657
|
limit ||= 100
|
658
658
|
|
@@ -21,7 +21,7 @@
|
|
21
21
|
<unless test="&this.member_class.nil?">
|
22
22
|
<div class="empty-collection-message" style="#{'display:none' if !this.empty?}" param="default">
|
23
23
|
<ht key="#{this.member_class.name.tableize}.collection.empty_message">
|
24
|
-
No <collection-name
|
24
|
+
No <human-collection-name count="0"/> to display
|
25
25
|
</ht>
|
26
26
|
</div>
|
27
27
|
</unless>
|
@@ -17,8 +17,7 @@ There is a default :count => 1
|
|
17
17
|
I18n.t(k, {:default=>all_parameters.default}.merge(options)).html_safe
|
18
18
|
%></def>
|
19
19
|
|
20
|
-
<!-- Wrapper around ActiveModel::Name#human
|
21
|
-
It dynamically pluralizes the human name by using the implicit model.count.
|
20
|
+
<!-- Wrapper around ActiveModel::Name#human
|
22
21
|
|
23
22
|
#### Attributes
|
24
23
|
|
@@ -28,7 +28,7 @@ An [worked example](/tutorials/agility#improve_the_project_page_with_a_searchabl
|
|
28
28
|
<% col = sort_columns[scope.field_path] || scope.field_path
|
29
29
|
sort = sort_field == col && sort_direction == 'asc' ?
|
30
30
|
"-#{col}" : col
|
31
|
-
sort_url =
|
31
|
+
sort_url = url_for_page_path(params.merge(:sort => sort) - [:page])
|
32
32
|
col_heading_name = this.member_class.try.human_attribute_name(scope.field_name, :default=> scope.field_name.titleize) %>
|
33
33
|
|
34
34
|
<th param="#{scope.field-name}-heading">
|
@@ -45,7 +45,7 @@ An [worked example](/tutorials/agility#improve_the_project_page_with_a_searchabl
|
|
45
45
|
</table>
|
46
46
|
<empty-collection-message param="empty-message"/>
|
47
47
|
|
48
|
-
<page-nav param if="&this.respond_to?(:page_count) || this.respond_to?(:total_pages)"/>
|
48
|
+
<page-nav param params="&recognize_page_path.slice(:controller,:action)" if="&this.respond_to?(:page_count) || this.respond_to?(:total_pages)"/>
|
49
49
|
</div>
|
50
50
|
</def>
|
51
51
|
|
@@ -5,11 +5,6 @@
|
|
5
5
|
<%= Rails.version -%>
|
6
6
|
</def>
|
7
7
|
|
8
|
-
<!-- returns "vendor" or "gem" -->
|
9
|
-
<def tag="rails-location">
|
10
|
-
<%= Rails.vendor_rails? ? "vendor" : "gem" -%>
|
11
|
-
</def>
|
12
|
-
|
13
8
|
<!-- `Rails.root` -->
|
14
9
|
<def tag="rails-root">
|
15
10
|
<%= Rails.root -%>
|
@@ -84,13 +79,7 @@
|
|
84
79
|
|
85
80
|
<!-- repeats on Rails.configuration.gems, including dependent gems -->
|
86
81
|
<def tag="with-gems">
|
87
|
-
<% gems =
|
88
|
-
<% Rails.configuration.gems.each do |gem|
|
89
|
-
gems[name] ||= gem
|
90
|
-
gem.dependencies.each do |dep|
|
91
|
-
gems[dep] ||= dep
|
92
|
-
end
|
93
|
-
end -%>
|
82
|
+
<% gems = Bundler::LockfileParser.new(File.read('Gemfile.lock')).specs -%>
|
94
83
|
<repeat with="&gems">
|
95
84
|
<do param="default"/>
|
96
85
|
</repeat>
|
@@ -101,37 +90,19 @@
|
|
101
90
|
<%= this.name -%>
|
102
91
|
</def>
|
103
92
|
|
104
|
-
<def tag="gem-version-requirement">
|
105
|
-
<unless test="this.nil?"><%=
|
106
|
-
this.requirements.map{|l| l.first+l.second.to_s}.join(",")
|
107
|
-
-%></unless>
|
108
|
-
</def>
|
109
|
-
|
110
|
-
<!-- inside `<with-gems>`, returns the version required -->
|
111
|
-
<def tag="gem-version-required">
|
112
|
-
<gem-version-requirement:version-requirements />
|
113
|
-
</def>
|
114
|
-
|
115
93
|
<!-- inside `<with-gems>`, returns the version -->
|
116
94
|
<def tag="gem-version">
|
117
|
-
<%= this.
|
118
|
-
</def>
|
119
|
-
|
120
|
-
<!-- inside `<with-gems>`, returns 'frozen', 'installed' or 'missing' -->
|
121
|
-
<def tag="gem-frozen">
|
122
|
-
<%= this.frozen? ? "frozen" : (this.installed? ? "installed" : "missing") -%>
|
95
|
+
<%= this.version.to_s -%>
|
123
96
|
</def>
|
124
97
|
|
125
98
|
<!-- inside `<with-gems>`, returns the gem dependencies -->
|
126
99
|
<def tag="gem-dependencies">
|
127
|
-
|
128
|
-
<%= this.name -%><gem-version-requirement with="&this.requirement || this.version_requirements" />
|
129
|
-
</repeat>
|
100
|
+
<%= this.dependencies(&it.to_s).safe_join('<br>'.html_safe) -%>
|
130
101
|
</def>
|
131
102
|
|
132
103
|
<!-- repeats on the plugins used by the application -->
|
133
104
|
<def tag="with-plugins">
|
134
|
-
<% plugins = Rails.
|
105
|
+
<% plugins = Rails.application.railties.plugins %>
|
135
106
|
<repeat with="&plugins">
|
136
107
|
<do param="default" />
|
137
108
|
</repeat>
|
@@ -139,31 +110,31 @@
|
|
139
110
|
|
140
111
|
<!-- within `<with-plugins>`, returns the plugin name -->
|
141
112
|
<def tag="plugin-name">
|
142
|
-
<%= this.name -%>
|
113
|
+
<%= this.name.to_s -%>
|
143
114
|
</def>
|
144
115
|
|
145
116
|
<!-- within `<with-plugins>`, returns the plugin location (directory) -->
|
146
117
|
<def tag="plugin-location">
|
147
|
-
<%= this.
|
118
|
+
<%= this.root.to_s -%>
|
148
119
|
</def>
|
149
120
|
|
150
121
|
<def tag="plugin-git-clean">
|
151
|
-
<git-clean dir="&this.
|
122
|
+
<git-clean dir="&this.root.to_s"/>
|
152
123
|
</def>
|
153
124
|
|
154
125
|
<def tag="plugin-git-version">
|
155
|
-
<git-version dir="&this.
|
126
|
+
<git-version dir="&this.root.to_s"/>
|
156
127
|
</def>
|
157
128
|
|
158
129
|
<!-- within `<with-plugins>`, try and determine the method that was used to install the plugin. Returns "braid", "symlink", "git-submodule" or "other" -->
|
159
130
|
<def tag="plugin-method">
|
160
131
|
<%=
|
161
132
|
braids = File.open("#{Rails.root}/.braids") {|f| YAML::load(f) } rescue {}
|
162
|
-
if !braids[this.
|
133
|
+
if !braids[this.root.to_s.gsub(Rails.root+"/", "")].nil?
|
163
134
|
"braid"
|
164
|
-
elsif File.lstat(this.
|
135
|
+
elsif File.lstat(this.root.to_s).symlink?
|
165
136
|
"symlink"
|
166
|
-
elsif File.exist?(this.
|
137
|
+
elsif File.exist?(this.root.to_s+"/.git")
|
167
138
|
"git-submodule"
|
168
139
|
else
|
169
140
|
"other"
|
@@ -281,7 +252,7 @@
|
|
281
252
|
<!-- given a column in the context and the model as an attribute, returns the comment for the column. It returns the SQL comment if that is available (using the activerecord-comments plugin). If that is not available, it returns the HoboFields comment. -->
|
282
253
|
|
283
254
|
<def tag="model-column-comment" attrs="model">
|
284
|
-
<%= this.try.comment || model.try.field_specs.try.get(this.name).try.comment -%>
|
255
|
+
<%= this.try.comment || model.try.field_specs.try.get(this.name).try.first.try.comment -%>
|
285
256
|
</def>
|
286
257
|
|
287
258
|
<!-- given a model, repeats on the associations -->
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require File.expand_path('../helper.rb', __FILE__)
|
2
2
|
|
3
3
|
|
4
|
-
desc "hobo:
|
5
|
-
invoke 'hobo:
|
4
|
+
desc "hobo:assets invoke"
|
5
|
+
invoke 'hobo:assets', %w(-q)
|
6
6
|
|
7
7
|
files_exist? %w[ app/views/taglibs/application.dryml
|
8
8
|
public/stylesheets/application.css
|
@@ -7,8 +7,7 @@ files_exist? %w[ app/controllers/front_controller.rb
|
|
7
7
|
app/helpers/front_helper.rb
|
8
8
|
test/unit/helpers/front_helper_test.rb
|
9
9
|
test/functional/front_controller_test.rb
|
10
|
-
app/views/front/index.dryml
|
11
|
-
app/views/front/summary.dryml ]
|
10
|
+
app/views/front/index.dryml ]
|
12
11
|
test_value_eql? true
|
13
12
|
|
14
13
|
desc "public/index.html removed"
|
@@ -20,7 +19,6 @@ desc "front_controller.rb content matches"
|
|
20
19
|
file_include? 'app/controllers/front_controller.rb',
|
21
20
|
'hobo_controller',
|
22
21
|
'def index',
|
23
|
-
'def summary',
|
24
22
|
'def search'
|
25
23
|
test_value_eql? true
|
26
24
|
|
@@ -21,7 +21,7 @@ eval_file '../partials/_subsite_taglib_noopt.rb'
|
|
21
21
|
|
22
22
|
git_reset_app
|
23
23
|
|
24
|
-
invoke 'hobo:
|
24
|
+
invoke 'hobo:assets', %w[ -q ]
|
25
25
|
invoke 'hobo:subsite', %w[ subs -q --make-front-site]
|
26
26
|
desc "Subsite with make-front-site files exist"
|
27
27
|
files_exist? %w[ app/views/taglibs/front_site.dryml
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hobo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: -
|
4
|
+
hash: -1637175967
|
5
5
|
prerelease: true
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 3
|
9
9
|
- 0
|
10
|
-
-
|
11
|
-
version: 1.3.0.
|
10
|
+
- pre18
|
11
|
+
version: 1.3.0.pre18
|
12
12
|
platform: ruby
|
13
13
|
authors:
|
14
14
|
- Tom Locke
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2010-11-
|
19
|
+
date: 2010-11-19 00:00:00 -04:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -59,13 +59,13 @@ dependencies:
|
|
59
59
|
requirements:
|
60
60
|
- - "="
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
hash: -
|
62
|
+
hash: -1637175967
|
63
63
|
segments:
|
64
64
|
- 1
|
65
65
|
- 3
|
66
66
|
- 0
|
67
|
-
-
|
68
|
-
version: 1.3.0.
|
67
|
+
- pre18
|
68
|
+
version: 1.3.0.pre18
|
69
69
|
type: :runtime
|
70
70
|
version_requirements: *id003
|
71
71
|
- !ruby/object:Gem::Dependency
|
@@ -76,13 +76,13 @@ dependencies:
|
|
76
76
|
requirements:
|
77
77
|
- - "="
|
78
78
|
- !ruby/object:Gem::Version
|
79
|
-
hash: -
|
79
|
+
hash: -1637175967
|
80
80
|
segments:
|
81
81
|
- 1
|
82
82
|
- 3
|
83
83
|
- 0
|
84
|
-
-
|
85
|
-
version: 1.3.0.
|
84
|
+
- pre18
|
85
|
+
version: 1.3.0.pre18
|
86
86
|
type: :runtime
|
87
87
|
version_requirements: *id004
|
88
88
|
- !ruby/object:Gem::Dependency
|
@@ -93,13 +93,13 @@ dependencies:
|
|
93
93
|
requirements:
|
94
94
|
- - "="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
hash: -
|
96
|
+
hash: -1637175967
|
97
97
|
segments:
|
98
98
|
- 1
|
99
99
|
- 3
|
100
100
|
- 0
|
101
|
-
-
|
102
|
-
version: 1.3.0.
|
101
|
+
- pre18
|
102
|
+
version: 1.3.0.pre18
|
103
103
|
type: :runtime
|
104
104
|
version_requirements: *id005
|
105
105
|
- !ruby/object:Gem::Dependency
|
@@ -162,6 +162,7 @@ files:
|
|
162
162
|
- VERSION
|
163
163
|
- app/controllers/dev_controller.rb
|
164
164
|
- app/controllers/dryml_support_controller.rb
|
165
|
+
- app/views/dev/summary.dryml
|
165
166
|
- bin/hobo
|
166
167
|
- config/initializers/inflections.rb
|
167
168
|
- config/routes.rb
|
@@ -177,13 +178,13 @@ files:
|
|
177
178
|
- lib/generators/hobo/admin_subsite/templates/admin_tag_injection.erb
|
178
179
|
- lib/generators/hobo/admin_subsite/templates/controller.rb.erb
|
179
180
|
- lib/generators/hobo/admin_subsite/templates/users_index.dryml
|
180
|
-
- lib/generators/hobo/
|
181
|
-
- lib/generators/hobo/
|
182
|
-
- lib/generators/hobo/
|
183
|
-
- lib/generators/hobo/
|
184
|
-
- lib/generators/hobo/
|
185
|
-
- lib/generators/hobo/
|
186
|
-
- lib/generators/hobo/
|
181
|
+
- lib/generators/hobo/assets/assets_generator.rb
|
182
|
+
- lib/generators/hobo/assets/templates/application.css
|
183
|
+
- lib/generators/hobo/assets/templates/application.dryml.erb
|
184
|
+
- lib/generators/hobo/assets/templates/dryml-support.js
|
185
|
+
- lib/generators/hobo/assets/templates/dryml_taglibs_initializer.rb
|
186
|
+
- lib/generators/hobo/assets/templates/en_injection.yml
|
187
|
+
- lib/generators/hobo/assets/templates/guest.rb
|
187
188
|
- lib/generators/hobo/controller.rb
|
188
189
|
- lib/generators/hobo/controller/controller_generator.rb
|
189
190
|
- lib/generators/hobo/controller/templates/controller.rb.erb
|
@@ -191,10 +192,6 @@ files:
|
|
191
192
|
- lib/generators/hobo/front_controller/front_controller_generator.rb
|
192
193
|
- lib/generators/hobo/front_controller/templates/controller.rb.erb
|
193
194
|
- lib/generators/hobo/front_controller/templates/index.dryml
|
194
|
-
- lib/generators/hobo/front_controller/templates/summary.dryml
|
195
|
-
- lib/generators/hobo/hints/hints_generator.rb
|
196
|
-
- lib/generators/hobo/hints/templates/hints.rb.erb
|
197
|
-
- lib/generators/hobo/hints/templates/model_injection.rb.erb
|
198
195
|
- lib/generators/hobo/i18n/i18n_generator.rb
|
199
196
|
- lib/generators/hobo/i18n/templates/app.en.yml
|
200
197
|
- lib/generators/hobo/i18n/templates/app.es-DO.yml
|
@@ -205,7 +202,6 @@ files:
|
|
205
202
|
- lib/generators/hobo/i18n/templates/hobo.it.yml
|
206
203
|
- lib/generators/hobo/i18n/templates/hobo.pt-PT.yml
|
207
204
|
- lib/generators/hobo/invite_only.rb
|
208
|
-
- lib/generators/hobo/model.rb
|
209
205
|
- lib/generators/hobo/model/USAGE
|
210
206
|
- lib/generators/hobo/model/model_generator.rb
|
211
207
|
- lib/generators/hobo/model/templates/model_injection.rb.erb
|
@@ -296,6 +292,7 @@ files:
|
|
296
292
|
- lib/hobo/model/scopes/apply_scopes.rb
|
297
293
|
- lib/hobo/model/scopes/automatic_scopes.rb
|
298
294
|
- lib/hobo/model/user.rb
|
295
|
+
- lib/hobo/model/view_hints.rb
|
299
296
|
- lib/hobo/rapid/generators/rapid/cards.dryml.erb
|
300
297
|
- lib/hobo/rapid/generators/rapid/forms.dryml.erb
|
301
298
|
- lib/hobo/rapid/generators/rapid/pages.dryml.erb
|
@@ -317,10 +314,9 @@ files:
|
|
317
314
|
- lib/hobo/rapid/taglibs/rapid_user_pages.dryml
|
318
315
|
- lib/hobo/routes.rb
|
319
316
|
- lib/hobo/undefined.rb
|
320
|
-
- lib/hobo/view_hints.rb
|
321
317
|
- test/doctest/hobo/hobo_helper.rdoctest
|
322
318
|
- test/irt/generators/admin_subsite.irt
|
323
|
-
- test/irt/generators/
|
319
|
+
- test/irt/generators/assets.irt
|
324
320
|
- test/irt/generators/controller.irt
|
325
321
|
- test/irt/generators/front_controller.irt
|
326
322
|
- test/irt/generators/helper.rb
|
@@ -1,12 +0,0 @@
|
|
1
|
-
module Hobo
|
2
|
-
class HintsGenerator < Rails::Generators::NamedBase
|
3
|
-
source_root File.expand_path('../templates', __FILE__)
|
4
|
-
|
5
|
-
check_class_collision :suffix => 'Hints'
|
6
|
-
|
7
|
-
def generate_hints
|
8
|
-
template 'hints.rb.erb', File.join("app/viewhints", "#{file_path}_hints.rb")
|
9
|
-
end
|
10
|
-
|
11
|
-
end
|
12
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
|
2
|
-
hobo_model # Don't put anything above this
|
3
|
-
|
4
|
-
fields do
|
5
|
-
<% for attribute in field_attributes -%>
|
6
|
-
<%= "%-#{max_attribute_length}s" % attribute.name %> :<%= attribute.type %>
|
7
|
-
<% end -%>
|
8
|
-
timestamps
|
9
|
-
end
|
10
|
-
|
11
|
-
<% for bt in bts -%>
|
12
|
-
belongs_to :<%= bt %>
|
13
|
-
<% end -%>
|
14
|
-
<%= "\n" unless bts.empty? -%>
|
15
|
-
<% for hm in hms -%>
|
16
|
-
has_many :<%= hm %>, :dependent => :destroy
|
17
|
-
<% end -%>
|
18
|
-
<%= "\n" unless hms.empty? -%>
|
19
|
-
# --- Permissions --- #
|
20
|
-
|
21
|
-
def create_permitted?
|
22
|
-
acting_user.administrator?
|
23
|
-
end
|
24
|
-
|
25
|
-
def update_permitted?
|
26
|
-
acting_user.administrator?
|
27
|
-
end
|
28
|
-
|
29
|
-
def destroy_permitted?
|
30
|
-
acting_user.administrator?
|
31
|
-
end
|
32
|
-
|
33
|
-
def view_permitted?(field)
|
34
|
-
true
|
35
|
-
end
|
36
|
-
|
data/lib/hobo/view_hints.rb
DELETED
@@ -1,101 +0,0 @@
|
|
1
|
-
module Hobo
|
2
|
-
|
3
|
-
class ViewHints
|
4
|
-
|
5
|
-
def self.setter(name, default=nil, &block)
|
6
|
-
ivname = name.to_s.remove(/\?$/)
|
7
|
-
metaclass.send :define_method, name do |*args|
|
8
|
-
if args.empty?
|
9
|
-
val = instance_variable_get("@#{ivname}")
|
10
|
-
if val.nil?
|
11
|
-
val = default.is_a?(Proc) ? instance_eval(&default) : default
|
12
|
-
instance_variable_set("@#{ivname}", val)
|
13
|
-
end
|
14
|
-
val
|
15
|
-
else
|
16
|
-
arg = if block
|
17
|
-
instance_exec(*args, &block)
|
18
|
-
else
|
19
|
-
args.first
|
20
|
-
end
|
21
|
-
instance_variable_set("@#{ivname}", arg)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
setter :children, [] do |*args|
|
27
|
-
# Setting children also gives a default parent using the reverse association
|
28
|
-
child_model = model.reflections[args.first].klass
|
29
|
-
if child_model.view_hints.parent.nil? and !child_model.view_hints.parent_defined
|
30
|
-
parent = model.reverse_reflection(args.first)
|
31
|
-
child_model.view_hints.parent(parent.name, :undefined => true) if parent
|
32
|
-
end
|
33
|
-
args
|
34
|
-
end
|
35
|
-
|
36
|
-
setter :parent, nil do |*args|
|
37
|
-
options = args.extract_options!
|
38
|
-
parent_defined(true) unless options[:undefined]
|
39
|
-
args.first
|
40
|
-
end
|
41
|
-
|
42
|
-
setter :parent_defined, nil
|
43
|
-
|
44
|
-
setter :paginate?, proc { !sortable? }
|
45
|
-
|
46
|
-
setter :sortable?, proc { defined?(ActiveRecord::Acts::List::InstanceMethods) &&
|
47
|
-
model < ActiveRecord::Acts::List::InstanceMethods &&
|
48
|
-
model.new.try.scope_condition == "1 = 1" }
|
49
|
-
|
50
|
-
setter :inline_booleans, [] do |*args|
|
51
|
-
if args[0] == true
|
52
|
-
model.columns.select { |c| c.type == :boolean }.*.name
|
53
|
-
else
|
54
|
-
args.*.to_s
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
# Accessors
|
59
|
-
|
60
|
-
class << self
|
61
|
-
|
62
|
-
def _name
|
63
|
-
@_name ||= name.sub(/Hints$/, '')
|
64
|
-
end
|
65
|
-
|
66
|
-
def model
|
67
|
-
@model ||= _name.constantize
|
68
|
-
end
|
69
|
-
|
70
|
-
def primary_children
|
71
|
-
children.first
|
72
|
-
end
|
73
|
-
|
74
|
-
def secondary_children
|
75
|
-
children.rest
|
76
|
-
end
|
77
|
-
|
78
|
-
|
79
|
-
##### LEGACY METHODS TO REMOVE #####
|
80
|
-
|
81
|
-
def model_name(*)
|
82
|
-
raise NotImplementedError, "ViewHints.model_name is no longer supported, please use model.model_name.human and set a the activerecord.models.<model_name> key in a locale file"
|
83
|
-
end
|
84
|
-
|
85
|
-
def model_name_plural(*)
|
86
|
-
raise NotImplementedError, "ViewHints.model_name_plural is no longer supported, please use model.model_name.human(:count => n) and set a the activerecord.models.<model_name> key in a locale file"
|
87
|
-
end
|
88
|
-
|
89
|
-
def field_name(*)
|
90
|
-
raise NotImplementedError, "ViewHints.field_name is no longer supported, please use model..human_attribute_name and set a the activerecord.attributes.<model_name>.<field_name> key in a locale file"
|
91
|
-
end
|
92
|
-
|
93
|
-
def field_names(*)
|
94
|
-
raise NotImplementedError, "ViewHints.field_names is no longer supported, please set the activerecord.attributes.<model_name>.<field_name> keys in a locale file"
|
95
|
-
end
|
96
|
-
|
97
|
-
end
|
98
|
-
|
99
|
-
end
|
100
|
-
|
101
|
-
end
|