caboose-cms 0.8.43 → 0.8.44
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/admin_page_edit_content.js +83 -70
- data/app/assets/javascripts/caboose/card.js +2432 -0
- data/app/assets/javascripts/caboose/clipboard.js +7 -0
- data/app/assets/javascripts/caboose/modal_controllers/modal_block_controller.js +174 -252
- data/app/assets/javascripts/caboose/modal_controllers/modal_controller.js +160 -12
- data/app/assets/javascripts/caboose/modal_controllers/modal_media_controller.js +419 -0
- data/app/assets/javascripts/caboose/modal_integration.js +21 -1
- data/app/assets/javascripts/caboose/model/bound_checkbox.js +13 -6
- data/app/assets/javascripts/caboose/model/bound_select.js +16 -7
- data/app/assets/javascripts/caboose/model/bound_text.js +15 -2
- data/app/assets/stylesheets/caboose/admin_block_edit_image.css.scss +16 -1
- data/app/assets/stylesheets/caboose/admin_new_block.css +9 -0
- data/app/assets/stylesheets/caboose/application.css +2 -1
- data/app/assets/stylesheets/caboose/modal_inline.css +8 -15
- data/app/assets/stylesheets/caboose/my_account.scss +178 -0
- data/app/controllers/caboose/block_types_controller.rb +20 -0
- data/app/controllers/caboose/blocks_controller.rb +70 -8
- data/app/controllers/caboose/media_controller.rb +39 -3
- data/app/models/caboose/block.rb +17 -1
- data/app/models/caboose/media.rb +9 -8
- data/app/models/caboose/schema.rb +1 -0
- data/app/views/caboose/block_types/admin_edit.html.erb +5 -2
- data/app/views/caboose/block_types/admin_index.html.erb +2 -1
- data/app/views/caboose/my_account/index.html.erb +124 -63
- data/app/views/caboose/my_account/index_old.html.erb +191 -0
- data/app/views/caboose/pages/admin_edit_content.html.erb +16 -1
- data/lib/caboose/version.rb +1 -1
- metadata +8 -3
- data/app/assets/stylesheets/caboose/my_account.css +0 -2
@@ -45,9 +45,29 @@ $(document).ready(function() {
|
|
45
45
|
//caboose_modal('caboose_login');
|
46
46
|
//caboose_modal('caboose_register');
|
47
47
|
//caboose_modal('caboose_station');
|
48
|
-
$('a.caboose_modal').each(function(i, a) {
|
48
|
+
$('a.caboose_modal').each(function(i, a) { caboose_modal_iframe($(a)); });
|
49
49
|
});
|
50
50
|
|
51
|
+
function caboose_modal_iframe(el)
|
52
|
+
{
|
53
|
+
var options = {
|
54
|
+
iframe: true,
|
55
|
+
initialWidth: 400,
|
56
|
+
initialHeight: 200,
|
57
|
+
innerWidth: 400,
|
58
|
+
innerHeight: 200,
|
59
|
+
scrolling: false,
|
60
|
+
transition: 'fade',
|
61
|
+
closeButton: false,
|
62
|
+
onComplete: caboose_fix_colorbox,
|
63
|
+
opacity: 0.50
|
64
|
+
};
|
65
|
+
if (typeof(el) == 'string')
|
66
|
+
$('#'+el).colorbox(options);
|
67
|
+
else
|
68
|
+
el.colorbox(options);
|
69
|
+
}
|
70
|
+
|
51
71
|
function caboose_modal(el)
|
52
72
|
{
|
53
73
|
var options = {
|
@@ -26,11 +26,11 @@ BoundCheckbox = BoundControl.extend({
|
|
26
26
|
);
|
27
27
|
$('#'+this.el+'_container').empty();
|
28
28
|
if (this.attribute.fixed_placeholder)
|
29
|
-
{
|
29
|
+
{
|
30
30
|
$('#'+this.el+'_container').append($('<div/>')
|
31
31
|
.attr('id', this.placeholder)
|
32
32
|
.addClass('mb_placeholder')
|
33
|
-
.append($('<span/>').html(this.attribute.nice_name + ': '))
|
33
|
+
.append($('<span/>').html(this.attribute.nice_name + (this.attribute.nice_name[this.attribute.nice_name.length-1] == '?' ? '' : ':') + ' '))
|
34
34
|
);
|
35
35
|
}
|
36
36
|
var cb = $('<input/>')
|
@@ -48,10 +48,8 @@ BoundCheckbox = BoundControl.extend({
|
|
48
48
|
$('#'+this.el).css('left', Math.floor($('#'+this.el+'_container').outerWidth()/2))
|
49
49
|
else // left
|
50
50
|
{
|
51
|
-
|
52
|
-
|
53
|
-
//alert($('#'+this.placeholder).outerWidth());
|
54
|
-
$('#'+this.el).css('left', $('#'+this.placeholder).outerWidth(true) + 10);
|
51
|
+
this.set_placeholder_padding();
|
52
|
+
//$('#'+this.el).css('left', $('#'+this.placeholder).outerWidth(true) + 10);
|
55
53
|
}
|
56
54
|
|
57
55
|
$('#'+this.el+'_container').append($('<input/>')
|
@@ -65,6 +63,15 @@ BoundCheckbox = BoundControl.extend({
|
|
65
63
|
$('#'+this.el+'_background').css('width' , this.attribute.width);
|
66
64
|
},
|
67
65
|
|
66
|
+
set_placeholder_padding: function() {
|
67
|
+
var that = this;
|
68
|
+
var w = $('#'+that.placeholder).outerWidth(true);
|
69
|
+
if (w > 0)
|
70
|
+
$('#'+that.el).css('left', w + 10);
|
71
|
+
else
|
72
|
+
setTimeout(function() { that.set_placeholder_padding(); }, 200);
|
73
|
+
},
|
74
|
+
|
68
75
|
view: function() {
|
69
76
|
|
70
77
|
},
|
@@ -10,11 +10,10 @@ BoundSelect = BoundControl.extend({
|
|
10
10
|
placeholder: false,
|
11
11
|
|
12
12
|
init: function(params) {
|
13
|
-
|
13
|
+
var that = this;
|
14
14
|
for (var thing in params)
|
15
15
|
this[thing] = params[thing];
|
16
|
-
|
17
|
-
|
16
|
+
|
18
17
|
this.el = this.el ? this.el : this.model.name.toLowerCase() + '_' + this.model.id + '_' + this.attribute.name;
|
19
18
|
this.message = this.el + '_message';
|
20
19
|
this.placeholder = this.el + '_placeholder';
|
@@ -48,10 +47,11 @@ BoundSelect = BoundControl.extend({
|
|
48
47
|
|
49
48
|
if (this.attribute.fixed_placeholder)
|
50
49
|
{
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
50
|
+
that.set_placeholder_padding();
|
51
|
+
//setTimeout(function() {
|
52
|
+
// var w = $('#'+that.placeholder).outerWidth(true);
|
53
|
+
// $('#'+that.el).css('padding-left', '+=' + w);//.css('width', '-=' + w);
|
54
|
+
// }, 200);
|
55
55
|
}
|
56
56
|
|
57
57
|
//this.update_options();
|
@@ -136,6 +136,15 @@ BoundSelect = BoundControl.extend({
|
|
136
136
|
$('#'+this2.el+'_select').css('width', $('#'+this2.el).outerWidth());
|
137
137
|
});
|
138
138
|
},
|
139
|
+
|
140
|
+
set_placeholder_padding: function() {
|
141
|
+
var that = this;
|
142
|
+
var w = $('#'+that.placeholder).outerWidth(true);
|
143
|
+
if (w > 0)
|
144
|
+
$('#'+that.el).css('padding-left', '+=' + w);
|
145
|
+
else
|
146
|
+
setTimeout(function() { that.set_placeholder_padding(); }, 200);
|
147
|
+
},
|
139
148
|
|
140
149
|
//update_options: function() {
|
141
150
|
// var that = this;
|
@@ -10,6 +10,7 @@ BoundText = BoundControl.extend({
|
|
10
10
|
save_attempts: 0,
|
11
11
|
|
12
12
|
init: function(params) {
|
13
|
+
var that = this;
|
13
14
|
for (var thing in params)
|
14
15
|
this[thing] = params[thing];
|
15
16
|
|
@@ -35,8 +36,11 @@ BoundText = BoundControl.extend({
|
|
35
36
|
if (this.attribute.width) $('#'+this.el).css('width' , this.attribute.width);
|
36
37
|
if (this.attribute.fixed_placeholder && this.attribute.align != 'right')
|
37
38
|
{
|
38
|
-
|
39
|
-
|
39
|
+
that.set_placeholder_padding();
|
40
|
+
//setTimeout(function() {
|
41
|
+
// var w = $('#'+that.el+'_placeholder').outerWidth();
|
42
|
+
// $('#'+that.el).attr('placeholder', 'empty').css('padding-left', '+=' + w);//.css('width', '-=' + w);
|
43
|
+
// }, 200);
|
40
44
|
}
|
41
45
|
|
42
46
|
var this2 = this;
|
@@ -58,6 +62,15 @@ BoundText = BoundControl.extend({
|
|
58
62
|
});
|
59
63
|
},
|
60
64
|
|
65
|
+
set_placeholder_padding: function() {
|
66
|
+
var that = this;
|
67
|
+
var w = $('#'+that.el+'_placeholder').outerWidth();
|
68
|
+
if (w > 0)
|
69
|
+
$('#'+that.el).css('padding-left', '+=' + w);
|
70
|
+
else
|
71
|
+
setTimeout(function() { that.set_placeholder_padding(); }, 200);
|
72
|
+
},
|
73
|
+
|
61
74
|
save: function() {
|
62
75
|
this.attribute.value = $('#'+this.el).val();
|
63
76
|
if (this.attribute.value == this.attribute.value_clean)
|
@@ -1,4 +1,10 @@
|
|
1
1
|
|
2
|
+
#detail_image {
|
3
|
+
float: right;
|
4
|
+
margin: 0;
|
5
|
+
width: 370px;
|
6
|
+
}
|
7
|
+
|
2
8
|
#left_content {
|
3
9
|
width: 200px;
|
4
10
|
float: left;
|
@@ -36,7 +42,7 @@
|
|
36
42
|
}
|
37
43
|
|
38
44
|
&.selected {
|
39
|
-
a {
|
45
|
+
& > a {
|
40
46
|
font-weight: bold;
|
41
47
|
background-color: #90dbf9;
|
42
48
|
}
|
@@ -149,3 +155,12 @@
|
|
149
155
|
}
|
150
156
|
}
|
151
157
|
}
|
158
|
+
|
159
|
+
#the_modal div.icons { height: 400px; overflow-y: scroll; }
|
160
|
+
#the_modal div.icons h2 { clear: both; padding: 20px 0px 10px 0; text-align: center; }
|
161
|
+
#the_modal div.icons a { display: block; float: left; margin: 4px; border: #fff 0px solid; width: 120px; height: 100px; text-align: center; vertical-align: middle; border: #666 4px solid; }
|
162
|
+
#the_modal div.icons a span.icon { display: block; padding: 10px 20px; font-size: 24pt; color: #fff; }
|
163
|
+
#the_modal div.icons a span.name { display: block; }
|
164
|
+
#the_modal div.icons a:hover { background: #fff69f; color: #000; border: #666 0px solid; border: #666 4px solid; }
|
165
|
+
#the_modal div.icons a:hover span.icon { color: #000; }
|
166
|
+
#the_modal div.icons a:hover span.name { color: #000; }
|
@@ -0,0 +1,9 @@
|
|
1
|
+
|
2
|
+
#modal_content div.icons { height: 400px; overflow-y: scroll; }
|
3
|
+
#modal_content div.icons h2 { clear: both; padding: 20px 0px 10px 0; text-align: center; }
|
4
|
+
#modal_content div.icons a { display: block; float: left; margin: 4px; border: #fff 0px solid; width: 120px; height: 100px; text-align: center; vertical-align: middle; border: #666 4px solid; }
|
5
|
+
#modal_content div.icons a span.icon { display: block; padding: 10px 20px; font-size: 24pt; color: #fff; }
|
6
|
+
#modal_content div.icons a span.name { display: block; }
|
7
|
+
#modal_content div.icons a:hover { background: #fff69f; color: #000; border: #666 0px solid; border: #666 4px solid; }
|
8
|
+
#modal_content div.icons a:hover span.icon { color: #000; }
|
9
|
+
#modal_content div.icons a:hover span.name { color: #000; }
|
@@ -1,17 +1,10 @@
|
|
1
1
|
|
2
|
-
#the_modal {
|
3
|
-
|
4
|
-
}
|
5
|
-
|
6
|
-
#
|
7
|
-
|
8
|
-
#
|
9
|
-
|
10
|
-
#modal_content div.mb_container div.mb_placeholder { top: 9px; }
|
11
|
-
#modal_content div.mb_container div.mb_placeholder span { font-size: 16px; }
|
12
|
-
|
13
|
-
#modal_content div.mb_container select { border: #ccc 1px solid; height: 36px; }
|
14
|
-
#modal_content div.mb_container select option { font-size: 16px; }
|
15
|
-
|
16
|
-
#modal_content div.mb_container input[type=checkbox] { top: 12px; }
|
2
|
+
#the_modal { box-sizing: border-box; }
|
3
|
+
#the_modal p { margin-bottom: 10px; }
|
4
|
+
#the_modal .mb_container input { border: #ccc 1px solid; }
|
5
|
+
#the_modal div.mb_container div.mb_placeholder { top: 9px; }
|
6
|
+
#the_modal div.mb_container div.mb_placeholder span { font-size: 16px; }
|
7
|
+
#the_modal div.mb_container select { border: #ccc 1px solid; height: 36px; }
|
8
|
+
#the_modal div.mb_container select option { font-size: 16px; }
|
9
|
+
#the_modal div.mb_container input[type=checkbox] { top: 12px; }
|
17
10
|
|
@@ -0,0 +1,178 @@
|
|
1
|
+
@import url('https://fonts.googleapis.com/css?family=Open+Sans');
|
2
|
+
|
3
|
+
$font-card: normal 1em "Open Sans", sans-serif;
|
4
|
+
$color-main: #5f5f5f;
|
5
|
+
$color-light: #ececec;
|
6
|
+
|
7
|
+
@mixin small() { @media all and (max-width: 800px) { @content }}
|
8
|
+
@mixin big() { @media all and (min-width: 800px) { @content }}
|
9
|
+
|
10
|
+
#caboose-my-account {
|
11
|
+
padding: 30px 2% 50px 2%;
|
12
|
+
& > h2 {
|
13
|
+
text-align: center;
|
14
|
+
font-size: 1.5em;
|
15
|
+
margin-bottom: 30px;
|
16
|
+
color: #3c3c3c;
|
17
|
+
}
|
18
|
+
& > .grid-row {
|
19
|
+
max-width: 900px;
|
20
|
+
margin: 0 auto;
|
21
|
+
.unit1of2 {
|
22
|
+
@include big {
|
23
|
+
width: 49%;
|
24
|
+
}
|
25
|
+
&.right {
|
26
|
+
@include big {
|
27
|
+
float: right;
|
28
|
+
}
|
29
|
+
}
|
30
|
+
}
|
31
|
+
#card-wrapper {
|
32
|
+
height: 200px;
|
33
|
+
}
|
34
|
+
#stripe_form {
|
35
|
+
display: none;
|
36
|
+
}
|
37
|
+
.card-form-wrapper {
|
38
|
+
background: $color-light;
|
39
|
+
border-radius: 12px;
|
40
|
+
padding: 12px 4% 24px 4%;
|
41
|
+
border: 1px solid $color-main;
|
42
|
+
max-width: 400px;
|
43
|
+
margin: 0 auto;
|
44
|
+
text-align: center;
|
45
|
+
font: $font-card;
|
46
|
+
.title {
|
47
|
+
font-size: 1.1em;
|
48
|
+
text-align: center;
|
49
|
+
margin-bottom: 17px;
|
50
|
+
color: #3c3c3c;
|
51
|
+
}
|
52
|
+
#card_details {
|
53
|
+
.edit-card {
|
54
|
+
color: #4c94ff;
|
55
|
+
text-decoration: none;
|
56
|
+
margin-left: 4px;
|
57
|
+
&:hover {
|
58
|
+
color: #c24cff;
|
59
|
+
}
|
60
|
+
}
|
61
|
+
}
|
62
|
+
.jp-card .jp-card-front .jp-card-lower .jp-card-number {
|
63
|
+
font-size: 22px;
|
64
|
+
}
|
65
|
+
.jp-card .jp-card-front .jp-card-lower .jp-card-name {
|
66
|
+
font-size: 16px;
|
67
|
+
}
|
68
|
+
.jp-card .jp-card-front .jp-card-lower {
|
69
|
+
left: 8%;
|
70
|
+
width: 84%;
|
71
|
+
}
|
72
|
+
&.address {
|
73
|
+
@include small {
|
74
|
+
margin-bottom: 40px;
|
75
|
+
}
|
76
|
+
.title {
|
77
|
+
margin-bottom: 20px;
|
78
|
+
}
|
79
|
+
.input-holder {
|
80
|
+
margin-bottom: 10px;
|
81
|
+
input {
|
82
|
+
&.mb_dirty {
|
83
|
+
background: #fff799 !important
|
84
|
+
}
|
85
|
+
}
|
86
|
+
.mb_bound_input_check {
|
87
|
+
a {
|
88
|
+
color: #fff;
|
89
|
+
background: #6fb96f;
|
90
|
+
font-size: 21px;
|
91
|
+
text-decoration: none;
|
92
|
+
}
|
93
|
+
}
|
94
|
+
.mb_placeholder {
|
95
|
+
top: 7px;
|
96
|
+
left: 7px;
|
97
|
+
span {
|
98
|
+
font-size: 16px;
|
99
|
+
}
|
100
|
+
}
|
101
|
+
}
|
102
|
+
}
|
103
|
+
.buttons {
|
104
|
+
margin-top: 20px;
|
105
|
+
.btn {
|
106
|
+
font-size: 15px;
|
107
|
+
margin-right: 5px;
|
108
|
+
margin-bottom: 5px;
|
109
|
+
&:last-of-type {
|
110
|
+
margin-right: 0;
|
111
|
+
}
|
112
|
+
}
|
113
|
+
}
|
114
|
+
}
|
115
|
+
form {
|
116
|
+
width: 90%;
|
117
|
+
margin: 0 auto;
|
118
|
+
text-align: left;
|
119
|
+
.row {
|
120
|
+
margin-bottom: 10px;
|
121
|
+
}
|
122
|
+
.field {
|
123
|
+
&.col-2 {
|
124
|
+
width: 50%;
|
125
|
+
float: left;
|
126
|
+
&:first-of-type {
|
127
|
+
padding-right: 1.5%;
|
128
|
+
}
|
129
|
+
&:last-of-type {
|
130
|
+
padding-left: 1.5%;
|
131
|
+
}
|
132
|
+
}
|
133
|
+
&.col-3 {
|
134
|
+
width: 33.33333%;
|
135
|
+
float: left;
|
136
|
+
&:nth-of-type(1) { padding-right: 1.5%; }
|
137
|
+
&:nth-of-type(2) { padding-right: 0.75%; padding-left: 0.75%; }
|
138
|
+
&:nth-of-type(3) { padding-left: 1.5%; }
|
139
|
+
}
|
140
|
+
}
|
141
|
+
.payment_controls {
|
142
|
+
text-align: right;
|
143
|
+
margin-top: 10px;
|
144
|
+
.btn {
|
145
|
+
font-size: 15px;
|
146
|
+
&.disabled {
|
147
|
+
cursor: default;
|
148
|
+
background: gray;
|
149
|
+
}
|
150
|
+
}
|
151
|
+
}
|
152
|
+
}
|
153
|
+
label {
|
154
|
+
display: block;
|
155
|
+
font-size: 12px;
|
156
|
+
margin-bottom: 2px;
|
157
|
+
}
|
158
|
+
input {
|
159
|
+
background-color: #fff !important;
|
160
|
+
display: block;
|
161
|
+
width: 100% !important;
|
162
|
+
font: $font-card;
|
163
|
+
line-height: 1em;
|
164
|
+
padding: 6px 6px 6px 6px;
|
165
|
+
border: 1px solid #dadada;
|
166
|
+
border-radius: 3px;
|
167
|
+
color: #2d2d2d;
|
168
|
+
&.placeholder_js {
|
169
|
+
color: #adadad;
|
170
|
+
}
|
171
|
+
}
|
172
|
+
}
|
173
|
+
.reset-password {
|
174
|
+
.btn.alternate {
|
175
|
+
margin-top: 10px;
|
176
|
+
}
|
177
|
+
}
|
178
|
+
}
|
@@ -113,6 +113,7 @@ module Caboose
|
|
113
113
|
when 'render_function' then bt.render_function = v
|
114
114
|
when 'use_render_function' then bt.use_render_function = v
|
115
115
|
when 'use_render_function_for_layout' then bt.use_render_function_for_layout = v
|
116
|
+
when 'use_js_for_modal' then bt.use_js_for_modal = v
|
116
117
|
when 'allow_child_blocks' then bt.allow_child_blocks = v
|
117
118
|
when 'default_child_block_type_id' then bt.default_child_block_type_id = v
|
118
119
|
when 'name' then bt.name = v
|
@@ -150,6 +151,25 @@ module Caboose
|
|
150
151
|
end
|
151
152
|
|
152
153
|
# @route_priority 1
|
154
|
+
# @route GET /admin/block-types/new-options
|
155
|
+
def admin_options_for_new_block
|
156
|
+
return unless user_is_allowed('blocktypes', 'edit')
|
157
|
+
#cats = BlockTypeCategory.where("parent_id is not null and name != ?", 'Layouts').all.collect{ |cat| {
|
158
|
+
# :block_type_category => cat,
|
159
|
+
# :block_types => Caboose::BlockType.includes(:block_type_site_memberships).where(:parent_id => nil, :block_type_category_id => cat.id).where("block_type_site_memberships.site_id = ?", @site.id).reorder(:description).all
|
160
|
+
#}}
|
161
|
+
|
162
|
+
cats = BlockTypeCategory.where("name != ?", 'Layouts').all.collect{ |cat| {
|
163
|
+
:block_type_category => cat,
|
164
|
+
:block_types => Caboose::BlockType.includes(:block_type_site_memberships)
|
165
|
+
.where(:parent_id => nil, :block_type_category_id => cat.id)
|
166
|
+
.where("block_type_site_memberships.site_id = ?", @site.id)
|
167
|
+
.reorder(:description).all
|
168
|
+
}}
|
169
|
+
render :json => cats
|
170
|
+
end
|
171
|
+
|
172
|
+
# @route_priority 2
|
153
173
|
# @route GET /admin/block-types/:field-options
|
154
174
|
# @route GET /admin/block-types/options
|
155
175
|
# @route GET /admin/block-types/:id/options
|