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
@@ -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 = ""