Liste der Anhänge anzeigen (Anzahl: 1)
CSS in textarea ohne Wirkung
Auch wenn ich in system/moules/zusatz_member/dca/tl_member.php beim 'inputType' => 'textarea' in 'eval' einen 'style'=>'height:128px' anlege, funktioniert das - dies im Gegesatz zu Feldern mit 'inputType' => 'text' - nicht.
Anhang 17692
PHP-Code:
$GLOBALS['TL_DCA']['tl_member']['fields']['customer_memo'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_member']['customer_memo'],
'exclude' => true,
'inputType' => 'textarea',
'eval' => array('mandatory'=>false, 'rgxp'=>'extnd', 'rows'=>6, 'maxlength'=>1023, 'feEditable'=>true, 'feViewable'=>true, 'feGroup'=>'address', 'decodeEntities'=>true, 'tl_class'=>'ctr', 'style'=>'height:128px'),
'sql' => "text NOT NULL"
);
Im Browser-Quelltext steht dann trotzdem immer - egal ob in 'eval' ein 'style'='height:[Zahl]px' eingetragen ist - <textarea style="height: 16px;" …>:
HTML-Code:
<textarea name="customer_memo" id="ctrl_customer_memo" class="tl_textarea" rows="6" cols="80" maxlength="1023" style="height: 16px;" onfocus="Backend.getScrollOffset()"></textarea>
Ich bin auch mit der DOM- und Stiluntersuchung in Firefox nicht fündig geworden, wo sich dieses style="height: 16px;" verbirgt und warum der Eintrag in zusatz_member/dca/tl_member.php 'style'=>'height:128px' ignoriert wird. Wo liegt die Lösung?
Kurioses:
'style'=>'width:200px' in 'eval' funktioniert. 'style'=>'width:200px !important' ergibt jedoch im Browser-Quelltext style="width:128px ! important;">
Marcel
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zitat von
the_scrat
Dieser Wert wird dynamisch durch das Javascript zugewiesen.
Hmmm…, in welcher Datei verbirgt sich das Javascript? Da Javascript erst am Ende beim Client ausgeführt wird, überschreibt es wohl die vorher die inder dca eingetragenen serverseitigen Style-Angaben.
Hast Du gerade eine Idee, wie dies angegangen werden kann?
Was macht es überhaupt für einen Sinn, dass das Javascript die Höhe des Texarea - dies ganz im Gegensatz zu input text - definiert (und damit die Angaben aus der dca ausser Kraft setzt)?
Sorry, jetzt war ich etwas voreilig und habe gerade erst den Komfort des Javascripts entdeckt, dass sich die Höhe der Texarea beim Schreiben je nach Textlänge automatisch anpasst bzw. erhöht. Das ist ein prima Benutzerkomfort. Allenfalls wäre es damit nur noch 'nett' und ohne Priorität, wenn ein style="min-height:128px" nicht ignoriert wird. Werde es gleich testen. Moment …
Hurra, klappt :)
Anhang 17693
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
Zitat von
Andreas
PHP-Code:
'eval' => array('tl_class'=>'noresize'),
Hallo Andreas
Habs soeben probiert. noresize entfaltet (nur) im Frontend seine Wirkung.
PHP-Code:
'eval' => array('mandatory'=>false, 'rgxp'=>'extnd', 'maxlength'=>1023, 'feEditable'=>true, 'rows'=>1, 'cols'=>1, 'feViewable'=>true, 'feGroup'=>'personal ', 'decodeEntities'=>true, 'tl_class'=>'noresize', 'style'=>'height:64px;'),
Anhang 17700
HTML-Code:
<textarea name="customer_memo" id="ctrl_customer_memo" class="tl_textarea" rows="1" cols="1" maxlength="1023" style="height: 16px;" onfocus="Backend.getScrollOffset()">Diese Textarea sollte ein style von "height:64px" erhalten - und nicht style von "height:16px"</textarea>
Anhang 17701
HTML-Code:
<textarea name="customer_memo" id="ctrl_customer_memo" class="textarea" rows="1" cols="1" maxlength="1023" style="height:64px;">Diese Textarea sollte ein style von "height:64px" erhalten - und nicht style von "height:16px"</textarea>
Liste der Anhänge anzeigen (Anzahl: 2)
feGroup funtioniert nicht wie erwartet
https://docs.contao.org/books/manual...er-Arrays.html
feGroup |
Gruppe
(string) |
personal Persönliche Daten
address Adressdaten
contact Kontaktdaten
login Login-Daten (nur Tabelle tl_member)
Das Hinzufügen eigener Gruppen ist möglich. |
Egal, ob ich in eval eine bekannt Gruppe wie personal angebe, oder eine eigene Gruppe wie companyadress, hat dies weder Einfluss auf das Back- noch das Frontend!:(
Beispiele 1:
PHP-Code:
$GLOBALS['TL_DCA']['tl_member']['fields']['customer_number'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_member']['customer_number'],
'exclude' => true,
'inputType' => 'text',
'eval' => array('mandatory'=>true, 'rgxp'=>'digit', 'unique'=>true, 'maxlength'=>8, 'feEditable'=>true, 'feViewable'=>true, 'feGroup'=>'personal ', 'tl_class'=>'ctr', 'style'=>'width:128px;'),
'sql' => "varchar(8) NOT NULL"
);
Backend
Anhang 17702
Frontend
Anhang 17703
Und zur Erklärung: Da der Newsletter die E-Mail-Adresse aus dem Feld 'email' verwendet, habe ich für die private E-Mail-Adresse ein neues Feld 'privat_email' angelegte und das Feld 'email' an die Postition nach 'gender' verschoben.
PHP-Code:
$GLOBALS['TL_DCA']['tl_member']['palettes']['default'] = str_replace
(
//Das neue Feld 'privat_email' nach 'email' (E-Mail-Adresse für Newsletter) positionieren und die Position (nicht das Feld!) von 'email' enfernen
'email',
'privat_email',
$GLOBALS['TL_DCA']['tl_member']['palettes']['default']
);
//Nun wird 'email' (E-Mail-Adresse für Newsletter) neu plaziert
$GLOBALS['TL_DCA']['tl_member']['palettes']['default'] = str_replace
(
'gender',
'gender,email',
$GLOBALS['TL_DCA']['tl_member']['palettes']['default']
);
$GLOBALS['TL_DCA']['tl_member']['fields']['privat_email'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_member']['privat_email'],
'exclude' => true,
'inputType' => 'text',
'eval' => array('mandatory'=>false, 'rgxp'=>'email', 'maxlength'=>128, 'feEditable'=>true, 'feViewable'=>true, 'feGroup'=>'personal', 'tl_class'=>'w50'),
'sql' => "varchar(128) NOT NULL"
);
Anschliessend die Sprachdatei angepasst:
PHP-Code:
$GLOBALS['TL_LANG']['tl_member']['email'] = array
(
'<span style="display:inline-block;width:194px;">Newsletter - E-Mail-Adresse</span>',
'Bitte geben Sie hier die E-Mail-Adresse für den Newsletter ein.'
);
$GLOBALS['TL_LANG']['tl_member']['privat_email'] = array
(
'<span style="display:inline-block;width:200px;">Privat - E-Mail-Adresse</span>',
'Bitte geben Sie hier ihre private E-Mail-Adresse ein.'
);
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zitat von
fiedsch
Für die Anzeige im Frontend musst Du dann wohl noch das Formulartemplate member_grouped wählen.
Danke für die Erläuterung betr. 'fe_' = Frontend
Template member_grouped hilft teilweise:
Anhang 17704
'feGroup'=>'companyadress' taucht jedoch nicht auf. Im Browser-Quellcode bleibt das entsprechende <fieldset><legend> mit =$legend leer.
HTML-Code:
<fieldset><legend></legend>
In /system/modules/core/modules/ModulePersonalData.php ist zu finden
PHP-Code:
// Predefine the group order (other groups will be appended automatically)
$arrGroups = array
(
'personal' => array(),
'address' => array(),
'contact' => array(),
'login' => array(),
'profile' => array()
);
Wenn ich richtig verstehe, sollte die weitere feGroup 'companyadress' automatically hinzugefügt werden.
Templates » templates/theme_merlincom_one/member_grouped.html5
PHP-Code:
<!-- indexer::stop -->
<div class="<?= $this->class ?> <?= $this->tableless ? 'tableless' : 'tableform' ?> block"<?= $this->cssID ?><?php if ($this->style): ?> style="<?= $this->style ?>"<?php endif; ?>>
<?php if ($this->headline): ?>
<<?= $this->hl ?>><?= $this->headline ?></<?= $this->hl ?>>
<?php endif; ?>
<?php if ($this->message): ?>
<?= $this->message ?>
<?php endif; ?>
<form<?php if ($this->action): ?> action="<?= $this->action ?>"<?php endif; ?> id="<?= $this->formId ?>" method="post" enctype="<?= $this->enctype ?>">
<div class="formbody">
<input type="hidden" name="FORM_SUBMIT" value="<?= $this->formId ?>">
<input type="hidden" name="REQUEST_TOKEN" value="{{request_token}}">
<?php foreach ($this->categories as $legend=>$category): ?>
<?php if (!empty($category)): ?>
<fieldset>
<legend><?= $legend ?></legend>
<?php if (!$this->tableless): ?>
<table>
<?php endif; ?>
<?= implode('', $category) ?>
<?php if (!$this->tableless): ?>
</table>
<?php endif; ?>
</fieldset>
<?php endif; ?>
<?php endforeach; ?>
<div class="submit_container">
<input type="submit" class="submit" value="<?= $this->slabel ?>">
</div>
</div>
</form>
</div>
<!-- indexer::continue -->
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zitat von
fiedsch
Du hast für Deine neue feGroup auch ein Label in der Sprachdatei languages/de/tl_member.php hinterlegt?
Hallo Fiedsch
Nein, habe ich nicht. Doch auch deinen Vorschlag eingebaut nutzt nicht. Vermutlich ist aber deine Hinweis die richtige Spur. Wahrscheinlich stimmt nur die Variable (noch) nicht:
PHP-Code:
$GLOBALS['TL_LANG']['tl_member']['companyadress'] = 'Angaben zur Firma';
Ich versuch das mal rauszufinden. Moment noch …
In der Zwischenzeit habe ich die Sache mal mit CSS gelöst. Sieht eigentlich schon ganz nett aus:
Anhang 17707
Gruss von Marcel aus Basel - und Feierabend für heute :)
Liste der Anhänge anzeigen (Anzahl: 4)
Zitat:
Zitat von
Andreas
1. Das kann nicht sein, dass die Klasse ans FE weitergereicht wird.
Andreas, ich habe mich möglicherweise missverständlich formuliert - sorry.
Dein Vorschlag hatte ja im FE seine erhoffte Wirkung gezeigt :D
Zitat:
Zitat von
Andreas
PHP-Code:
'eval' => array('tl_class'=>'noresize'),
Nun haben im FE cols, rows bzw. height ihre Wirkung gezeigt (nicht aber im BE). Am Ende fand ich die Lösung mit min-height jedoch einfacher, da Wirkung im FE und BE:
Anhang 17713
Anhang 17714
Meine aktuelle Lösung:
PHP-Code:
$GLOBALS['TL_DCA']['tl_member']['fields']['customer_memo'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_member']['customer_memo'],
'exclude' => true,
'inputType' => 'textarea',
'eval' => array('mandatory'=>false, 'rgxp'=>'extnd', 'maxlength'=>1023, 'placeholder'=>'Bemerkungen', 'feEditable'=>true, 'rows'=>1, 'cols'=>1, 'feViewable'=>true, 'feGroup'=>'personal ', 'decodeEntities'=>true, 'tl_class'=>'ctr', 'style'=>'width:100%;min-height:64px;'),
//Wenn 'rows' und 'cols' nicht angegeben werden, setzt Contao automatisch , rows="12", 'cols="20"
//'min-height' stellt sicher, dass die Höhe von 'textarea' später nicht automatisch (Javascript?) mit "height;16px;" festgelegt wird
//'eval' => array('mandatory'=>false, 'rgxp'=>'extnd', 'maxlength'=>1023, 'feEditable'=>true, 'rows'=>1, 'cols'=>1, 'feViewable'=>true, 'feGroup'=>'personal ', 'decodeEntities'=>true, 'tl_class'=>'noresize', 'style'=>'height:64px;'),
//noresize stellt sicher, dass (nur) im Frontend die Werte von rows, cols bzw. height nicht von späterem Javascript geändert werden, z.B. auf "height;16px;"
'sql' => "text NOT NULL"
);
Der Mechanismus, dass sich in der Textarea bei längerem Text die Höhe dynamisch (über min-height hinaus) anpasst (und damit die anschliessenden Eingabefelder weiter nach unten schiebt), bleibt so im Backend erhalten.
Beispiel BE Anhang 17711
Im Frontend bleibt die Höhe auch bei längerem Text bei der Einstellung von min-height und die anschliessenden Eingabefelder verschieben sich nicht nach unten. HTML stellt jedoch standardmässig sicher, dass bei längerem Text in der textarea am rechten Rand eine Scrollleiste erscheint und mit dem zunehmender Textlänge auf der Curserposition nach unten mitwandert.
Beispiel FE Anhang 17712
Ich hoffe, ich konnte damit die Situation klären :o
Liste der Anhänge anzeigen (Anzahl: 1)
Member - zusätzliche Gruppierungen mit Ein-/Ausblenden-Funktion in Backend (gelöst)
Zitat:
Zitat von
fiedsch
Die Variable (Dein 'companyadress') muss so heißen, wie die feGroup.
Hallo Fiedsch
Ich hab nun die Lösung, wie die Felder im Backend groupiert werden können:
system/modules/zusatz_member/dca/tl_member.php
PHP-Code:
// Hinzufügen der Feld-Konfiguration für die Firmenadresse
$GLOBALS['TL_DCA']['tl_member']['palettes']['default'] = str_replace
(
'company',
'{member_legend},customer_number,customer_begin,customer_end,customer_memo;{companyadress_legend},company,company_subname,company_street,company_postoffice,company_postal,company_city,company_state,company_country,company_phone,company_phone_direct,company_email,company_website,company_adress_prefered;{privatadress_legend}',
$GLOBALS['TL_DCA']['tl_member']['palettes']['default']
);
Werden mehrere Gruppierungen gesetzt, ist vor {[text]_legend} anstelle eines Kommas ein ';' setzen!
In meinem Beispiel sieht die Sprachdatei in system/modules/zusatz_member/language/de/tl_member.php wie folgt aus:
PHP-Code:
$GLOBALS['TL_LANG']['tl_member']['companyadress_legend'] = 'Angaben zur Firma / zum Arbeitgeber';
$GLOBALS['TL_LANG']['tl_member']['member_legend'] = 'Angaben zur Mitgliedschaft';
$GLOBALS['TL_LANG']['tl_member']['privatadress_legend'] = 'Adresse privat';
$GLOBALS['TL_LANG']['tl_member']['contact_legend'] = 'Kontaktdaten privat';
Uns so sieht es nun im Backend aus:
Anhang 17716