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.
- checksums.yaml +4 -4
- data/.travis.yml +3 -0
- data/Gemfile +6 -3
- data/README.md +6 -26
- data/adminpanel.gemspec +6 -3
- data/app/assets/javascripts/adminpanel/bootstrap-wysihtml5-4pre.js +9579 -0
- data/app/assets/javascripts/adminpanel/bootstrap-wysihtml5.js +9 -9
- data/app/assets/javascripts/adminpanel/realm.js +12 -8
- data/app/assets/javascripts/adminpanel/spinner.js.coffee +11 -0
- data/app/assets/javascripts/adminpanel/wysiwyg.js.coffee +3 -0
- data/app/assets/javascripts/application-admin.js +1 -0
- data/app/assets/stylesheets/adminpanel/{bootstrap.css → bootstrap.css.erb} +2 -2
- data/app/assets/stylesheets/adminpanel/{theme.css → theme.css.erb} +6 -6
- data/app/controllers/adminpanel/analytics_controller.rb +2 -1
- data/app/controllers/adminpanel/application_controller.rb +1 -0
- data/app/controllers/adminpanel/auths_controller.rb +8 -0
- data/app/controllers/adminpanel/categories_controller.rb +1 -1
- data/app/controllers/adminpanel/galleries_controller.rb +3 -11
- data/app/controllers/adminpanel/sections_controller.rb +5 -14
- data/app/controllers/adminpanel/users_controller.rb +1 -1
- data/app/controllers/concerns/adminpanel/facebook_actions.rb +64 -0
- data/app/controllers/concerns/adminpanel/galleryzable_actions.rb +12 -14
- data/app/controllers/concerns/adminpanel/rest_actions.rb +2 -2
- data/app/helpers/adminpanel/adminpanel_form_builder.rb +20 -2
- data/app/helpers/adminpanel/shared_pages_helper.rb +13 -0
- data/app/models/adminpanel/auth.rb +34 -0
- data/app/models/adminpanel/section.rb +1 -2
- data/app/models/adminpanel/user.rb +1 -2
- data/app/models/concerns/adminpanel/base.rb +10 -34
- data/app/models/concerns/adminpanel/facebook.rb +27 -0
- data/app/views/adminpanel/sections/edit.html.erb +0 -5
- data/app/views/adminpanel/sections/index.html.erb +1 -3
- data/app/views/layouts/_side_menu.html.erb +5 -4
- data/app/views/shared/_create_remote_resource_button.html.erb +23 -0
- data/app/views/shared/_fb_icon_button.html.erb +26 -0
- data/app/views/shared/_fb_publish_modal.html.erb +40 -0
- data/app/views/shared/_form_fields.html.erb +6 -50
- data/app/views/shared/_modal.html.erb +1 -1
- data/app/views/shared/create_belongs_to.js.erb +1 -1
- data/app/views/shared/create_has_many.js.erb +1 -1
- data/app/views/shared/fb_choose_page.html.erb +47 -0
- data/app/views/shared/index.html.erb +2 -0
- data/app/views/shared/show.html.erb +2 -0
- data/config/initializers/pluralization_es.rb +3 -0
- data/config/locales/es.yml +69 -60
- data/config/routes.rb +8 -1
- data/lib/adminpanel.rb +1 -0
- data/lib/adminpanel/engine.rb +4 -1
- data/lib/adminpanel/version.rb +1 -1
- data/lib/generators/adminpanel/gallery/gallery_generator.rb +2 -2
- data/lib/generators/adminpanel/initialize/initialize_generator.rb +2 -3
- data/lib/generators/adminpanel/initialize/templates/ability.rb +1 -1
- data/lib/generators/adminpanel/initialize/templates/adminpanel_setup.rb +6 -2
- data/lib/generators/adminpanel/initialize/templates/create_adminpanel_tables.rb +11 -0
- data/lib/generators/adminpanel/resource/resource_generator.rb +112 -130
- data/lib/generators/adminpanel/resource/templates/controller.rb +4 -1
- data/lib/generators/adminpanel/resource/templates/resource.rb +4 -1
- data/lib/tasks/adminpanel/adminpanel.rake +6 -2
- data/spec/dummy/app/controllers/adminpanel/salesmen_controller.rb +9 -0
- data/spec/dummy/app/models/adminpanel/category.rb +1 -0
- data/spec/dummy/app/models/adminpanel/mug.rb +2 -2
- data/spec/dummy/app/models/adminpanel/product.rb +4 -6
- data/spec/dummy/app/models/adminpanel/salesman.rb +35 -0
- data/spec/dummy/config/initializers/adminpanel_setup.rb +2 -1
- data/spec/dummy/db/schema.rb +13 -0
- data/spec/features/shared_pages/edit_spec.rb +48 -0
- data/spec/features/shared_pages/index_spec.rb +50 -0
- data/spec/features/shared_pages/new_spec.rb +128 -0
- data/spec/features/shared_pages/show_spec.rb +30 -0
- data/spec/generators/gallery_generator_spec.rb +1 -1
- data/spec/generators/resource_generator_spec.rb +36 -11
- data/spec/spec_helper.rb +12 -13
- data/spec/support/capybara_matchers.rb +17 -0
- data/spec/support/factories.rb +1 -1
- data/spec/support/helper_methods.rb +0 -18
- data/spec/support/shared_connection.rb +10 -0
- metadata +100 -21
- data/app/assets/javascripts/adminpanel/bootstrap-wysihtml5-3.min.js +0 -261
- data/app/assets/javascripts/adminpanel/medium-editor.js +0 -703
- data/app/assets/javascripts/adminpanel/wysiwyg.js +0 -5
- data/app/assets/stylesheets/adminpanel/medium-editor.css.scss +0 -1
- data/app/views/shared/_init_editor.html.erb +0 -27
- data/lib/generators/adminpanel/resource/templates/migration.rb +0 -13
- 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='
|
|
9
|
+
"<i class='fa fa-font'></i> <span class='current-font'>" + locale.font_styles.normal + "</span> <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
|
|
28
|
-
"<a class='btn
|
|
29
|
-
"<a class='btn
|
|
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='
|
|
39
|
-
"<a class='btn" + size + "' data-wysihtml5-command='insertOrderedList' title='" + locale.lists.ordered + "' tabindex='-1'><i class='
|
|
40
|
-
"<a class='btn" + size + "' data-wysihtml5-command='Outdent' title='" + locale.lists.outdent + "' tabindex='-1'><i class='
|
|
41
|
-
"<a class='btn" + size + "' data-wysihtml5-command='Indent' title='" + locale.lists.indent + "' tabindex='-1'><i class='
|
|
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='
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
@@ -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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module Adminpanel
|
|
2
2
|
class GalleriesController < Adminpanel::ApplicationController
|
|
3
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
def new
|
|
6
|
-
|
|
7
|
-
|
|
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
|
|
@@ -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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
|
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 = ""
|