adminpanel 2.1.2 → 2.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/adminpanel.gemspec +20 -18
  3. data/app/assets/javascripts/adminpanel/jquery.knob.js +652 -0
  4. data/app/assets/javascripts/adminpanel/realm.js +20 -18
  5. data/app/assets/javascripts/adminpanel/spinner.js.coffee +3 -3
  6. data/app/controllers/adminpanel/analytics_controller.rb +99 -53
  7. data/app/controllers/adminpanel/auths_controller.rb +1 -1
  8. data/app/controllers/adminpanel/sessions_controller.rb +26 -26
  9. data/app/controllers/concerns/adminpanel/facebook_actions.rb +2 -2
  10. data/app/helpers/adminpanel/adminpanel_form_builder.rb +257 -298
  11. data/app/helpers/adminpanel/analytics_helper.rb +46 -0
  12. data/app/helpers/adminpanel/application_helper.rb +57 -57
  13. data/app/helpers/adminpanel/breadcrumbs_helper.rb +13 -13
  14. data/app/helpers/adminpanel/sessions_helper.rb +20 -20
  15. data/app/helpers/adminpanel/shared_pages_helper.rb +41 -41
  16. data/app/models/adminpanel/gallery.rb +65 -63
  17. data/app/models/adminpanel/image.rb +5 -5
  18. data/app/models/adminpanel/section.rb +61 -53
  19. data/app/models/adminpanel/user.rb +1 -6
  20. data/app/models/concerns/adminpanel/facebook.rb +1 -1
  21. data/app/uploaders/adminpanel/gallery_uploader.rb +1 -1
  22. data/app/views/adminpanel/analytics/_widget_task_statistics.html.erb +63 -0
  23. data/app/views/adminpanel/analytics/fb.html.erb +98 -0
  24. data/app/views/adminpanel/analytics/index.html.erb +8 -8
  25. data/app/views/adminpanel/galleries/_galleries_table.html.erb +12 -12
  26. data/app/views/adminpanel/galleries/move_better.js.erb +1 -1
  27. data/app/views/adminpanel/galleries/move_worst.js.erb +1 -1
  28. data/app/views/adminpanel/sections/_sections_table.html.erb +7 -7
  29. data/app/views/adminpanel/sections/show.html.erb +25 -25
  30. data/app/views/adminpanel/sessions/new.html.erb +22 -22
  31. data/app/views/layouts/_shim.html.erb +1 -1
  32. data/app/views/layouts/_side_menu.html.erb +35 -35
  33. data/app/views/layouts/admin-login.html.erb +22 -22
  34. data/app/views/layouts/admin.html.erb +35 -35
  35. data/app/views/shared/_breadcrumb.html.erb +4 -4
  36. data/app/views/shared/_error_messages.html.erb +15 -15
  37. data/app/views/shared/_form_fields.html.erb +48 -47
  38. data/app/views/shared/_image_fields.html.erb +1 -1
  39. data/config/initializers/pluralization_es.rb +1 -1
  40. data/config/locales/es.yml +38 -2
  41. data/config/routes.rb +5 -4
  42. data/lib/adminpanel/version.rb +1 -1
  43. data/lib/generators/adminpanel/gallery/templates/gallery_migration.rb +5 -5
  44. data/lib/generators/adminpanel/gallery/templates/uploader.rb +1 -1
  45. data/lib/generators/adminpanel/initialize/initialize_generator.rb +54 -54
  46. data/lib/generators/adminpanel/initialize/templates/category_template.rb +1 -1
  47. data/lib/generators/adminpanel/initialize/templates/create_adminpanel_categories_table.rb +5 -5
  48. data/lib/generators/adminpanel/initialize/templates/create_adminpanel_tables.rb +57 -57
  49. data/lib/generators/adminpanel/initialize/templates/section_uploader.rb +1 -1
  50. data/lib/generators/adminpanel/migration/migration_generator.rb +44 -0
  51. data/lib/generators/adminpanel/migration/migration_generator_helper.rb +19 -0
  52. data/lib/generators/adminpanel/resource/resource_generator.rb +60 -245
  53. data/lib/generators/adminpanel/resource/resource_generator_helper.rb +189 -0
  54. data/lib/generators/adminpanel/resource/templates/{controller.rb → adminpanel_controller_template.rb} +2 -2
  55. data/lib/generators/adminpanel/resource/templates/{resource.rb → adminpanel_resource_template.rb} +0 -0
  56. data/test/dummy/app/models/adminpanel/categorization.rb +2 -2
  57. data/test/dummy/app/models/adminpanel/category.rb +3 -3
  58. data/test/dummy/app/models/adminpanel/department.rb +2 -2
  59. data/test/dummy/app/models/adminpanel/item.rb +3 -3
  60. data/test/dummy/app/models/adminpanel/mug.rb +14 -14
  61. data/test/dummy/app/models/adminpanel/product.rb +19 -19
  62. data/test/dummy/app/models/adminpanel/salesman.rb +15 -15
  63. data/test/dummy/app/uploader/adminpanel/photo_uploader.rb +1 -1
  64. data/test/dummy/app/views/layouts/application.html.erb +9 -9
  65. data/test/dummy/config/boot.rb +1 -1
  66. data/test/features/shared/{belongs_to_category_modal_test.rb → form/belongs_to_category_modal_test.rb} +0 -0
  67. data/test/features/shared/{belongs_to_non_category_modal_test.rb → form/belongs_to_non_category_modal_test.rb} +0 -0
  68. data/test/features/shared/{has_many_through_category_modal_test.rb → form/has_many_through_category_modal_test.rb} +0 -0
  69. data/test/features/shared/{has_many_through_non_category_modal_test.rb → form/has_many_through_non_category_modal_test.rb} +0 -0
  70. data/test/features/shared/{edit_test.rb → resource/edit_test.rb} +0 -0
  71. data/test/features/shared/{index_test.rb → resource/index_test.rb} +0 -0
  72. data/test/features/shared/{new_test.rb → resource/new_test.rb} +0 -0
  73. data/test/features/shared/{show_test.rb → resource/show_test.rb} +0 -0
  74. data/test/features/shared/{action_exclution_test.rb → ui/action_exclution_test.rb} +0 -0
  75. data/test/test_helper.rb +1 -1
  76. metadata +44 -32
  77. data/test/dummy/app/controllers/adminpanel/.gitkeep +0 -0
  78. data/test/dummy/app/models/.gitkeep +0 -0
