jsharmony-cms 1.5.0 → 1.5.4

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.
@@ -101,6 +101,12 @@
101
101
  "onDeploy": true, //true (all), false (none), or array of items, ex: ["page","media"]
102
102
  "onDeploy_PostBuild": true, //true (all), false (none), or array of items, ex: ["page","media"]
103
103
  },
104
+ //Remote folders or files to ignore when deleting excess files on publish
105
+ //Use with FTP, FTPS, SFTP, S3, and Local File System deployments
106
+ "ignore_remote": [
107
+ "path/to/folder",
108
+ "path/to/file"
109
+ ]
104
110
  }
105
111
 
106
112
  //Template Variables
@@ -9,9 +9,7 @@ jsh.App[modelid] = new (function(){
9
9
  jChangeStatus.html(XExt.renderClientEJS(tmpl, { _: _, jsh: jsh }));
10
10
  }
11
11
  else {
12
- jChangeStatus.hide(); //Control
13
- jChangeStatus.prev('.xform_caption').hide(); //Caption
14
- jChangeStatus.prev().prev('br').hide(); //Newline
12
+ jsh.$root('.'+xmodel.class+'_change_status_group').hide();
15
13
  }
16
14
  };
17
15
 
@@ -28,7 +28,9 @@
28
28
  "lov":{ "sql": "select 'PUBLIC' code_val, 'Release' code_txt where ({schema}.my_user_is_publisher({schema}.my_current_site_id()) = 1) union all select 'USER' code_val, (select concat(sys_user_fname,' ',sys_user_lname) from jsharmony.sys_user where jsharmony.sys_user.sys_user_id=jsharmony.my_sys_user_id()) code_txt" } },
29
29
  {"control":"html","value":" / ","nl":false},
30
30
  {"name":"new_branch_name","actions":"BU","type":"varchar","control":"textbox","caption":"","nl":false,"validate":["Required"],"caption_ext":"New Revision Name","focus":true,"controlparams":{"placeholder":"New Revision Name"}},
31
- {"control":"html","value":"<div class='<%=model.class%>_Change_Status'></div>","caption":"Change Status","captionstyle":"vertical-align:top;font-weight:bold;padding-top:3px;"},
31
+ {"control":"html","value":"<span class='<%=model.class%>_change_status_group'>"},
32
+ {"control":"html","value":"<div class='<%=model.class%>_Change_Status'></div>","caption":"Change Status","captionclass":"Change_Status_caption","captionstyle":"vertical-align:top;font-weight:bold;padding-top:3px;"},
33
+ {"control":"html","value":"</span>"},
32
34
  {"name":"new_branch_changes","control":"hidden","type":"varchar","length":8,"actions":"BU","ongetvalue":"return _this.Change_Status_getvalue(val,field,xmodel);"},
33
35
  {"control":"button","value":"Clone","controlstyle": "padding:3px 8px;margin-top:6px;","onclick": "if(!xmodel.controller.form.Data.Commit()) return; XForm.prototype.XExecutePost(xmodel.id+'/?branch_id='+xmodel.get('branch_id'), { new_branch_type: xmodel.get('new_branch_type'), new_branch_name: xmodel.get('new_branch_name'), new_branch_changes: xmodel.get('new_branch_changes') }, function(rslt){ xmodel.controller.form.ResetDirty(); XExt.navTo(jsh._BASEURL+xmodel.module_namespace+'Sitemap_Listing_Redirect'); });"}
34
36
  ]
@@ -17,7 +17,7 @@
17
17
  {"name":"branch_user_id_fmt","caption":"Author","control":"label","sqlselect":"(jsharmony.get_sys_user_name(branch_user_id))"},
18
18
  {"name":"branch_sts","caption":"Status","control":"label"},
19
19
  {"name":"branch_data_mtstmp_fmt","type":"datetime","caption":"Last Modified","sqlselect":"$ifnull(branch_data_mtstmp,branch_mtstmp)","control":"label","format":["date","MM/DD/YYYY h:mm a"]},
