Skip to content
Code-Schnipsel Gruppen Projekte
Bestätigt Commit e3a002fa erstellt von Henning Leutz's avatar Henning Leutz :martial_arts_uniform:
Dateien durchsuchen

refactor: new SnippetInput Control

Übergeordneter f9c1a394
No related branches found
No related tags found
2 Merge Requests!2Next,!1Dev
......@@ -4,7 +4,7 @@ use QUI\HtmlSnippets\Snippets;
QUI::$Ajax->registerFunction(
'package_quiqqer_html-snippets_ajax_backend_addSnippet',
function ($projectName, $snippetName, $eventName, $snippet) {
function ($projectName, $snippetName, $eventName, $snippet = '') {
$Project = QUI::getProject($projectName);
$Snippet = Snippets::create($Project, $snippetName, $eventName, $snippet);
......
.quiqqer-html-snippet-input textarea {
min-height: 200px;
position: relative;
width: 100%;
}
\ No newline at end of file
/**
* @module package/quiqqer/html-snippets/bin/backend/controls/SnippetInput
* @author www.pcsg.de (Henning Leutz)
*/
define('package/quiqqer/html-snippets/bin/backend/controls/SnippetInput', [
'qui/QUI',
'qui/controls/Control',
'qui/controls/loader/Loader',
'Ajax',
'css!package/quiqqer/html-snippets/bin/backend/controls/SnippetInput.css'
], function(QUI, QUIControl, QUILoader, QUIAjax) {
'use strict';
return new Class({
Extends: QUIControl,
Type: 'package/quiqqer/html-snippets/bin/backend/controls/SnippetInput',
Binds: [
'$onImport',
'$load'
],
initialize: function(options) {
this.parent(options);
this.Loader = new QUILoader();
this.$loaded = false;
this.$Project = null;
this.addEvents({
onImport: this.$onImport
});
},
setProject: function(Project) {
this.$Project = Project;
this.$load();
},
$onImport: function() {
this.$Textarea = this.getElm();
this.setAttribute('snippetName', this.$Textarea.get('data-qui-options-snippet'));
this.setAttribute('snippetEvent', this.$Textarea.get('data-qui-options-event'));
this.$Elm = new Element('div', {
'class': 'field-container-field quiqqer-html-snippet-input'
}).wraps(this.$Textarea);
this.Loader.inject(this.$Elm);
this.Loader.show();
this.$load();
},
save: function() {
console.log(111);
},
$load: function() {
if (this.$loaded) {
return;
}
if (!this.$Project) {
return;
}
this.$loaded = true;
QUIAjax.get('package_quiqqer_html-snippets_ajax_backend_getSnippet', (snippetData) => {
this.$Textarea.value = snippetData.snippet;
this.Loader.hide();
}, {
'package': 'quiqqer/html-snippets',
projectName: this.$Project.getName(),
snippetName: this.getAttribute('snippetName'),
showError: false,
onError: (err) => {
// create snippet if snippet not exists
console.error(err);
if (err.getCode() === 404) {
this.$loaded = false;
QUIAjax.post('package_quiqqer_html-snippets_ajax_backend_addSnippet', () => {
this.$load();
}, {
'package': 'quiqqer/html-snippets',
projectName: this.$Project.getName(),
snippetName: this.getAttribute('snippetName'),
eventName: this.getAttribute('snippetEvent')
});
}
}
});
}
});
});
<?xml version="1.0" encoding="UTF-8"?>
<events>
<event on="onQuiqqer::template::header::begin" fire="\QUI\HtmlSnippets\EventHandler::onTemplateHeaderBegin"/>
<event on="onQuiqqer::template::header::end" fire="\QUI\HtmlSnippets\EventHandler::onTemplateHeaderEnd"/>
<event on="onQuiqqer::template::body::begin" fire="\QUI\HtmlSnippets\EventHandler::onTemplateBodyBegin"/>
<event on="onQuiqqer::template::body::end" fire="\QUI\HtmlSnippets\EventHandler::onTemplateBodyEnd"/>
</events>
\ No newline at end of file
<event on="onQuiqqerInit" fire="\QUI\HtmlSnippets\EventHandler::onQuiqqerInit"/>
</events>
......@@ -2,10 +2,33 @@
namespace QUI\HtmlSnippets;
use QUI;
class EventHandler
{
public static function huhu()
protected static array|null $events = null;
public static function onQuiqqerInit(): void
{
return 1;
if (self::$events !== null) {
return;
}
$snippets = QUI::getDatabase()->fetch([
'from' => Snippets::table()
]);
// load event snippets
foreach ($snippets as $snippet) {
if (empty($snippet['event'])) {
continue;
}
self::$events[$snippet['event']][] = $snippet;
}
foreach (self::$events as $event => $snippet) {
QUI::getEvents()->addEvent($event, [new SnippetTemplateEvent($snippet), 'onFireEvent']);
}
}
}
<?php
namespace QUI\HtmlSnippets;
use QUI;
use Quiqqer\Engine\Collector;
use function array_values;
/**
* Class SnippetEvent
*
* Represents an event that appends snippets to a collector.
* This class is used to execute the snippets for a specific template event
*/
class SnippetTemplateEvent
{
protected array $snippets;
public function __construct(array $snippets)
{
$this->snippets = $snippets;
}
public function onFireEvent(...$args): void
{
$args = array_values($args);
// only template events
if (!isset($args[0]) || !isset($args[1])) {
return;
}
$Collector = null;
$Template = null;
if ($args[0] instanceof Collector) {
$Collector = $args[0];
}
if ($args[0] instanceof QUI\Smarty\Collector) {
$Collector = $args[0];
}
if ($args[1] instanceof QUI\Template) {
$Template = $args[1];
}
if (!$Collector) {
return;
}
if (!$Template) {
return;
}
foreach ($this->snippets as $snippet) {
$Collector->append($snippet['snippet']);
}
}
}
......@@ -41,7 +41,7 @@ class Snippets
}
if (empty($eventName)) {
throw new QUI\Exception('Please enter a event');
throw new QUI\Exception('Please enter an event');
}
QUI::getDatabase()->insert(self::table(), [
......
0% oder .
You are about to add 0 people to the discussion. Proceed with caution.
Bearbeitung dieser Nachricht zuerst beenden!
Bitte registrieren oder zum Kommentieren