Page 1 of 1

Formbuilder/Formbrowser - Mehrfachauswahl Feld

Posted: Tue Sep 23, 2008 5:10 pm
by sTr
Hallo,

ich habe eine Frage zum Feldtyp Mehrfachauswahl:

Wenn ich diesen Feldtyp mit dem Formbrowser ausgeben lasse werden ausgewählte Optionen lediglich durch ein Komma (ohne Leerzeichen dahinter) getrennt dargestellt. Gibt es irgendwo die Möglichkeit das zu ändern? Am liebsten wäre mir ein Zeilenumbruch.

Ich habe einzelne Dateien der beiden Module mal durchsucht. Die wichtige Datei müsste die Multiselectfield.class.php vom Formbuilder Modul sein, allerdings weiß ich nicht, welche Stelle man entsprechend ändern müsste, so dass man die Änderung hinbekommt. Vielleicht kennt sich einer besser damit aus.

Gruß
sTr

Re: Formbuilder/Formbrowser - Mehrfachauswahl Feld

Posted: Tue Sep 23, 2008 5:46 pm
by NaN
Habe noch nicht mit dem Modul gearbeitet, aber kann man das nicht auch mit einem Template regeln?

Re: Formbuilder/Formbrowser - Mehrfachauswahl Feld

Posted: Tue Sep 23, 2008 10:38 pm
by sTr
du meinst in dem die Ausgabe geregelt wird? Gibt es, leider kann man dort lediglich die Reihenfolge regeln, wann welcher Eintrag aus der DB ausgelesen wird.

Das Standard Template sieht so aus:

Code: Select all

<h2>{$browser_title}</h2>
{if $message!=''}<h2>{$message}</h2>{/if}
{$inner_nav}
<table cellspacing="0" class="pagetable">
	<tbody>
		{section name=foo start=0 loop=$count}
		  <tr><td>{$resp->names[$smarty.section.foo.index]|escape}</td>
		<td>{$resp->values[$smarty.section.foo.index]|escape}</td>
		</tr>
		{/section}
	</tbody>
</table>
$count ist dabei die Variable, welche die Einträge in die DB gezählt hat und anschließend dafür sorgt, das alle Einträge wieder ausgegeben werden. Allerdings, und hier liegt das Problem: Alles was bei einem Mehrfachauswahlfeld auswählt, gilt als ein Eintrag und wird dann mit {$resp->values[$smarty.section.foo.index]|escape} auf einmal ausgegeben. Also muss man an einer anderen Stelle regeln, wie die Einträge in die Datenbank kommen, bzw. wie sie ausgelesen werden.

Da ich nun aber nicht fit in smarty und bedingt fit in php bin, fällt es schwer, den richtigen Eintrag zu finden.

Wie regelst du es den, NaN, wenn du mit Formularen im Admin Panel etwas in die DB eintragen willst, was dann in einem individuellen Template wieder im Frontend ausgelesen und dargstellt werden sollen. Schreibst du dir dafür eigene Module?

Re: Formbuilder/Formbrowser - Mehrfachauswahl Feld

Posted: Wed Sep 24, 2008 3:26 am
by NaN
sTr wrote: Schreibst du dir dafür eigene Module?
Yepp.
Oder ich passe bestehende Module an.
sTr wrote: Wie regelst du es den, NaN, wenn du mit Formularen im Admin Panel etwas in die DB eintragen willst, was dann in einem individuellen Template wieder im Frontend ausgelesen und dargstellt werden sollen.
Du willst im Backend etwas vorgeben, dass dann im Frontend angezeigt wird?
Ich bin mir nicht sicher, ob ich das richtig verstehe, aber ist der Fombuilder/Formbrowser da die richtige Wahl?
Macht der das nicht eher umgekehrt?
Der ist doch eher dafür gedacht, dass man im Frontend etwas in ein Formular eingibt was dann in der DB gespeichert und im Backend ausgelesen werden kann, oder?
Wie gesagt, hab mit diesen Modulen noch nicht gearbeitet.


Die Ausgabe im Frontend wird meistens in der Datei action.default.php vorbereitet.
Dort werden alle smarty-Variablen definiert, die dann im Template verfügbar sind.

