adminpanel 2.0.1 → 2.1.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 (84) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -0
  3. data/Gemfile +6 -3
  4. data/README.md +6 -26
  5. data/adminpanel.gemspec +6 -3
  6. data/app/assets/javascripts/adminpanel/bootstrap-wysihtml5-4pre.js +9579 -0
  7. data/app/assets/javascripts/adminpanel/bootstrap-wysihtml5.js +9 -9
  8. data/app/assets/javascripts/adminpanel/realm.js +12 -8
  9. data/app/assets/javascripts/adminpanel/spinner.js.coffee +11 -0
  10. data/app/assets/javascripts/adminpanel/wysiwyg.js.coffee +3 -0
  11. data/app/assets/javascripts/application-admin.js +1 -0
  12. data/app/assets/stylesheets/adminpanel/{bootstrap.css → bootstrap.css.erb} +2 -2
  13. data/app/assets/stylesheets/adminpanel/{theme.css → theme.css.erb} +6 -6
  14. data/app/controllers/adminpanel/analytics_controller.rb +2 -1
  15. data/app/controllers/adminpanel/application_controller.rb +1 -0
  16. data/app/controllers/adminpanel/auths_controller.rb +8 -0
  17. data/app/controllers/adminpanel/categories_controller.rb +1 -1
  18. data/app/controllers/adminpanel/galleries_controller.rb +3 -11
  19. data/app/controllers/adminpanel/sections_controller.rb +5 -14
  20. data/app/controllers/adminpanel/users_controller.rb +1 -1
  21. data/app/controllers/concerns/adminpanel/facebook_actions.rb +64 -0
  22. data/app/controllers/concerns/adminpanel/galleryzable_actions.rb +12 -14
  23. data/app/controllers/concerns/adminpanel/rest_actions.rb +2 -2
  24. data/app/helpers/adminpanel/adminpanel_form_builder.rb +20 -2
  25. data/app/helpers/adminpanel/shared_pages_helper.rb +13 -0
  26. data/app/models/adminpanel/auth.rb +34 -0
  27. data/app/models/adminpanel/section.rb +1 -2
  28. data/app/models/adminpanel/user.rb +1 -2
  29. data/app/models/concerns/adminpanel/base.rb +10 -34
  30. data/app/models/concerns/adminpanel/facebook.rb +27 -0
  31. data/app/views/adminpanel/sections/edit.html.erb +0 -5
  32. data/app/views/adminpanel/sections/index.html.erb +1 -3
  33. data/app/views/layouts/_side_menu.html.erb +5 -4
  34. data/app/views/shared/_create_remote_resource_button.html.erb +23 -0
  35. data/app/views/shared/_fb_icon_button.html.erb +26 -0
  36. data/app/views/shared/_fb_publish_modal.html.erb +40 -0
  37. data/app/views/shared/_form_fields.html.erb +6 -50
  38. data/app/views/shared/_modal.html.erb +1 -1
  39. data/app/views/shared/create_belongs_to.js.erb +1 -1
  40. data/app/views/shared/create_has_many.js.erb +1 -1
  41. data/app/views/shared/fb_choose_page.html.erb +47 -0
  42. data/app/views/shared/index.html.erb +2 -0
  43. data/app/views/shared/show.html.erb +2 -0
  44. data/config/initializers/pluralization_es.rb +3 -0
  45. data/config/locales/es.yml +69 -60
  46. data/config/routes.rb +8 -1
  47. data/lib/adminpanel.rb +1 -0
  48. data/lib/adminpanel/engine.rb +4 -1
  49. data/lib/adminpanel/version.rb +1 -1
  50. data/lib/generators/adminpanel/gallery/gallery_generator.rb +2 -2
  51. data/lib/generators/adminpanel/initialize/initialize_generator.rb +2 -3
  52. data/lib/generators/adminpanel/initialize/templates/ability.rb +1 -1
  53. data/lib/generators/adminpanel/initialize/templates/adminpanel_setup.rb +6 -2
  54. data/lib/generators/adminpanel/initialize/templates/create_adminpanel_tables.rb +11 -0
  55. data/lib/generators/adminpanel/resource/resource_generator.rb +112 -130
  56. data/lib/generators/adminpanel/resource/templates/controller.rb +4 -1
  57. data/lib/generators/adminpanel/resource/templates/resource.rb +4 -1
  58. data/lib/tasks/adminpanel/adminpanel.rake +6 -2
  59. data/spec/dummy/app/controllers/adminpanel/salesmen_controller.rb +9 -0
  60. data/spec/dummy/app/models/adminpanel/category.rb +1 -0
  61. data/spec/dummy/app/models/adminpanel/mug.rb +2 -2
  62. data/spec/dummy/app/models/adminpanel/product.rb +4 -6
  63. data/spec/dummy/app/models/adminpanel/salesman.rb +35 -0
  64. data/spec/dummy/config/initializers/adminpanel_setup.rb +2 -1
  65. data/spec/dummy/db/schema.rb +13 -0
  66. data/spec/features/shared_pages/edit_spec.rb +48 -0
  67. data/spec/features/shared_pages/index_spec.rb +50 -0
  68. data/spec/features/shared_pages/new_spec.rb +128 -0
  69. data/spec/features/shared_pages/show_spec.rb +30 -0
  70. data/spec/generators/gallery_generator_spec.rb +1 -1
  71. data/spec/generators/resource_generator_spec.rb +36 -11
  72. data/spec/spec_helper.rb +12 -13
  73. data/spec/support/capybara_matchers.rb +17 -0
  74. data/spec/support/factories.rb +1 -1
  75. data/spec/support/helper_methods.rb +0 -18
  76. data/spec/support/shared_connection.rb +10 -0
  77. metadata +100 -21
  78. data/app/assets/javascripts/adminpanel/bootstrap-wysihtml5-3.min.js +0 -261
  79. data/app/assets/javascripts/adminpanel/medium-editor.js +0 -703
  80. data/app/assets/javascripts/adminpanel/wysiwyg.js +0 -5
  81. data/app/assets/stylesheets/adminpanel/medium-editor.css.scss +0 -1
  82. data/app/views/shared/_init_editor.html.erb +0 -27
  83. data/lib/generators/adminpanel/resource/templates/migration.rb +0 -13
  84. data/spec/features/shared_pages_spec.rb +0 -128
