adminpanel 1.2.4 → 1.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. data/app/assets/stylesheets/adminpanel/theme.css +46 -41
  2. data/app/controllers/adminpanel/categories_controller.rb +71 -0
  3. data/app/controllers/adminpanel/users_controller.rb +69 -69
  4. data/app/helpers/adminpanel/application_helper.rb +2 -1
  5. data/app/helpers/adminpanel/class_definitions_helper.rb +10 -0
  6. data/app/helpers/adminpanel/custom_form_builder.rb +23 -24
  7. data/app/helpers/adminpanel/pluralizations_helper.rb +21 -0
  8. data/app/helpers/adminpanel/rest_actions_helper.rb +42 -34
  9. data/app/helpers/adminpanel/router_helper.rb +30 -26
  10. data/app/models/adminpanel/gallery.rb +6 -2
  11. data/app/models/adminpanel/image.rb +1 -1
  12. data/app/models/adminpanel/user.rb +15 -1
  13. data/app/views/adminpanel/categories/_categories_table.html.erb +48 -0
  14. data/app/views/adminpanel/categories/_category_form.html.erb +14 -0
  15. data/app/views/adminpanel/categories/index.html.erb +55 -0
  16. data/app/views/adminpanel/categories/new.js.erb +1 -0
  17. data/app/views/layouts/_side_menu.html.erb +91 -22
  18. data/app/views/shared/_error_messages.html.erb +3 -3
  19. data/app/views/shared/_form_fields.html.erb +14 -13
  20. data/app/views/shared/index.html.erb +1 -1
  21. data/config/locales/es.yml +5 -10
  22. data/config/routes.rb +20 -9
  23. data/lib/adminpanel/active_record_extension.rb +52 -8
  24. data/lib/adminpanel/engine.rb +4 -2
  25. data/lib/adminpanel/version.rb +1 -1
  26. data/lib/generators/adminpanel/initialize/initialize_generator.rb +20 -6
  27. data/lib/generators/adminpanel/initialize/templates/adminpanel_setup.rb +16 -0
  28. data/lib/generators/adminpanel/initialize/templates/category_template.rb +32 -0
  29. data/lib/generators/adminpanel/initialize/templates/create_adminpanel_categories_table.rb +11 -0
  30. data/lib/generators/adminpanel/resource/resource_generator.rb +1 -1
  31. data/lib/tasks/adminpanel/adminpanel.rake +4 -4
  32. data/spec/dummy/app/controllers/adminpanel/categories_controller.rb +1 -1
  33. data/spec/dummy/app/models/adminpanel/categorization.rb +5 -5
  34. data/spec/dummy/app/models/adminpanel/category.rb +9 -9
  35. data/spec/generators/initialize_generator_spec.rb +34 -0
  36. data/spec/generators/{resource_spec.rb → resource_generator_spec.rb} +0 -0
  37. data/spec/models/user_spec.rb +3 -3
  38. metadata +18 -19
  39. data/app/helpers/adminpanel/images_helper.rb +0 -10
  40. data/app/views/adminpanel/users/_user_form.html.erb +0 -21
  41. data/app/views/adminpanel/users/edit.html.erb +0 -6
  42. data/app/views/adminpanel/users/index.html.erb +0 -49
  43. data/app/views/adminpanel/users/new.html.erb +0 -6
  44. data/app/views/adminpanel/users/show.html.erb +0 -21
  45. data/config/locales/en.yml +0 -5
  46. data/spec/dummy/config/initializers/inflections.rb +0 -15
  47. data/spec/features/user_pages_spec.rb +0 -48
  48. data/spec/generators/initialize_spec.rb +0 -9
@@ -3,6 +3,7 @@ module Adminpanel
3
3
  include SessionsHelper
4
4
  include BreadcrumbsHelper
5
5
  include SharedPagesHelper
6
+ include PluralizationsHelper
6
7
 
7
8
  def custom_form_for(name, *args, &block)
8
9
  options = args.extract_options!
@@ -52,4 +53,4 @@ module Adminpanel
52
53
  end
53
54
  end
54
55
  end
55
- end
56
+ end
@@ -0,0 +1,10 @@
1
+ module Adminpanel
2
+ module ClassDefinitionsHelper
3
+
4
+ def is_class?(name)
5
+ Module.const_get(name).is_a?(Class)
6
+ rescue NameError
7
+ return false
8
+ end
9
+ end
10
+ end
@@ -9,9 +9,8 @@ module Adminpanel
9
9
  options = args.extract_options!
10
10
 
11
11
  options.reverse_merge! :class => "span7"
12
- options.reverse_merge! :label => name
13
- label = options[:label]
14
- options.delete(:label)
12
+ label = options['label']
13
+ options.delete('label')
15
14
 
16
15
  @template.content_tag :div, :class => "control-group" do
