Modulanfrage

Alles rund um Module und Plugins in CONTENIDO 4.10.
Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Modulanfrage

Beitrag von Oldperl » Do 1. Aug 2019, 14:11

Servus,

bitte Nein, so nicht! Das geht alles in einem Modul. Select-Feld zur Auswahl im Editor, speichern in VAR und VALUE. Auswahl Anzeige, sprich die CSS-Klasse, je nach Auswahl in VALUE.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Modulanfrage

Beitrag von Faar » Do 1. Aug 2019, 14:15

Oldperl hat geschrieben:
Do 1. Aug 2019, 14:11
bitte Nein, so nicht! Das geht alles in einem Modul. Select-Feld zur Auswahl im Editor, speichern in VAR und VALUE. Auswahl Anzeige, sprich die CSS-Klasse, je nach Auswahl in VALUE.
OK, du hast ja recht, das wäre eleganter.
Wo ist das Posting des Codes? :roll:
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

farina
Beiträge: 259
Registriert: Fr 24. Okt 2003, 13:16
Wohnort: Düren
Kontaktdaten:

Re: Modulanfrage

Beitrag von farina » Do 1. Aug 2019, 14:16

wenn man in den Input des Moduls dieses schreibt

Code: Alles auswählen

 ?>
	<form id="classes">
    <select name='class1'>
	  <option value=''>Bitte wählen</option>	
      <option value='eins'>eins</option>
      <option value='zwei'>zwei</option>
      <option value='drei'>drei</option>
	 <button type="submit">Eingaben absenden</button>
	</select>
</form>
		
<?php
Dann erhält man in der Vorlage ein Auswahlmenü, insofern das Modul nicht über die body-class eingebunden ist.
Ich müsste nun:
- den richtigen input schreiben
- den richtigen output schreiben
- das ganze der body-class zuweisen

Vielleicht geht es ja auch gar nicht.
Ich verspreche mir davon weniger Layouts, was eine umfangreiche Site übersichtlicher macht. Bei Änderungen muß man nur ein Layout ändern.
Nach der jetzigen Methode muss ich eine Layout duplizieren und mit neuer body-class versehen. Bei Änderungen an allen Layouts ändern. Und das finde ich immer sehr nervig.

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Modulanfrage

Beitrag von Oldperl » Do 1. Aug 2019, 14:18

Servus,
Faar hat geschrieben:
Do 1. Aug 2019, 14:15
Wo ist das Posting des Codes? :roll:
das schafft ihr schon, ihr seid doch alle Profis... 8)

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

farina
Beiträge: 259
Registriert: Fr 24. Okt 2003, 13:16
Wohnort: Düren
Kontaktdaten:

Re: Modulanfrage

Beitrag von farina » Do 1. Aug 2019, 14:23

Nö leider nicht :cry:

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Modulanfrage

Beitrag von Faar » Do 1. Aug 2019, 15:03

Man kann es auf die alte Methode mit Tabellen machen oder moderner hiermit: https://api.contenido.org/latest/class- ... ement.html
Wobei man das hier mit hinzu nehmen sollte: https://api.contenido.org/latest/class-cHTML.html

Ich habs nicht getestet aber vielleicht funktioniert es ja:

Code: Alles auswählen

$classarray = array("rot", "gruen", "gelb");
$selectElem = new cHTMLSelectElement("CMS_VAR[0]","", "CMS_VAR[0]");
$selectElem->setClass("Klass_select");
$selectElem->appendOptionElement(new cHTMLOptionElement(i18n("Please choose"), ""));
		foreach ($classarray as $option) {
			if ("CMS_VALUE[0]" != $option) {
				$selectElem->appendOptionElement(new cHTMLOptionElement($option, $option));
			} else {
				$selectElem->appendOptionElement(new cHTMLOptionElement($option, $option, true));
			}
		}
echo $selectElem->toHTML();
echo '&nbsp<input type="image" src="images/submit.gif">';
Zuletzt geändert von Faar am Do 1. Aug 2019, 15:51, insgesamt 1-mal geändert.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

farina
Beiträge: 259
Registriert: Fr 24. Okt 2003, 13:16
Wohnort: Düren
Kontaktdaten:

Re: Modulanfrage

Beitrag von farina » Do 1. Aug 2019, 15:49

Das Script von Faar ist im im Input.
Leider ist das einzige was in den Voreinstellungen der Vorlage zu sehen ist, der anklickbare submit-Button.

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Modulanfrage

