Zur Navigation

Button aktiveren wenn Formular nicht mehr sichtbar ist

1 ShadowLupina

Hallo

Ich habe auf meiner Seite ein Bezahlfomular welches über eine Iframe eingebunden ist

<div id="component"><h3>Vielen Dank für Ihre Bestellung!</h3><iframe id="payment_frame" width="500px" height="650px" frameborder="0"
				border="0" src="https://test-heidelpay.hpcgw.net/sgw/hcoForm.jsp;jsessionid=B586605F1C26EAD2D634E10A0630DAE6.worker11?FRONTENDLANGUAGESELECTED=de
" style="width: 450px; height: 650px; border: 0px solid #000;"></iframe></center>blabla
<div class="formelm">
      <label for="button"></label>
	<button type="button" class="button" onclick="window.location='http://www.******.com/index.php/joomupload'">Zum Uploadsbereich</button>

desweiteren habe ich noch den Button "Zum Umploadbereich"

Nun möchte ich, dass dieser Button erst geklickert werden kann, wenn das Fomular nicht mehr angezeigt wird...also nach dem es ausgeführt wurde

Firebug zeigt mir für die Form:

<form id="frontendForm" method="post" action="/sgw/HCOForm.action;jsessionid=B586605F1C26EAD2D634E10A0630DAE6.worker11" name="frontendForm" enctype="application/x-www-form-urlencoded;charset=UTF-8" style="display: inline;">

an
also über ich ja nur Abfragen ob displane auf none steht oder?

Nur bin ich mir nicht ganz schlüssig wie ich das am besten mache

if (frontendForm.display == none) ...so einfach wird es denk ich mal nicht sein, oder?

13.02.2014 14:34

2 Jörg Kruse

Die einbindende Seite "weiß" nichts davon, was im Iframe passiert. Die Aktion müsste im Iframe definiert werden, z.B. über ein onclick Attribut im Bezahlformular oder über einen Event-Listener auf den Absende-Button des Bezahlformulars. Und eine Aktion über verschiedene Seiten hinweg würde auch nur funktionieren, wenn Iframe und einbindende Seite auf derselben Domain liegen.

13.02.2014 15:55

3 ShadowLupina

Hm...dass heißt das es so direkt nicht möglich...aber zumindest müsste das iframe ja irgendwo in nen datei eingebunden sein. oder der link zu ihm..ich werd die mal suchen

13.02.2014 17:29

4 ShadowLupina

Das ist die Datei die ich bisher bearbeitet habe

<?php
defined('_JEXEC') or die('');

/**
*
* Template for the shopping cart
*
* @package	VirtueMart
* @subpackage Cart
* @author Max Milbers
*
* @link http://www.virtuemart.net
* @copyright Copyright (c) 2004 - 2010 VirtueMart Team. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
* VirtueMart is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
*/



echo "<h3>".JText::_('COM_VIRTUEMART_CART_ORDERDONE_THANK_YOU')."</h3>";

echo $this->html;

echo blabla;
?>

<div class="formelm">
      <label for="button"></label>
	<button type="button" class="button" onclick="window.location='http://www.******.com/index.php/joomupload'">Zum Uploadsbereich</button>
   
    </div>

Das iframe selber wird da nicht eingebunden...allerdings versteh ich die zeile mit

echo $this -> html nicht..was genau tut die...hab dazu keine sinnvolle erklärung gefunden

13.02.2014 17:31

5 Jörg Kruse

Die Pseudovariable $this wird innerhalb von Klassendefinitionen verwendet. Siehe hierzu auch die Grundlagen zu Klassen und Objekten im PHP-Manual:

http://php.net/manual/de/language.oop5.basic.php

$this->html beinhaltet vermutlich das, was ausgegeben wird.

Für dein Problem ist das <iframe> Element aber nicht relevant. Die Anpassungen müssen auf der Seite erfolgen, die in dem Iframe eingebunden ist, also auf https://test-heidelpay.hpcgw.net/sgw/hcoForm.jsp. Und Voraussetzung ist dabei, wie gesagt, dass auch die Seite, in der das Iframe eingebunden ist, auf test-heidelpay.hpcgw.net liegt. Domainübergreifende Aktionen sind aus Sicherheitsgründen nicht möglich.

13.02.2014 18:02 | geändert: 13.02.2014 18:04

6 ShadowLupina

Hm..ok...wenn ich das richtig verstehe..ist dann das html in dem beispiel quasi das objekt was aufgerufen wird...und $this verweißt als referenz darauf?

Aber woher kennt das html Objekt dann seinen Inhalt ich sehe nicht wie das übergeben wird?

14.02.2014 12:25

7 Jörg Kruse

wenn ich das richtig verstehe..ist dann das html in dem beispiel quasi das objekt was aufgerufen wird

Nein $html ist eine Eigenschaft des Objekts, siehe auch das erste Beispiel der von mir verlinkten Manualseite

und $this verweißt als referenz darauf?

$this bezieht sich auf die Klasse, innerhalb der es verwendet wird. Außerhalb von Klassendefinitionen macht $this keinen Sinn. Der Code, den du in Beitrag 4 gepostet hast, solte sich also entsprechend innerhalb einer Klassendefinition befinden.

Aber woher kennt das html Objekt dann seinen Inhalt ich sehe nicht wie das übergeben wird?