20
- {"caption":"Actions","control":"html","captionstyle":"display:none;vertical-align:top;padding-top:5px;font-weight:bold;text-align:right;",
20
+ {"caption":"Actions","control":"html","captionstyle":"display:none;vertical-align:top;padding-top:5px;font-weight:bold;text-align:right;","captionclass":"actions_bar_caption",
21
21
  "value":"<div class='<%=model.class%>_actions_bar jsHarmonyCms_Branch_Summary_Actions_Bar'></div>"},
22
22
  {"name":"branch_merge_desc","caption":"Merge In Progress","control":"label","captionstyle":"font-weight:bold;text-align:right;","block":true,"blockclass":"branch_merge_desc","sqlselect":"(select branch_desc from {schema}.branch merge_branch inner join {schema}.v_my_branch_desc merge_branch_desc on (merge_branch.branch_id=v_my_branch_desc.branch_id and merge_branch.branch_merge_id=merge_branch_desc.branch_id))"},
23
23
  {"name":"branch_type","control":"hidden"},
@@ -19,7 +19,7 @@ jsh.App[modelid] = new (function(){
19
19
  }
20
20
  var diffModel = jsh.XModels[jsh.$root('.xform'+xmodel.class+' .xsubform_diff .xpanel .xform').first().data('id')];
21
21
  var actionsBar = jsh.$root('.'+diffModel.class+'_actions_bar');
22
- actionsBar.prev('.xform_caption').show();
22
+ jsh.$root('.xform'+diffModel.class+' .actions_bar_caption').show();
23
23
  var buttonGroup = jsh.$root('.xactions_group.xelem'+xmodel.class+'[data-group="Actions"]');
24
24
  actionsBar.html(buttonGroup.html());
25
25
  }
@@ -61,18 +61,11 @@ jsh.App[modelid] = new (function(){
61
61
  this.updateEnabledState = function(){
62
62
  var menu_item_link_type = xmodel.get('menu_item_link_type');
63
63
 
64
- var jtarget = $('.menu_item_link_target.xelem'+xmodel.class);
65
- var jtarget_group = jtarget.add(jtarget.prevUntil('.xelem'+xmodel.class));
66
-
67
- var jdest = $('.menu_item_link_dest.xelem'+xmodel.class);
68
- var jdestcaption = jdest.prev();
69
- var jdest_group = jdest.add(jdest.prevUntil('.xelem'+xmodel.class));
70
-
71
- var jdest_page = $('.menu_item_link_page.xelem'+xmodel.class);
72
- var jdest_page_group = jdest_page.add(jdest_page.prevUntil('.xelem'+xmodel.class)).add(jdest_page.next('.xelem'+xmodel.class));
73
-
74
- var jdest_media = $('.menu_item_link_media.xelem'+xmodel.class);
75
- var jdest_media_group = jdest_media.add(jdest_media.prevUntil('.xelem'+xmodel.class)).add(jdest_media.next('.xelem'+xmodel.class));
64
+ var jtarget_group = $('.'+xmodel.class+'_link_target_group');
65
+ var jdestcaption = $('.sitemap_item_link_dest_caption');
66
+ var jdest_group = $('.'+xmodel.class+'_link_dest_group');
67
+ var jdest_page_group = $('.'+xmodel.class+'_link_page_group');
68
+ var jdest_media_group = $('.'+xmodel.class+'_link_media_group');
76
69
 
77
70
  var enable_target = true;
78
71
  var enable_dest = false;
@@ -20,18 +20,26 @@
20
20
  {"name":"menu_item_path","control":"hidden"},
21
21
  {"name":"menu_item_text","control":"textbox_M","caption":"Text","controlstyle":"width:300px;","validate":["Required"],"nl":true,"onchange":"_this.menu_item_text_onchange(obj,newval);", "captionstyle":"width:68px;"},
22
22
  {"name":"menu_item_link_type","control":"dropdown","caption":"Link Type","lov":{ "blank": "(No Link)", "values": { "JS": "JavaScript", "MEDIA": "Media", "PAGE": "Page", "URL": "URL" } }, "onchange":"_this.menu_item_link_type_onchange(obj, newval, undoChange);","nl":true},
23
+ {"control":"html","value":"<span class='<%=model.class%>_link_target_group'>"},
23
24
  {"name":"menu_item_link_target","control":"dropdown","caption":"Target","lov":{ "blank": "Same Window", "values": { "NEWWIN": "New Window" } }},
25
+ {"control":"html","value":"</span>"},
24
26
 
25
- {"name":"menu_item_link_dest","control":"textbox_L","caption":"Destination","controlstyle":"width:300px;","nl":true,
27
+ {"control":"html","value":"<span class='<%=model.class%>_link_dest_group'>"},
28
+ {"name":"menu_item_link_dest","control":"textbox_L","caption":"Destination","captionclass":"menu_item_link_dest_caption","controlstyle":"width:300px;","nl":true,
26
29
  "validate":[{"function":"js:if((_obj.menu_item_link_type=='URL') && !_obj.menu_item_link_dest) return 'URL is required'; if((_obj.menu_item_link_type=='JS') && !_obj.menu_item_link_dest) return 'JS is required';"}]},
30
+ {"control":"html","value":"</span>"},
27
31
 
32
+ {"control":"html","value":"<span class='<%=model.class%>_link_page_group'>"},
28
33
  {"name":"menu_item_link_page","control":"textbox_M","caption":"Page","controlstyle":"margin-right:4px;","readonly":true,"nl":true,
29
34
  "validate":[{"function":"js:if((_obj.menu_item_link_type=='PAGE') && !_obj.menu_item_link_dest) return 'Page is required';"}]},
30
35
  {"name":"menu_item_link_page_browse","control":"button","value":"Browse","onclick":"js:_this.browsePage();","actions":"IU"},
36
+ {"control":"html","value":"</span>"},
31
37
 
38
+ {"control":"html","value":"<span class='<%=model.class%>_link_media_group'>"},
32
39
  {"name":"menu_item_link_media","control":"textbox_M","caption":"Media","controlstyle":"margin-right:4px;","readonly":true,"nl":true,
33
40
  "validate":[{"function":"js:if((_obj.menu_item_link_type=='MEDIA') && !_obj.menu_item_link_dest) return 'Media is required';"}]},
34
41
  {"name":"menu_item_link_media_browse","control":"button","value":"Browse","onclick":"js:_this.browseMedia();","actions":"IU"},
42
+ {"control":"html","value":"</span>"},
35
43
 
36
44
  {"control":"html","value":"<div class='<%=model.class%>_divider'>:: Advanced Options</div>","nl":true},
37
45
  {"name":"menu_item_type","control":"dropdown","caption":"Render As","default":"TEXT","lov":{ "blank": false, "values": { "TEXT": "Text", "HTML": "HTML" } }, "captionstyle":"width:130px;"},
@@ -113,18 +113,11 @@ jsh.App[modelid] = new (function(){
113
113
  this.render = function(){
114
114
  var sitemap_item_link_type = xmodel.get('sitemap_item_link_type');
115
115
 
116
- var jtarget = $('.sitemap_item_link_target.xelem'+xmodel.class);
117
- var jtarget_group = jtarget.add(jtarget.prevUntil('.xelem'+xmodel.class));
118
-
119
- var jdest = $('.sitemap_item_link_dest.xelem'+xmodel.class);
120
- var jdestcaption = jdest.prev();
121
- var jdest_group = jdest.add(jdest.prevUntil('.xelem'+xmodel.class));
122
-
123
- var jdest_page = $('.sitemap_item_link_page.xelem'+xmodel.class);
124
- var jdest_page_group = jdest_page.add(jdest_page.prevUntil('.xelem'+xmodel.class)).add(jdest_page.next('.xelem'+xmodel.class));
125
-
126
- var jdest_media = $('.sitemap_item_link_media.xelem'+xmodel.class);
127
- var jdest_media_group = jdest_media.add(jdest_media.prevUntil('.xelem'+xmodel.class)).add(jdest_media.next('.xelem'+xmodel.class));
116
+ var jtarget_group = $('.'+xmodel.class+'_link_target_group');
117
+ var jdestcaption = $('.sitemap_item_link_dest_caption');
118
+ var jdest_group = $('.'+xmodel.class+'_link_dest_group');
119
+ var jdest_page_group = $('.'+xmodel.class+'_link_page_group');
120
+ var jdest_media_group = $('.'+xmodel.class+'_link_media_group');
128
121
 
129
122
  var enable_target = true;
130
123
  var enable_dest = false;
@@ -30,18 +30,26 @@
30
30
  {"name":"sitemap_item_path","control":"hidden"},
31
31
  {"name":"sitemap_item_text","control":"textbox_M","controlstyle":"width:300px;","caption":"Link Text","validate":["Required"],"nl":true,"onchange":"_this.sitemap_item_text_onchange(obj,newval);", "captionstyle":"width:68px;"},
32
32
  {"name":"sitemap_item_link_type","control":"dropdown","caption":"Link Type","lov":{ "blank": "(No Link)", "values": { "JS": "JavaScript", "MEDIA": "Media", "PAGE": "Page", "URL": "URL" } }, "onchange":"_this.sitemap_item_link_type_onchange(obj, newval, undoChange);","nl":true},
33
+ {"control":"html","value":"<span class='<%=model.class%>_link_target_group'>"},
33
34
  {"name":"sitemap_item_link_target","control":"dropdown","caption":"Target","lov":{ "blank": "Same Window", "values": { "NEWWIN": "New Window" } }},
35
+ {"control":"html","value":"</span>"},
34
36
 
35
- {"name":"sitemap_item_link_dest","control":"textbox_L","caption":"Destination","controlstyle":"width:300px;","nl":true,
37
+ {"control":"html","value":"<span class='<%=model.class%>_link_dest_group'>"},
38
+ {"name":"sitemap_item_link_dest","control":"textbox_L","caption":"Destination","captionclass":"sitemap_item_link_dest_caption","controlstyle":"width:300px;","nl":true,
36
39
  "validate":[{"function":"js:if((_obj.sitemap_item_link_type=='URL') && !_obj.sitemap_item_link_dest) return 'URL is required'; if((_obj.sitemap_item_link_type=='JS') && !_obj.sitemap_item_link_dest) return 'JS is required';"}]},
40
+ {"control":"html","value":"</span>"},
37
41
 
42
+ {"control":"html","value":"<span class='<%=model.class%>_link_page_group'>"},
38
43
  {"name":"sitemap_item_link_page","control":"textbox_M","caption":"Page","controlstyle":"margin-right:4px;","readonly":true,"nl":true,
39
44
  "validate":[{"function":"js:if((_obj.sitemap_item_link_type=='PAGE') && !_obj.sitemap_item_link_dest) return 'Page is required';"}]},
40
45
  {"name":"sitemap_item_link_page_browse","control":"button","value":"Browse","onclick":"js:_this.browsePage();","actions":"IU"},
46
+ {"control":"html","value":"</span>"},
41
47
 
48
+ {"control":"html","value":"<span class='<%=model.class%>_link_media_group'>"},
42
49
  {"name":"sitemap_item_link_media","control":"textbox_M","caption":"Media","controlstyle":"margin-right:4px;","readonly":true,"nl":true,
43
50
  "validate":[{"function":"js:if((_obj.sitemap_item_link_type=='MEDIA') && !_obj.sitemap_item_link_dest) return 'Media is required';"}]},
44
51
  {"name":"sitemap_item_link_media_browse","control":"button","value":"Browse","onclick":"js:_this.browseMedia();","actions":"IU"},
52
+ {"control":"html","value":"</span>"},
45
53
 
46
54
  {"control":"html","value":"<div class='<%=model.class%>_page_options'>"},
47
55
  {"control":"html","value":"<div class='<%=model.class%>_divider'>:: Page</div>"},
@@ -1835,7 +1835,7 @@ module.exports = exports = function(module, funcs){
1835
1835
  function(generate_cb){
1836
1836
  async.eachOfSeries(branchData.site_config.media_thumbnails, function(thumbnail_config, thumbnail_id, thumbnail_cb){
1837
1837
  if(!thumbnail_config || !thumbnail_config.export) return thumbnail_cb();
1838
- if(!_.includes(['.jpg','.jpeg','.tif','.tiff','.png','.gif','.svg'], media.media_ext)) return cb();
1838
+ if(!_.includes(['.jpg','.jpeg','.tif','.tiff','.png','.gif','.svg'], media.media_ext)) return thumbnail_cb();
1839
1839
 
1840
1840
  funcs.getMediaFile(media.media_file_id, media.media_filename, media.media_ext, thumbnail_id, thumbnail_config, function(err, thumbnail_srcpath, thumbnail_fname, stat){
1841
1841
  if(err) return thumbnail_cb('Error getting thumbnail for '+media_fpath+':'+thumbnail_id+' - '+err.toString());
@@ -2011,27 +2011,16 @@ module.exports = exports = function(module, funcs){
2011
2011
 
2012
2012
  exports.deploy_ignore_remote = function(publish_params, fpath){
2013
2013
  if(fpath=='.git') return true;
2014
- return false;
2015
- /*
2016
2014
  if(!publish_params || !publish_params.ignore_remote) return false;
2017
- var origpath = fpath;
2018
2015
  fpath = HelperFS.convertWindowsToPosix(fpath);
2019
- while(fpath){
2020
- for(var i=0;i<publish_params.ignore_remote.length;i++){
2021
- var ignore_expr = publish_params.ignore_remote[i];
2022
- if(!ignore_expr) continue;
2023
- if(ignore_expr.regex){
2024
- }
2025
- else {
2026
- if(ignore_expr == fpath) return true;
2027
- }
2028
- }
2029
- fpath = path.dirname(fpath);
2030
- if(fpath=='.') fpath = '';
2031
- if(fpath=='..') fpath = '';
2016
+ for(var i=0;i<publish_params.ignore_remote.length;i++){
2017
+ var ignore_expr = publish_params.ignore_remote[i];
2018
+ if(!ignore_expr) continue;
2019
+ var ignore_path = HelperFS.convertWindowsToPosix(ignore_expr.toString());
2020
+ if(ignore_path == fpath) return true;
2021
+ if(fpath.indexOf(ignore_path+'/')==0) return true;
2032
2022
  }
2033
- return true;
2034
- */
2023
+ return false;
2035
2024
  }
2036
2025
 
2037
2026
  exports.deploy_fs = function(deployment, publish_path, deploy_path, site_files, cb){
@@ -2613,7 +2602,9 @@ module.exports = exports = function(module, funcs){
2613
2602
  if(site_md5 != s3_md5) s3_upload.push(fname);
2614
2603
  }
2615
2604
  else {
2616
- s3_delete.push(fname);
2605
+ if(!funcs.deploy_ignore_remote(deployment.publish_params, fname)){
2606
+ s3_delete.push(fname);
2607
+ }
2617
2608
  }
2618
2609
  }
2619
2610
  for(var fname in site_files){
@@ -447,7 +447,7 @@ module.exports = exports = function(module, funcs){
447
447
  var rslt = funcs.replaceBranchURLs(content, _.extend({ replaceComponents: true }, options, {
448
448
  getMediaURL: function(media_key, thumbnail_id, branchData, getLinkContent, urlparts){
449
449
  if(!media_files){
450
- return baseurl + urlparts.path.substr(1) + '#@JSHCMS';
450
+ return baseurl + urlparts.pathname.substr(1) + '#@JSHCMS';
451
451
  }
452
452
  return baseurl+'_funcs/media/'+media_key+(thumbnail_id?'/'+thumbnail_id:'')+'/?media_id='+media_files[media_key].media_id+'#@JSHCMS';
453
453
  },
@@ -1693,7 +1693,8 @@ module.exports = exports = function(module, funcs){
1693
1693
  if(thumbnails[key].responsive) responsiveThumbnails[key] = thumbnails[key];
1694
1694
  }
1695
1695
 
1696
- if(_.isEmpty(responsiveThumbnails)) return content;
1696
+ var lcontent = content.toLowerCase();
1697
+ if(_.isEmpty(responsiveThumbnails) && (lcontent.indexOf('cms-image-dimensions') < 0)) return content;
1697
1698
 
1698
1699
  //If no img tags, return
1699
1700
  if(content.toLowerCase().indexOf('img') < 0) return content;
@@ -1705,7 +1706,7 @@ module.exports = exports = function(module, funcs){
1705
1706
  exec: function(node){
1706
1707
  var src = (htdoc.getAttr(node, 'src')||'').toString();
1707
1708
  if(!src) return;
1708
- if(htdoc.hasAttr(node, 'srcset')) return;
1709
+ if(htdoc.hasAttr(node, 'srcset') && !htdoc.hasAttr(node, 'cms-image-dimensions')) return;
1709
1710
 
1710
1711
  //Check for #@JSHCMS
1711
1712
  var urlparts = null;
@@ -1727,42 +1728,62 @@ module.exports = exports = function(module, funcs){
1727
1728
  //Check if media_key is valid
1728
1729
  var media_item = media_items[media_key];
1729
1730
  var media_width = 0;
1730
- if(media_item && media_item.media_width) media_width = media_item.media_width;
1731
+ var media_height = 0;
1732
+ if(media_item){
1733
+ if(media_item.media_width) media_width = media_item.media_width;
1734
+ if(media_item.media_height) media_height = media_item.media_height;
1735
+ }
1731
1736
  if(media_thumbnail && (media_thumbnail in thumbnails)){
1732
1737
  var tgtThumbnail = thumbnails[media_thumbnail];
1733
- if(tgtThumbnail.resize && tgtThumbnail.resize.length) media_width = tgtThumbnail.resize[0];
1734
- else if(tgtThumbnail.crop && tgtThumbnail.crop.length) media_width = tgtThumbnail.crop[0];
1738
+ if(tgtThumbnail.resize && tgtThumbnail.resize.length){
1739
+ media_width = tgtThumbnail.resize[0];
1740
+ media_height = tgtThumbnail.resize[1];
1741
+ }
1742
+ else if(tgtThumbnail.crop && tgtThumbnail.crop.length){
1743
+ media_width = tgtThumbnail.crop[0];
1744
+ media_height = tgtThumbnail.crop[1];
1745
+ }
1735
1746
  }
1736
1747
 
1737
- var srcsets = [];
1738
- var max_width = media_width;
1739
- for(var thumbnail_id in responsiveThumbnails){
1740
- var thumbnail = responsiveThumbnails[thumbnail_id];
1741
- var srcsetCondition = '';
1742
- if(_.isString(thumbnail.responsive)) srcsetCondition = thumbnail.responsive;
1743
- else {
1744
- var thumbnail_width = 0;
1745
- if(media_item && media_item.media_width) thumbnail_width = media_item.media_width;
1746
- if(thumbnail.resize && thumbnail.resize.length) thumbnail_width = thumbnail.resize[0];
1747
- else if(thumbnail.crop && thumbnail.crop.length) thumbnail_width = thumbnail.crop[0];
1748
-
1749
- if(thumbnail_width && (!media_width || (thumbnail_width < media_width))){
1750
- srcsetCondition = thumbnail_width + 'w';
1751
- if(thumbnail_width >= max_width) max_width = thumbnail_width + 1;
1748
+ if(!htdoc.hasAttr(node, 'srcset')){
1749
+ var srcsets = [];
1750
+ var max_width = media_width;
1751
+ for(var thumbnail_id in responsiveThumbnails){
1752
+ var thumbnail = responsiveThumbnails[thumbnail_id];
1753
+ var srcsetCondition = '';
1754
+ if(_.isString(thumbnail.responsive)) srcsetCondition = thumbnail.responsive;
1755
+ else {
1756
+ var thumbnail_width = 0;
1757
+ if(media_item && media_item.media_width) thumbnail_width = media_item.media_width;
1758
+ if(thumbnail.resize && thumbnail.resize.length) thumbnail_width = thumbnail.resize[0];
1759
+ else if(thumbnail.crop && thumbnail.crop.length) thumbnail_width = thumbnail.crop[0];
1760
+
1761
+ if(thumbnail_width && (!media_width || (thumbnail_width < media_width))){
1762
+ srcsetCondition = thumbnail_width + 'w';
1763
+ if(thumbnail_width >= max_width) max_width = thumbnail_width + 1;
1764
+ }
1765
+ }
1766
+
1767
+ if(srcsetCondition){
1768
+ //Generate srcset
1769
+ var srcsetUrl = urlparts.protocol+'//'+urlparts.host+'/_funcs/media/'+media_key+'/'+thumbnail_id+'/#@JSHCMS'+urlparts.hash.substr(('#@JSHCMS').length);
1770
+ srcsets.push(srcsetUrl+' '+srcsetCondition);
1752
1771
  }
1753
1772
  }
1754
1773
 
1755
- if(srcsetCondition){
1756
- //Generate srcset
1757
- var srcsetUrl = urlparts.protocol+'//'+urlparts.host+'/_funcs/media/'+media_key+'/'+thumbnail_id+'/#@JSHCMS'+urlparts.hash.substr(('#@JSHCMS').length);
1758
- srcsets.push(srcsetUrl+' '+srcsetCondition);
1774
+ //Update img tag
1775
+ if(srcsets.length){
1776
+ srcsets.unshift(src + ' ' + max_width + 'w');
1777
+ htdoc.appendAttr(node, 'srcset', srcsets.join(', '), 'srcset');
1759
1778
  }
1760
1779
  }
1761
1780
 
1762
- //Update img tag
1763
- if(srcsets.length){
1764
- srcsets.push(src + ' ' + max_width + 'w');
1765
- htdoc.appendAttr(node, 'srcset', srcsets.join(', '), 'srcset');
1781
+ if(media_width && media_height && htdoc.hasAttr(node, 'cms-image-dimensions')){
1782
+ if(!htdoc.hasAttr(node, 'width') && !htdoc.hasAttr(node, 'height')){
1783
+ htdoc.appendAttr(node, 'width', media_width.toString());
1784
+ htdoc.appendAttr(node, 'height', media_height.toString());
1785
+ htdoc.removeAttr(node, 'cms-image-dimensions');
1786
+ }
1766
1787
  }
1767
1788
  }
1768
1789
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jsharmony-cms",
3
- "version": "1.5.0",
3
+ "version": "1.5.4",
4
4
  "description": "jsHarmony CMS",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -30,7 +30,7 @@
30
30
  "diff2html": "3.4.1",
31
31
  "ejs": "2.7.4",
32
32
  "js-beautify": "^1.11.0",
33
- "jsharmony": "^1.4.0",
33
+ "jsharmony": "^1.5.2",
34
34
  "jsharmony-factory": "^1.2.0",
35
35
  "lodash": "^4.17.19",
36
36
  "node-forge": "^0.10.0",
@@ -281,6 +281,7 @@ cms-content-editor
281
281
  cms-content-editor-type
282
282
  cms-component-editor-remove-class
283
283
  cms-component-editor-add-class
284
+ cms-image-dimensions
284
285
 
285
286
  ===================
286
287
  EJS Container Slurp