@@ -1,3 +1,3 @@
1
1
  <div class="product-image">
2
- <%= f.gallery_field :file %>
2
+ <%= f.gallery_field :file %>
3
3
  </div>
@@ -15,5 +15,5 @@ ActiveSupport::Inflector.inflections(:es) do |inflect|
15
15
  inflect.irregular('el', 'los')
16
16
 
17
17
  inflect.irregular('Galería de Inicio', 'Galería de Inicio')
18
- inflect.irregular('Google Analytics', 'Google Analytics')
18
+ inflect.irregular('Analytics', 'Analytics')
19
19
  end
@@ -1,6 +1,6 @@
1
1
  es:
2
2
  model:
3
- Analytic: 'Google Analytics'
3
+ Analytic: 'Analytics'
4
4
  Gallery: 'Galería de Inicio'
5
5
  Categories: 'Categorías'
6
6
  attributes:
@@ -34,7 +34,7 @@ es:
34
34
  too_short: 'es muy corta, mínimo 6 caracteres'
35
35
  time:
36
36
  formats:
37
- short: '%d de %B de %Y'
37
+ default: '%d/%m/%Y'
38
38
  estimate: '%Y-%m-%d'
39
39
  Add Image: 'Agregar Imagen'
40
40
  wysiwyg:
@@ -97,6 +97,42 @@ es:
97
97
  show: 'ver'
98
98
  signout: 'cerrar-sesion'
