active_leonardo 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,2 +1,9 @@
1
+ 0.0.3 (May 23th, 2012) Marco Mastrodonato
2
+ * Improved cancan integration
3
+ * Localization yaml file cleaned from some previous leonardo stuff
4
+
5
+ 0.0.2 (May 23th, 2012) Marco Mastrodonato
6
+ * Minor changement
7
+
1
8
  0.0.1 (May 23th, 2012) Marco Mastrodonato
2
9
  * First release
@@ -44,33 +44,42 @@ gem "active_leonardo"
44
44
 
45
45
  gem 'state_machine' if yes?("Do you have to handle states ?")
46
46
 
47
- authorization = yes?("Authorization ?")
48
- gem 'cancan' if authorization
49
-
50
47
  authentication = yes?("Authentication ?")
48
+ model_name = authorization = nil
49
+ if authentication
50
+ default_model_name = "User"
51
+ model_name = ask(" Insert model name: [#{default_model_name}] (Other names are not tested yet)")
52
+ model_name = default_model_name if model_name.empty?
53
+
54
+ authorization = yes?("Authorization ?")
55
+ gem 'cancan' if authorization
56
+ end
51
57
 
52
- #home = yes?("Generate controller home ? (raccomanded)")
53
- home = true
58
+ dashboard_root = yes?("Would you use dashboard as root ? (recommended)")
59
+ home = yes?("Ok. Would you create home controller as root ?") unless dashboard_root
54
60
 
55
61
  if yes?("Bundle install ?")
56
62
  dir = ask(" Insert folder name to install locally: [blank=default gems path]")
57
63
  run "bundle install #{"--path=#{dir}" unless dir.empty?}"
58
64
  end
59
65
 
60
- generate "active_admin:install #{authentication ? "User" : "--skip-users"}"
66
+ generate "active_admin:install #{authentication ? model_name : "--skip-users"}"
61
67
 
62
68
  if authorization
63
69
  generate "cancan:ability"
64
- generate "migration", "AddRolesMaskToUsers", "roles_mask:integer"
70
+ generate "migration", "AddRolesMaskTo#{model_name}", "roles_mask:integer"
65
71
  end
66
72
 
67
73
  generate "leolay",
68
74
  "active", #specify theme
75
+ "--auth_class=#{model_name}",
69
76
  (authorization ? "" : "--skip-authorization"),
70
- (authentication ? "" : "--skip-authentication"),
77
+ (authentication ? "" : "--skip-authentication")
71
78
 
72
79
 
73
- if home
80
+ if dashboard_root
81
+ route "root :to => 'admin/dashboard#index'"
82
+ elsif home
74
83
  generate "controller", "home", "index"
75
84
  route "root :to => 'home#index'"
76
85
  end
@@ -1,15 +1,24 @@
1
1
  module ActiveLeonardo
2
2
  module Base
3
3
  protected
4
+ def authorization_file
5
+ "app/models/ability.rb"
6
+ end
4
7
  def authorization?
5
- File.exists? "app/models/ability.rb"
8
+ File.exists? authorization_file
9
+ end
10
+ def authentication_file auth_class="User"
11
+ "app/models/#{auth_class.downcase}.rb"
6
12
  end
7
- def authentication?
8
- return true if File.exists? "app/models/user.rb"
13
+ def authentication? auth_class="User"
14
+ return true if File.exists? authentication_file(auth_class)
9
15
  File.exists? "config/initializers/devise.rb"
10
16
  end
17
+ def activeadmin_file
18
+ "config/initializers/active_admin.rb"
19
+ end
11
20
  def activeadmin?
12
- File.exists? "config/initializers/active_admin.rb"
21
+ File.exists? activeadmin_file
13
22
  end
14
23
  #def formtastic?
15
24
  # return false unless options.formtastic?
@@ -1,4 +1,8 @@
1
+ require File.join(File.dirname(__FILE__), '../active_leonardo')
2
+
1
3
  class LeolayGenerator < Rails::Generators::Base
4
+ include ::ActiveLeonardo::Base
5
+
2
6
  source_root File.expand_path('../templates', __FILE__)
