imagine_cms 5.2.0 → 5.2.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile +16 -42
  3. data/README.md +28 -11
  4. data/app/assets/javascripts/dojo/dojo.js +1 -1
  5. data/app/assets/javascripts/dojo/src/widget/templates/richtextframe.html +3 -0
  6. data/app/assets/javascripts/imagine_cms/core.js +31 -40
  7. data/app/assets/stylesheets/imagine_cms.css.scss +15 -7
  8. data/app/assets/stylesheets/imagine_controls.css.scss +45 -2
  9. data/app/controllers/cms/content_controller.rb +2 -2
  10. data/app/controllers/manage/cms_pages_controller.rb +34 -25
  11. data/app/helpers/cms_application_helper.rb +27 -27
  12. data/app/helpers/cms_custom_helper.rb +13 -0
  13. data/app/mailers/imagine_cms_mailer.rb +1 -1
  14. data/app/views/imagine_cms/_dialogs.html.erb +3 -3
  15. data/app/views/imagine_cms/_header.html.erb +8 -8
  16. data/app/views/imagine_cms_mailer/request_review.text.erb +0 -2
  17. data/app/views/layouts/management.html.erb +5 -4
  18. data/app/views/manage/cms_pages/_create_file_link.html.erb +16 -3
  19. data/app/views/manage/cms_pages/_crop_feature_image.html.erb +1 -1
  20. data/app/views/manage/cms_pages/_crop_image.html.erb +31 -29
  21. data/app/views/manage/cms_pages/_crop_thumb.html.erb +1 -1
  22. data/app/views/manage/cms_pages/_edit_page.html.erb +18 -4
  23. data/app/views/manage/cms_pages/_list_page.html.erb +28 -7
  24. data/app/views/manage/cms_pages/_list_page_select.html.erb +17 -7
  25. data/app/views/manage/cms_pages/_list_pages.html.erb +1 -1
  26. data/app/views/manage/cms_pages/_list_pages_select.html.erb +1 -1
  27. data/app/views/manage/cms_pages/_page_list.html.erb +5 -5
  28. data/app/views/manage/cms_pages/_page_list_source_tag.html.erb +6 -2
  29. data/app/views/manage/cms_pages/_upload_feature_image.html.erb +51 -11
  30. data/app/views/manage/cms_pages/_upload_file.html.erb +2 -2
  31. data/app/views/manage/cms_pages/_upload_image.html.erb +95 -23
  32. data/app/views/manage/cms_pages/_upload_thumb.html.erb +51 -11
  33. data/app/views/manage/cms_pages/gallery_management.html.erb +1 -1
  34. data/app/views/manage/cms_pages/index.html.erb +36 -35
  35. data/app/views/manage/cms_pages/select_page.html.erb +39 -39
  36. data/app/views/manage/cms_pages/toolbar_preview.html.erb +1 -1
  37. data/app/views/management/users/index.html.erb +1 -1
  38. data/docker-compose.override.yml.example +6 -19
  39. data/docker-compose.yml +5 -7
  40. data/docker/conf/{nginx-vhost.conf → nginx-vhost.conf.template} +3 -3
  41. data/docker/services/{memcached.sh → memcached} +0 -0
  42. data/docker/services/{sidekiq.sh → sidekiq} +0 -0
  43. data/docker/services/{webpack.sh → webpack} +0 -0
  44. data/lib/extensions/action_controller_extensions.rb +18 -17
  45. data/lib/imagine_cms/engine.rb +1 -0
  46. data/lib/imagine_cms/version.rb +1 -1
  47. data/lib/upload_progress/lib/multipart_progress.rb +1 -1
  48. metadata +11 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6a2d2087d9caf255378b1213b70ef79ce96674fd68158faa3d175a0efcc49bcb