Beitrag von Faar » Do 1. Aug 2019, 15:51

achje, da fehlt eine Ausgabe mit echo.
Habs oben geändert.
Wie gesagt, ich habe es nicht getestet sondern nur theoretisch zusammen gebaut.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Modulanfrage

Beitrag von Oldperl » Do 1. Aug 2019, 16:04

Servus,

ich bin dann mal so frei... :wink:

Modulname: phpBO CSS-Class-Selector
Type: content

Beschreibung:

Code: Alles auswählen

*de*
Mit diesem Modul können Sie über die Konfiguration der Vorlage einem HMTL-Tag einen CSS-Klassennamen zuweisen. Gehen Sie dafür wie folgt beispielsweise für den body-Tag wie folgt vor.

1. Im Layout im body-Tag den Class-Parameter ergänzen
2. Als Inhalt eine container-Tag erstellen und diesem dann dieses Modul zuweisen
3. In den sprachabhängigen Mandanteneinstellungen eine kommaseparierte Liste der gewünschten CSS-Klassennamen ablegen (phpbo-css-class-selector|classnames|[Liste])
4. In der Vorkonfiguration der Vorlage den gewünschten Eintrag selektieren.

Modul-Input:

Code: Alles auswählen

?><?php
/**
 * description: CSS Classname Selector (Input)
 *
 * @package Module
 * @subpackage phpBO
 * @version 1.0
 * @author ortwin.pinke@php-backoffice.de
 * @copyright PHP-Backoffice <php-backoffice.de>
 * @license http://www.gnu.de/documents/gpl-3.0.de.html
 * @link http://php-backoffice.de
 */

$bDisableFlag = true;
$iSelected = 0;

$oClientLang = new cApiClientLanguage(false, cRegistry::getClientId(), cRegistry::getLanguageId());
$sCssClassNames = $oClientLang->getProperty("phpbo-css-class-selector", "classnames");
$aCssClassNames = explode(",", $sCssClassNames);

if(is_array($aCssClassNames) && count($aCssClassNames) > 0) {
    $bDisableFlag = false;
    $iSelected = "CMS_VALUE[1]";
}

$oCfgTable = new UI_Config_Table();

$oSelCssClass = new cHTMLInputSelectElement("CMS_VAR[1]", 1, '', $bDisableFlag);
$oOption           = new cHTMLOptionElement(mi18n("-- Please Select --"), '');
$oSelCssClass->addOptionElement(0, $oOption);

foreach($aCssClassNames as $iKey => $sCssClassName) {
    $oSelCssClass->appendOptionElement(new cHTMLOptionElement($sCssClassName, $iKey+1));
}
$oSelCssClass->setDefault($iSelected);

$oCfgTable->setCell('select', 0, mi18n("Select CSS Class"));
$oCfgTable->setCell('select', 1, $oSelCssClass->render()."\n ");

$oCfgTable->render(true);

?><?php
Modul-Output:

Code: Alles auswählen

<?php
/**
 * description: CSS Classname Selector (Output)
 *
 * @package Module
 * @subpackage phpBO
 * @version 1.0
 * @author ortwin.pinke@php-backoffice.de
 * @copyright PHP-Backoffice <php-backoffice.de>
 * @license http://www.gnu.de/documents/gpl-3.0.de.html
 * @link http://php-backoffice.de
 */

$oClientLang = new cApiClientLanguage(false, cRegistry::getClientId(), cRegistry::getLanguageId());
$sCssClassNames = $oClientLang->getProperty("phpbo-css-class-selector", "classnames");
$aCssClassNames = explode(",", $sCssClassNames);
if(!empty($aCssClassNames[0])) {
    array_unshift($aCssClassNames, "");
}

if(isset($aCssClassNames["CMS_VALUE[1]"]) && !empty($aCssClassNames["CMS_VALUE[1]"])) {
    echo  $aCssClassNames["CMS_VALUE[1]"];
}
?>
Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

farina
Beiträge: 259
Registriert: Fr 24. Okt 2003, 13:16
Wohnort: Düren
Kontaktdaten:

Re: Modulanfrage

Beitrag von farina » Do 1. Aug 2019, 16:09

Hätte ich ja auch mal merken können. :?

Super das klappt. Ich kann die Klasse in den Voreinstellungen der Vorlage auswählen.
Jetzt muss ich sie "nur" noch im Output auslesen und in den body-Tag bekommen.

Da hatte ich vorhin schonmal ganz anarchisch gedacht, man ersetzt den eröffnenden body-Tag durch das Modul.
Im Output steht dann irgendwie sowas

