Aktualisieren übergeordneten Seite nach dem schließen Iframe Modal box
Den Grundlagen:
Ich habe eine Webseite, wo ein Benutzer können einen Artikel hinzufügen'; wenn Sie klicken Sie auf "einen Artikel hinzufügen" es öffnet sich ein iframe (ein pop-up-modal-box).
In der Iframe-es ist eine form mit 'speichern' und 'Abbrechen' - buttons - was ich versuche zu tun ist, machen es so, wenn der Benutzer trifft "speichern", es wird in der Nähe der modal-box, und aktualisieren Sie dann die Seite.
Habe ich es so eingestellt das iframe wird geschlossen und die Daten werden in der Datenbank gespeichert, aber ich kann nicht die Seite zu aktualisieren (das wäre dann die Anzeige der neuen Artikel)
Ich habe nicht in der Lage, dies zu tun, wie der noch, trotz googeln Tage. Ich bin kein javascript-Profi, aber ich habe genug gelernt in den letzten paar Tage zu tun, eine Sache oder zwei.
Hier ist der code für den button:
<a class="toolbar" href="#" onclick="javascript: submitbutton('save'); return false;">
Hier ist das Ende der javascript-Funktion für das speichern der Daten:
function submitbutton(pressbutton) {
...
<?php endif; ?>
submitform( pressbutton );
parent.$('sbox-window').close();
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
http://community.getk2.org/forum/topics/solved-adding-articles-on-the?xg_source=activity
Link ist das Update, das ich suchte - diese Frage wurde ursprünglich gezielt auf die K2 Komponente für Joomla.
Mich und eine weitere person konnten das Problem beheben, indem Sie einige code schreiben unsere eigenen. In diesem thread, ebenso wie die Links in den Antworten, die Lösung ist ankamen.
EDIT: EIN Antrag wurde gemacht, nach der Lösung hier, also hier ist eine kurze Zusammenfassung
Wenn Sie Benutzern das erstellen von Artikeln aus dem front-end und Sie wollen, dass die 'speichern' - button zum schließen des Modells " box " - Fenster, das erscheint, wenn Sie hinzufügen oder Bearbeiten eines Artikels Folgen Sie einfach den Schritten unten, um dies zu erreichen:
*Hinweis: es gibt ein paar andere fixes, die arbeiten, um das Dialogfeld zu schließen, aber nicht die Seite aktualisieren - dies gilt sowohl.
Den Schlüssel übergeben und ein extra-parameter über die URL, die dann erstellt wird, wenn der Benutzer klickt auf "Speichern", dann haben wir einfach überprüfen, um zu sehen, wenn der parameter (die ich Anruf 'step') besteht, - wenn es klappt, werden wir die Seite aktualisieren.
Können Folgen, müssen wir zunächst dieser parameter hinzufügen, um die URL erstellt -
Öffnen Sie die item.php die Datei befindet sich unter:
Yoursite->administrator->Komponenten->com_k2->Modelle>item.php
Auf oder um die Zeile 646 - Sie werden sehen, einige text etwa:
Also, was wir tun müssen, ist fügen Sie unsere parameter an die URL, so wird es so Aussehen (denken Sie daran, rief ich den parameter 'step', und Ihre Einstellung wird es =1) - der code wird nun wie folgt Aussehen:
Nun klickt der Benutzer auf 'speichern' der parameter 'step' wird immer weitergereicht, und wenn die form neu geladen, um zu zeigen, die Benutzer Ihre Informationen, die Sie eingegeben hatte, Schritt=1!
So, dann fügen wir php, um zu überprüfen, dass - das ist einfach genug:
Öffnen Sie die form.php die Datei befindet sich unter:
Yoursite->Komponenten->com_k2->Aussicht->Artikel->tmpl->form.php
Dort können Sie sehen, wo die form beginnt eigentlich (oder um die Zeile 249), was wir wollen, zu tun ist, fügen Sie einfach ein wenig von php, der prüft, um zu sehen, wenn unsere "Schritt" - parameter gleich 1 ist. Wenn es ist - wir werden aktualisieren Sie die übergeordnete Seite mit javascript, die automatisch schließen Sie das Modell und führen die 'Position gespeichert' text für den Benutzer angezeigt, damit Sie wissen, was passiert ist.
Den vorhandenen code sieht wie folgt aus :
Wenn Sie fertig sind wird es so Aussehen:
Der prüft, um zu sehen, ob 'Schritt' ist =1. Wenn es ist - es läuft javascript aktualisieren das übergeordnete Fenster - schließen Sie die box und aktualisiert die Seite automatisch. Es prüft auch, den Artikel auf das backend.
Dieser sorgt für die einfachste Sache für den Benutzer (D. H. Sie nicht klicken Sie auf 'zurück' und 'aktualisieren', das ist extrem Kontra-intuitiv") und gibt den front-end-Benutzer eine back-end-Erfahrung.
Ich hoffe, dies hilft den Menschen - es dauerte mir VIEL zu jagen Dinge in die falsche Richtung, bevor ich dachte an diese Lösung.
Ich bin ziemlich traurig das die Entwickler nie geholfen, mit etwas, das so viele Leute betroffen, aber naja - problem wurde gelöst!
Versuchen Fenster.Lage.reload
Werden Sie auch wollen, um loszuwerden, das "return false;" von deiner onclick-handler. Das kann verhindern, dass die Seite aktualisiert wird. Auch im Allgemeinen, stellen Sie keine "return" - Anweisungen innerhalb der event-handler-Funktion.
Ich glaube, Sie suchen nach
Übrigens, die Sie nicht wirklich brauchen, um in der Nähe der iframe - sobald Sie und laden Sie die übergeordnete Seite, es wird ja eh Weg.
Check-out jQuery fancyBox.
Es wurde ein "Seite neu laden nach dem schließen", Funktion.