@@ -49,6 +49,8 @@
49
49
  <%= render 'shared/edit_icon_button', resource: member %>
50
50
 
51
51
  <%= render 'shared/delete_icon_button', resource: member %>
52
+
53
+ <%= render 'shared/fb_icon_button', resource: member %>
52
54
  </td>
53
55
  </tr>
54
56
  <% end %>
@@ -13,6 +13,8 @@
13
13
  <%= content_tag(:i, nil, class: "fa fa-#{@model.icon}") %>
14
14
  <h5><%= @model.display_name.humanize %>
15
15
  <%= render 'shared/edit_icon_button', resource: resource, resource_name: @model.display_name %>
16
+
17
+ <%= render 'shared/fb_icon_button', resource: resource, resource_name: @model.display_name %>
16
18
  </h5>
17
19
  </div>
18
20
  <div class="widget-body">
@@ -13,4 +13,7 @@ ActiveSupport::Inflector.inflections(:es) do |inflect|
13
13
  inflect.singular(/es$/, '')
14
14
 
15
15
  inflect.irregular('el', 'los')
16
+
17
+ inflect.irregular('Galería de Inicio', 'Galería de Inicio')
18
+ inflect.irregular('Google Analytics', 'Google Analytics')
16
19
  end
@@ -1,64 +1,66 @@
1
1
  es:
2
2
  model:
3
- Analytic: 'Google Analítico'
4
- Gallery: "Galería de Inicio"
5
- Categories: "Categorías"
3
+ Analytic: 'Google Analytics'
4
+ Gallery: 'Galería de Inicio'
5
+ Categories: 'Categorías'
6
6
  attributes:
