Browse Source

Template: Add keyboard shortcut Settings, restore message display.

Nate 5 years ago
parent
commit
2f6d3a0759
3 changed files with 182 additions and 108 deletions
  1. 2 0
      resources/footer.php
  2. 57 1
      themes/default/app_config.php
  3. 123 107
      themes/default/template.php

+ 2 - 0
resources/footer.php

@@ -230,6 +230,8 @@
 		$view->assign('login_logo_source', $login_logo_source);
 		$view->assign('login_logo_width', $login_logo_width);
 		$view->assign('login_logo_height', $login_logo_height);
+	//messages
+		$view->assign('messages', message::html(true, '		'));
 
 	//render the view
 		$output = $view->render('template.php');

+ 57 - 1
themes/default/app_config.php

@@ -2037,5 +2037,61 @@
 		$apps[$x]['default_settings'][$y]['default_setting_value'] = "fas fa-times";
 		$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
 		$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
+		$y++;
+		$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "814ed631-a315-4bde-a822-4038432ae2a6";
+		$apps[$x]['default_settings'][$y]['default_setting_category'] = "theme";
+		$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "keyboard_shortcut_check_all_enabled";
+		$apps[$x]['default_settings'][$y]['default_setting_name'] = "boolean";
+		$apps[$x]['default_settings'][$y]['default_setting_value'] = "true";
+		$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
+		$apps[$x]['default_settings'][$y]['default_setting_description'] = "key: [ctrl]+[a], list,edit: to check all";
+		$y++;
+		$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "48d7d44b-9e2b-4e6c-a4e5-c75e7e76d4db";
+		$apps[$x]['default_settings'][$y]['default_setting_category'] = "theme";
+		$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "keyboard_shortcut_add_enabled";
+		$apps[$x]['default_settings'][$y]['default_setting_name'] = "boolean";
+		$apps[$x]['default_settings'][$y]['default_setting_value'] = "true";
+		$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
+		$apps[$x]['default_settings'][$y]['default_setting_description'] = "key: [insert], list: to add";
+		$y++;
+		$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "422747c2-07bb-48f5-8358-6df70054fd1f";
+		$apps[$x]['default_settings'][$y]['default_setting_category'] = "theme";
+		$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "keyboard_shortcut_copy_enabled";
+		$apps[$x]['default_settings'][$y]['default_setting_name'] = "boolean";
+		$apps[$x]['default_settings'][$y]['default_setting_value'] = "true";
+		$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
+		$apps[$x]['default_settings'][$y]['default_setting_description'] = "key: [ctrl]+[c], list,edit: to copy";
+		$y++;
+		$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "2c0621d4-da12-40c1-8878-fc45a2f76d08";
+		$apps[$x]['default_settings'][$y]['default_setting_category'] = "theme";
+		$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "keyboard_shortcut_toggle_enabled";
+		$apps[$x]['default_settings'][$y]['default_setting_name'] = "boolean";
+		$apps[$x]['default_settings'][$y]['default_setting_value'] = "true";
+		$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
+		$apps[$x]['default_settings'][$y]['default_setting_description'] = "key: [space], list: to toggle checked";
+		$y++;
+		$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "4500e534-77fb-4318-bf13-0c108ece62b1";
+		$apps[$x]['default_settings'][$y]['default_setting_category'] = "theme";
+		$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "keyboard_shortcut_delete_enabled";
+		$apps[$x]['default_settings'][$y]['default_setting_name'] = "boolean";
+		$apps[$x]['default_settings'][$y]['default_setting_value'] = "true";
+		$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
+		$apps[$x]['default_settings'][$y]['default_setting_description'] = "key: [delete], list: to delete checked, edit: to delete";
+		$y++;
+		$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "c7d5ac85-556a-4b9a-8e12-743456dbc17f";
+		$apps[$x]['default_settings'][$y]['default_setting_category'] = "theme";
+		$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "keyboard_shortcut_submit_enabled";
+		$apps[$x]['default_settings'][$y]['default_setting_name'] = "boolean";
+		$apps[$x]['default_settings'][$y]['default_setting_value'] = "true";
+		$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
+		$apps[$x]['default_settings'][$y]['default_setting_description'] = "key: [enter] - default behavior to submit form, when present";
+		$y++;
+		$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "f5f1ecec-5c31-4b32-a126-4857ee671224";
+		$apps[$x]['default_settings'][$y]['default_setting_category'] = "theme";
+		$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "keyboard_shortcut_save_enabled";
+		$apps[$x]['default_settings'][$y]['default_setting_name'] = "boolean";
+		$apps[$x]['default_settings'][$y]['default_setting_value'] = "true";
+		$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
+		$apps[$x]['default_settings'][$y]['default_setting_description'] = "key: [ctrl]+[s], edit: to save";
 