99
99
  signin: 'iniciar-sesion'
100
+ analytics:
101
+ day: 'Hoy'
102
+ days_28: 'el mes'
103
+ now: 'Ahora'
104
+ week: 'Semana'
105
+ month: 'Mes'
106
+ search: 'Buscar'
107
+ impressions: 'Impresiones'
108
+ unique: 'Únicas'
109
+ for: 'Estadísticas para '
110
+ facebook: 'Estadísticas de Facebook'
111
+ explanation: 'Explicación de las métricas'
112
+ description:
113
+ page_stories: '(Periodo) El número de historias creadas acerca de tu página (Cuenta total)'
114
+ page_consumptions: '(Periodo) El número de clicks en cualquiera de tus contenidos. Clicks generando historias están incluidos en otros clicks. Historias generadas sin clicks en la página (e.g., Darle like a la página en el `Timeline`) no son incluidos. (Cuenta total)'
115
+ page_consumptions_unique: '(Periodo) El número de clicks de usuarios diferentes en cualquiera de tus contenidos. Clicks generando historias están incluidos en otros clicks. Historias generadas sin clicks en la página (e.g., Darle like a la página en el `Timeline`) no son incluidos. (Usuarios únicos)'
116
+ page_views: '(Hoy) El total de vistas a la página (Cuenta total)'
117
+ page_views_unique: '(Hoy) El total de vistas a la página de usuarios loggeados en Facebook (Usuarios únicos)'
118
+ page_negative_feedback: '(Periodo) El número de veces que la gente te ha dado retroalimentación negativa (Unlike o Escoder página o post)(Cuenta total)'
119
+ page_negative_feedback_unique: '(Periodo) El número de personas que te ha dado retroalimentación negativa (Unlike o Escoder página o post)(Usuarios únicos)'
120
+ page_fans: '(Total) El número total de personas que ha dado like(me gusta) a la página (Usuarios únicos)'
121
+ page_fan_adds: '(Hoy) El número total de personas nuevas que le ha gustado tu página (Cuenta total)'
122
+ page_impressions_unique: '(Periodo) El número de personas que han visto cualquier contenido asociado con tu página (Usuarios únicos)'
123
+ page_impressions: '(Período) El número de impresiones vistas de cualquier contenido asociado con la página. (Cuenta Total)'
124
+ metrics:
125
+ page_stories: 'Hablando de esto'
126
+ page_consumptions: 'Clicks Totales'
127
+ page_consumptions_unique: 'Clicks de usuarios únicos'
128
+ page_views: 'Vistas a la página'
129
+ page_views_unique: 'Vistas de usuarios únicos a la página'
130
+ page_negative_feedback: 'Acciones negativas'
131
+ page_negative_feedback_unique: 'Acciones negativas de personas diferentes'
132
+ page_fans: 'Likes Totales'
133
+ page_fan_adds: 'Likes Nuevos'
134
+ page_impressions_unique: 'Impresiones de página de personas diferentes'
135
+ page_impressions: 'Impresiones de página'
100
136
  fb:
101
137
  posted: 'Publicado en el muro de %{user}'
102
138
  confirm_page: 'Seleccionar Cuenta'
data/config/routes.rb CHANGED
@@ -18,10 +18,11 @@ Adminpanel::Engine.routes.draw do
18
18
  end
19
19
  end
20
20
  when :analytics
21
- resources :analytics, resources_parameters(resource).merge(
22
- { only: [:index] }.merge(rest_path_names)
23
- )
24
- get :save_fb_access, to:'analytics#save_fb_access', as: 'fb_callback'
21
+ resources :analytics, resources_parameters(resource).merge({ only: [:index] }) do
22
+ collection do
23
+ get :fb, to:'analytics#fb', as: 'fb', path:'facebook'
24
+ end
25
+ end
25
26
  else
26
27
  if !get_gallery_children(resource).nil?
27
28
  # make the resources gallery routes
