adminpanel 2.4.0 → 2.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/adminpanel/shortcuts.js.coffee +5 -0
  3. data/app/controllers/adminpanel/application_controller.rb +1 -1
  4. data/app/controllers/adminpanel/sections_controller.rb +0 -13
  5. data/app/controllers/concerns/adminpanel/rest_actions.rb +1 -1
  6. data/app/models/adminpanel/permission.rb +1 -1
  7. data/app/models/adminpanel/section.rb +4 -0
  8. data/app/views/adminpanel/categories/new.js.erb +3 -0
  9. data/app/views/adminpanel/icons/_edit.html.erb +1 -1
  10. data/app/views/adminpanel/icons/_new.html.erb +17 -0
  11. data/app/views/adminpanel/sections/edit.html.erb +21 -23
  12. data/app/views/adminpanel/sections/index.html.erb +4 -11
  13. data/app/views/adminpanel/shared/_new_resource_button.html.erb +1 -1
  14. data/app/views/adminpanel/shared/new.js.erb +3 -0
  15. data/app/views/adminpanel/shared/show.html.erb +7 -4
  16. data/config/locales/en.yml +1 -0
  17. data/config/routes.rb +0 -5
  18. data/lib/adminpanel.rb +1 -0
  19. data/lib/adminpanel/version.rb +1 -1
  20. data/lib/generators/adminpanel/contact/contact_generator.rb +17 -4
  21. data/lib/generators/adminpanel/contact/templates/contact_template.rb +14 -5
  22. data/lib/generators/adminpanel/dump/dump_generator.rb +6 -2
  23. data/lib/generators/adminpanel/gallery/templates/uploader.rb +57 -51
  24. data/lib/generators/adminpanel/initialize/initialize_generator.rb +22 -22
  25. data/test/dummy/app/models/adminpanel/mug.rb +4 -0
  26. data/test/dummy/config/environments/test.rb +1 -1
  27. data/test/features/shared/resource/show_test.rb +1 -0
  28. data/test/features/shared/ui/collection_name_test.rb +19 -0
  29. data/test/generators/contact_generator_test.rb +32 -3
  30. data/test/models/adminpanel/{gallery_test.rb → galleryzable_test.rb} +1 -1
  31. metadata +8 -7
  32. data/app/assets/images/adminpanel/odinn.jpg +0 -0
  33. data/app/assets/images/adminpanel/rails.png +0 -0
  34. data/app/views/adminpanel/sections/show.html.erb +0 -31
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1aafbc35eee8d10953a446e2e0a9c8f499d87d2a
4
- data.tar.gz: 37dbeddb83a4a4a1b95b415bd3a9e8a9416ad24b
3
+ metadata.gz: ba3d85c9a8f1cac45611472dac7b5aecc8194696
4
+ data.tar.gz: e605db29c0d0995d3500fdae6d02b1d0d21ef866
5
5
  SHA512:
6
- metadata.gz: 9d96d604d98c7fd68d23763cc2d267b0220f0db279566134f4fa210a452b7d9ca5079f9ef9d230a48969fb90c330d0dac9feb8db425f25e3f2c0d75cbcfc70d5
7
- data.tar.gz: b77117eaa2fab041e598175d36ebbe4035692cb67c565cccbc4acac9c8f14964861759544ebf1c7b9206d2545d8f1d2f8a774ddfd93ba39040ca3d182089beff
6
+ metadata.gz: ffbddd0d680fb5e46461cffd90b0814bc4e3646a1770b703a1f2342b1fdb4c3dbfed53f7b139892e8590f113ddac3327e5c9229da3e821723e25942078da0347
7
+ data.tar.gz: 3590b94f5be307f4b7148b537ca596c0303ec09bb1a4250ca45aee7be42905058b40dba62670d8fea6161678fc8be34418cd6c4a064c4b6eda8513485d0cdd32
@@ -0,0 +1,5 @@
1
+ $(document).on 'keypress', '#remote-form-modal', 'input', (e) ->
2
+ if e.keyCode is 13
3
+ # enter keypress
4
+ $('#remote-form-modal form').submit()
5
+ e.preventDefault()
@@ -26,7 +26,7 @@ module Adminpanel
26
26
  end
27
27
 
28
28
  def set_model
29
- @model = params[:controller].classify.constantize
29
+ @model ||= params[:controller].classify.constantize
30
30
  end
31
31
 
32
32
  def handle_unverified_request
@@ -4,17 +4,8 @@ module Adminpanel
4
4
  @sections = Section.all
5
5
  end
6
6
 
7
- # def new
8
- # @section = Section.new
9
- # authorize! :create, @section
10
- # end
11
-
12
7
  def edit