3
7
  argument :style, :type => :string, :default => "active"
4
8
  #class_option :pagination, :type => :boolean, :default => true, :desc => "Include pagination files"
@@ -7,7 +11,7 @@ class LeolayGenerator < Rails::Generators::Base
7
11
  class_option :authentication, :type => :boolean, :default => true, :desc => "Add code to manage authentication with devise"
8
12
  class_option :authorization, :type => :boolean, :default => true, :desc => "Add code to manage authorization with cancan"
9
13
  class_option :activeadmin, :type => :boolean, :default => true, :desc => "Add code to manage activeadmin gem"
10
- class_option :auth_class, :type => :boolean, :default => 'User', :desc => "Set the authentication class name"
14
+ class_option :auth_class, :type => :string, :default => 'User', :desc => "Set the authentication class name"
11
15
  #class_option :formtastic, :type => :boolean, :default => true, :desc => "Copy formtastic files into leosca custom folder (inside project)"
12
16
  #class_option :jquery_ui, :type => :boolean, :default => true, :desc => "To use jQuery ui improvement"
13
17
  #class_option :rspec, :type => :boolean, :default => true, :desc => "Include custom rspec generator and custom templates"
@@ -125,7 +129,6 @@ class LeolayGenerator < Rails::Generators::Base
125
129
  end
126
130
  I18n.locale = session[:lang]
127
131
  end
128
- require "upd_activeadmin"
129
132
  FILE
130
133
  end
131
134
  end
@@ -154,7 +157,7 @@ class LeolayGenerator < Rails::Generators::Base
154
157
  #puts "File #{file} #{File.exists?(file) ? "" : "does not"} exists!"
155
158
  return unless options.authentication? and File.exists?(file)
156
159
 
157
- inject_into_class file, User do
160
+ inject_into_class file, options[:auth_class] do
158
161
  <<-FILE.gsub(/^ /, '')
159
162
  ROLES = %w[admin manager user guest]
160
163
  scope :with_role, lambda { |role| {:conditions => "roles_mask & \#{2**ROLES.index(role.to_s)} > 0 "} }
@@ -174,6 +177,7 @@ class LeolayGenerator < Rails::Generators::Base
174
177
  def admin?
175
178
  self.role? 'admin'
176
179
  end
180
+ attr_accessible :roles
177
181
  FILE
178
182
  end
179
183
 
@@ -196,13 +200,13 @@ class LeolayGenerator < Rails::Generators::Base
196
200
  file = "db/seeds.rb"
197
201
  append_file file do
198
202
  <<-FILE.gsub(/^ /, '')
199
- user=User.new :email => 'admin@#{app_name}.com', :password => 'abcd1234', :password_confirmation => 'abcd1234'
203
+ user=#{options[:auth_class]}.new :email => 'admin@#{app_name}.com', :password => 'abcd1234', :password_confirmation => 'abcd1234'
200
204
  #{"user.roles=['admin']" if options.authorization?}
201
205
  user.save
202
- user=User.new :email => 'manager@#{app_name}.com', :password => 'abcd1234', :password_confirmation => 'abcd1234'
206
+ user=#{options[:auth_class]}.new :email => 'manager@#{app_name}.com', :password => 'abcd1234', :password_confirmation => 'abcd1234'
203
207
  #{"user.roles=['manager']" if options.authorization?}
204
208
  user.save
205
- user=User.new :email => 'user@#{app_name}.com', :password => 'abcd1234', :password_confirmation => 'abcd1234'
209
+ user=#{options[:auth_class]}.new :email => 'user@#{app_name}.com', :password => 'abcd1234', :password_confirmation => 'abcd1234'
206
210
  #{"user.roles=['user']" if options.authorization?}
207
211
  user.save
208
212
  FILE
@@ -338,14 +342,13 @@ class LeolayGenerator < Rails::Generators::Base
338
342
 
339
343
  def setup_extras
340
344
  copy_file "lib/upd_array.rb", "lib/extras/upd_array.rb"
341
- template "lib/upd_activeadmin.rb", "lib/extras/upd_activeadmin.rb"
342
345
  end
