This commit is contained in:
2026-01-19 00:45:41 +01:00
parent 6cae9eaab2
commit b25ca61f07
3 changed files with 19 additions and 10 deletions

View File

@@ -18,14 +18,7 @@ export function initCreate(){
const name=document.createElement('input'); name.type='text'; name.required=true; name.placeholder='Name*'; name.className='w-full border rounded-lg px-3 py-2'; name.id='f-name'; fields.appendChild(name); const name=document.createElement('input'); name.type='text'; name.required=true; name.placeholder='Name*'; name.className='w-full border rounded-lg px-3 py-2'; name.id='f-name'; fields.appendChild(name);
let apiName = null; let apiName = null;
let apiTouched = false; let apiTouched = false;
if(tab==='templates'){ const addEditorSelect = () => {
apiName=document.createElement('input');
apiName.type='text';
apiName.required=true;
apiName.placeholder='API Name* (ohne Leerzeichen)';
apiName.className='w-full border rounded-lg px-3 py-2';
apiName.id='f-api-name';
fields.appendChild(apiName);
const editorSelect = document.createElement('select'); const editorSelect = document.createElement('select');
editorSelect.id = 'f-editor-type'; editorSelect.id = 'f-editor-type';
editorSelect.className = 'w-full border rounded-lg px-3 py-2'; editorSelect.className = 'w-full border rounded-lg px-3 py-2';
@@ -36,6 +29,17 @@ export function initCreate(){
const defaultEditor = (window.__editorDefault || 'grapesjs').toLowerCase(); const defaultEditor = (window.__editorDefault || 'grapesjs').toLowerCase();
editorSelect.value = defaultEditor === 'craftjs' ? 'craftjs' : 'grapesjs'; editorSelect.value = defaultEditor === 'craftjs' ? 'craftjs' : 'grapesjs';
fields.appendChild(editorSelect); fields.appendChild(editorSelect);
};
if(tab==='templates'){
apiName=document.createElement('input');
apiName.type='text';
apiName.required=true;
apiName.placeholder='API Name* (ohne Leerzeichen)';
apiName.className='w-full border rounded-lg px-3 py-2';
apiName.id='f-api-name';
fields.appendChild(apiName);
addEditorSelect();
apiName.addEventListener('input', ()=>{ apiName.addEventListener('input', ()=>{
apiTouched = true; apiTouched = true;
const next = normalizeApiName(apiName.value); const next = normalizeApiName(apiName.value);
@@ -49,6 +53,7 @@ export function initCreate(){
if(tab==='sections') await addSel('f-template','Template','templates'); if(tab==='sections') await addSel('f-template','Template','templates');
if(tab==='blocks') await addSel('f-section','Section','sections'); if(tab==='blocks') await addSel('f-section','Section','sections');
if(tab==='snippets') await addSel('f-block','Block','blocks'); if(tab==='snippets') await addSel('f-block','Block','blocks');
if (tab !== 'templates') addEditorSelect();
hint.textContent=`Neues ${tab} anlegen`; dlg.showModal(); hint.textContent=`Neues ${tab} anlegen`; dlg.showModal();
form.onsubmit=async(e)=>{ e.preventDefault(); form.onsubmit=async(e)=>{ e.preventDefault();
@@ -56,8 +61,8 @@ export function initCreate(){
if(tab==='templates') { if(tab==='templates') {
payload.api_name=(document.getElementById('f-api-name')?.value||'').trim(); payload.api_name=(document.getElementById('f-api-name')?.value||'').trim();
if(!payload.api_name) return; if(!payload.api_name) return;
payload.editor_type=(document.getElementById('f-editor-type')?.value||'grapesjs');
} }
payload.editor_type=(document.getElementById('f-editor-type')?.value||'grapesjs');
if(tab==='snippets') payload.content=''; else payload.html=''; if(tab==='snippets') payload.content=''; else payload.html='';
if(tab==='sections') payload.template_id=document.getElementById('f-template')?.value||null; if(tab==='sections') payload.template_id=document.getElementById('f-template')?.value||null;
if(tab==='blocks') payload.section_id =document.getElementById('f-section')?.value ||null; if(tab==='blocks') payload.section_id =document.getElementById('f-section')?.value ||null;

View File

@@ -75,6 +75,8 @@ CREATE TABLE IF NOT EXISTS `emailtemplate_blocks` (
`category` varchar(100) NOT NULL DEFAULT 'Default', `category` varchar(100) NOT NULL DEFAULT 'Default',
`json_content` mediumtext DEFAULT NULL, `json_content` mediumtext DEFAULT NULL,
`html` mediumtext DEFAULT NULL, `html` mediumtext DEFAULT NULL,
`editor_type` varchar(32) DEFAULT NULL,
`craft_json` mediumtext DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT current_timestamp(), `created_at` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
@@ -153,6 +155,8 @@ CREATE TABLE IF NOT EXISTS `emailtemplate_sections` (
`type` varchar(50) NOT NULL DEFAULT 'html', `type` varchar(50) NOT NULL DEFAULT 'html',
`z_index` int(11) NOT NULL DEFAULT 0, `z_index` int(11) NOT NULL DEFAULT 0,
`html` mediumtext DEFAULT NULL, `html` mediumtext DEFAULT NULL,
`editor_type` varchar(32) DEFAULT NULL,
`craft_json` mediumtext DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT current_timestamp(), `created_at` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`id`), PRIMARY KEY (`id`),

View File

@@ -623,7 +623,7 @@ class ApiKernel
// --- LOGIK mit ERWEITERTER PRÜFUNG ENDE --- // --- LOGIK mit ERWEITERTER PRÜFUNG ENDE ---
if ($editorDbCol) { if ($editorDbCol) {
if ($editorType === '' && in_array($kind, ['templates', 'snippets'], true)) { if ($editorType === '') {
$settings = $this->getCustomerSettings((int)($auth['customer_id'] ?? 0)); $settings = $this->getCustomerSettings((int)($auth['customer_id'] ?? 0));
$editorType = strtolower((string)($settings['editor_default'] ?? 'grapesjs')); $editorType = strtolower((string)($settings['editor_default'] ?? 'grapesjs'));
} }