Konfiguration (Speichern von Arrays)

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

Konfiguration (Speichern von Arrays)

Beitrag von kummer »

hallo zusammen

ich habe eine erweiterung geschrieben, von der ich annnehme, dass sie alle probleme bei der speicherung der konfiguration lösen kann. und zwar ist damit die erstellung, die speicherung sowie die wiederherstellung von folgenden formularfeldtypen möglich:

* textfeld
* textarea
* select
* select mit mehrfachauswahl
* radio-buttons
* checkboxen

die erstellung der konfiguration ist sehr einfach und sieht zum beispiel so aus:

Code: Alles auswählen

include_once('wdreiConf.class.inc.php');

$wdreiConf[$cnumber] = new wdreiConf();

$wdreiConf[$cnumber]->makeText('Ein Textfeld:','meinFeldbezeichner');
$wdreiConf[$cnumber]->makeTextarea('Eine Textarea:', 'meinFeldbezeichner2');
$wdreiConf[$cnumber]->makeSelect('Ein Select mit Mehrfachauswahl:', 'select1', array('Contenido'=>'1', 'Typo3'=>'2', 'Magnolia'=>'3'), null, true);
$wdreiConf[$cnumber]->makeSelect('Ein Select ohne Mehrfachauswahl:', 'select2', array('Contenido'=>'1', 'Typo3'=>'2', 'Magnolia'=>'3'));
$wdreiConf[$cnumber]->makeRadio('Radio-Buttons:', 'radio1', array('Contenido'=>'1', 'Typo3'=>'2', 'Magnolia'=>'3'));
$wdreiConf[$cnumber]->makeCheckbox('Checkboxen:', 'checkbox1', array('Contenido'=>'1', 'Typo3'=>'2', 'Magnolia'=>'3'));

$wdreiConf[$cnumber]->showConfiguration();
die einzelnen schritte sind wie folgt:

(1) include_once der klasse vornehmen

(2) klasse instantiieren

(3) die einzelnen felder angeben (mit makeText, makeTextarea, makeRadio, makeCheckbox, makeSelect). der erste übergabewert ist die beschriftung links, der zweite der variablenbezeichner. bei text und textareas reicht das schon aus. bei den übrigen kommt als dritter übergabewert noch ein assoziativer array hinzu mit den wertepaaren. der vierte übergabewert ist optional und erlaubt die übergabe von attributten (für die darstellung) ebenfalls in form von wertepaaren. und dann ist noch ein fünfter übergabewert verfügbar bei selects. bei übergabe von true lässt das select mehrfachauswahl zu.

soweit zum inputbereich. im moduloutput kann man die entsprechenden werte dann einfach über die klasse abfragen. das sieht dann z.b. so aus:

Code: Alles auswählen

<?
include_once('wdreiConf.class.inc.php');

$wdreiConf[$cCurrentContainer] = new wdreiConf();

echo '<pre>';
var_dump($cCurrentContainer);
var_dump($wdreiConf[$cCurrentContainer]->getValue(meinFeldbezeichner));
var_dump($wdreiConf[$cCurrentContainer]->getValue(meinFeldbezeichner2));
var_dump($wdreiConf[$cCurrentContainer]->getValue(select1));
var_dump($wdreiConf[$cCurrentContainer]->getValue(select2));
var_dump($wdreiConf[$cCurrentContainer]->getValue(radio1));
var_dump($wdreiConf[$cCurrentContainer]->getValue(checkbox1));
echo '<pre>';

?>
ich habe im vorliegenden beispiel einfach mal ein var_dump gemacht. die methode getValue gibt einfach den wert der variablen zurück und kann wie eine variable verwendet werden.

die installation ist sehr einfach. unten stehenden code kopieren und als 'wdreiConf.class.inc.php' in das include-verzeichnis von contenido legen. das ist schon alles.

Code: Alles auswählen

<?php

/**
  * $Revision: 1.10 $
  * $Source: D:/cvs/cvsrepo/test/CONTENIDO_MODULE/wdreiConf/wdreiConf.class.inc.php,v $
  * $Date: 2005/10/10 06:15:44 $
  */