@@ -1,3 +1,3 @@
1
1
  module Adminpanel
2
- VERSION = "2.1.2"
2
+ VERSION = "2.1.3"
3
3
  end
@@ -1,11 +1,11 @@
1
1
  class CreateAdminpanel<%= class_name.pluralize %> < ActiveRecord::Migration
2
- def change
3
- create_table :adminpanel_<%= lower_name.pluralize %> do |t|
2
+ def change
3
+ create_table :adminpanel_<%= lower_name.pluralize %> do |t|
4
4
 
5
- t.integer :<%= reference_name %>_id
6
- t.string :file
5
+ t.integer :<%= reference_name %>_id
6
+ t.string :file
7
7
 
8
- t.timestamps
8
+ t.timestamps
9
9
  end
10
10
  end
11
11
  end
@@ -9,7 +9,7 @@ module Adminpanel
9
9
  end
10
10
 
11
11
  def store_dir
12
- "uploads/image/#{mounted_as}/#{model.id}"
12
+ "uploads/image/#{model.class.name.demodulize}/#{model.id}"
13
13
  end
14
14
 
15
15
  # Process files as they are uploaded:
@@ -1,65 +1,65 @@
1
1
  require 'rails/generators/active_record'
2
2
  module Adminpanel
3
- class InitializeGenerator < 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
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"
12
- class_option :'skip-section-uploader',
13
- :type => :boolean,
14
- :aliases => '-u',
15
- :default => false,
16
- :desc => 'Skip section uploader if true'
17
- class_option :'skip-migration',
18
- :type => :boolean,
19
- :aliases => '-m',
20
- :default => false,
21
- :desc => 'Skip initial migrations if true'
22
- class_option :'skip-setup',
23
- :type => :boolean,
24
- :aliases => '-p',
25
- :default => false,
26
- :desc => 'Skip setup if true'
27
- class_option :'skip-setup',
28
- :type => :boolean,
29
- :aliases => '-y',
30
- :default => false,
31
- :desc => 'Skip cancan\'s ability.rb'
3
+ class InitializeGenerator < 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
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"
12
+ class_option :'skip-section-uploader',
13
+ :type => :boolean,
14
+ :aliases => '-u',
15
+ :default => false,
16
+ :desc => 'Skip section uploader if true'
17
+ class_option :'skip-migration',
18
+ :type => :boolean,
19
+ :aliases => '-m',
20
+ :default => false,
21
+ :desc => 'Skip initial migrations if true'
22
+ class_option :'skip-setup',
23
+ :type => :boolean,
24
+ :aliases => '-p',
25
+ :default => false,
26
+ :desc => 'Skip setup if true'
27
+ class_option :'skip-setup',
28
+ :type => :boolean,
29
+ :aliases => '-y',
30
+ :default => false,
31
+ :desc => 'Skip cancan\'s ability.rb'
32
32
 
33
- def create_initializer
34
- if !options[:'skip-setup']
35
- copy_file 'adminpanel_setup.rb', 'config/initializers/adminpanel_setup.rb'
36
- end
37
- end
33
+ def create_initializer
34
+ if !options[:'skip-setup']
35
+ copy_file 'adminpanel_setup.rb', 'config/initializers/adminpanel_setup.rb'
36
+ end
37
+ end
38
38
 
39
- def create_ability
40
- if !options[:'skip-ability']
41
- copy_file 'ability.rb', 'app/models/ability.rb'
42
- end
43
- end
39
+ def create_ability
40
+ if !options[:'skip-ability']
41
+ copy_file 'ability.rb', 'app/models/ability.rb'
42
+ end
43
+ end
44
44
 
45
- def create_category
46
- if !options[:'skip-category']
47
- copy_file "category_template.rb", 'app/models/adminpanel/category.rb'
45
+ def create_category
46
+ if !options[:'skip-category']
47
+ copy_file "category_template.rb", 'app/models/adminpanel/category.rb'
48
48
  migration_template 'create_adminpanel_categories_table.rb', 'db/migrate/create_adminpanel_categories_table.rb'