17
16
  @template.content_tag(:label, label, :class => "control-label") +
@@ -43,15 +42,15 @@ module Adminpanel
43
42
  @template.content_tag(:div, :class => "controls") do
44
43
  if self.object.send(name).nil?
45
44
  @template.content_tag(
46
- :div,
47
- self.object.send(name),
45
+ :div,
46
+ self.object.send(name),
48
47
  :id => name,
49
48
  "data-placeholder" => I18n.t("Write description here")
50
49
  )
51
50
  else
52
51
  @template.content_tag(
53
- :div,
54
- self.object.send(name).html_safe,
52
+ :div,
53
+ self.object.send(name).html_safe,
55
54
  :id => name,
56
55
  "data-placeholder" => I18n.t("Write description here")
57
56
  )
@@ -78,12 +77,12 @@ module Adminpanel
78
77
 
79
78
  def checkbox(checkbox_object, form_object_name, relationship)
80
79
  @template.content_tag(
81
- :label,
80
+ :label,
82
81
  @template.check_box_tag(
83
- "#{form_object_name}[#{relationship}][]",
84
- checkbox_object.id,
82
+ "#{form_object_name}[#{relationship}][]",
83
+ checkbox_object.id,
85
84
  self.object.send(relationship).include?(checkbox_object.id)
86
- ) + checkbox_object.name,
85
+ ) + checkbox_object.name,
87
86
  :class => "checkbox"
88
87
  )
89
88
  end
@@ -92,7 +91,7 @@ module Adminpanel
92
91
  options = args.extract_options!
93
92
 
94
93
  options.reverse_merge! :class => "span7"
95
- options.reverse_merge! :label => name
94
+ # options.reverse_merge! :label => name
96
95
  options.reverse_merge! :include_blank => "(Seleccione por favor)";
97
96
  label = options[:label]
98
97
  options.delete(:label)
@@ -121,9 +120,9 @@ module Adminpanel
121
120
  options = args.extract_options!
122
121
 
123
122
  options.reverse_merge! :class => "span7"
124
- options.reverse_merge! :label => name
125
- label = options[:label]
126
- options.delete(:label)
123
+ # options.reverse_merge! :label => name
124
+ label = options['label']
125
+ options.delete('label')
127
126
 
128
127
  @template.content_tag :div, :class => "control-group" do
129
128
  @template.content_tag(:label, label, :class => "control-label") +
@@ -165,10 +164,10 @@ module Adminpanel
165
164
  @template.content_tag :div, :class => "control-group" do
166
165
  @template.content_tag(:label, label, :class => "control-label") +
167
166
  @template.content_tag(
168
- :div,
167
+ :div,
169
168
  @template.content_tag(
170
169
  :div,
171
- text_field_original(name, *args << options) +
170
+ text_field_original(name, *args << options) +
172
171
  @template.content_tag(
173
172
  :span,
174
173
  @template.content_tag(
@@ -176,7 +175,7 @@ module Adminpanel
176
175
  nil,
177
176
  :class => "icon-th"
178
177
  ),
179
- :class => "add-on"
178
+ :class => "add-on"
180
179
  ),
181
180
  {
182
181
  :class => "input-append date span5 datepicker datepicker-basic",
@@ -185,7 +184,7 @@ module Adminpanel
185
184
  :date => options[:value]
186
185
  }
187
186
  }
188
- ),
187
+ ),
189
188
  :class => "controls"
190
189
  )
191
190
  end
@@ -211,8 +210,8 @@ module Adminpanel
211
210
  :div,
212
211
  @template.content_tag(:span, symbol, :class => "add-on") +
213
212
  text_field_original(name, *args << options),
214
- :class => "input-prepend"
215
- ),
213
+ :class => "input-prepend"
214
+ ),
216
215
  :class => "controls"
217
216
  )
218
217
  end
@@ -238,11 +237,11 @@ module Adminpanel
238
237
  :div,
239
238
  text_field_original(name, *args << options) +
240
239
  @template.content_tag(:span, symbol, :class => "add-on"),
241
- :class => "input-append"
242
- ),
240
+ :class => "input-append"
241
+ ),
243
242
  :class => "controls"
244
243
  )
245
244
  end
246
245
  end
247
246
  end
248
- end
247
+ end
@@ -0,0 +1,21 @@
1
+ module Adminpanel
2
+ module PluralizationsHelper
3
+
4
+ def pluralize_es(string)
5
+ pluralized_string = ""
6
+ string.split.each do |word|
7
+ case(word.last)
8
+ when 'a', 'e', 'i', 'o', 'u', 'c'
9
+ pluralized_string = "#{pluralized_string}#{word}s "
10
+ when 'b', 'r'
11
+ pluralized_string = "#{pluralized_string}#{word}es "
12
+ when 'z'
13
+ pluralized_string = "#{pluralized_string}#{word.chop}ces "
14
+ else
15
+ pluralized_string = "#{pluralized_string}#{word} "
16
+ end
17
+ end
18
+ pluralized_string.chop
19
+ end
20
+ end
21
+ end
@@ -1,9 +1,9 @@
1
1
  module Adminpanel
