Klasse für input-Breich eigener Module

Gesperrt
jouwe
Beiträge: 7
Registriert: Sa 22. Jan 2005, 09:36
Wohnort: nürnberg
Kontaktdaten:

Klasse für input-Breich eigener Module

Beitrag von jouwe »

Hallo allerseits,

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();
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

errinnert mich etwas an das was herrb gebaut hat
-> functions.input.helper.php
hier zu finden -> http://contenido.org/forum/viewtopic.php?t=10957

vielleicht findest du dort auch etwas brauchbares für deine klasse...

es gab auch mal etwas das nannte sich mips, das meiner meinung nach die meisten optionen für eine einfache konfiguration bot...
wenn ich jetzt nur wüsste wo das teil ist...
*** make your own tools (wishlist :: thx)
jouwe
Beiträge: 7
Registriert: Sa 22. Jan 2005, 09:36
Wohnort: nürnberg
Kontaktdaten:

Beitrag von jouwe »

Hallo emergence,

... danke für Deine Reaktion. Ist schon sehr Wahrscheinlich das ich nicht der erste bin der auf die Idee kommt, aber bisher habe ich noch nie so etwas im Forum gesehen. Und wenn dann findet man es nur im Zusammenhang mit einen bestimmten Modul. Das war aber nicht mein Fokus - mir geht es hier ausschließlich um eine allgemeine Klasse mit der die Entwicklung der Backend Funktionalität eines Moduls vereinfacht wird. Ich bin mir sicher das dieses Thema Contenido gut stehen würde. Insbersondere als Anreiz zur Verwendung von Contenido für Einsteiger für die die Entwicklung von Modulen manchmal ein Buch mit sieben Siegeln zu sein scheint. Wäre das nicht ein sinnvolles Thema für eine der include- Klassen?

Gruß
Uwe
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

emergence hat geschrieben:es gab auch mal etwas das nannte sich mips, das meiner meinung nach die meisten optionen für eine einfache konfiguration bot...
wenn ich jetzt nur wüsste wo das teil ist...
Ich habe hier bei mir mip-forms als zip-Datei, keine Ahnung, woher, und ich weiss auch nicht mehr, wozu es gut sein sollte. :oops: Ist es das, was du meinst, oder meinst du etwas anderes?
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Ich bin mir sicher das dieses Thema Contenido gut stehen würde.
Yep, deswegen war die functions.input.helper.php ein Ansatz. Ich werde es nochmal unter Verwendung der cHTML-Klassen überarbeiten, aber sowas in die Richtung sollte es werden.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Gesperrt