Template: Add keyboard shortcut Settings, restore message display.

This commit is contained in:
Nate 2020-03-18 11:54:31 -06:00
parent 5382b00610
commit 889e370a10
3 changed files with 190 additions and 116 deletions

View File

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

View File

@ -2037,5 +2037,61 @@
$apps[$x]['default_settings'][$y]['default_setting_value'] = "fas fa-times"; $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_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = ""; $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";
?> ?>

View File

@ -167,7 +167,7 @@
$(document).ready(function() { $(document).ready(function() {
{/literal} {/literal}
// echo message::html(true, ' '); {$messages}
//message bar hide on hover //message bar hide on hover
{literal} {literal}
@ -219,31 +219,35 @@
//keyboard shortcut scripts //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 //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} {if $settings.theme.keyboard_shortcut_submit_enabled}
var action_bar_actions, first_form, first_submit; {literal}
action_bar_actions = document.querySelector('div#action_bar.action_bar > div.actions'); var action_bar_actions, first_form, first_submit;
first_form = document.querySelector('form#frm'); action_bar_actions = document.querySelector('div#action_bar.action_bar > div.actions');
first_form = document.querySelector('form#frm');
if (action_bar_actions !== null) { if (action_bar_actions !== null) {
if (first_form !== null) { if (first_form !== null) {
first_submit = document.createElement('input'); first_submit = document.createElement('input');
first_submit.type = 'submit'; first_submit.type = 'submit';
first_submit.id = 'default_submit'; first_submit.id = 'default_submit';
first_submit.setAttribute('style','position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden;'); first_submit.setAttribute('style','position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden;');
first_form.prepend(first_submit); first_form.prepend(first_submit);
window.addEventListener('keydown',function(e){ window.addEventListener('keydown',function(e){
if (e.which == 13 && (e.target.tagName == 'INPUT' || e.target.tagName == 'SELECT')) { if (e.which == 13 && (e.target.tagName == 'INPUT' || e.target.tagName == 'SELECT')) {
if (typeof window.submit_form === 'function') { submit_form(); } if (typeof window.submit_form === 'function') { submit_form(); }
else { document.getElementById('frm').submit(); } else { document.getElementById('frm').submit(); }
} }
}); });
}
} }
} {/literal}
{/literal} {/if}
//common (used by delete and toggle) //common (used by delete and toggle)
var list_checkboxes; {if $settings.theme.keyboard_shortcut_delete_enabled || $settings.theme.keyboard_shortcut_toggle_enabled}
list_checkboxes = document.querySelectorAll('table.list tr.list-row td.checkbox input[type=checkbox]'); var list_checkboxes;
list_checkboxes = document.querySelectorAll('table.list tr.list-row td.checkbox input[type=checkbox]');
{/if}
//keyup event listener //keyup event listener
{literal} {literal}
@ -286,40 +290,44 @@
{/literal} {/literal}
//key: [insert], list: to add //key: [insert], list: to add
{literal} {if $settings.theme.keyboard_shortcut_add_enabled}
if (e.which == 45 && !(e.target.tagName == 'INPUT' && e.target.type == 'text') && e.target.tagName != 'TEXTAREA') { {literal}
e.preventDefault(); if (e.which == 45 && !(e.target.tagName == 'INPUT' && e.target.type == 'text') && e.target.tagName != 'TEXTAREA') {
var list_add_button; e.preventDefault();
list_add_button = document.getElementById('btn_add'); var list_add_button;
if (list_add_button === null || list_add_button === 'undefined') { list_add_button = document.getElementById('btn_add');
list_add_button = document.querySelector('button[name=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}
} {/if}
{/literal}
//key: [delete], list: to delete checked, edit: to delete //key: [delete], list: to delete checked, edit: to delete
{literal} {if $settings.theme.keyboard_shortcut_delete_enabled}
if (e.which == 46 && !(e.target.tagName == 'INPUT' && e.target.type == 'text') && e.target.tagName != 'TEXTAREA') { {literal}
e.preventDefault(); if (e.which == 46 && !(e.target.tagName == 'INPUT' && e.target.type == 'text') && e.target.tagName != 'TEXTAREA') {
if (list_checkboxes.length !== 0) { e.preventDefault();
var list_delete_button; if (list_checkboxes.length !== 0) {
list_delete_button = document.querySelector('button[name=btn_delete]'); var list_delete_button;
if (list_delete_button === null || list_delete_button === 'undefined') { list_delete_button = document.querySelector('button[name=btn_delete]');
list_delete_button = document.getElementById('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;
else { edit_delete_button = document.querySelector('button[name=btn_delete]');
var edit_delete_button; if (edit_delete_button === null || edit_delete_button === 'undefined') {
edit_delete_button = document.querySelector('button[name=btn_delete]'); edit_delete_button = document.getElementById('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 //keyup end
{literal} {literal}
@ -332,76 +340,84 @@
{/literal} {/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') //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 $settings.theme.keyboard_shortcut_toggle_enabled}
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(); }
}
{/literal}
//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();
}
}
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}
//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 (edit_save_button !== null) { edit_save_button.click(); }
}
{/literal}
//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} {literal}
if ((e.which == 99 || e.which == 67) && !(e.target.tagName == 'INPUT' && e.target.type == 'text') && e.target.tagName != 'TEXTAREA') { if (e.which == 32 && !(e.target.tagName == 'INPUT' && e.target.type == 'text') && e.target.tagName != 'TEXTAREA' && list_checkboxes.length !== 0) {
{/literal} e.preventDefault();
{else} var list_toggle_button;
{literal} list_toggle_button = document.querySelector('button[name=btn_toggle]');
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') { 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(); }
}
{/literal} {/literal}
{/if} {/if}
{literal}
var current_selection, copy_button; //key: [ctrl]+[a], list,edit: to check all
current_selection = window.getSelection(); {if $settings.theme.keyboard_shortcut_check_all_enabled}
if (current_selection === null || current_selection == 'undefined' || current_selection.toString() == '') { {literal}
e.preventDefault(); 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') {
copy_button = document.getElementById('btn_copy'); var list_checkbox_all;
if (copy_button === null || copy_button === 'undefined') { list_checkbox_all = document.querySelectorAll('table.list tr.list-header th.checkbox input[name=checkbox_all]');
copy_button = document.querySelector('button[name=btn_copy]'); 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();
}
} }
if (copy_button !== null) { copy_button.click(); }
} }
} {/literal}
{/literal} {/if}
//key: [ctrl]+[s], edit: to 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(); }
}
{/literal}
{/if}
//key: [ctrl]+[c], list,edit: to copy
{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}
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(); }
}
}
{/literal}
{/if}
//keydown end //keydown end
{literal} {literal}