caboose-cms 0.6.18 → 0.6.19

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MWYxMmMxNTU3NzZjZTAwZDNmZTg2NjNiMjE2ZWY0MWFkNmNmMDM3NA==
4
+ NTA2NjFiZGRkMDZiMjJhNzJmNWMzZTUwN2ZhY2FkNmU2Y2M5MjNiMA==
5
5
  data.tar.gz: !binary |-
6
- MDQ1ZjZjOTAyZTY5MWIwNTQxNzFhZTVjYzU0ZGE1YTMzNGRiMTU3Yg==
6
+ ZmIxODVlNWMzZDAwZTBlN2MwMjczYjA5MmM3ODBlMzU4MjVmMjQ5ZA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NmI2YjRjOTk3M2Q1OGZhMTVkNDliMTY0ZWI2MTA0YzJhZjI3Yjc2YjJmNDAx
10
- M2NlNmYyYjE5NWViZmVmNjdhNjk5ZmVjYzA2ZmQ1ZGUyMDc0NTNjOWIwMGRh
11
- MGEyMzQ0NWNkYjc4MmRjMzMxNTQ5YTQzNTg1YjhlMzBjZWYxMDg=
9
+ NDQ1NTk1ZDNiMjlkNmI4ZjUyZGM0ZTE2YjlhZGNlNTU3NmU1MmNiYjJkNzU1
10
+ ODk1MGVmYjUzMmU0YTFkZmJhM2ZkZmJjMDZlNDYzMjNkODJjYjNhMDhkMGU0
11
+ ZTY4ZjdiZDQ2NTg2MWQ4ZDljZTRhM2JkNGIyZGY4YTI0ZGJkODI=
12
12
  data.tar.gz: !binary |-
13
- Y2ZkMmZkY2QxNGE2OGIwM2M3YzliZTIyZjY4YmEyMjQ4YzUyMWU0NDhkNGZi
14
- YzRlZGJlZDBhNTM4MzhiMTZjZmQ1NzI0NzNmZDExODE1NDBmMGU2ZjA3ODNj
15
- ZjMzN2U3OGYzY2E1N2I2MzQ0ZjZhYzMyZjlmMzE0NDMxNDY0NDk=
13
+ NzA3ZmJhZjVjNWM0MTkxMzUwNTYwMzczZDI1MTM0ZGM3OWNhMWI5MmVlNWMx
14
+ ZTc4YjlkMGU2ZTRjNWQ2NzY2Mjc2ZGI1NGNmZGE0NmEwYTNlNjZlZGQ5YjVj
15
+ MmFjOTA0MjE2NjVjYTFiNWY0YWY1NWY3YTczNmM2OTI1OWNlZmU=
@@ -13,11 +13,11 @@ MediaController.prototype = {
13
13
  signature: false,
14
14
  selected_media: false,
15
15
  uploader: false,
16
- refresh_unprocessed_images: false,
17
-
18
-
19
-
20
-
16
+ refresh_unprocessed_images: true,
17
+ allow_edit: false,
18
+ feather_editor: false,
19
+ media_ids: [],
20
+ processing_media_ids: [],
21
21
 
22
22
  init: function(params) {
23
23
  var that = this;
@@ -32,7 +32,7 @@ MediaController.prototype = {
32
32
  .append($('<a/>').attr('href', '#').html('Select All').click(function(e) { e.preventDefault(); that.select_all_media(); }))
33
33
  )
34
34
  .append($('<div/>').attr('id', 'the_uploader'));
35
- that.refresh();
35
+ that.refresh();
36
36
  },
37
37
 
38
38
  refresh: function()
@@ -40,8 +40,7 @@ MediaController.prototype = {
40
40
  var that = this;
41
41
  that.refresh_categories();
42
42
  that.refresh_media();
43
- that.print_controls();
44
-
43
+ that.print_controls();
45
44
  },
46
45
 
47
46
  toggle_uploader: function()
@@ -136,11 +135,29 @@ MediaController.prototype = {
136
135
  type: 'get',
137
136
  async: false,
138
137
  data: { media_category_id: that.cat_id },
139
- success: function(resp) {
138
+ success: function(resp) {
140
139
  that.cat = resp;
141
140
  that.cat_id = that.cat.id;
142
141
  that.selected_media = [];
143
- that.print_media();
142
+ //that.print_media();
143
+
144
+ var mids = [];
145
+ var pmids = [];
146
+ if (that.cat.media.length > 0)
147
+ {
148
+ $.each(that.cat.media, function(i, m) {
149
+ mids.push(m.id);
150
+ if (m.media_type == 'image' && m.processed == false)
151
+ pmids.push(m.id);
152
+ });
153
+ }
154
+ if (mids.join(',') != that.media_ids.join(',') || pmids.join(',') != that.processing_media_ids.join(','))
155
+ that.print_media();
156
+ else if (pmids.length > 0)
157
+ setTimeout(function() { that.refresh_media(); }, 2000);
158
+
159
+ that.media_ids = mids;
160
+ that.processing_media_ids = pmids;
144
161
  }
145
162
  });
146
163
  },