343
346
 
344
347
  def setup_activeadmin
345
- file = "config/initializers/active_admin.rb"
346
- return unless options.activeadmin? and File.exists?(file)
348
+ return unless options.activeadmin? and activeadmin?
349
+ template "config/initializers/activeadmin_leonardo.rb", "config/initializers/activeadmin_leonardo.rb"
350
+ copy_file "config/initializers/activeadmin_cancan.rb", "config/initializers/activeadmin_cancan.rb" if options.authorization?
347
351
  template "app/admin/users.rb", "app/admin/#{options[:auth_class].downcase.pluralize}.rb"
348
- template "app/views/admin/users/_form.html.erb", "app/views/admin/#{options[:auth_class].downcase.pluralize}/_form.html.erb"
349
352
 
350
353
  file = "app/assets/stylesheets/active_admin.css.scss"
351
354
  append_file file do
@@ -1,10 +1,11 @@
1
- ActiveAdmin.register <%= options[:auth_class].capitalize %> do
2
- menu :if => proc{ can?(:manage, <%= options[:auth_class].capitalize %>) }
3
- controller.authorize_resource
1
+ ActiveAdmin.register <%= options[:auth_class] %> do
2
+ menu :if => proc{ can?(:manage, <%= options[:auth_class] %>) }
4
3
 
5
- config.sort_order = 'order asc'
4
+ config.sort_order = 'email_asc'
6
5
 
7
6
  controller do
7
+ load_resource :except => :index
8
+ authorize_resource
8
9
  def update
9
10
  unless params[:<%= options[:auth_class].downcase %>]['password'] && params[:<%= options[:auth_class].downcase %>]['password'].size > 0
10
11
  params[:<%= options[:auth_class].downcase %>].delete 'password'
@@ -18,26 +19,36 @@ ActiveAdmin.register <%= options[:auth_class].capitalize %> do
18
19
 
19
20
  index do
20
21
  id_column
21
- #column :name
22
22
  column :email
23
- #column :login_ldap
24
- #column :gruppo, :sortable => :gruppo_id
23
+ #column :group, :sortable => :group_id
24
+ column :roles do |user|
25
+ user.roles.join ", "
26
+ end
25
27
  column :current_sign_in_at
26
28
  column :current_sign_in_ip
27
- #column :created_at
29
+ column :created_at
28
30
  default_actions
29
31
  end
30
32
 
31
- form :partial => "form"
33
+ form do |f|
34
+ input_roles = "<li>" <<
35
+ f.label(:roles) <<
36
+ <%= options[:auth_class] %>::ROLES.map{|role| check_box_tag("<%= options[:auth_class].downcase %>[roles][]", role, f.object.roles.include?(role)) << ' ' << role.humanize.html_safe }.join(" ") <<
37
+ hidden_field_tag("<%= options[:auth_class].downcase %>[roles][]") <<
38
+ "</li>"
39
+ f.inputs "Account" do
40
+ f.input :email
41
+ f.input :password
42
+ f.input(:password_confirmation) <<
43
+ input_roles.html_safe
44
+ end
45
+ f.buttons
46
+ end
32
47
 
33
48
  show do
34
49
  attributes_table do
35
- #row :gruppo do |<%= options[:auth_class].downcase %>|
36
- # <%= options[:auth_class].downcase %>.gruppo ? <%= options[:auth_class].downcase %>.gruppo.try(:name) : "Unknown"
37
- #end
38
- #row :name
39
50
  row :email
40
- #row :login_ldap
51
+ #row :group
41
52
  row :current_sign_in_at
42
53
  row :last_sign_in_at
43
54
  row :sign_in_count
@@ -48,14 +59,12 @@ ActiveAdmin.register <%= options[:auth_class].capitalize %> do
48
59
  row :created_at
49
60
  row :updated_at
50
61
  end
51
-
52
62
  end
53
63
 
54
64
  csv do
55
65
  column :email
56
66
  #column("Name") { |<%= options[:auth_class].downcase %>| <%= options[:auth_class].downcase %>.name }