-?>
+?>

+ 123 - 107
themes/default/template.php

@@ -167,7 +167,7 @@
 	$(document).ready(function() {
 		{/literal}
 
-		// echo message::html(true, '		');
+		{$messages}
 
 		//message bar hide on hover
 			{literal}
@@ -219,31 +219,35 @@
 		//keyboard shortcut scripts
 
 		//key: [enter] - retain default behavior to submit form, when present - note: safari does not honor the first submit element when hiding it using 'display: none;' in the setAttribute method
-			{literal}
-			var action_bar_actions, first_form, first_submit;
-			action_bar_actions = document.querySelector('div#action_bar.action_bar > div.actions');
-			first_form = document.querySelector('form#frm');
-
-			if (action_bar_actions !== null) {
-				if (first_form !== null) {
-					first_submit = document.createElement('input');
-					first_submit.type = 'submit';
-					first_submit.id = 'default_submit';
-					first_submit.setAttribute('style','position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden;');
-					first_form.prepend(first_submit);
-					window.addEventListener('keydown',function(e){
-						if (e.which == 13 && (e.target.tagName == 'INPUT' || e.target.tagName == 'SELECT')) {
-							if (typeof window.submit_form === 'function') { submit_form(); }
-							else { document.getElementById('frm').submit(); }
-						}
-					});
+			{if $settings.theme.keyboard_shortcut_submit_enabled}
+				{literal}
+				var action_bar_actions, first_form, first_submit;
+				action_bar_actions = document.querySelector('div#action_bar.action_bar > div.actions');
+				first_form = document.querySelector('form#frm');
+
+				if (action_bar_actions !== null) {
+					if (first_form !== null) {
+						first_submit = document.createElement('input');
+						first_submit.type = 'submit';
+						first_submit.id = 'default_submit';
+						first_submit.setAttribute('style','position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden;');
+						first_form.prepend(first_submit);
+						window.addEventListener('keydown',function(e){
+							if (e.which == 13 && (e.target.tagName == 'INPUT' || e.target.tagName == 'SELECT')) {
+								if (typeof window.submit_form === 'function') { submit_form(); }
+								else { document.getElementById('frm').submit(); }
+							}
+						});
+					}
 				}
-			}
-			{/literal}
+				{/literal}
+			{/if}
 
 		//common (used by delete and toggle)
-			var list_checkboxes;
-			list_checkboxes = document.querySelectorAll('table.list tr.list-row td.checkbox input[type=checkbox]');
+			{if $settings.theme.keyboard_shortcut_delete_enabled || $settings.theme.keyboard_shortcut_toggle_enabled}
+				var list_checkboxes;
+				list_checkboxes = document.querySelectorAll('table.list tr.list-row td.checkbox input[type=checkbox]');
+			{/if}
 
 		//keyup event listener
 			{literal}
@@ -286,40 +290,44 @@
 					{/literal}
 
 				//key: [insert], list: to add
-					{literal}
-					if (e.which == 45 && !(e.target.tagName == 'INPUT' && e.target.type == 'text') && e.target.tagName != 'TEXTAREA') {
-						e.preventDefault();
-						var list_add_button;
-						list_add_button = document.getElementById('btn_add');
-						if (list_add_button === null || list_add_button === 'undefined') {
-							list_add_button = document.querySelector('button[name=btn_add]');
+					{if $settings.theme.keyboard_shortcut_add_enabled}
+						{literal}
+						if (e.which == 45 && !(e.target.tagName == 'INPUT' && e.target.type == 'text') && e.target.tagName != 'TEXTAREA') {
+							e.preventDefault();
+							var list_add_button;
+							list_add_button = document.getElementById('btn_add');
+							if (list_add_button === null || list_add_button === 'undefined') {
+								list_add_button = document.querySelector('button[name=btn_add]');
+							}
+							if (list_add_button !== null) { list_add_button.click(); }
 						}
-						if (list_add_button !== null) { list_add_button.click(); }
-					}
-					{/literal}
+						{/literal}
+					{/if}
 
 				//key: [delete], list: to delete checked, edit: to delete
-					{literal}
-					if (e.which == 46 && !(e.target.tagName == 'INPUT' && e.target.type == 'text') && e.target.tagName != 'TEXTAREA') {
-						e.preventDefault();
-						if (list_checkboxes.length !== 0) {
-							var list_delete_button;
-							list_delete_button = document.querySelector('button[name=btn_delete]');
-							if (list_delete_button === null || list_delete_button === 'undefined') {
-								list_delete_button = document.getElementById('btn_delete');
+					{if $settings.theme.keyboard_shortcut_delete_enabled}
+						{literal}
+						if (e.which == 46 && !(e.target.tagName == 'INPUT' && e.target.type == 'text') && e.target.tagName != 'TEXTAREA') {
+							e.preventDefault();
+							if (list_checkboxes.length !== 0) {
+								var list_delete_button;
+								list_delete_button = document.querySelector('button[name=btn_delete]');
+								if (list_delete_button === null || list_delete_button === 'undefined') {
+									list_delete_button = document.getElementById('btn_delete');
+								}
+								if (list_delete_button !== null) { list_delete_button.click(); }
 							}
-							if (list_delete_button !== null) { list_delete_button.click(); }
-						}
-						else {
-							var edit_delete_button;
-							edit_delete_button = document.querySelector('button[name=btn_delete]');
-							if (edit_delete_button === null || edit_delete_button === 'undefined') {
-								edit_delete_button = document.getElementById('btn_delete');
+							else {
+								var edit_delete_button;
+								edit_delete_button = document.querySelector('button[name=btn_delete]');
+								if (edit_delete_button === null || edit_delete_button === 'undefined') {
+									edit_delete_button = document.getElementById('btn_delete');
+								}
+								if (edit_delete_button !== null) { edit_delete_button.click(); }
 							}
-							if (edit_delete_button !== null) { edit_delete_button.click(); }
 						}
-					}
-					{/literal}
+						{/literal}
+					{/if}
 
 		//keyup end
 			{literal}
@@ -332,76 +340,84 @@
 				{/literal}
 
 				//key: [space], list: to toggle checked - note: for default [space] checkbox behavior (ie. toggle focused checkbox) include in the if statement: && !(e.target.tagName == 'INPUT' && e.target.type == 'checkbox')
-					{literal}
-					if (e.which == 32 && !(e.target.tagName == 'INPUT' && e.target.type == 'text') && e.target.tagName != 'TEXTAREA' && list_checkboxes.length !== 0) {
-						e.preventDefault();
-						var list_toggle_button;
-						list_toggle_button = document.querySelector('button[name=btn_toggle]');
-						if (list_toggle_button === null || list_toggle_button === 'undefined') {
-							list_toggle_button = document.getElementById('btn_toggle');
+					{if $settings.theme.keyboard_shortcut_toggle_enabled}
+						{literal}
+						if (e.which == 32 && !(e.target.tagName == 'INPUT' && e.target.type == 'text') && e.target.tagName != 'TEXTAREA' && list_checkboxes.length !== 0) {
+							e.preventDefault();
+							var list_toggle_button;
+							list_toggle_button = document.querySelector('button[name=btn_toggle]');
+							if (list_toggle_button === null || list_toggle_button === 'undefined') {
+								list_toggle_button = document.getElementById('btn_toggle');
+							}
+							if (list_toggle_button !== null) { list_toggle_button.click(); }
 						}
-						if (list_toggle_button !== null) { list_toggle_button.click(); }
-					}
-					{/literal}
+						{/literal}
+					{/if}
 
 				//key: [ctrl]+[a], list,edit: to check all
-					{literal}
-					if ((((e.which == 97 || e.which == 65) && (e.ctrlKey || e.metaKey) && !e.shiftKey) || e.which == 19) && !(e.target.tagName == 'INPUT' && e.target.type == 'text') && e.target.tagName != 'TEXTAREA') {
-						var list_checkbox_all;
-						list_checkbox_all = document.querySelectorAll('table.list tr.list-header th.checkbox input[name=checkbox_all]');
-						if (list_checkbox_all !== null && list_checkbox_all.length > 0) {
-							e.preventDefault();
-							for (var x = 0, max = list_checkbox_all.length; x < max; x++) {
-								list_checkbox_all[x].click();
+					{if $settings.theme.keyboard_shortcut_check_all_enabled}
+						{literal}
+						if ((((e.which == 97 || e.which == 65) && (e.ctrlKey || e.metaKey) && !e.shiftKey) || e.which == 19) && !(e.target.tagName == 'INPUT' && e.target.type == 'text') && e.target.tagName != 'TEXTAREA') {
+							var list_checkbox_all;
+							list_checkbox_all = document.querySelectorAll('table.list tr.list-header th.checkbox input[name=checkbox_all]');
+							if (list_checkbox_all !== null && list_checkbox_all.length > 0) {
+								e.preventDefault();
+								for (var x = 0, max = list_checkbox_all.length; x < max; x++) {
+									list_checkbox_all[x].click();
+								}
 							}
-						}
-						var edit_checkbox_all;
-						edit_checkbox_all = document.querySelectorAll('td.edit_delete_checkbox_all > span > input[name=checkbox_all]');
-						if (edit_checkbox_all !== null && edit_checkbox_all.length > 0) {
-							e.preventDefault();
-							for (var x = 0, max = edit_checkbox_all.length; x < max; x++) {
-								edit_checkbox_all[x].click();
+							var edit_checkbox_all;
+							edit_checkbox_all = document.querySelectorAll('td.edit_delete_checkbox_all > span > input[name=checkbox_all]');
+							if (edit_checkbox_all !== null && edit_checkbox_all.length > 0) {
+								e.preventDefault();
+								for (var x = 0, max = edit_checkbox_all.length; x < max; x++) {
+									edit_checkbox_all[x].click();
+								}
 							}
 						}
-					}
-					{/literal}
+						{/literal}
+					{/if}
 
 				//key: [ctrl]+[s], edit: to save
-					{literal}
-					if (((e.which == 115 || e.which == 83) && (e.ctrlKey || e.metaKey) && !e.shiftKey) || (e.which == 19)) {
-						e.preventDefault();
-						var edit_save_button;
-						edit_save_button = document.getElementById('btn_save');
-						if (edit_save_button === null || edit_save_button === 'undefined') {
-							edit_save_button = document.querySelector('button[name=btn_save]');
+					{if $settings.theme.keyboard_shortcut_check_save_enabled}
+						{literal}
+						if (((e.which == 115 || e.which == 83) && (e.ctrlKey || e.metaKey) && !e.shiftKey) || (e.which == 19)) {
+							e.preventDefault();
+							var edit_save_button;
+							edit_save_button = document.getElementById('btn_save');
+							if (edit_save_button === null || edit_save_button === 'undefined') {
+								edit_save_button = document.querySelector('button[name=btn_save]');
+							}
+							if (edit_save_button !== null) { edit_save_button.click(); }
 						}
-						if (edit_save_button !== null) { edit_save_button.click(); }
-					}
-					{/literal}
+						{/literal}
+					{/if}
 
 				//key: [ctrl]+[c], list,edit: to copy
-					{if $browser_name_short == 'Safari'} //emulate with detecting [c] only, as [command] and [control] keys are ignored when captured
-						{literal}
-						if ((e.which == 99 || e.which == 67) && !(e.target.tagName == 'INPUT' && e.target.type == 'text') && e.target.tagName != 'TEXTAREA') {
-						{/literal}
-					{else}
+					{if $settings.theme.keyboard_shortcut_check_copy_enabled}
+						{if $browser_name_short == 'Safari'} //emulate with detecting [c] only, as [command] and [control] keys are ignored when captured
+							{literal}
+							if ((e.which == 99 || e.which == 67) && !(e.target.tagName == 'INPUT' && e.target.type == 'text') && e.target.tagName != 'TEXTAREA') {
+							{/literal}
+						{else}
+							{literal}
+							if ((((e.which == 99 || e.which == 67) && (e.ctrlKey || e.metaKey) && !e.shiftKey) || (e.which == 19)) && !(e.target.tagName == 'INPUT' && e.target.type == 'text') && e.target.tagName != 'TEXTAREA') {
+							{/literal}
+						{/if}
 						{literal}
-						if ((((e.which == 99 || e.which == 67) && (e.ctrlKey || e.metaKey) && !e.shiftKey) || (e.which == 19)) && !(e.target.tagName == 'INPUT' && e.target.type == 'text') && e.target.tagName != 'TEXTAREA') {
-						{/literal}
-					{/if}
-					{literal}
-						var current_selection, copy_button;
-						current_selection = window.getSelection();
-						if (current_selection === null || current_selection == 'undefined' || current_selection.toString() == '') {
-							e.preventDefault();
-							copy_button = document.getElementById('btn_copy');
-							if (copy_button === null || copy_button === 'undefined') {
-								copy_button = document.querySelector('button[name=btn_copy]');
+							var current_selection, copy_button;
+							current_selection = window.getSelection();
+							if (current_selection === null || current_selection == 'undefined' || current_selection.toString() == '') {
+								e.preventDefault();
+								copy_button = document.getElementById('btn_copy');
+								if (copy_button === null || copy_button === 'undefined') {
+									copy_button = document.querySelector('button[name=btn_copy]');
+								}
+								if (copy_button !== null) { copy_button.click(); }
 							}
-							if (copy_button !== null) { copy_button.click(); }
 						}
-					}
-					{/literal}
+						{/literal}
+					{/if}
 
 		//keydown end
 			{literal}