jsharmony-cms 1.12.2 → 1.13.0
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/jsHarmonyCMS.Component.js +5 -0
- package/clientjs/jsHarmonyCMS.Editor.TinyMCEPlugin.js +11 -0
- package/jsHarmonyCMS.js +3 -4
- package/jsHarmonyCMSConfig.js +1 -0
- package/models/Publish_Log.js +5 -0
- package/models/_funcs.deploy.js +10 -1
- package/models/sql/_functions.mssql.json +4 -4
- package/models/sql/_functions.pgsql.json +4 -4
- package/models/sql/_functions.sqlite.json +4 -4
- package/models/sql/objects/deployment.json +3 -1
- package/models/sql/scripts/upgrade/1-13-0.mssql.sql +3 -0
- package/models/sql/scripts/upgrade/1-13-0.pgsql.sql +3 -0
- package/models/sql/scripts/upgrade/1-13-0.sqlite.sql +3 -0
- package/package.json +1 -1
- package/public/js/jsHarmonyCMS.js +16 -0
|
@@ -221,6 +221,11 @@ exports = module.exports = function(componentId, element, cms, jsh, componentCon
|
|
|
221
221
|
jsh.async.each(
|
|
222
222
|
$element.find('[data-component]'),
|
|
223
223
|
function(el, el_cb) {
|
|
224
|
+
var $el = jsh.$(el);
|
|
225
|
+
if(!$el.hasClass('initialized')){
|
|
226
|
+
$el.addClass('initialized');
|
|
227
|
+
$el.attr('data-component-id', cms.componentManager.getNextComponentId());
|
|
228
|
+
}
|
|
224
229
|
cms.componentManager.renderContentComponent(el, undefined, el_cb);
|
|
225
230
|
},
|
|
226
231
|
callback
|
|
@@ -898,6 +898,17 @@ exports = module.exports = function(jsh, cms, editor){
|
|
|
898
898
|
continue;
|
|
899
899
|
}
|
|
900
900
|
node.attr('data-component-id', null);
|
|
901
|
+
if(node.attr('class')){
|
|
902
|
+
var cls = node.attr('class').toString().trim().split(' ');
|
|
903
|
+
var newcls = '';
|
|
904
|
+
if(cls.indexOf('initialized')>=0){
|
|
905
|
+
for(var j=0;j<cls.length;j++){
|
|
906
|
+
if(!cls[j] || (cls[j]=='initialized')) continue;
|
|
907
|
+
newcls += cls[j] + ' ';
|
|
908
|
+
}
|
|
909
|
+
node.attr('class', newcls.trim() || null);
|
|
910
|
+
}
|
|
911
|
+
}
|
|
901
912
|
node.empty();
|
|
902
913
|
var newNode = tinymce.html.Node.create('#text');
|
|
903
914
|
newNode.value = String.fromCharCode(0x00A0);
|
package/jsHarmonyCMS.js
CHANGED
|
@@ -126,7 +126,7 @@ jsHarmonyCMS.prototype.Init = function(cb){
|
|
|
126
126
|
function(ready_cb){
|
|
127
127
|
var sql = 'update '+(_this.schema?_this.schema+'.':'')+"deployment set deployment_sts='FAILED' where deployment_sts='RUNNING';";
|
|
128
128
|
if(_this.Config.debug_params.auto_restart_failed_publish){
|
|
129
|
-
sql = 'insert into '+(_this.schema?_this.schema+'.':'')+"deployment(deployment_tag, branch_id, deployment_date, deployment_target_id) select concat(deployment_tag,'#'), branch_id, deployment_date, deployment_target_id from "+(_this.schema?_this.schema+'.':'')+"deployment where deployment_sts='RUNNING';" + sql;
|
|
129
|
+
sql = 'insert into '+(_this.schema?_this.schema+'.':'')+"deployment(deployment_tag, branch_id, deployment_date, deployment_target_id, deployment_params) select concat(deployment_tag,'#'), branch_id, deployment_date, deployment_target_id, deployment_params from "+(_this.schema?_this.schema+'.':'')+"deployment where deployment_sts='RUNNING';" + sql;
|
|
130
130
|
}
|
|
131
131
|
jsh.AppSrv.ExecCommand('system', sql, [], { }, function (err, rslt) {
|
|
132
132
|
if (err) { jsh.Log.error(err); }
|
|
@@ -797,10 +797,9 @@ jsHarmonyCMS.prototype.getFactoryConfig = function(){
|
|
|
797
797
|
configFactory.scheduled_tasks['deploy'] = {
|
|
798
798
|
action: configFactory.Helper.JobProc.ExecuteSQL('jsHarmonyCMS_GetNextDeployment', function(rslt){
|
|
799
799
|
if(_this.funcs.deploymentQueue.length()) return;
|
|
800
|
-
|
|
801
|
-
var deployment = rslt[0][0];
|
|
800
|
+
_.each(rslt && rslt.length && rslt[0], function(deployment){
|
|
802
801
|
_this.funcs.deploy.call(_this.jsh.AppSrv, deployment.deployment_id);
|
|
803
|
-
}
|
|
802
|
+
});
|
|
804
803
|
}),
|
|
805
804
|
options: {
|
|
806
805
|
quiet: true
|
package/jsHarmonyCMSConfig.js
CHANGED
|
@@ -142,6 +142,7 @@ function jsHarmonyCMSConfig(){
|
|
|
142
142
|
this.onRender = null; //function(target, content, callback){ return callback(new_content); } //target = 'editor', 'publish'
|
|
143
143
|
this.onRouteLinkBrowser = null; //function(jsh, req, res, model, callback){ return callback(); } //callback(false) to stop further processing
|
|
144
144
|
this.onReplaceBranchURL = null; //function(url, branchData, getLinkContent, addUrlSuffix, options){ return url; } //return a value (not undefined) to stop processing
|
|
145
|
+
this.onDeploy_Init = null; //function(jsh, deployment_id, deployment, callback(err, stopDeployment)){ return callback(err); }
|
|
145
146
|
this.onDeploy_LoadData = null; //function(jsh, branchData, template_variables, callback){ return callback(err); }
|
|
146
147
|
this.onValidate_LoadData = null; //function(jsh, branchData, template_variables, callback){ return callback(err); }
|
|
147
148
|
this.onDeploy_GenerateRedirects = null; //function(jsh, branchData, template_variables, callback){ return callback(err, generated_redirect_files); }
|
package/models/Publish_Log.js
CHANGED
|
@@ -6,6 +6,8 @@ jsh.App[modelid] = new (function(){
|
|
|
6
6
|
var sleepsWithoutUpdate = 0;
|
|
7
7
|
var lastLog = '';
|
|
8
8
|
|
|
9
|
+
this.onPublishComplete = null;
|
|
10
|
+
|
|
9
11
|
this.onload = function(){
|
|
10
12
|
this.updateButtons(xmodel.get('deployment_sts'));
|
|
11
13
|
//Load API Data
|
|
@@ -71,6 +73,9 @@ jsh.App[modelid] = new (function(){
|
|
|
71
73
|
}
|
|
72
74
|
//Auto-refresh
|
|
73
75
|
if(_.includes(['PENDING','RUNNING'], deployment_sts)) setTimeout(function(){ _this.loadData(); }, _this.getSleepTime());
|
|
76
|
+
else{
|
|
77
|
+
if(_this.onPublishComplete) _this.onPublishComplete();
|
|
78
|
+
}
|
|
74
79
|
|
|
75
80
|
initialized = true;
|
|
76
81
|
}
|
package/models/_funcs.deploy.js
CHANGED
|
@@ -535,7 +535,7 @@ module.exports = exports = function(module, funcs){
|
|
|
535
535
|
|
|
536
536
|
//Update deployment to running status
|
|
537
537
|
var sql = "select \
|
|
538
|
-
deployment_id, dt.site_id, deployment_tag, deployment_target_name, deployment_target_publish_path, deployment_target_template_variables, deployment_target_publish_config, deployment_target_sts, deployment_git_revision, \
|
|
538
|
+
deployment_id, dt.site_id, deployment_tag, deployment_params, deployment_target_name, deployment_target_publish_path, deployment_target_template_variables, deployment_target_publish_config, deployment_target_sts, deployment_git_revision, \
|
|
539
539
|
d.deployment_target_id, \
|
|
540
540
|
(select param_cur_val from jsharmony.v_param_cur where param_cur_process='CMS' and param_cur_attrib='PUBLISH_TGT') publish_tgt, \
|
|
541
541
|
site.site_default_page_filename site_default_page_filename \
|
|
@@ -554,6 +554,15 @@ module.exports = exports = function(module, funcs){
|
|
|
554
554
|
if(!deployment) { let err = 'Invalid Deployment ID'; funcs.deploy_log_error(deployment_id, err); return onComplete(err); }
|
|
555
555
|
|
|
556
556
|
async.waterfall([
|
|
557
|
+
|
|
558
|
+
function(deploy_cb){
|
|
559
|
+
if(!module.Config.onDeploy_Init) return deploy_cb();
|
|
560
|
+
module.Config.onDeploy_Init(jsh, deployment_id, deployment, function(err, stopDeployment){
|
|
561
|
+
if(err){ funcs.deploy_log_error(deployment_id, err); return onComplete(err); }
|
|
562
|
+
if(stopDeployment) return onComplete();
|
|
563
|
+
return deploy_cb();
|
|
564
|
+
});
|
|
565
|
+
},
|
|
557
566
|
|
|
558
567
|
//Change status to RUNNING
|
|
559
568
|
function(deploy_cb){
|
|
@@ -60,15 +60,15 @@
|
|
|
60
60
|
]
|
|
61
61
|
},
|
|
62
62
|
"{schema}.insert_deployment":{
|
|
63
|
-
"params": ["site_id", "deployment_target_id", "branch_id", "deployment_date", "deployment_tag"],
|
|
63
|
+
"params": ["site_id", "deployment_target_id", "branch_id", "deployment_date", "deployment_tag", { "name": "deployment_params", "default": null }],
|
|
64
64
|
"sql": [
|
|
65
|
-
"insert into {schema}.v_my_deployment(site_id, deployment_target_id, branch_id, deployment_date, deployment_tag) values(%%%site_id%%%, %%%deployment_target_id%%%, %%%branch_id%%%, %%%deployment_date%%%, %%%deployment_tag%%%);"
|
|
65
|
+
"insert into {schema}.v_my_deployment(site_id, deployment_target_id, branch_id, deployment_date, deployment_tag, deployment_params) values(%%%site_id%%%, %%%deployment_target_id%%%, %%%branch_id%%%, %%%deployment_date%%%, %%%deployment_tag%%%, %%%deployment_params%%%);"
|
|
66
66
|
]
|
|
67
67
|
},
|
|
68
68
|
"{schema}.insert_redeployment":{
|
|
69
|
-
"params": ["src_deployment_id", "deployment_target_id", "deployment_date", "deployment_tag"],
|
|
69
|
+
"params": ["src_deployment_id", "deployment_target_id", "deployment_date", "deployment_tag", { "name": "deployment_params", "default": null }],
|
|
70
70
|
"sql": [
|
|
71
|
-
"insert into {schema}.v_my_deployment(site_id, deployment_target_id, branch_id, deployment_date, deployment_tag, deployment_git_revision) select site_id, %%%deployment_target_id%%%, branch_id, %%%deployment_date%%%, %%%deployment_tag%%%, deployment_git_revision from {schema}.v_my_deployment where deployment_id=%%%src_deployment_id%%%;"
|
|
71
|
+
"insert into {schema}.v_my_deployment(site_id, deployment_target_id, branch_id, deployment_date, deployment_tag, deployment_params, deployment_git_revision) select site_id, %%%deployment_target_id%%%, branch_id, %%%deployment_date%%%, %%%deployment_tag%%%, %%%deployment_params%%%, deployment_git_revision from {schema}.v_my_deployment where deployment_id=%%%src_deployment_id%%%;"
|
|
72
72
|
]
|
|
73
73
|
},
|
|
74
74
|
"jsHarmonyCMS_Upload": "insert into {tgtschema}.v_my_{item}({columns}) values ({values});",
|
|
@@ -60,15 +60,15 @@
|
|
|
60
60
|
]
|
|
61
61
|
},
|
|
62
62
|
"{schema}.insert_deployment":{
|
|
63
|
-
"params": ["site_id", "deployment_target_id", "branch_id", "deployment_date", "deployment_tag"],
|
|
63
|
+
"params": ["site_id", "deployment_target_id", "branch_id", "deployment_date", "deployment_tag", { "name": "deployment_params", "default": null }],
|
|
64
64
|
"sql": [
|
|
65
|
-
"insert into {schema}.v_my_deployment(site_id, deployment_target_id, branch_id, deployment_date, deployment_tag) values(%%%site_id%%%, %%%deployment_target_id%%%, %%%branch_id%%%, %%%deployment_date%%%, %%%deployment_tag%%%) returning deployment_id;"
|
|
65
|
+
"insert into {schema}.v_my_deployment(site_id, deployment_target_id, branch_id, deployment_date, deployment_tag, deployment_params) values(%%%site_id%%%, %%%deployment_target_id%%%, %%%branch_id%%%, %%%deployment_date%%%, %%%deployment_tag%%%, %%%deployment_params%%%) returning deployment_id;"
|
|
66
66
|
]
|
|
67
67
|
},
|
|
68
68
|
"{schema}.insert_redeployment":{
|
|
69
|
-
"params": ["src_deployment_id", "deployment_target_id", "deployment_date", "deployment_tag"],
|
|
69
|
+
"params": ["src_deployment_id", "deployment_target_id", "deployment_date", "deployment_tag", { "name": "deployment_params", "default": null }],
|
|
70
70
|
"sql": [
|
|
71
|
-
"insert into {schema}.v_my_deployment(site_id, deployment_target_id, branch_id, deployment_date, deployment_tag, deployment_git_revision) select site_id, %%%deployment_target_id%%%, branch_id, %%%deployment_date%%%, %%%deployment_tag%%%, deployment_git_revision from {schema}.v_my_deployment where deployment_id=%%%src_deployment_id%%% returning deployment_id;"
|
|
71
|
+
"insert into {schema}.v_my_deployment(site_id, deployment_target_id, branch_id, deployment_date, deployment_tag, deployment_params, deployment_git_revision) select site_id, %%%deployment_target_id%%%, branch_id, %%%deployment_date%%%, %%%deployment_tag%%%, %%%deployment_params%%%, deployment_git_revision from {schema}.v_my_deployment where deployment_id=%%%src_deployment_id%%% returning deployment_id;"
|
|
72
72
|
]
|
|
73
73
|
},
|
|
74
74
|
"jsHarmonyCMS_Upload": "insert into {tgtschema}.v_my_{item}({columns}) values ({values}) returning {item}_key;",
|
|
@@ -60,15 +60,15 @@
|
|
|
60
60
|
]
|
|
61
61
|
},
|
|
62
62
|
"{schema}.insert_deployment":{
|
|
63
|
-
"params": ["site_id", "deployment_target_id", "branch_id", "deployment_date", "deployment_tag"],
|
|
63
|
+
"params": ["site_id", "deployment_target_id", "branch_id", "deployment_date", "deployment_tag", { "name": "deployment_params", "default": null }],
|
|
64
64
|
"sql": [
|
|
65
|
-
"insert into {schema}.v_my_deployment(site_id, deployment_target_id, branch_id, deployment_date, deployment_tag) values(%%%site_id%%%, %%%deployment_target_id%%%, %%%branch_id%%%, %%%deployment_date%%%, %%%deployment_tag%%%);select last_insert_rowid_override deployment_id from jsharmony_meta;"
|
|
65
|
+
"insert into {schema}.v_my_deployment(site_id, deployment_target_id, branch_id, deployment_date, deployment_tag, deployment_params) values(%%%site_id%%%, %%%deployment_target_id%%%, %%%branch_id%%%, %%%deployment_date%%%, %%%deployment_tag%%%, %%%deployment_params%%%);select last_insert_rowid_override deployment_id from jsharmony_meta;"
|
|
66
66
|
]
|
|
67
67
|
},
|
|
68
68
|
"{schema}.insert_redeployment":{
|
|
69
|
-
"params": ["src_deployment_id", "deployment_target_id", "deployment_date", "deployment_tag"],
|
|
69
|
+
"params": ["src_deployment_id", "deployment_target_id", "deployment_date", "deployment_tag", { "name": "deployment_params", "default": null }],
|
|
70
70
|
"sql": [
|
|
71
|
-
"insert into {schema}.v_my_deployment(site_id, deployment_target_id, branch_id, deployment_date, deployment_tag, deployment_git_revision) select site_id, %%%deployment_target_id%%%, branch_id, %%%deployment_date%%%, %%%deployment_tag%%%, deployment_git_revision from {schema}.v_my_deployment where deployment_id=%%%src_deployment_id%%%;select last_insert_rowid_override deployment_id from jsharmony_meta;"
|
|
71
|
+
"insert into {schema}.v_my_deployment(site_id, deployment_target_id, branch_id, deployment_date, deployment_tag, deployment_params, deployment_git_revision) select site_id, %%%deployment_target_id%%%, branch_id, %%%deployment_date%%%, %%%deployment_tag%%%, %%%deployment_params%%%, deployment_git_revision from {schema}.v_my_deployment where deployment_id=%%%src_deployment_id%%%;select last_insert_rowid_override deployment_id from jsharmony_meta;"
|
|
72
72
|
]
|
|
73
73
|
},
|
|
74
74
|
"jsHarmonyCMS_Upload": "insert into {tgtschema}.v_my_{item}({columns}) values ({values}); select last_insert_rowid_override {item}_key from jsharmony_meta;",
|
|
@@ -96,6 +96,7 @@
|
|
|
96
96
|
{ "name": "deployment_sts", "type": "varchar", "length": 32, "foreignkey": { "code_deployment_sts": "code_val" }, "null": false, "default": "PENDING" },
|
|
97
97
|
{ "name": "deployment_target_id", "type": "bigint", "null": false, "foreignkey": { "deployment_target": "deployment_target_id" }, "actions": ["prevent_update"] },
|
|
98
98
|
{ "name": "deployment_git_revision", "type": "varchar", "length": 1024 },
|
|
99
|
+
{ "name": "deployment_params", "type": "varchar", "length": -1 },
|
|
99
100
|
|
|
100
101
|
{ "name": "deployment_sts_tstmp", "type": "datetime", "length": 7 },
|
|
101
102
|
{ "name": "deployment_sts_user", "type": "varchar", "length": 20 },
|
|
@@ -189,6 +190,7 @@
|
|
|
189
190
|
"deployment_sts",
|
|
190
191
|
"deployment_target_id",
|
|
191
192
|
"deployment_git_revision",
|
|
193
|
+
"deployment_params",
|
|
192
194
|
|
|
193
195
|
"deployment_etstmp",
|
|
194
196
|
"deployment_euser",
|
|
@@ -220,7 +222,7 @@
|
|
|
220
222
|
"with_insert_identity(branch, branch_id, ",
|
|
221
223
|
" insert into {schema}.branch(branch_parent_id, branch_type, branch_name, branch_sts, site_id, branch_user_id) values(inserted(branch_id), 'DEPLOYMENT', inserted(deployment_tag), 'ARCHIVE', (select site_id from {schema}.branch where branch_id=inserted(branch_id)), null),",
|
|
222
224
|
////Insert deployment
|
|
223
|
-
" insert into {schema}.deployment(deployment_tag, branch_id, deployment_date, deployment_target_id, deployment_sts, deployment_git_revision) values(inserted(deployment_tag), @@INSERT_ID, inserted(deployment_date), inserted(deployment_target_id), 'PENDING', inserted(deployment_git_revision))",
|
|
225
|
+
" insert into {schema}.deployment(deployment_tag, branch_id, deployment_date, deployment_target_id, deployment_sts, deployment_git_revision, deployment_params) values(inserted(deployment_tag), @@INSERT_ID, inserted(deployment_date), inserted(deployment_target_id), 'PENDING', inserted(deployment_git_revision), inserted(deployment_params))",
|
|
224
226
|
" return_insert_key(deployment, deployment_id, (deployment_target_id=inserted(deployment_target_id) and deployment_tag=inserted(deployment_tag)));",
|
|
225
227
|
////Add all menu / pages / media / redirect / sitemap from other branch
|
|
226
228
|
" foreach(%%%{schema}.branch_items%%%, %%%TRIGGER_EOL%%%, \"insert into {tbl_branch_item}(branch_id, {item}_key, {item}_id, {item}_orig_id) select (select deployment.branch_id from {schema}.deployment inner join {schema}.branch on {schema}.branch.branch_id={schema}.deployment.branch_id where deployment_tag=inserted(deployment_tag) and site_id=inserted(site_id)), {item}_key, {item}_id, {item}_id from {tbl_branch_item} where branch_id=inserted(branch_id) and {item}_id is not null\")",
|
package/package.json
CHANGED
|
@@ -4262,6 +4262,11 @@ exports = module.exports = function(componentId, element, cms, jsh, componentCon
|
|
|
4262
4262
|
jsh.async.each(
|
|
4263
4263
|
$element.find('[data-component]'),
|
|
4264
4264
|
function(el, el_cb) {
|
|
4265
|
+
var $el = jsh.$(el);
|
|
4266
|
+
if(!$el.hasClass('initialized')){
|
|
4267
|
+
$el.addClass('initialized');
|
|
4268
|
+
$el.attr('data-component-id', cms.componentManager.getNextComponentId());
|
|
4269
|
+
}
|
|
4265
4270
|
cms.componentManager.renderContentComponent(el, undefined, el_cb);
|
|
4266
4271
|
},
|
|
4267
4272
|
callback
|
|
@@ -6079,6 +6084,17 @@ exports = module.exports = function(jsh, cms, editor){
|
|
|
6079
6084
|
continue;
|
|
6080
6085
|
}
|
|
6081
6086
|
node.attr('data-component-id', null);
|
|
6087
|
+
if(node.attr('class')){
|
|
6088
|
+
var cls = node.attr('class').toString().trim().split(' ');
|
|
6089
|
+
var newcls = '';
|
|
6090
|
+
if(cls.indexOf('initialized')>=0){
|
|
6091
|
+
for(var j=0;j<cls.length;j++){
|
|
6092
|
+
if(!cls[j] || (cls[j]=='initialized')) continue;
|
|
6093
|
+
newcls += cls[j] + ' ';
|
|
6094
|
+
}
|
|
6095
|
+
node.attr('class', newcls.trim() || null);
|
|
6096
|
+
}
|
|
6097
|
+
}
|
|
6082
6098
|
node.empty();
|
|
6083
6099
|
var newNode = tinymce.html.Node.create('#text');
|
|
6084
6100
|
newNode.value = String.fromCharCode(0x00A0);
|