7
- adminproject_id: "Proyecto"
8
- brief: "Pequeña descripción"
9
- body: "Contenido"
10
- category_id: "Categoría"
11
- client_id: "Cliente"
12
- description: "Descripción"
13
- email: "Correo electrónico"
14
- file: "Imagen"
15
- group_id: "Rol de usuario"
16
- name: "Nombre"
17
- password: "Contraseña"
18
- password_confirmation: "Confirmar contraseña"
19
- password_digest: "Confirmar contraseña"
20
- username: "Nombre de usuario"
7
+ adminproject_id: 'Proyecto'
8
+ brief: 'Pequeña descripción'
9
+ body: 'Contenido'
10
+ category_id: 'Categoría'
11
+ client_id: 'Cliente'
12
+ description: 'Descripción'
13
+ email: 'Correo electrónico'
14
+ file: 'Imagen'
15
+ group_id: 'Rol de usuario'
16
+ name: 'Nombre'
17
+ password: 'Contraseña'
18
+ password_confirmation: 'Confirmar contraseña'
19
+ password_digest: 'Confirmar contraseña'
20
+ username: 'Nombre de usuario'
21
21
  errors:
22
- one: "%{model} no pudo guardarse debido a 1 error"
23
- other: "%{model} no pudo guardarse debido a %{count} errores"
22
+ one: '%{model} no pudo guardarse debido a 1 error'
23
+ other: '%{model} no pudo guardarse debido a %{count} errores'
24
24
  activerecord:
25
25
  errors:
26
26
  messages:
27
27
  not_phone: 'no es un teléfono (10 números)'
28
28
  blank: "no puede estar vacío"
29
- confirmation: "Deben ser iguales"
30
- invalid: "no es un correo"
31
- not_a_number: "tienen que ser sólo números"
32
- taken: "ya está en uso"
33
- too_long: "es muy larga"
34
- too_short: "es muy corta, mínimo 6 caracteres"
29
+ confirmation: 'Deben ser iguales'
30
+ invalid: 'no es un correo'
31
+ not_a_number: 'tienen que ser sólo números'
32
+ taken: 'ya está en uso'
33
+ too_long: 'es muy larga'
34
+ too_short: 'es muy corta, mínimo 6 caracteres'
35
35
  time:
36
36
  formats:
37
- short: "%d de %B de %Y"
38
- estimate: "%Y-%m-%d"
39
- Add Image: "Agregar Imagen"
37
+ short: '%d de %B de %Y'
38
+ estimate: '%Y-%m-%d'
39
+ Add Image: 'Agregar Imagen'
40
40
  wysiwyg:
41
- description: "Escriba la descripción aquí"
42
- Panel title: "Panel Administrativo"
43
- actions: "Acciones"
41
+ description: 'Escriba la descripción aquí'
42
+ Panel title: 'Panel Administrativo'
43
+ actions: 'Acciones'
44
44
  action:
45
- add: "Agregar"
46
- create: "Crear"
47
- close: "Cerrar"
48
- show: "Ver"
49
- submitting: "Enviando..."
50
- save: "Guardar"
51
- save_success: "Se ha guardado con éxito"
52
- update: "Actualizar"
53
- delete: "Eliminar"
54
- view: "Ver"
55
- delete confirmation: "Estás seguro que desea eliminar?"
45
+ add: 'Agregar'
46
+ create: 'Crear'
47
+ close: 'Cerrar'
48
+ delete: 'Eliminar'
49
+ delete confirmation: 'Estás seguro que desea eliminar?'
50
+ publish: 'Publicar'
51
+ share: 'Compartir %{model} en Facebook'
52
+ show: 'Ver'
53
+ submitting: 'Enviando...'
54
+ save: 'Guardar'
55
+ save_success: 'Se ha guardado con éxito'
56
+ update: 'Actualizar'
57
+ view: 'Ver'
56
58
  is_true: 'Sí'
57
59
  is_false: 'No'
58
60
  authentication:
59
- welcome: "Bienvenido! Inicia Sesión"
60
- signin_error: "Correo y/o Contraseña incorrecta."
61
- signin_success: "Bienvenido!"
61
+ welcome: 'Bienvenido! Inicia Sesión'
62
+ signin_error: 'Correo y/o Contraseña incorrecta.'
63
+ signin_success: 'Bienvenido!'
62
64
  not_authorized: 'No tienes permisos para acceder'
63
65
  gallery:
64
66
  container: 'Imágenes'
@@ -66,28 +68,35 @@ es:
66
68
  success: 'La imagen ha sido guardada'