/**
 * wdreiConf - Klasse zur vereinfachten Konfiguration in Contenido
 * @author Andreas Kummer
 * @copyright Copyright &copy; 2005, mumprecht & kummer w3concepts
 */
class wdreiConf {

	/**
	 * Konstruktor der Klasse
	 */
	function wdreiConf() {
		
		global $idart, $lang, $cnumber, $cCurrentContainer, $idtpl, $idcat;
		
		/*
		 * Globale Variablen in den Kontext der Klasse aufnehmen
		 */
		$this->idart = (empty($idart))?(0):($idart);
		$this->lang = (empty($lang))?(0):($lang);
		$this->cnumber = (empty($cnumber))?(0):($cnumber);
		$this->cCurrentContainer = (empty($cCurrentContainer))?(0):($cCurrentContainer);
		$this->idtpl = (empty($idtpl))?(0):($idtpl);
		$this->idcat = (empty($idcat))?(0):($idcat);
		
		/*
		 * Ermitteln der Konfigurationsstufe (Template, Kategorie, Artikel)
		 */
		$this->getConfigurationLevel();
		
		/*
		 * Contenido-Datenbank im Klassenkontext initialisieren
		 */
		$this->db = new DB_Contenido();		
		
		/*
		 * Tabelle anlegen, falls diese noch nicht existieren sollte
		 */
		$this->createTable();
		
		/*
		 * Daten speichern, falls eine Übertragung erfolgt ist
		 */
		$this->saveData();
		
		/*
		 * Zurück holen der Daten
		 */
		$this->restoreValues();
	}
		
	/**
	 * Speicherung der übergebenen Konfigurationsdaten.
	 * @param Struct  Zu serialisierende und zu speichernde Werte
	 * @return Boolean Die Funktion gibt in jedem Fall TRUE zurück
	 */
	function saveSerial($value) {
		
		/*
		 * Serial erstellen
		 */
		$content = $this->createSerial($value);
		
		/*
		 * Ermitteln, ob bereits ein Serial in der Datenbank vorhanden ist.
		 */
		$this->db->query("SELECT * FROM con_wdreiConf WHERE idlang = {$this->lang} AND cnumber = {$this->cnumber} AND idtpl = {$this->idtpl} AND idcat = {$this->idcat} AND idart = {$this->idart}");
		
		if ($this->db->next_record()) {
			/*
			 * Serial ist bereits vorhanden; Update wird ausgeführt
			 */
			$this->db->query("UPDATE con_wdreiConf SET content = '{$content}' WHERE idlang = {$this->lang} AND cnumber = {$this->cnumber} AND idtpl = {$this->idtpl} AND idcat = {$this->idcat} AND idart = {$this->idart}");
			return true;
		}
		
		/*
		 * Serial ist noch nicht vorhanden; Insert wird ausgeführt
		 */
		$this->db->query("INSERT INTO con_wdreiConf(content, idart, idlang, idtpl, idcat, cnumber) VALUES('{$content}', {$this->idart}, {$this->lang}, {$this->idtpl}, {$this->idcat}, {$this->cnumber})");
		return true;
	}
	
	/**
	 * Erstellt den zur Speicherung notwendigen WDDX-Serial.
	 * @param Struct  Zu serialisierende Werte
	 * @return String WDDX-Paket (XML) mit der Struktur sowie den Werten
	 */
	function createSerial($value) {
		
		return mysql_real_escape_string(wddx_serialize_value($value));
	}
	
	/**
	 * Prüft, ob sich eine Tabelle mit der Bezeichnung con_wdreConf bereits in
	 * der Datenbank befindet oder nicht. Falls die Tabelle nicht existiert,
	 * wird sie in der aktuellen Datenbank angelegt werden.
	 * @return Boolean Die Funktion gibt in jedem Fall TRUE zurück
	 */
	function createTable() {
		
		$this->db->query("SHOW  TABLES  LIKE  'con_wdreiConf'");
		
		if ($this->db->next_record()) {
			/*
			 * Tabelle existiert bereits
			 */
			return true;
		}
		
		/*
		 * Tabelle existiert noch nicht und muss angelegt werden
		 */
		$this->db->query("CREATE TABLE con_wdreiConf (pk_wdreiConf int(10) unsigned NOT NULL auto_increment, cnumber int(11) NOT NULL default '0', idart int(11) NOT NULL default '0', idlang int(11) NOT NULL default '0', idtpl int(10) unsigned NOT NULL default '0', idcat int(10) unsigned NOT NULL default '0', content text NOT NULL, PRIMARY KEY  (pk_wdreiConf)) TYPE=MyISAM");
		
		return true;
	}
	
	/**
	 * Gibt die HTML-formatierte Konfigurationsmaske zurück.
	 */
	function showConfiguration() {
		
		$returnValue = '<table width="100%" cellpadding="3" cellspacing="0" border="0">';
		$returnValue .= '<tr><td width="35%" class="text_medium"></td><td class="text_medium"></td></tr>';
		
		if (!empty($this->field)) {
			foreach ($this->field as $field) {
				$returnValue .= '<tr><td valign="top" width="35%" class="text_medium">'.$field[0].'</td><td valign="top" class="text_medium">'.$field[1].'</td></tr>';
			}
		}
		
		$returnValue .= '</table>';
		
		echo $returnValue;
	}
	
	/**
	 * Erzeugt in Textfeld.
	 * @param String  Feldbezeichner (Anzeige links)
	 * @param String  Feldname
	 * @param Array  Assoziatives Array mit dem Attributbezeichner als Schlüssel
	 * und dem Attributwert als Wert
	 */
	function makeText($label, $name, $attributes = null) {
		
		if (empty($attributes['size'])) {
			$attributes['size'] = 40;
		}
		
		$returnValue = '<input type="text" name="'.$this->cnumber.'_'.$name.'" ';
		$returnValue .= $this->addAttributes($attributes);
		$returnValue .= 'value="'.$this->getValue($name).'" />';
		
		$this->field[] = array($label, $returnValue);
	}
	
	/**
	 * Erzeugt eine Textarea.
	 * @param String  Feldbezeichner (Anzeige links)
	 * @param String  Feldname
	 * @param Array  Assoziatives Array mit dem Attributbezeichner als Schlüssel
	 * und dem Attributwert als Wert
	 */
	function makeTextarea($label, $name, $attributes = null) {

		if (empty($attributes['rows'])) {
			$attributes['rows'] = 6;
		}

		if (empty($attributes['cols'])) {
			$attributes['cols'] = 40;
		}

		$returnValue = '<textarea name="'.$this->cnumber.'_'.$name.'" ';
		$returnValue .= $this->addAttributes($attributes);
		$returnValue .= '>'.$this->getValue($name).'</textarea>';
		
		$this->field[] = array($label, $returnValue);
	}
	
	/**
	 * Erzeugt ein Select-Feld.
	 * @param String  Feldbezeichner (Anzeige links)
	 * @param String  Feldname
	 * @param Array  Assoziatives Array mit dem Werte-Schlüssel-Paaren. Der
	 * Schlüssel wird angezeigt, der Wert dient als Übergabewert
	 * @param Array  Assoziatives Array mit dem Attributbezeichner als Schlüssel
	 * und dem Attributwert als Wert
	 * @param Boolean  Bestimmt, ob das Selectfeld eine Mehrfachauswahl erlaubt
	 * oder nicht
	 */
	function makeSelect($label, $name, $valuePairs, $attributes = null, $multiple = false) {
		
		if (empty($attributes['size'])) {
			if ($multiple) {
				$attributes['size'] = 5;
				$attributes['multiple'] = 'multiple';
			} else {
				$attributes['size'] = 1;
			}
		}

		if ($multiple) {
			$returnValue = '<select name="'.$this->cnumber.'_'.$name.'[]" ';
		} else {
			$returnValue = '<select name="'.$this->cnumber.'_'.$name.'" ';
		}
		
		$returnValue .= $this->addAttributes($attributes);
		$returnValue .= '>';
		
		if (!empty($valuePairs)) {
			foreach ($valuePairs as $key => $value) {
				if ($multiple) {
					if (in_array($value, $this->getValue($name))) {
						$returnValue .= '<option value="'.$value.'" selected="selected">'.$key.'</option>';
					} else {
						$returnValue .= '<option value="'.$value.'">'.$key.'</option>';
					}
				} else {
					if ($this->getValue($name) == $value) {
						$returnValue .= '<option value="'.$value.'" selected="selected">'.$key.'</option>';
					} else {
						$returnValue .= '<option value="'.$value.'">'.$key.'</option>';
					}
				}
			}
		}
		
		$returnValue .= '</select>';
		
		$this->field[] = array($label, $returnValue);
	}
	