2
2
  module RestActionsHelper
3
3
  def index
4
- index! do |format|
5
- format.html { render "shared/index" }
6
- end
4
+ index! do |format|
5
+ format.html { render "shared/index" }
6
+ end
7
7
  end
8
8
 
9
9
  def show
@@ -14,44 +14,44 @@ module Adminpanel
14
14
 
15
15
  def new
16
16
  set_collections
17
- new! do |format|
18
- format.html { render "shared/new" }
19
- end
17
+ new! do |format|
18
+ format.html { render "shared/new" }
19
+ end
20
20
  end
21
21
 
22
22
  def create
23
- create! do |success, failure|
24
- success.html do
25
- flash.now[:success] = I18n.t("action.save_success")
26
- render "shared/index"
27
- end
28
- failure.html do
23
+ create! do |success, failure|
24
+ success.html do
25
+ flash.now[:success] = I18n.t("action.save_success")
26
+ render "shared/index"
27
+ end
28
+ failure.html do
29
29
  set_collections
30
- render "shared/new"
30
+ render "shared/new"
31
31
  end
32
- end
32
+ end
33
33
  end
34
34
 
35
35
  def edit
36
- edit! do |format|
37
- format.html do
38
- set_collections
39
- render "shared/edit"
40
- end
41
- end
36
+ edit! do |format|
37
+ format.html do
38
+ set_collections
39
+ render "shared/edit"
40
+ end
41
+ end
42
42
  end
43
43
 
44
44
  def update
45
- update! do |success, failure|
46
- success.html do
47
- flash.now[:success] = I18n.t("action.save_success")
48
- render "shared/index"
49
- end
50
- failure.html do
51
- set_collections
52
- render "shared/edit"
53
- end
54
- end
45
+ update! do |success, failure|
46
+ success.html do
47
+ flash.now[:success] = I18n.t("action.save_success")
48
+ render "shared/index"
49
+ end
50
+ failure.html do
51
+ set_collections
52
+ render "shared/edit"
53
+ end
54
+ end
55
55
  end
56
56
 
57
57
  def destroy
@@ -64,12 +64,20 @@ module Adminpanel
64
64
 
65
65
  def set_collections
66
66
  @collections = {}
67
- @model.belongs_to_relationships.each do |class_variable|
68
- @collections.merge!({"#{class_variable}" => class_variable.find(:all)})
69
- end
67
+ set_belongs_to_collections
70
68
  @model.has_many_relationships.each do |class_variable|
71
69
  @collections.merge!({"#{class_variable}" => class_variable.find(:all)})
72
70
  end
73
71
  end
72
+
73
+ def set_belongs_to_collections
74
+ @model.belongs_to_relationships.each do |class_variable|
75
+ if class_variable.respond_to?("of_model")
76
+ @collections.merge!({"#{class_variable}" => class_variable.of_model(@model.display_name)})
77
+ else
78
+ @collections.merge!({"#{class_variable}" => class_variable.find(:all)})
79
+ end
80
+ end
81
+ end
74
82
  end
75
- end
83
+ end
@@ -1,33 +1,37 @@
1
1
  module Adminpanel
2
- module RouterHelper
3
- def adminpanel_resources
4
- @files ||= find_resources
5
- end
6
-
7
- def find_resources
8
- resources_path
9
- if File.directory?(resources_path)
10
- files = Dir.entries(resources_path).collect do |f|
11
- unless default_controllers.include?(f)
12
- file_path = "#{resources_path}#{f}"
13
- File.file?(file_path) ? file_path.sub!(resources_path, '').sub!('_controller.rb', '') : nil
14
- end
15
- end
2
+ module RouterHelper
3
+ def adminpanel_resources
4
+ @files ||= find_resources
5
+ end
16
6
 
17
- files.compact!
18
- end
7
+ def find_resources
8
+ resources_path
9
+ if File.directory?(resources_path)
10
+ files = Dir.entries(resources_path).collect do |f|
11
+ unless default_controllers.include?(f)
12
+ file_path = "#{resources_path}#{f}"
13
+ File.file?(file_path) ? file_path.sub!(resources_path, '').sub!('_controller.rb', '') : nil
14
+ end
19
15
  end
20
16
 
21
- def menu_items
22
- @menu ||= adminpanel_resources.each.collect { |resource| resource.classify }
23
- end
17
+ files.compact!
18
+ end
19
+ end
24
20
 