4
- data.tar.gz: 3d26b91a3140cc36df6ce24dcd8aa0c8042d178a1596d152990bab1f8da6aba4
3
+ metadata.gz: 6395698e5fa9fccc7b7ae4d5178857dcd5678084505cc4df08da0a9f1ab23517
4
+ data.tar.gz: ef698c30a3234bb349183c084ea98dd2524e518b62270c5f18507b7631ad470e
5
5
  SHA512:
6
- metadata.gz: 4cd0d6ba6f816b5d8a4de2f63f5947bac71a4ee02ece4fa26af8d79db2b87c5d2360d7eb5f863ddb0667615e41731473a8d77d6ea0b3c5f013e751d8b86bd0ab
7
- data.tar.gz: 28b07e811ffd01c9df9db417f75bfc782f44c72779441a2a70aab854c59d2f222ad4433d8492a7d0ff94b4c47b7f1efbe2882a20fbde7e4b9f78cf69fba197d6
6
+ metadata.gz: 0afe6cdfe911f124645fa829ea9e0c90c702261fefba1d49b86826adec69a15ae0c5909230cb349a26b21c51d6dc503b58949b933e4c4b7546937960d4ab2c54
7
+ data.tar.gz: 789fdb963f54155a91a74728e4ca0be2e7a75adaba77d8bf7e7a9a62e897b0fe9fa472c93790c74cca5dc5c68c449a1ee797cd9b5f92dcb57471afbc855c6c1d
data/Dockerfile CHANGED
@@ -1,61 +1,35 @@
1
1
  ### Docker image for imagine5 ###
2
2
 
3
- # See https://github.com/phusion/passenger-docker/blob/master/Changelog.md for a list of version numbers.
4
- FROM phusion/passenger-ruby25:1.0.0
5
- LABEL maintainer="aaron@aaronnamba.com"
3
+ # See https://hub.docker.com/r/anamba/rails-dev/tags/ for a list of tags
4
+ FROM anamba/rails-dev:1.2.0
5
+ LABEL maintainer="bbsoftware@biggerbird.com"
6
6
 
7
- # Set up 3rd party repos
8
- RUN curl -sL https://deb.nodesource.com/setup_8.x | bash -
9
- RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
10
- RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list
11
-
12
- # Update package list
7
+ # Update package list and upgrade pre-installed packages
13
8
  RUN apt-get update
14
-
15
- # Upgrade other preinstalled packages
16
9
  RUN apt-get upgrade -y -o Dpkg::Options::="--force-confnew"
17
10
 
18
11
  # Install other packages we depend on
19
- RUN apt-get install -y nodejs yarn
20
- RUN apt-get install -y tzdata
21
- RUN apt-get install -y mysql-client
12
+ # RUN apt-get install -y mysql-client
13
+ RUN apt-get install -y memcached
22
14
  RUN apt-get install -y libmagickcore-dev libmagickwand-dev # for rmagick2 gem
23
15
  RUN apt-get install -y imagemagick # for mini-magick gem
24
- RUN apt-get install -y openjdk-8-jre-headless # java for fop
25
- RUN apt-get install -y memcached # for rack-attack and rails cache
26
- RUN apt-get install -y cmake pkg-config # for rugged (git)
16
+ # RUN apt-get install -y openjdk-8-jre-headless # java for fop (rarely used; add to your own Dockerfile if you need it)
27
17
  RUN apt-get autoremove -y
28
18
 