13
8
  @section = Section.find(params[:id])
14
- # respond_to do |format|
15
- # format.html
16
- # format.json {render :json => {:section => @section }}
17
- # end
18
9
  end
19
10
 
20
11
  def update
@@ -27,10 +18,6 @@ module Adminpanel
27
18
  end
28
19
  end
29
20
 
30
- def show
31
- @section = Section.find(params[:id])
32
- end
33
-
34
21
  private
35
22
  def section_params
36
23
  params.require(:section).permit(
@@ -23,7 +23,7 @@ module Adminpanel
23
23
  end
24
24
 
25
25
  def show
26
- render 'adminpanel/shared/show' if stale?(last_modified: @resource_instance.updated_at.utc, etag: @resource_instance.cache_key)
26
+ render 'adminpanel/shared/show' if stale?(@resource_instance, public: true)
27
27
  end
28
28
 
29
29
  def new
@@ -19,7 +19,7 @@ module Adminpanel
19
19
  validates_presence_of :resource
20
20
 
21
21
  def name
22
- "#{I18n.t("#{self.class.name.demodulize.downcase}.#{self.action}")} #{symbol_class(self['resource']).display_name}"
22
+ "#{self.role.name}: #{I18n.t("#{self.class.name.demodulize.downcase}.#{self.action}")} #{symbol_class(self['resource']).display_name}"
23
23
  end
24
24
 
25
25
  def self.form_attributes
@@ -64,6 +64,10 @@ module Adminpanel
64
64
  end
65
65
  end
66
66
 
67
+ def self.routes_options
68
+ { path: collection_name.parameterize, except: [:new, :create, :destroy] }
69
+ end
70
+
67
71
  protected
68
72
  def has_description?
69
73
  !self.has_description.nil? || self.has_description
@@ -1,2 +1,5 @@
1
1
  $("#modal-title").html('Agregar <%= @model.display_name %>');
2
2
  $("#modal-container").html('<%= escape_javascript(render "category_form", :resource => @resource_instance) %>');
3
+ setTimeout(function() {
4
+ $("#remote-form-modal input[type='text']:first").focus();
5
+ }, 500);
@@ -7,7 +7,7 @@
7
7
  class: 'fa fa-pencil'
8
8
  ),
9
9
  [:edit, resource],
10
- title: I18n.t('action.update') + " #{resource.name}",
10
+ title: I18n.t('action.update', name: resource.name),
11
11
  class: 'spinner-link'
12
12
  )
13
13
  %>
@@ -0,0 +1,17 @@
1
+ <% if @model.has_route?(:new) && can?(:create, @model) %>
2
+ <%=
3
+ link_to(
4
+ content_tag(
5
+ :i,
6
+ nil,
7
+ class: 'fa fa-plus'
8
+ ),
9
+ {
10
+ controller: params[:controller],
11
+ action: :new
12
+ },
13
+ title: I18n.t('action.create', resource: @model.display_name),
14
+ class: 'spinner-link'
15
+ )
16
+ %>
17
+ <% end %>
@@ -8,35 +8,33 @@
8
8
  <h5><%= @section.name %></h5>
9
9
  </div>
10
10
  <%= adminpanel_form_for @section do |f| %>
11
- <div class = "widget-body">
12
- <div class = "widget-forms clearfix">
13
- <%= render 'adminpanel/shared/error_messages', :object => @section %>
11
+ <%= f.body do %>
12
+ <%= render 'adminpanel/shared/error_messages', :object => @section %>
14
13
 
15
- <% if @section.has_description %>
16
- <%= f.wysiwyg_field 'description', 'label' => I18n.t('section.description') %>
17
- <% else %>
18
- <%= f.text_field 'description', 'label' => t("section.description") %>
19
- <% end %>
14
+ <% if @section.has_description %>
15
+ <%= f.wysiwyg_field 'description', 'label' => I18n.t('section.description') %>
16
+ <% else %>
17
+ <%= f.text_field 'description', 'label' => t("section.description") %>
18
+ <% end %>
20
19
 
21
- <% if @section.has_image %>
22
- <%= content_tag :div, class: 'file-collection-container', data: { max: @section.max_files } do %>
23
- <%= f.fields_for :sectionfiles do |builder| %>
24
- <%= render 'adminpanel/shared/image_fields', f: builder %>
25
- <% end -%>
20
+ <% if @section.has_image %>
21
+ <%= content_tag :div, class: 'file-collection-container', data: { max: @section.max_files } do %>
22
+ <%= f.fields_for :sectionfiles do |builder| %>
23
+ <%= render 'adminpanel/shared/image_fields', f: builder %>
24
+ <% end -%>
26
25
 