67
69
  deleted: 'La imagen ha sido eliminada'
68
70
  moved : "Se ha actualizado la posición de la galería"
69
- not-moved: "No se pudo mover la Imagen"
70
- image: "Imagen"
71
- position: "Posición"
72
- action: "Acción"
71
+ not-moved: 'No se pudo mover la Imagen'
72
+ image: 'Imagen'
73
+ position: 'Posición'
74
+ action: 'Acción'
73
75
  user:
74
- new: "Agregar Usuario"
75
- success: "El usuario ha sido guardado"
76
+ new: 'Agregar Usuario'
77
+ success: 'El usuario ha sido guardado'
76
78
  section:
77
- name: "Nombre"
78
- description: "Descripción"
79
- edit: "Editar Sección"
80
- default: "Sin Sección"
81
- image: "Imagen"
79
+ name: 'Nombre'
80
+ description: 'Descripción'
81
+ edit: 'Editar Sección'
82
+ default: 'Sin Sección'
83
+ image: 'Imagen'
82
84
  session:
83
- password: "Contraseña"
84
- email: "Correo electrónico"
85
+ password: 'Contraseña'
86
+ email: 'Correo electrónico'
85
87
  other:
86
- add : "Agregar %{model}"
87
- no description: "No tiene descripción aún"
88
+ add : 'Agregar %{model}'
89
+ no description: 'No tiene descripción aún'
88
90
  routes:
89
91
  new: 'nuevo'
90
92
  edit: 'editar'
91
93
  show: 'ver'
92
94
  signout: 'cerrar-sesion'
93
95
  signin: 'iniciar-sesion'
96
+ fb:
97
+ posted: 'Publicado en el muro de %{user}'
98
+ not-posted: 'Hubo un error, no fue publicado en ningún muro, por favor intenta otra vez.'
99
+ pages: 'Publiar como %{name}'
100
+ page-select: 'Selecciona una cuenta para la publicación'
101
+ message: 'Mensaje de la publicación'
102
+ saved-token: 'Se guardó el token de Facebook con éxito, ya puede publicar con la cuenta de Facebook'
data/config/routes.rb CHANGED
@@ -21,6 +21,7 @@ Adminpanel::Engine.routes.draw do
21
21
  resources :analytics, resources_parameters(resource).merge(
22
22
  { only: [:index] }.merge(rest_path_names)
23
23
  )
24
+ get :save_fb_access, to:'analytics#save_fb_access', as: 'fb_callback'
24
25
  else
25
26
  if !get_gallery_children(resource).nil?
26
27
  # make the resources gallery routes
@@ -33,7 +34,13 @@ Adminpanel::Engine.routes.draw do
33
34
  end
34
35
 
35
36
  # normal resource
36
- resources resource, resources_parameters(resource).merge(rest_path_names)
37
+ resources resource, resources_parameters(resource).merge(rest_path_names) do
38
+ member do
39
+ get :fb_choose_page, as: 'fb_choose_page', path: 'publicar-a-pagina-en-fb'
40
+ post :fb_save_token, as: 'fb_save_token', path: 'guardar-token'
41
+ post 'fb_publish/:configuration_id', to: "#{resource}#fb_publish", as: 'fb_publish', path: 'publicar-a-facebook'
42
+ end
43
+ end
37
44
  end
38
45
  end
39
46
 
data/lib/adminpanel.rb CHANGED
@@ -6,6 +6,7 @@ require 'carrierwave/orm/activerecord'
6
6
  require 'google/api_client'
7
7
  require 'cancan'
8
8
  require 'font-awesome-rails'
9
+ require 'koala'
9
10
 
10
11
  module Adminpanel
11
12
  end
@@ -5,7 +5,10 @@ module Adminpanel
5
5
 
6
6
  class << self
7
7
  mattr_accessor :analytics_profile_id, :analytics_key_path, :analytics_key_filename,
8
- :displayable_resources
8
+ :displayable_resources, :fb_app_id, :fb_app_secret
9
+
10
+ self.fb_app_id = nil
11
+ self.fb_app_secret = nil
9
12
  self.analytics_profile_id = nil
10
13
  self.analytics_key_path = "config/analytics"
