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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 62fc7ad41d7bb84eb19b420320039004edf012ba
4
- data.tar.gz: fed0f9bc7a3ea5b624eba15c41c8f28f15ac7b39
3
+ metadata.gz: d108ac8f32bb33eae1fb694f6162c5cee33ff093
4
+ data.tar.gz: 599fa7428f1fe9b7fba9414a96e286573a3c2860
5
5
  SHA512:
6
- metadata.gz: 726e598be6d038d1f63a3abad00fac9b79d94c0162716cbf31153f4919fb2d7b797c312e3c0522dede7318c016182ab3411893802b4b60bc327cac97ab171067
7
- data.tar.gz: afc6f987d85a6e649310b6ff49b7c5720fa4fc596efeb18f35d9daf3564aa6de159a8881181bea1cc5653b3b08a846b039e7b3e58b0f8bb2ffb9dd5178dc0fda
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(0655, folder)
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
- if defined?(ActiveJob::Base)
91
- TemporalFileJob.set(wait: settings[:is_temporal]).perform_later(file_path)
92
- {
93
- "file" => file_path,
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')}", plugin_asset_path(plugin["key"], "docs/index.html"), onclick: "do_modal_plugin2(this, '#{plugin["title"]}'); return false;", title: "#{plugin["title"]}")) if File.exist?(File.join(plugin["path"], "assets", "docs/index.html")) %>
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">&times;</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">&times;</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 = Rails.root.join('lib/ca-bundle.crt').to_s
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
- else
15
- super
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
@@ -1,3 +1,3 @@
1
1
  module CamaleonCms
2
- VERSION = "0.1.6"
2
+ VERSION = "0.1.7"
3
3
  end
@@ -20,11 +20,13 @@ class CpluginGenerator < Rails::Generators::Base
20
20
  else
21
21
 
22
22
  # helpers + controllers
23
- plugin_app = Rails.root.join("lib", "generators", "cplugin_template", "app_#{get_plugin_name}")
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(Rails.root.join("lib", "generators", "cplugin_template", "app"), plugin_app)
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 = Rails.root.join("lib", "generators", "ctheme_template", "app_#{get_theme_name}")
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(Rails.root.join("lib", "generators", "ctheme_template", "app"), plugin_app)
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.6
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-08-31 00:00:00.000000000 Z
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