	/**
	 * Erzeugt Radio-Buttons.
	 * @param String  Feldbezeichner (Anzeige links)
	 * @param String  Feldname
	 * @param Array  Assoziatives Array mit dem Werte-Schlüssel-Paaren. Der
	 * Schlüssel wird angezeigt, der Wert dient als Übergabewert
	 * @param Array  Assoziatives Array mit dem Attributbezeichner als Schlüssel
	 * und dem Attributwert als Wert
	 */
	function makeRadio($label, $name, $valuePairs, $attributes = null) {
		
		$returnValue = '';
		
		if (!empty($valuePairs)) {
			foreach ($valuePairs as $key => $value) {
				if ($this->getValue($name) == $value) {
					$returnValue .= '<div><input type="radio" name="'.$this->cnumber.'_'.$name.'" value="'.$value.'" checked="checked"> '.$key.'</div>';
				} else {
					$returnValue .= '<div><input type="radio" name="'.$this->cnumber.'_'.$name.'" value="'.$value.'"> '.$key.'</div>';
				}
			}
		}
		
		$this->field[] = array($label, $returnValue);
	}
	
	/**
	 * Erzeugt Checkboxen.
	 * @param String  Feldbezeichner (Anzeige links)
	 * @param String  Feldname
	 * @param Array  Assoziatives Array mit dem Werte-Schlüssel-Paaren. Der
	 * Schlüssel wird angezeigt, der Wert dient als Übergabewert
	 * @param Array  Assoziatives Array mit dem Attributbezeichner als Schlüssel
	 * und dem Attributwert als Wert
	 */
	function makeCheckbox($label, $name, $valuePairs, $attributes = null) {
		
		$returnValue = '';

		if (!empty($valuePairs)) {
			foreach ($valuePairs as $key => $value) {
				if (in_array($value, $this->getValue($name))) {
					$returnValue .= '<div><input type="checkbox" name="'.$this->cnumber.'_'.$name.'[]" value="'.$value.'" checked="checked"> '.$key.'</div>';
				} else {
					$returnValue .= '<div><input type="checkbox" name="'.$this->cnumber.'_'.$name.'[]" value="'.$value.'"> '.$key.'</div>';
				}
			}
		}
		
		$this->field[] = array($label, $returnValue);
	}
	
	/**
	 * Fügt die Attribute zu einem String zusammen und gibt diesen zurück
	 * @param Array  Assoziatives Array mit dem Attributbezeichner als Schlüssel
	 * und dem Attributwert als Wert
	 * @return String Attributte als String
	 */
	function addAttributes($attributes) {
		
		$returnValue = '';
		
		if (!empty($attributes)) {
			foreach ($attributes as $key => $value) {
				$returnValue .= $key.'="'.$value.'" ';
			}
		}
		
		return $returnValue;		
	}
	
	/**
	 * Ermittelt die Konfigurationsstufe (2 = Artikel, 1 = Kategorie, 0 =
	 * Template) und speichert diese als Klassenattribut
	 */
	function getConfigurationLevel() {
		
		$this->configLevel = 2;
		
		if ($this->idart != 0) return;
		
		$this->configLevel--;
		
		if ($this->idcat != 0) return;
		
		$this->configLevel--;
	}
	