11
14
  self.analytics_key_filename = nil
@@ -1,3 +1,3 @@
1
1
  module Adminpanel
2
- VERSION = "2.0.1"
2
+ VERSION = "2.1.0"
3
3
  end
@@ -16,7 +16,7 @@ module Adminpanel
16
16
  def generate_migration
17
17
  migration_template(
18
18
  'gallery_migration.rb',
19
- "db/migrate/create_adminpanel_#{lower_name.pluralize}_table.rb"
19
+ "db/migrate/create_adminpanel_#{lower_name.pluralize}.rb"
20
20
  )
21
21
  puts "don't forget to add the form_field, the relationship and #{lower_name}s_attributes it to the permited params"
22
22
  end
@@ -29,7 +29,7 @@ module Adminpanel
29
29
  def lower_name
30
30
  "#{reference_name}file"
31
31
  end
32
-
32
+
33
33
  def class_name
34
34
  "#{lower_name.capitalize}"
35
35
  end
@@ -31,7 +31,7 @@ module Adminpanel
31
31
  :default => false,
32
32
  :desc => 'Skip cancan\'s ability.rb'
33
33
 
34
- def create_initializers
34
+ def create_initializer
35
35
  if !options[:'skip-setup']
36
36
  copy_file 'adminpanel_setup.rb', 'config/initializers/adminpanel_setup.rb'
37
37
  end
@@ -43,9 +43,8 @@ module Adminpanel
43
43
  end
44
44
  end
45
45
 
46
- def create_categories
46
+ def create_category
47
47
  if !options[:'skip-category']
48
- # puts "including category files"
49
48
  copy_file "category_template.rb", 'app/models/adminpanel/category.rb'
50
49
  migration_template 'create_adminpanel_categories_table.rb', 'db/migrate/create_adminpanel_categories_table.rb'
51
50
  end
@@ -3,7 +3,7 @@ class Ability
3
3
 
4
4
  def initialize(user)
5
5
 
6
- if user.group.name == "Admin"
6
+ if user.group.name == 'Admin'
7
7
  can :manage, :all
8
8
  else
9
9
  # cannot :manage, Adminpanel::User
@@ -10,12 +10,16 @@ Adminpanel.setup do |config|
10
10
  # # Path to the key file, defaults to config/analytics
11
11
  # config.analytics_key_path = "config/analytics"
12
12
 
13
+ # # Facebook app id
14
+ # config.fb_app_id = '1234'
15
+ # # Facebook app secret *MAKE SURE TO DON'T SHARE THIS SECRET*
16
+ # config.fb_app_secret = '1234'
17
+
13
18
  # # This are the modules that are going to be displayed and order that are going to be displayed
14
19
  config.displayable_resources = [
15
20
  :analytics,
16
21
  :users,
17
22
  :galleries,
18
- :sections,
19
- :categories
23
+ :sections
20
24
  ]
21
25
  end
@@ -42,6 +42,16 @@ class CreateAdminpanelTables < ActiveRecord::Migration
42
42
  t.timestamps
43
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]
54
+
45
55
  create_table :adminpanel_sections do |t|
46
56
  t.string :name
47
57
  t.boolean :has_description
@@ -53,5 +63,6 @@ class CreateAdminpanelTables < ActiveRecord::Migration
53
63
  end
54
64
 
55
65
  add_index :adminpanel_sections, [:key]
66
+ add_index :adminpanel_sections, [:page]
56
67
  end
57
68
  end
@@ -5,8 +5,24 @@ module Adminpanel
5
5
  class ResourceGenerator < ActiveRecord::Generators::Base
6
6
  source_root File.expand_path("../templates", __FILE__)
7
7
  desc "Generate the resource files necessary to use a model"
8
+ class_option :'include-gallery',
9
+ :type => :boolean,
10
+ :aliases => '-g',
11
+ :default => true,
12
+ :desc => 'Creates the gallery for this resource'
8
13
 
