camaleon_cms 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of camaleon_cms might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/helpers/uploader_helper.rb +72 -13
- data/app/views/admin/plugins/_plugins_list.html.erb +2 -23
- data/config/initializers/fix_ssl.rb +9 -3
- data/config/initializers/sass.rb +42 -0
- data/lib/camaleon_cms/version.rb +1 -1
- data/lib/generators/cplugin_generator.rb +4 -2
- data/lib/generators/ctheme_generator.rb +4 -2
- 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: d108ac8f32bb33eae1fb694f6162c5cee33ff093
|
4
|
+
data.tar.gz: 599fa7428f1fe9b7fba9414a96e286573a3c2860
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6a7d641d8afce4af8bd65a3de03e860580e12d67bf83820aecc1cbad5b7cf7962d2d6fa07ef2d2b225f31e1aaf5123a3b228d27d87b4aed6b6a4a1689061ec12
|
7
|
+
data.tar.gz: 2a5762b637a1f4f7afd0e3e41f5be720125ebb979933cee3a4e676ddc24ad74e92f98fc060fa4757c52435cde034195c05e30cbc73eeb27221cb0b02b2b3a68b
|
@@ -37,7 +37,7 @@ module UploaderHelper
|
|
37
37
|
settings[:folder] = settings[:folder].to_s
|
38
38
|
if settings[:create_folder] && !File.directory?(settings[:folder])
|
39
39
|
FileUtils.mkdir_p(settings[:folder])
|
40
|
-
FileUtils.chmod(
|
40
|
+
FileUtils.chmod(0777, settings[:folder])
|
41
41
|
end
|
42
42
|
|
43
43
|
# folder validation
|
@@ -87,20 +87,22 @@ module UploaderHelper
|
|
87
87
|
|
88
88
|
# check for destroy the file in the future
|
89
89
|
if settings[:temporal_time] > 0
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
"name"=> File.basename(file_path),
|
95
|
-
"size"=> File.size(file_path),
|
96
|
-
"url"=> file_path_to_url(file_path),
|
97
|
-
"type"=> uploaded_io.content_type,
|
98
|
-
"deleteUrl"=> ""
|
99
|
-
}
|
100
|
-
else
|
101
|
-
Rails.logger.error " ******************** Camaleon: This version of rails doesn't support active job, please install a gem or manage your file destroy manually."
|
90
|
+
Thread.new do
|
91
|
+
sleep(settings[:temporal_time])
|
92
|
+
FileUtils.rm_rf(file_path) if File.exist?(file_path) && !File.directory?(file_path)
|
93
|
+
ActiveRecord::Base.connection.close
|
102
94
|
end
|
103
95
|
end
|
96
|
+
|
97
|
+
# returning data
|
98
|
+
{
|
99
|
+
"file" => file_path,
|
100
|
+
"name"=> File.basename(file_path),
|
101
|
+
"size"=> File.size(file_path),
|
102
|
+
"url"=> file_path_to_url(file_path),
|
103
|
+
"type"=> uploaded_io.content_type,
|
104
|
+
"deleteUrl"=> ""
|
105
|
+
}
|
104
106
|
end
|
105
107
|
|
106
108
|
# helper to find an available filename for file_path in that directory
|
@@ -148,4 +150,61 @@ module UploaderHelper
|
|
148
150
|
file.gsub(ext, "_crop#{ext}")
|
149
151
|
end
|
150
152
|
|
153
|
+
# resize and crop a file
|
154
|
+
# Params:
|
155
|
+
# file: (String) File path
|
156
|
+
# w: (Integer) width
|
157
|
+
# h: (Integer) height
|
158
|
+
# gravity: (Sym, default :north_east) Crop position: :north_west, :north, :north_east, :east, :south_east, :south, :south_west, :west, :center
|
159
|
+
# overwrite: (Boolean, default true) true for overwrite current image with resized resolutions, false: create other file called with prefix "crop_"
|
160
|
+
# Return: (String) file path where saved this cropped
|
161
|
+
def cama_resize_and_crop(file, w, h, settings = {})
|
162
|
+
settings = {gravity: :north_east, overwrite: true}.merge(settings)
|
163
|
+
img = MiniMagick::Image.open(file)
|
164
|
+
w_original, h_original = [img[:width].to_f, img[:height].to_f]
|
165
|
+
|
166
|
+
# check proportions
|
167
|
+
if w_original * h < h_original * w
|
168
|
+
op_resize = "#{w.to_i}x"
|
169
|
+
w_result = w
|
170
|
+
h_result = (h_original * w / w_original)
|
171
|
+
else
|
172
|
+
op_resize = "x#{h.to_i}"
|
173
|
+
w_result = (w_original * h / h_original)
|
174
|
+
h_result = h
|
175
|
+
end
|
176
|
+
|
177
|
+
w_offset, h_offset = cama_crop_offsets_by_gravity(settings[:gravity], [w_result, h_result], [ w, h])
|
178
|
+
img.combine_options do |i|
|
179
|
+
i.resize(op_resize)
|
180
|
+
i.gravity(settings[:gravity])
|
181
|
+
i.crop "#{w.to_i}x#{h.to_i}+#{w_offset}+#{h_offset}!"
|
182
|
+
end
|
183
|
+
|
184
|
+
img.write(file) if settings[:overwrite]
|
185
|
+
img.write(file = uploader_verify_name(File.join(File.dirname(file), "crop_#{File.basename(file)}"))) unless settings[:overwrite]
|
186
|
+
file
|
187
|
+
end
|
188
|
+
|
189
|
+
private
|
190
|
+
# helper for resize and crop method
|
191
|
+
def cama_crop_offsets_by_gravity(gravity, original_dimensions, cropped_dimensions)
|
192
|
+
original_width, original_height = original_dimensions
|
193
|
+
cropped_width, cropped_height = cropped_dimensions
|
194
|
+
|
195
|
+
vertical_offset = case gravity
|
196
|
+
when :north_west, :north, :north_east then 0
|
197
|
+
when :center, :east, :west then [ ((original_height - cropped_height) / 2.0).to_i, 0 ].max
|
198
|
+
when :south_west, :south, :south_east then (original_height - cropped_height).to_i
|
199
|
+
end
|
200
|
+
|
201
|
+
horizontal_offset = case gravity
|
202
|
+
when :north_west, :west, :south_west then 0
|
203
|
+
when :center, :north, :south then [ ((original_width - cropped_width) / 2.0).to_i, 0 ].max
|
204
|
+
when :north_east, :east, :south_east then (original_width - cropped_width).to_i
|
205
|
+
end
|
206
|
+
|
207
|
+
return [ horizontal_offset, vertical_offset ]
|
208
|
+
end
|
209
|
+
|
151
210
|
end
|
@@ -18,7 +18,7 @@
|
|
18
18
|
<td>
|
19
19
|
<%= plugin["title"] %>
|
20
20
|
<br>
|
21
|
-
<% r[:links] << (link_to("#{t('admin.sidebar.information')}",
|
21
|
+
<% r[:links] << (link_to("#{t('admin.sidebar.information')}", "http://camaleon.tuzitio.com/store/plugins/info/#{plugin["key"]}", target: "_blank", title: "#{plugin["title"]}")) %>
|
22
22
|
<% hook_run(plugin, "plugin_options", r) if status %>
|
23
23
|
<%= raw r[:links].join(" | ") %>
|
24
24
|
</td>
|
@@ -27,8 +27,6 @@
|
|
27
27
|
<td><%= t("admin.plugins.status_#{status}") %></td>
|
28
28
|
<td>
|
29
29
|
<%= link_to raw("<i class='fa fa-#{status ? "check-square" : "square"}'></i>"), {action: :toggle, id: plugin["key"], status: status }, class: "btn btn-default btn-xs", title: "#{status ? t('admin.button.disable_plugin') : t('admin.button.activate_plugin') }" %>
|
30
|
-
<%#= link_to raw('<i class="fa fa-times"></i>'), { action: :destroy, id: plugin["key"] },
|
31
|
-
method: :delete, data: { confirm: t('admin.message.delete_item') }, class: "btn btn-danger btn-xs", title: "#{t('admin.button.delete')}" if plugin_can_be_deleted?(plugin["key"]) %>
|
32
30
|
</td>
|
33
31
|
</tr>
|
34
32
|
<% end %>
|
@@ -37,23 +35,4 @@
|
|
37
35
|
</table>
|
38
36
|
<%= content_tag("div", raw(t('admin.message.data_found_list')), class: "alert alert-warning") if plugins.empty? %>
|
39
37
|
</div>
|
40
|
-
|
41
|
-
</div>
|
42
|
-
|
43
|
-
<script type="text/javascript" charset="utf-8">
|
44
|
-
function do_modal_plugin(ele, url_asset){
|
45
|
-
$.get($(ele).attr("href"), function(res){
|
46
|
-
var template = $('<div class="modal" id="modal_large" tabindex="-1" role="dialog" aria-labelledby="largeModalHead" aria-hidden="true"> <div class="modal-dialog modal-lg"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button> <h4 class="modal-title" id="largeModalHead">Large Modal</h4> </div> <div class="modal-body"></div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">'+lang.close+'</button> </div> </div> </div> </div>');
|
47
|
-
template.find(".modal-body").html(res.replace(/src=\"/g, 'src="'+url_asset));
|
48
|
-
template.find("#largeModalHead").html($(ele).attr("title"));
|
49
|
-
template.modal();
|
50
|
-
});
|
51
|
-
}
|
52
|
-
|
53
|
-
function do_modal_plugin2(item, title){
|
54
|
-
var title = 'Plugin '+ title;
|
55
|
-
var template = $('<div class="modal" id="modal_large" tabindex="-1" role="dialog" aria-labelledby="largeModalHead" aria-hidden="true"> <div class="modal-dialog modal-lg"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button> <h4 class="modal-title" id="largeModalHead">'+title+'</h4> </div> <div class="modal-body"></div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">'+lang.close+'</button> </div> </div> </div> </div>');
|
56
|
-
template.find(".modal-body").html('<iframe src="'+$(item).attr("href")+'" width="100%" height="500px" frameborder=0></iframe>');
|
57
|
-
template.modal();
|
58
|
-
}
|
59
|
-
</script>
|
38
|
+
</div>
|
@@ -8,12 +8,18 @@ module Net
|
|
8
8
|
# fix ssl for facebook connection
|
9
9
|
def use_ssl=(flag)
|
10
10
|
if @address.include?("facebook.com")
|
11
|
-
self.ca_file =
|
11
|
+
self.ca_file = File.join($camaleon_engine_dir, 'lib/ca-bundle.crt').to_s
|
12
12
|
self.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
13
13
|
self.original_use_ssl = flag
|
14
|
-
|
15
|
-
|
14
|
+
|
15
|
+
else # original method
|
16
|
+
flag = flag ? true : false
|
17
|
+
if started? and @use_ssl != flag
|
18
|
+
raise IOError, "use_ssl value changed, but session already started"
|
19
|
+
end
|
20
|
+
@use_ssl = flag
|
16
21
|
end
|
22
|
+
|
17
23
|
end
|
18
24
|
end
|
19
25
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Sass::Script::Functions
|
2
|
+
# similar to asset_path with prefix for current theme asset
|
3
|
+
# def theme_path(path, options = {})
|
4
|
+
# asset_path("#{get_theme_prefix}#{path}", options)
|
5
|
+
# end
|
6
|
+
|
7
|
+
# similar to asset_url with prefix for current theme asset
|
8
|
+
def theme_asset(path, options = {})
|
9
|
+
asset_url("#{get_theme_prefix}#{path}", options)
|
10
|
+
end
|
11
|
+
|
12
|
+
# # similar to asset_path with prefix for current plugin asset
|
13
|
+
# def plugin_path(path, options = {})
|
14
|
+
# asset_path("#{get_plugin_prefix}#{path}", options)
|
15
|
+
# end
|
16
|
+
|
17
|
+
# similar to asset_url with prefix for current plugin asset
|
18
|
+
def plugin_asset(path, options = {})
|
19
|
+
asset_url("#{get_plugin_prefix}#{path}", options)
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
# get plugin asset prefix
|
24
|
+
def get_plugin_prefix
|
25
|
+
file = sprockets_context.filename
|
26
|
+
res = ""
|
27
|
+
if file.include?("/app/apps/plugins/")
|
28
|
+
res = "themes/#{file.split("/app/apps/plugins/").last.split("/").first}/assets/"
|
29
|
+
end
|
30
|
+
res
|
31
|
+
end
|
32
|
+
|
33
|
+
# get theme asset prefix
|
34
|
+
def get_theme_prefix
|
35
|
+
file = sprockets_context.filename
|
36
|
+
res = ""
|
37
|
+
if file.include?("/app/apps/themes/")
|
38
|
+
res = "themes/#{file.split("/app/apps/themes/").last.split("/").first}/assets/"
|
39
|
+
end
|
40
|
+
res
|
41
|
+
end
|
42
|
+
end
|
data/lib/camaleon_cms/version.rb
CHANGED
@@ -20,11 +20,13 @@ class CpluginGenerator < Rails::Generators::Base
|
|
20
20
|
else
|
21
21
|
|
22
22
|
# helpers + controllers
|
23
|
-
plugin_app =
|
23
|
+
plugin_app = File.join($camaleon_engine_dir, "lib", "generators", "cplugin_template", "app_#{get_plugin_name}")
|
24
24
|
plugin_folder = File.join(plugin_app, "apps", "plugins", get_plugin_name)
|
25
25
|
|
26
|
+
FileUtils.rm_r(plugin_app) if Dir.exist?(plugin_app)
|
27
|
+
|
26
28
|
# tmp copy
|
27
|
-
FileUtils.cp_r(
|
29
|
+
FileUtils.cp_r(File.join($camaleon_engine_dir, "lib", "generators", "cplugin_template", "app"), plugin_app)
|
28
30
|
FileUtils.mv(File.join(plugin_app, "apps", "plugins", "my_plugin"), plugin_folder) rescue nil
|
29
31
|
|
30
32
|
# configuration
|
@@ -19,11 +19,13 @@ class CthemeGenerator < Rails::Generators::Base
|
|
19
19
|
else
|
20
20
|
|
21
21
|
# helpers + controllers
|
22
|
-
plugin_app =
|
22
|
+
plugin_app = File.join($camaleon_engine_dir, "lib", "generators", "ctheme_template", "app_#{get_theme_name}")
|
23
23
|
plugin_folder = File.join(plugin_app, "apps", "themes", get_theme_name)
|
24
24
|
|
25
|
+
FileUtils.rm_r(plugin_app) if Dir.exist?(plugin_app)
|
26
|
+
|
25
27
|
# tmp copy
|
26
|
-
FileUtils.cp_r(
|
28
|
+
FileUtils.cp_r(File.join($camaleon_engine_dir, "lib", "generators", "ctheme_template", "app"), plugin_app)
|
27
29
|
FileUtils.mv(File.join(plugin_app, "apps", "themes", "my_theme"), plugin_folder) rescue nil
|
28
30
|
|
29
31
|
# configuration
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: camaleon_cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Owen Peredo Diaz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-01 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Camaleon CMS is a dynamic and advanced content management system based
|
14
14
|
on Ruby on Rails 4 as an alternative to Wordpress.
|
@@ -596,6 +596,7 @@ files:
|
|
596
596
|
- config/initializers/mobu.rb
|
597
597
|
- config/initializers/page_caching.rb
|
598
598
|
- config/initializers/rufus_cron.rb
|
599
|
+
- config/initializers/sass.rb
|
599
600
|
- config/locales/admin/en.yml
|
600
601
|
- config/locales/admin/es.yml
|
601
602
|
- config/locales/ar.yml
|