	/**
	 * Holt die Daten aus der Datenbank und deserialisiert diese in das
	 * Klassenattribut confValues
	 */
	function restoreValues() {
		
		$cnumber = $this->cnumber;
		if ($cnumber == 0) {
			$cnumber = $this->cCurrentContainer;
		}
		
		$this->db->query("SELECT * FROM con_wdreiConf WHERE idlang = {$this->lang} AND cnumber = {$cnumber} AND idtpl = {$this->idtpl} AND idcat = {$this->idcat} AND idart = {$this->idart}");
		if (!$this->db->next_record()) {
			$this->db->query("SELECT * FROM con_wdreiConf WHERE idlang = {$this->lang} AND cnumber = {$cnumber} AND idtpl = {$this->idtpl} AND idcat = {$this->idcat}");
			if (!$this->db->next_record()) {
				$this->db->query("SELECT * FROM con_wdreiConf WHERE idlang = {$this->lang} AND cnumber = {$cnumber} AND idtpl = {$this->idtpl}");
				if (!$this->db->next_record()) {
					$this->confValues = array();
					return;
				}
			}
		}
		
		$this->confValues = wddx_deserialize($this->db->f('content'));
	}
	
	/**
	 * Gibt den Wert mit der Bezeichnung $name aus dem Klassenattribut
	 * confValues zurück.
	 */
	function getValue($name) {
		
		$cnumber = $this->cnumber;
		if ($cnumber == 0) {
			$cnumber = $this->cCurrentContainer;
		}
		
		return $this->confValues[$cnumber.'_'.$name];
	}
	
	/**
	 * Setzt den Wert mit der Bezeichnung $name im Klassenattribut confValues.
	 * @param String  Variablenbezeichner
	 * @param Mixed  Objekt, das gesetzt werden soll
	 */
	function setValue($name, $value) {

		$cnumber = $this->cnumber;
		if ($cnumber == 0) {
			$cnumber = $this->cCurrentContainer;
		}
		
		$this->confValues[$cnumber.'_'.$name] = $value;
	}
	
	/**
	 * Speichert die übertragenen Daten aus dem Formularversand, falls ein
	 * solcher vorgenommen worden ist.
	 */
	function saveData() {
		
		if (empty($_POST)) {
			return true;
		}
		
		if ($this->cnumber == 0) {
			return true;
		}
		
		$saveValue = array();
		
		foreach ($_POST as $key => $value) {
			if ($this->beginsWith($key, $this->cnumber.'_')) {
				$saveValue[$key] = $value;
			}
		}
		
		$this->saveSerial($saveValue);
	}
	
	/**
	 * Speichert die serialisierten Daten nach Aktualisierung durch das Modul.
	 */
	function actualizeData() {
		
		$cnumber = $this->cnumber;
		if ($cnumber == 0) {
			$cnumber = $this->cCurrentContainer;
		}

		if ($cnumber == 0) {
			return;
		}
		
		$this->saveSerial($this->confValues);
	}
	
	/**
	 * Prüft, ob str mit sub beginnt.
	 * @param string str Quellstring.
	 * @param string sub Überprüfstring.
	 * @return boolean True bei Übereinstimmung. Sonst false.
	 */
	function beginsWith($str, $sub) {
		return (substr($str, 0, strlen($sub)) == $sub);
	}
}

$index = (!empty($cCurrentContainer)) ? ($cCurrentContainer) : ($cnumber);

?>
ich bin froh um beta-tester und um feedbacks. und sollte sich das ganze bewähren, würde ich es begrüssen, wenn es eingang in eine der nächsten versionen finden würde. by the way: es stört die normale, bisherige konfiguration in keiner weise. es können ohne weiteres beide systeme nebeneinander verwendet werden.

mfg,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
emergence
Beiträge: 10652
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

nur ne kleine anmerkung

da es ja ne klasse ist, würde ich als location contenido/classes/ wählen
und weiters

anstelle von

Code: Alles auswählen

include_once('wdreiConf.class.inc.php');
folgendes

Code: Alles auswählen

cInclude('classes', 'wdreiConf.class.inc.php');
verwenden...

wenn du es in includes belassen möchtest

Code: Alles auswählen

cInclude('includes', 'wdreiConf.class.inc.php');
verwenden...

bei include und require kommt es sonst meist zu irgendwelchen nicht nachvollziehbaren pfad problemen...
*** make your own tools (wishlist :: thx)
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

ok, kein problem. diese anpassungen sind ja sowieso im modul selber anzubringen. das ändert soweit an der klasse nichts.