@@ -249,17 +266,24 @@ MediaController.prototype = {
249
266
  that.edit_media_description($(this).parent().data('media_id'));
250
267
  }));
251
268
  if (m.image_urls)
252
- li.append($('<img/>').attr('src', m.image_urls.tiny_url));
269
+ li.append($('<img/>').attr('src', m.image_urls.tiny_url).attr("id","image-" + m.id));
253
270
  if (that.selected_media.indexOf(m.id) > -1)
254
271
  li.addClass('selected ui-selected');
255
- ul.append(li);
272
+ if (that.allow_edit && m.image_urls)
273
+ {
274
+ li.append($("<a/>")
275
+ .html("Edit Image")
276
+ .click(function() { that.edit_image($(this).parent().data('media_id')); })
277
+ );
278
+ }
279
+ ul.append(li);
256
280
  });
257
281
  }
258
282
  else
259
283
  ul = $('<p/>').html("This category is empty.");
260
- $('#media').empty().append(ul);
284
+ $('#media').empty().append(ul);
261
285
  if (that.refresh_unprocessed_images == true && processing)
262
- setTimeout(function() { that.refresh(); }, 2000);
286
+ setTimeout(function() { that.refresh_media(); }, 2000);
263
287
 
264
288
  $.each(that.cat.media, function(i, m) {
265
289
  $('li.media').draggable({
@@ -450,5 +474,82 @@ MediaController.prototype = {
450
474
  }
451
475
  });
452
476
  },
477
+
478
+ media_with_id: function(media_id)
479
+ {
480
+ var that = this;
481
+ var m = false;
482
+ if (that.cat.media.length > 0)
483
+ {
484
+ $.each(that.cat.media, function(i, m2) {
485
+ if (parseInt(m2.id) == parseInt(media_id))
486
+ {
487
+ m = m2;
488
+ return false;
489
+ }
490
+ });
491
+ }
492
+ return m;
493
+ },
494
+
495
+ //============================================================================
496
+ // Aviary
497
+ //============================================================================
498
+
499
+ edit_image: function(media_id)
500
+ {
501
+ var that = this;
502
+ var m = that.media_with_id(media_id);
503
+
504
+ if (that.feather_editor != false)
505
+ {
506
+ that.edit_image_helper(m);
507
+ return;
508
+ }
509
+ that.feather_editor = new Aviary.Feather({
510
+ apiKey: '933414ee42934e8b81d8cd2226a5a13b',
511
+ theme: 'light',
512
+ enableCORS: false,
513
+ maxSize: 1600,
514
+ onSave: function(media_id, new_url) { return that.update_image(media_id, new_url); },
515
+ onLoad: function() { that.edit_image_helper(m); }
516
+ });
517
+ },
518
+
519
+ edit_image_helper: function(m)
520
+ {
521
+ console.log(m.image_urls.original_url);
522
+ var that = this;
523
+ that.feather_editor.launch({
524
+ image: 'image-' + m.id,
525
+ url: m.image_urls.original_url
526
+ });
527
+ },
528
+
529
+ update_image: function(image_id, new_url)
530
+ {
531
+ var that = this;
532
+ var media_id = parseInt(image_id.replace('image-', ''));
533
+
534
+ that.feather_editor.showWaitIndicator();
535
+ $.ajax({
536
+ url: '/admin/media/' + media_id,
537
+ type: 'put',
538
+ data: { image_url: new_url },
539
+ success: function(resp) {
540
+ if(resp.error) { alert("Error saving image:\n\n" + resp.error); }
541
+ if(resp.success) {
542
+ that.feather_editor.hideWaitIndicator();
543
+ var src = $('#image-' + media_id).attr('src').split('?')[0];
544
+ $('#image-' + media_id).attr('src', src + '?' + Date.now());
545
+ that.feather_editor.close();
546
+ that.refresh_media();
547
+ }
548
+ }
549
+ });
550
+ return false;
551
+ }
453
552
 
454
553
  };
554
+
555
+
@@ -83,23 +83,40 @@
83
83
  padding: 0;
84
84
  display: inline-block;
85
85
  width: 150px;
86
- height: 150px;
86
+ height: 165px;
87
87
  overflow: hidden;
88
88
  background-color: #666;
89
89
  background-position: center;
90
90
  background-size: contain;
91
91
  background-repeat: no-repeat;
92
92
  border: #666 4px solid;
93
-
93
+ img {
94
+ max-height: 120px;
95
+ max-width: 90%;
96
+ }
94
97
  span.name {
95
98
  display: block;
96
99
  position: absolute;
97
- bottom: 4px;
100
+ bottom: 18px;
98
101
  width: 150px;
99
102
  text-align: center;
100
103
  color: #fff;
101
104
  text-decoration: none !important;
102
105
  }