Irgendwo vorher wird der Variablen $html ein Inhalt zugewiesen. Dazu gibt es verschiedene Möglichkeiten, je nachdem, mit welcher Sichtbarkeit diese definiert ist, nur innerhalb oder auch außerhalb der Klasse. Zum besseren Verständnis würde ich eine Einführung in objektorientierte Programmierung in PHP empfehlen (mit diesen Stichworten lassen sich über eine Suchmaschine entsprechende Seiten finden)

Der Inhalt von $this->html ist aber für die Lösung des genannten Problems wie gesagt eh nicht relevant. Dafür müsstest du vielmehr die Seite test-heidelpay.hpcgw.net/sgw/hcoForm.jsp bearbeiten können. Hast du da überhaupt Zugriff drauf?

Mal abgesehen davon - gibt es für diese Bezahlseite keine FAQ, wie nach erfolgter Bezahlung weiter verfahren werden kann? das Einblenden des Buttons in Abhängigkeit vom Inhalt des Iframes, wäre nämlich eine Lösung, die sicherheitstechnisch sehr fragwürdig wäre (falls sie den überhaupt funktionieren sollte)

14.02.2014 14:35 | geändert: 14.02.2014 14:39

8 ShadowLupina

Irgendwo vorher wird der Variablen $html ein Inhalt zugewiesen. Dazu gibt es verschiedene Möglichkeiten, je nachdem, mit welcher Sichtbarkeit diese definiert ist, nur innerhalb oder auch außerhalb der Klasse.

OK, dass muss dann außerhalb sein, weil in der order_done.php wird die Variable nicht definiert.

Der Inhalt von $this->html ist aber für die Lösung des genannten Problems wie gesagt eh nicht relevant. Dafür müsstest du vielmehr die Seite test-heidelpay.hpcgw.net/sgw/hcoForm.jsp bearbeiten können. Hast du da überhaupt Zugriff drauf?

Nein hab ich leider nicht

Mal abgesehen davon - gibt es für diese Bezahlseite keine FAQ, wie nach erfolgter Bezahlung weiter verfahren werden kann?

Nein bisher noch nicht...und ich möchte ja erreichen...dass ein Bilderupload nur dann erfolgen kann...wenn die Bestellung abgeschlossen ist.


---

Naja was noch möglich wäre. Ich müsste ja einen Request vom Server bekommen..und der sollte mich eigentlich auf eine Seite führen..auf der steht, dass die Bestellung erfolgreich war (passiert aktuell nicht..weil Seite Passwortgeschützt ist)

Aber über den Request müsste ich dann ja auch sagen können, dass der Button freigegeben wird?

17.02.2014 09:58

9 Jörg Kruse

Naja was noch möglich wäre. Ich müsste ja einen Request vom Server bekommen..und der sollte mich eigentlich auf eine Seite führen..auf der steht, dass die Bestellung erfolgreich war (passiert aktuell nicht..weil Seite Passwortgeschützt ist)

Du meinst eine Weiterleitung? Ein Request (Anfrage) geht in der Regel vom Browser aus. Der Server antwortet, dass der Inhalt unter einer anderen URL zu finden ist. Aber auch das läuft ja ab, ohne dass du Einfluss darauf hast.

Vorstellbar wäre, dass eine Weiterleitungs-URL konfiguriert werden kann, die auf der Domain liegt, auf der du Zugriff hast. Dort könntest du dann den Button einbauen. Ob das bei der von euch eingesetzten Bezahlseite der Fall ist, weiß nich nicht. Dafür gibt es keine Standards, das kann jede Bezahlseite anders regeln. Deswegen meine Frage nach einer FAQ.

17.02.2014 17:20

10 ShadowLupina

Zitat von Jörg
Naja was noch möglich wäre. Ich müsste ja einen Request vom Server bekommen..und der sollte mich eigentlich auf eine Seite führen..auf der steht, dass die Bestellung erfolgreich war (passiert aktuell nicht..weil Seite Passwortgeschützt ist)

Du meinst eine Weiterleitung? Ein Request (Anfrage) geht in der Regel vom Browser aus. Der Server antwortet, dass der Inhalt unter einer anderen URL zu finden ist. Aber auch das läuft ja ab, ohne dass du Einfluss darauf hast.

Vorstellbar wäre, dass eine Weiterleitungs-URL konfiguriert werden kann, die auf der Domain liegt, auf der du Zugriff hast. Dort könntest du dann den Button einbauen. Ob das bei der von euch eingesetzten Bezahlseite der Fall ist, weiß nich nicht. Dafür gibt es keine Standards, das kann jede Bezahlseite anders regeln. Deswegen meine Frage nach einer FAQ.

Oh..ich meinte Respone^^

Und es ist tatsächlich der Fall, dass durch die Response ne neue Seite geladen wird...auf der dann die Bestellnummer steht.

Dort habe ich meinen Button jetzt eingebaut...und der leitet dann zur Uploadseite zurück.

Jetzt würde ich gerne nur noch einbauen...dass der Button Hochladen...so lange deaktiviert ist...bis der Button zurück zum Upload gedrückt wurde.

Der Buttom zum Upload wurde in der Datei pluginresponse.php erstellt und der Hochladen Button in der Datei default_single.php

Beide Datein liegen auf derselben Domain...nur auf halt in verschiedenen ordnern...also müsste es ja möglich sein...mit dem einen button auf den anderen zuzugreifen?

---

Eine FAQ werden wir noch schreiben^^ weil der Vorgang ist doch schon etwas komplex.

18.02.2014 15:36 | geändert: 18.02.2014 15:44