Scriptaculous, lightbox gone wild & subModal

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Scriptaculous, lightbox gone wild & subModal

    Hallo,

    folgendes Problem hatte ich, habe es teilweise gelöst und möchte mal hören, ob ich da einen großen Umweg gehe:

    Ich wollte in einem Formular so eine lightbox haben, wo man zusätzliche Daten eingeben (Autoren) kann, die ohne lightbox das Formular unübersichtlich machen würden. Man klickt also auf "Autor hinzufügen", die lightbox geht auf, man gibt "vorname" und "nachname" ein und klickt auf "speichern". Dann soll das "vorname" und "nachname" in der Datenbank schon mal gespeichert werden, damit man das auch ändern kann, bevor man das übergeordnete Formular absendet. Es soll also nach "speichern" im Hauptformular dieser Autor auch angezeigt werden. Dann noch ein Link zum bearbeiten, wo dann eben die lightbox schon gefüllt aufgehen soll (das habe ich noch nicht gemacht).

    Wie ich zur Zeit vorgehe: Ich verwende die subModal lightbox, weil die mit "callback_function" arbeitet (kann das die gone-wild auch?).
    In meinem Ausgangsformular habe ich den Link:
    HTML-Code:
    <div id="autoren">
    <a href="#" onclick="showPopWin('addAuthor.html', 500, 500, callBackAuthor);">Autor hinzufügen</a>
    </div>
    In der modalContent.html habe ich dann die 2 Namensfelder (sollen später noch mehr Felder sein) und den Button. Diese Funktion übergibt der callBackAuthor automatisch eine Variable namens 'returnVal' und schließt die lightbox
    HTML-Code:
    <input name="vorname" type="text" id="vorname" style="width:256px;" value="Vorname" />
    <input name="nachname" type="text" id="nachname" style="width:256px;" value="Nachname" />
    <script type="text/javascript">
    	var returnVal = '';
    	function setReturnVal() {
    		// vorname + nachname
    		returnVal = 'vorname=' + $('vorname').value + '&nachname=' + $('nachname').value;
    	}
    </script>
    <button onclick="setReturnVal();window.top.hidePopWin(true)">Autor hinzufügen</button>
    Den return Wert (z.b. vorname=asdf&nachname=qwer) wird dann via ajax request (von scriptaculous) an eine php Funktion gesendet und in der DB gespeichert. Die PHP Funktion liefert dann per echo an die 'onComplete' Funktion wieder diesen String und die ID des Eintrages. Mit dem String kann ich dann an der Stelle, wo der Name zu lesen sein soll dann die Werte anzeigen.
    HTML-Code:
    function showAuthor(responseText) {
    	values = getParamsArray(responseText);
    	autor = document.createElement('div');
    	autor.innerHTML = 'Vorname: ' + values['vorname'] + '. Nachname: ' + values['nachname'];
    	$('autoren').appendChild(autor);
    }
    Das klappt soweit.

    Ich habe lange gesucht, bin aber nicht wirklich fündig geworden und noch nicht ganz zufrieden mit der Arbeit, bzw. denke, dass ich da zwei Kurven zuviel nehme:
    1. Brauche ich diese subModal lightbox, oder kann das auch die gone-wild. Weil ich scriptaculous für die autocomplete Funktion benötige würde ich die gone-wild favorisieren, die die ja mit scriptaculous arbeitet und das submodal nicht (ok submodal nutzt auch prototype, sind also in beiden fällen ein script mehr).

    2. Kann ich die submodal bzw. die gone-wild lightbox so aufrufen, dass dort Daten angezeigt werden, die ich aus der DB lese? Bzw. geht das ganze sogar einfacher ohne die temporären DB Einträge, also ohne ajax aufruf?

    Ich würde das mit dem Bearbeiten eines Autors jetzt so angehen, dass eine "editAuthor.html" Datei gerufen wird, die dann "irgendwie" die ID bekommt und wo beim Laden eine Ajax Funktion gerufen wird, die dann aus der DB Daten ins HTML einpflegt.
    Jetzt wüßte ich erst mal gar nicht, wie ich die ID übergeben kann. Müsste ja mit document.URL funktionieren.

    Also falls jemand hier eine gute Idee für mich hat, was daran zu kompliziert gedacht ist, freue ich mich über Anregungen für Verbesserungen.

    Danke und Gruß

  • #2
    Mein senf dazu

    Der Umweg über die Callback funktion ist meines erachtens überflüssig, einfach direkt die AJAX-speicher-funktion aufrufen.
    dann bei der Rückgabe von der Datenbank und der Erzeugung der Divs die Id aus der Datenbank mitliefern und in dem Div speichern
    beim bearbeiten eine phpfunktion aufrufen edit.php?id=123 die die Werte gleich ins formular einträgt und beim Speichern das gleiche siehe oben macht
    dann fällt auch das erstellen einer edit.php?task=delete&id=123 nicht schwer
    Der "Hersteller" der Modalbox ist dann glaube ich egal
    Schönes WE,
    Phapi.
    Zuletzt geändert von phap; 19.02.2010, 15:31.

    Kommentar

    Lädt...
    X