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
@@ -6,7 +6,7 @@
6
6
  var size = (options && options.size) ? ' btn-'+options.size : '';
7
7
  return "<li class='dropdown'>" +
8
8
  "<a class='btn dropdown-toggle" + size + "' data-toggle='dropdown' href='#'>" +
9
- "<i class='icon-font'></i>&nbsp;<span class='current-font'>" + locale.font_styles.normal + "</span>&nbsp;<b class='caret'></b>" +
9
+ "<i class='fa fa-font'></i>&nbsp;<span class='current-font'>" + locale.font_styles.normal + "</span>&nbsp;<b class='caret'></b>" +
10
10
  "</a>" +
11
11
  "<ul class='dropdown-menu'>" +
12
12
  "<li><a data-wysihtml5-command='formatBlock' data-wysihtml5-command-value='div' tabindex='-1'>" + locale.font_styles.normal + "</a></li>" +
@@ -24,9 +24,9 @@
24
24
  var size = (options && options.size) ? ' btn-'+options.size : '';
25
25
  return "<li>" +
26
26
  "<div class='btn-group'>" +
27
- "<a class='btn" + size + "' data-wysihtml5-command='bold' title='CTRL+B' tabindex='-1'>" + locale.emphasis.bold + "</a>" +
28
- "<a class='btn" + size + "' data-wysihtml5-command='italic' title='CTRL+I' tabindex='-1'>" + locale.emphasis.italic + "</a>" +
29
- "<a class='btn" + size + "' data-wysihtml5-command='underline' title='CTRL+U' tabindex='-1'>" + locale.emphasis.underline + "</a>" +
27
+ "<a class='btn' data-wysihtml5-command='bold' title='CTRL+B' tabindex='-1'><i class='fa fa-bold'></i></a>" +
28
+ "<a class='btn' data-wysihtml5-command='italic' title='CTRL+I' tabindex='-1'><i class='fa fa-italic'></i></a>" +
29
+ "<a class='btn' data-wysihtml5-command='underline' title='CTRL+U' tabindex='-1'><i class='fa fa-underline'></i></a>" +
30
30
  "</div>" +
31
31
  "</li>";
32
32
  },
@@ -35,10 +35,10 @@
35
35
  var size = (options && options.size) ? ' btn-'+options.size : '';
36
36
  return "<li>" +
37
37
  "<div class='btn-group'>" +
38
- "<a class='btn" + size + "' data-wysihtml5-command='insertUnorderedList' title='" + locale.lists.unordered + "' tabindex='-1'><i class='icon-list'></i></a>" +
39
- "<a class='btn" + size + "' data-wysihtml5-command='insertOrderedList' title='" + locale.lists.ordered + "' tabindex='-1'><i class='icon-th-list'></i></a>" +
40
- "<a class='btn" + size + "' data-wysihtml5-command='Outdent' title='" + locale.lists.outdent + "' tabindex='-1'><i class='icon-indent-right'></i></a>" +
41
- "<a class='btn" + size + "' data-wysihtml5-command='Indent' title='" + locale.lists.indent + "' tabindex='-1'><i class='icon-indent-left'></i></a>" +
38
+ "<a class='btn" + size + "' data-wysihtml5-command='insertUnorderedList' title='" + locale.lists.unordered + "' tabindex='-1'><i class='fa fa-list-ul'></i></a>" +
39
+ "<a class='btn" + size + "' data-wysihtml5-command='insertOrderedList' title='" + locale.lists.ordered + "' tabindex='-1'><i class='fa fa-list-ol'></i></a>" +
40
+ "<a class='btn" + size + "' data-wysihtml5-command='Outdent' title='" + locale.lists.outdent + "' tabindex='-1'><i class='fa fa-outdent'></i></a>" +
41
+ "<a class='btn" + size + "' data-wysihtml5-command='Indent' title='" + locale.lists.indent + "' tabindex='-1'><i class='fa fa-indent'></i></a>" +
42
42
  "</div>" +
43
43
  "</li>";
44
44
  },
@@ -88,7 +88,7 @@
88
88
  var size = (options && options.size) ? ' btn-'+options.size : '';