57
67
  #column("Group") { |<%= options[:auth_class].downcase %>| <%= options[:auth_class].downcase %>.group.try(:name) }
58
- #column :login_ldap
59
68
  column(I18n.t('attributes.<%= options[:auth_class].downcase %>.roles')) { |<%= options[:auth_class].downcase %>| <%= options[:auth_class].downcase %>.roles.join ", " }
60
69
  column(I18n.t('attributes.created_at')) { |<%= options[:auth_class].downcase %>| <%= options[:auth_class].downcase %>.created_at.strftime("%d/%m/%Y") }
61
70
  column(I18n.t('attributes.<%= options[:auth_class].downcase %>.last_sign_in_at')) { |<%= options[:auth_class].downcase %>| <%= options[:auth_class].downcase %>.last_sign_in_at.strftime("%d/%m/%Y") if <%= options[:auth_class].downcase %>.last_sign_in_at }
@@ -0,0 +1,114 @@
1
+
2
+ module ActiveAdmin
3
+ module Views
4
+ #Integrate cancan in default_actions
5
+ #\lib\active_admin\views\index_as_table.rb
6
+ class IndexAsTable
7
+ class IndexTableFor
8
+ # Adds links to View, Edit and Delete
9
+ def default_actions(options = {})
10
+ options = {
11
+ :name => "",
12
+ :auth => nil
13
+ }.merge(options)
14
+ column options[:name] do |resource|
15
+ links = ''.html_safe
16
+ if controller.action_methods.include?('show') && (options[:auth] ? can?(:read, resource) : true)
17
+ links += link_to I18n.t('active_admin.view'), resource_path(resource), :class => "member_link view_link"
18
+ end
19
+ if controller.action_methods.include?('edit') && (options[:auth] ? can?(:update, resource) : true)
20
+ links += link_to I18n.t('active_admin.edit'), edit_resource_path(resource), :class => "member_link edit_link"
21
+ end
22
+ if controller.action_methods.include?('destroy') && (options[:auth] ? can?(:update, resource) : true)
23
+ links += link_to I18n.t('active_admin.delete'), resource_path(resource), :method => :delete, :confirm => I18n.t('active_admin.delete_confirmation'), :class => "member_link delete_link"
24
+ end
25
+ links
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ module ViewHelpers
33
+ # lib/active_admin/view_helpers/auto_link_helper.rb
34
+ def auto_link(resource, link_content = nil)
35
+ content = link_content || display_name(resource)
36
+ if can?(:read, resource) && registration = active_admin_resource_for(resource.class)
37
+ begin
38
+ content = link_to(content, send(registration.route_instance_path, resource))
39
+ rescue
40
+ end
41
+ end
42
+ content
43
+ end
44
+ end
45
+
46
+ class Resource
47
+ module ActionItems
48
+ private
49
+
50
+ # Adds the default action items to each resource
51
+ def add_default_action_items
52
+ # New Link on all actions except :new and :show
53
+ add_action_item :except => [:new, :show] do
54
+ if controller.action_methods.include?('new') && can?(:create, active_admin_config.resource_class)
55
+ link_to(I18n.t('active_admin.new_model', :model => active_admin_config.resource_name), new_resource_path)
56
+ end
57
+ end
58
+
59
+ # Edit link on show
60
+ add_action_item :only => :show do
61
+ if controller.action_methods.include?('edit') && can?(:edit, resource)
62
+ link_to(I18n.t('active_admin.edit_model', :model => active_admin_config.resource_name), edit_resource_path(resource))
63
+ end
64
+ end
65
+
66
+ # Destroy link on show
67
+ add_action_item :only => :show do
68
+ if controller.action_methods.include?("destroy") && can?(:destroy, resource)
69
+ link_to(I18n.t('active_admin.delete_model', :model => active_admin_config.resource_name),
70
+ resource_path(resource),
71
+ :method => :delete, :confirm => I18n.t('active_admin.delete_confirmation'))
72
+ end
73
+ end
74
+ end
75
+ end
76
+
77
+ # lib/active_admin/resource/menu.rb
78
+ module Menu
79
+ # The :if block is evaluated by TabbedNavigation#display_item?
80
+ def default_menu_options
81
+ klass = resource_class # avoid variable capture
82
+ super.merge(:if => proc{ can? :read, klass })
83
+ end
84
+ end
85
+ end
86
+
87
+ class ResourceController
88
+ # lib/active_admin/resource_controller/collection.rb
89
+
90
+ # The following doesn't work (see https://github.com/ryanb/cancan/pull/683):
91
+ #
92
+ # load_and_authorize_resource
93
+ # skip_load_resource :only => :index
94
+ #
95
+ # If you don't skip loading on #index you will get the exception:
96
+ #
97
+ # "Collection is not a paginated scope. Set collection.page(params[:page]).per(10) before calling :paginated_collection."
98
+ #
99
+ # Add to your activeadmin file:
100
+ #
101
+ # controller.load_resource :except => :index
102
+ # controller.authorize_resource
103
+
104
+ # https://github.com/gregbell/active_admin/wiki/Enforce-CanCan-constraints
105
+ # https://github.com/ryanb/cancan/blob/master/lib/cancan/controller_resource.rb#L80
106
+ module Collection
107
+ module BaseCollection
108
+ def scoped_collection
109
+ end_of_association_chain.accessible_by(current_ability)
110
+ end
111
+ end
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,30 @@
1
+ module ActiveAdmin
2
+ module Views
3
+ module Pages
4
+ #Custom footer
5
+ #\lib\active_admin\views\pages\base.rb
6
+ class Base < Arbre::HTML::Document
7
+ private
8
+ def build_footer
9
+ div :id => "footer" do
10
+ para "#{CONFIG[:application][:name]} #{Rails.env} #{CONFIG[:application][:version]} <%= Time.now.year %>.".html_safe
11
+ end
12
+ end
13
+
14
+ end
15
+ end
16
+
17
+ #Avoid xml and json from download
18
+ #\lib\active_admin\views\components\paginated_collection.rb
19
+ #class PaginatedCollection
20
+ # def build_download_format_links(formats = [:csv])
21
+ # links = formats.collect do |format|
22
+ # link_to format.to_s.upcase, { :format => format}.merge(request.query_parameters.except(:commit, :format))
23
+ # end
24
+ # div :class => "download_links" do
25
+ # text_node [I18n.t('active_admin.download'), links].flatten.join("&nbsp;").html_safe
26
+ # end
27
+ # end
28
+ #end
29
+ end
30
+ end
@@ -0,0 +1,57 @@
1
+
2
+
3
+ it:
4
+ errors:
5
+ messages:
6
+ expired: "è scaduto ed è necessario richiederne uno nuovo"
7
+ not_found: "non trovato"
8
+ already_confirmed: "è già stato confermato, riprova a collegarti"
9
+ not_locked: "non era bloccato"
10
+ not_saved:
11
+ one: "un errore ha impedito il salvataggio di %{resource}:"
12
+ other: "%{count} errori hanno impedito il salvataggio di %{resource}:"
13
+
14
+ devise:
15
+ failure:
16
+ already_authenticated: "Sei già autenticato"
17
+ unauthenticated: "Devi accedere o registrarti per continuare."
18
+ unconfirmed: "Devi confermare il tuo account per continuare."
19
+ locked: "Il tuo account è bloccato."
20
+ invalid: "Indirizzo email o password non validi."
21
+ invalid_token: "Codice di autenticazione non valido."
22
+ timeout: "Sessione scaduta, accedere nuovamente per continuare."
23
+ inactive: "Il tuo account non è stato ancora attivato."
24
+ sessions:
25
+ signed_in: "Accesso effettuato con successo."
26
+ signed_out: "Sei uscito correttamente."
27
+ passwords:
28
+ send_instructions: "Riceverai un messaggio email con le istruzioni per reimpostare la tua password entro qualche minuto."
29
+ updated: "La tua password è stata cambiata. Ora sei collegato."
30
+ updated_not_active: "La tua password è stata cambiata."
31
+ send_paranoid_instructions: "Se il tuo indirizzo e-mail esiste nel nostro database, riceverai un link per il recupero della password."
32
+ confirmations:
33
+ send_instructions: "Riceverai un messaggio email con le istruzioni per confermare il tuo account entro qualche minuto."
34
+ send_paranoid_instructions: "Se il tuo indirizzo e-mail esiste nel nostro database, fra pochi minuti riceverai un link con le istruzioni per confermare il tuo account."
35
+ confirmed: "Il tuo account è stato correttamente confermato. Ora sei collegato."
36
+ registrations:
37
+ signed_up: "Iscrizione correttamente eseguita."
38
+ signed_up_but_unconfirmed: "Un messaggio con il link di conferma è stato inviato al tuo indirizzo email. Dovresti cliccare su quel link per attivare il tuo account."
39
+ signed_up_but_inactive: "Ti sei registrato con successo. Tuttavia, non è stato possibile effettuare il login perché il tuo account non è ancora stato attivato."
40
+ signed_up_but_locked: "Ti sei registrato con successo. Tuttavia, non è stato possibile effettuare il login perché il tuo account è bloccato."
41
+ updated: "Il tuo account è stato aggiornato."
42
+ update_needs_confirmation: "È stato aggiornato il tuo account con successo, ma abbiamo bisogno di verificare il tuo nuovo indirizzo email. Controlla la tua email e clicca sul link per confermare il nuovo indirizzo email."
43
+ destroyed: "Arrivederci! L'account è stato cancellato. Speriamo di rivederti presto."
44
+ unlocks:
45
+ send_instructions: "Riceverai un messaggio email con le istruzioni per sbloccare il tuo account entro qualche minuto."
46
+ unlocked: "Il tuo account è stato correttamente sbloccato. Ora sei collegato."
47
+ send_paranoid_instructions: "Se il tuo indirizzo e-mail esiste nel nostro database, fra pochi minuti riceverai un link con le istruzioni per sbloccare il tuo account."
48
+ omniauth_callbacks:
49
+ success: "Sei stato autorizzato dall'account di %{kind}."
50
+ failure: "Non siamo riusciti ad autoruzzarti da %{kind} perchè '%{reason}'."
51
+ mailer:
52
+ confirmation_instructions:
53
+ subject: "Istruzioni per la conferma"
54
+ reset_password_instructions:
55
+ subject: "Istruzioni per reimpostare la password"
56
+ unlock_instructions:
57
+ subject: "Istruzioni per sbloccare l'account"
@@ -20,7 +20,7 @@ module Rails
20
20
  #class_option :remote, :type => :boolean, :default => true, :desc => "Enable ajax. You can also do later set remote to true into index view."