Du könntest mall mit dem Tag {get_template_vars} in Deinem Template alle verfügbaren Variablen und deren Werte ausgeben lassen, bevor wir anfangen im Quellcode rumzufummeln. Vielleicht ist da ja doch was Brauchbares dabei.

Re: Formbuilder/Formbrowser - Mehrfachauswahl Feld

Posted: Wed Sep 24, 2008 9:57 am
by sTr
Yepp.
Ok, das ist natürlich leichter, wenn man es kann  ;D

Ich bin mir nicht sicher, ob ich das richtig verstehe, aber ist der Fombuilder/Formbrowser da die richtige Wahl?
Macht der das nicht eher umgekehrt?
Der ist doch eher dafür gedacht, dass man im Frontend etwas in ein Formular eingibt was dann in der DB gespeichert und im Backend ausgelesen werden kann, oder?
Naja, zunächst erstellt man ein Formular. Zum Darstellen des Formulars erhält man ein Tag {cms_module module='FormBuilder' form='formular'}. Dementsprechend kann man das Formular darstellen wo man gerade lustig ist. Ich habe es bisher im Frontend, aber das reicht erstmal aus. Wenn ich alle Einträge gemacht habe, wird der Tag wieder gelöscht.

Für den Formbrowser das gleiche. Man erhält einen Tag und kann so die Ergebnisse darstellen wo man will.

Eine Lösung um die Daten im Admin Panel einzugeben habe ich gesucht, aber nicht gefunden. Und ein Modul selber schreiben habe ich nicht hinbekommen. Dafür fehlen mir einfach die Programmierkenntnisse, vor allen in Smarty. In PHP und MYSQL habe ich es nicht sehr schön, aber funktionierend noch so gerade hinbekommen.
Du könntest mall mit dem Tag {get_template_vars} in Deinem Template alle verfügbaren Variablen und deren Werte ausgeben lassen, bevor wir anfangen im Quellcode rumzufummeln. Vielleicht ist da ja doch was Brauchbares dabei.
menuparams = Array
count = 10
nodelist = Array
node = Object
adminapproval = 0
userapproval = 0
title_submit_date = Date Submitted
title_approval_date = Admin Approved
title_user_approved = User Approved
resp = Object
browser_title = Test
inner_nav = < Back
Beim Formbrowser (Ausgabe) also nichts brauchbares. Lediglich die oben schon angesprochene $count taucht auf. Und natürlich viele allgemeine Sachen (hab ich mal weggelassen). Der Rest sind Variablen für Einstellungen.
fb_form_done = 0
title_page_x_of_y = Page 1 of 1
css_class = formbuilderform
total_pages = 1
this_page = 1
form_name = Test
form_id = 5
save = Object
Name: = Object
Ort: = Object
Ausstattung = Object
Beschreibung: = Object
fb_hidden =
fields = Array
prev =
has_captcha = 0
submit = hier steht noch der Submitbutton
entry = Object
Bei der Eingabe (Formbuilder) auch nichts. save, Name, Ort, Ausstattung, Beschreibung sind (hier nur 5 von 10 dargestellt) die Felder in der Eingabe. Ausstattung ist dabei das Mehrfachauswahl Feld.

Re: Formbuilder/Formbrowser - Mehrfachauswahl Feld

Posted: Wed Sep 24, 2008 12:51 pm
by NaN
resp ist ein Object.
Mal sehen was da so drin steckt.
Gibt mal im Template {$resp|print_r} ein und schau Dir dann das Ergebnis an.

Re: Formbuilder/Formbrowser - Mehrfachauswahl Feld

Posted: Wed Sep 24, 2008 1:49 pm
by sTr
Sehr schlau :D