49
- end
50
- end
49
+ end
50
+ end
51
51
 
52
- def create_section_uploader
53
- if !options[:'skip-section-uploader']
54
- copy_file "section_uploader.rb", 'app/uploaders/adminpanel/section_uploader.rb'
55
- end
56
- end
52
+ def create_section_uploader
53
+ if !options[:'skip-section-uploader']
54
+ copy_file "section_uploader.rb", 'app/uploaders/adminpanel/section_uploader.rb'
55
+ end
56
+ end
57
57
 
58
- def create_adminpanel_migration
59
- if !options[:'skip-migration']
58
+ def create_adminpanel_migration
59
+ if !options[:'skip-migration']
60
60
  migration_template 'create_adminpanel_tables.rb', 'db/migrate/create_adminpanel_tables.rb'
61
- end
62
- end
61
+ end
62
+ end
63
63
 
64
- end
64
+ end
65
65
  end
@@ -1,7 +1,7 @@
1
1
  module Adminpanel
2
2
  class Category < ActiveRecord::Base
3
3
  include Adminpanel::Base
4
-
4
+
5
5
  validates_presence_of :model
6
6
  validates_presence_of :name
7
7
  validates_uniqueness_of :name
@@ -1,11 +1,11 @@
1
1
  class CreateAdminpanelCategoriesTable < ActiveRecord::Migration
2
2
  def change
3
- create_table :adminpanel_categories do |t|
3
+ create_table :adminpanel_categories do |t|
4
4
 
5
5
 
6
- t.string :name
7
- t.string :model
8
- t.timestamps
9
- end
6
+ t.string :name
7
+ t.string :model
8
+ t.timestamps
9
+ end
10
10
  end
11
11
  end
@@ -1,68 +1,68 @@
1
1
  class CreateAdminpanelTables < ActiveRecord::Migration
2
- def migrate(direction)
3
- super
4
- # Create a default user
5
- if direction == :up
6
- if Rails.env.development?
7
- group = Adminpanel::Group.new(:name => "Admin")
8
- group.save
9
- Adminpanel::User.new(:email => 'admin@admin.com', :name => "Admin", :password => 'password', :password_confirmation => 'password', :group_id => group.id).save
10
- puts "The password for admin@admin.com is: password"
2
+ def migrate(direction)
3
+ super
4
+ # Create a default user
5
+ if direction == :up
6
+ if Rails.env.development?
7
+ group = Adminpanel::Group.new(:name => "Admin")
8
+ group.save
9
+ Adminpanel::User.new(:email => 'admin@admin.com', :name => "Admin", :password => 'password', :password_confirmation => 'password', :group_id => group.id).save
10
+ puts "The password for admin@admin.com is: password"
11
11
 
12
- end
13
- end
14
- end
12
+ end
13
+ end
14
+ end
15
15
 
16
- def change
17
- create_table :adminpanel_users do |t|
18
- t.string :name
19
- t.string :email
20
- t.string :group_id
21
- t.string :password_digest
22
- t.string :remember_token
23
- t.timestamps
24
- end
25
- add_index :adminpanel_users, [:email]
26
- add_index :adminpanel_users, [:remember_token]
16
+ def change
17
+ create_table :adminpanel_users do |t|
18
+ t.string :name
19
+ t.string :email
20
+ t.string :group_id
21
+ t.string :password_digest
22
+ t.string :remember_token
23
+ t.timestamps
24
+ end
25
+ add_index :adminpanel_users, [:email]
26
+ add_index :adminpanel_users, [:remember_token]
27
27
 
28
28
  create_table :adminpanel_galleries do |t|
29
- t.string :file
30
- t.integer :position
31
- t.timestamps
32
- end
29
+ t.string :file
30
+ t.integer :position
31
+ t.timestamps
32
+ end
33
33
 