ich wäre froh, wenn du es mal ausprobieren könntest. falls es gut funktioniert, würde ich nämlich 4fb vorschlagen, es in die nächste version zu integrieren.

übrigens: mit getValue() wird die konfiguration des aktuellen artikels ausgelesen. wenn der artikel nicht konfiguriert ist, wird die kategorie-konfiguration verwendet. und wenn dort auch nichts vorliegt, diejenige der template-vorkonfiguration. und was auch neu ist: wenn ein artikel nicht konfiguriert ist, wird immer die aktuelle template-, respektive die kategorie-konfiguration genommen. wenn also die template-konfiguration angepasst wird, wirkt sich das auf alle nicht konfigurierten artikel aus. das war in der vergangenheit ja gelegentlich auch ein wunsch.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

noch ein kleiner nachtrag:

als schmankerl sozusagen, lassen sich auch vom modul-output werte in die konfiguration speichern. dazu muss die methode setValue() verwendet werden. um zum beispiel den wert $counter im objekt zu setzen und zu speichern, sieht der code wie folgt aus:

Code: Alles auswählen

$wdreiConf[$cCurrentContainer]->setValue('counter', $counter);
$wdreiConf[$cCurrentContainer]->actualizeData();
dafür gibt es im wesentlichen zwei anwendungen:

(1) konfiguration aus dem editierbereich

(2) speicherung von werten aus der modulausgabe. z.b. ein counter, oder ein downloadzähler oder was auch immer...
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
emergence
Beiträge: 10652
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

wenn ich zeit habe teste ich es gerne...
bin aber bis jetzt aber nicht mal dazugekommen die 4.5.4 zu testen...
*** make your own tools (wishlist :: thx)
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Um auch noch Senf dazu zu geben:

Was noch schön wäre: Berücksichtigung des DB-Prefix. Z.Z. kann man dieses Modul pro Datenbank nur einmal einsetzen...

Richtig geil wäre dann noch der Rückgriff auf die Contenido-HTML-Klassen, damit man - wenn es denn gewünscht ist - auch gleich Formatierungen mitgeben kann. Aber ich habe es mir jetzt nicht näher angesehen, ob das überhaupt geht...war nur so eine Idee.

Schön wäre auch noch die Möglichkeit, einen Default-Selected angeben zu können (d.h. wenn es noch nicht konfiguriert ist, nimm' das zweite Element). Beispiel: Zeige -Alle-, 25, 50 75 Elemente. Aus Performancegründen ist der Default 25, aus Usability-Gründen ist aber -Alle- das erste Element.

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 »

HerrB hat geschrieben:Um auch noch Senf dazu zu geben:

Was noch schön wäre: Berücksichtigung des DB-Prefix. Z.Z. kann man dieses Modul pro Datenbank nur einmal einsetzen...

Richtig geil wäre dann noch der Rückgriff auf die Contenido-HTML-Klassen, damit man - wenn es denn gewünscht ist - auch gleich Formatierungen mitgeben kann. Aber ich habe es mir jetzt nicht näher angesehen, ob das überhaupt geht...war nur so eine Idee.

Schön wäre auch noch die Möglichkeit, einen Default-Selected angeben zu können (d.h. wenn es noch nicht konfiguriert ist, nimm' das zweite Element). Beispiel: Zeige -Alle-, 25, 50 75 Elemente. Aus Performancegründen ist der Default 25, aus Usability-Gründen ist aber -Alle- das erste Element.

Gruß
HerrB
db-präfix: das kommt. ich baue das gleich ein.

default selected: baue ich ebenfalls ein

Richtig geil wäre dann noch der Rückgriff auf die Contenido-HTML-Klassen, damit man - wenn es denn gewünscht ist - auch gleich Formatierungen mitgeben kann. Aber ich habe es mir jetzt nicht näher angesehen, ob das überhaupt geht...war nur so eine Idee. -> kannst du mir das etwas näher ausführen. ich blick nicht durch, was du genau damit meinst.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

ok, das ist jetzt auch drin. ich werde diesen thread nicht mehr weiterpflegen, da es eher in die contenido-entwicklung gehört. also läuft alles weitere in diesem thread ab: http://www.contenido.org/forum/viewtopic.php?t=9645
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
Gesperrt