adminpanel 2.4.3 → 2.5.0

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 (82) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/README.md +16 -16
  4. data/adminpanel.gemspec +9 -8
  5. data/app/assets/javascripts/adminpanel/application.js +4 -0
  6. data/app/assets/javascripts/adminpanel/bootstrap-wysihtml5.js +2 -4
  7. data/app/assets/javascripts/adminpanel/sortable.js.coffee +27 -0
  8. data/app/assets/stylesheets/adminpanel/application.css +1 -0
  9. data/app/assets/stylesheets/adminpanel/sortable.css.scss.erb +13 -0
  10. data/app/controllers/adminpanel/application_controller.rb +0 -1
  11. data/app/controllers/adminpanel/sessions_controller.rb +5 -2
  12. data/app/controllers/concerns/adminpanel/rest_actions.rb +24 -22
  13. data/app/controllers/concerns/adminpanel/sortable_actions.rb +3 -20
  14. data/app/helpers/adminpanel/breadcrumbs_helper.rb +6 -5
  15. data/app/helpers/adminpanel/router_helper.rb +9 -3
  16. data/app/helpers/adminpanel/shared_pages_helper.rb +1 -1
  17. data/app/models/concerns/adminpanel/base.rb +34 -11
  18. data/app/models/concerns/adminpanel/sitemap.rb +0 -1
  19. data/app/models/concerns/adminpanel/sortable.rb +33 -30
  20. data/app/models/concerns/adminpanel/sortable_gallery.rb +90 -0
  21. data/app/views/adminpanel/form/_adminpanel_file_field.html.erb +1 -1
  22. data/app/views/adminpanel/templates/index.html.erb +41 -13
  23. data/app/views/adminpanel/templates/show.html.erb +33 -13
  24. data/config/initializers/adminpanel/carrierwave_mini_magick_quality.rb +11 -0
  25. data/config/locales/en.yml +3 -7
  26. data/config/locales/es.yml +1 -8
  27. data/config/routes.rb +6 -8
  28. data/lib/adminpanel.rb +9 -8
  29. data/lib/adminpanel/version.rb +1 -1
  30. data/lib/generators/adminpanel/custom_errors/custom_errors_generator.rb +37 -0
  31. data/lib/generators/adminpanel/custom_errors/templates/errors_controller.rb +14 -0
  32. data/lib/generators/adminpanel/custom_errors/templates/show.html.erb +1 -0
  33. data/lib/generators/adminpanel/gallery/templates/gallery_template.rb +8 -3
  34. data/lib/generators/adminpanel/gallery/templates/uploader.rb +4 -1
  35. data/lib/generators/adminpanel/initialize/initialize_generator.rb +0 -12
  36. data/lib/generators/adminpanel/initialize/templates/adminpanel_setup.rb +1 -2
  37. data/lib/generators/adminpanel/resource/resource_generator.rb +29 -8
  38. data/lib/generators/adminpanel/resource/resource_generator_helper.rb +34 -7
  39. data/lib/generators/adminpanel/resource/templates/adminpanel_resource_template.rb +7 -2
  40. data/lib/tasks/adminpanel/adminpanel.rake +19 -61
  41. data/test/dummy/app/models/adminpanel/file_resourcefile.rb +1 -1
  42. data/test/dummy/app/models/adminpanel/gallery.rb +9 -4
  43. data/test/dummy/app/models/adminpanel/galleryfile.rb +2 -2
  44. data/test/dummy/app/models/adminpanel/photo.rb +1 -1
  45. data/test/dummy/app/models/adminpanel/product.rb +0 -4
  46. data/test/dummy/config/initializers/adminpanel_setup.rb +1 -1
  47. data/test/dummy/test/fixtures/adminpanel/galleryfiles.yml +24 -0
  48. data/test/features/shared/concerns/sortable_gallery_ui_test.rb +25 -0
  49. data/test/features/shared/concerns/sortable_test.rb +4 -4
  50. data/test/features/shared/form/{belongs_to_non_category_modal_test.rb → belongs_to_remote_test.rb} +1 -1
  51. data/test/features/shared/form/{has_many_through_non_category_modal_test.rb → has_many_through_remote_test.rb} +1 -1
  52. data/test/generators/dump_generator_test.rb +1 -13
  53. data/test/generators/gallery_generator_test.rb +1 -1
  54. data/test/generators/initialize_generator_test.rb +1 -9
  55. data/test/generators/resource_generator_test.rb +21 -1
  56. data/test/helpers/router_helper_test.rb +0 -4
  57. data/test/models/adminpanel/sortable_gallery_unit_test.rb +118 -0
  58. data/test/models/adminpanel/sortable_unit_test.rb +75 -0
  59. data/test/tasks/adminpanel_rake_test.rb +1 -1
  60. metadata +86 -85
  61. data/app/assets/images/adminpanel/loguito.png +0 -0
  62. data/app/controllers/adminpanel/categories_controller.rb +0 -52
  63. data/app/controllers/concerns/adminpanel/galleryzable_actions.rb +0 -34
  64. data/app/models/concerns/adminpanel/galleryzation.rb +0 -78
  65. data/app/views/adminpanel/categories/_categories_table.html.erb +0 -48
  66. data/app/views/adminpanel/categories/_category_form.html.erb +0 -33
  67. data/app/views/adminpanel/categories/create.js.erb +0 -6
  68. data/app/views/adminpanel/categories/index.html.erb +0 -63
  69. data/app/views/adminpanel/categories/new.js.erb +0 -5
  70. data/app/views/adminpanel/icons/_move_to_better.html.erb +0 -17
  71. data/app/views/adminpanel/icons/_move_to_worst.html.erb +0 -18
  72. data/app/views/adminpanel/shared/_gallery_entries.html.erb +0 -11
  73. data/app/views/adminpanel/shared/_index_records.html.erb +0 -32
  74. data/app/views/adminpanel/templates/gallery_entries.js.erb +0 -1
  75. data/app/views/adminpanel/templates/index_records.js.erb +0 -1
  76. data/lib/generators/adminpanel/initialize/templates/category_template.rb +0 -45
  77. data/lib/generators/adminpanel/initialize/templates/create_adminpanel_categories_table.rb +0 -11
  78. data/test/features/categories/categories_index_test.rb +0 -31
  79. data/test/features/shared/concerns/galleryzable_test.rb +0 -22
  80. data/test/features/shared/form/belongs_to_category_modal_test.rb +0 -35
  81. data/test/features/shared/form/has_many_through_category_modal_test.rb +0 -35
  82. data/test/models/adminpanel/galleryzable_test.rb +0 -28
@@ -1,5 +1,5 @@
1
1
  namespace :adminpanel do
2
- desc "Interact with adminpanel models :D"
2
+ desc 'Interact with adminpanel models :D'
3
3
 
4
4
  task :section, [:name, :section, :type] => :environment do |t, args|
5
5
  args.with_defaults(:section => "home", :name => "greeting", :type => "")
@@ -8,12 +8,12 @@ namespace :adminpanel do
8
8
  order = Adminpanel::Section.find_by(:page => page_name)
9
9
 
10
10
  s = Adminpanel::Section.new(
11
- :name => args[:name].titleize,
12
- :has_description => false,
13
- :description => "",
14
- :key => (args[:name].downcase.tr(' ','_')),
15
- :page => page_name,
16
- :has_image => false
11
+ name: args[:name].titleize,
12
+ has_description: false,
13
+ description: "",
14
+ key: (args[:name].downcase.tr(' ','_')),
15
+ page: page_name,
16
+ has_image: false
17
17
  )
18
18
 
19
19
  if order.nil?
@@ -33,56 +33,36 @@ namespace :adminpanel do
33
33
  s.save
34
34
  end
35
35
 
36
- task :user => :environment do |t|
36
+ task user: :environment do |t|
37
37
  characters = []
38
38
  characters.concat(("a".."z").to_a)