29
- # Enable services
30
- RUN rm -f /etc/service/nginx/down
19
+ # apt clean up
20
+ RUN apt-get clean && rm -rf /tmp/* /var/tmp/*
21
+ # RUN rm -rf /var/lib/apt/lists/*
31
22
 
32
- # Add custom services
33
- RUN mkdir /etc/service/memcached
34
- COPY docker/services/memcached.sh /etc/service/memcached/run
35
- # RUN mkdir /etc/service/sidekiq
36
- # COPY docker/services/sidekiq.sh /etc/service/sidekiq/run
37
- # RUN mkdir /etc/service/webpack
38
- # COPY docker/services/webpack.sh /etc/service/webpack/run
39
-
40
- # Other startup scripts
41
- RUN mkdir -p /etc/my_init.d
42
- COPY docker/startup/101_mkdir.sh /etc/my_init.d/
43
- COPY docker/startup/201_bundler.sh /etc/my_init.d/
44
- COPY docker/startup/211_yarn.sh /etc/my_init.d/
23
+ # Add custom vhost
24
+ COPY /docker/conf/nginx-vhost.conf.template /etc/nginx/
45
25
 
46
26
  # Remove the default vhost (so that ours will respond to any Host)
47
27
  RUN rm -f /etc/nginx/sites-enabled/default
48
28
 
49
- # Post-build clean up
50
- RUN apt-get clean && rm -rf /tmp/* /var/tmp/*
51
- # RUN rm -rf /var/lib/apt/lists/*
52
-
53
- # Expose port 80 to the Docker host, so we can access it from the outside (remember to publish it using `docker run -p`).
54
- EXPOSE 80
29
+ # Add custom services
30
+ RUN mkdir -p /etc/service/memcached
31
+ RUN rm -f /etc/service/memcached/down
32
+ COPY docker/services/memcached /etc/service/memcached/run
55
33
 
56
34
  # For convenience
57
- WORKDIR /home/app/myapp
58
35
  COPY docker/conf/.my.cnf /home/app
59
-
60
- # Run this to start all services (if no command was provided to `docker run`)
61
- CMD ["/sbin/my_init"]
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Imagine CMS
1
+ # Imagine 5 - Rails-powered CMS
2
2
 
3
3
  [![Version](https://img.shields.io/github/tag/anamba/imagine_cms.svg?maxAge=360)](https://github.com/anamba/imagine_cms/releases/latest)
4
4
  [![License](https://img.shields.io/github/license/anamba/imagine_cms.svg)](https://github.com/anamba/imagine_cms/blob/master/license.txt)
@@ -7,15 +7,21 @@
7
7
  Imagine CMS is a web content management system developed by [Bigger Bird Creative, Inc.](https://biggerbird.com) in 2006 for its clients.
8
8
  Other CMSes came with a learning curve: not a problem for daily users, but clients who only used it once a month or so would forget everything by the next time they logged in.
9
9
  Simpler systems didn't have enough functionality to allow us to do what we wanted to do as designers and developers.
10
- Thus, we created a CMS that is easy for clients to use, stays out of our way, and provides useful automation (publishing and unpublishing on a schedule, navigation links, RSS feeds, etc.).
10
+ Thus, we created a CMS that is easy for clients to use, stays out of our way, and provides useful automation (lists, publishing and unpublishing on a schedule, navigation links, RSS feeds, etc.).
11
11
 
12
12
  ## Current Status
13
13
 
14
- Imagine 5.2 is ready for production use (v5.2-stable branch). Imagine 4 is also available for apps tied to Rails 4.2, respectively (v4.2-stable branch).
14
+ [Imagine 6](https://github.com/ImagineCMS/imagine_cms) (Elixir-based) is use in production.
15
15
 
16
- However, unless you are already familiar with Imagine, this project is not suitable for wider use. Why? Well, the purpose of the Imagine gem at this point is strictly to upgrade legacy sites to modern versions of Rails as simply as possible, and to make sure that if something happens to Bigger Bird, our clients will not be left high and dry. This version was never intended to be used by the general public.
16
+ Imagine 5 (this repo) is in use in production, but is being wound down in favor of Imagine 6.
17
17
 
18
- Imagine 7 will be a clean break and a great time to try Imagine CMS. Depending on how smoothly development goes, it could be released before Imagine 6 (awkward...).
18
+ Imagine 4 (v4.2-stable branch) is available for apps tied to Rails 4.2, but is no longer actively maintained.
19
+
20
+ Imagine 3 (v3.0-stable branch) is available for apps tied to Rails 3.x, but is no longer actively maintained.
21
+
22
+ Unless you are already familiar with Imagine, this project is not suitable for wider use. Why? Well, the reason this version of Imagine is published on Github is to ensure that if something happens to Bigger Bird, our clients will not be left high and dry. However, this version was never intended to be used by the general public.
23
+
24
+ Imagine 7 (planned) will be a clean break and a great time to try Imagine CMS.
19
25
 
20
26
  ## History and Roadmap
21
27
 
@@ -31,15 +37,15 @@ All that is now firmly in the past. By extracting Imagine functionality into a R
31
37
  * Imagine 4.2 (Rails 4.2, Ruby 2.2): [DONE, v4.2-stable] Compatibility with Rails 4.2, many minor fixes and UI improvements
32
38
  * Imagine 5.0 (Rails 5.0, Ruby 2.2): [SKIPPED] Compatibility with Rails 5.0
33
39
  * Imagine 5.1 (Rails 5.1, Ruby 2.4): [SKIPPED] Compatibility with Rails 5.1
34
- * **Imagine 5.2 (Rails 5.2, Ruby 2.5): [CURRENT RELEASE] Compatibility with Rails 5.2**
35
- * Imagine 6 (Rails 6): [FUTURE] Compatibility with Rails 6
36
- * Imagine 7 (Crystal): [IN PROGRESS] Rewrite in [Crystal](https://crystal-lang.org/) with [Apache CouchDB](http://couchdb.apache.org/) backend
40
+ * **Imagine 5.2 (Rails 5.2, Ruby 2.5/2.6): [PRODUCTION] Compatibility with Rails 5.2**
41
+ * **Imagine 6 (Elixir/Phoenix + MySQL): [PRODUCTION] Bridge between Imagine 5 and 7**
42
+ * Imagine 7 (Elixir/Phoenix + CouchDB): [PLANNED] Community-driven open source project
37
43
 
38
- Imagine 6 will continue to be Rails-based, but Imagine 7 is a complete, ground-up rewrite in Crystal. Development will begin in a new repository under an Imagine CMS organization, as a proper community-driven open source project (finally!). The core concepts will continue on, but not a single line of code will carry over.
44
+ Imagine 6 is a complete, ground-up rewrite in Elixir, and Imagine 7 builds on that, while also replacing the original MySQL/MariaDB store with CouchDB for improved scaling, redundancy, and replication. Imagine 7 development will also be done in the open, in a new repository under the Imagine CMS organization, as a proper community-driven open source project (finally!). The core concepts will continue on, but not a single line of code will be preserved.
39
45
 
40
46
  ## Hosting
41
47
 
42
- Imagine 3.x-6.x can run on typical Rails hosting platforms (anything that uses Passenger, Unicorn, Puma, etc.). On hosts that don't allow writing to the local filesystem (e.g. Heroku) you won't be able to use photo galleries or page caching, but other features should work (note: this mode of operation has not been fully tested).
48
+ Imagine 3.x-5.x can run on typical Rails hosting platforms (anything that uses Passenger, Unicorn, Puma, etc.). On hosts that don't allow writing to the local filesystem (e.g. Heroku) you won't be able to use photo galleries or page caching, but other features should work (note: this mode of operation has not been fully tested).
43
49
 
44
50
  ## Getting Help
45
51
 
@@ -47,4 +53,15 @@ Get paid support and hosting for Imagine CMS straight from the people who made i
47
53
 
48
54
  ## Contributing
49
55
 
50
- Imagine 7 (Crystal) will be a true open source project, but this project (Ruby-based Imagine) will remain more or less closed for the foreseeable future. If companies or individuals are willing to sponsor or co-develop new features, we can work something out.
56
+ Imagine 6 (Elixir rewrite) is now open source and Imagine 7 (MySQL -> CouchDB) will be a true open source project with full community involvement, but this project (Ruby-based Imagine 3.x - 5.x) will remain mostly closed for the foreseeable future (source will continue to be made available on Github, but development will be driven by Bigger Bird only). If companies or individuals are willing to sponsor or co-develop new features, we can work something out.
57
+
58
+ ## Building Docker Image
59
+
60
+ (notes for myself)
61
+
62
+ ```bash
63
+ docker build -t anamba/imagine5-dev:latest .
64
+ docker tag anamba/imagine5-dev:latest anamba/imagine5-dev:5.2.4
65
+ docker tag anamba/imagine5-dev:latest anamba/imagine5-dev:5.2
66
+ docker push anamba/imagine5-dev
67
+ ```
@@ -9599,7 +9599,7 @@ var _8d9=dojo.html.getUnitValue(this.domNode,"line-height");
9599
9599
  if(_8d9.value&&_8d9.units==""){
9600
9600
  _8d8=_8d9.value;
9601
9601
  }
9602
- dojo.html.insertCssText("body,html{background:transparent;padding:0;margin:0;}"+"body{top:0;left:0;right:0;"+(((this.height)||(dojo.render.html.opera))?"":"position:fixed;")+"font:"+font+";"+"min-height:"+this.minHeight+";"+"line-height:"+_8d8+"}"+"p{margin: 1em 0 !important;}"+"body > *:first-child{padding-top:0 !important;margin-top:"+this._firstChildContributingMargin+"px !important;}"+"body > *:last-child{padding-bottom:0 !important;margin-bottom:"+this._lastChildContributingMargin+"px !important;}"+"li > ul:-moz-first-node, li > ol:-moz-first-node{padding-top:1.2em;}\n"+"li{min-height:1.2em;}"+"",this.document);
9602
+ dojo.html.insertCssText("body,html{background:transparent;padding:0;margin:5px;}"+"body{top:0;left:0;right:0;"+(((this.height)||(dojo.render.html.opera))?"":"position:fixed;")+"font:"+font+";"+"min-height:"+this.minHeight+";"+"line-height:"+_8d8+"}"+"p{margin: 1em 0 !important;}"+"body > *:first-child{padding-top:0 !important;margin-top:"+this._firstChildContributingMargin+"px !important;}"+"body > *:last-child{padding-bottom:0 !important;margin-bottom:"+this._lastChildContributingMargin+"px !important;}"+"li > ul:-moz-first-node, li > ol:-moz-first-node{padding-top:1.2em;}\n"+"li{min-height:1.2em;}"+"",this.document);
9603
9603
  dojo.html.removeNode(_8cd);
9604
9604
  this.document.body.innerHTML=html;
9605
9605
  if(_8ca||dojo.render.html.safari){
@@ -8,6 +8,9 @@
8
8
  <script type="text/javascript">
9
9
  function init(){
10
10
  document.designMode = 'on';
11
+ document.execCommand('enableObjectResizing', false, true);
12
+ document.execCommand('enableInlineTableEditing', false, true);
13
+ document.execCommand('enableAbsolutePositionEditor', false, true);
11
14
  try{
12
15
  parentPageDomain = document.location.href.split('#')[1];
13
16
  if(parentPageDomain){
@@ -83,19 +83,14 @@ function dpNextMonth(object, method_prefix, max_year) {
83
83
  ********************************/
