caboose-cms 0.9.175 → 0.9.176

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.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/caboose/block_types_controller.rb +97 -4
  3. data/app/controllers/caboose/sites_controller.rb +19 -0
  4. data/app/controllers/caboose/theme_files_controller.rb +110 -0
  5. data/app/controllers/caboose/themes_controller.rb +27 -1
  6. data/app/models/caboose/block.rb +6 -2
  7. data/app/models/caboose/block_type.rb +9 -3
  8. data/app/models/caboose/block_type_site_membership.rb +1 -1
  9. data/app/models/caboose/core_plugin.rb +2 -1
  10. data/app/models/caboose/schema.rb +18 -3
  11. data/app/models/caboose/site.rb +10 -1
  12. data/app/models/caboose/theme.rb +2 -1
  13. data/app/models/caboose/theme_file.rb +1 -1
  14. data/app/models/caboose/user.rb +2 -1
  15. data/app/views/caboose/block_types/admin_edit.html.erb +11 -4
  16. data/app/views/caboose/block_types/admin_edit_btsm_css.html.erb +147 -0
  17. data/app/views/caboose/block_types/admin_edit_btsm_html.html.erb +119 -0
  18. data/app/views/caboose/block_types/admin_edit_render_function.html.erb +119 -0
  19. data/app/views/caboose/block_types/admin_edit_sass.html.erb +118 -0
  20. data/app/views/caboose/block_types/admin_error_log.html.erb +9 -0
  21. data/app/views/caboose/block_types/admin_index.html.erb +3 -1
  22. data/app/views/caboose/blocks/_render_function.html.erb +5 -1
  23. data/app/views/caboose/events/admin_edit.html.erb +1 -1
  24. data/app/views/caboose/pages/admin_edit_css.html.erb +117 -13
  25. data/app/views/caboose/pages/admin_edit_js.html.erb +114 -14
  26. data/app/views/caboose/sites/_admin_header.html.erb +6 -1
  27. data/app/views/caboose/sites/admin_edit_block_types.html.erb +35 -8
  28. data/app/views/caboose/sites/admin_edit_contact.html.erb +41 -0
  29. data/app/views/caboose/sites/admin_edit_css.html.erb +106 -20
  30. data/app/views/caboose/sites/admin_edit_js.html.erb +107 -20
  31. data/app/views/caboose/theme_files/admin_edit.html.erb +118 -0
  32. data/app/views/caboose/theme_files/admin_index.html.erb +44 -0
  33. data/app/views/caboose/themes/admin_edit.html.erb +6 -2
  34. data/app/views/caboose/themes/admin_sass.html.erb +240 -0
  35. data/lib/caboose/version.rb +1 -1
  36. metadata +12 -2
@@ -0,0 +1,44 @@
1
+ <%= raw @crumbtrail.print({
2
+ '/admin' => 'Admin',
3
+ '/admin/theme-files' => 'Theme Files'
4
+ }) %>
5
+
6
+ <h1>Theme Files</h1>
7
+
8
+
9
+ <div id='theme-files'></div>
10
+
11
+ <br /><br />
12
+
13
+ <% content_for :caboose_js do %>
14
+ <%= javascript_include_tag 'caboose/model/all' %>
15
+ <script type='text/javascript'>
16
+
17
+ $(document).ready(function() {
18
+ var that = this;
19
+ var table = new IndexTable({
20
+ form_authenticity_token: '<%= form_authenticity_token %>',
21
+ container: 'theme-files',
22
+ base_url: '/admin/theme-files',
23
+ allow_bulk_edit: false,
24
+ allow_bulk_delete: true,
25
+ allow_duplicate: false,
26
+ allow_advanced_edit: true,
27
+ allow_bulk_import: false,
28
+ allow_export: false,
29
+ fields: [
30
+ { show: true , editable: true, bulk_edit: false, name: 'nice_name' , nice_name: 'Nice Name' , sort: 'nice_name' , type: 'text' , value: function(r) { return r.nice_name }, width: 200 },
31
+ { show: true , editable: true, bulk_edit: false, name: 'filename' , nice_name: 'File Path' , sort: 'filename' , type: 'text' , value: function(r) { return r.filename }, width: 200 },
32
+ { show: true , editable: true, bulk_edit: false, name: 'default_included' , nice_name: 'Included by Default' , sort: 'default_included' , type: 'checkbox' , value: function(r) { return r.default_included }, text: function(r) { return r.default_included ? 'Yes' : 'No' }, width: 200 }
33
+ ],
34
+ new_model_text: 'New Theme File',
35
+ new_model_fields: [
36
+ { name: 'nice_name', nice_name: 'Nice Name', type: 'text', width: 400 }
37
+ ],
38
+ search_fields: [
39
+ { name: 'nice_name_like' , nice_name: 'Nice Name' , type: 'text' }
40
+ ]
41
+ });
42
+ });
43
+ </script>
44
+ <% end %>
@@ -11,7 +11,11 @@ position = header.child('position') if header
11
11
  <div class="unit1of2 left">
12
12
  <section>
13
13
  <h5>Compile</h5>
14
- <a href="#" id="compile-btn" class="caboose-btn">Compile Theme</a>
14
+ <div class="buttons">
15
+ <a style="margin-right:5px;" href="#" id="compile-btn" class="caboose-btn">Compile Theme</a>
16
+ <a href="/admin/theme/sass" class="caboose-btn">Edit Custom SCSS</a>
17
+ </div>
18
+
15
19
  <div style="margin-top:20px;" id='message'></div>
16
20
  </section>
17
21
  <section>
@@ -198,7 +202,7 @@ $("#compile-btn").click(function(e) {
198
202
  e.preventDefault();
199
203
  $.ajax({
200
204
  url: '/admin/themes/<%= @theme.id %>/compile',
201
- type: 'get',
205
+ type: 'put',
202
206
  success: function(resp) {
203
207
  if (resp.error) $('#message').html("<p class='note error'>" + resp.error + "</p>").fadeIn();
204
208
  if (resp.success && resp.message) {
@@ -0,0 +1,240 @@
1
+ <h1>Edit Custom SCSS</h1>
2
+
3
+ <div class="editor-wrapper">
4
+ <aside>
5
+ <h5>Config</h5>
6
+ <span>$color-main: <%= @theme.color_main %></span>
7
+ <span>$color-alt: <%= @theme.color_alt %></span>
8
+ <span>$color-light: <%= @theme.color_light %></span>
9
+ <span>$color-dark: <%= @theme.color_dark %></span>
10
+ <span>$max-width: <%= @theme.max_width %></span>
11
+ <span>$body-bg-color: <%= @theme.body_bg_color %></span>
12
+ <span>$break-small: 550px</span>
13
+ <span>$break-medium: 800px</span>
14
+ <span>$break-large: <%= @theme.max_width %></span>
15
+ <span>$font-size: <%= @theme.font_size %></span>
16
+ <span>$font-main: body-font</span>
17
+ <span>$font-alt: heading-font</span>
18
+ <span>$font-btn: button-font</span>
19
+ <span>$heading-font: heading-font</span>
20
+ <span>$header-height: <%= @theme.header_height %></span>
21
+ <span>$header-bg-color: <%= @theme.header_bg_color %></span>
22
+ <span>$header-font-color: <%= @theme.header_font_color %></span>
23
+ <span>$dropdown-color: <%= @theme.dropdown_color %></span>
24
+ <span>$mobile-bg-color: <%= @theme.mobile_menu_bg_color %></span>
25
+ <span>$sidebar-font-color: <%= @theme.mobile_menu_font_color %></span>
26
+ <span>$sidebar-border-color: <%= @theme.mobile_menu_border_color %></span>
27
+ <span>$sidebar-icon-color: <%= @theme.mobile_menu_icon_color %></span>
28
+ <span>$sidebar-icon-top: <%= @theme.mobile_menu_icon_top %></span>
29
+ <span>$footer-height: <%= @theme.footer_height %></span>
30
+ <span>$footer-bg-color: <%= @theme.footer_bg_color %></span>
31
+ <span>$footer-font-color: <%= @theme.footer_font_color %></span>
32
+ <span>$btn-border-radius: <%= @theme.btn_border_radius %></span>
33
+ <span>$btn-border-width: <%= @theme.btn_border_width %></span>
34
+ <span>$btn-border-color: <%= @theme.btn_border_color %></span>
35
+ <span>$btn-bg-color: $color-main</span>
36
+ <span>$btn-font-color: <%= @theme.btn_font_color %></span>
37
+ <span>$btn-font: button-font</span>
38
+ <span>$btn-font-size: <%= @theme.btn_font_size %></span>
39
+ <span>$btn-font-weight: <%= @theme.btn_font_weight %></span>
40
+ <span>$btn-font-case: <%= @theme.btn_font_case %></span>
41
+ <span>$btn-border-side: <%= @theme.btn_border_side %></span>
42
+ <span>$input-border-radius: <%= @theme.input_border_radius %></span>
43
+ <span>$input-bg-color: <%= @theme.input_bg_color %></span>
44
+ <span>$input-border-color: <%= @theme.input_border_color %></span>
45
+ <span>$input-border-width: <%= @theme.input_border_width %></span>
46
+ <span>$input-font: body-font</span>
47
+ <span>$input-font-color: <%= @theme.input_font_color %></span>
48
+ <span>$input-font-size: <%= @theme.input_font_size %></span>
49
+ <span>$input-padding: <%= @theme.input_padding %></span>
50
+ <span>$body_line_height: <%= @theme.body_line_height %></span>
51
+ <span>$body_font_color: <%= @theme.body_font_color %></span>
52
+ <span>$button_padding: <%= @theme.button_padding %></span>
53
+ <span>$button_line_height: <%= @theme.button_line_height %></span>
54
+ <span>$footer_padding: <%= @theme.footer_padding %></span>
55
+ <span>$footer_font_size: <%= @theme.footer_font_size %></span>
56
+ <span>$header_font_size: <%= @theme.header_font_size %></span>
57
+ <span>$note_padding: <%= @theme.note_padding %></span>
58
+ <span>$header_nav_spacing: <%= @theme.header_nav_spacing %></span>
59
+ <span>$logo_width: <%= @theme.logo_width %></span>
60
+ <span>$logo_height: <%= @theme.logo_height %></span>
61
+ <span>$logo_top_padding: <%= @theme.logo_top_padding %></span>
62
+ <span>$heading_line_height: <%= @theme.heading_line_height %></span>
63
+ <span>$mobile_menu_nav_padding: <%= @theme.mobile_menu_nav_padding %></span>
64
+ <span>$mobile_menu_font_size: <%= @theme.mobile_menu_font_size %></span>
65
+ <span>$banner_padding: <%= @theme.banner_padding %></span>
66
+ <span>$banner_overlay_color: <%= @theme.banner_overlay_color %></span>
67
+ <span>$banner_overlay_opacity: <%= @theme.banner_overlay_opacity %></span>
68
+ <span>$sidebar_width: <%= @theme.sidebar_width %></span>
69
+ <span>$sidebar_bg_color: <%= @theme.sidebar_bg_color %></span>
70
+ <span>$banner_font_size: <%= @theme.banner_font_size %></span>
71
+ <span>$footer_hover_color: <%= @theme.footer_hover_color %></span>
72
+ <span>$actual_footer_height: <%= @theme.actual_footer_height %></span>
73
+ <span>$actual_banner_height: <%= @theme.actual_banner_height %></span>
74
+ <span>$dropdown_nav_padding: <%= @theme.dropdown_nav_padding %></span>
75
+
76
+ </aside>
77
+ <div class="holder">
78
+ <div class="clearfix buttons">
79
+ <a href="/admin/theme" class="caboose-btn">Back</a>
80
+ <a href="#" onclick="save();return false;" class="caboose-btn green">Save</a>
81
+ <a href="#" onclick="compile();return false;" class="caboose-btn blue">Compile Theme</a>
82
+ <span id="modified">Modified</span>
83
+ <div id="message"></div>
84
+ <p id="tips">
85
+ <span>Command+S = Save</span>
86
+ <span>Command+E = Compile</span>
87
+ </p>
88
+ </div>
89
+ <div id="editor"><%= @theme.custom_sass %></div>
90
+ </div>
91
+
92
+ </div>
93
+
94
+ <% content_for :caboose_css do %>
95
+ <style>
96
+ p#tips {
97
+ display: inline-block;
98
+ float: right;
99
+ font-size: 13px;
100
+ color: gray;
101
+ margin: 0;
102
+ padding-top: 15px;
103
+ padding-right: 2px;
104
+ }
105
+ p#tips span {
106
+ display: inline-block;
107
+ margin-left: 12px;
108
+ }
109
+ span#modified {
110
+ font-size: 13px;
111
+ color: gray;
112
+ margin: 0 10px;
113
+ opacity: 0;
114
+ transition: opacity 100ms ease;
115
+ }
116
+ .buttons {
117
+ margin-bottom: 10px;
118
+ }
119
+ .buttons .caboose-btn {
120
+ margin-right: 5px;
121
+ }
122
+ .editor-wrapper {
123
+ display: -webkit-box;
124
+ display: -moz-box;
125
+ display: -ms-flexbox;
126
+ display: -webkit-flex;
127
+ display: flex;
128
+ padding-right: 30px;
129
+ }
130
+ aside {
131
+ -webkit-box-flex: 0 0 280px;
132
+ -moz-box-flex: 0 0 280px;
133
+ -webkit-flex: 0 0 280px;
134
+ -ms-flex: 0 0 280px;
135
+ flex: 0 0 280px;
136
+ padding-right: 15px;
137
+ }
138
+ aside h5 {
139
+ margin: 0 0 10px 0;
140
+ }
141
+ aside span {
142
+ display: block;
143
+ font-size: 12px;
144
+ margin-bottom: 3px;
145
+ font-family: monospace;
146
+ }
147
+ .holder {
148
+ -webkit-box-flex:1 1 80%;
149
+ -moz-box-flex: 1 1 80%;
150
+ -webkit-flex: 1 1 80%;
151
+ -ms-flex: 1 1 80%;
152
+ flex: 1 1 80%;
153
+ }
154
+ #editor {
155
+ height: 1160px;
156
+ width: 100%;
157
+ opacity: 0;
158
+ }
159
+ #editor.ace_editor {
160
+ opacity: 1;
161
+ }
162
+ #message {
163
+ display: inline-block;
164
+ }
165
+ #message p.note {
166
+ padding: 1px 15px 2px 15px;
167
+ font-size: 15px;
168
+ line-height: 30px;
169
+ border-radius: 5px;
170
+ }
171
+ #message p.note.loading {
172
+ padding-left: 40px;
173
+ }
174
+ </style>
175
+ <% end %>
176
+
177
+ <% content_for :caboose_js do %>
178
+ <%= javascript_include_tag 'https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.1/ace.js' %>
179
+ <script>
180
+ var editor = ace.edit("editor");
181
+ editor.setTheme("ace/theme/monokai");
182
+ editor.session.setMode("ace/mode/scss");
183
+ editor.session.setOptions({
184
+ tabSize: 2
185
+ });
186
+
187
+ editor.on("change", function() {
188
+ $("span#modified").css('opacity',1);
189
+ });
190
+
191
+ editor.commands.addCommand({
192
+ name: 'save',
193
+ bindKey: {win: "Ctrl-S", "mac": "Cmd-S"},
194
+ exec: function(editor) { save(); }
195
+ });
196
+
197
+ editor.commands.addCommand({
198
+ name: 'compile',
199
+ bindKey: {win: "Ctrl-E", "mac": "Cmd-E"},
200
+ exec: function(editor) { compile(); }
201
+ });
202
+
203
+ function compile() {
204
+ $('#message').html("<p class='note loading'>Compiling theme...</p>").fadeIn();
205
+ $.ajax({
206
+ url: '/admin/themes/<%= @theme.id %>/compile',
207
+ type: 'put',
208
+ data: {
209
+ code: editor.getValue()
210
+ },
211
+ success: function(resp) {
212
+ if (resp.error) $('#message').html("<p class='note error'>" + resp.error + "</p>").fadeIn();
213
+ if (resp.success && resp.message) {
214
+ $("span#modified").css('opacity',0);
215
+ $('#message').html("<p class='note success'>" + resp.message + "</p>").fadeIn().delay(2000).fadeOut();
216
+ }
217
+ }
218
+ });
219
+ }
220
+
221
+ function save() {
222
+ $('#message').html("<p class='note loading'>Saving code...</p>").fadeIn();
223
+ $.ajax({
224
+ url: '/admin/theme/sass',
225
+ type: 'put',
226
+ data: {
227
+ code: editor.getValue()
228
+ },
229
+ success: function(resp) {
230
+ if (resp.error) $('#message').html("<p class='note error'>" + resp.error + "</p>").fadeIn();
231
+ if (resp.success && resp.message) {
232
+ $("span#modified").css('opacity',0);
233
+ $('#message').html("<p class='note success'>" + resp.message + "</p>").fadeIn().delay(2000).fadeOut();
234
+ }
235
+ }
236
+ });
237
+ }
238
+
239
+ </script>
240
+ <% end %>
@@ -1,3 +1,3 @@
1
1
  module Caboose
2
- VERSION = '0.9.175'
2
+ VERSION = '0.9.176'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caboose-cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.175
4
+ version: 0.9.176
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Barry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-19 00:00:00.000000000 Z
11
+ date: 2018-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg
@@ -747,6 +747,7 @@ files:
747
747
  - app/controllers/caboose/station_controller.rb
748
748
  - app/controllers/caboose/store_controller.rb
749
749
  - app/controllers/caboose/subscriptions_controller.rb
750
+ - app/controllers/caboose/theme_files_controller.rb
750
751
  - app/controllers/caboose/themes_controller.rb
751
752
  - app/controllers/caboose/users_controller.rb
752
753
  - app/controllers/caboose/variant_children_controller.rb
@@ -904,7 +905,12 @@ files:
904
905
  - app/views/caboose/block_type_store/admin_details.html.erb
905
906
  - app/views/caboose/block_type_store/admin_index.html.erb
906
907
  - app/views/caboose/block_types/admin_edit.html.erb
908
+ - app/views/caboose/block_types/admin_edit_btsm_css.html.erb
909
+ - app/views/caboose/block_types/admin_edit_btsm_html.html.erb
907
910
  - app/views/caboose/block_types/admin_edit_icon.html.erb
911
+ - app/views/caboose/block_types/admin_edit_render_function.html.erb
912
+ - app/views/caboose/block_types/admin_edit_sass.html.erb
913
+ - app/views/caboose/block_types/admin_error_log.html.erb
908
914
  - app/views/caboose/block_types/admin_index.html.erb
909
915
  - app/views/caboose/block_types/admin_new.html.erb
910
916
  - app/views/caboose/block_types/admin_parse_form.html.erb
@@ -1155,6 +1161,7 @@ files:
1155
1161
  - app/views/caboose/sites/admin_delete_form.html.erb
1156
1162
  - app/views/caboose/sites/admin_edit.html.erb
1157
1163
  - app/views/caboose/sites/admin_edit_block_types.html.erb
1164
+ - app/views/caboose/sites/admin_edit_contact.html.erb
1158
1165
  - app/views/caboose/sites/admin_edit_css.html.erb
1159
1166
  - app/views/caboose/sites/admin_edit_js.html.erb
1160
1167
  - app/views/caboose/sites/admin_index.html.erb
@@ -1177,7 +1184,10 @@ files:
1177
1184
  - app/views/caboose/subscriptions/admin_edit.html.erb
1178
1185
  - app/views/caboose/subscriptions/admin_index.html.erb
1179
1186
  - app/views/caboose/subscriptions/admin_user_index.html.erb
1187
+ - app/views/caboose/theme_files/admin_edit.html.erb
1188
+ - app/views/caboose/theme_files/admin_index.html.erb
1180
1189
  - app/views/caboose/themes/admin_edit.html.erb
1190
+ - app/views/caboose/themes/admin_sass.html.erb
1181
1191
  - app/views/caboose/users/_admin_footer.html.erb
1182
1192
  - app/views/caboose/users/_admin_header.html.erb
1183
1193
  - app/views/caboose/users/admin_delete_form.html.erb