25
- def default_controllers
26
- ["application_controller.rb", "sessions_controller.rb", "galleries_controller.rb", "users_controller.rb", "sections_controller.rb", "pages_controller.rb"]
27
- end
21
+ def menu_items
22
+ @menu ||= adminpanel_resources.each.collect { |resource| resource.classify }
23
+ end
28
24
 
29
- def resources_path
30
- "#{Rails.root.to_s}/app/controllers/adminpanel/"
31
- end
25
+ def default_controllers
26
+ ["application_controller.rb", "sessions_controller.rb", "galleries_controller.rb", "users_controller.rb", "sections_controller.rb", "pages_controller.rb"]
27
+ end
28
+
29
+ def resources_path
30
+ route = "#{Rails.root.to_s}/app/controllers/adminpanel/"
31
+ if !File.directory?(route)
32
+ Dir.mkdir(route)
33
+ end
34
+ route
32
35
  end
33
- end
36
+ end
37
+ end
@@ -40,6 +40,10 @@ module Adminpanel
40
40
  end
41
41
  end
42
42
 
43
+ def self.display_name
44
+ "Galería"
45
+ end
46
+
43
47
  private
44
48
  def rearrange_positions
45
49
  unarranged_galleries = Gallery.where("position > ?", position)
@@ -48,7 +52,7 @@ module Adminpanel
48
52
  end
49
53
 
50
54
  end
51
-
55
+
52
56
  def set_position
53
57
  last_record = Gallery.last
54
58
  if last_record.nil?
@@ -58,4 +62,4 @@ module Adminpanel
58
62
  end
59
63
  end
60
64
  end
61
- end
65
+ end
@@ -1,6 +1,6 @@
1
1
  module Adminpanel
2
2
  class Image < ActiveRecord::Base
3
- extend ImagesHelper
3
+ extend ClassDefinitionsHelper
4
4
 
5
5
  attr_accessible :file, :foreign_key, :model
6
6
  validates_presence_of :model
@@ -28,9 +28,23 @@ module Adminpanel
28
28
  roles.any? { |r| r.name.underscore.to_sym == role_sym }
29
29
  end
30
30
 
31
+ def self.form_attributes
32
+ [
33
+ {"name" => {"type" => "text_field", "name" => "Nombre", 'label' => "Nombre", "placeholder" => "Nombre"}},
34
+ {"email" => {"type" => "text_field", "name" => "Correo", 'label' => 'Correo', 'placeholder' => 'Correo'}},
35
+ {"password" => {"type" => "password_field", "name" => "Contrasena", 'label' => I18n.t('model.attributes.password'), "placeholder" => I18n.t('model.attributes.password'), 'show' => 'false'}},
36
+ {"password_confirmation" => {"type" => "password_field", "name" => "Confirmacion de contrasena", 'placeholder' => I18n.t('model.attributes.password_confirmation'), 'label' => I18n.t('model.attributes.password_confirmation'), 'show' => 'false'}},
37
+ ]
38
+ end
39
+
40
+ def self.display_name
41
+ "Usuario"
42
+
43
+ end
44
+
31
45
  private
32
46
  def create_remember_token
33
47
  self.remember_token = SecureRandom.base64.tr("+/", "-_")
34
48
  end
35
49
  end
36
- end
50
+ end
@@ -0,0 +1,48 @@
1
+ <div class="row-fluid">
2
+ <%=
3
+ link_to(
4
+ content_tag(:div,
5
+ content_tag(
6
+ :i,
7
+ nil,
8
+ :class => 'icon-plus-sign icon-2x') +
9
+ content_tag(
10
+ :span,
11
+ I18n.t("action.create") + " #{@model.display_name} de #{model}",
12
+ nil
13
+ ),
14
+ :class => "btn btn-box span2"),
15
+ {
16
+ :controller => params[:controller],
17
+ :action => "new",
18
+ :"model" => model
19
+ },
20
+ :"data-target" => '#example_modal',
21
+ :"data-toggle" => 'modal',
22
+ :remote => true
23
+ )
24
+ %>
25
+ </div>
26
+
27
+ <br/>
28
+
29
+ <table class="table table-striped table-bordered">
30
+ <tr>
31
+ <th><%= t("category.name") %></th>
32
+ <th><%= t("actions") %></th>
33
+ </tr>
34
+ <% categories.each do |category| %>
35
+ <tr>
36
+ <td><%= link_to category.name, category_path(category) %></td>
37
+ <td>
38
+ <%= link_to content_tag(:i, nil, :class => 'icon-pencil'), edit_category_path(category), :title => "Editar" %>
39
+ <%= link_to content_tag(:i, nil, :class => 'icon-remove'),
40
+ [category],
41
+ :title => "Editar",
42
+ :method => :delete,
43
+ :data => { :confirm => "Eliminar #{category.name}?"} %>
44
+ </td>
45
+ </tr>
46
+ <% end %>
47
+
48
+ </table>