84
84
 
85
85
  var cbNumColumns = 0;
86
- var cbColWidth = '200px';
87
- var cbColHeight = '240px';
88
- var cbBorderWidth = '1px';
89
- var cbColWidthFull = 202;
86
+ var cbColWidth = 200;
87
+ var cbColHeight = 240;
90
88
 
91
89
  function cbAddColumn() {
92
- var currentWidth = parseInt($('columnBrowser').style.width, 10);
93
- // if (currentWidth < ((cbNumColumns+1) * cbColWidthFull)) {
94
- $('columnBrowser').style.width = '' + ((cbNumColumns+1) * cbColWidthFull) + 'px';
95
- $('columnBrowserContainer').scrollLeft = $('columnBrowserContainer').scrollWidth;
96
- // }
97
- $('columnBrowser').innerHTML += "<div id=\"columnBrowserLevel" + cbNumColumns + "\" style=\"width: " + cbColWidth + "; height: " + cbColHeight + "; overflow: auto; float: left; border-width: " + cbBorderWidth + " " + cbBorderWidth + " " + cbBorderWidth + " " + (cbNumColumns == 0 ? cbBorderWidth : '0') + "; border-style: solid; border-color: gray;\">Loading...</div>";
90
+ jQuery('#columnBrowser').append('<div id="columnBrowserLevel' + cbNumColumns + '" class="cb_column">Loading...</div>');
91
+ jQuery('#columnBrowserContainer').scrollLeft(jQuery('#columnBrowserContainer')[0].scrollWidth);
98
92
  cbNumColumns++;
93
+ jQuery('#columnBrowser').css({ width: '' + ((cbColWidth+1) * cbNumColumns) + 'px' });
99
94
  }
