caboose-cms 0.2.62 → 0.2.64
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 +8 -8
- data/app/assets/javascripts/caboose/model/bound_richtext.js +11 -1
- data/app/assets/javascripts/caboose/model/bound_select.js +1 -1
- data/app/assets/stylesheets/caboose/tinymce.css +4 -0
- data/app/controllers/caboose/pages_controller.rb +11 -17
- data/app/models/caboose/page_bar_generator.rb +26 -17
- data/app/models/caboose/pager.rb +1 -1
- data/app/views/caboose/pages/_admin_header.html.erb +1 -3
- data/app/views/caboose/pages/admin_delete.html.erb +30 -0
- data/app/views/caboose/pages/admin_sitemap.html.erb +4 -4
- data/lib/caboose/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MzgwMDA5N2FjZjllMDg4YTU3NjNkYjQ0NGZhNTI3MmRlNmU2MGZhNQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MTE0OWFlNmQwMGRkM2FkZmYxODNlYzRmZDFhOWNjYzY0MWViMDViZQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
Y2I2NzcwM2UzOWQ3OWUyZTNhZGFkY2ViYmNkYmQwNWI3ZGIyZGRlYjllZGU1
|
10
|
+
OTc2ZjBlMzg0MGE4MzUzZDE1ZGYwMDZjYTAzZTRhODkzM2U5NjNkNDc1Yjg1
|
11
|
+
NTUwODNiNjU1OGZiNjFjNzY1ZmQ4Njg3ODBlZDhmMGZlNjA5OTM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NjY2NzQ2Y2EwYjMzMDBlOWQyZDNlMjcyY2JlODY1MjBlNWVhZTMzYjVkNGFj
|
14
|
+
ODljNjlkNjNkOWM3ZDNjZjk2NzczMjJhNTA4ODMzNDBlZDUyYTJhOTY5OWMz
|
15
|
+
YmExNjcxMTBiYzdjZDEwOGUyNjVlMWRiNThkYmNlMWFkNDY4OWQ=
|
@@ -39,7 +39,15 @@ BoundRichText = BoundControl.extend({
|
|
39
39
|
|
40
40
|
setTimeout(function() {
|
41
41
|
var ed = tinymce.EditorManager.get(this2.el);
|
42
|
-
ed.on('blur', function(e) { this2.save(); });
|
42
|
+
ed.on('blur', function(e) { this2.save(); });
|
43
|
+
ed.on('keyup', function(e) {
|
44
|
+
tinymce.triggerSave();
|
45
|
+
if (e.keyCode == 27) this2.cancel(); // Escape
|
46
|
+
if ($('#'+this2.el).val() != this2.attribute.value_clean)
|
47
|
+
ed.getBody().style.backgroundColor = "#fff799";
|
48
|
+
else
|
49
|
+
ed.getBody().style.backgroundColor = "#fff";
|
50
|
+
});
|
43
51
|
}, 1500);
|
44
52
|
},
|
45
53
|
|
@@ -97,6 +105,8 @@ BoundRichText = BoundControl.extend({
|
|
97
105
|
this2.show_check(500);
|
98
106
|
$('#'+this2.el).val(this2.attribute.value);
|
99
107
|
$('#'+this2.el).removeClass('dirty');
|
108
|
+
var ed = tinymce.EditorManager.get(this2.el);
|
109
|
+
ed.getBody().style.backgroundColor = "#fff";
|
100
110
|
|
101
111
|
if (this2.binder.success)
|
102
112
|
this2.binder.success(this2);
|
@@ -22,7 +22,7 @@ BoundSelect = BoundControl.extend({
|
|
22
22
|
.css('position', 'relative')
|
23
23
|
);
|
24
24
|
$('#'+this.el+'_container').empty();
|
25
|
-
if (this.attribute.
|
25
|
+
if (this.attribute.fixed_placeholder)
|
26
26
|
{
|
27
27
|
$('#'+this.el+'_container').append($('<div/>')
|
28
28
|
.attr('id', this.placeholder)
|
@@ -309,23 +309,15 @@ module Caboose
|
|
309
309
|
render json: resp
|
310
310
|
end
|
311
311
|
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
sitemap_helper2(top_page, options)
|
318
|
-
@options = options
|
319
|
-
end
|
320
|
-
|
321
|
-
def sitemap_helper2(page, options, prefix = '')
|
322
|
-
options << { 'value' => page.id, 'text' => prefix + page.title }
|
323
|
-
page.children.each do |kid|
|
324
|
-
sitemap_helper(kid, options, prefix + ' - ')
|
325
|
-
end
|
312
|
+
# GET /admin/pages/1/sitemap
|
313
|
+
def admin_sitemap
|
314
|
+
return unless user_is_allowed('pages', 'delete')
|
315
|
+
@page = Page.find(params[:id])
|
316
|
+
render :layout => 'caboose/admin'
|
326
317
|
end
|
327
318
|
|
328
|
-
|
319
|
+
# GET /admin/pages/sitemap-options
|
320
|
+
def admin_sitemap_options
|
329
321
|
parent_id = params[:parent_id]
|
330
322
|
top_page = Page.index_page
|
331
323
|
p = !parent_id.nil? ? Page.find(parent_id) : top_page
|
@@ -342,7 +334,8 @@ module Caboose
|
|
342
334
|
end
|
343
335
|
end
|
344
336
|
|
345
|
-
|
337
|
+
# GET /admin/pages/robots-options
|
338
|
+
def admin_robots_options
|
346
339
|
options = [
|
347
340
|
{ 'value' => 'index' , 'text' => 'index' },
|
348
341
|
{ 'value' => 'noindex' , 'text' => 'noindex' },
|
@@ -355,7 +348,8 @@ module Caboose
|
|
355
348
|
render json: options
|
356
349
|
end
|
357
350
|
|
358
|
-
|
351
|
+
# GET /admin/pages/format-options
|
352
|
+
def admin_content_format_options
|
359
353
|
options = [
|
360
354
|
{ 'value' => 'html', 'text' => 'html' },
|
361
355
|
{ 'value' => 'text', 'text' => 'text' },
|
@@ -34,7 +34,7 @@ module Caboose
|
|
34
34
|
options.each { |key, val| @options[key] = val }
|
35
35
|
@params.each { |key, val| @params[key] = post_get[key].nil? ? val : post_get[key] }
|
36
36
|
@options.each { |key, val| @options[key] = post_get[key].nil? ? val : post_get[key] }
|
37
|
-
fix_desc
|
37
|
+
fix_desc
|
38
38
|
@options['item_count'] = @options['model'].constantize.where(where).count
|
39
39
|
end
|
40
40
|
|
@@ -149,35 +149,44 @@ module Caboose
|
|
149
149
|
|
150
150
|
def where
|
151
151
|
sql = []
|
152
|
-
values = []
|
152
|
+
values = []
|
153
153
|
@params.each do |k,v|
|
154
154
|
next if v.nil? || v.length == 0
|
155
|
+
|
156
|
+
sql2 = ""
|
155
157
|
if k.ends_with?('_gte')
|
156
|
-
|
158
|
+
sql2 = "#{k[0..-5]} >= ?"
|
157
159
|
elsif k.ends_with?('_gt')
|
158
|
-
|
160
|
+
sql2 = "#{k[0..-4]} > ?"
|
159
161
|
elsif k.ends_with?('_lte')
|
160
|
-
|
162
|
+
sql2 = "#{k[0..-5]} <= ?"
|
161
163
|
elsif k.ends_with?('_lt')
|
162
|
-
|
164
|
+
sql2 = "#{k[0..-4]} < ?"
|
163
165
|
elsif k.ends_with?('_bw')
|
164
|
-
|
165
|
-
v = "#{v}%".upcase
|
166
|
+
sql2 = "upper(#{k[0..-4]}) like ?"
|
167
|
+
v = v.kind_of?(Array) ? v.collect{ |v2| "#{v2}%".upcase } : "#{v}%".upcase
|
166
168
|
elsif k.ends_with?('_ew')
|
167
|
-
|
168
|
-
v = "%#{v}".upcase
|
169
|
+
sql2 = "upper(#{k[0..-4]}) like ?"
|
170
|
+
v = v.kind_of?(Array) ? v.collect{ |v2| "%#{v2}".upcase } : "%#{v}".upcase
|
169
171
|
elsif k.ends_with?('_like')
|
170
|
-
|
171
|
-
v = "%#{v}%".upcase
|
172
|
-
else
|
173
|
-
|
172
|
+
sql2 = "upper(#{k[0..-6]}) like ?"
|
173
|
+
v = v.kind_of?(Array) ? v.collect{ |v2| "%#{v2}%".upcase } : "%#{v}%".upcase
|
174
|
+
else
|
175
|
+
sql2 = "#{k} = ?"
|
174
176
|
end
|
175
|
-
|
177
|
+
|
178
|
+
if v.kind_of?(Array)
|
179
|
+
sql2 = "(" + v.collect{ |v2| "#{sql2}" }.join(" or ") + ")"
|
180
|
+
v.each { |v2| values << v2 }
|
181
|
+
else
|
182
|
+
values << v
|
183
|
+
end
|
184
|
+
sql << sql2
|
176
185
|
end
|
177
186
|
sql_str = sql.join(' and ')
|
178
187
|
sql = [sql_str]
|
179
|
-
values.each { |v| sql << v }
|
180
|
-
return sql
|
188
|
+
values.each { |v| sql << v }
|
189
|
+
return sql
|
181
190
|
end
|
182
191
|
|
183
192
|
def limit
|
data/app/models/caboose/pager.rb
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
<% content_for :caboose_css do %>
|
2
|
-
<%= stylesheet_link_tag "caboose/pages" %>
|
3
2
|
<% end %>
|
4
3
|
<% content_for :caboose_js do %>
|
5
4
|
<%= javascript_include_tag "caboose/model/all" %>
|
6
|
-
<%= javascript_include_tag "caboose/pages" %>
|
7
5
|
<% end %>
|
8
6
|
|
9
7
|
<h1>Edit Page</h1>
|
@@ -16,7 +14,7 @@ tabs = {
|
|
16
14
|
"/admin/pages/#{@page.id}/js" => 'Custom JS',
|
17
15
|
"/admin/pages/#{@page.id}/seo" => 'SEO',
|
18
16
|
"/admin/pages/#{@page.id}/sitemap" => 'Sitemap',
|
19
|
-
"/admin/pages/#{@page.id}/delete" => 'Delete
|
17
|
+
"/admin/pages/#{@page.id}/delete" => 'Delete Page'
|
20
18
|
}
|
21
19
|
|
22
20
|
%>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
|
2
|
+
<%= render :partial => 'caboose/pages/admin_header' %>
|
3
|
+
|
4
|
+
<div id='message'>
|
5
|
+
<p class='note warning'>Are you sure you want to delet the page? This can't be undone.<br /><br />
|
6
|
+
<input type='button' onclick='delete_page(<%= @page.id %>, true);' />
|
7
|
+
<input type='button' onclick="window.location='/admin/pages/<%= @page.id %>/edit';" />
|
8
|
+
</p>
|
9
|
+
</div>
|
10
|
+
|
11
|
+
<%= render :partial => 'caboose/pages/admin_footer' %>
|
12
|
+
<% content_for :caboose_js do %>
|
13
|
+
<%= javascript_include_tag "caboose/model/all" %>
|
14
|
+
<script type="text/javascript">
|
15
|
+
|
16
|
+
function delete_page(page_id, confirm)
|
17
|
+
{
|
18
|
+
$('#message').html("<p class='loading'>Deleting page...</p>");
|
19
|
+
$.ajax({
|
20
|
+
url: '/admin/pages/' + page_id + '/delete',
|
21
|
+
type: 'delete',
|
22
|
+
success: function(resp) {
|
23
|
+
if (resp.error) $('#message').html("<p class='note error'>" + resp.error + "</p>");
|
24
|
+
if (resp.redirect) window.location = resp.redirect
|
25
|
+
}
|
26
|
+
});
|
27
|
+
}
|
28
|
+
|
29
|
+
</script>
|
30
|
+
<% end %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
|
2
|
-
|
3
|
-
#content li.hidden a { color: #990000; }
|
4
|
-
</style>
|
2
|
+
<%= render :partial => 'caboose/pages/admin_header' %>
|
5
3
|
|
6
|
-
|
4
|
+
<p><%= raw pages_list(@page) %></p>
|
5
|
+
|
6
|
+
<%= render :partial => 'caboose/pages/admin_footer' %>
|
data/lib/caboose/version.rb
CHANGED
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.2.
|
4
|
+
version: 0.2.64
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Barry
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -217,6 +217,7 @@ files:
|
|
217
217
|
- app/views/caboose/login/index.html.erb
|
218
218
|
- app/views/caboose/pages/_admin_footer.html.erb
|
219
219
|
- app/views/caboose/pages/_admin_header.html.erb
|
220
|
+
- app/views/caboose/pages/admin_delete.html.erb
|
220
221
|
- app/views/caboose/pages/admin_edit_content.html.erb
|
221
222
|
- app/views/caboose/pages/admin_edit_css.html.erb
|
222
223
|
- app/views/caboose/pages/admin_edit_general.html.erb
|