27
- <% if @section.max_files != 0 && @section.max_files <= @section.sectionfiles.count %>
28
- <% visibility = 'hidden' %>
29
- <% else %>
30
- <% visibility = 'not-hidden' %>
31
- <% end %>
32
- <%= link_to_add_fields 'Agregar Imagen', f, :sectionfiles, visibility %>
26
+ <% if @section.max_files != 0 && @section.max_files <= @section.sectionfiles.count %>
27
+ <% visibility = 'hidden' %>
28
+ <% else %>
29
+ <% visibility = 'not-hidden' %>
33
30
  <% end %>
31
+ <%= link_to_add_fields 'Agregar Imagen', f, :sectionfiles, visibility %>
34
32
  <% end %>
35
- </div>
36
- </div>
37
- <div class = "widget-footer">
33
+ <% end %>
34
+ <% end %>
35
+ <%= f.footer do %>
38
36
  <%= f.submit t('action.save', resource: @section.name), data: {:disable_with => t("action.submitting")}, :id => "save-button" %>
39
- </div>
37
+ <% end %>
40
38
  <% end -%>
41
39
  </div>
42
40
  </div>
@@ -7,12 +7,9 @@
7
7
  <% current_page = "no-page" %>
8
8
  <% @sections.each_with_index do |section, index| %>
9
9
  <% if current_page != section.page %>
10
- <% if index == 0 %>
11
- <li class = "active">
12
- <% else %>
13
- <li>
14
- <% end %>
15
- <%= link_to (section.page.capitalize), "#tab#{index}", "data-toggle" => "tab" %></li>
10
+ <li class="<%= active_tab(index) %>">
11
+ <%= link_to (section.page.capitalize), "#tab#{index}", "data-toggle" => "tab" %>
12
+ </li>
16
13
  <% current_page = section.page %>
17
14
  <% end %>
18
15
  <% end %>
@@ -24,11 +21,7 @@
24
21
  <% current_page = "no-page" %>
25
22
  <% @sections.each_with_index do |section, index| %>
26
23
  <% if current_page != section.page %>
27
- <% if index == 0 %>
28
- <div class="tab-pane active" id="tab<%= index %>">
29
- <% else %>
30
- <div class="tab-pane" id="tab<%= index %>">
31
- <% end %>
24
+ <div class="tab-pane <%= active_tab(index) %>" id="tab<%= index %>">
32
25
  <% section_pages = Adminpanel::Section.of_page section.page %>
33
26
  <%= render "sections_table", :sections => section_pages %>
34
27
  </div>
@@ -10,7 +10,7 @@
10
10
  ),
11
11
  {
12
12
  controller: params[:controller],
13
- action: 'new'
13
+ action: :new
14
14
  },
15
15
  id: 'new-resource-button'
16
16
  ) %>
@@ -1,2 +1,5 @@
1
1
  $("#modal-title").html('Agregar <%= @model.display_name %>');
2
2
  $("#modal-container").html('<%= escape_javascript(render "adminpanel/shared/remote_form_fields", resource: @resource_instance) %>');
3
+ setTimeout(function() {
4
+ $("#remote-form-modal input[type='text']:first").focus();
5
+ }, 500);
@@ -13,13 +13,16 @@
13
13
  <%= content_tag(:i, nil, class: "fa fa-#{@model.icon}") %>
14
14
  <h5>
15
15
  <%= @model.display_name.humanize %>
16
+ </h5>
17
+ <div class="widget-buttons">
18
+ <%= render 'adminpanel/icons/new' %>
16
19
 
17
- <%= render 'adminpanel/icons/edit', resource: @resource_instance %>
20
+ <%= render 'adminpanel/icons/edit', resource: @resource_instance %>
18
21
 
19
- <%= render 'adminpanel/icons/facebook', resource: @resource_instance %>
22
+ <%= render 'adminpanel/icons/facebook', resource: @resource_instance %>
20
23
 
21
- <%= render 'adminpanel/icons/twitter', resource: @resource_instance %>
22
- </h5>
24
+ <%= render 'adminpanel/icons/twitter', resource: @resource_instance %>
25
+ </div>
23
26
  </div>
24
27
  <div class="widget-body">
25
28
  <div class="widget-tickets widget-tickets-large clearfix">
@@ -84,6 +84,7 @@ en:
84
84
  signin_success: 'Welcome!'
85
85
  not_authorized: "You don't have access to that"
86
86
  gallery:
87
+ container: 'Images'
87
88
  new: 'Add Image'
