ich denke nachdem ich immer fleißig das Forum für eigene Entwicklungen genutzt haben sollte ich auch mal etwas dazu beitragen. Mich hat bei den Entwicklungen eigener Module immer die Erstellung des input-Bereichs für das Modul backend genervt. Um das leidige Thema zu vereinfachen habe ich eine Klasse erstellt, mit der auf einfache Weise ein eigener input-Bereich nach belieben zusammen gestellt werden kann. Im output-Bereich kann man sich dann ganz einfach der CMS-Variablen bedienen und bei Bedarf ohne Stress weitere Felder im input-Bereich hinzufügen.
Anmerkung:
- Die Klasse lebt von verschiedenen Artikellisten Modulen aus dem Forum - ich habe mir hier Anregungen für die Erstellung der SelectBox geholt.
- Momentan ist nur eine SelectBox für Kategoriebäume, eine SelectBox für eigene Werte und ein Kommentarfeld drin
- den Funktionen für die SelectBoxen werden folgende Parameter übergeben: CMS_VALUE[x], CMS_VAR[x],"Beschreibung"
- hier wird es bestimmt noch viele Erweiterungen geben. Ich freue mich schon drauf.
- und last but not least: Ja der Code ist nicht unbedingt der beste. Aber ich habe nun mal wenig Zeit und für mich reicht es erst mal. Es steht aber jeden Leser frei Verbesserungen einzubringen.
Code: Alles auswählen
?><?
/**
* $Revision: 1.0 $
* $Date: 2006/03/25
*/
/**
* Class inputInterface
*/
if (!class_exists('inputInterface')) {
class inputInterface {
function inputInterface (){
}
function showTreeStructure ($selected, $index, $headerstring) {
global $lang, $client;
$this->selected = $selected;
$this->index = $index;
$this->lang = $lang;
$this->client = $client;
$this->headerstring = $headerstring;
$this->db = new DB_Contenido();
$this->queryTreeStructure();
echo "<tr><td>".$this->headerstring."</td><td>";
echo $this->getTreeSelect($this->structure, $this->index);
echo "</td></tr>"."\n";
}
function queryTreeStructure() {
global $cfg;
$this->db->query("" .
"SELECT " .
" a.idcat, " .
" a.level, " .
" c.name " .
"FROM {$cfg['tab']['cat_tree']} AS a, " .
"{$cfg['tab']['cat']} AS b, " .
"{$cfg['tab']['cat_lang']} AS c " .
"WHERE " .
" a.idcat = b.idcat " .
" AND b.idcat = c.idcat " .
" AND c.idlang = '{$this->lang}' " .
" AND b.idclient = '{$this->client}' " .
" AND c.visible=1 " .
"ORDER BY " .
" a.idtree" .
"");
$this->structure = array();
while ($this->db->next_record()) {
$this->structure[$this->db->f('idcat')] = array('level'=>$this->db->f('level'), 'name'=>$this->db->f('name'));
}
}
function getTreeSelect($structure, $name) {
$returnValue = '<select size="1" name="'.$name.'" class="text_medium">'."\n";
foreach ($structure as $idcat => $item) {
if ($idcat == $this->selected) {
$selected = ' selected = "selected"';
} else {
$selected = '';
}
$spaces = "|";
for ($i = 0; $i < $item['level']; $i ++) {
$spaces = $spaces . "--";
}
$spaces .= ">";
$returnValue .= '<option value="'.$idcat.'"'.$selected.'>'.$spaces.$item['name'].'</option>'."\n";
}
$returnValue .= '</select>'."\n";
return $returnValue;
}
function showSelectBox($value, $var, $valarray ,$headerstring){
echo '<tr valign=\"top\">'."\n";
echo '<td width=\"150\">'.$headerstring.'</td>'."\n";
echo '<td><select name="'.$var.'" size="1">'."\n";
foreach ($valarray as $inhalt){
echo '<option value="' . $inhalt . '" ';
if ($inhalt == $value) {echo 'selected="selected"';}
echo '>' . $inhalt . '</option>'."\n";
}
echo '</select></td></tr>'."\n";
}
function outputComment($comment){
echo "<tr><td colspan='2'>".$comment."</td></tr>";
}
function outputStart() {
echo "<table cellspacing='0' cellpadding='10' border='0'>"."\n";
}
function outputEnd() {
echo "</table>"."\n";
}
}
}
$box_1_inhalt = array (
"created",
"lastmodified",
"published",
"title"
);
$box_2_inhalt = array (
"asc",
"desc"
);
$inputInterface = new inputInterface();
$inputInterface->outputStart();
$inputInterface->showTreeStructure("CMS_VALUE[1]", "CMS_VAR[1]","Kategorie der Artikelliste <br>(darf nur die Artikel enthalten):");
$inputInterface->showSelectBox ("CMS_VALUE[2]", "CMS_VAR[2]",$box_1_inhalt,"Sortierung der Artikelliste:");
$inputInterface->showSelectBox ("CMS_VALUE[3]", "CMS_VAR[3]",$box_2_inhalt,"Sortierrichtung der Artikelliste:");
$inputInterface->showTreeStructure("CMS_VALUE[4]", "CMS_VAR[4]","Kategorie des Artikeltemplate <br>(darf nur das Template enthalten):");
$inputInterface->outputComment ("Für Änderungen der Einstellungen müssen immer die Templates beider Kategorien zugleich aktualisiert werden!");
$inputInterface->outputEnd();