106
+ a {
107
+ text-decoration: underline;
108
+ cursor: pointer;
109
+ display: block;
110
+ font-size: 13px;
111
+ position: absolute;
112
+ bottom: 0;
113
+ text-align: center;
114
+ width: 100%;
115
+ color: #000;
116
+ &:hover {
117
+ color: blue;
118
+ }
119
+ }
103
120
  &:hover {
104
121
  background-color: #fff799;
105
122
  border: #fff799 4px solid;
@@ -82,11 +82,51 @@ module Caboose
82
82
  params.each do |name, value|
83
83
  case name
84
84
  when 'name' then m.name = value
85
- when 'description' then m.description = value
85
+ when 'description' then m.description = value
86
+ when 'image_url' then
87
+ m.processed = false
88
+ m.delay.download_image_from_url(value)
86
89
  end
87
90
  end
91
+
92
+ m.save
93
+ resp.success = save
94
+ render :json => resp
95
+ end
96
+
97
+ # POST /admin/media/edit-image
98
+ #def admin_edit_image
99
+ # new_url = params[:new_url]
100
+ # media_id = params[:media_id]
101
+ # resp = StdClass.new({'attributes' => {}})
102
+ # if !new_url.blank? && !media_id.blank?
103
+ # m = Media.find(media_id.gsub("image-",""))
104
+ # m.image = new_url
105
+ # m.save
106
+ # resp.success = "Saved image!"
107
+ # else
108
+ # resp.error = "Couldn't save image"
109
+ # end
110
+ # render :json => resp
111
+ #end
88
112
 
89
- resp.success = save && m.save
113
+ # POST /admin/media/:id/image
114
+ def admin_update_image
115
+ return unless user_is_allowed('media', 'edit')
116
+
117
+ resp = StdClass.new
118
+ new_url = params[:new_url]
119
+ m = Media.where(:id => params[:id]).first
120
+
121
+ if m.nil?
122
+ resp.error = "Invalid media id."
123
+ elsif new_url.nil? || new_url.strip.length == 0
124
+ resp.error = "Invalid image URL."
125
+ else
126
+ m.image = URI.parse(new_url)
127
+ m.save
128
+ resp.success = "Image saved successfully."
129
+ end
90
130
  render :json => resp
91
131
  end
92
132
 
@@ -8,6 +8,7 @@ module Caboose
8
8
  @@site = nil
9
9
 
10
10
  before_filter do |mailer|
11
+ puts "Configuring mailer..."
11
12
  config = SmtpConfig.where(:site_id => @@site.id).first
12
13
  self.smtp_settings['user_name'] = config.user_name
13
14
  self.smtp_settings['password'] = config.password
@@ -68,6 +68,12 @@ class Caboose::Media < ActiveRecord::Base
68
68
 
69
69
  end
70
70
 
71
+ def download_image_from_url(url)
72
+ self.image = URI.parse(url)
73
+ self.processed = true
74
+ self.save
75
+ end
76
+
71
77
  def api_hash
72
78
  {
73
79
  :id => self.id,
@@ -35,6 +35,7 @@
35
35
  <script type="text/javascript" src="/assets/plupload/jquery.ui.plupload/jquery.ui.plupload.js"></script>
36
36
  -->
37
37
 
38
+ <script type="text/javascript" src="http://feather.aviary.com/imaging/v2/editor.js"></script>
38
39
  <script type="text/javascript">
39
40
 
40
41
  var controller = false;
@@ -46,9 +47,16 @@ $(document).ready(function() {
46
47
  aws_access_key_id: '<%= raw @aws_access_key_id %>',
47
48
  policy: '<%= raw @policy %>',
48
49
  signature: '<%= raw @signature %>',
49
- refresh_unprocessed_images: false
50
- });
50
+ refresh_unprocessed_images: true,
51
+ allow_edit: true
52
+ });
51
53
  });
52
54
 
53
55
  </script>
54
56
  <% end %>
57
+
58
+ <%
59
+ # Adobe Image Editor SDK Credentials
60
+ # CLIENT SECRETf42be039-1af0-41d8-89bb-fdebdb557d3d
61
+ # CLIENT ID (DEVELOPMENT MODE)*933414ee42934e8b81d8cd2226a5a13b
62
+ %>
@@ -219,8 +219,9 @@ Caboose::Engine.routes.draw do
219
219
  get "/admin/media/:id/description" => "media#admin_edit_description"
220
220
  get "/admin/media/:id" => "media#admin_edit"
221
221
  put "/admin/media/:id" => "media#admin_update"
222
- post "/admin/media/:id/image" => "media#admin_update_image"
223
- post "/admin/media" => "media#admin_add"
222
+ post "/admin/media/:id/image" => "media#admin_update_image"
223
+ #post "/admin/media/edit-image" => "media#admin_edit_image"
224
+ post "/admin/media" => "media#admin_add"
224
225
  delete "/admin/media/bulk" => "media#admin_bulk_delete"
225
226
  delete "/admin/media/:id" => "media#admin_delete"
226
227
 
@@ -1,3 +1,3 @@
1
1
  module Caboose
2
- VERSION = '0.6.18'
2
+ VERSION = '0.6.19'
3
3
  end
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.6.18
4
+ version: 0.6.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Barry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-04 00:00:00.000000000 Z
11
+ date: 2015-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg