caboose-cms 0.9.166 → 0.9.167
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/app/assets/javascripts/caboose/block_content_controller_dragdrop.js +1 -1
- data/app/assets/javascripts/caboose/model/index_table.js +3 -3
- data/app/assets/stylesheets/caboose/admin_edit_page_content_dragdrop.scss +20 -1
- data/app/assets/stylesheets/caboose/admin_main.css.scss +142 -9
- data/app/assets/stylesheets/caboose/message_boxes.css.scss +45 -29
- data/app/assets/stylesheets/caboose/modal_inline.css +10 -2
- data/app/controllers/caboose/block_type_store_controller.rb +1 -2
- data/app/controllers/caboose/login_controller.rb +1 -1
- data/app/controllers/caboose/login_logs_controller.rb +9 -1
- data/app/controllers/caboose/page_templates_controller.rb +76 -0
- data/app/controllers/caboose/pages_controller.rb +76 -42
- data/app/controllers/caboose/sites_controller.rb +20 -11
- data/app/controllers/caboose/themes_controller.rb +108 -0
- data/app/models/caboose/block.rb +7 -3
- data/app/models/caboose/block_type.rb +2 -0
- data/app/models/caboose/core_plugin.rb +2 -0
- data/app/models/caboose/page.rb +1 -0
- data/app/models/caboose/page_template.rb +17 -0
- data/app/models/caboose/page_template_category.rb +20 -0
- data/app/models/caboose/schema.rb +80 -1
- data/app/models/caboose/site.rb +15 -2
- data/app/models/caboose/theme.rb +146 -0
- data/app/models/caboose/user.rb +14 -16
- data/app/views/caboose/block_type_sources/admin_edit.html.erb +1 -1
- data/app/views/caboose/block_type_sources/admin_index.html.erb +1 -1
- data/app/views/caboose/block_type_store/admin_details.html.erb +2 -2
- data/app/views/caboose/block_type_store/admin_index.html.erb +3 -3
- data/app/views/caboose/fonts/admin_index.html.erb +23 -0
- data/app/views/caboose/login_logs/admin_index.html.erb +6 -1
- data/app/views/caboose/login_logs/admin_index_for_user.html.erb +36 -0
- data/app/views/caboose/page_templates/admin_edit.html.erb +68 -0
- data/app/views/caboose/page_templates/admin_index.html.erb +24 -0
- data/app/views/caboose/page_templates/admin_new.html.erb +38 -0
- data/app/views/caboose/pages/admin_delete_form.html.erb +5 -4
- data/app/views/caboose/pages/admin_edit_content.html.erb +0 -9
- data/app/views/caboose/pages/admin_new.html.erb +139 -41
- data/app/views/caboose/pages/admin_new_old.html.erb +46 -0
- data/app/views/caboose/posts/admin_edit_content.html.erb +0 -8
- data/app/views/caboose/sites/admin_index.html.erb +2 -1
- data/app/views/caboose/themes/admin_edit.html.erb +242 -0
- data/app/views/caboose/users/_admin_header.html.erb +2 -2
- data/app/views/caboose/users/admin_delete_form.html.erb +0 -2
- data/app/views/caboose/users/admin_edit.html.erb +24 -7
- data/app/views/caboose/users/admin_edit_password.html.erb +1 -1
- data/app/views/caboose/users/admin_edit_roles.html.erb +2 -0
- data/app/views/layouts/caboose/application.html.erb +8 -0
- data/lib/caboose/version.rb +1 -1
- metadata +13 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d0cdbb21670c498d32a302546db93e211868402b
|
|
4
|
+
data.tar.gz: 8f312dcd0e59b43826a38592adcc54cc260303c4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a876de2c71a21f0e6acdffdcd803876c9b5f81960b7f319a6369c147b3b381bf386c3b797ea8861959ebc6710d7197fc06ce6beea1c6f9f1b6d778cc0f7b50e5
|
|
7
|
+
data.tar.gz: 42e189883d2042118de765e58b04ef2f2c54c5cfc70ecc7442b5f05cd7520982b3ad8329cc2cde91adbbcfd0a12fd0904cd8aa0c52730c62144a5b7a295286e1
|
|
@@ -531,7 +531,7 @@ BlockContentController.prototype = {
|
|
|
531
531
|
el.attr('onclick','').unbind('click');
|
|
532
532
|
if ( el.hasClass('footer-wrapper') && el.prev('.content_wrapper.subpage').length > 0 ) {
|
|
533
533
|
el.css('position','relative');
|
|
534
|
-
var over = $('<div />').attr('id','footer-msg').text('The footer must be edited on the homepage.')
|
|
534
|
+
var over = $('<div />').attr('id','footer-msg').text('The footer must be edited on the homepage.');
|
|
535
535
|
if ( el.find('#footer-msg').length == 0 ) { el.append(over); }
|
|
536
536
|
}
|
|
537
537
|
else if ( !el.hasClass('container') ) {
|
|
@@ -637,7 +637,7 @@ IndexTable.prototype = {
|
|
|
637
637
|
that.show_message(div, 'bulk_import_form');
|
|
638
638
|
return;
|
|
639
639
|
}
|
|
640
|
-
that.show_message("<p class='loading'>Adding...</p>", 'bulk_import_loading');
|
|
640
|
+
that.show_message("<p class='note loading'>Adding...</p>", 'bulk_import_loading');
|
|
641
641
|
$.ajax({
|
|
642
642
|
url: this.bulk_import_url,
|
|
643
643
|
type: 'post',
|
|
@@ -691,7 +691,7 @@ IndexTable.prototype = {
|
|
|
691
691
|
that.show_message(div, 'bulk_import_form');
|
|
692
692
|
return;
|
|
693
693
|
}
|
|
694
|
-
that.show_message("<p class='loading'>Adding...</p>", 'bulk_import_loading');
|
|
694
|
+
that.show_message("<p class='note loading'>Adding...</p>", 'bulk_import_loading');
|
|
695
695
|
|
|
696
696
|
var formData = new FormData();
|
|
697
697
|
formData.append('file', file);
|
|
@@ -1073,7 +1073,7 @@ IndexTable.prototype = {
|
|
|
1073
1073
|
add_model: function()
|
|
1074
1074
|
{
|
|
1075
1075
|
var that = this;
|
|
1076
|
-
$('#' + that.container + '_new_message').html("<p class='loading'>Adding...</p>");
|
|
1076
|
+
$('#' + that.container + '_new_message').html("<p class='note loading'>Adding...</p>");
|
|
1077
1077
|
$.ajax({
|
|
1078
1078
|
url: this.add_url,
|
|
1079
1079
|
type: 'post',
|
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
@import url('https://fonts.googleapis.com/css?family=Roboto:300,300i');
|
|
2
2
|
|
|
3
|
+
body.editing .footer-wrapper #footer-msg {
|
|
4
|
+
position: absolute;
|
|
5
|
+
left: 0px;
|
|
6
|
+
top: 0px;
|
|
7
|
+
background: rgba(43, 43, 43, 0.9);
|
|
8
|
+
color: rgb(255, 255, 255);
|
|
9
|
+
width: 100%;
|
|
10
|
+
height: 100%;
|
|
11
|
+
z-index: 14;
|
|
12
|
+
padding: 40px 3%;
|
|
13
|
+
text-align: center;
|
|
14
|
+
font-size: 15px;
|
|
15
|
+
font-family: Roboto;
|
|
16
|
+
font-weight: 300;
|
|
17
|
+
}
|
|
18
|
+
|
|
3
19
|
#cb_block_sidebar {
|
|
4
20
|
position: fixed;
|
|
5
21
|
top: 0;
|
|
@@ -19,7 +35,7 @@
|
|
|
19
35
|
padding: 10px;
|
|
20
36
|
text-align: center;
|
|
21
37
|
height: 52px;
|
|
22
|
-
margin-bottom:
|
|
38
|
+
margin-bottom: 20px;
|
|
23
39
|
color: #252525;
|
|
24
40
|
}
|
|
25
41
|
}
|
|
@@ -36,6 +52,8 @@
|
|
|
36
52
|
text-transform: uppercase;
|
|
37
53
|
color: #252525;
|
|
38
54
|
line-height: 16px;
|
|
55
|
+
font-family: "Roboto";
|
|
56
|
+
font-weight: 300;
|
|
39
57
|
}
|
|
40
58
|
}
|
|
41
59
|
li.blocktype {
|
|
@@ -149,6 +167,7 @@ body > .ui-draggable-dragging {
|
|
|
149
167
|
border: 1px solid #d4d4d4;
|
|
150
168
|
margin-bottom: 0;
|
|
151
169
|
border-radius: 8px;
|
|
170
|
+
font-family: 'Roboto'; font-weight: 300;
|
|
152
171
|
}
|
|
153
172
|
|
|
154
173
|
p.caboose_note.delete {
|
|
@@ -207,15 +207,15 @@ p.current_page_editing {
|
|
|
207
207
|
padding: 10px 10px 10px 30px;
|
|
208
208
|
}
|
|
209
209
|
|
|
210
|
-
#content p.loading {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
}
|
|
210
|
+
// #content p.loading {
|
|
211
|
+
// background-image: url('/assets/caboose/loading_black_on_white.gif');
|
|
212
|
+
// background-position: 0 center;
|
|
213
|
+
// background-repeat: no-repeat;
|
|
214
|
+
// color: #000;
|
|
215
|
+
// font-weight: normal;
|
|
216
|
+
// font-size: 16pt;
|
|
217
|
+
// padding: 10px 10px 10px 40px;
|
|
218
|
+
// }
|
|
219
219
|
|
|
220
220
|
#content div.yesnobox {
|
|
221
221
|
position: absolute;
|
|
@@ -531,6 +531,139 @@ Page Bar Generator
|
|
|
531
531
|
#search_form input[type='submit'] { height: 35px; padding: 0 12px; }
|
|
532
532
|
|
|
533
533
|
|
|
534
|
+
.new-page-form-wrapper {
|
|
535
|
+
max-width: 950px;
|
|
536
|
+
margin: 0 auto;
|
|
537
|
+
padding: 0 50px 0 20px;
|
|
538
|
+
section {
|
|
539
|
+
padding: 20px 10px 20px 20px;
|
|
540
|
+
border: 1px solid #d6d6d6;
|
|
541
|
+
margin-bottom: 30px;
|
|
542
|
+
h4 {
|
|
543
|
+
margin: 0 0 10px 0;
|
|
544
|
+
font-size: 17px;
|
|
545
|
+
}
|
|
546
|
+
.field {
|
|
547
|
+
margin-bottom: 15px;
|
|
548
|
+
&:last-of-type { margin-bottom: 0; }
|
|
549
|
+
label {
|
|
550
|
+
display: block;
|
|
551
|
+
font-size: 15px;
|
|
552
|
+
margin-bottom: 2px;
|
|
553
|
+
}
|
|
554
|
+
input, select {
|
|
555
|
+
display: block;
|
|
556
|
+
width: 100%;
|
|
557
|
+
margin: 0;
|
|
558
|
+
}
|
|
559
|
+
p.meta {
|
|
560
|
+
font-size: 13px;
|
|
561
|
+
margin: 3px 0 0 0;
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
&.buttons {
|
|
565
|
+
.caboose-btn {
|
|
566
|
+
float: right;
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
#page-message {
|
|
571
|
+
margin: 30px 0;
|
|
572
|
+
.note {
|
|
573
|
+
text-align: center;
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
.page-templates-wrapper {
|
|
579
|
+
max-width: 912px;
|
|
580
|
+
margin: 0 auto;
|
|
581
|
+
padding: 0 20px;
|
|
582
|
+
.category {
|
|
583
|
+
border-top: 1px solid #d6d6d6;
|
|
584
|
+
padding-top: 20px;
|
|
585
|
+
margin-top: 10px;
|
|
586
|
+
&:first-of-type {
|
|
587
|
+
border-top: 0;
|
|
588
|
+
}
|
|
589
|
+
h3 {
|
|
590
|
+
margin: 0 auto 5px 0;
|
|
591
|
+
font-size: 18px;
|
|
592
|
+
padding-left: 2px;
|
|
593
|
+
}
|
|
594
|
+
p.description {
|
|
595
|
+
font-size: 14px;
|
|
596
|
+
margin: 0 0 20px 0;
|
|
597
|
+
padding-left: 2px;
|
|
598
|
+
}
|
|
599
|
+
.cat-templates {
|
|
600
|
+
display: -webkit-box;
|
|
601
|
+
display: -moz-box;
|
|
602
|
+
display: -ms-flexbox;
|
|
603
|
+
display: -webkit-flex;
|
|
604
|
+
display: flex;
|
|
605
|
+
flex-wrap: wrap;
|
|
606
|
+
.template {
|
|
607
|
+
display: block;
|
|
608
|
+
text-decoration: none;
|
|
609
|
+
-webkit-box-flex: 0 0 23%;
|
|
610
|
+
-moz-box-flex: 0 0 23%;
|
|
611
|
+
-webkit-flex: 0 0 23%;
|
|
612
|
+
-ms-flex: 0 0 23%;
|
|
613
|
+
flex: 0 0 23%;
|
|
614
|
+
text-align: center;
|
|
615
|
+
margin: 0 2% 20px 0;
|
|
616
|
+
color: #2d2d2d;
|
|
617
|
+
position: relative;
|
|
618
|
+
img {
|
|
619
|
+
display: block;
|
|
620
|
+
width: 100%;
|
|
621
|
+
height: auto;
|
|
622
|
+
}
|
|
623
|
+
.text {
|
|
624
|
+
background: #2d2d2d;
|
|
625
|
+
color: #fff;
|
|
626
|
+
padding: 8px;
|
|
627
|
+
.title {
|
|
628
|
+
font-size: 15px;
|
|
629
|
+
margin-bottom: 0;
|
|
630
|
+
display: block;
|
|
631
|
+
}
|
|
632
|
+
.desc {
|
|
633
|
+
font-size: 13px;
|
|
634
|
+
display: block;
|
|
635
|
+
margin-top: 3px;
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
&:hover {
|
|
639
|
+
img {
|
|
640
|
+
opacity: 0.6;
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
&.selected {
|
|
644
|
+
&::after {
|
|
645
|
+
content: " ";
|
|
646
|
+
background-image: url('https://cabooseit.s3.amazonaws.com/assets/shared/check.png');
|
|
647
|
+
background-size: 24px;
|
|
648
|
+
width: 24px;
|
|
649
|
+
height: 24px;
|
|
650
|
+
background-position: center center;
|
|
651
|
+
background-repeat: no-repeat;
|
|
652
|
+
position: absolute;
|
|
653
|
+
right: -4px;
|
|
654
|
+
top: -4px;
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
.btn-holder {
|
|
660
|
+
text-align: right;
|
|
661
|
+
padding-right: 10px;
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
|
|
534
667
|
/******************************************************************************/
|
|
535
668
|
|
|
536
669
|
#htabs_container {
|
|
@@ -3,26 +3,42 @@
|
|
|
3
3
|
Message boxes
|
|
4
4
|
*******************************************************************************/
|
|
5
5
|
|
|
6
|
-
.loading {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
6
|
+
// .loading {
|
|
7
|
+
// background-image: url('/assets/caboose/loading_black_on_white.gif');
|
|
8
|
+
// background-position: 0 center;
|
|
9
|
+
// background-repeat: no-repeat;
|
|
10
|
+
// color: #000;
|
|
11
|
+
// font-weight: normal;
|
|
12
|
+
// font-size: 16pt;
|
|
13
|
+
// padding: 10px 10px 10px 40px;
|
|
14
|
+
// }
|
|
15
15
|
|
|
16
16
|
.note {
|
|
17
|
-
padding:
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
17
|
+
padding: 15px;
|
|
18
|
+
background: #fff3ac;
|
|
19
|
+
//color: #fff;
|
|
20
|
+
font-size: 15px;
|
|
21
|
+
//text-align: center;
|
|
22
|
+
h2 { margin: 0 0 10px 0; padding: 0; }
|
|
23
|
+
a {
|
|
24
|
+
color: #fff;
|
|
25
|
+
&:hover {
|
|
26
|
+
color: #000;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
&.error {
|
|
30
|
+
background: #bf4448;
|
|
31
|
+
}
|
|
32
|
+
&.success {
|
|
33
|
+
background: #26ae88;
|
|
34
|
+
}
|
|
35
|
+
&.loading {
|
|
36
|
+
background-image: url('https://cabooseit.s3.amazonaws.com/assets/shared/loading_blue.gif');
|
|
37
|
+
background-size: 40px;
|
|
38
|
+
background-position: 0 center;
|
|
39
|
+
background-repeat: no-repeat;
|
|
40
|
+
padding-left: 40px;
|
|
41
|
+
}
|
|
26
42
|
}
|
|
27
43
|
|
|
28
44
|
.note_small {
|
|
@@ -34,16 +50,16 @@ Message boxes
|
|
|
34
50
|
border-radius: 3px;
|
|
35
51
|
}
|
|
36
52
|
|
|
37
|
-
.error {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
53
|
+
// .error {
|
|
54
|
+
// background: #bf4448;
|
|
55
|
+
// color: #ffffff;
|
|
56
|
+
// a { color: #fff; }
|
|
57
|
+
// a:hover { color: #000; }
|
|
58
|
+
// }
|
|
43
59
|
|
|
44
|
-
.success {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
60
|
+
// .success {
|
|
61
|
+
// background: #26ae88;
|
|
62
|
+
// color: #ffffff;
|
|
63
|
+
// a { color: #ffffff; }
|
|
64
|
+
// }
|
|
49
65
|
|
|
@@ -8,8 +8,16 @@
|
|
|
8
8
|
#the_modal div.icons a:hover span.icon { color: #000 !important; }
|
|
9
9
|
#the_modal div.icons a:hover span.name { color: #000 !important; }
|
|
10
10
|
|
|
11
|
-
#the_modal { box-sizing: border-box; color: #252525; }
|
|
12
|
-
#the_modal p { margin-bottom: 10px; }
|
|
11
|
+
#the_modal { box-sizing: border-box; color: #252525; font-family: 'Roboto'; font-weight: 300; }
|
|
12
|
+
#the_modal p { margin-bottom: 10px; font-family: 'Roboto'; font-weight: 300; }
|
|
13
|
+
#the_modal h1,
|
|
14
|
+
#the_modal h2,
|
|
15
|
+
#the_modal h3,
|
|
16
|
+
#the_modal h4,
|
|
17
|
+
#the_modal h5,
|
|
18
|
+
#the_modal h6 {
|
|
19
|
+
font-family: 'Roboto'; font-weight: 300;
|
|
20
|
+
}
|
|
13
21
|
#the_modal .mb_container input { border: #ccc 1px solid; }
|
|
14
22
|
#the_modal div.mb_container div.mb_placeholder { top: 9px; }
|
|
15
23
|
#the_modal div.mb_container div.mb_placeholder span { font-size: 16px; }
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
|
|
2
1
|
module Caboose
|
|
3
2
|
class BlockTypeStoreController < ApplicationController
|
|
4
3
|
|
|
5
|
-
# @route GET /admin/block-
|
|
4
|
+
# @route GET /admin/block-type-store
|
|
6
5
|
def admin_index
|
|
7
6
|
return unless user_is_allowed('blocktypestore', 'add')
|
|
8
7
|
@pager = PageBarGenerator.new(params, {
|
|
@@ -85,7 +85,7 @@ module Caboose
|
|
|
85
85
|
|
|
86
86
|
LoginMailer.configure_for_site(@site.id).forgot_password_email(bob).deliver
|
|
87
87
|
|
|
88
|
-
resp.success = "We just sent you an email.
|
|
88
|
+
resp.success = "We just sent you an email. The reset link inside is good for 3 days."
|
|
89
89
|
render :json => resp
|
|
90
90
|
end
|
|
91
91
|
|
|
@@ -6,11 +6,19 @@ module Caboose
|
|
|
6
6
|
def before_action
|
|
7
7
|
@page = Page.page_with_uri(request.host_with_port, '/admin')
|
|
8
8
|
end
|
|
9
|
+
|
|
10
|
+
# @route GET /admin/login-logs/user/:userid
|
|
11
|
+
def admin_index_for_user
|
|
12
|
+
return if !user_is_allowed_to 'view', 'loginlogs'
|
|
13
|
+
@pager = self.login_logs_pager
|
|
14
|
+
@edituser = Caboose::User.find(params[:userid]) if !params[:userid].blank?
|
|
15
|
+
render :layout => 'caboose/admin'
|
|
16
|
+
end
|
|
9
17
|
|
|
10
18
|
# @route GET /admin/login-logs
|
|
11
19
|
def admin_index
|
|
12
20
|
return if !user_is_allowed_to 'view', 'loginlogs'
|
|
13
|
-
@pager = self.login_logs_pager
|
|
21
|
+
@pager = self.login_logs_pager
|
|
14
22
|
render :layout => 'caboose/admin'
|
|
15
23
|
end
|
|
16
24
|
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
module Caboose
|
|
2
|
+
class PageTemplatesController < ApplicationController
|
|
3
|
+
layout 'caboose/admin'
|
|
4
|
+
|
|
5
|
+
# @route GET /admin/templates
|
|
6
|
+
def admin_index
|
|
7
|
+
return if !user_is_allowed('templates', 'view') || !@site.is_master
|
|
8
|
+
@categories = PageTemplateCategory.order(:sort_order).all
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# @route GET /admin/templates/new
|
|
12
|
+
def admin_new
|
|
13
|
+
return if !user_is_allowed('templates', 'add') || !@site.is_master
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# @route POST /admin/templates
|
|
17
|
+
def admin_create
|
|
18
|
+
return unless user_is_allowed('templates', 'add')
|
|
19
|
+
resp = Caboose::StdClass.new({'error' => nil,'redirect' => nil})
|
|
20
|
+
@template = PageTemplate.new
|
|
21
|
+
@template.title = params[:title]
|
|
22
|
+
@template.category_id = params[:category_id]
|
|
23
|
+
@template.save
|
|
24
|
+
resp.redirect = "/admin/templates/#{@template.id}"
|
|
25
|
+
render :json => resp
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# @route PUT /admin/templates/:id
|
|
29
|
+
def admin_update
|
|
30
|
+
return unless ((user_is_allowed_to 'edit', 'templates') && @site.is_master)
|
|
31
|
+
resp = Caboose::StdClass.new
|
|
32
|
+
templates = params[:id] == 'bulk' ? params[:model_ids].collect{ |rid| PageTemplate.find(rid) } : [PageTemplate.find(params[:id])]
|
|
33
|
+
params.each do |k,v|
|
|
34
|
+
case k
|
|
35
|
+
when "title" then templates.each { |r| r.title = v }
|
|
36
|
+
when "page_id" then templates.each { |r| r.page_id = v }
|
|
37
|
+
when "description" then templates.each { |r| r.description = v }
|
|
38
|
+
when "category_id" then templates.each { |r| r.category_id = v }
|
|
39
|
+
when "sort_order" then templates.each { |r| r.sort_order = v }
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
templates.each do |r|
|
|
43
|
+
r.save
|
|
44
|
+
end
|
|
45
|
+
resp.success = true
|
|
46
|
+
render :json => resp
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# @route POST /admin/templates/:id/screenshot
|
|
50
|
+
def admin_update_screenshot
|
|
51
|
+
render :json => false and return unless user_is_allowed_to 'edit', 'templates'
|
|
52
|
+
resp = Caboose::StdClass.new({ 'attributes' => {} })
|
|
53
|
+
template = PageTemplate.find(params[:id])
|
|
54
|
+
template.screenshot = params[:screenshot]
|
|
55
|
+
template.save
|
|
56
|
+
resp.attributes['image'] = { 'value' => template.screenshot.url(:small) }
|
|
57
|
+
render :text => resp.to_json
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# @route GET /admin/templates/:id
|
|
61
|
+
def admin_edit
|
|
62
|
+
return if !user_is_allowed('templates', 'edit') || !@site.is_master
|
|
63
|
+
@template = PageTemplate.find(params[:id])
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# @route DELETE /admin/templates/:id
|
|
67
|
+
def admin_delete
|
|
68
|
+
return if !user_is_allowed('templates', 'delete') || !@site.is_master
|
|
69
|
+
prop = PageTemplate.find(params[:id])
|
|
70
|
+
resp = Caboose::StdClass.new('redirect' => "/admin/templates")
|
|
71
|
+
prop.destroy
|
|
72
|
+
render :json => resp
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
end
|
|
76
|
+
end
|