tb_banners 1.2.0.beta1 → 1.3.2
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 +5 -5
- data/README.markdown +9 -14
- data/Rakefile +2 -5
- data/app/assets/javascripts/admin/banners/banner_sets.js +4 -1
- data/app/assets/javascripts/admin/banners/banners.js +49 -56
- data/app/assets/stylesheets/admin/banners/banners.css.scss +6 -1
- data/app/controllers/admin/banner_sets_controller.rb +15 -23
- data/app/controllers/admin/banners_controller.rb +32 -61
- data/app/helpers/spud_banners_helper.rb +24 -19
- data/app/models/spud_banner.rb +33 -20
- data/app/models/spud_banner_set.rb +16 -19
- data/app/views/admin/banner_sets/index.html.erb +1 -1
- data/app/views/admin/banner_sets/show.html.erb +2 -1
- data/app/views/admin/banners/_banner.html.erb +4 -1
- data/app/views/admin/banners/_form.html.erb +3 -5
- data/db/migrate/20121116195139_create_spud_banners.rb +1 -1
- data/db/migrate/20121116195312_create_spud_banner_sets.rb +1 -1
- data/db/migrate/20130614132846_add_rich_text_to_spud_banners.rb +1 -1
- data/db/migrate/20140721142719_add_start_and_end_dates_to_spud_banners.rb +1 -1
- data/lib/spud_banners/configuration.rb +6 -5
- data/lib/spud_banners/engine.rb +13 -11
- data/lib/spud_banners/version.rb +1 -1
- data/lib/tb_banners.rb +1 -2
- data/spec/controllers/admin/banner_sets_controller_spec.rb +57 -58
- data/spec/dummy/config.ru +1 -1
- data/spec/dummy/config/application.rb +2 -3
- data/spec/dummy/config/boot.rb +1 -1
- data/spec/dummy/config/environments/production.rb +1 -1
- data/spec/dummy/config/environments/test.rb +3 -4
- data/spec/dummy/config/initializers/secret_token.rb +0 -1
- data/spec/dummy/db/migrate/20121127192246_create_spud_admin_permissions.spud_core.rb +1 -1
- data/spec/dummy/db/migrate/20121127192247_create_spud_users.spud_core.rb +13 -13
- data/spec/dummy/db/migrate/20121127192248_add_time_zone_to_spud_user.spud_core.rb +1 -2
- data/spec/dummy/db/migrate/20121127192249_add_scope_to_spud_admin_permissions.spud_core.rb +1 -2
- data/spec/dummy/db/migrate/20121127192250_create_spud_user_settings.spud_core.rb +1 -1
- data/spec/dummy/db/migrate/20130920154442_create_spud_roles.tb_core.rb +1 -1
- data/spec/dummy/db/migrate/20130920154443_create_spud_permissions.tb_core.rb +4 -4
- data/spec/dummy/db/migrate/20130920154444_create_spud_role_permissions.tb_core.rb +3 -3
- data/spec/dummy/db/migrate/20130920154445_drop_spud_admin_permissions.tb_core.rb +1 -1
- data/spec/dummy/db/migrate/20160310164644_add_requires_password_change_to_spud_users.tb_core.rb +6 -0
- data/spec/dummy/db/schema.rb +70 -84
- data/spec/dummy/script/rails +2 -2
- data/spec/factories/spud_banner_sets.rb +9 -0
- data/spec/factories/spud_banners.rb +7 -0
- data/spec/models/spud_banner_spec.rb +27 -0
- data/spec/rails_helper.rb +81 -0
- data/spec/spec_helper.rb +77 -34
- metadata +79 -109
- data/app/views/admin/banners/legacy.js.erb +0 -5
- data/lib/spud_banners/liquid_tags.rb +0 -31
- data/spec/dummy/db/migrate/20130920154446_create_spud_banners.tb_banners.rb +0 -16
- data/spec/dummy/db/migrate/20130920154447_create_spud_banner_sets.tb_banners.rb +0 -13
- data/spec/dummy/db/migrate/20130920154448_add_rich_text_to_spud_banners.tb_banners.rb +0 -7
- data/spec/dummy/db/migrate/20140120174546_create_tb_liquid_spud_liquid_tags.tb_liquid.rb +0 -13
- data/spec/support/authlogic_helper.rb +0 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: c6523446637e03b2e8bbf0817e9a3f932a914ec2eb4e9b15564a5e41d5e1f4b8
|
|
4
|
+
data.tar.gz: 96800f6ab2b718017ec48b39d4f403a59682b7cca43c45e7b271972d35582335
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9a832b4f51efcbb3904b77b2b29be04a89d4e07ad4c242e46de3427d81abd268f538d5a588ff3bba4a1402072a06d71936074177f7da3b7cca171329f4c1e1a2
|
|
7
|
+
data.tar.gz: ae6b66441337ca85a0e91b998f77871b72ce6c47c2ff16d1f5215ae487c55559316dbf29e17e0b723951c2e28dd44258ae476f951a7725f6f6f12e716a9852f1
|
data/README.markdown
CHANGED
|
@@ -24,6 +24,7 @@ TB Banners accepts the following configuration options:
|
|
|
24
24
|
Spud::Banners.configure do |config|
|
|
25
25
|
config.paperclip_storage = :filesystem #use :s3 to use s3 storage (aws gem required)
|
|
26
26
|
config.s3_credentials = "#{Rails.root}/config/s3.yml"
|
|
27
|
+
config.s3_protocol = 'https'
|
|
27
28
|
config.storage_path = ":rails_root/public/system/spud_banners/:id/:style/:basename.:extension"
|
|
28
29
|
config.storage_url = "/system/spud_banners/:id/:style/:basename.:extension"
|
|
29
30
|
end
|
|
@@ -48,7 +49,12 @@ A number of view helpers are provided for displaying banners in your templates.
|
|
|
48
49
|
|
|
49
50
|
`spud_banners_for_set(set_or_identifier, options)`
|
|
50
51
|
|
|
51
|
-
Accepts the banner set name as a String or Symbol and returns an html template.
|
|
52
|
+
Accepts the banner set name as a String or Symbol and returns an html template. This helper also accepts a block argument for rendering custom html.
|
|
53
|
+
|
|
54
|
+
**Options:**
|
|
55
|
+
|
|
56
|
+
- `limit`: Limit how many banners you wish to render
|
|
57
|
+
- `background_image`: Pass `true` in order to render the banners as divs with css background images instead of image tags. Defaults to `false`. **This is required when rendering banners with rich text.**
|
|
52
58
|
|
|
53
59
|
```ruby
|
|
54
60
|
spud_banner_tag(banner)
|
|
@@ -97,21 +103,11 @@ Displaying banners using the helper, with a block for even more custom html.
|
|
|
97
103
|
</ul>
|
|
98
104
|
```
|
|
99
105
|
|
|
100
|
-
## Liquid
|
|
101
|
-
|
|
102
|
-
TB Banners comes with its own custom [Liquid][liquid] tag. For now the liquid tag only supports rendering the standard html as generated by the `spud_banners_for_set`. Will provide support more advanced options in the future.
|
|
103
|
-
|
|
104
|
-
Usage:
|
|
105
|
-
|
|
106
|
-
```erb
|
|
107
|
-
<%= raw Liquid::Template.parse("{% spud_banner_set Promotions %}").render %>
|
|
108
|
-
```
|
|
109
|
-
|
|
110
106
|
## Rich Text
|
|
111
107
|
|
|
112
|
-
Banner Sets contain a configuration for rich text. Turning this feature on will enable a rich text editor on individual banners. The default setting for this option is off.
|
|
108
|
+
Banner Sets contain a configuration for rich text. Turning this feature on will enable a rich text editor on individual banners. The default setting for this option is off.
|
|
113
109
|
|
|
114
|
-
Rich text is intended to be more of an edge case feature, and should be used only if your banner needs to include an editable HTML block. The built-in helpers described earlier will not automatically include your rich text; If you want to use this feature, you should supply a block to the helper and render the rich text yourself.
|
|
110
|
+
Rich text is intended to be more of an edge case feature, and should be used only if your banner needs to include an editable HTML block. The built-in helpers described earlier will not automatically include your rich text; If you want to use this feature, you should supply a block to the helper and render the rich text yourself.
|
|
115
111
|
|
|
116
112
|
```erb
|
|
117
113
|
<ul id="slides">
|
|
@@ -160,4 +156,3 @@ Below is an example of integration with [SlidesJs][slidesjs], a jQuery plugin.
|
|
|
160
156
|
|
|
161
157
|
[tb]:https://bitbucket.org/westlakedesign/tb_core
|
|
162
158
|
[slidesjs]:http://www.slidesjs.com
|
|
163
|
-
[liquid]:https://github.com/Shopify/liquid
|
data/Rakefile
CHANGED
|
@@ -20,11 +20,9 @@ RDoc::Task.new(:rdoc) do |rdoc|
|
|
|
20
20
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
-
APP_RAKEFILE = File.expand_path(
|
|
23
|
+
APP_RAKEFILE = File.expand_path('spec/dummy/Rakefile', __dir__)
|
|
24
24
|
load 'rails/tasks/engine.rake'
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
26
|
Bundler::GemHelper.install_tasks
|
|
29
27
|
|
|
30
28
|
require 'rake/testtask'
|
|
@@ -36,5 +34,4 @@ Rake::TestTask.new(:test) do |t|
|
|
|
36
34
|
t.verbose = false
|
|
37
35
|
end
|
|
38
36
|
|
|
39
|
-
|
|
40
|
-
task :default => :test
|
|
37
|
+
task default: :test
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
var bannerSetEditId = false;
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
tb.banner_sets = {
|
|
9
9
|
init: function(){
|
|
10
10
|
$('.spud_banner_sets_add_new').on('click', clickedAddNewBannerSet);
|
|
11
11
|
$('.admin-banner-sets-list').on('click', '.admin-banner-set-edit', clickedEditBannerSet);
|
|
@@ -46,6 +46,9 @@ var clickedEditBannerSet = function(e){
|
|
|
46
46
|
|
|
47
47
|
var clickedDeleteBannerSet = function(e){
|
|
48
48
|
e.preventDefault();
|
|
49
|
+
$.ajaxSetup({
|
|
50
|
+
headers: { 'X-CSRF-TOKEN': Rails.csrfToken() }
|
|
51
|
+
});
|
|
49
52
|
if(window.confirm('Are you sure?')){
|
|
50
53
|
var el = $(this);
|
|
51
54
|
$.ajax({
|
|
@@ -3,39 +3,29 @@
|
|
|
3
3
|
|
|
4
4
|
(function(){
|
|
5
5
|
|
|
6
|
-
var html5upload = false;
|
|
7
6
|
var bannerEditId = false;
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
tb.banners = {
|
|
10
9
|
|
|
11
10
|
// Index Page
|
|
12
11
|
/////////////
|
|
13
12
|
init: function(){
|
|
14
|
-
if(typeof(FormData) != 'undefined'){
|
|
15
|
-
html5upload = true;
|
|
16
|
-
}
|
|
17
13
|
$('.admin-banner-set-item-add').on('click', clickedAddNewBanner);
|
|
18
14
|
$('.admin-banner-set-items-container').on('click', '.admin-banner-set-item-edit', clickedEditBanner);
|
|
19
15
|
$('.admin-banner-set-items-container').on('click', '.admin-banner-set-item-delete', clickedDeleteBanner);
|
|
20
16
|
$('.modal-body').on('submit', '.admin-banner-form', submittedBannerForm);
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
17
|
+
Sortable.create(document.querySelector('.admin-banner-set-items-container'), {
|
|
18
|
+
onUpdate: sortedBanners,
|
|
19
|
+
dragClass: 'banner-dragging',
|
|
20
|
+
handle: '.glyphicon-sort'
|
|
24
21
|
});
|
|
25
22
|
}
|
|
26
23
|
};
|
|
27
24
|
|
|
28
|
-
// http://www.foliotek.com/devblog/make-table-rows-sortable-using-jquery-ui-sortable/
|
|
29
|
-
var fixHelper = function(e, ui) {
|
|
30
|
-
ui.children().each(function() {
|
|
31
|
-
$(this).width($(this).width());
|
|
32
|
-
});
|
|
33
|
-
return ui;
|
|
34
|
-
};
|
|
35
|
-
|
|
36
25
|
var clickedAddNewBanner = function(e){
|
|
37
26
|
e.preventDefault();
|
|
38
27
|
bannerEditId = false;
|
|
28
|
+
spud.admin.editor.unload();
|
|
39
29
|
$.ajax({
|
|
40
30
|
url: $(this).attr('href'),
|
|
41
31
|
dataType: 'html',
|
|
@@ -51,8 +41,8 @@ var clickedAddNewBanner = function(e){
|
|
|
51
41
|
|
|
52
42
|
var clickedEditBanner = function(e){
|
|
53
43
|
e.preventDefault();
|
|
54
|
-
spud.admin.editor.unload();
|
|
55
44
|
bannerEditId = parseInt($(this).parents('.admin-banner-set-item').attr('data-id'), 10);
|
|
45
|
+
spud.admin.editor.unload();
|
|
56
46
|
$.ajax({
|
|
57
47
|
url: $(this).attr('href'),
|
|
58
48
|
dataType: 'html',
|
|
@@ -68,6 +58,9 @@ var clickedEditBanner = function(e){
|
|
|
68
58
|
|
|
69
59
|
var clickedDeleteBanner = function(e){
|
|
70
60
|
e.preventDefault();
|
|
61
|
+
$.ajaxSetup({
|
|
62
|
+
headers: { 'X-CSRF-TOKEN': Rails.csrfToken() }
|
|
63
|
+
});
|
|
71
64
|
var el = $(this);
|
|
72
65
|
$.ajax({
|
|
73
66
|
url: el.attr('href'),
|
|
@@ -86,43 +79,41 @@ var clickedDeleteBanner = function(e){
|
|
|
86
79
|
};
|
|
87
80
|
|
|
88
81
|
var submittedBannerForm = function(e){
|
|
89
|
-
|
|
90
|
-
e.preventDefault();
|
|
82
|
+
e.preventDefault();
|
|
91
83
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
$('input[type=text], input[type=hidden], select').each(function(index, element){
|
|
96
|
-
var input = $(element);
|
|
97
|
-
var name = input.attr('name');
|
|
98
|
-
var value = input.val();
|
|
99
|
-
fd.append(name, value);
|
|
100
|
-
});
|
|
84
|
+
var form = $(this);
|
|
85
|
+
var fd = new FormData();
|
|
101
86
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
87
|
+
$('input[type=text], input[type=hidden], select').each(function(index, element){
|
|
88
|
+
var input = $(element);
|
|
89
|
+
var name = input.attr('name');
|
|
90
|
+
var value = input.val();
|
|
91
|
+
fd.append(name, value);
|
|
92
|
+
});
|
|
109
93
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
94
|
+
var editor = tinymce.get('admin-banner-rich-text');
|
|
95
|
+
if(editor){
|
|
96
|
+
fd.append('spud_banner[rich_text]', editor.getContent());
|
|
97
|
+
}
|
|
98
|
+
else{
|
|
99
|
+
fd.append('spud_banner[rich_text]', '');
|
|
100
|
+
}
|
|
115
101
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
xhr.addEventListener('abort', onFileUploadAbort);
|
|
121
|
-
xhr.open('POST', form.attr('action'));
|
|
122
|
-
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
|
123
|
-
xhr.send(fd);
|
|
124
|
-
return false;
|
|
102
|
+
var file = form.find('#spud_banner_banner')[0].files[0];
|
|
103
|
+
if(file){
|
|
104
|
+
fd.append('spud_banner[banner]', file);
|
|
105
|
+
$('.admin-banner-upload-progress').show();
|
|
125
106
|
}
|
|
107
|
+
|
|
108
|
+
var xhr = new XMLHttpRequest();
|
|
109
|
+
xhr.upload.addEventListener('progress', onFileUploadProgress);
|
|
110
|
+
xhr.addEventListener('load', onFileUploadComplete);
|
|
111
|
+
xhr.addEventListener('error', onFileUploadError);
|
|
112
|
+
xhr.addEventListener('abort', onFileUploadAbort);
|
|
113
|
+
xhr.open('POST', form.attr('action'));
|
|
114
|
+
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
|
115
|
+
xhr.send(fd);
|
|
116
|
+
return false;
|
|
126
117
|
};
|
|
127
118
|
|
|
128
119
|
var onFileUploadProgress = function(e){
|
|
@@ -137,10 +128,10 @@ var onFileUploadProgress = function(e){
|
|
|
137
128
|
var onFileUploadComplete = function(e){
|
|
138
129
|
switch(this.status){
|
|
139
130
|
case 200:
|
|
140
|
-
|
|
131
|
+
onUploadComplete(e.target.response);
|
|
141
132
|
break;
|
|
142
133
|
case 422:
|
|
143
|
-
|
|
134
|
+
onUploadError(e.target.response);
|
|
144
135
|
break;
|
|
145
136
|
default:
|
|
146
137
|
window.alert("Whoops! Something has gone wrong.");
|
|
@@ -155,8 +146,7 @@ var onFileUploadAbort = function(e){
|
|
|
155
146
|
|
|
156
147
|
};
|
|
157
148
|
|
|
158
|
-
|
|
159
|
-
spud.admin.banners.onLegacyUploadComplete = function(html){
|
|
149
|
+
var onUploadComplete = function(html){
|
|
160
150
|
if(bannerEditId){
|
|
161
151
|
var item = $('.admin-banner-set-item[data-id="'+bannerEditId+'"]');
|
|
162
152
|
item.replaceWith(html);
|
|
@@ -167,7 +157,7 @@ spud.admin.banners.onLegacyUploadComplete = function(html){
|
|
|
167
157
|
spud.admin.modal.hide();
|
|
168
158
|
};
|
|
169
159
|
|
|
170
|
-
|
|
160
|
+
var onUploadError = function(html){
|
|
171
161
|
$('.admin-banner-form').replaceWith(html);
|
|
172
162
|
initForm();
|
|
173
163
|
};
|
|
@@ -178,16 +168,19 @@ var sortedBanners = function(e, ui){
|
|
|
178
168
|
ids.push($(this).attr('data-id'));
|
|
179
169
|
});
|
|
180
170
|
$.ajax({
|
|
171
|
+
headers: { 'X-CSRF-TOKEN': Rails.csrfToken() },
|
|
181
172
|
url: '/admin/banners/sort',
|
|
182
173
|
type: 'post',
|
|
183
|
-
data: {spud_banner_ids:ids, _method:'put'}
|
|
174
|
+
data: { spud_banner_ids: ids, _method: 'put' }
|
|
184
175
|
});
|
|
185
176
|
};
|
|
186
177
|
|
|
187
178
|
var initForm = function(){
|
|
188
179
|
var richText = $('#admin-banner-rich-text');
|
|
189
180
|
if(richText){
|
|
190
|
-
|
|
181
|
+
if(typeof tinymce != "undefined"){
|
|
182
|
+
tinymce.EditorManager.execCommand('mceRemoveEditor', true, 'admin-banner-rich-text');
|
|
183
|
+
}
|
|
191
184
|
spud.admin.editor.init({
|
|
192
185
|
selector: '#admin-banner-rich-text',
|
|
193
186
|
buttons: ['bold','italic','underline','formatselect','|','bullist','numlist','|','link','unlink','anchor', '|', 'code'],
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
.admin-banner-set-items-container{
|
|
3
3
|
|
|
4
4
|
}
|
|
5
|
-
.admin-banner-set-item{
|
|
5
|
+
.admin-banner-set-item .glyphicon-sort{
|
|
6
6
|
cursor: move;
|
|
7
7
|
}
|
|
8
8
|
.admin-banner-set-item.ui-sortable-helper{
|
|
@@ -12,6 +12,11 @@
|
|
|
12
12
|
.admin-banner-set-item img{
|
|
13
13
|
display: block;
|
|
14
14
|
}
|
|
15
|
+
tr.banner-dragging {
|
|
16
|
+
display: block;
|
|
17
|
+
width: 300px;
|
|
18
|
+
height: 100px;
|
|
19
|
+
}
|
|
15
20
|
|
|
16
21
|
// Banner Form
|
|
17
22
|
.admin-banner-upload-progress{
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
class Admin::BannerSetsController < Admin::ApplicationController
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
before_action :load_record, only: [:show, :edit, :update, :destroy]
|
|
4
4
|
respond_to :html
|
|
5
|
-
|
|
5
|
+
belongs_to_app :banner_sets
|
|
6
6
|
add_breadcrumb 'Banner Sets', :admin_banner_sets_path
|
|
7
7
|
layout false
|
|
8
8
|
|
|
9
9
|
def index
|
|
10
10
|
@banner_sets = SpudBannerSet.all
|
|
11
|
-
respond_with @banner_sets, :
|
|
11
|
+
respond_with @banner_sets, layout: 'admin/detail'
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
def show
|
|
15
|
-
respond_with @banner_set, :
|
|
15
|
+
respond_with @banner_set, layout: 'admin/detail'
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
def new
|
|
@@ -23,10 +23,10 @@ class Admin::BannerSetsController < Admin::ApplicationController
|
|
|
23
23
|
def create
|
|
24
24
|
@banner_set = SpudBannerSet.new(banner_set_params)
|
|
25
25
|
if @banner_set.save
|
|
26
|
-
flash.now[:notice] = '
|
|
26
|
+
flash.now[:notice] = 'Banner Set created successfully'
|
|
27
27
|
render 'create'
|
|
28
28
|
else
|
|
29
|
-
render 'new', :
|
|
29
|
+
render 'new', status: :unprocessable_entity
|
|
30
30
|
end
|
|
31
31
|
end
|
|
32
32
|
|
|
@@ -35,35 +35,27 @@ class Admin::BannerSetsController < Admin::ApplicationController
|
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
def update
|
|
38
|
-
if @banner_set.
|
|
39
|
-
flash.now[:notice] = '
|
|
38
|
+
if @banner_set.update(banner_set_params)
|
|
39
|
+
flash.now[:notice] = 'Banner Set updated successfully'
|
|
40
40
|
render 'create'
|
|
41
41
|
else
|
|
42
|
-
render 'edit', :
|
|
42
|
+
render 'edit', status: :unprocessable_entity
|
|
43
43
|
end
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
def destroy
|
|
47
|
-
if @banner_set.destroy
|
|
48
|
-
|
|
49
|
-
end
|
|
50
|
-
render :nothing => true
|
|
47
|
+
flash.now[:notice] = 'Banner Set deleted successfully' if @banner_set.destroy
|
|
48
|
+
head :ok
|
|
51
49
|
end
|
|
52
50
|
|
|
53
|
-
private
|
|
51
|
+
private
|
|
54
52
|
|
|
55
|
-
def
|
|
56
|
-
|
|
57
|
-
@banner_set = SpudBannerSet.find(params[:id])
|
|
58
|
-
rescue ActiveRecord::RecordNotFound => e
|
|
59
|
-
flash.now[:error] = "Could not find the requested BannerSet"
|
|
60
|
-
redirect_to admin_banner_sets_path
|
|
61
|
-
return false
|
|
62
|
-
end
|
|
53
|
+
def load_record
|
|
54
|
+
@banner_set = SpudBannerSet.find_by!(id: params[:id])
|
|
63
55
|
end
|
|
64
56
|
|
|
65
57
|
def banner_set_params
|
|
66
58
|
params.require(:spud_banner_set).permit(:cropped, :height, :name, :short_name, :width, :has_rich_text)
|
|
67
59
|
end
|
|
68
60
|
|
|
69
|
-
end
|
|
61
|
+
end
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
class Admin::BannersController < Admin::ApplicationController
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
before_filter :get_set, :only => [:new, :create]
|
|
6
|
-
before_filter :get_record, :only => [:edit, :update, :destroy]
|
|
3
|
+
before_action :load_set, only: [:new, :create]
|
|
4
|
+
before_action :load_record, only: [:edit, :update, :destroy]
|
|
7
5
|
respond_to :html
|
|
8
6
|
layout false
|
|
9
7
|
|
|
10
8
|
def new
|
|
11
|
-
@banner = @banner_set.banners.new(:
|
|
9
|
+
@banner = @banner_set.banners.new(start_date: Time.zone.today)
|
|
12
10
|
respond_with @banner
|
|
13
11
|
end
|
|
14
12
|
|
|
@@ -16,23 +14,16 @@ class Admin::BannersController < Admin::ApplicationController
|
|
|
16
14
|
@banner = @banner_set.banners.build
|
|
17
15
|
@banner.attributes = banner_params
|
|
18
16
|
|
|
19
|
-
last_banner = SpudBanner.select(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
last_banner = SpudBanner.select(:sort_order)
|
|
18
|
+
.where(spud_banner_set_id: @banner_set.id)
|
|
19
|
+
.order(sort_order: :desc).first
|
|
20
|
+
@banner.sort_order = last_banner.sort_order + 1 if last_banner
|
|
23
21
|
|
|
24
|
-
if
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
render 'show'
|
|
28
|
-
else
|
|
29
|
-
render 'new', :status => 422
|
|
30
|
-
end
|
|
22
|
+
if @banner.save
|
|
23
|
+
flash.now[:notice] = 'Banner created successfully'
|
|
24
|
+
render 'show'
|
|
31
25
|
else
|
|
32
|
-
|
|
33
|
-
respond_to_parent do
|
|
34
|
-
render 'legacy', :formats => [:js]
|
|
35
|
-
end
|
|
26
|
+
render 'new', status: :unprocessable_entity
|
|
36
27
|
end
|
|
37
28
|
end
|
|
38
29
|
|
|
@@ -41,68 +32,48 @@ class Admin::BannersController < Admin::ApplicationController
|
|
|
41
32
|
end
|
|
42
33
|
|
|
43
34
|
def update
|
|
44
|
-
if
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
render 'show'
|
|
48
|
-
else
|
|
49
|
-
render 'edit', :status => 422
|
|
50
|
-
end
|
|
35
|
+
if @banner.update(banner_params)
|
|
36
|
+
flash.now[:notice] = 'Banner created successfully'
|
|
37
|
+
render 'show'
|
|
51
38
|
else
|
|
52
|
-
|
|
53
|
-
respond_to_parent do
|
|
54
|
-
render 'legacy', :formats => [:js]
|
|
55
|
-
end
|
|
39
|
+
render 'edit', status: :unprocessable_entity
|
|
56
40
|
end
|
|
57
41
|
end
|
|
58
42
|
|
|
59
43
|
def destroy
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
status = 200
|
|
63
|
-
else
|
|
64
|
-
status = 422
|
|
65
|
-
end
|
|
66
|
-
render :nothing => true, :status => status
|
|
44
|
+
@banner.destroy
|
|
45
|
+
head :ok
|
|
67
46
|
end
|
|
68
47
|
|
|
48
|
+
# rubocop:disable Rails/SkipsModelValidations
|
|
69
49
|
def sort
|
|
70
50
|
banner_ids = params[:spud_banner_ids]
|
|
71
|
-
banners = SpudBanner.where(:
|
|
51
|
+
banners = SpudBanner.where(id: banner_ids).to_a
|
|
72
52
|
SpudBanner.transaction do
|
|
73
53
|
banner_ids.each_with_index do |id, index|
|
|
74
|
-
banner = banners.select{ |b| b.id == id.to_i }.first
|
|
54
|
+
banner = banners.select { |b| b.id == id.to_i }.first
|
|
75
55
|
banner.update_column(:sort_order, index)
|
|
76
56
|
end
|
|
77
|
-
banners.last.owner.touch
|
|
57
|
+
banners.last.owner.touch
|
|
78
58
|
end
|
|
79
|
-
|
|
59
|
+
head :ok
|
|
80
60
|
end
|
|
61
|
+
# rubocop:enable Rails/SkipsModelValidations
|
|
81
62
|
|
|
82
|
-
private
|
|
63
|
+
private
|
|
83
64
|
|
|
84
|
-
def
|
|
85
|
-
|
|
86
|
-
@banner_set = SpudBannerSet.find(params[:banner_set_id])
|
|
87
|
-
rescue ActiveRecord::RecordNotFound => e
|
|
88
|
-
flash.now[:error] = "Could not find the requested SpudBannerSet"
|
|
89
|
-
render :nothing => true, :status => 404
|
|
90
|
-
return false
|
|
91
|
-
end
|
|
65
|
+
def load_set
|
|
66
|
+
@banner_set = SpudBannerSet.find_by!(id: params[:banner_set_id])
|
|
92
67
|
end
|
|
93
68
|
|
|
94
|
-
def
|
|
95
|
-
|
|
96
|
-
@banner = SpudBanner.find(params[:id])
|
|
97
|
-
rescue ActiveRecord::RecordNotFound => e
|
|
98
|
-
flash.now[:error] = "Could not find the requested SpudBanner"
|
|
99
|
-
redirect_to admin_banner_sets_path
|
|
100
|
-
return false
|
|
101
|
-
end
|
|
69
|
+
def load_record
|
|
70
|
+
@banner = SpudBanner.find_by!(id: params[:id])
|
|
102
71
|
end
|
|
103
72
|
|
|
104
73
|
def banner_params
|
|
105
|
-
params.require(:spud_banner).permit(
|
|
74
|
+
params.require(:spud_banner).permit(
|
|
75
|
+
:banner, :link_to, :link_target, :title, :alt, :sort_order, :rich_text, :start_date, :end_date
|
|
76
|
+
)
|
|
106
77
|
end
|
|
107
78
|
|
|
108
|
-
end
|
|
79
|
+
end
|