jsharmony-cms
Version:
411 lines (393 loc) • 20.3 kB
JSON
{
"code_site_template_type": {
"type": "code",
"caption": "Site Template Type",
"init_data": [
{ "code_val": "PAGE", "code_txt": "Page", "code_seq": 1 },
{ "code_val": "COMPONENT", "code_txt": "Component", "code_seq": 2 },
]
},
"code_sys_user_site_access": {
"type": "code",
"caption": "User Site Access",
"init_data": [
{ "code_val": "VIEWER", "code_txt": "Viewer", "code_seq": 1 },
{ "code_val": "AUTHOR", "code_txt": "Author", "code_seq": 2 },
{ "code_val": "PUBLISHER", "code_txt": "Publisher", "code_seq": 3 },
]
},
"site": {
"type": "table",
"caption": ["Site","Sites"],
"columns": [
{ "name": "site_id", "type": "bigint", "key": true, "identity": true, "null": false, "actions": ["prevent_update"] },
{ "name": "site_name", "type": "varchar", "length": 256, "null": false, "unique": true },
{ "name": "site_sts", "type": "varchar", "length": 32, "foreignkey": { "jsharmony.code_ac": "code_val" }, "null": false, "default": "ACTIVE" },
{ "name": "site_default_editor", "type": "bigint" },
{ "name": "site_default_page_template_id", "type": "varchar", "length": 255 },
{ "name": "site_default_page_filename", "type": "varchar", "length": 255, "default": "index.html", "null": false },
{ "name": "site_config", "type": "varchar", "length": -1 },
{ "name": "site_etstmp", "type": "datetime", "length": 7, "default": { "sql": "%%%%%%jsh.map.timestamp%%%%%%" } },
{ "name": "site_euser", "type": "varchar", "length": 20, "default": { "sql": "%%%%%%jsh.map.current_user%%%%%%" } },
{ "name": "site_mtstmp", "type": "datetime", "length": 7 },
{ "name": "site_muser", "type": "varchar", "length": 20 }
],
"triggers": [
{ "on": ["validate_update", "validate_insert"], "exec": [
"errorif((inserted(site_default_editor) is not null and inserted(site_default_editor) not in (select deployment_target_id from {schema}.deployment_target where deployment_target.site_id = inserted(site_id))),'Target Editor not available for this site')",
"errorif((inserted(site_default_editor) is not null and inserted(site_default_editor) not in (select deployment_target_id from {schema}.deployment_target where deployment_target_sts='ACTIVE')),'Target Editor is not ACTIVE')"
]
},
{ "on": ["update", "insert"], "exec": [
"set(site_mtstmp,%%%%%%jsh.map.timestamp%%%%%%);",
"set(site_muser,%%%%%%jsh.map.current_user%%%%%%);"
]
},
{ "on": ["insert"], "exec": [
"insert into {schema}.branch(branch_name, branch_type, branch_sts, site_id) values ('master','PUBLIC','ACTIVE',inserted(site_id))",
"with_insert_identity(sitemap, sitemap_id, ",
" insert into {schema}.sitemap(site_id, sitemap_name, sitemap_type) values(inserted(site_id), 'Primary Sitemap', 'PRIMARY'),",
" insert into {schema}.branch_sitemap(branch_id, sitemap_key, sitemap_id, sitemap_orig_id) values((select top1(branch_id from {schema}.branch where site_id=inserted(site_id))), @@INSERT_ID, @@INSERT_ID, @@INSERT_ID);",
" increment_changes()",
")"
]
},
{
"on": ["delete"], "exec": [
"foreach(%%%{schema}.branch_items%%%, %%%TRIGGER_EOL%%%, \"delete from {tbl_branch_item} where branch_id in (select branch_id from {schema}.branch where site_id=deleted(site_id))\");",
"foreach(%%%{schema}.branch_items%%%, %%%TRIGGER_EOL%%%, \"delete from {tbl_branch_item} where {item}_key in (select {item}_key from {tbl_item} where site_id=deleted(site_id))\");",
"delete from {schema}.branch where site_id=deleted(site_id);",
"foreach(%%%{schema}.branch_items%%%, %%%TRIGGER_EOL%%%, \"delete from {tbl_item} where site_id=deleted(site_id)\");",
]
}
],
"sample_data": [
{ "site_name": "Default Web Site" }
]
},
"site_template": {
"type": "table",
"caption": ["Site Template","Site Templates"],
"columns": [
{ "name": "site_template_id", "type": "bigint", "key": true, "identity": true, "null": false },
{ "name": "site_id", "type": "bigint", "null": false, "foreignkey": { "site": "site_id" }, "actions": ["prevent_update"] },
{ "name": "site_template_type", "type": "varchar", "length": 32, "foreignkey": { "code_site_template_type": "code_val" }, "null": false, "actions": ["prevent_update"] },
{ "name": "site_template_name", "type": "varchar", "length": 256, "null": false },
{ "name": "site_template_title", "type": "varchar", "length": 1024 },
{ "name": "site_template_path", "type": "varchar", "length": -1 },
{ "name": "site_template_config", "type": "varchar", "length": -1 },
{ "name": "site_template_etstmp", "type": "datetime", "length": 7, "default": { "sql": "%%%%%%jsh.map.timestamp%%%%%%" } },
{ "name": "site_template_euser", "type": "varchar", "length": 20, "default": { "sql": "%%%%%%jsh.map.current_user%%%%%%" } },
{ "name": "site_template_mtstmp", "type": "datetime", "length": 7 },
{ "name": "site_template_muser", "type": "varchar", "length": 20 }
],
"unique": [
["site_id","site_template_type","site_template_name"]
],
"triggers": [
{ "on": ["update", "insert"], "exec": [
"set(site_template_mtstmp,%%%%%%jsh.map.timestamp%%%%%%);",
"set(site_template_muser,%%%%%%jsh.map.current_user%%%%%%);"
]
}
]
},
"sys_user_session": {
"type": "table",
"caption": ["User Session", "User Sessions"],
"columns": [
{ "name": "sys_user_session_id", "type": "bigint", "key": true, "identity": true, "null": false },
{ "name": "sys_user_id", "type": "bigint", "foreignkey": { "jsharmony.sys_user": { "column": "sys_user_id", "on_delete": "cascade" } }, "null": false, "actions": ["prevent_update"], "unique": true },
{ "name": "site_id", "type": "bigint", "foreignkey": { "site": { "column": "site_id", "on_delete": "null" } } },
{ "name": "sys_user_session_etstmp", "type": "datetime", "length": 7, "default": { "sql": "%%%%%%jsh.map.timestamp%%%%%%" } },
{ "name": "sys_user_session_euser", "type": "varchar", "length": 20, "default": { "sql": "%%%%%%jsh.map.current_user%%%%%%" } },
{ "name": "sys_user_session_mtstmp", "type": "datetime", "length": 7 },
{ "name": "sys_user_session_muser", "type": "varchar", "length": 20 }
],
"index": [
{ "columns": ["sys_user_id", "site_id"] }
],
"triggers": [
{ "on": ["update", "insert"], "exec": [
"set(sys_user_session_mtstmp,%%%%%%jsh.map.timestamp%%%%%%);",
"set(sys_user_session_muser,%%%%%%jsh.map.current_user%%%%%%);"
]
}
],
"data_keys": ["sys_user_id"],
"sample_data": [
{ "sys_user_id": "1", "site_id": "1" }
]
},
"sys_user_token": {
"type": "table",
"caption": ["User Token", "User Tokens"],
"columns": [
{ "name": "sys_user_token_id", "type": "bigint", "key": true, "identity": true, "null": false },
{ "name": "sys_user_id", "type": "bigint", "foreignkey": { "jsharmony.sys_user": { "column": "sys_user_id", "on_delete": "cascade" } }, "null": false, "actions": ["prevent_update"] },
{ "name": "sys_user_token_hash", "type": "varchar", "length": 256, "null": false, "unique": true },
{ "name": "sys_user_token_ext", "type": "varchar", "length": 32 },
{ "name": "sys_user_token_keys", "type": "varchar", "length": 1024 },
{ "name": "sys_user_token_etstmp", "type": "datetime", "length": 7, "default": { "sql": "%%%%%%jsh.map.timestamp%%%%%%" } },
{ "name": "sys_user_token_euser", "type": "varchar", "length": 20, "default": { "sql": "%%%%%%jsh.map.current_user%%%%%%" } },
{ "name": "sys_user_token_mtstmp", "type": "datetime", "length": 7 },
{ "name": "sys_user_token_muser", "type": "varchar", "length": 20 }
],
"index": [
{ "columns": ["sys_user_token_hash"] }
],
"triggers": [
{ "on": ["update", "insert"], "exec": [
"set(sys_user_token_mtstmp,%%%%%%jsh.map.timestamp%%%%%%);",
"set(sys_user_token_muser,%%%%%%jsh.map.current_user%%%%%%);"
]
}
]
},
"sys_user_site": {
"type": "table",
"caption": ["User Site", "User Sites"],
"columns": [
{ "name": "sys_user_site_id", "type": "bigint", "key": true, "identity": true, "null": false },
{ "name": "sys_user_id", "type": "bigint", "foreignkey": { "jsharmony.sys_user": { "column": "sys_user_id", "on_delete": "cascade" } }, "null": false, "actions": ["prevent_update"] },
{ "name": "site_id", "type": "bigint", "foreignkey": { "site": { "column": "site_id", "on_delete": "cascade" } }, "null": false, "actions": ["prevent_update"] },
{ "name": "sys_user_site_editor", "type": "bigint", "foreignkey": { "deployment_target": { "column": "deployment_target_id" } } },
{ "name": "sys_user_site_access", "type": "varchar", "length": 32, "foreignkey": { "code_sys_user_site_access": "code_val" } },
{ "name": "branch_id", "type": "bigint" },
{ "name": "sys_user_site_etstmp", "type": "datetime", "length": 7, "default": { "sql": "%%%%%%jsh.map.timestamp%%%%%%" } },
{ "name": "sys_user_site_euser", "type": "varchar", "length": 20, "default": { "sql": "%%%%%%jsh.map.current_user%%%%%%" } },
{ "name": "sys_user_site_mtstmp", "type": "datetime", "length": 7 },
{ "name": "sys_user_site_muser", "type": "varchar", "length": 20 }
],
"unique": [
["sys_user_id", "site_id"]
],
"dependencies": ["{schema}.branch","{schema}.site"],
"triggers": [
{ "on": ["validate_update", "validate_insert"], "exec": [
"errorif((inserted(sys_user_site_editor) is not null and inserted(sys_user_site_editor) not in (select deployment_target_id from {schema}.v_my_deployment_target where deployment_target_can_editor = 1 and site_id = inserted(site_id))),'Target Editor not available for this site')",
"errorif((inserted(sys_user_site_editor) is not null and inserted(sys_user_site_editor) not in (select deployment_target_id from {schema}.v_my_deployment_target where deployment_target_sts='ACTIVE')),'Target Editor is not ACTIVE')",
"errorif((inserted(branch_id) is not null) and not exists(select branch_id from {schema}.branch where branch_id=inserted(branch_id)),'Branch ID not found');",
]
},
{ "on": ["update", "insert"], "exec": [
"set(sys_user_site_mtstmp,%%%%%%jsh.map.timestamp%%%%%%);",
"set(sys_user_site_muser,%%%%%%jsh.map.current_user%%%%%%);"
]
},
{ "on": ["update"], "exec": [
"update {schema}.sys_user_session set site_id=null where sys_user_id=deleted(sys_user_id) and site_id not in (select site_id from {schema}.v_sys_user_site_access where sys_user_id=deleted(sys_user_id) and sys_user_site_access is not null);",
"update {schema}.sys_user_site set branch_id=null where branch_id is not null and sys_user_id=deleted(sys_user_id) and site_id not in (select site_id from {schema}.v_sys_user_site_access where sys_user_id=deleted(sys_user_id) and sys_user_site_access is not null);",
]
},
{ "on": ["delete"], "exec": [
"update {schema}.sys_user_session set site_id=null where sys_user_id=deleted(sys_user_id) and site_id not in (select site_id from {schema}.v_sys_user_site_access where sys_user_id=deleted(sys_user_id) and sys_user_site_access is not null and ((sys_user_site_id is null) or (sys_user_site_id<>deleted(sys_user_site_id))));",
]
}
],
"data_keys": ["sys_user_id"],
"sample_data": [
{ "sys_user_id": "1", "site_id": "1", "branch_id": "1" }
],
},
"v_my_site_editor": {
"type": "view",
"caption": ["Site", "Sites"],
"tables": {
"site": {
"columns": [
"site_id",
"site_name",
"site_sts"
]
},
"sys_user_site": {
"columns": [
"sys_user_site_editor",
{ "name":"site_editor", "type": "bigint", "sqlselect": "$ifnull($ifnull(sys_user_site.sys_user_site_editor,site_default_editor),(select top1(deployment_target_id from {schema}.v_my_deployment_target dt where deployment_target_can_editor = 1 and dt.deployment_target_sts='ACTIVE' and dt.site_id = site.site_id order by deployment_target_name)))" },
"branch_id",
],
"join_type": "left",
"join_columns": {
"site.site_id": "sys_user_site.site_id",
"sys_user_site.sys_user_id": "jsharmony.my_sys_user_id()"
}
}
},
"dependencies": ["{schema}.v_my_deployment_target"]
},
"v_my_session": {
"type": "view",
"caption": ["Session", "Sessions"],
"tables": {
"jsharmony.sys_user": {
"columns": [
"sys_user_id"
]
},
"sys_user_session": {
"columns": [
"site_id",
],
"join_type": "left",
"join_columns": {
"jsharmony.sys_user.sys_user_id": "sys_user_session.sys_user_id"
}
},
},
"where": "jsharmony.sys_user.sys_user_id = jsharmony.my_sys_user_id()",
"triggers": [
{"on": ["update"], "exec": [
"errorif(not exists(select site_id from {schema}.v_sys_user_site_access where sys_user_id=jsharmony.my_sys_user_id() and site_id=inserted(site_id)),'User does not have access to target site');",
"insert into {schema}.sys_user_session(sys_user_id) select jsharmony.my_sys_user_id() where not exists(select * from {schema}.sys_user_session where sys_user_id=jsharmony.my_sys_user_id())",
"update {schema}.sys_user_session set site_id = inserted(site_id) where sys_user_session.sys_user_id=jsharmony.my_sys_user_id()",
"increment_changes()"
]
}
]
},
"v_my_site": {
"type": "view",
"caption": ["Site", "Sites"],
"tables": {
"v_my_site_editor": {
"columns": [
"site_id",
"site_name",
"site_sts",
"sys_user_site_editor",
"site_editor",
"branch_id"
]
},
"v_my_deployment_target": {
"columns": [
"deployment_target_id",
"deployment_target_template_variables"
],
"join_type": "left",
"join_columns": {
"v_my_site_editor.site_editor": "v_my_deployment_target.deployment_target_id",
"deployment_target_can_editor": "1"
}
}
},
"triggers": [
{"on": ["update"], "exec": [
"insert into {schema}.sys_user_site(sys_user_id,site_id) select jsharmony.my_sys_user_id(), inserted(site_id) where not exists(select * from {schema}.sys_user_site where sys_user_id=jsharmony.my_sys_user_id() and site_id=inserted(site_id))",
"update {schema}.sys_user_site set sys_user_site_editor = inserted(sys_user_site_editor), branch_id = inserted(branch_id) where sys_user_id=jsharmony.my_sys_user_id() and site_id = inserted(site_id)",
"increment_changes()"
]
}
]
},
"v_sys_user_site_system_access": {
"type": "view",
"caption": ["Site System Access", "Site System Access"],
"tables": {
"jsharmony.sys_user_role": {
"columns": [
"sys_user_role_id",
"sys_user_id",
"sys_role_name",
],
},
},
"where":"sys_user_role.sys_role_name in ('WEBMASTER','VIEWER','AUTHOR','PUBLISHER')",
},
"v_sys_user_site_access_split": {
"type": "view",
"caption": ["Site Access", "Site Access"],
"tables": {
"site": {
"columns": [
"site_id",
],
},
"roles": {
"columns": [
"role_sys_user_id",
"role_sys_role_name",
"role_sys_user_role_id",
],
"sql": "select v_sys_user_site_system_access.sys_user_role_id role_sys_user_role_id, v_sys_user_site_system_access.sys_user_id role_sys_user_id, v_sys_user_site_system_access.sys_role_name role_sys_role_name from {schema}.v_sys_user_site_system_access union select null role_sys_user_role_id, null role_sys_user_id, null role_sys_role_name",
"join_type": "left",
},
"sys_user_site": {
"columns": [
"sys_user_site_id",
"sys_user_id",
"sys_user_site_access",
],
"join_type": "left",
"join_columns": {
"sys_user_site.site_id": "site.site_id",
"roles.role_sys_user_id": "null",
}
},
},
"dependencies": ["{schema}.v_sys_user_site_system_access"]
},
"v_my_session_role": {
"type": "view",
"caption": ["Session Role", "Session Roles"],
"tables": {
"roles": {
"columns": [
"sys_role_name",
],
"sql": [
"select sys_role_name from jsharmony.sys_user_role where sys_user_id=jsharmony.my_sys_user_id()",
"union",
"select sys_user_site_access",
" from {schema}.sys_user_session",
" inner join {schema}.sys_user_site on sys_user_site.sys_user_id=sys_user_session.sys_user_id and sys_user_site.site_id=sys_user_session.site_id",
" where sys_user_session.sys_user_id=jsharmony.my_sys_user_id()"
],
},
}
},
"v_sys_user_site_access": {
"type": "view",
"caption": ["Site Access", "Site Access"],
"tables": {
"v_sys_user_site_access_split": {
"columns": [
"sys_user_site_id",
{ "name": "sys_user_role_id", "type": "bigint", "sqlselect": "role_sys_user_role_id"},
"site_id",
{ "name":"sys_user_id", "type": "bigint", "sqlselect": "case when role_sys_user_id is not null then role_sys_user_id else sys_user_id end" },
{ "name":"sys_user_site_access", "type": "varchar", "length": 32, "sqlselect": "$ifnull(role_sys_role_name, sys_user_site_access)" },
{ "name":"sys_user_site_system_access", "type": "int", "sqlselect": "(case when role_sys_user_id is not null then 1 else 0 end)" },
],
},
},
"where": "(role_sys_user_id is not null or sys_user_id is not null) and (sys_user_site_access is not null or role_sys_role_name is not null)",
"triggers": [
{ "on": ["insert"], "exec": [
[
"errorif(exists(select sys_user_site_id from {schema}.sys_user_site where sys_user_id=inserted(sys_user_id) and site_id=inserted(site_id) and sys_user_site_access is not null),'User is already added to this site');",
"errorif(inserted(sys_user_site_access) is null,'Cannot add null permission');",
"insert into {schema}.sys_user_site(sys_user_id,site_id) select inserted(sys_user_id), inserted(site_id) where not exists(select * from {schema}.sys_user_site where sys_user_id=inserted(sys_user_id) and site_id=inserted(site_id));",
"update {schema}.sys_user_site set sys_user_site_access = inserted(sys_user_site_access) where sys_user_id=inserted(sys_user_id) and site_id = inserted(site_id);",
"return_insert_key(sys_user_site, sys_user_site_id, (sys_user_id=inserted(sys_user_id) and site_id=inserted(site_id)));",
"increment_changes()",
]
]
},
{ "on": ["update"], "exec": [
[
"errorif(update(sys_user_id),'Cannot update sys_user_id');",
"update sys_user_site set sys_user_site_access=inserted(sys_user_site_access) where site_id=deleted(site_id) and sys_user_id=deleted(sys_user_id);",
"increment_changes()",
]
]
},
{ "on": ["delete"], "exec": [
"update sys_user_site set sys_user_site_access = null where site_id=deleted(site_id) and sys_user_id=deleted(sys_user_id);",
"increment_changes()"
]
}
]
}
}