9
- argument :fields, :type => :array, :default => "name:string"
14
+ argument :fields, :type => :array, :default => [], :banner => "field[:type][:index] field[:type][:index]"
15
+
16
+ def change_fields_aliases
17
+ fields.each do |attribute|
18
+ type = attribute.split(':').second
19
+ case type
20
+ when 'wysiwyg'
21
+ fields.delete(attribute)
22
+ fields << attribute.split(':').first + ':' + 'text'
23
+ end
24
+ end
25
+ end
10
26
 
11
27
  def generate_model
12
28
  template 'resource.rb', "app/models/adminpanel/#{lower_singularized_name}.rb"
@@ -19,27 +35,54 @@ module Adminpanel
19
35
  end
20
36
 
21
37
  def generate_migrations
22
- migration_template(
23
- 'migration.rb',
24
- "db/migrate/create_#{pluralized_name}_table.rb"
25
- )
38
+ parameters = fields
39
+ parameters.delete_if{ |pair| pair.split(':').second == 'has_many' }
40
+ invoke :migration, ["create_adminpanel_#{pluralized_name}", parameters]
41
+ end
42
+
43
+ def generate_gallery
44
+ if has_gallery?
45
+ invoke 'adminpanel:gallery', [lower_singularized_name]
46
+ end
47
+ end
48
+
49
+ def add_resource_to_config
50
+ if setup_is_found?
51
+ inject_into_file 'config/initializers/adminpanel_setup.rb',
52
+ after: 'config.displayable_resources = [' do
53
+ indent "\n:#{pluralized_name},", 4
54
+ end
55
+ end
26
56
  end
27
57
 
28
58
  def print_messages
29
- puts "don't forget to add :#{pluralized_name} to adminpanel_setup.rb"
59
+ puts "don't forget to restart your server"
30
60
  end
31
61
 
32
62
  private
63
+
64
+ def setup_is_found?
65
+ if Dir.exists?('config') && Dir.exists?('config/initializers') && File.exists?('config/initializers/adminpanel_setup.rb')
66
+ true
67
+ else
68
+ false
69
+ end
70
+ end
71
+
33
72
  def is_a_resource?
34
73
  fields.each do |attribute|
35
74
  assign_attributes_variables(attribute)
36
- if @attr_type != "belongs_to"
75
+ if @attr_type != 'belongs_to'
37
76
  return true
38
77
  end
39
78
  end
40
79
  false
41
80
  end
42
81
 
82
+ def has_gallery?
83
+ options[:'include-gallery']
84
+ end
85
+
43
86
  def gallery_name
44
87
  "#{lower_singularized_name}file"
45
88
  end
@@ -68,147 +111,100 @@ module Adminpanel
68
111
  "#{resource.singularize.capitalize}"
69
112
  end
70
113
 
71
- def models_in_parameter(field)
72
- models = []
73
- field.split(",").each do |member|
74
- models << member.downcase.pluralize
75
- end
76
- models
77
- end
78
-
79
114
  def assign_attributes_variables(attribute)
115
+ @attr_field = attribute.split(":").first
80
116
  if attribute.split(":").second.nil?
81
- @attr_field = attribute
82
117
  @attr_type = "string"
83
118
  else
84
- @attr_field = attribute.split(":").first
85
119
  @attr_type = attribute.split(":").second
86
120
  end
87
121
  end
88
122
 
89
123
  def symbolized_attributes
90
- attr_string = ''
91
- fields.each do |attribute|
124
+ fields.map do |attribute|
125
+ assign_attributes_variables(attribute)
126
+ case @attr_type
127
+ when 'belongs_to'
128
+ ':' + belongs_to_field(@attr_field)
129
+ when 'has_many'
130
+ ':' + has_many_field(@attr_field)
131
+ else
132
+ ":#{attribute.split(':').first}"
133
+ end
134
+ end.join(",\n")
135
+ end
92
136
 
137
+ def get_attribute_hash
138
+ fields.map do |attribute|
93
139
  assign_attributes_variables(attribute)
140
+ send(@attr_type + '_form_hash')
141
+ end.join(", \n")
142
+ end
94
143
 
