jsharmony-cms 1.4.1 → 1.5.3
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.
- package/clientjs/component/componentModel/dataModelTemplate_gridPreview.js +3 -1
- package/clientjs/jsHarmonyCMS.Editor.js +3 -0
- package/models/Branch_Clone.js +1 -3
- package/models/Branch_Clone.json +3 -1
- package/models/Branch_Diff.json +1 -1
- package/models/Branch_Summary.js +1 -1
- package/models/Dashboard_BranchOverview.css +3 -0
- package/models/Dashboard_BranchOverview.ejs +1 -1
- package/models/Menu_Tree_Info.js +5 -12
- package/models/Menu_Tree_Info.json +9 -1
- package/models/Sitemap_Tree_Info.js +5 -12
- package/models/Sitemap_Tree_Info.json +9 -1
- package/models/_funcs.deploy.js +1 -1
- package/models/_funcs.page.js +1 -1
- package/models/_funcs.template.js +49 -28
- package/package.json +3 -3
- package/public/js/jsHarmonyCMS.js +6 -1
- package/views/jsh_cms_editor.css.ejs +24 -0
- package/views/jsh_cms_editor.ejs +1 -0
|
@@ -115,7 +115,9 @@ DataModelTemplate_GridPreview.prototype.buildTemplate = function(componentTempla
|
|
|
115
115
|
model.oncommit = '_this.onCommit(xmodel, rowid, callback);';
|
|
116
116
|
model.ejs = '';
|
|
117
117
|
model.sort = { [this._sequenceFieldName]: 'asc' };
|
|
118
|
-
model.oninit =
|
|
118
|
+
model.oninit = [
|
|
119
|
+
"jsh.$root('.xform'+xmodel.class).before('<div class=\"dataGridEditor_instructions\"><span style=\"font-size:1.3em;position:relative;top:1px;margin-right:2px;margin-left:4px;\">🛈</span> Add, edit, and re-order items using the icons <span class=\"dataGridEditor_instructions_doubleClick\">:: Double-click to edit</span></div>');",
|
|
120
|
+
].join(' ');
|
|
119
121
|
model.rowclass = "<%=xejs.iif(rowid==0,'first')%>";
|
|
120
122
|
model.tableclass = ((model.tableclass||'')+' '+(componentConfig&&componentConfig.options&&componentConfig.options.component_preview_size=='collapse'?'jsharmony_cms_component_preview_collapse':'jsharmony_cms_component_preview_expand')).trim();
|
|
121
123
|
this._jsh.XPage.ParseModelDefinition(model, null, null, { ignoreErrors: true });
|
|
@@ -83,6 +83,9 @@ exports = module.exports = function(jsh, cms, toolbarContainer){
|
|
|
83
83
|
],
|
|
84
84
|
contextmenu: 'jsharmonycmscomponentcontextmenu link linkchecker image imagetools table spellchecker configurepermanentpen',
|
|
85
85
|
toolbar: 'formatselect | backcolor forecolor | bold italic underline | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image charmapmaterialicons table fullscreen | jsHarmonyCmsWebSnippet | jsHarmonyCmsComponent | jsHarmonyCmsView | jsHarmonyCmsEndEdit',
|
|
86
|
+
mobile: {
|
|
87
|
+
toolbar_mode: 'floating',
|
|
88
|
+
},
|
|
86
89
|
removed_menuitems: 'newdocument',
|
|
87
90
|
image_advtab: true,
|
|
88
91
|
menu: {
|
package/models/Branch_Clone.js
CHANGED
|
@@ -9,9 +9,7 @@ jsh.App[modelid] = new (function(){
|
|
|
9
9
|
jChangeStatus.html(XExt.renderClientEJS(tmpl, { _: _, jsh: jsh }));
|
|
10
10
|
}
|
|
11
11
|
else {
|
|
12
|
-
|
|
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
|
|
package/models/Branch_Clone.json
CHANGED
|
@@ -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":"<
|
|
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
|
]
|
package/models/Branch_Diff.json
CHANGED
|
@@ -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"},
|
package/models/Branch_Summary.js
CHANGED
|
@@ -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
|
-
|
|
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
|
}
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<%% } %%>
|
|
31
31
|
<%% _.each(cur_branch && branch_data, function(branch_item){ if(branch_item.code_val=='branch') return; %%>
|
|
32
32
|
<tr>
|
|
33
|
-
<th valign="bottom">  
|
|
33
|
+
<th valign="bottom"> <a href="<%%=jsh.globalparams.branch_items[branch_item.code_val].editor_url%%>"><%%=branch_item.code_txt%%></a></th>
|
|
34
34
|
<td valign="bottom">
|
|
35
35
|
<%%=branch_item.cnt%%>
|
|
36
36
|
</td>
|
package/models/Menu_Tree_Info.js
CHANGED
|
@@ -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
|
|
65
|
-
var
|
|
66
|
-
|
|
67
|
-
var
|
|
68
|
-
var
|
|
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
|
-
{"
|
|
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
|
|
117
|
-
var
|
|
118
|
-
|
|
119
|
-
var
|
|
120
|
-
var
|
|
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
|
-
{"
|
|
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>"},
|
package/models/_funcs.deploy.js
CHANGED
|
@@ -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
|
|
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());
|
package/models/_funcs.page.js
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
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
|
-
|
|
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)
|
|
1734
|
-
|
|
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
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
var
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
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
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
srcsets.
|
|
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
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
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.
|
|
3
|
+
"version": "1.5.3",
|
|
4
4
|
"description": "jsHarmony CMS",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
"diff2html": "3.4.1",
|
|
31
31
|
"ejs": "2.7.4",
|
|
32
32
|
"js-beautify": "^1.11.0",
|
|
33
|
-
"jsharmony": "^1.
|
|
34
|
-
"jsharmony-factory": "^1.
|
|
33
|
+
"jsharmony": "^1.4.0",
|
|
34
|
+
"jsharmony-factory": "^1.2.0",
|
|
35
35
|
"lodash": "^4.17.19",
|
|
36
36
|
"node-forge": "^0.10.0",
|
|
37
37
|
"parse5": "^6.0.1",
|
|
@@ -579,7 +579,9 @@ DataModelTemplate_GridPreview.prototype.buildTemplate = function(componentTempla
|
|
|
579
579
|
model.oncommit = '_this.onCommit(xmodel, rowid, callback);';
|
|
580
580
|
model.ejs = '';
|
|
581
581
|
model.sort = { [this._sequenceFieldName]: 'asc' };
|
|
582
|
-
model.oninit =
|
|
582
|
+
model.oninit = [
|
|
583
|
+
"jsh.$root('.xform'+xmodel.class).before('<div class=\"dataGridEditor_instructions\"><span style=\"font-size:1.3em;position:relative;top:1px;margin-right:2px;margin-left:4px;\">🛈</span> Add, edit, and re-order items using the icons <span class=\"dataGridEditor_instructions_doubleClick\">:: Double-click to edit</span></div>');",
|
|
584
|
+
].join(' ');
|
|
583
585
|
model.rowclass = "<%=xejs.iif(rowid==0,'first')%>";
|
|
584
586
|
model.tableclass = ((model.tableclass||'')+' '+(componentConfig&&componentConfig.options&&componentConfig.options.component_preview_size=='collapse'?'jsharmony_cms_component_preview_collapse':'jsharmony_cms_component_preview_expand')).trim();
|
|
585
587
|
this._jsh.XPage.ParseModelDefinition(model, null, null, { ignoreErrors: true });
|
|
@@ -6172,6 +6174,9 @@ exports = module.exports = function(jsh, cms, toolbarContainer){
|
|
|
6172
6174
|
],
|
|
6173
6175
|
contextmenu: 'jsharmonycmscomponentcontextmenu link linkchecker image imagetools table spellchecker configurepermanentpen',
|
|
6174
6176
|
toolbar: 'formatselect | backcolor forecolor | bold italic underline | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image charmapmaterialicons table fullscreen | jsHarmonyCmsWebSnippet | jsHarmonyCmsComponent | jsHarmonyCmsView | jsHarmonyCmsEndEdit',
|
|
6177
|
+
mobile: {
|
|
6178
|
+
toolbar_mode: 'floating',
|
|
6179
|
+
},
|
|
6175
6180
|
removed_menuitems: 'newdocument',
|
|
6176
6181
|
image_advtab: true,
|
|
6177
6182
|
menu: {
|
|
@@ -667,4 +667,28 @@ span[data-component] {
|
|
|
667
667
|
right:6px;
|
|
668
668
|
cursor:pointer;
|
|
669
669
|
font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif;
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
@media screen and (max-width: 500px) {
|
|
673
|
+
.jsharmony_cms .xactions.secondaryform {
|
|
674
|
+
padding-top:20px;
|
|
675
|
+
}
|
|
676
|
+
.jsharmony_cms .xactions.secondarygrid {
|
|
677
|
+
padding-top:14px;
|
|
678
|
+
}
|
|
679
|
+
.jsharmony_cms_dialog .jsharmony_cms_component_dialog > .xbodyhead {
|
|
680
|
+
position:relative;
|
|
681
|
+
}
|
|
682
|
+
.jsharmony_cms_component_dataGridEditor .dataGridEditor_instructions {
|
|
683
|
+
border-right: 2px solid #eee;
|
|
684
|
+
}
|
|
685
|
+
.dataGridEditor_instructions_doubleClick {
|
|
686
|
+
display:none;
|
|
687
|
+
}
|
|
688
|
+
.xdialogbox.jsharmony_cms_component_dialog {
|
|
689
|
+
min-width:auto !important;
|
|
690
|
+
}
|
|
691
|
+
.jsharmony_cms_component_dataGridEditor [data-component-template="gridRow"] .component_toolbar {
|
|
692
|
+
text-align:left;
|
|
693
|
+
}
|
|
670
694
|
}
|