Problem mit Eigenschaften "title" und "content" bei Content Switcher Baustein
Problem
Im Content Switcher kann man neue Einträge hinzufügen (package/quiqqer/bricks/bin/Controls/ContentSwitcher
). Das Control erstellt pro Eintrag paar neue Inputs. Unglücklicherweise sind sie unter anderem title
und content
benant
<div class="quiqqer-bricks-ContentSwitcher-entry" style="display: none;">
<label class="entry-image">
<span class="entry-title">
QUILocale.get(lg, 'contentSwitcher.entries.entry.picture')
</span>
<input class="media-image" data-qui-options-selectable_types="image" name="img"/>
</label>
<label>
<span class="entry-title">
QUILocale.get(lg, 'contentSwitcher.entries.entry.title')
</span>
<input type="text" name="title"/>
</label>
<label>
<span class="entry-title">
QUILocale.get(lg, 'contentSwitcher.entries.entry.content')
</span>
<input name="content" class="field-container-field field-description"
data-qui="controls/editors/Input"/>
</label>
</div>
Problematisch ist das dann, wenn in dem Baustein die flexible Einstellungen eingeschaltet sind und die Einträge werden über die Seite erstellt
Seite --> Bausteine --> Content Switcher Einstellungen --> hier Einträge hinzufügen (siehe Screenshot)
Lösung
- Die Inputs-Felder müssen umbenannt werden. Dabei werden die Einstellungen beim nächstem Speichern verloren gehen, daher...
- Es muss ein Parser in das Control eingebaut werden (von @henbug gebaut):
/**
* @event on import
*/
$onImport: function () {
// look if some value exist
var value = this.getElm().value;
if (value === '') {
return;
}
value = JSON.decode(value);
if (typeOf(value) !== 'array') {
return;
}
for (var i = 0, len = value.length; i < len; i++) {
if (typeof value[i].content !== 'undefined') {
value[i]['content-switcher-content'] = value[i].content;
}
if (typeof value[i].title !== 'undefined') {
value[i]['content-switcher-title'] = value[i].title;
}
}
this.getElm().value = JSON.encode(value);
this.parent();
},
- Im HTML müssen jetzt beide Variablen geprüft werden für den Fall, dass ein Update durchgeführt aber Baustein noch nicht neue gespeichert wurde. Ansonsten kann in HTML nach einer neuen Smarty Variable gesucht werden, im Baustein ist immer noch die alte gespeichert.
- Alle andere Bausteine, die auf dem Prinzip basieren (z.B.
package/quiqqer/bricks/bin/Controls/CustomerReviews
) müssen auch angepasst werden.
Issue als Referenz
Das Issue hier dient als Referenz. Im Code wird hier verlinkt, damit man später nachvollziehen kann, wieso die "komischen" Änderungen im Code sind.