95
- if @attr_type == 'images'
96
- attr_string = attr_string + "{:#{gallery_name.pluralize}_attributes => [:id, :file, :_destroy]}, "
97
- elsif @attr_type == 'belongs_to'
98
- attr_string = "#{attr_string}:#{belongs_to_field(@attr_field)}, "
99
- elsif @attr_type == 'has_many' || @attr_type == 'has_many_through'
100
- if @attr_field.split(',').second == nil
101
- attr_string = "#{attr_string}:#{has_many_field(@attr_field)}, "
102
- else
103
- model_name = models_in_parameter(@attr_field).first
104
- attr_string = "#{attr_string} {:#{has_many_field(model_name)} => []}, "
105
- end
106
- else
107
- attr_string = attr_string + ":#{@attr_field}, "
108
- end
109
- end
110
- 2.times do
111
- attr_string.chop! #to remove the last white space and the last ","
112
- end
113
- attr_string
114
- end
115
-
116
- def adminpanel_form_attributes
117
- form_hash = ""
118
- fields.each do |attribute|
144
+ def string_form_hash
145
+ attribute_hash(@attr_field, 'text_field')
146
+ end
119
147
 
120
- assign_attributes_variables(attribute)
121
- case(@attr_type)
122
- when 'string', 'float'
123
- form_hash = form_hash + "#{attribute_hash('text_field')}"
124
- when 'text', 'wysiwyg'
125
- form_hash = form_hash + "#{attribute_hash('wysiwyg_field')}"
126
- when 'integer'
127
- form_hash = form_hash + "#{attribute_hash('number_field')}"
128
- when 'boolean'
129
- form_hash = form_hash + "#{attribute_hash('boolean')}"
130
- when 'datepicker'
131
- form_hash = form_hash + "#{attribute_hash('datepicker')}"
132
- when 'images'
133
- form_hash = form_hash + "#{file_field_hash}"
134
- when 'belongs_to'
135
- form_hash = form_hash + "#{belongs_to_attribute_hash(belongs_to_field(@attr_field))}"
136
- when 'has_many', 'has_many_through'
137
- if models_in_parameter(@attr_field).second.nil?
138
- through_model = @attr_field
139
- else
140
- through_model = models_in_parameter(@attr_field).first
141
- end
142
- through_model = resource_class_name(through_model)
143
- # form_hash = form_hash + "#{relational_attribute_hash('belongs_to')}"
144
- form_hash = form_hash + has_many_attribute_hash(has_many_field(through_model), through_model)
145
- end
146
- end
147
- form_hash
148
+ def float_form_hash
149
+ attribute_hash(@attr_field, 'text_field')
148
150
  end
149
151
 
150
- def attribute_hash(type)
151
- "#{attribute_name} => {#{form_type(type)}," +
152
- "#{label_type}," +
153
- "#{placeholder_type}}\n\t\t\t},"
152
+ def text_form_hash
153
+ attribute_hash(@attr_field ,'wysiwyg_field')
154
154
  end
155
155
 
156
- def file_field_hash
157
- "#{starting_hash(gallery_name.pluralize)} => {#{form_type('adminpanel_file_field')}," +
158
- "#{label_type}," +
159
- "#{placeholder_type}}\n\t\t\t},"
156
+ def integer_form_hash
157
+ attribute_hash(@attr_field, 'number_field')
160
158
  end
161
159
 
162
- def belongs_to_attribute_hash(name)
163
- "#{starting_hash(name)} => {#{form_type('belongs_to')}," +
164
- "#{model_type(resource_class_name(@attr_field))}," +
165
- "#{label_type}," +
166
- "#{placeholder_type}}\n\t\t\t},"
160
+ def boolean_form_hash
161
+ attribute_hash(@attr_field, 'boolean')
167
162
  end
168
163
 
169
- def has_many_attribute_hash(name, through_model)
170
- "#{starting_hash(name)} => {#{form_type('has_many')}," +
171
- "#{model_type(through_model)}," +
172
- "#{label_type}," +
173
- "#{placeholder_type}}\n\t\t\t},"
164
+ def datepicker_form_hash
165
+ attribute_hash(@attr_field, 'datepicker')
174
166
  end
175
167
 
176
- def attribute_name
177
- "\n\t\t\t{\n\t\t\t\t'#{@attr_field}'"
168
+ def file_field_form_hash
169
+ attribute_hash(gallery_name.pluralize, 'adminpanel_file_field')
178
170
  end
179
171
 