Da drinne befindet sich alle was eingegeben wurde:
stdClass Object ( [id] => 8 [user_approved] => [admin_approved] => [submitted] => 20 September 08 [fields] => Array ( ) [names] => Array ( [1] => Name: [2] => Qualität: [3] => Straße: [4] => Nr.: [5] => PLZ: [6] => Ort: [7] => Größe (m²): [8] => Ausstattung: [9] => Beschreibung: ) [values] => Array ( [1] => Name W1 [2] => 4 [3] => Adresse W1 [4] => 1 [5] => 12345 [6] => MeinOrt [7] => 123 [8] => Dusche/WC,Bad/WC,Telefon,TV im Zimmer,Radio,Parkplatz,Lift,Garten/Liegewiese,Balkon,Küche,Waschmaschine,Spülmaschine [9] => Toll ) ) 1
[8] ist dann ja wohl das Relevante.

Wie gibt man das nun schön aus? :)

Und wenn wir gerade schon soweit sind, kann man die einzelnen Felder [1], [2] etc. auch direkt ansprechen und ausgeben? Dieser loop aus dem Standard-Template (siehe oben) ist dann doch sehr doof und macht es sehr kompliziert einzelne Felder auszugeben (Wenn man ein eigenes Design für die Ausgabe benutzt).

Re: Formbuilder/Formbrowser - Mehrfachauswahl Feld

Posted: Wed Sep 24, 2008 3:43 pm
by NaN
Hab jetzt leider grad keine Zeit das auszuprobieren.
In der Regel dürftest Du mit $resp->fields.[NUMMER] die Namen der Felder und mit $resp->values.[NUMMER] die Werte (Inhalte) dieser Felder direkt ansprechen können.

Allerdings sehe ich gerade, dass das Feld 8 (Ausstattung) tatsächlich kein Array mit den einzelnen ausgewählten Werten, sondern alle ausgewählte Werte als ein String mit Kommas voneinander getrennt enthält.
Ich finde das ganze Objekt ein wenig umständlich aufgebaut.

Ich weiß jetzt nicht, ob diese Indexnummern der Reihenfolge entsprechen wie die Felder im Formular erstellt wurden.
Um z.B. nur das Feld "Name" ausgeben zu lassen, müsste man eben genau dessen Index kennen.
Die Sache mit der loop-Schleife ist die einfachste Methode um das gesamte Formular auszugeben.
Allerdings gibt man selten nur Teile eines Formulars aus.
Wenn ich eben nicht will, dass dieses oder jenes Feld in dem Formular zu sehen ist, dann erstelle ich eben ein neues Formular, das meinen Wünschen entspricht.

Daher glaube ich, dass Formbuilder/Formbrowser nicht unbedingt die beste Methode ist, um Dein Vorhaben umzusetzen.
sTr wrote: [...]mit Formularen im Admin Panel etwas in die DB eintragen willst, was dann in einem individuellen Template wieder im Frontend ausgelesen und dargstellt werden soll [...]
Vielleicht könntest Du mal kurz erläutern was genau Du umsetzen möchtest.
Der Formbuilder ist in der Regel dazu da, um im Frontend dem Seitenbesucher ein individuelles Formular zu präsentieren, dessen Inhalte dann irgendwo in der DB gespeichert werden bzw. das beim Absenden irgendeine Aktion des CMS ausführt (z.B. Kontaktformular -> Email)
Der Formbrowser ist dafür da, um an diese Inhalte wieder heranzukommen.

Wenn Du lediglich im Backend etwas einstellen willst, was dann im Frontend präsentiert wird, ohne dass es der Besucher Deiner Seite selber eingeben kann, dann würde ich mir vielleicht etwas anderes überlegen.

Re: Formbuilder/Formbrowser - Mehrfachauswahl Feld

Posted: Wed Sep 24, 2008 4:44 pm
by sTr
Also: Umsetzen will ich folgendes:

Geplant war:
Im Backend trägt der Admin gewisse Daten (hier Daten zu Wohnungen) in ein Formular ein, diese sollen dann im Frontend dargestellt werden. Die Darstellung geschieht innerhalb eines eigenen Template.

Zu den Daten gehören bisher neben Textfeldern (für Name, Straße etc...) auch Auswahlfelder (Ausstattung). Später sollen noch unter die Daten Bilder eingepflegt werden, und ein weiterer Link zu einem Kontaktformular (Anfrage zur Wohnung). Insgesamt sollen so 15-20 Daten eingetragen werden, wofür ich verschiede Feldtypen benötige.

