camaleon_cms 0.1.6 → 0.1.7

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.

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