180
- def starting_hash(name)
181
- "\n\t\t\t{\n\t\t\t\t'#{name}'"
172
+ def belongs_to_form_hash
173
+ attribute_hash(belongs_to_field(@attr_field), 'belongs_to', resource_class_name(@attr_field))
174
+ end
175
+
176
+ def has_many_form_hash
177
+ attribute_hash(has_many_field(resource_class_name(@attr_field)), 'has_many', 'has_many model')
178
+ end
179
+
180
+ def attribute_hash(name, type, model = '')
181
+ if model != ''
182
+ model = model_type(model) + ",\n"
183
+ end
184
+ "{\n" +
185
+ indent("'#{name}'" + " => {\n", 2) +
186
+ indent(form_type(type), 4) + ",\n" +
187
+ indent(label_type, 4) + ",\n" +
188
+ indent(placeholder_type, 4) + ",\n" +
189
+ indent(model, 4) +
190
+ indent("}\n", 2) +
191
+ '}'
182
192
  end
183
193
 
184
194
  def form_type(type)
185
- "\n\t\t\t\t\t'type' => '#{type}'"
195
+ "'type' => '#{type}'"
186
196
  end
187
197
 
188
198
  def label_type
189
- "\n\t\t\t\t\t'label' => '#{@attr_field}'"
199
+ "'label' => '#{@attr_field}'"
190
200
  end
191
201
 
192
202
  def placeholder_type
193
- "\n\t\t\t\t\t'placeholder' => '#{@attr_field}'\n\t\t\t\t"
203
+ "'placeholder' => '#{@attr_field}'"
194
204
  end
195
205
 
196
206
  def model_type(type)
197
- "\n\t\t\t\t\t'model' => 'Adminpanel::#{type}'"
198
- end
199
-
200
- def migration_string(field, type)
201
- if type == "datepicker"
202
- "t.string :#{field}"
203
- elsif type == "wysiwyg"
204
- "t.text :#{field}"
205
- elsif type == "belongs_to"
206
- "t.integer :#{belongs_to_field(field)}"
207
- elsif type == "images" || type == "has_many" || type == "has_many_through"
208
- ""# no need for an association here.
209
- else
210
- "t.#{type} :#{field}"
211
- end
207
+ "'model' => 'Adminpanel::#{type}'"
212
208
  end
213
209
 
214
210
  def has_associations?
@@ -227,8 +223,6 @@ module Adminpanel
227
223
  assign_attributes_variables(attribute)
228
224
  if @attr_type == "belongs_to"
229
225
  association = "#{association}#{belongs_to_association(@attr_field)}"
230
- elsif @attr_type == "images"
231
- association = "#{association}#{image_association}"
232
226
  elsif @attr_type == "has_many" || @attr_type == "has_many_through"
233
227
  association = "#{association}#{has_many_association(@attr_field)}"
234
228
  end
@@ -242,28 +236,16 @@ module Adminpanel
242
236
  end
243
237
 
244
238
  def has_many_association(field)
245
- if models_in_parameter(field).second.nil?
246
- return "has_many :#{models_in_parameter(field).first}\n\t\t" +
247
- "has_many :#{models_in_parameter(field).first}, " +
248
- ":through => :#{models_in_parameter(field).first}ation, " +
249
- ":dependent => :destroy\n\t\t"
250
- else
251
- return "has_many :#{models_in_parameter(field).second}\n\t\t" +
252
- "has_many :#{models_in_parameter(field).first}, " +
253
- ":through => :#{models_in_parameter(field).second}, " +
254
- ":dependent => :destroy\n\t\t"
255
- end
239
+ return "# has_many :categorizations\n\t\t" +
240
+ "# has_many :#{@attr_field}, " +
241
+ ":through => :categorizations, " +
242
+ ":dependent => :destroy\n\t\t"
256
243
  end
257
244
 
258
- def image_association
259
- generate_gallery
245
+ def get_gallery
260
246
  return "\n\t\tmount_images :#{gallery_name.pluralize}\n"
261
247
  end
262
248
 
263
- def generate_gallery
264
- generate 'adminpanel:gallery', lower_singularized_name
265
- end
266
-
267
249
  end
268
250
  end
269
251
  end