neue klasse :: chooseTree

Gesperrt
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

neue klasse :: chooseTree

Beitrag von kummer »

chooseTree

es handelt sich bei chooseTree nicht um ein ganzes modul, sondern nur um eine klasse für den input-bereich. es dient zur auswahl eines verzeichnisbaumes im konfigurationsbereiches von modulen und soll lediglich die baumauswahl etwas vereinfachen.

die anwendung ist sehr einfach:

(1) ganze klasse in den input-bereich kopieren
(2) in der klassen-instantiierung (letzte zeile des codes) den variablenbezeichner sowie den index angeben.

und hier der code:

Code: Alles auswählen

?><?
/**
  * $Revision: 1.7 $
  * $Source: D:/cvs/cvsrepo/test/PPI_Nade/module/articleList/input.php,v $
  * $Date: 2005/11/25 17:41:12 $
  */

/**
  * chooseTree
  * @author Andreas Kummer
  * @copyright Copyright &copy; 2005 w3concepts AG
  */

if (!class_exists('chooseTree')) {

	class chooseTree {
		
		function chooseTree($selected, $index) {
			
			global $lang, $client;
			
			$this->selected = $selected;
			$this->index = $index;
			$this->lang = $lang;
			$this->client = $client;
			
			$this->db = new DB_Contenido();
			$this->queryStructure();
			
			$this->outputInterface();
		}
		
		function queryStructure() {
			
			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 outputInterface() {
			
			/*
			 * Tabellenanfang ausgeben
			 */
			echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">";
			
			/*
			 * Zeilenanfang ausgeben
			 */
			echo "<tr><td>Baum wählen:</td><td>";
			
			/*
			 * Select-Feld ausgeben
			 */
			echo $this->getSelect($this->structure, $this->index);
			
			/*
			 * Zeilenende ausgeben
			 */
			echo "</td></tr>";
			
			/*
			 * Tabellenende ausgeben
			 */
			echo "</table>";
		}
		
		function getSelect($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>';
			}
			
			$returnValue .= '</select>'."\n";
			
			return $returnValue;
		}
	}
}

$chooseTree = new chooseTree("CMS_VALUE[1]", "CMS_VAR[1]");
mfg,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

errinnert mich irgendwie an die MIPS forms
nichts desto trotz ist ne möglichkeit es so zu machen...
wird sicher einigen etwas arbeit abnehmen... ;-)
*** make your own tools (wishlist :: thx)
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Das ist als Funktion BuildCategorySelect in Contenido bereits drin (erzeugt komplette Select-Box, bei Angabe des Levels auch zur reinen Baum-Auswahl) ... aber Deine Lösung ist bestimmt hübscher ... :wink:

Ich musste die vorhande Funktion auch gerade nochmal nachbauen, da man bei der vorhandenen z.B. kein (bei mir gerade benötigtes) onChange-Event mitgeben kann...

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
i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt »

Kannst du für Unwissende erklären was genau das Modul bzw. die Klasse macht? Wenni ch ein Modul mit diesem Inhalt oben anlege und in einem Template das Modul auswähle kann ich einen Baum auswählen. Aber was bringt mir das?
Gruss,
Michael

"Keep on riding this Bike!" (Jackson Mulham)
mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf »

i-fekt hat geschrieben:Kannst du für Unwissende erklären was genau das Modul bzw. die Klasse macht?
wieder nur soweit meine bescheidenen kenntnisse es erlauben, aber dies ist kein eigenständiges modul, sondern eben eine klasse cattree die man für module die im input eine dreartige klasse benötigen nutzen kann. also nur ein 'modulbaustein' für modulentwicklung
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Ja, es erspart einem, für die Auswahl eines Baumes (ich würde sogar sagen, einer Kategorie) jedes Mal den gleichen Code im Eingabe-Bereich eines Moduls programmieren zu müssen...

Aber wie gesagt, BuildCategorySelect steht - für diesen Zweck - auch zur Verfügung.

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
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

ach so, ich habe die built-in-funktion bisher gar nicht gekannt... :oops:
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Ich habe sie auch nur in einem Modul des Beispielmandanten V4.6.x entdeckt. Ist IMHO soweit auch die einzige in der Richtung - eine Artikelauswahl sucht man z.B. vergebens...

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