adminpanel 2.0.1 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
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