39
39
  characters.concat(("A".."Z").to_a)
40
40
  characters.concat((0..9).to_a)
41
41
  characters.concat(%w[! @ \# $ % ^ & * , _ - + =])
42
- password = ""
42
+ password = ''
43
43
  8.times do
44
44
  password = password + "#{characters.sample}"
45
45
  end
46
- puts "Creating/overwriting webmaster@codn.com with password #{password}" unless Rails.env.test?
47
- user = Adminpanel::User.find_by_email('webmaster@codn.com')
46
+ puts "Creating/overwriting webmaster@codn.mx with password #{password}" unless Rails.env.test?
47
+ user = Adminpanel::User.find_by_email('webmaster@codn.mx')
48
48
  if !user.nil?
49
49
  user.delete
50
50
  end
51
51
 
52
- role = Adminpanel::Role.find_by_name("Admin")
52
+ role = Adminpanel::Role.find_by_name('Admin')
53
53
  if role.nil?
54
- role = Adminpanel::Role.new(:name => "Admin")
54
+ role = Adminpanel::Role.new(name: 'Admin')
55
55
  role.save
56
56
  end
57
57
  Adminpanel::User.new(
58
- :email => 'webmaster@codn.com',
59
- :name => 'Webmaster',
60
- :password => password,
61
- :password_confirmation => password,
62
- :role_id => role.id
58
+ email: 'webmaster@codn.mx',
59
+ name: 'Webmaster',
60
+ password: password,
61
+ password_confirmation: password,
62
+ role_id: role.id
63
63
  ).save
64
64
  end
65
65
 
66
- task :dump_sections => :environment do |t|
67
- puts "Dumping adminpanel_sections table into db/seeds.rb"
68
- File.open("#{Rails.root.join('db', 'seeds.rb')}", "w") do |f|
69
- f << "Adminpanel::Section.delete_all\n"
70
- Adminpanel::Section.all.each do |section|
71
- f << "#{creation_command_section(section)}"
72
- end
73
- end
74
- end
75
-
76
- task :dump_categories => :environment do |t|
77
- puts "Dumping adminpanel_categories table into db/seeds.rb"
78
- File.open("#{Rails.root.join('db', 'seeds.rb')}", "w") do |f|
79
- f << "Adminpanel::Section.delete_all\n"
80
- Adminpanel::Section.all.each do |section|
81
- f << "#{creation_command_categories(section)}"
82
- end
83
- end
84
- end
85
-
86
66
  task :populate, [:times, :model, :attributes] => :environment do |t, args|
87
67
  require 'faker'
88
68
  I18n.reload!
@@ -159,28 +139,6 @@ end
159
139
 
160
140
  private
161
141
 
162
- def creation_command_section(section)
163
- "Adminpanel::Section.new(\n" +
164
- "\t:name => \"#{section.name}\",\n" +
165
- "\t:has_description => #{section.has_description},\n" +
166
- "\t:description => \"#{escape_double_quotes(section.description)}\",\n" +
167
- "\t:key => \"#{section.key}\",\n" +
168
- "\t:page => \"#{section.page}\",\n" +
169
- "\t:has_image => #{section.has_image}\n" +
170
- ").save\n"
171
- end
172
-
173
- def creation_command_category(category)
174
- "Adminpanel::Category.new(\n" +
175
- "\t:name => \"#{escape_double_quotes(category.name)}\",\n" +
176
- "\t:model => \"#{category.model}\"\n" +
177
- ").save\n"
178
- end
179
-
180
- def escape_double_quotes(string)
181
- string.gsub('"', '\\"')
182
- end
183
-
184
142
  def change_dates(instance)
185
143
  date = rand(Date.parse('2010-01-01')..Date.today)
186
144
  instance.update_attribute(:created_at, date)
@@ -189,5 +147,5 @@ private
189
147
 
190
148
  def float_random(min_number, max_number)
191
149
  width = max_number - min_number
192
- return (rand*width)+min_number
150
+ return (rand*width) + min_number
193
151
  end
@@ -1,6 +1,6 @@
1
1
  module Adminpanel
2
2
  class FileResourcefile < ActiveRecord::Base
3
- # include Adminpanel::Galleryzation
3
+ include Adminpanel::Base
4
4
 
5
5
  mount_uploader :file, FileResourcefileUploader
6
6
 
@@ -5,6 +5,8 @@ module Adminpanel
5
5
 
6
6
  mount_uploader :file, Adminpanel::PhotoUploader
7
7
 
8
+ mount_images :galleryfiles
9
+
8
10
  def name
9
11
  file
10
12
  end
@@ -13,10 +15,16 @@ module Adminpanel
13
15
  [
14
16
  {
15
17
  'file' => {
16
- 'type' => 'adminpanel_file_field',
18
+ 'type' => 'text',
17
19
  'label' => 'file',
18
20
 
19
21
  }
22
+ },
23
+ {
24
+ 'galleryfiles' => {
25
+ 'type' => 'adminpanel_file_fields',
26
+ 'label' => 'images for this gallery'
27
+ }
20
28
  }
21
29
  ]
22
30
  end
@@ -25,8 +33,5 @@ module Adminpanel
25
33
  'Galeria'
26
34
  end
27
35
 
28
- def self.gallery_children
29
- 'galleryfiles'
30
- end
31
36
  end
32
37
  end
@@ -1,7 +1,7 @@
1
1
  module Adminpanel
2
2
  class Galleryfile < ActiveRecord::Base
3
3
  include Adminpanel::Base
4
- include Adminpanel::Galleryzation
4
+ include Adminpanel::SortableGallery
5
5
 
6
6
  belongs_to :gallery
7
7
 
@@ -12,7 +12,7 @@ module Adminpanel
12
12
  end
13
13
 
14
14
  def self.display_name
15
- 'dsf'
15
+ 'galleryfile'
16
16
  end
17
17
 
18
18
  end
@@ -1,7 +1,7 @@
1
1
  module Adminpanel
2
2
  class Photo < ActiveRecord::Base
3
3
  include Adminpanel::Base
4
- # include Adminpanel::Galleryzation
4
+ # include Adminpanel::SortableGallery
5
5
  mount_uploader :file, PhotoUploader
6
6
  belongs_to :product
7
7
 
@@ -49,10 +49,6 @@ module Adminpanel
49
49
  "Producto"
50
50
  end
51
51
 
52
- # def self.gallery_children
53
- # 'photos'
54
- # end
55
-
56
52
  def self.icon
57
53
  "icon-truck"
58
54
  end
@@ -19,7 +19,7 @@ Adminpanel.setup do |config|
19
19
  :roles,
20
20
  :permissions,
21
21
  :products,
22
- :galleries, # sortable
22
+ :galleries, # sortable, and galleryfiles sortable too
23
23
  :users,
24
24
  :mugs,
25
25
  :salesmen,
@@ -16,3 +16,27 @@ third:
16
16
  position: 3
17
17
  created_at: <%= Date.today %>
18
18
  updated_at: <%= Date.today %>
19
+ fourth:
20
+ file: hipster.jpg
21
+ gallery: one
22
+ position: 4
23
+ created_at: <%= Date.today %>
24
+ updated_at: <%= Date.today %>
25
+ fifth:
26
+ file: hipster.jpg
27
+ gallery: one
28
+ position: 5
29
+ created_at: <%= Date.today %>
30
+ updated_at: <%= Date.today %>
31
+ first_2:
32
+ file: hipster.jpg
33
+ gallery: two
34
+ position: 1
35
+ created_at: <%= Date.today %>
36
+ updated_at: <%= Date.today %>
37
+ second_2:
38
+ file: hipster.jpg
39
+ gallery: two
40
+ position: 2
41
+ created_at: <%= Date.today %>
42
+ updated_at: <%= Date.today %>
@@ -0,0 +1,25 @@
1
+ require 'test_helper'
2
+
3
+ class SortableGalleryUiTest < ViewCase
4
+ fixtures :all
5
+
6
+ setup :sign_in
7
+ teardown :teardown
8
+
9
+ def test_including_draggable_td
10
+ skip '😪'
11
+ visit adminpanel.gallery_path(adminpanel_galleries(:one))
12
+
13
+ p page.body
14
+
15
+ # assert for sortable stuff
16
+ assert_selector 'td.draggable.img'
17
+ end
18
+
19
+ protected
20
+
21
+ def sign_in
22
+ visit adminpanel.signin_path
23
+ login
24
+ end
25
+ end
@@ -5,14 +5,14 @@ class SortableTest < ViewCase
5
5
 
6
6
  setup :sign_in
7
7
  teardown :teardown
8
+
8
9
  def test_including_of_position_and_default_icons
9
10
  visit adminpanel.galleries_path
10
11
  assert_link 'Crear Galeria'
11
12
 
12
- # if this 2 icons exists, routes exist too
13
- assert_selector 'i.fa.fa-chevron-down'
14
- assert_selector 'i.fa.fa-chevron-up'
15
-
13
+ # test for draggable element
14
+ assert_selector 'td.draggable'
15
+
16
16
  assert_selector 'i.fa.fa-pencil'
17
17
  assert_selector 'i.fa.fa-trash-o'
18
18
  assert_selector 'i.fa.fa-search-plus'
@@ -2,7 +2,7 @@ require 'test_helper'
2
2
  require 'adminpanel/product'
3
3
  require 'adminpanel/category'
4
4
 
5
- class BelongsToNonCategoryModalTest < ViewCase
5
+ class BelongsToRemoteTest < ViewCase
6
6
 
7
7
  setup :visit_adminpanel_new_salesman_path
8
8
  teardown :teardown
@@ -1,7 +1,7 @@
1
1
  require 'test_helper'
2
2
  require 'adminpanel/product'
3
3
  require 'adminpanel/category'
4
- class HasManyThroughNonCategoryModalTest < ViewCase
4
+ class HasManyThroughRemoteTest < ViewCase
5
5
 
6
6
  setup :visit_adminpanel_new_department_path
7
7
  teardown :teardown
@@ -10,17 +10,13 @@ class DumpGeneratorTest < Rails::Generators::TestCase
10
10
  assert_no_file( 'db/users.json' )
11
11
  assert( Adminpanel::User.count > 0 ) #ensure there's something in adminpanel_users
12
12
 
13
- # Dir.mkdir("#{Rails.root.join('tmp/generators')}/db")
14
- # File.open("#{Rails.root.join('tmp/generators')}/db/seeds.rb", 'w') do
15
- # "\n"
16
- # end
17
13
  run_generator %w(
18
14
  user
19
15
  -i
20
16
  false
21
17
  )
22
18
 
23
- #assert has user fields in json format, in an array.
19
+ #assert has user fields in json format, in an array dumped
24
20
  assert_file(
25
21
  'db/users.json',
26
22
  /\[{/,
@@ -29,14 +25,6 @@ class DumpGeneratorTest < Rails::Generators::TestCase
29
25
  /"email":"user@example.com"/,
30
26
  /"role_id":/
31
27
  )
32
- # haven't been able to assert injection :(
33
- # assert_file(
34
- # 'db/seeds.rb',
35
- # /objects = JSON.parse(open("#{Rails.root}\/db\/users.json").read)/,
36
- # /objects.each do |element|/,
37
- # / Adminpanel::User.create element/,
38
- # /end/
39
- # )
40
28
  end
41
29
 
42
30
  def test_runs_without_errors
@@ -32,7 +32,7 @@ class GalleryGeneratorTest < Rails::Generators::TestCase
32
32
 
33
33
  def test_runs_without_errors
34
34
  assert_nothing_raised do
35
- run_generator
35
+ run_generator ['Testname']
36
36
  end
37
37
  end
38
38
 
@@ -16,22 +16,14 @@ class InitializeGeneratorTest < Rails::Generators::TestCase
16
16
  assert_file 'config/initializers/adminpanel_setup.rb'
17
17
  end
18
18
 
19
- def test_the_generation_of_the_categories_files
20
- run_generator
21
- assert_migration 'db/migrate/create_adminpanel_categories_table.rb'
22
- assert_file 'app/models/adminpanel/category.rb'
23
- end
24
-
25
19
  def test_the_generation_of_the_section_uploader
26
20
  run_generator
27
21
  assert_file 'app/uploaders/adminpanel/section_uploader.rb'
28
22
  end
29
23
 
30
24
  def test_the_not_generation_of_files
31
- run_generator %w( -c true -u true -m true -p true )
25
+ run_generator %w( -u true -m true -p true )
32
26
  assert_no_file 'config/initializers/adminpanel_setup.rb'
33
- assert_no_file 'app/models/adminpanel/category.rb'
34
- assert_no_migration 'db/migrate/create_adminpanel_categories_table.rb'
35
27
  assert_no_migration 'db/migrate/create_adminpanel_tables'
36
28
  assert_no_file 'app/uploaders/adminpanel/section_uploader.rb'
37
29
  end
@@ -101,6 +101,7 @@ class ResourceGeneratorTest < Rails::Generators::TestCase
101
101
  description:wysiwyg
102
102
  number:float
103
103
  flag:boolean
104
+ avatar:file
104
105
  quantity:integer
105
106
  date:datepicker
106
107
  categories:has_many
@@ -120,6 +121,8 @@ class ResourceGeneratorTest < Rails::Generators::TestCase
120
121
  /'type' => 'text_field',/,
121
122
  /'flag' => {/,
122
123
  /'type' => 'boolean',/,
124
+ /'avatar' => {/,
125
+ /'type' => 'file_field',/,
123
126
  /'quantity' => {/,
124
127
  /'type' => 'number_field',/,
125
128
  /'date' => {/,
@@ -160,11 +163,28 @@ class ResourceGeneratorTest < Rails::Generators::TestCase
160
163
  /'type' => 'has_many'/,
161
164
  /'model' => 'Adminpanel::Post'/,
162
165
  /'category_ids' => {/,
163
- /'type' => 'has_many'/,
164
166
  /'model' => 'Adminpanel::Category'/
165
167
  )
166
168
  end
167
169
 
170
+ def test_generating_with_single_attachment_file
171
+ run_generator %w(
172
+ monkey
173
+ avatar:file
174
+ )
175
+ assert_file(
176
+ 'app/models/adminpanel/monkey.rb',
177
+ /def name/,
178
+ /mount_uploader :avatar, MonkeyAvatarUploader/,
179
+ /'avatar' => {/,
180
+ /'type' => 'file_field'/
181
+ )
182
+ assert_file(
183
+ 'app/uploaders/adminpanel/monkey_avatar_uploader.rb',
184
+ /class MonkeyAvatarUploader </
185
+ )
186
+ end
187
+
168
188
  def test_that_runs_without_errors
169
189
  assert_nothing_raised do
170
190
  run_generator ["doll", ['name']]
@@ -5,10 +5,6 @@ class RouterHelperTest < ActionView::TestCase
5
5
 
6
6
  fixtures :all
7
7
 
8
- def test_get_gallery_childen
9
- assert_equal 'galleryfiles', get_gallery_children(:gallery)
10
- end
11
-
12
8
  def test_resource_parameters
13
9
  assert_equal( { path: 'categorias' }, resources_parameters(:categories) )
14
10
  assert_equal( { path: 'articulo-espacios-mayusculas-y-acentos' }, resources_parameters(:items) )