88
89
  success: 'Image has been saved'
89
90
  deleted: 'Image has been deleted'
data/config/routes.rb CHANGED
@@ -4,11 +4,6 @@ Adminpanel::Engine.routes.draw do
4
4
 
5
5
  Adminpanel.displayable_resources.each do |resource|
6
6
  case resource
7
- when :sections
8
- # sections cannot be created or destroyed
9
- resources :sections, resources_parameters(resource).merge(
10
- { except: [:new, :create, :destroy] }.merge(rest_path_names)
11
- )
12
7
  when :analytics
13
8
  resources :analytics, resources_parameters(resource).merge({ only: [:index] }) do
14
9
  collection do
data/lib/adminpanel.rb CHANGED
@@ -12,6 +12,7 @@ require 'jquery-rails'
12
12
  require 'instagram'
13
13
  require 'turbolinks'
14
14
  require 'coffee-rails'
15
+ require 'sass'
15
16
 
16
17
  module Adminpanel
17
18
  end
@@ -1,3 +1,3 @@
1
1
  module Adminpanel
2
- VERSION = "2.4.0"
2
+ VERSION = '2.4.1'
3
3
  end
@@ -1,12 +1,25 @@
1
1
  require 'rails/generators/active_record'
2
2
  module Adminpanel
3
3
  class ContactGenerator < ActiveRecord::Generators::Base
4
- desc "Generate the migrations necessary to start the gem"
5
- source_root File.expand_path("../templates", __FILE__)
6
- argument :name, :type => :string, :default => "default", :require => false
4
+ desc 'Generate the contact template to use with a mail form'
5
+ source_root File.expand_path('../templates', __FILE__)
6
+ argument :name, type: :string, default: '', required: false
7
+ argument :fields, type: :array, default: [], required: false
7
8
 
8
9
  def copy_contact
9
- copy_file 'contact_template.rb', 'app/models/contact.rb'
10
+ fields = extract_fields
11
+ template 'contact_template.rb', 'app/models/contact.rb'
10
12
  end
13
+
14
+ private
15
+ def extract_fields
16
+ if fields.empty? && name == '' # no fields supplied
17
+ fields << 'email'
18
+ fields << 'body'
19
+ elsif name != '' # at least 1 field supplied
20
+ fields << name
21
+ end
22
+ return fields
23
+ end
11
24
  end
12
25
  end
@@ -3,12 +3,21 @@ class Contact
3
3
  include ActiveModel::Conversion
4
4
  extend ActiveModel::Naming
5
5
 
6
- attr_accessor :name, :email, :subject, :body
6
+ attr_accessor <%= fields.map{|e| ":#{e}" }.join(', ') -%>
7
7
 
8
- validates_presence_of :name, message: "#{I18n.t('model.attributes.name')} #{I18n.t('activerecord.errors.messages.blank')}"
8
+ <%- if fields.include?('email') -%>
9
+ # validations for email
9
10
  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
10
- validates_format_of :email, :with => VALID_EMAIL_REGEX, message: "#{I18n.t('model.attributes.email')} #{I18n.t('activerecord.errors.messages.invalid')}"
11
- validates_presence_of :body, message: "#{I18n.t('model.attributes.body')} #{I18n.t('activerecord.errors.messages.blank')}"
11
+ validates_format_of :email, with: VALID_EMAIL_REGEX, message: "#{I18n.t('model.attributes.email')} #{I18n.t('activerecord.errors.messages.invalid')}"
12
+ validates_presence_of :email, message: "#{I18n.t('model.attributes.email')} #{I18n.t('activerecord.errors.messages.blank')}"
13
+ <%- fields.delete('email') -%>
14
+ <%- end -%>
15
+
16
+ <%- fields.each do |field| -%>
17
+ # validations for <%= field %>
18
+ validates_presence_of :<%= field -%>, message: "#{I18n.t('model.attributes.<%= field -%>')} #{I18n.t('activerecord.errors.messages.blank')}"
19
+
20
+ <%- end -%>
12
21
 
13
22
  def initialize(attributes = {})
14
23
  attributes.each do |name, value|
@@ -17,7 +26,7 @@ class Contact
17
26
  end
18
27
 
19
28
  def self.display_name
20
- 'Correo'
29
+ 'Mail'
21
30
  end
22
31
 
23
32
  def self.get_attribute_label(label)
@@ -17,7 +17,7 @@ module Adminpanel
17
17
  puts "dumping #{resource.display_name.pluralize(I18n.default_locale)} into db/#{file_name}"
18
18
 
19
19
  create_file "db/#{file_name}" do
