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

Merge branch 'dev' into 'next'

fix(Accordion): consider given entries parameter

See merge request !25
Übergeordnete ed5f62a3 1da2c4d3
No related branches found
No related tags found
2 Merge Requests!26fix(Accordion): consider given entries parameter,!25fix(Accordion): consider given entries parameter
Pipeline #7212 bestanden mit Phase
in 8 Sekunden
werden angezeigt mit 835 Ergänzungen und 128 Löschungen
tools/
phpstan.neon
.phpunit.result.cache
phpunit.xml
<?xml version="1.0" encoding="UTF-8"?>
<phive xmlns="https://phar.io/phive">
<phar name="phpstan" version="^1.10.67" installed="1.10.67" location="./tools/phpstan" copy="false"/>
</phive>
......@@ -13,7 +13,7 @@
'package_quiqqer_bricks_ajax_brick_delete',
function ($brickIds) {
$BrickManager = QUI\Bricks\Manager::init();
$brickIds = json_decode($brickIds, true);
$brickIds = json_decode($brickIds, true);
foreach ($brickIds as $brickId) {
try {
......
......@@ -17,7 +17,7 @@
function ($brickId, $brickUID, $row) {
$BrickManager = QUI\Bricks\Manager::init();
if (isset($brickUID) && !empty($brickUID)) {
if (!empty($brickUID)) {
$Brick = $BrickManager->getBrickById($brickUID);
} else {
$Brick = $BrickManager->getBrickById($brickId);
......@@ -38,11 +38,7 @@ function ($brickId, $brickUID, $row) {
// generate rows
$loadingRows = 1;
if (
isset($settings['loadingrows'])
&& !empty($settings['loadingrows'])
&& (int)$settings['loadingrows']
) {
if (!empty($settings['loadingrows']) && (int)$settings['loadingrows']) {
$loadingRows = (int)$settings['loadingrows'];
}
......@@ -62,6 +58,5 @@ function ($brickId, $brickUID, $row) {
return $result;
},
['brickId', 'brickUID', 'row'],
false
['brickId', 'brickUID', 'row']
);
......@@ -16,15 +16,15 @@
'package_quiqqer_bricks_ajax_brick_save',
function ($brickId, $data) {
$BrickManager = QUI\Bricks\Manager::init();
$data = json_decode($data, true);
$data = json_decode($data, true);
$BrickManager->saveBrick($brickId, $data);
$Brick = $BrickManager->getBrickById($brickId);
return [
'attributes' => $Brick->getAttributes(),
'settings' => $Brick->getSettings(),
'customfields' => $Brick->getCustomFields(),
'attributes' => $Brick->getAttributes(),
'settings' => $Brick->getSettings(),
'customfields' => $Brick->getCustomFields(),
'availableSettings' => $BrickManager->getAvailableBrickSettingsByBrickType(
$Brick->getAttribute('type')
)
......
......@@ -34,19 +34,20 @@ function ($brickId, $project, $siteId, $message, $name, $email, $privacyPolicyAc
// If SimpleContact was used in a brick
$privacyPolicyCheckboxBrick = false;
$Brick = null;
if (!empty($brickId)) {
$BrickManager = QUI\Bricks\Manager::init();
$Brick = $BrickManager->getBrickByID($brickId);
$BrickManager = QUI\Bricks\Manager::init();
$Brick = $BrickManager->getBrickByID($brickId);
$privacyPolicyCheckboxBrick = $Brick->getSetting('showPrivacyPolicyCheckbox');
}
$Project = QUI::getProjectManager()->decode($project);
$Site = $Project->get((int)$siteId);
$Project = QUI::getProjectManager()->decode($project);
$Site = $Project->get((int)$siteId);
$privacyPolicyCheckbox = boolval(
$Site->getAttribute('quiqqer.settings.sitetypes.contact.showPrivacyPolicyCheckbox')
);
$useCaptcha = boolval($Site->getAttribute('quiqqer.settings.sitetypes.contact.useCaptcha'));
$useCaptcha = boolval($Site->getAttribute('quiqqer.settings.sitetypes.contact.useCaptcha'));
if (($privacyPolicyCheckbox || $privacyPolicyCheckboxBrick) && !(int)$privacyPolicyAccepted) {
throw new QUI\Exception(
......@@ -73,7 +74,7 @@ function ($brickId, $project, $siteId, $message, $name, $email, $privacyPolicyAc
$receiver = $Site->getAttribute('quiqqer.settings.sitetypes.contact.email');
} else {
// Contact form (brick)
$receiver = $Brick->getSetting('mailTo');
$receiver = $Brick?->getSetting('mailTo');
}
// fallback: admin email
......@@ -88,8 +89,8 @@ function ($brickId, $project, $siteId, $message, $name, $email, $privacyPolicyAc
$Mailer->setSubject($Site->getAttribute('title') . ' ' . $Site->getUrlRewritten());
$body = "
<span style=\"font-weight: bold;\">From:</span> {$name}<br />
<span style=\"font-weight: bold;\">E-mail:</span> {$email}<br />
<span style=\"font-weight: bold;\">From:</span> $name<br />
<span style=\"font-weight: bold;\">E-mail:</span> $email<br />
";
if ($privacyPolicyAccepted) {
......@@ -119,6 +120,5 @@ function ($brickId, $project, $siteId, $message, $name, $email, $privacyPolicyAc
return true;
},
['brickId', 'project', 'siteId', 'message', 'name', 'email', 'privacyPolicyAccepted', 'captchaResponse'],
false
['brickId', 'project', 'siteId', 'message', 'name', 'email', 'privacyPolicyAccepted', 'captchaResponse']
);
......@@ -14,7 +14,6 @@
'package_quiqqer_bricks_ajax_getAvailableBricks',
function () {
$BricksManager = QUI\Bricks\Manager::init();
return $BricksManager->getAvailableBricks();
},
false,
......
......@@ -8,6 +8,8 @@
* @return String
*/
use QUI\Projects\Site;
QUI::$Ajax->registerFunction(
'package_quiqqer_bricks_ajax_getSitesFromBrick',
function ($brickId, $options) {
......@@ -17,7 +19,7 @@ function ($brickId, $options) {
$sites = $Bricks->getSitesByBrick($Brick);
$result = array_map(function ($Site) {
/* @var $Site \QUI\Projects\Site */
/* @var $Site Site */
return [
'project' => $Site->getProject()->getName(),
'lang' => $Site->getProject()->getLang(),
......
......@@ -16,7 +16,7 @@
'package_quiqqer_bricks_ajax_project_createBrick',
function ($project, $data) {
$Project = QUI::getProjectManager()->decode($project);
$Brick = new QUI\Bricks\Brick(json_decode($data, true));
$Brick = new QUI\Bricks\Brick(json_decode($data, true));
$BrickManager = QUI\Bricks\Manager::init();
......
......@@ -15,7 +15,7 @@
QUI::$Ajax->registerFunction(
'package_quiqqer_bricks_ajax_project_getAreas',
function ($project, $layout, $siteType) {
$Project = QUI::getProjectManager()->decode($project);
$Project = QUI::getProjectManager()->decode($project);
$BrickManager = QUI\Bricks\Manager::init();
return $BrickManager->getAreasByProject($Project, $layout, $siteType);
......
......@@ -15,7 +15,7 @@
QUI::$Ajax->registerFunction(
'package_quiqqer_bricks_ajax_project_getBricks',
function ($project, $area = false) {
$Project = QUI::getProjectManager()->decode($project);
$Project = QUI::getProjectManager()->decode($project);
$BrickManager = QUI\Bricks\Manager::init();
$bricks = $BrickManager->getBricksFromProject($Project);
......@@ -30,7 +30,7 @@ function ($project, $area = false) {
$areas = $Brick->getAttribute('areas');
if (strpos($areas, ',' . $area . ',') !== false) {
if (str_contains($areas, ',' . $area . ',')) {
$result[] = $Brick->getAttributes();
}
}
......
......@@ -536,11 +536,12 @@ define('package/quiqqer/bricks/bin/BrickEdit', [
`
<div class="showBrickData-window-body">
<p class="showBrickData-window-body-text">${InfoText}</p>
<textarea autocorrect="off" autocapitalize="off" spellcheck="false">${JSON.stringify(data)}</textarea>
<textarea autocorrect="off" autocapitalize="off" spellcheck="false"></textarea>
</div>
`
);
Body.querySelector('textarea').value = JSON.stringify(data);
Body.querySelector('.showBrickData-window-body-text').appendChild(CopyBtn);
}
}
......
.quiqqer-bricks-BoxContent-entry {
float: left;
}
.quiqqer-bricks-BoxContent-entry label {
clear: both !important;
float: left !important;
margin: 0 0 10px 0 !important;
width: 100% !important;
}
.quiqqer-bricks-BoxContent-entry span {
float: left;
line-height: 30px;
width: 140px;
}
.quiqqer-bricks-BoxContent-entry input {
clear: none;
float: left;
}
/**
*
* @module package/quiqqer/bricks/bin/Controls/BoxContent
*
* @require qui/controls/elements/FormList
* @require css!package/quiqqer/bricks/bin/Controls/BoxContent.css
*/
define('package/quiqqer/bricks/bin/Controls/BoxContent', [
'qui/controls/elements/FormList',
'css!package/quiqqer/bricks/bin/Controls/BoxContent.css'
], function (QUIFormList) {
"use strict";
return new Class({
Extends : QUIFormList,
Type : 'package/quiqqer/bricks/bin/Controls/BoxContent',
initialize : function (options) {
this.parent(options);
this.setAttribute(
'entry',
'<div class="quiqqer-bricks-BoxContent-entry">' +
'<label>' +
'<span>Überschrift</span>' +
'<input type="text" name="title" />' +
'</label>' +
'<label>' +
'<span>Text</span>' +
'<textarea name="text"></textarea>' +
'<label>' +
'</div>'
);
}
});
});
<form name="quiqqer-bricks-customerReviewsSlider-settings-entry"
class="quiqqer-bricks-customerReviewsSlider-settings-entry-form"
>
<table class="data-table data-table-flexbox">
<tbody>
<tr>
<td>
<label class="field-container">
<span class="field-container-item">
{{fieldIsDisabled}}
</span>
<span id="isDisabledWrapper" class="field-container-field"></span>
</label>
</td>
</tr>
<tr>
<td>
<label class="field-container">
<span class="field-container-item">
{{fieldTitle}}
</span>
<input name="title" class="field-container-field field-title"/>
</label>
</td>
</tr>
<tr>
<td>
<label class="field-container">
<span class="field-container-item">
{{fieldText}}
</span>
<input name="text" class="field-container-field field-text" data-qui="controls/editors/Input"/>
</label>
</td>
</tr>
</tbody>
</table>
</form>
Dieser Diff ist reduziert.
......@@ -78,7 +78,7 @@ define('package/quiqqer/bricks/bin/Controls/Slider/CustomerReviewsSlider', [
options['autoplay'] = delay;
}
var glide = new Glide('.glide', options);
var glide = new Glide(this.getElm('.glide'), options);
glide.on('build.after', function () {
self.showSlider();
......
<div class="quiqqer-bricks-createFromData-header">
<p>{{infoText}}</p>
<button class="qui-button quiqqer-bricks-createFromData-copyBtn">
<span class="fa fa-copy"></span> {{btnText}}
</button>
</div>
<textarea></textarea>
<div class="quiqqer-bricks-createFromData-footer">
<label><input type="checkbox" name="adjustProject" checked/>
<span class="label-text">{{{infoProject}}}</span>
</label>
<label><input type="checkbox" name="adjustLang" checked/>
<span class="label-text">{{{infoLang}}}</span>
</label>
<div class="content-message-attention">{{{infoGeneral}}}</div>
</div>
......@@ -50,20 +50,50 @@
flex-direction: column;
}
.quiqqer-bricks-createFromData p {
.quiqqer-bricks-createFromData-header {
display: flex;
margin-bottom: 20px;
gap: 1rem;
align-items: flex-start;
}
.quiqqer-bricks-createFromData-copyBtn {
float: right;
margin-left: 20px;
white-space: nowrap;
margin-left: auto;
}
.quiqqer-bricks-createFromData textarea {
.quiqqer-bricks-createFromData > textarea {
background: #f5f2f0;
border: none;
font-family: 'monospace';
height: 100%;
min-height: 60px;
padding: 1rem;
}
\ No newline at end of file
}
.quiqqer-bricks-createFromData > textarea.error {
outline: 2px solid red;
}
.quiqqer-bricks-createFromData-footer {
margin-top: 20px;
font-size: 0.9em;
}
.quiqqer-bricks-createFromData-footer > label {
display: flex;
align-items: flex-start;
gap: 1em;
}
.quiqqer-bricks-createFromData-footer > label:not(:last-child) {
margin-bottom: 1em;
}
.quiqqer-bricks-createFromData-footer > label > input[type="checkbox"] {
flex-shrink: 0;
}
.quiqqer-bricks-createFromData-footer > label > .label-text {
flex-grow: 1;
}
......@@ -520,8 +520,8 @@ define('package/quiqqer/bricks/bin/Manager', [
new QUIConfirm({
title : QUILocale.get(lg, 'manager.window.createFromData.title'),
icon : 'fa fa-code',
maxHeight: 400,
maxWidth : 500,
maxHeight: 600,
maxWidth : 700,
autoclose: false,
events : {
onOpen: function (Win) {
......@@ -530,27 +530,24 @@ define('package/quiqqer/bricks/bin/Manager', [
Win.Loader.show();
Body.addClass('quiqqer-bricks-createFromData');
const winText = QUILocale.get(lg, 'manager.window.createFromData.text'),
btnText = QUILocale.get(lg, 'manager.window.createFromData.btnText');
Body.set(
'html',
`<div><p>
<button class="qui-button quiqqer-bricks-createFromData-copyBtn">
<span class="fa fa-copy"></span> ${btnText}</button>
${winText} </p></div>
<textarea></textarea>
`
);
Body.querySelector('.quiqqer-bricks-createFromData-copyBtn').addEventListener('click',
(event) => {
event.preventDefault();
navigator.clipboard.readText().then((text) => {
Body.querySelector('textarea').value = text
});
}
)
require(['text!package/quiqqer/bricks/bin/Manager.CreateBrickFromJSON.html'], (tpl) => {
Body.set('html', Mustache.render(tpl, {
infoText: QUILocale.get(lg, 'manager.window.createFromData.text'),
btnText: QUILocale.get(lg, 'manager.window.createFromData.btnText'),
infoProject: QUILocale.get(lg, 'manager.window.createFromData.info.project'),
infoLang: QUILocale.get(lg, 'manager.window.createFromData.info.lang'),
infoGeneral: QUILocale.get(lg, 'manager.window.createFromData.info.general'),
}));
Body.querySelector('.quiqqer-bricks-createFromData-copyBtn').addEventListener('click',
(event) => {
event.preventDefault();
navigator.clipboard.readText().then((text) => {
Body.querySelector('textarea').value = text
});
}
)
})
Win.Loader.hide();
},
......@@ -561,6 +558,11 @@ define('package/quiqqer/bricks/bin/Manager', [
const Body = Win.getContent(),
Textarea = Body.querySelector('textarea');
let convertedData = '';
const adjustProjectName = Body.querySelector('[name="adjustProject"]').checked;
const adjustProjectLang = Body.querySelector('[name="adjustLang"]').checked;
Textarea.classList.remove('error');
try {
convertedData = JSON.parse(Textarea.value);
......@@ -649,17 +651,25 @@ define('package/quiqqer/bricks/bin/Manager', [
}).then(function() {
return Bricks.createBrick(project, lang, data);
}).then(function (brickId) {
console.log(brickId);
var i,
let i,
len = allBricks.length;
// check if same name exist
for (i = 0; i < len; i++) {
if (allBricks[i].title === brickTitle) {
convertedData.attributes.title = brickTitle + '-' + brickId
convertedData.attributes.title = brickTitle + ' (' + brickId + ')'
}
}
if (adjustProjectName && convertedData.attributes.project !== project) {
convertedData.attributes.project = project;
}
if (adjustProjectLang && convertedData.attributes.lang !== lang) {
convertedData.attributes.lang = lang;
}
Bricks.saveBrick(brickId, convertedData).then(function () {
QUI.getMessageHandler().then(function (MH) {
MH.addSuccess(
......@@ -675,10 +685,10 @@ define('package/quiqqer/bricks/bin/Manager', [
MH.addError(e.getMessage());
});
Textarea.classList.add('error');
Win.Loader.hide();
});
Win.Loader.hide();
});
});
}
......
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