34
- create_table :adminpanel_images do |t|
35
- t.string :file
36
- t.integer :section_id
37
- t.timestamps
38
- end
34
+ create_table :adminpanel_images do |t|
35
+ t.string :file
36
+ t.integer :section_id
37
+ t.timestamps
38
+ end
39
39
 
40
- create_table :adminpanel_groups do |t|
41
- t.string :name
42
- t.timestamps
43
- end
40
+ create_table :adminpanel_groups do |t|
41
+ t.string :name
42
+ t.timestamps
43
+ end
44
44
 
45
- create_table :adminpanel_auths do |t|
46
- t.string :name
47
- t.string :key
48
- t.string :value
49
- t.datetime :created_at, :null => false
50
- t.datetime :updated_at, :null => false
51
- end
52
- add_index :adminpanel_auths, [:name]
53
- add_index :adminpanel_auths, [:key]
45
+ create_table :adminpanel_auths do |t|
46
+ t.string :name
47
+ t.string :key
48
+ t.string :value
49
+ t.datetime :created_at, :null => false
50
+ t.datetime :updated_at, :null => false
51
+ end
52
+ add_index :adminpanel_auths, [:name]
53
+ add_index :adminpanel_auths, [:key]
54
54
 
55
- create_table :adminpanel_sections do |t|
56
- t.string :name
57
- t.boolean :has_description
58
- t.text :description
59
- t.string :key
60
- t.string :page
61
- t.boolean :has_image
62
- t.timestamps
63
- end
55
+ create_table :adminpanel_sections do |t|
56
+ t.string :name
57
+ t.boolean :has_description
58
+ t.text :description
59
+ t.string :key
60
+ t.string :page
61
+ t.boolean :has_image
62
+ t.timestamps
63
+ end
64
64
 
65
- add_index :adminpanel_sections, [:key]
66
- add_index :adminpanel_sections, [:page]
67
- end
65
+ add_index :adminpanel_sections, [:key]
66
+ add_index :adminpanel_sections, [:page]
67
+ end
68
68
  end
@@ -9,7 +9,7 @@ module Adminpanel
9
9
  end
10
10
 
11
11
  def store_dir
12
- "uploads/image/#{mounted_as}/#{model.id}"
12
+ "uploads/image/#{model.class.name.demodulize}/#{model.id}"
13
13
  end
14
14
 
15
15
  # Process files as they are uploaded:
@@ -0,0 +1,44 @@
1
+ require 'rails/generators/active_record'
2
+ require 'generators/adminpanel/resource/resource_generator_helper'
3
+ require 'generators/adminpanel/migration/migration_generator_helper'
4
+
5
+ module Adminpanel
6
+ class MigrationGenerator < ActiveRecord::Generators::Base
7
+ include ResourceGeneratorHelper
8
+ include MigrationGeneratorHelper
9
+
10
+ source_root File.expand_path("../templates", __FILE__)
11
+ desc "Generate a migration files and updates the model and controller"
12
+ argument :fields, :type => :array, :default => [], :banner => "field[:type][:index] field[:type][:index]"
13
+
14
+ def change_field_aliases
15
+ fields.each do |attribute|
16
+ type = attribute.split(':').second
17
+ case type
18
+ when 'wysiwyg'
19
+ fields.delete(attribute)
20
+ fields << attribute.split(':').first + ':' + 'text'
21
+ end
22
+ end
23
+ end
24
+
25
+ def generate_migration
26
+ parameters = fields
27
+ parameters.delete_if{ |pair| pair.split(':').second == 'has_many' }
28
+ invoke :migration, [migration_name, parameters]
29
+ end
30
+
31
+ def inject_attributes_into_file
32
+ inject_into_file(
33
+ "app/models/adminpanel/#{resource_migrating}.rb",
34
+ after: ' ['
35
+ ) do
36
+ indent ("\n" + get_attribute_hash + ','), 8
37
+ end
38
+ end
39
+
40
+ def puts_messages
41
+ puts "don't forget to migrate your database"
42
+ end
43
+ end
44
+ end