21
21
  #class_option :under, :type => :string, :default => "", :banner => "brand/category", :desc => "To nest a resource under another(s)"
22
22
  #class_option :leospace, :type => :string, :default => "", :banner => ":admin", :desc => "To nest a resource under namespace(s)"
23
- class_option :auth_class, :type => :boolean, :default => 'User', :desc => "Set the authentication class name"
23
+ class_option :auth_class, :type => :string, :default => 'User', :desc => "Set the authentication class name"
24
24
  class_option :activeadmin, :type => :boolean, :default => true, :desc => "Add code to manage activeadmin gem"
25
25
 
26
26
  #Override
@@ -46,15 +46,11 @@ module Rails
46
46
  attributes.each do |attribute|
47
47
  content << " #{attribute.name}: \"#{attribute.name.humanize}\"#{CRLF}"
48
48
  end
49
- content << " op_new: \"New #{singular_table_name}\"#{CRLF}"
50
- content << " op_edit: \"Editing #{singular_table_name}\"#{CRLF}"
51
- content << " op_edit_multiple: \"Editing #{plural_table_name}\"#{CRLF}"
52
- content << " op_copy: \"Creating new #{plural_table_name}\"#{CRLF}"
53
- #if nested?
54
- # content << " op_index: \"Listing #{plural_table_name} belongings to %{parent} %{name}\"#{CRLF}"
55
- #else
56
- content << " op_index: \"Listing #{plural_table_name}\"#{CRLF}"
57
- #end
49
+ #content << " op_new: \"New #{singular_table_name}\"#{CRLF}"
50
+ #content << " op_edit: \"Editing #{singular_table_name}\"#{CRLF}"
51
+ #content << " op_edit_multiple: \"Editing #{plural_table_name}\"#{CRLF}"
52
+ #content << " op_copy: \"Creating new #{plural_table_name}\"#{CRLF}"
53
+ #content << " op_index: \"Listing #{plural_table_name}\"#{CRLF}"
58
54
  content
