caboose-cms 0.8.52 → 0.8.53
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/assets_controller.js +28 -12
- data/app/assets/javascripts/caboose/block_modal_controllers/richtext_modal_controller.js +4 -4
- data/app/assets/javascripts/caboose/modal_controller.js +8 -5
- data/app/controllers/caboose/assets_controller.rb +30 -14
- data/app/models/caboose/asset_manifest.rb +20 -0
- data/app/views/caboose/assets/admin_ace.html.erb +76 -0
- data/app/views/caboose/assets/admin_index.html.erb +4 -1
- data/lib/caboose/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d6a292c4ac56159808f11b271e2bc5073831023
|
4
|
+
data.tar.gz: c355716895d3d3a83ca03bc785c9e6282bad97b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb48e2823390fc25b92f46793fc8c547c434e9cb309724f523abd08d58f1a7ccc58ec07a496c8a35b873810eaec31e760b3e3ac1c336cc600088e623b89a1c7e
|
7
|
+
data.tar.gz: 5403811fd11bd1a05ce3d300fcd27ef97dfca99b0f7c84bc37d556e75cc394f2dbc2dddbef9cd88f0ec80406371d2efeb555d16cd2745361123f1d258ca1532b
|
@@ -105,24 +105,40 @@ var AssetsController = Class.extend({
|
|
105
105
|
var h = $(window).outerHeight() - 200;
|
106
106
|
$('#editor').empty()
|
107
107
|
.append($('<p/>')
|
108
|
-
.append($('<input/>').attr('type', 'button').val('Save' ).click(function(e) { that.save_file();
|
108
|
+
.append($('<input/>').attr('type', 'button').val('Save' ).data('path', path).click(function(e) { that.save_file($(this).data('path')); })).append(' ')
|
109
109
|
.append($('<input/>').attr('type', 'button').val('Cancel' ).click(function(e) { $('#editor').empty(); }))
|
110
110
|
)
|
111
|
-
.append($('<
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
)
|
111
|
+
.append($('<div/>').attr('id', 'the_editor').append(str));
|
112
|
+
//.append($('<textarea/>').attr('id', 'the_editor')
|
113
|
+
// .css('width', '' + w + 'px')
|
114
|
+
// .css('height', '' + h + 'px')
|
115
|
+
// .append(str)
|
116
|
+
//);
|
117
|
+
|
118
|
+
//var editor = ace.edit("the_editor");
|
119
|
+
//editor.setTheme("ace/theme/monokai");
|
120
|
+
//editor.getSession().setMode("ace/mode/javascript");
|
121
|
+
},
|
122
|
+
|
123
|
+
save_file: function(path)
|
124
|
+
{
|
125
|
+
$('#editor').html("<p class='note error'>Saving file...</p>");
|
126
|
+
$.ajax({
|
127
|
+
url: '/admin/assets' + path,
|
128
|
+
type: 'put',
|
129
|
+
data: {
|
130
|
+
path: path,
|
131
|
+
value: $('#the_editor').val()
|
132
|
+
},
|
133
|
+
success: function(resp) {
|
134
|
+
if (resp.error ) $('#editor').html("<p class='note error'>" + resp.error + "</p>");
|
135
|
+
if (resp.success) $('#editor').html("<p class='note success'>The file was saved successfully.</p>");
|
136
|
+
}
|
137
|
+
});
|
116
138
|
}
|
117
139
|
|
118
140
|
});
|
119
141
|
|
120
|
-
function sort_by_name(a, b){
|
121
|
-
var aName = a.name.toLowerCase();
|
122
|
-
var bName = b.name.toLowerCase();
|
123
|
-
return ((aName < bName) ? -1 : ((aName > bName) ? 1 : 0));
|
124
|
-
}
|
125
|
-
|
126
142
|
function sorted_hash(h)
|
127
143
|
{
|
128
144
|
var keys = [];
|
@@ -4,6 +4,7 @@ var RichtextModalController = DefaultBlockModalController.extend({
|
|
4
4
|
tinymce_initialized: false,
|
5
5
|
modal_width: 820,
|
6
6
|
modal_height: 500,
|
7
|
+
trapFocus: false,
|
7
8
|
|
8
9
|
assets_to_include: function()
|
9
10
|
{
|
@@ -83,10 +84,9 @@ var RichtextModalController = DefaultBlockModalController.extend({
|
|
83
84
|
setup: function(editor) {
|
84
85
|
var control = ModelBinder.tinymce_control(editor.id);
|
85
86
|
editor.on('keyup', function(e) { control.tinymce_change(editor); });
|
86
|
-
}
|
87
|
+
}
|
87
88
|
});
|
88
89
|
that.parent_controller.tinymce_initialized = true;
|
89
|
-
}
|
90
|
-
}
|
91
|
-
|
90
|
+
}
|
91
|
+
}
|
92
92
|
});
|
@@ -5,15 +5,15 @@ var ModalController = Class.extend({
|
|
5
5
|
modal_height: false,
|
6
6
|
modal_element: false,
|
7
7
|
parent_controller: false,
|
8
|
-
|
8
|
+
|
9
9
|
modal: function(el, width, height, callback)
|
10
10
|
{
|
11
11
|
var that = this;
|
12
12
|
if (!width) width = that.modal_width ? that.modal_width : 400;
|
13
13
|
if (!height) height = that.modal_height ? that.modal_height : $(el).outerHeight(true);
|
14
14
|
that.modal_element = el;
|
15
|
-
el.attr('id', 'the_modal').addClass('modal').css('width', '' + width + 'px');
|
16
|
-
|
15
|
+
el.attr('id', 'the_modal').addClass('modal').css('width', '' + width + 'px');
|
16
|
+
var options = {
|
17
17
|
html: el,
|
18
18
|
initialWidth: width,
|
19
19
|
//initialHeight: height,
|
@@ -27,8 +27,11 @@ var ModalController = Class.extend({
|
|
27
27
|
for (var i in arr) $('#cbox' + arr[i]).css('background-color', '#fff !important');
|
28
28
|
$("#cboxClose").hide();
|
29
29
|
if (callback) callback();
|
30
|
-
}
|
31
|
-
}
|
30
|
+
}
|
31
|
+
};
|
32
|
+
if (that.trapFocus === false)
|
33
|
+
options['trapFocus'] = false;
|
34
|
+
$.colorbox(options);
|
32
35
|
},
|
33
36
|
|
34
37
|
last_size: 0,
|
@@ -1,6 +1,11 @@
|
|
1
1
|
module Caboose
|
2
2
|
class AssetsController < Caboose::ApplicationController
|
3
3
|
layout 'caboose/admin'
|
4
|
+
|
5
|
+
# @route GET /admin/assets/ace
|
6
|
+
def admin_ace
|
7
|
+
return if !user_is_allowed('assets', 'edit')
|
8
|
+
end
|
4
9
|
|
5
10
|
# @route GET /admin/assets
|
6
11
|
def admin_index
|
@@ -44,20 +49,31 @@ module Caboose
|
|
44
49
|
h[path[i]] = i == (path.count - 1) ? true : {} if h[path[i]].nil?
|
45
50
|
self.verify_path_exists(path, h[path[i]], i+1)
|
46
51
|
end
|
47
|
-
|
48
|
-
#
|
49
|
-
#
|
50
|
-
#
|
51
|
-
#
|
52
|
-
#
|
53
|
-
#
|
54
|
-
#
|
55
|
-
#
|
56
|
-
#
|
57
|
-
#
|
58
|
-
#
|
59
|
-
#
|
60
|
-
#
|
52
|
+
|
53
|
+
# @route PUT /admin/assets
|
54
|
+
#def admin_update
|
55
|
+
# return if !user_is_allowed('assets', 'edit')
|
56
|
+
#
|
57
|
+
# resp = Caboose::StdClass.new
|
58
|
+
# path = params[:path]
|
59
|
+
# value = parasm[:value]
|
60
|
+
#
|
61
|
+
#
|
62
|
+
# config = YAML.load(File.read(Rails.root.join('config', 'aws.yml')))[Rails.env]
|
63
|
+
# AWS.config({ :access_key_id => config['access_key_id'], :secret_access_key => config['secret_access_key'] })
|
64
|
+
# bucket = AWS::S3::Bucket.new(config['bucket'])
|
65
|
+
# obj = bucket.objects[path]
|
66
|
+
#
|
67
|
+
# if obj.nil?
|
68
|
+
# resp.error = "Can't find file."
|
69
|
+
# #elsif !obj.write(value)
|
70
|
+
# # resp.error = "Can't write to file."
|
71
|
+
# else
|
72
|
+
# resp.success = true
|
73
|
+
# end
|
74
|
+
#
|
75
|
+
# render :json => resp
|
76
|
+
#end
|
61
77
|
|
62
78
|
end
|
63
79
|
end
|
@@ -2,6 +2,26 @@ module Caboose
|
|
2
2
|
class AssetManifest < ActiveRecord::Base
|
3
3
|
self.table_name = "asset_manifests"
|
4
4
|
attr_accessible :id, :name
|
5
|
+
|
6
|
+
#def save_asset(path, value)
|
7
|
+
# resp = StdClass.new
|
8
|
+
#
|
9
|
+
# config = YAML.load(File.read(Rails.root.join('config', 'aws.yml')))[Rails.env]
|
10
|
+
# AWS.config({ :access_key_id => config['access_key_id'], :secret_access_key => config['secret_access_key'] })
|
11
|
+
# bucket = AWS::S3::Bucket.new(config['bucket'])
|
12
|
+
# obj = bucket.objects[path]
|
13
|
+
#
|
14
|
+
# return { :error => "Can't find file." } if obj.nil?
|
15
|
+
# return { :error => "Can't write to file." } if !obj.write(value)
|
16
|
+
#
|
17
|
+
# # Compile the new file
|
18
|
+
# dest = "#{Rails.root}/vendor/assets/javascripts/compiled/"
|
19
|
+
# filename = path.split('/').pop
|
20
|
+
# ext = filename.split('.').pop
|
21
|
+
# File.write(dest + js_asset, Uglifier.compile(Rails.application.assets.find_asset(js_asset).to_s))
|
22
|
+
#
|
23
|
+
#end
|
24
|
+
|
5
25
|
|
6
26
|
end
|
7
27
|
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
<div id='crumbtrail'>
|
2
|
+
<a href='/admin'>Admin</a> >
|
3
|
+
Assets
|
4
|
+
</div>
|
5
|
+
|
6
|
+
<div id='editor'>
|
7
|
+
var AssetsController = Class.extend({
|
8
|
+
|
9
|
+
manifest: false,
|
10
|
+
editable_extensions: ['css', 'js', 'scss'],
|
11
|
+
|
12
|
+
init: function(params)
|
13
|
+
{
|
14
|
+
var that = this;
|
15
|
+
for (var i in params)
|
16
|
+
that[i] = params[i];
|
17
|
+
that.refresh_manifest(function() { that.print(); });
|
18
|
+
|
19
|
+
var h = $(window).outerHeight() - 52;
|
20
|
+
$('#manifest').css('height', '' + h + 'px').css('max-height', '' + h + 'px');
|
21
|
+
},
|
22
|
+
|
23
|
+
refresh_manifest: function(after)
|
24
|
+
{
|
25
|
+
var that = this;
|
26
|
+
$.ajax({
|
27
|
+
url: '/admin/assets/manifest',
|
28
|
+
type: 'get',
|
29
|
+
success: function(resp) {
|
30
|
+
that.manifest = resp;
|
31
|
+
if (after) after();
|
32
|
+
}
|
33
|
+
});
|
34
|
+
},
|
35
|
+
|
36
|
+
print: function()
|
37
|
+
{
|
38
|
+
var that = this;
|
39
|
+
that.print_manifest();
|
40
|
+
},
|
41
|
+
|
42
|
+
print_manifest: function()
|
43
|
+
{
|
44
|
+
var that = this;
|
45
|
+
var ul = $('<ul/>');
|
46
|
+
$.each(sorted_hash(that.manifest), function(name, h) {
|
47
|
+
ul.append(that.print_manifest_helper(name, h, ''));
|
48
|
+
});
|
49
|
+
$('#manifest').empty().append(ul);
|
50
|
+
},
|
51
|
+
});
|
52
|
+
|
53
|
+
</div>
|
54
|
+
|
55
|
+
<% content_for :caboose_js do %>
|
56
|
+
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.5/ace.js"></script>
|
57
|
+
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.5/theme-monokai.js"></script>
|
58
|
+
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.5/mode-javascript.js"></script>
|
59
|
+
<script>
|
60
|
+
var editor = ace.edit("editor");
|
61
|
+
editor.setTheme("ace/theme/monokai");
|
62
|
+
editor.getSession().setMode("ace/mode/javascript");
|
63
|
+
</script>
|
64
|
+
<% end %>
|
65
|
+
|
66
|
+
<% content_for :caboose_css do %>
|
67
|
+
<style type="text/css" media="screen">
|
68
|
+
#editor {
|
69
|
+
position: absolute;
|
70
|
+
top: 0;
|
71
|
+
right: 0;
|
72
|
+
bottom: 0;
|
73
|
+
left: 0;
|
74
|
+
}
|
75
|
+
</style>
|
76
|
+
<% end %>
|
@@ -3,6 +3,8 @@
|
|
3
3
|
Assets
|
4
4
|
</div>
|
5
5
|
|
6
|
+
<p><%= raw asset_path('test.gif') %></p>
|
7
|
+
|
6
8
|
<div id='manifest'></div>
|
7
9
|
<div id='editor'></div>
|
8
10
|
|
@@ -10,12 +12,13 @@
|
|
10
12
|
<%= javascript_include_tag 'caboose/class' %>
|
11
13
|
<%= javascript_include_tag 'caboose/model/all' %>
|
12
14
|
<%= javascript_include_tag 'caboose/assets_controller' %>
|
15
|
+
<script type='text/javascript' src="/assets/ace/ace.js"></script>
|
13
16
|
<script type='text/javascript'>
|
14
17
|
|
15
18
|
var controller = false;
|
16
19
|
$(document).ready(function() {
|
17
20
|
controller = new AssetsController({
|
18
|
-
assets_path: <%= raw Caboose.json(@assets_path) %>,
|
21
|
+
assets_path: <%= raw Caboose.json(@assets_path) %>,
|
19
22
|
authenticity_token: "<%= raw form_authenticity_token %>"
|
20
23
|
});
|
21
24
|
});
|
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.8.
|
4
|
+
version: 0.8.53
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Barry
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pg
|
@@ -945,6 +945,7 @@ files:
|
|
945
945
|
- app/views/caboose/admin/index.html.erb
|
946
946
|
- app/views/caboose/application/show.html.erb
|
947
947
|
- app/views/caboose/application/under_construction.html.erb
|
948
|
+
- app/views/caboose/assets/admin_ace.html.erb
|
948
949
|
- app/views/caboose/assets/admin_index.html.erb
|
949
950
|
- app/views/caboose/block_type_sources/admin_edit.html.erb
|
950
951
|
- app/views/caboose/block_type_sources/admin_index.html.erb
|