2018-09-04 14:04:59 +02:00
|
|
|
/* global Mousetrap */
|
|
|
|
|
2018-09-03 17:29:04 +02:00
|
|
|
function getContentDocument() {
|
|
|
|
const iframe = document.getElementById("typo3-contentIframe");
|
|
|
|
return iframe ? iframe.contentDocument : document;
|
|
|
|
}
|
|
|
|
|
|
|
|
const parentDocument = window.frameElement ? top.document : document;
|
|
|
|
|
|
|
|
const defaultkeys = {
|
|
|
|
close: 'escape',
|
|
|
|
save: 'mod+s',
|
|
|
|
saveAndClose: 'mod+shift+s',
|
|
|
|
saveAndViewPage: '',
|
|
|
|
saveAndCreateNewOne: '',
|
|
|
|
delete: 'del',
|
|
|
|
edit: 'e',
|
|
|
|
viewPage: 'v',
|
|
|
|
flushFrontendCaches: 'mod+del',
|
|
|
|
flushAllCaches: 'mod+shift+del',
|
2018-09-11 11:22:15 +02:00
|
|
|
searchField: 'mod+shift+f',
|
|
|
|
expand: 'mod+shift+plus',
|
|
|
|
collapse: 'mod+shift+-'
|
2018-09-03 17:29:04 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
chrome.storage.sync.get(defaultkeys, function (keys) {
|
|
|
|
Mousetrap.bind(keys.close, function () {
|
|
|
|
const contentDocument = getContentDocument();
|
2018-09-04 14:04:59 +02:00
|
|
|
const closeButton = contentDocument.querySelector('.t3js-editform-close');
|
2018-09-03 17:29:04 +02:00
|
|
|
closeButton.click();
|
|
|
|
return false;
|
|
|
|
});
|
|
|
|
Mousetrap.bind(keys.save, function () {
|
|
|
|
const contentDocument = getContentDocument();
|
2018-09-04 14:04:59 +02:00
|
|
|
const saveButton = contentDocument.querySelector('[name="_savedok"]');
|
2018-09-03 17:29:04 +02:00
|
|
|
saveButton.click();
|
|
|
|
return false;
|
|
|
|
});
|
|
|
|
Mousetrap.bind(keys.saveAndClose, function () {
|
|
|
|
const contentDocument = getContentDocument();
|
2018-09-04 14:04:59 +02:00
|
|
|
const saveAndCloseButton = contentDocument.querySelector('[data-name="_saveandclosedok"]');
|
2018-09-03 17:29:04 +02:00
|
|
|
saveAndCloseButton.click();
|
|
|
|
return false;
|
|
|
|
});
|
|
|
|
Mousetrap.bind(keys.saveAndViewPage, function () {
|
|
|
|
const contentDocument = getContentDocument();
|
2018-09-04 14:04:59 +02:00
|
|
|
const saveAndViewPageButton = contentDocument.querySelector('[data-name="_savedokview"]');
|
2018-09-03 17:29:04 +02:00
|
|
|
saveAndViewPageButton.click();
|
|
|
|
return false;
|
|
|
|
});
|
|
|
|
Mousetrap.bind(keys.saveAndCreateNewOne, function () {
|
|
|
|
const contentDocument = getContentDocument();
|
2018-09-04 14:04:59 +02:00
|
|
|
const saveAndCreateNewOneButton = contentDocument.querySelector('[data-name="_savedoknew"]');
|
2018-09-03 17:29:04 +02:00
|
|
|
saveAndCreateNewOneButton.click();
|
|
|
|
return false;
|
|
|
|
});
|
|
|
|
Mousetrap.bind(keys.delete, function () {
|
|
|
|
const contentDocument = getContentDocument();
|
2018-09-04 14:04:59 +02:00
|
|
|
const deleteButton = contentDocument.querySelector('.t3js-editform-delete-record');
|
2018-09-03 17:29:04 +02:00
|
|
|
deleteButton.click();
|
|
|
|
return false;
|
|
|
|
});
|
|
|
|
Mousetrap.bind(keys.edit, function () {
|
|
|
|
const contentDocument = getContentDocument();
|
2018-09-04 14:04:59 +02:00
|
|
|
const editButton = contentDocument.querySelector('.icon-actions-page-open').parentElement;
|
2018-09-03 17:29:04 +02:00
|
|
|
editButton.click();
|
|
|
|
return false;
|
|
|
|
});
|
|
|
|
Mousetrap.bind(keys.viewPage, function () {
|
|
|
|
const contentDocument = getContentDocument();
|
2018-09-04 14:04:59 +02:00
|
|
|
const viewPageButton = contentDocument.querySelector('.icon-actions-document-view').parentElement;
|
2018-09-03 17:29:04 +02:00
|
|
|
viewPageButton.click();
|
|
|
|
return false;
|
|
|
|
});
|
|
|
|
Mousetrap.bind(keys.flushFrontendCaches, function () {
|
2018-09-04 14:04:59 +02:00
|
|
|
const flushFrontendCachesButton = parentDocument.querySelector('.icon-actions-system-cache-clear-impact-low').closest("a");
|
2018-09-03 17:29:04 +02:00
|
|
|
flushFrontendCachesButton.click();
|
|
|
|
return false;
|
|
|
|
});
|
|
|
|
Mousetrap.bind(keys.flushAllCaches, function () {
|
2018-09-04 14:04:59 +02:00
|
|
|
const flushAllCachesButton = parentDocument.querySelector('.icon-actions-system-cache-clear-impact-high').closest("a");
|
2018-09-03 17:29:04 +02:00
|
|
|
flushAllCachesButton.click();
|
|
|
|
return false;
|
|
|
|
});
|
|
|
|
Mousetrap.bind(keys.searchField, function () {
|
2018-09-04 14:04:59 +02:00
|
|
|
const searchField = parentDocument.getElementById("live-search-box");
|
2018-09-03 17:29:04 +02:00
|
|
|
searchField.focus();
|
|
|
|
return false;
|
|
|
|
});
|
2018-09-11 11:22:15 +02:00
|
|
|
Mousetrap.bind("a", function () {
|
|
|
|
console.log("expand");
|
|
|
|
const contentDocument = getContentDocument();
|
|
|
|
const closed = contentDocument.querySelectorAll('.panel-collapsed');
|
|
|
|
closed.forEach((el) => {
|
|
|
|
const header = el.querySelector(".panel-heading");
|
|
|
|
console.log(header.dataset);
|
|
|
|
delete header.dataset.expandsingle;
|
|
|
|
});
|
|
|
|
closed.forEach((el) => {
|
|
|
|
// if (el.offsetParent === null) {
|
|
|
|
// return false;
|
|
|
|
// }
|
|
|
|
const header = el.querySelector(".panel-heading");
|
|
|
|
delete header.dataset.expandsingle;
|
|
|
|
header.click();
|
|
|
|
});
|
|
|
|
return false;
|
|
|
|
});
|
|
|
|
Mousetrap.bind("b", function () {
|
|
|
|
console.log("close");
|
|
|
|
const contentDocument = getContentDocument();
|
|
|
|
const opened = contentDocument.querySelectorAll('.panel-visible');
|
|
|
|
opened.forEach((el) => {
|
|
|
|
console.info(el);
|
|
|
|
el.querySelector(".panel-heading").click();
|
|
|
|
});
|
|
|
|
return false;
|
|
|
|
});
|
2018-09-03 17:29:04 +02:00
|
|
|
|
|
|
|
});
|