59
55
  end
60
56
 
@@ -91,9 +87,8 @@ module Rails
91
87
  end
92
88
 
93
89
  def update_ability_model
94
- file = "app/models/ability.rb"
95
- return unless File.exists?(file)
96
- inject_into_file file, :before => " end\nend" do
90
+ return unless authorization?
91
+ inject_into_file authorization_file, :before => " end\nend" do
97
92
  <<-FILE.gsub(/^ /, '')
98
93
  #can :read, #{class_name} if #{options[:auth_class].downcase}.new_record? #Guest
99
94
  can :read, #{class_name} if #{options[:auth_class].downcase}.role? :guest #Registered guest
@@ -145,15 +140,10 @@ module Rails
145
140
  <<-FILE.gsub(/^ /, '')
146
141
 
147
142
  menu :if => proc{ can?(:read, #{class_name}) }
148
- controller.authorize_resource
149
143
 
150
144
  controller do
151
- # don't show prohibited actions on the index page
152
- def action_methods
153
- actions_abilities = {'show' => :read, 'new' => :create, 'edit' => :update, 'destroy' => :destroy}
154
- prohibited_methods = actions_abilities.keys.select{|m| !can? actions_abilities[m], #{class_name}}
155
- super - prohibited_methods
156
- end
145
+ load_resource :except => :index
146
+ authorize_resource
157
147
  end
158
148
  FILE
159
149
  end if authorization? && File.exists?(file)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_leonardo
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 2
10
- version: 0.0.2
9
+ - 3
10
+ version: 0.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Marco Mastrodonato
@@ -15,12 +15,28 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-05-23 00:00:00 Z
18
+ date: 2012-08-10 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- name: activeadmin
21
+ name: rails
22
22
  prerelease: false
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 3
31
+ - 1
32
+ - 0
33
+ version: 3.1.0
34
+ type: :runtime
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: activeadmin
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
24
40
  none: false
25
41
  requirements:
26
42
  - - ">="
@@ -32,7 +48,23 @@ dependencies:
32
48
  - 0
33
49
  version: 0.4.0
34
50
  type: :runtime
35
- version_requirements: *id001
51
+ version_requirements: *id002
52
+ - !ruby/object:Gem::Dependency
53
+ name: cancan
54
+ prerelease: false
55
+ requirement: &id003 !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ hash: 3
61
+ segments:
62
+ - 1
63
+ - 5
64
+ - 0
65
+ version: 1.5.0
66
+ type: :runtime
67
+ version_requirements: *id003
36
68
  description: This generator help you to create new Rails applications to combine with active admin gem. It generates application structure to easily get the internationalization and authorization.
37
69
  email:
38
70
  - m.mastrodonato@gmail.com
@@ -50,12 +82,13 @@ files:
50
82
  - lib/generators/leolay/templates/app/admin/users.rb
51
83
  - lib/generators/leolay/templates/app/assets/javascripts/custom.js
52
84
  - lib/generators/leolay/templates/app/helpers/layout_helper.rb
53
- - lib/generators/leolay/templates/app/views/admin/users/_form.html.erb
85
+ - lib/generators/leolay/templates/config/initializers/activeadmin_cancan.rb
86
+ - lib/generators/leolay/templates/config/initializers/activeadmin_leonardo.rb
87
+ - lib/generators/leolay/templates/config/locales/devise.it.yml
54
88
  - lib/generators/leolay/templates/config/locales/en.yml
55
89
  - lib/generators/leolay/templates/config/locales/it.yml
56
90
  - lib/generators/leolay/templates/config.rb
57
91
  - lib/generators/leolay/templates/lib/development_mail_interceptor.rb
58
- - lib/generators/leolay/templates/lib/upd_activeadmin.rb
59
92
  - lib/generators/leolay/templates/lib/upd_array.rb
60
93
  - lib/generators/leolay/templates/styles/active/images/logo.png
61
94
  - lib/generators/leolay/templates/styles/active/images/style/ico_v.png
@@ -1,21 +0,0 @@
1
- <%%= semantic_form_for [:admin, @<%= options[:auth_class].downcase %>] do |f| %>
2
- <%%= f.inputs do %>
3
- <%%#= f.input :group %>
4
- <%%= f.input :email, :input_html => { :maxlength => 100 } %>
5
- <%%= f.input :password %>
6
- <%%= f.input :password_confirmation %>
7
- <li>
8
- <%%= f.label :roles %>
9
- <%% for role in <%= options[:auth_class].downcase.classify %>::ROLES %>
10
- <%%= check_box_tag "<%= options[:auth_class].downcase %>[roles][]", role, @<%= options[:auth_class].downcase %>.roles.include?(role) %>
11
- <%%= h role.humanize %>
12
- <%% end %>
13
- <%%= hidden_field_tag "<%= options[:auth_class].downcase %>[roles][]"%>
14
- </li>
15
- <%% end %>
16
- <%%#= f.inputs "Optional informations" do %>
17
- <%%#= f.input :name %>
18
- <%%#= f.input :login_ldap %>
19
- <%%# end %>
20
- <%%= f.buttons :commit %>
21
- <%% end %>
@@ -1,65 +0,0 @@
1
-
2
- module ActiveAdmin
3
- module Views
4
- module Pages
5
-
6
- #Custom footer
7
- #\lib\active_admin\views\pages\base.rb
8
- class Base < Arbre::HTML::Document
9
- private
10
- def build_footer
11
- div :id => "footer" do
12
- para "#{CONFIG[:application][:name]} #{Rails.env} #{CONFIG[:application][:version]} <%= Time.now.year %>.".html_safe
13
- end
14
- end
15
-
16
- end
17
- end
18
-
19
- #Avoid xml and json from download
20
- #\lib\active_admin\views\components\paginated_collection.rb
21
- #class PaginatedCollection
22
- # def build_download_format_links(formats = [:csv])
23
- # links = formats.collect do |format|
24
- # link_to format.to_s.upcase, { :format => format}.merge(request.query_parameters.except(:commit, :format))
25
- # end
26
- # div :class => "download_links" do
27
- # text_node [I18n.t('active_admin.download'), links].flatten.join("&nbsp;").html_safe
28
- # end
29
- # end
30
- #end
31
-
32
- end
33
-
34
- #class Resource
35
- # module ActionItems
36
- # private
37
- #
38
- # # Adds the default action items to each resource
39
- # def add_default_action_items
40
- # # New Link on all actions except :new and :show
41
- # add_action_item :except => [:new, :show] do
42
- # if controller.action_methods.include?('new') && can?(:create, eval(active_admin_config.resource_name.classify))
43
- # link_to(I18n.t('active_admin.new_model', :model => active_admin_config.resource_name), new_resource_path)
44
- # end
45
- # end
46
- #
47
- # # Edit link on show
48
- # add_action_item :only => :show do
49
- # if controller.action_methods.include?('edit') && can?(:edit, resource)
50
- # link_to(I18n.t('active_admin.edit_model', :model => active_admin_config.resource_name), edit_resource_path(resource))
51
- # end
52
- # end
53
- #
54
- # # Destroy link on show
55
- # add_action_item :only => :show do
56
- # if controller.action_methods.include?("destroy") && can?(:destroy, resource)
57
- # link_to(I18n.t('active_admin.delete_model', :model => active_admin_config.resource_name),
58
- # resource_path(resource),
59
- # :method => :delete, :confirm => I18n.t('active_admin.delete_confirmation'))
60
- # end
61
- # end
62
- # end
63
- # end
64
- #end
65
- end