Feedback und Ergänzungswünsche nehme ich gerne entgegen und baue weiteres gerne ein (es soll aber nicht die eierlegende Wollmilchsau werden... ).
Download: [V2.0]
Installation:
Entpacken und in das Mandanten-Includes-Verzeichnis hochladen (also für den Beispielmandanten nach cms/includes). Nicht in ein Verzeichnis unter contenido, nicht nach contenido/classes...
Verwendung:
Die genauen Details bitte der Klasse selbst entnehmen. Beispiel für eine Anwendung siehe unten.
Stellt folgende Klassen zur Verfügung:
- cHTMLInputSelectElement; ergibt selectbox - von cHTMLSelectElement abgeleitet
- UI_Config_Table; erzeugt eine Tabelle zur Strukturierung der Felder im Konfigurationsbereich (ohne das immer wieder neu fummeln zu müssen)
cHTMLInputSelectElement ergänzt cHTMLSelectElement um die Methoden addArticles (Artikel eines Verzeichnisses auflisten), addCategories (Kategorien und - optional - Artikel auflisten), addTypesFromArt (verfügbare Typen und IDs eines Artikels ergänzen) und setSelected (mehrere Elemente der SelectBox auswählen - die gehört eigentlich in die class.htmlelements.php, nun ja).
UI_Config_Table stellt als Leckerli auf Wunsch auch ein wenig JS zur Verfügung, um MultiSelect-Boxen zu unterstützen (d.h. mehrere Werte einer Selectbox zu speichern).
Version 2.0:
Komplette Überarbeitung, erstmals als Klasse auf Basis der cHTMLElements (class.htmlelements.php) von Contenido.
Vorgänger war die functions.input.helper.php, die bei zwei meiner Module Verwendung fand.
Beispiel:
Tabelle mit einer SelectBox (multiselect) mit Kategorien und Artikeln (in Input-/Eingabe-Bereich einfügen, Modul einem Template zuordnen und Vorkonfiguration aufrufen).
Code: Alles auswählen
#Includes
cInclude('classes', 'class.htmlelements.php');
cInclude('frontend', 'includes/class.input.helper.php'); # Note, this file is located in <client-path>/includes!
// Showing options
$oCfgTable = new UI_Config_Table;
$oCfgTable->setAddMultiSelJS();
// SelectBox (note, that the selectbox gets some 'user-defined' name
// - the data is stored using a hidden field)
$oSelExample = new cHTMLInputSelectElement("selExample".$cnumber);
// Add some magic ...
$oSelExample->setMultiselect();
$oSelExample->setSize(5);
$oSelExample->setEvent('click', "fncUpdateSel('selExample".$cnumber."', '"."CMS_VAR[1]"."');");
// Add data
$oOption = new cHTMLOptionElement(mi18n("- Please select -"), '');
$oSelExample->addOptionElement(0, $oOption);
$oSelExample->addCategories(0, true, false, false, true, true);
$oSelExample->setSelected(explode(',', "CMS_VALUE[1]"));
// Generate hidden field (storage)
$oHidStorage = new cHTMLHiddenField("CMS_VAR[1]", $cnumber, "CMS_VALUE[1]");
// Add a table line, first element is just an internal name (could be a number, too)
// second is the column (starting with 0), third is content
$oCfgTable->setCell('something', 0, mi18n("Example:"));
$oCfgTable->setCell('something', 1, $oHidStorage->render().$oSelExample->render());
// Example for color and colspan setting
$oCfgTable->setCell('something_else', 0, mi18n("Just another line in the same color");
$oCfgTable->setCellColspan('something_else', 0, 2);
$oCfgTable->setRowBgColor('something_else', $cfg["color"]["table_light"]);
// ... and there is more: borders, padding, table width, ...
$oCfgTable->render(true);
Gruß
HerrB