Code: Alles auswählen

echo "<body class="Variable-aus-Input">";
Oh sorry. Das bezieht sich auf Faar. Hatte den Post danach noch nicht gelesen.

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Modulanfrage

Beitrag von Faar » Do 1. Aug 2019, 16:14

farina hat geschrieben:
Do 1. Aug 2019, 16:09
Jetzt muss ich sie "nur" noch im Output auslesen und in den body-Tag bekommen.
So vielleicht:

Code: Alles auswählen

<?php

$bodytag = "CMS_VALUE[0]";
echo '<body class="'.$bodytag.'">';

?>
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

farina
Beiträge: 259
Registriert: Fr 24. Okt 2003, 13:16
Wohnort: Düren
Kontaktdaten:

Re: Modulanfrage

Beitrag von farina » Do 1. Aug 2019, 16:36

@Oldpearl:
Danke!!!! und das mal eben auf die Schnelle! :shock:

Das klappt insofern nicht, als der cms-Container nicht als Klasse akzeptiert wird. Im Quelltext steht dann genau das gleiche wie im Layout

Code: Alles auswählen

<body class='<container id="10" name="layout_css_class" types="content" mode="optional" default="layout_css_class">layout_css_class</container>'>

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Modulanfrage

Beitrag von homtata » Do 1. Aug 2019, 16:49

Man kann container nicht in Hochkommas verschachteln.
Du kannst ihn einbinden, erzeugst aber in Oldperls Modul kein echo, sondern speicherst in einer Variablen ab, die du dann im Quellcode einbinden kannst.

Im Layout z.B. vor dem Bodytag oder im Header irgendwo:

Code: Alles auswählen

<container id="10" name="layout_css_class" types="content" mode="optional" default="layout_css_class">
Den Output im Modul ändern von

Code: Alles auswählen

    echo  $aCssClassNames["CMS_VALUE[1]"];
in

Code: Alles auswählen

    $myClass = $aCssClassNames["CMS_VALUE[1]"];
und dann im Layout den Body wie folgt unterbrechen:

<body class='<?php echo $myClass; ?>'>

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Modulanfrage

Beitrag von Oldperl » Do 1. Aug 2019, 16:59

Servus,

danke @homtata, wobei der body-Tag an sich schon problematisch ist. :roll:

Alternativ kannst Du auch den Output meines Moduls ersetzen durch

Code: Alles auswählen

<?php

/**
 * description: CSS Classname Selector
 *
 * @package Module
 * @subpackage phpBO
 * @version 1.1
 * @author ortwin.pinke@php-backoffice.de
 * @copyright PHP-Backoffice <php-backoffice.de>
 * @license http://www.gnu.de/documents/gpl-3.0.de.html
 * @link http://php-backoffice.de
 */
$oClientLang = new cApiClientLanguage(false, cRegistry::getClientId(), cRegistry::getLanguageId());
$sCssClassNames = $oClientLang->getProperty("phpbo-css-class-selector", "classnames");
$aCssClassNames = explode(",", $sCssClassNames);
if (!empty($aCssClassNames[0])) {
    array_unshift($aCssClassNames, "");
}

if (isset($aCssClassNames["CMS_VALUE[1]"]) && !empty($aCssClassNames["CMS_VALUE[1]"])) {
    echo '<body class="' . $aCssClassNames["CMS_VALUE[1]"] . '" >';
} else {
    echo '<body class="empty">';
}
?>
und dann den body-Tag komplett im Layout durch

Code: Alles auswählen

<container id="6000" name="css_class" types="content" mode="fixed" default="phpBO CSS-Class-Selector">css_class</container>
ersetzen. Das funktioniert (getestet)

Gruß aus Franken

Ortwin

PS: Grundsätzlich muss man aber auch immer noch Chains im Auge behalten, die das HTML prüfen und eventuell auch nachträglich noch Änderungen machen.
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

farina
Beiträge: 259
Registriert: Fr 24. Okt 2003, 13:16
Wohnort: Düren
Kontaktdaten:

Re: Modulanfrage

Beitrag von farina » Do 1. Aug 2019, 18:15

Klappt, Danke!
Und ich habe die andere Version von Faar auch mal weiterverfolgt. Die klappt auch. Danke!

Allerdings mit einer großen Einschränkung. Im Backend wird im Editor nichts mehr angezeigt. Hier fehlt dann wahrscheinlich der body-Tag. :cry:

Antworten