89
89
  return "<li>" +
90
90
  "<div class='btn-group'>" +
91
- "<a class='btn" + size + "' data-wysihtml5-action='change_view' title='" + locale.html.edit + "' tabindex='-1'><i class='icon-pencil'></i></a>" +
91
+ "<a class='btn" + size + "' data-wysihtml5-action='change_view' title='" + locale.html.edit + "' tabindex='-1'><i class='fa fa-pencil'></i></a>" +
92
92
  "</div>" +
93
93
  "</li>";
94
94
  },
@@ -1,9 +1,9 @@
1
1
 
2
- $(function() {
2
+ var ready = function(){
3
3
 
4
- // toggle arrow on menu items
4
+ // toggle arrow on menu items
5
5
  $('.accordion-heading .accordion-toggle').click(function(){
6
- $('.accordion-heading .accordion-toggle').not($(this)[0], '.accordion-heading .accordion-toggle.collapse').addClass('collapsed');
6
+ $('.accordion-heading .accordion-toggle').not($(this)[0], '.accordion-heading .accordion-toggle.collapse').addClass('collapsed');
7
7
  });
8
8
 
9
9
 
@@ -26,7 +26,7 @@ $(function() {
26
26
  });
27
27
 
28
28
 
29
- // funtion to slide menu out from the left
29
+ // funtion to slide menu out from the left
30
30
  $('.slide_menu_left').click(function(e){
31
31
 
32
32
  e.preventDefault();
@@ -43,7 +43,7 @@ $(function() {
43
43
  // $(window).bind('resize', handler);
44
44
  }
45
45
  });
46
-
46
+
47
47
 
48
48
  // collapse function for the widget
49
49
  $('.widget-buttons a.collapse').click(function(){
@@ -57,10 +57,14 @@ $(function() {
57
57
  });
58
58
 
59
59
  $('.datepicker-basic').datepicker();
60
- }); // end document reday
61
60
 
61
+ };
62
+
63
+ $(document).ready(ready);
64
+ $(document).on('page:load', ready);
62
65
 
63
- //----- Side menu functions -----//
66
+
67
+ //----- Side menu functions -----
64
68
 
65
69
  // slide menu out of view
66
70
  function sidemenu_close(){
@@ -84,4 +88,4 @@ $(function() {
84
88
  $(".nav-collapse.collapse").stop().animate({
85
89
  'left': '0'
86
90
  }, 250, 'swing').addClass('open_left');
87
- }
91
+ }
@@ -0,0 +1,11 @@
1
+ $(document).on 'click', 'a.accordion-toggle', ->
2
+ $( this ).attr('data-clicked', true)
3
+
4
+ $(document).on 'page:fetch', ->
5
+ $('a.accordion-toggle[data-clicked="true"]').children('i:first').toggleClass('hidden')
6
+ $('a.accordion-toggle[data-clicked="true"]').prepend('<i class="fa fa-spinner fa-spin"></i>')
7
+
8
+ $(document).on 'page:restore', ->
9
+ $('a.accordion-toggle[data-clicked="true"]').children('i:first').remove()
10
+ $('a.accordion-toggle[data-clicked="true"]').children('i:first').toggleClass 'hidden'
11
+ $('a.accordion-toggle[data-clicked="true"]').attr 'data-clicked', false
@@ -0,0 +1,3 @@
1
+ $(document).ready ->
2
+ $('.wysihtml5').each (i, elem) ->
3
+ $(elem).wysihtml5()
@@ -15,3 +15,4 @@
15
15
  //= require turbolinks
16
16
  //= require adminpanel/bootstrap
17
17
  //= require_tree ./adminpanel/.
18
+ Turbolinks.enableTransitionCache();
@@ -2368,7 +2368,7 @@ input[type="submit"].btn.btn-mini {
2368
2368
  *margin-right: .3em;
2369
2369
  line-height: 14px;
2370
2370
  vertical-align: text-top;
2371
- background-image: url("glyphicons-halflings.png");
2371
+ background-image: url(asset_path 'adminpanel/glyphicons-halflings.png');
2372
2372
  background-position: 14px 14px;
2373
2373
  background-repeat: no-repeat;
2374
2374
  margin-top: 1px;
@@ -2387,7 +2387,7 @@ input[type="submit"].btn.btn-mini {
2387
2387
  .dropdown-menu > .active > a > [class*=" icon-"],
2388
2388
  .dropdown-submenu:hover > a > [class^="icon-"],
2389
2389
  .dropdown-submenu:hover > a > [class*=" icon-"] {
2390
- background-image: url("glyphicons-halflings-white.png");
2390
+ background-image: url(asset_path 'adminpanel/glyphicons-halflings-white.png');
2391
2391
  }
2392
2392
  .icon-glass {
2393
2393
  background-position: 0 0;
@@ -12,7 +12,7 @@ html, body{
12
12
  body{
13
13
  padding-top: 45px;
14
14
  font-family: 'Open Sans', sans-serif;
15
- background-image: url("dotted.png");
15
+ background-image: url(<%= asset_path 'adminpanel/dotted.png' %>);
16
16
  overflow-x: hidden;
17
17
  }
18
18
  h2{
@@ -307,12 +307,12 @@ table.table thead .sorting_desc_disabled {
307
307
  cursor: pointer;
308
308
  *cursor: hand;
309
309
  }
310
- table.table thead .sorting { background: url('sort_both.png') no-repeat center right; }
311
- table.table thead .sorting_asc { background: url('sort_asc.png') no-repeat center right; }
312
- table.table thead .sorting_desc { background: url('sort_desc.png') no-repeat center right; }
310
+ table.table thead .sorting { background: url(<%= asset_path 'adminpanel/sort_both.png' %>) no-repeat center right; }
311
+ table.table thead .sorting_asc { background: url(<%= asset_path 'adminpanel/sort_asc.png' %>) no-repeat center right; }
312
+ table.table thead .sorting_desc { background: url(<%= asset_path 'adminpanel/sort_desc.png' %>) no-repeat center right; }
313
313
 
314
- table.table thead .sorting_asc_disabled { background: url('sort_asc_disabled.png') no-repeat center right; }
315
- table.table thead .sorting_desc_disabled { background: url('sort_desc_disabled.png') no-repeat center right; }
314
+ table.table thead .sorting_asc_disabled { background: url(<%= asset_path 'adminpanel/sort_asc_disabled.png' %>) no-repeat center right; }
315
+ table.table thead .sorting_desc_disabled { background: url(<%= asset_path 'adminpanel/sort_desc_disabled.png' %>) no-repeat center right; }
316
316
  .dataTables_filter{
317
317
  text-align: right;
318
318
  }
@@ -62,7 +62,7 @@ module Adminpanel
62
62
  )
63
63
 
64
64
  @visits = @visitCount.data.rows.collect do |r|
65
- r[2]
65
+ r[2]
66
66
  end
67
67
 
68
68
  @visitDates = @visitCount.data.rows.collect { |r| "#{r[0]}/#{r[1]}" }
@@ -73,5 +73,6 @@ module Adminpanel
73
73
  format.json {render :json => {:visit_count => @visitCount, :visits => @visits, :visit_dates => @visitDates }}
74
74
  end
75
75
  end
76
+
76
77
  end
77
78
  end
@@ -7,6 +7,7 @@ module Adminpanel
7
7
  include SessionsHelper
8
8
  include Adminpanel::RestActions
9
9
  include Adminpanel::GalleryzableActions
10
+ include Adminpanel::FacebookActions
10
11
 
11
12
  layout 'admin'
12
13
 
@@ -0,0 +1,8 @@
1
+ module Adminpanel
2
+ class AuthsController < ApplicationController
3
+ private
4
+ def auth_params
5
+ params.require(:auth).permit(:name, :value, :expiration, :fb_page_access_key)
6
+ end
7
+ end
8
+ end
@@ -1,6 +1,6 @@
1
1
  module Adminpanel
2
2
  class CategoriesController < ApplicationController
3
- load_and_authorize_resource
3
+ authorize_resource
4
4
 
5
5
  def index
6
6
  @categories = Category.all
@@ -1,6 +1,6 @@
1
1
  module Adminpanel
2
2
  class GalleriesController < Adminpanel::ApplicationController
3
- load_and_authorize_resource
3
+ authorize_resource
4
4
 
5
5
  def index
6
6
  @galleries = Gallery.all
@@ -26,11 +26,7 @@ module Adminpanel
26
26
 
27
27
  def move_better
28
28
  @gallery = Gallery.find(params[:id])
29
- if @gallery.move_to_better_position
30
- flash[:success] = t("gallery.moved")
31
- else
32
- flash[:warning] = t("gallery.not-moved")
33
- end
29
+ @gallery.move_to_better_position
34
30
  respond_to do |format|
35
31
  format.html do
36
32
  redirect_to galleries_path
@@ -44,11 +40,7 @@ module Adminpanel
44
40
 
45
41
  def move_worst
46
42
  @gallery = Gallery.find(params[:id])
47
- if @gallery.move_to_worst_position
48
- flash[:success] = t("gallery.moved")
49
- else
50
- flash[:warning] = t("gallery.not-moved")
51
- end
43
+ @gallery.move_to_worst_position
52
44
  respond_to do |format|
53
45
  format.html do
54
46
  redirect_to galleries_path
@@ -1,19 +1,10 @@
1
1
  module Adminpanel
2
2
  class SectionsController < Adminpanel::ApplicationController
3
- load_and_authorize_resource
4
-
5
- def new
6
- @section = Section.new
7
- end
8
-
9
- # def create
10
- # @section = Section.new(params[:section])
11
-
12
- # if @section.save
13
- # redirect_to section_path(@section), :notice => 'La seccion ha sido creada'
14
- # else
15
- # render 'new'
16
- # end
3
+ # authorize_resource
4
+ authorize_resource
5
+ # def new
6
+ # @section = Section.new
7
+ # authorize! :create, @section
17
8
  # end
18
9
 
19
10
  def edit
@@ -1,7 +1,7 @@
1
1
  module Adminpanel
2
2
  class UsersController < Adminpanel::ApplicationController
3
3
  # authorize_resource :class => false
4
- load_and_authorize_resource
4
+ authorize_resource
5
5
 
6
6
  private
7
7
  def user_params
@@ -0,0 +1,64 @@
1
+ module Adminpanel
2
+ module FacebookActions
3
+ extend ActiveSupport::Concern
4
+ include ActionView::Helpers::TextHelper
5
+
6
+ included do
7
+ before_filter :set_auths_count, only:[:index, :show, :destroy]
8
+ end
9
+
10
+ def fb_choose_page
11
+ access_token = Koala::Facebook::OAuth.new(
12
+ Adminpanel.fb_app_id,
13
+ Adminpanel.fb_app_secret,
14
+ url_for({
15
+ controller: params[:controller],
16
+ action: :fb_choose_page,
17
+ id: resource,
18
+ host: request.host
19
+ })
20
+ ).get_access_token(params[:code]) if params[:code]
21
+ user = Koala::Facebook::API.new(access_token)
22
+ @pages = user.get_connections('me', 'accounts')
23
+ user_object = user.get_object('me')
24
+ @name = user_object['name']
25
+ user_hash = { 'name' => @name, 'access_token' => access_token }
26
+ @pages << user_hash # to permit post on own profile
27
+ render 'shared/fb_choose_page'
28
+ end
29
+
30
+ def fb_save_token
31
+ page_selected = Koala::Facebook::API.new(params[@model.name.demodulize.downcase][:fb_page_access_key])
32
+ @auths = Auth.where(key: 'facebook', name: page_selected.get_object('me')['name'])
33
+ if @auths.count == 0
34
+ Auth.create(
35
+ key: 'facebook',
36
+ name: page_selected.get_object('me')['name'],
37
+ value: params[@model.name.demodulize.downcase][:fb_page_access_key]
38
+ )
39
+ else
40
+ @auths.first.update_attribute(:value, params[@mode.name.demodulize.downcase][:fb_page_access_key])
41
+ end
42
+ flash[:success] = I18n.t('fb.saved-token')
43
+ redirect_to resource
44
+ end
45
+
46
+ def fb_publish
47
+ page_graph = Koala::Facebook::API.new(Auth.find_by_key('facebook').value)
48
+ page_graph.put_wall_post(
49
+ strip_tags(params[@model.name.demodulize.downcase][:fb_message]),
50
+ {
51
+ link: resource.fb_link,
52
+ name: resource.name
53
+ }
54
+ )
55
+ flash[:success] = I18n.t('fb.posted', user: page_graph.get_object('me')['name'])
56
+ redirect_to resource
57
+ end
58
+
59
+ private
60
+ def set_auths_count
61
+ @fb_auths_count = Auth.where(key: 'facebook').count
62
+ end
63
+ end
64
+ end
@@ -3,28 +3,26 @@ module Adminpanel
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  def move_better
6
- respond_to do |format|
7
- format.js do
8
- resource = @model.find(params[:id])
9
- resource.move_to_better_position
10
- render 'shared/gallery_entries', :locals => {
11
- :collection => @model.where(
12
- @model.relation_field.to_sym => resource.send(@model.relation_field)
13
- )
14
- }
15
- end
16
- end
6
+ resource = @model.find(params[:id])
7
+ resource.move_to_better_position
8
+ respond
9
+
17
10
  end
18
11
 
19
12
  def move_worst
13
+ resource = @model.find(params[:id])
14
+ resource.move_to_worst_position
15
+ respond
16
+ end
17
+
18
+ private
19
+ def respond
20
20
  respond_to do |format|
21
21
  format.js do
22
- resource = @model.find(params[:id])
23
- resource.move_to_worst_position
24
22
  render 'shared/gallery_entries', :locals => {
25
23
  :collection => @model.where(
26
24
  @model.relation_field.to_sym => resource.send(@model.relation_field)
27
- )
25
+ )
28
26
  }
29
27
  end
30
28
  end
@@ -86,13 +86,13 @@ module Adminpanel
86
86
  end
87
87
 
88
88
  def set_belongs_to_collections
89
- @model.belongs_to_relationships.each do |class_variable|
89
+ @model.relationships_of('belongs_to').each do |class_variable|
90
90
  set_relationship(class_variable)
91
91
  end
92
92
  end
93
93
 
94
94
  def set_has_many_collections
95
- @model.has_many_relationships.each do |class_variable|
95
+ @model.relationships_of('has_many').each do |class_variable|
96
96
  set_relationship(class_variable)
97
97
  end
98
98
  end
@@ -4,6 +4,7 @@ module Adminpanel
4
4
  alias_method :text_field_original, :text_field
5
5
  alias_method :radio_button_original, :radio_button
6
6
  alias_method :parent_file_field, :file_field
7
+ alias_method :text_area_original, :text_area
7
8
 
8
9
  def text_field(name, *args)
9
10
  options = args.extract_options!
@@ -76,7 +77,7 @@ module Adminpanel
76
77
  @template.content_tag(:div, :class => 'control-group') do
77
78
  @template.content_tag(:label, label, :class => 'control-label') +
78
79
  @template.content_tag(:div, :class => 'controls') do
79
- self.text_area(
80
+ text_area_original(
80
81
  name,
81
82
  class: 'wysihtml5 span10',
82
83
  placeholder: I18n.t('wysiwyg.description'),
@@ -86,8 +87,25 @@ module Adminpanel
86
87
  end
87
88
  end
88
89
 
89
- def radio_button_group(name, buttons, options)
90
+ def text_area(name, *args)
91
+ options = args.extract_options!
92
+ label = options['label']
93
+ options.delete('label')
90
94
 
95
+ @template.content_tag(:div, :class => 'control-group') do
96
+ @template.content_tag(:label, label, :class => 'control-label') +
97
+ @template.content_tag(:div, :class => 'controls') do
98
+ super(
99
+ name,
100
+ class: 'span10',
101
+ placeholder: I18n.t('wysiwyg.description'),
102
+ rows: '4'
103
+ )
104
+ end
105
+ end
106
+ end
107
+
108
+ def radio_button_group(name, buttons, options)
91
109
  options.reverse_merge! :label => name
92
110
  options.reverse_merge! :html => {}
93
111
  output = ""