100
95
 
101
96
  function getScrollbarPosition(el) {
@@ -110,31 +105,25 @@ function setScrollbarPosition(el, coords) {
110
105
  }
111
106
 
112
107
  function cbSelectItem(el, currentLevel, urlForNextLevel) {
113
- var el = $(el);
114
- coords = getScrollbarPosition(el.parentNode);
108
+ var el = jQuery(el);
109
+ // coords = getScrollbarPosition(el.parentNode);
115
110
 
116
- // remove all higher levels and unselect all other same-level divs
111
+ // remove all higher levels
117
112
  for (var i = currentLevel + 1; i <= cbNumColumns; i++) {
118
- d = $('columnBrowserLevel' + i);
119
- if (d) d.parentNode.removeChild(d);
113
+ jQuery('#columnBrowserLevel' + i).remove();
120
114
  }
121
115
  cbNumColumns = currentLevel + 1;
122
-
123
- prefix = 'cb_item_';
124
- $A(el.parentNode.childNodes).each(function (d) {
125
- if (d.id && d.id.substring(0, prefix.length) == prefix) {
126
- d.className = 'cb_item';
127
- }
128
- })
129
-
130
- // select and expand current dept div
131
- el.className = 'cb_item cb_item_selected';
132
-
116
+
117
+ // unselect all other same-level divs and select target
118
+ // prefix = 'cb_item_';
119
+ el.siblings().removeClass('cb_item_selected');
120
+ el.addClass('cb_item_selected');
121
+
122
+ // display children
133
123
  cbAddColumn();
134
- el = $(el.id);
135
- new Ajax.Updater('columnBrowserLevel' + (currentLevel+1), urlForNextLevel, {method: 'GET', asynchronous:true, evalScripts:true});
136
-
137
- setScrollbarPosition(el.parentNode, coords);
124
+ new Ajax.Updater('columnBrowserLevel' + (currentLevel+1), urlForNextLevel, {method: 'GET', asynchronous: true, evalScripts: true});
125
+
126
+ // setScrollbarPosition(el.parentNode, coords);
138
127
  }
139
128
 
140
129
 
@@ -260,7 +249,7 @@ function cancelSelectThumbnail() {
260
249
  hideDojoDialog('select_thumbnail_dialog');
261
250
  }
262
251
 
263
- var gallerySize = [];
252
+ if (!window.gallerySize) window.gallerySize = {};
264
253
  function changeGalleryImage(galleryName, index) {
265
254
  var target = galleryName + '_image_' + index;
266
255
  var caption = galleryName + '_caption_' + index;
@@ -346,13 +335,15 @@ function closePageBrowser() {
346
335
  $(pageBrowserFieldID).value = $('page_browser_selection').value;
347
336
  }
348
337
 
349
-
338
+ // first level of this hash is parent_key below
350
339
  var cmsPageObjects = {};
340
+
351
341
  function scanForPageObjects(page_id, parent_key, version) {
352
342
  if (jQuery('#page_objects_' + parent_key).val().length == 0) return;
353
-
343
+
354
344
  var found = {};
355
-
345
+ if (!cmsPageObjects[parent_key]) cmsPageObjects[parent_key] = {};
346
+
356
347
  var regex = /<%=\s*insert_object\(?\s*['"]([-\w\s\d]+)['"],\s*:(\w+)\s*(.*?)\)?\s*%>/gm;
357
348
  var matches = jQuery('#page_objects_' + parent_key).val().match(regex);
358
349
  if (matches) {
@@ -367,7 +358,7 @@ function scanForPageObjects(page_id, parent_key, version) {
367
358
  }
368
359
  });
369
360
  }
370
-
361
+
371
362
  var regex = /<%=\s*(?:page_list|pagelist)\(?\s*['"]([-\w\s\d]+)['"](.*?)\)?\s*%>/gm;
372
363
  var matches = jQuery('#page_objects_' + parent_key).val().match(regex);
373
364
  if (matches) {
@@ -382,22 +373,22 @@ function scanForPageObjects(page_id, parent_key, version) {
382
373
  }
383
374
  });
384
375
  }
385
-
376
+
386
377
  // remove the cruft
387
378
  jQuery.each(cmsPageObjects, function(key, val) {
388
- if (cmsPageObjects[key] != found[key]) {
379
+ if (cmsPageObjects[parent_key][key] != found[key]) {
389
380
  obj_key = val + '_container_obj-' + val + '-' + key.replace(/[^\w]/g, '_');
390
381
  while (jQuery('#' + obj_key).length > 0) {
391
382
  jQuery('#' + obj_key).remove();
392
383
  }
393
- cmsPageObjects[key] = null;
384
+ cmsPageObjects[parent_key][key] = null;
394
385
  }
395
386
  });
396
387
 
397
388
  // bring in the new
398
389
  jQuery.each(found, function (key, val) {
399
- if (!cmsPageObjects[key]) {
400
- cmsPageObjects[key] = val;
390
+ if (!cmsPageObjects[parent_key][key]) {
391
+ cmsPageObjects[parent_key][key] = val;
401
392
  jQuery.get('/manage/cms_pages/' + page_id + '/insert_page_object_config?version= ' + version +
402
393
  '&name=' + key + '&type=' + val + '&parent_key=' + parent_key);
403
394
  }
@@ -1,3 +1,11 @@
1
+ // fix for a Firefox 69 issue
2
+ .dojoFloatingPane {
3
+ position: fixed !important;
4
+ top: 40px;
5
+ left: 50%;
6
+ margin-left: -25%;
7
+ }
8
+
1
9
  .search-result {
2
10
  margin-bottom: 20px;
3
11
  .search-result-title { font-size: 1.1em; }
@@ -37,7 +45,7 @@ a.imagine_cms-paginator-link-selected {
37
45
 
38
46
  /* an extra classname is applied for Opera < 9.0 to fix it's lack of opacity support */
39
47
  .imgCrop_wrap.opera8 .imgCrop_overlay,
40
- .imgCrop_wrap.opera8 .imgCrop_clickArea {
48
+ .imgCrop_wrap.opera8 .imgCrop_clickArea {
41
49
  background-color: transparent;
42
50
  }
43
51
 
@@ -58,7 +66,7 @@ a.imagine_cms-paginator-link-selected {
58
66
 
59
67
  .imgCrop_selArea {
60
68
  position: absolute;
61
- /* @done_in_js
69
+ /* @done_in_js
62
70
  top: 20px;
63
71
  left: 20px;
64
72
  width: 200px;
@@ -94,16 +102,16 @@ a.imagine_cms-paginator-link-selected {
94
102
  z-index: 3;
95
103
  }
96
104
 
97
- /*
105
+ /*
98
106
  * FIX MARCHING ANTS IN IE
99
- * As IE <6 tries to load background images we can uncomment the follwoing hack
107
+ * As IE <6 tries to load background images we can uncomment the follwoing hack
100
108
  * to remove that issue, not as pretty - but is anything in IE?
101
109
  * And yes I do know that 'filter' is evil, but it will make it look semi decent in IE
102
110
  *
103
111
  * html .imgCrop_marqueeHoriz,
104
112
  * html .imgCrop_marqueeVert {
105
113
  background: transparent;
106
- filter: Invert;
114
+ filter: Invert;
107
115
  }
108
116
  * html .imgCrop_marqueeNorth { border-top: 1px dashed #000; }
109
117
  * html .imgCrop_marqueeEast { border-right: 1px dashed #000; }
@@ -143,7 +151,7 @@ a.imagine_cms-paginator-link-selected {
143
151
  cursor: n-resize;
144
152
  }
145
153
 
146
- .imgCrop_handleNE {
154
+ .imgCrop_handleNE {
147
155
  top: -3px;
148
156
  right: -3px;
149
157
  cursor: ne-resize;
@@ -189,7 +197,7 @@ a.imagine_cms-paginator-link-selected {
189
197
  }
190
198
 
191
199
  /**
192
- * Create an area to click & drag around on as the default browser behaviour is to let you drag the image
200
+ * Create an area to click & drag around on as the default browser behaviour is to let you drag the image
193
201
  */
194
202
  .imgCrop_dragArea {
195
203
  width: 100%;
@@ -34,13 +34,56 @@ div.auto_complete ul strong.highlight {
34
34
 
35
35
 
36
36
  /** column browser **/
37
+ #columnBrowserContainer {
38
+ width: 100%; max-height: 90vh;
39
+ overflow: auto;
40
+ border: 1px solid gray;
41
+ border-width: 0 0 0 1px;
42
+ }
43
+ #columnBrowserToolbar {
44
+ background-color: #ddd;
45
+ padding: 5px 4px 0;
46
+ margin: 0 0 5px;
37
47
 
48
+ a {
49
+ margin-left: 2px;
50
+ }
51
+ a:first-child { margin-left: 0; }
52
+ }
53
+ .cb_column {
54
+ overflow: auto;
55
+ float: left;
56
+ border: 1px solid gray;
57
+ border-width: 1px 1px 1px 0;
58
+ }
38
59
  .cb_item {
60
+ position: relative;
39
61
  color: black;
40
- padding-left: 2px;
41
- }
62
+ padding: 2px;
63
+ width: calc(100% - 22px);
64
+ overflow: hidden;
65
+ float: left;
66
+ cursor: pointer;
67
+
68
+ img { position: absolute; left: 5px; top: 5px; }
69
+ span {
70
+ display: block;
71
+ padding: 2px 0px 2px 20px;
72
+ -webkit-user-select: none;
73
+ -moz-user-select: none;
74
+ -ms-user-select: none;
75
+ user-select: none;
76
+ }
77
+ }
42
78
 
43
79
  .cb_item.cb_item_selected {
44
80
  color: white;
45
81
  background-color: #506D91;
46
82
  }
83
+
84
+ .cb_item.cb_item_offline {
85
+ color: gray;
86
+ }
87
+ .cb_item.cb_item_offline.cb_item_selected {
88
+ color: lightgray;
89
+ }
@@ -268,7 +268,7 @@ module Cms # :nodoc:
268
268
  def rss_feed
269
269
  min_time = Time.rfc2822(request.env["HTTP_IF_MODIFIED_SINCE"]) rescue nil
270
270
  if min_time && (Time.now - min_time) < 5.minutes
271
- render text: '', status: '304 Not Modified' and return
271
+ render plain: '', status: '304 Not Modified' and return
272
272
  end
273
273
 
274
274
  @@cms_page_table_exists ||= CmsPage.table_exists?
@@ -292,7 +292,7 @@ module Cms # :nodoc:
292
292
 
293
293
  if min_time && @most_recent_pub_date.published_date && @most_recent_pub_date.published_date <= min_time
294
294
  # use cached version
295
- render text: '', status: '304 Not Modified' and return
295
+ render plain: '', status: '304 Not Modified' and return
296
296
  end
297
297
 
298
298
  @pages.each_with_index do |page, index|