20
- resource.all.to_a.to_json
20
+ resource.all.to_a.map{|o| o.attributes}.to_json
21
21
  end
22
22
  inject_into_seeds(resource, file_name)
23
23
  end
@@ -28,7 +28,11 @@ module Adminpanel
28
28
  append_to_file 'db/seeds.rb' do
29
29
  "\nobjects = JSON.parse(open(\"\#{Rails.root}/db/#{file_name}\").read)\n" +
30
30
  "objects.each do |element|\n" +
31
- indent("#{resource}.create element\n", 2) +
31
+ indent("object = #{resource}.new\n", 2) +
32
+ indent("element.each do |k,v|\n", 2) +
33
+ indent("object[k] = v\n", 4) +
34
+ indent("end\n", 2) +
35
+ indent("object.save\n", 2) +
32
36
  "end\n"
33
37
  end
34
38
  end
@@ -13,70 +13,76 @@ module Adminpanel
13
13
  end
14
14
 
15
15
  # Process files as they are uploaded:
16
- # process :resize_to_fill => [1366, 768]
16
+ # process resize_to_fill: [1366, 768]
17
17
 
18
18
  # THE THUMB VERSION IS NECESSARY BY ADMINPANEL, DON'T REMOVE IT!!!!
19
19
  version :thumb do
20
- process :resize_to_limit => [80, 80]
20
+ process resize_to_limit: [80, 80]
21
21
  end
22
22
 
23
23
  # however, you can create your own versions:
24
24
  # version :awesome do
25
- # process :reside_and_pad => [120, 900]
25
+ # process reside_and_pad: [120, 900]
26
26
  # end
27
27
 
28
- # More info at http://www.rubydoc.info/github/jnicklas/carrierwave/CarrierWave/MiniMagick
28
+ # EXAMPLE:
29
+ # original 300 x 300 (this is a square, thanks)
30
+ # _________________
31
+ # | |
32
+ # | 0 |
33
+ # | 000 |
34
+ # | 0 |
35
+ # | \|/ |
36
+ # | | |
37
+ # | / \ |
38
+ # | |
39
+ # |_________________|
29
40
 
30
- # resize_and_pad(width, height, background=:transparent, gravity=::Magick::CenterGravity)
31
- #
32
- # Resize the image to fit within the specified dimensions while retaining
33
- # the original aspect ratio. If necessary, will pad the remaining area with
34
- # the given color, which defaults to transparent (for gif and png, white for jpeg).
35
- #
36
- # width (Integer)
37
- # the width to scale the image to
38
- # height (Integer)
39
- # the height to scale the image to
40
- # background (String, :transparent)
41
- # the color of the background as a hexcode, like “ff45de“
42
- # gravity (Magick::GravityType)
43
- # how to position the image
41
+ # resize_and_pad: [700, 300] (fill with transparent to fit size.)
42
+ # __________________________________
43
+ # |TTTTT| |TTTTT|
44
+ # |TTTTT| 0 |TTTTT|
45
+ # |TTTTT| 000 |TTTTT|
46
+ # |TTTTT| 0 |TTTTT|
47
+ # |TTTTT| \|/ |TTTTT| => [700x300]
48
+ # |TTTTT| | |TTTTT|
49
+ # |TTTTT| / \ |TTTTT|
50
+ # |TTTTT| |TTTTT|
51
+ # |_________________________________|
44
52
 
45
- # resize_to_fill(width, height)
46
- #
47
- # Resize the image to fit within the
48
- # specified dimensions while retaining the aspect ratio of the original image.
49
- # If necessary, crop the image in the larger dimension.
50
- #
51
- # width (Integer)
52
- # the width to scale the image to
53
- # height (Integer)
54
- # the height to scale the image to
53
+ # resize_to_fill: [700, 300] (force to fill zooming on the image, crops in half of the image)
54
+ # __________________________________
55
+ # | 00000000000000000000 |
56
+ # | 000000000000000 |
57
+ # | ||||| |
58
+ # | \\\\\\\\|||||/////// | => [700x300]
59
+ # | \\\\\\\\|||||/////// |
60
+ # | ||||| |
61
+ # | ||||| |
62
+ # |_________________________________|
55
63
 
56
- # resize_to_fit(width, height)
57
- #
58
- # Resize the image to fit within the
59
- # specified dimensions while retaining the original aspect ratio. The image
60
- # may be shorter or narrower than specified in the smaller dimension but
61
- # will not be larger than the specified values.“
62
- #
63
- # width (Integer)
64
- # the width to scale the image to
65
- # height (Integer)
66
- # the height to scale the image to
64
+ # resize_to_fit: [120, 60] (resize to no larger than dimension, while
65
+ # maintaining ratio)
66
+ # ____________
67
+ # | |
68
+ # | 0 |
69
+ # | \/ | => [60x60] (no larger than any, original ratio)
70
+ # | /| |
71
+ # | |
72
+ # |____________|
73
+
74
+ # resize_to_limit: [500, 500] resize_to_fit, but only resizing if original image is larger
75
+ # _________________
76
+ # | |
77
+ # | 0 |
78
+ # | 000 |
79
+ # | 0 |
80
+ # | \|/ | => [300, 300] (original)
81
+ # | | |
82
+ # | / \ |
83
+ # | |
84
+ # |_________________|
67
85
 
68
- # resize_to_limit(width, height)
69
- #
70
- # Resize the image to fit within the specified dimensions while retaining
71
- # the original aspect ratio. Will only resize the image if it is larger than
72
- # the specified dimensions. The resulting image may be shorter or narrower
73
- # than specified in the smaller dimension but will not be larger than the
74
- # specified values.
75
- #
76
- # width (Integer)
77
- # the width to scale the image to
78
- # height (Integer)
79
- # the height to scale the image to
80
86
  def extension_white_list
81
87
  %w(jpg jpeg png)
82
88
  end
@@ -1,29 +1,29 @@
1
1
  require 'rails/generators/active_record'
2
2
  module Adminpanel
3
3
  class InitializeGenerator < ActiveRecord::Generators::Base
4
- desc "Generate the migrations necessary to start the gem"
4
+ desc 'Generate the migrations necessary to start the gem'
5
5
  source_root File.expand_path("../templates", __FILE__)
6
- argument :name, :type => :string, :default => "default", :require => false
6
+ argument :name, type: :string, default: 'default', require: false
7
7
  class_option :'skip-category',
8
- :type => :boolean,
9
- :aliases => '-c',
10
- :default => false,
11
- :desc => "Skip category skeleton and migration for it if true"
8
+ type: :boolean,
9
+ aliases: '-c',
10
+ default: false,
11
+ desc: 'Skip category skeleton and migration for it if true'
12
12
  class_option :'skip-section-uploader',
13
- :type => :boolean,
14
- :aliases => '-u',
15
- :default => false,
16
- :desc => 'Skip section uploader if true'
13
+ type: :boolean,
14
+ aliases: '-u',
15
+ default: false,
16
+ desc: 'Skip section uploader if true'
17
17
  class_option :'skip-migration',
18
- :type => :boolean,
19
- :aliases => '-m',
20
- :default => false,
21
- :desc => 'Skip initial migrations if true'
18
+ type: :boolean,
19
+ aliases: '-m',
20
+ default: false,
21
+ desc: 'Skip initial migrations if true'
22
22
  class_option :'skip-setup',
23
- :type => :boolean,
24
- :aliases => '-p',
25
- :default => false,
26
- :desc => 'Skip setup if true'
23
+ type: :boolean,
24
+ aliases: '-p',
25
+ default: false,
26
+ desc: 'Skip setup if true'
27
27
 
28
28
  def create_initializer
29
29
  if !options[:'skip-setup']
@@ -33,20 +33,20 @@ module Adminpanel
33
33
 
34
34
  def create_category
35
35
  if !options[:'skip-category']
36
- copy_file "category_template.rb", 'app/models/adminpanel/category.rb'
37
- migration_template 'create_adminpanel_categories_table.rb', 'db/migrate/create_adminpanel_categories_table.rb'
36
+ copy_file 'category_template.rb', 'app/models/adminpanel/category.rb'
37
+ migration_template 'create_adminpanel_categories_table.rb', 'db/migrate/create_adminpanel_categories_table.rb'
38
38
  end
39
39
  end
40
40
 
41
41
  def create_section_uploader
42
42
  if !options[:'skip-section-uploader']
43
- copy_file "section_uploader.rb", 'app/uploaders/adminpanel/section_uploader.rb'
43
+ copy_file 'section_uploader.rb', 'app/uploaders/adminpanel/section_uploader.rb'
44
44
  end
45
45
  end
46
46
 
47
47
  def create_adminpanel_migration
48
48
  if !options[:'skip-migration']
49
- migration_template 'create_adminpanel_tables.rb', 'db/migrate/create_adminpanel_tables.rb'
49
+ migration_template 'create_adminpanel_tables.rb', 'db/migrate/create_adminpanel_tables.rb'
50
50
  end
51
51
  end
52
52
 
@@ -27,6 +27,10 @@ module Adminpanel
27
27
  'Taza' #singular
28
28
  end
29
29
 
30
+ def self.collection_name
31
+ 'Irregular Tazas'
32
+ end
33
+
30
34
  # def self.icon
31
35
  # "truck" # fa-{icon}
32
36
  # end
@@ -13,7 +13,7 @@ Rails.application.configure do
13
13
  config.eager_load = false
14
14
 
15
15
  # Configure static asset server for tests with Cache-Control for performance.
16
- config.serve_static_assets = true
16
+ config.serve_static_files = true
17
17
  config.static_cache_control = 'public, max-age=3600'
18
18
 
19
19
  # Show full error reports and disable caching.
@@ -9,6 +9,7 @@ class ShowTest < ViewCase
9
9
  assert_content(adminpanel_products(:first).price)
10
10
  assert_content(adminpanel_products(:first).description)
11
11
  assert_selector 'i.fa.fa-pencil'
12
+ assert_selector 'i.fa.fa-plus'
12
13
  end
13
14
 
14
15
  protected
@@ -0,0 +1,19 @@
1
+ require 'test_helper'
2
+
3
+ class CollectionNameTest < ViewCase
4
+ fixtures :all
5
+
6
+ setup :sign_in
7
+
8
+ def test_collection_name_overwritten
9
+ visit adminpanel.mugs_path
10
+ assert_link 'Irregular Tazas'
11
+ end
12
+
13
+ protected
14
+ def sign_in
15
+ visit adminpanel.signin_path
16
+ login
17
+ end
18
+
19
+ end
@@ -6,9 +6,38 @@ class ContactGeneratorTest < Rails::Generators::TestCase
6
6
  destination Rails.root.join('tmp/generators')
7
7
  setup :prepare_destination
8
8
 
9
- def test_the_generation_of_the_adminpanel_setup_file
10
- run_generator
11
- assert_file 'app/models/contact.rb'
9
+ def test_the_generation_of_the_attr_accessor_params
10
+ run_generator %w(body email name age country)
11
+ assert_file(
12
+ 'app/models/contact.rb',
13
+ /attr_accessor :email, :name, :age, :country, :body/
14
+ )
15
+ end
16
+
17
+ def test_generation_of_validations
18
+ run_generator %w(body email name age country)
19
+ assert_file(
20
+ 'app/models/contact.rb',
21
+ /validates_presence_of :email/,
22
+ /validates_presence_of :body/,
23
+ /validates_presence_of :age/,
24
+ /validates_presence_of :name/,
25
+ /validates_presence_of :country/
26
+ )
27
+ end
28
+
29
+ def test_generation_of_email_validations
30
+ run_generator %w(email body)
31
+ assert_file(
32
+ 'app/models/contact.rb',
33
+ /# validations for email/,
34
+ /VALID_EMAIL_REGEX = \/\\A\[\\w\+\\-.\]\+@\[a-z\\d\\-.\]\+\\.\[a-z\]\+\\z\/i/,
35
+ /validates_format_of :email, with: VALID_EMAIL_REGEX, message: "\#{I18n.t\('model.attributes.email'\)} \#{I18n.t\('activerecord.errors.messages.invalid'\)}"/
36
+ )
37
+ end
38
+
39
+ def test_generation
40
+
12
41
  end
13
42
 
14
43
  def test_runs_without_errors
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
  module Adminpanel
3
- class GalleryTest < ActiveSupport::TestCase
3
+ class GalleryzableTest < ActiveSupport::TestCase
4
4
 
5
5
  def test_sortable_funcionallity
6
6
  gallery = Adminpanel::Gallery.first
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adminpanel
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jose Ramon Camacho
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-12-29 00:00:00.000000000 Z
12
+ date: 2015-01-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -421,13 +421,11 @@ files:
421
421
  - app/assets/images/adminpanel/icons-small.png
422
422
  - app/assets/images/adminpanel/ie-spacer.gif
423
423
  - app/assets/images/adminpanel/loguito.png
424
- - app/assets/images/adminpanel/odinn.jpg
425
424
  - app/assets/images/adminpanel/pattern.jpg
426
425
  - app/assets/images/adminpanel/pattern_transp.png
427
426
  - app/assets/images/adminpanel/progress.gif
428
427
  - app/assets/images/adminpanel/quicklook-bg.png
429
428
  - app/assets/images/adminpanel/quicklook-icons.png
430
- - app/assets/images/adminpanel/rails.png
431
429
  - app/assets/images/adminpanel/resize.png
432
430
  - app/assets/images/adminpanel/saturation.png
433
431
  - app/assets/images/adminpanel/select2.png
@@ -457,6 +455,7 @@ files:
457
455
  - app/assets/javascripts/adminpanel/jquery.slimscroll.min.js
458
456
  - app/assets/javascripts/adminpanel/realm.js
459
457
  - app/assets/javascripts/adminpanel/sections.js.coffee
458
+ - app/assets/javascripts/adminpanel/shortcuts.js.coffee
460
459
  - app/assets/javascripts/adminpanel/spinner.js.coffee
461
460
  - app/assets/javascripts/adminpanel/tables.js
462
461
  - app/assets/javascripts/adminpanel/wysiwyg.js.coffee
@@ -540,12 +539,12 @@ files:
540
539
  - app/views/adminpanel/icons/_facebook.html.erb
541
540
  - app/views/adminpanel/icons/_move_to_better.html.erb
542
541
  - app/views/adminpanel/icons/_move_to_worst.html.erb
542
+ - app/views/adminpanel/icons/_new.html.erb
543
543
  - app/views/adminpanel/icons/_show.html.erb
544
544
  - app/views/adminpanel/icons/_twitter.html.erb
545
545
  - app/views/adminpanel/sections/_sections_table.html.erb
546
546
  - app/views/adminpanel/sections/edit.html.erb
547
547
  - app/views/adminpanel/sections/index.html.erb
548
- - app/views/adminpanel/sections/show.html.erb
549
548
  - app/views/adminpanel/sessions/new.html.erb
550
549
  - app/views/adminpanel/shared/_breadcrumb.html.erb
551
550
  - app/views/adminpanel/shared/_create_remote_resource_button.html.erb
@@ -680,6 +679,7 @@ files:
680
679
  - test/features/shared/resource/new_test.rb
681
680
  - test/features/shared/resource/show_test.rb
682
681
  - test/features/shared/ui/action_exclution_test.rb
682
+ - test/features/shared/ui/collection_name_test.rb
683
683
  - test/features/shared/ui/max_images_gallery_test.rb
684
684
  - test/generators/contact_generator_test.rb
685
685
  - test/generators/dump_generator_test.rb
@@ -690,7 +690,7 @@ files:
690
690
  - test/helpers/router_helper_test.rb
691
691
  - test/helpers/shared_pages_helper_test.rb
692
692
  - test/models/ability_test.rb
693
- - test/models/adminpanel/gallery_test.rb
693
+ - test/models/adminpanel/galleryzable_test.rb
694
694
  - test/models/adminpanel/section_test.rb
695
695
  - test/models/adminpanel/user_test.rb
696
696
  - test/support/shared_database.rb
@@ -800,6 +800,7 @@ test_files:
800
800
  - test/features/shared/resource/new_test.rb
801
801
  - test/features/shared/resource/show_test.rb
802
802
  - test/features/shared/ui/action_exclution_test.rb
803
+ - test/features/shared/ui/collection_name_test.rb
803
804
  - test/features/shared/ui/max_images_gallery_test.rb
804
805
  - test/generators/contact_generator_test.rb
805
806
  - test/generators/dump_generator_test.rb
@@ -810,7 +811,7 @@ test_files:
810
811
  - test/helpers/router_helper_test.rb
811
812
  - test/helpers/shared_pages_helper_test.rb
812
813
  - test/models/ability_test.rb
813
- - test/models/adminpanel/gallery_test.rb
814
+ - test/models/adminpanel/galleryzable_test.rb
814
815
  - test/models/adminpanel/section_test.rb
815
816
  - test/models/adminpanel/user_test.rb
816
817
  - test/support/shared_database.rb
Binary file
Binary file
@@ -1,31 +0,0 @@
1
- <% provide(:page_title, @section.name.humanize) %>
2
- <% breadcrumb_add('Secciones', sections_path) %>
3
-
4
- <div class="row-fluid">
5
- <div class="widget widget-padding span12">
6
- <div class="widget-header">
7
- <i class="fa fa-tasks"></i>
8
- <h5><%= @section.name.humanize %>&nbsp;
9
- <%= render 'adminpanel/icons/edit', resource: @section, resource_name: @model.display_name %>
10
- </h5>
11
- </div>
12
- <div class="widget-body row-fluid">
13
-
14
- <div class="span2">
15
- <b>Descripción</b>
16
- </div>
17
- <div class="span10">
18
- <% if @section.description.nil? %>
19
- <%= t("other.no description") %>
20
- <% else %>
21
- <%= @section.description.html_safe %>
22
- <% end %>
23
- </div>
24
- <div class="span12">
25
- <% @section.sectionfiles.each do |image|-%>
26
- <%= image_tag(image.file_url :thumb) %>
27
- <% end %>
28
- </div>
29
- </div>
30
- </div>
31
- </div>