From 71ee80fa064e27a3291bb8d15bcfea0df047b5df Mon Sep 17 00:00:00 2001 From: Clemens Schwaighofer Date: Tue, 21 Jul 2020 11:30:34 +0900 Subject: [PATCH] Add javascrip function check & call from string functions Check if a string is a function. And call this string with arguments. Update SQL files for better layout order --- 4dev/database/ORDER | 2 + 4dev/database/function/random_string.sql | 0 4dev/database/function/set_uid.sql | 0 4dev/database/table/edit_access_data.sql | 4 +- 4dev/database/table/edit_access_user.sql | 10 ++--- 4dev/database/table/edit_group.sql | 6 +-- 4dev/database/table/edit_log.sql | 6 +-- 4dev/database/table/edit_log_overflow.sql | 0 4dev/database/table/edit_page.sql | 4 +- 4dev/database/table/edit_page_access.sql | 8 ++-- 4dev/database/table/edit_page_content.sql | 6 +-- 4dev/database/table/edit_page_menu_group.sql | 2 +- .../table/edit_page_visible_group.sql | 2 +- 4dev/database/table/edit_query_string.sql | 4 +- 4dev/database/table/edit_user.sql | 14 +++---- .../trigger/trg_edit_log_overflow.sql | 0 .../trigger/trg_edit_page_content.sql | 0 .../update/edit_tables_missing_columns.sql | 0 .../update/edit_update_missing_cuid.sql | 0 www/layout/admin/javascript/edit.jq.js | 41 ++++++++++++++++++- www/layout/admin/javascript/edit.js | 2 +- 21 files changed, 75 insertions(+), 36 deletions(-) mode change 100755 => 100644 4dev/database/function/random_string.sql mode change 100755 => 100644 4dev/database/function/set_uid.sql mode change 100755 => 100644 4dev/database/table/edit_log_overflow.sql mode change 100755 => 100644 4dev/database/table/edit_page_content.sql mode change 100755 => 100644 4dev/database/trigger/trg_edit_log_overflow.sql mode change 100755 => 100644 4dev/database/trigger/trg_edit_page_content.sql mode change 100755 => 100644 4dev/database/update/edit_tables_missing_columns.sql mode change 100755 => 100644 4dev/database/update/edit_update_missing_cuid.sql diff --git a/4dev/database/ORDER b/4dev/database/ORDER index 837d0746..9fd388e6 100644 --- a/4dev/database/ORDER +++ b/4dev/database/ORDER @@ -22,6 +22,7 @@ table/edit_page_access.sql table/edit_page_content.sql table/edit_user.sql table/edit_log.sql +table/edit_log_overflow.sql table/edit_access.sql table/edit_access_user.sql table/edit_access_data.sql @@ -32,6 +33,7 @@ trigger/trg_edit_access_data.sql trigger/trg_edit_access_user.sql trigger/trg_edit_group.sql trigger/trg_edit_language.sql +trigger/trg_edit_log_overflow.sql trigger/trg_edit_log.sql trigger/trg_edit_page_access.sql trigger/trg_edit_page_content.sql diff --git a/4dev/database/function/random_string.sql b/4dev/database/function/random_string.sql old mode 100755 new mode 100644 diff --git a/4dev/database/function/set_uid.sql b/4dev/database/function/set_uid.sql old mode 100755 new mode 100644 diff --git a/4dev/database/table/edit_access_data.sql b/4dev/database/table/edit_access_data.sql index 8ceb7f4f..5d08fa65 100644 --- a/4dev/database/table/edit_access_data.sql +++ b/4dev/database/table/edit_access_data.sql @@ -9,8 +9,8 @@ CREATE TABLE edit_access_data ( edit_access_data_id SERIAL PRIMARY KEY, edit_access_id INT NOT NULL, + FOREIGN KEY (edit_access_id) REFERENCES edit_access (edit_access_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, enabled SMALLINT NOT NULL DEFAULT 0, name VARCHAR, - value VARCHAR, - FOREIGN KEY (edit_access_id) REFERENCES edit_access (edit_access_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE + value VARCHAR ) INHERITS (edit_generic) WITHOUT OIDS; diff --git a/4dev/database/table/edit_access_user.sql b/4dev/database/table/edit_access_user.sql index 2cf95da7..ccb636c4 100644 --- a/4dev/database/table/edit_access_user.sql +++ b/4dev/database/table/edit_access_user.sql @@ -9,11 +9,11 @@ CREATE TABLE edit_access_user ( edit_access_user_id SERIAL PRIMARY KEY, edit_access_id INT NOT NULL, - edit_user_id INT NOT NULL, - edit_access_right_id INT NOT NULL, - edit_default SMALLINT DEFAULT 0, - enabled SMALLINT NOT NULL DEFAULT 0, FOREIGN KEY (edit_access_id) REFERENCES edit_access (edit_access_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, + edit_user_id INT NOT NULL, FOREIGN KEY (edit_user_id) REFERENCES edit_user (edit_user_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, - FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE + edit_access_right_id INT NOT NULL, + FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, + edit_default SMALLINT DEFAULT 0, + enabled SMALLINT NOT NULL DEFAULT 0 ) INHERITS (edit_generic) WITHOUT OIDS; diff --git a/4dev/database/table/edit_group.sql b/4dev/database/table/edit_group.sql index 6cd40618..022f30af 100644 --- a/4dev/database/table/edit_group.sql +++ b/4dev/database/table/edit_group.sql @@ -9,12 +9,12 @@ CREATE TABLE edit_group ( edit_group_id SERIAL PRIMARY KEY, edit_scheme_id INT, + FOREIGN KEY (edit_scheme_id) REFERENCES edit_scheme (edit_scheme_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, edit_access_right_id INT NOT NULL, + FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, enabled SMALLINT NOT NULL DEFAULT 0, deleted SMALLINT DEFAULT 0, uid VARCHAR, name VARCHAR, - additional_acl JSONB, - FOREIGN KEY (edit_scheme_id) REFERENCES edit_scheme (edit_scheme_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, - FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE + additional_acl JSONB ) INHERITS (edit_generic) WITHOUT OIDS; diff --git a/4dev/database/table/edit_log.sql b/4dev/database/table/edit_log.sql index 59e90ed2..f518bcc4 100644 --- a/4dev/database/table/edit_log.sql +++ b/4dev/database/table/edit_log.sql @@ -8,6 +8,8 @@ -- DROP TABLE edit_log; CREATE TABLE edit_log ( edit_log_id SERIAL PRIMARY KEY, + euid INT, -- this is a foreign key, but I don't nedd to reference to it + FOREIGN KEY (euid) REFERENCES edit_user (edit_user_id) MATCH FULL ON UPDATE CASCADE ON DELETE SET NULL, username VARCHAR, password VARCHAR, event_date TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP, @@ -26,7 +28,6 @@ CREATE TABLE edit_log ( action_value VARCHAR, action_type VARCHAR, action_error VARCHAR, - euid INT, -- this is a foreign key, but I don't nedd to reference to it user_agent VARCHAR, referer VARCHAR, script_name VARCHAR, @@ -36,6 +37,5 @@ CREATE TABLE edit_log ( http_accept VARCHAR, http_accept_charset VARCHAR, http_accept_encoding VARCHAR, - session_id VARCHAR, - FOREIGN KEY (euid) REFERENCES edit_user (edit_user_id) MATCH FULL ON UPDATE CASCADE ON DELETE SET NULL + session_id VARCHAR ) INHERITS (edit_generic) WITHOUT OIDS; diff --git a/4dev/database/table/edit_log_overflow.sql b/4dev/database/table/edit_log_overflow.sql old mode 100755 new mode 100644 diff --git a/4dev/database/table/edit_page.sql b/4dev/database/table/edit_page.sql index 2797ec90..938b5c11 100644 --- a/4dev/database/table/edit_page.sql +++ b/4dev/database/table/edit_page.sql @@ -9,6 +9,7 @@ CREATE TABLE edit_page ( edit_page_id SERIAL PRIMARY KEY, content_alias_edit_page_id INT, -- alias for page content, if the page content is defined on a different page, ege for ajax backend pages + FOREIGN KEY (content_alias_edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE RESTRICT ON UPDATE CASCADE, filename VARCHAR, name VARCHAR UNIQUE, order_number INT NOT NULL, @@ -17,6 +18,5 @@ CREATE TABLE edit_page ( popup SMALLINT NOT NULL DEFAULT 0, popup_x SMALLINT, popup_y SMALLINT, - hostname VARCHAR, - FOREIGN KEY (content_alias_edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE RESTRICT ON UPDATE CASCADE + hostname VARCHAR ) INHERITS (edit_generic) WITHOUT OIDS; diff --git a/4dev/database/table/edit_page_access.sql b/4dev/database/table/edit_page_access.sql index e64703b4..a9542641 100644 --- a/4dev/database/table/edit_page_access.sql +++ b/4dev/database/table/edit_page_access.sql @@ -9,12 +9,12 @@ CREATE TABLE edit_page_access ( edit_page_access_id SERIAL PRIMARY KEY, edit_group_id INT NOT NULL, - edit_page_id INT NOT NULL, - edit_access_right_id INT NOT NULL, - enabled SMALLINT NOT NULL DEFAULT 0, FOREIGN KEY (edit_group_id) REFERENCES edit_group (edit_group_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, + edit_page_id INT NOT NULL, FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, - FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE + edit_access_right_id INT NOT NULL, + FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, + enabled SMALLINT NOT NULL DEFAULT 0 ) INHERITS (edit_generic) WITHOUT OIDS; diff --git a/4dev/database/table/edit_page_content.sql b/4dev/database/table/edit_page_content.sql old mode 100755 new mode 100644 index 71d5a9ec..937b93ba --- a/4dev/database/table/edit_page_content.sql +++ b/4dev/database/table/edit_page_content.sql @@ -10,11 +10,11 @@ CREATE TABLE edit_page_content ( edit_page_content_id SERIAL PRIMARY KEY, edit_page_id INT NOT NULL, + FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, edit_access_right_id INT NOT NULL, + FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, uid VARCHAR UNIQUE, name VARCHAR, order_number INT NOT NULL, - online SMALLINT NOT NULL DEFAULT 0, - FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, - FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE + online SMALLINT NOT NULL DEFAULT 0 ) INHERITS (edit_generic) WITHOUT OIDS; diff --git a/4dev/database/table/edit_page_menu_group.sql b/4dev/database/table/edit_page_menu_group.sql index d820855a..39033a6c 100644 --- a/4dev/database/table/edit_page_menu_group.sql +++ b/4dev/database/table/edit_page_menu_group.sql @@ -8,7 +8,7 @@ -- DROP TABLE edit_page_menu_group; CREATE TABLE edit_page_menu_group ( edit_page_id INT NOT NULL, - edit_menu_group_id INT NOT NULL, FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, + edit_menu_group_id INT NOT NULL, FOREIGN KEY (edit_menu_group_id) REFERENCES edit_menu_group (edit_menu_group_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE ); diff --git a/4dev/database/table/edit_page_visible_group.sql b/4dev/database/table/edit_page_visible_group.sql index 46438b4e..b6735c28 100644 --- a/4dev/database/table/edit_page_visible_group.sql +++ b/4dev/database/table/edit_page_visible_group.sql @@ -8,7 +8,7 @@ -- DROP TABLE edit_page_visible_group; CREATE TABLE edit_page_visible_group ( edit_page_id INT NOT NULL, - edit_visible_group_id INT NOT NULL, FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, + edit_visible_group_id INT NOT NULL, FOREIGN KEY (edit_visible_group_id) REFERENCES edit_visible_group (edit_visible_group_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE ); diff --git a/4dev/database/table/edit_query_string.sql b/4dev/database/table/edit_query_string.sql index 62399112..25fa5bfe 100644 --- a/4dev/database/table/edit_query_string.sql +++ b/4dev/database/table/edit_query_string.sql @@ -9,9 +9,9 @@ CREATE TABLE edit_query_string ( edit_query_string_id SERIAL PRIMARY KEY, edit_page_id INT NOT NULL, + FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, enabled SMALLINT NOT NULL DEFAULT 0, name VARCHAR, value VARCHAR, - dynamic SMALLINT NOT NULL DEFAULT 0, - FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE + dynamic SMALLINT NOT NULL DEFAULT 0 ) INHERITS (edit_generic) WITHOUT OIDS; diff --git a/4dev/database/table/edit_user.sql b/4dev/database/table/edit_user.sql index 47a9aa34..50ab8d03 100644 --- a/4dev/database/table/edit_user.sql +++ b/4dev/database/table/edit_user.sql @@ -9,10 +9,15 @@ CREATE TABLE edit_user ( edit_user_id SERIAL PRIMARY KEY, connect_edit_user_id INT, -- possible reference to other user + FOREIGN KEY (connect_edit_user_id) REFERENCES edit_user (edit_user_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, edit_language_id INT NOT NULL, + FOREIGN KEY (edit_language_id) REFERENCES edit_language (edit_language_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, edit_group_id INT NOT NULL, + FOREIGN KEY (edit_group_id) REFERENCES edit_group (edit_group_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, edit_scheme_id INT, + FOREIGN KEY (edit_scheme_id) REFERENCES edit_scheme (edit_scheme_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, edit_access_right_id INT NOT NULL, + FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, enabled SMALLINT NOT NULL DEFAULT 0, deleted SMALLINT NOT NULL DEFAULT 0, username VARCHAR UNIQUE, @@ -26,17 +31,12 @@ CREATE TABLE edit_user ( email VARCHAR, protected SMALLINT NOT NULL DEFAULT 0, admin SMALLINT NOT NULL DEFAULT 0, - login_error_count INT, + login_error_count INT DEFAULT 0, login_error_date_last TIMESTAMP WITHOUT TIME ZONE, login_error_date_first TIMESTAMP WITHOUT TIME ZONE, strict SMALLINT DEFAULT 0, locked SMALLINT DEFAULT 0, password_change_date TIMESTAMP WITHOUT TIME ZONE, -- only when password is first set or changed password_change_interval INTERVAL, -- null if no change is needed, or d/m/y time interval - additional_acl JSONB, -- additional ACL as JSON string (can be set by other pages) - FOREIGN KEY (connect_edit_user_id) REFERENCES edit_user (edit_user_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, - FOREIGN KEY (edit_language_id) REFERENCES edit_language (edit_language_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, - FOREIGN KEY (edit_group_id) REFERENCES edit_group (edit_group_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, - FOREIGN KEY (edit_scheme_id) REFERENCES edit_scheme (edit_scheme_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, - FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE + additional_acl JSONB -- additional ACL as JSON string (can be set by other pages) ) INHERITS (edit_generic) WITHOUT OIDS; diff --git a/4dev/database/trigger/trg_edit_log_overflow.sql b/4dev/database/trigger/trg_edit_log_overflow.sql old mode 100755 new mode 100644 diff --git a/4dev/database/trigger/trg_edit_page_content.sql b/4dev/database/trigger/trg_edit_page_content.sql old mode 100755 new mode 100644 diff --git a/4dev/database/update/edit_tables_missing_columns.sql b/4dev/database/update/edit_tables_missing_columns.sql old mode 100755 new mode 100644 diff --git a/4dev/database/update/edit_update_missing_cuid.sql b/4dev/database/update/edit_update_missing_cuid.sql old mode 100755 new mode 100644 diff --git a/www/layout/admin/javascript/edit.jq.js b/www/layout/admin/javascript/edit.jq.js index bb05fbba..99de37de 100644 --- a/www/layout/admin/javascript/edit.jq.js +++ b/www/layout/admin/javascript/edit.jq.js @@ -282,12 +282,48 @@ function randomIdF() return Math.random().toString(36).substring(2); } +/** + * check if name is a function + * @param {string} name Name of function to check if exists + * @return {Boolean} true/false + */ +function isFunction(name) +{ + if (typeof window[name] !== 'undefined' && + typeof window[name] === 'function') { + return true; + } else { + return false; + } +} + +/** + * call a function by its string name + * https://stackoverflow.com/a/359910 + * example: executeFunctionByName("My.Namespace.functionName", window, arguments); + * @param {string} functionName The function name or namespace + function + * @param {mixed} context context (window or first namespace) + * hidden next are all the arguments + * @return {mixed} Return values from functon + */ +function executeFunctionByName(functionName, context /*, args */) +{ + var args = Array.prototype.slice.call(arguments, 2); + var namespaces = functionName.split('.'); + var func = namespaces.pop(); + for (var i = 0; i < namespaces.length; i++) { + context = context[namespaces[i]]; + } + return context[func].apply(context, args); +} + /** * checks if a variable is an object * @param {Mixed} val possible object * @return {Boolean} true/false if it is an object or not */ -function isObject(val) { +function isObject(val) +{ if (val === null) { return false; } @@ -299,7 +335,8 @@ function isObject(val) { * @param {Object} object object to check * @return {Number} number of entry */ -function getObjectCount(object) { +function getObjectCount(object) +{ return Object.keys(object).length; } diff --git a/www/layout/admin/javascript/edit.js b/www/layout/admin/javascript/edit.js index 9844cbbf..2d9dd304 120000 --- a/www/layout/admin/javascript/edit.js +++ b/www/layout/admin/javascript/edit.js @@ -1 +1 @@ -edit.pt.js \ No newline at end of file +edit.jq.js \ No newline at end of file