Zunächst hatte ich versucht das ganze selbst zu schreiben, aber mir fehlen einfach die Programmierkenntnisse, vor allem halt in Smarty; in php/mysql hab ich es geschafft das zu schreiben, aber ich habe keine Ahnung wie ich das in cmsms einbaue. Deswegen kommen mir formbuilder und formbrowser ganz recht. Ob ich die Daten nun im Backend oder im Frontend eingebe ist mir egal. Sobald alles eingetragen ist, kann ich die Seite auch deaktivieren.

Nochmal zur Ausgabe:
Also ich hab mal rumprobiert: mit $resp->values.[NUMMER] komme ich genau an die Daten die ich brauche. Die Indexzahlen kann ich im Formbrowser zuweisen. So kann ich das dann wunderbar alles in das Template einfügen. (Das der Formbrowser ein bisschen missbraucht wird, ist eigentlich egal, funktioniert ja bestens ;) )
Problem bleibt, nach wie vor, das Mehrfachauswahlfeld:
Entweder bei der Eingabe aus dem String ein Array machen, oder bei der Ausgabe (oder vielleicht auch bei der Eingabe) aus dem Komma ein Zeilenumbruch machen. Dabei sollte es leichter und schneller gehen, die zweite Variante umzusetzen (wobei die erste wahrscheinlich die effektivere wäre). Und damit wären wir wieder am Anfang.

Genau an der Stelle komme ich nicht weiter.

Achso: Danke übrigens für den schnellen Support.

Re: Formbuilder/Formbrowser - Mehrfachauswahl Feld

Posted: Wed Sep 24, 2008 6:07 pm
by NaN
Nichts zu Danken.

Zum Module schreiben gibt es eine Art Dummy-Modul : Skeleton Module.
Dort wird im Quellcode einiges erklärt.
Oder das Modul ModuleMaker.
(hab ich noch nicht ausprobiert)

Wenn Du Dich mit php usw. etwas auskennst, könnte Dir das vielleicht weiterhelfen, ein eigenes Modul zu schreiben.

Zum Formbrowser kann ich nur sagen, schau mal in die action.default.php.
Dort muss irgendwo das Feld mit der Mehrfachauswahl ausgelesen werden.
Da könntest Du den Inhalt dieses Feldes mit $feldinhalt_array = explode(',',$feldinhalt); in ein Array "konvertieren" und anstelle des regulären Feldinhalts dann das Array verwenden.

Re: Formbuilder/Formbrowser - Mehrfachauswahl Feld

Posted: Wed Sep 24, 2008 6:21 pm
by NaN
Gerade fällt mir da wieder mein Lieblingsmodul ein.
Hast Du schonmal versucht mit dem News-Modul zu spielen?
Du kannst dort auch ein paar eigene Felder definieren. Leider keine Mehrfachauswahl.
Du könntest aber an dieser Stelle ein Feld vom Typ Textarea verwenden und dort die Ausstattung von Hand reinschreiben.

Hier wird kurz erläutert wie man das Modul in ein Modul seiner Wahl umbenennen und für völlig andere Zwecke verwenden kann:

http://forum.cmsmadesimple.org/index.ph ... 849.0.html

So ließen sich Wohnung verschiedenen Kategorien zuordnen. (Größe oder Anzahl der Zimmer usw.)
Du könntest zu jeder Wohnung einen kurzen Teaser schreiben, der nur die nötigsten Daten (evtl. aus diesen Extra-Feldern) enthält und ein komplettes Exposé.

Und im Backend kannst Du jede Wohnung sehr einfach verwalten.

Re: Formbuilder/Formbrowser - Mehrfachauswahl Feld

Posted: Fri Sep 26, 2008 11:40 pm
by sTr
Danke für den Tipp mit dem News Modul. Damit hat es fantastisch funktioniert.

Re: Formbuilder/Formbrowser - Mehrfachauswahl Feld

Posted: Mon Sep 29, 2008 5:51 pm
by NaN
Ich glaube, wir sollten tatsächlich mal anfangen zu sammeln und zeigen was man mit dem News-Modul so alles machen kann...