Admin Modul

Hallo zusammen,

ich häng gerade an einem Affiliate Modul und komme nicht weiter, steh irgendwie auf dem Schlauch :slight_smile:

Im Admin brauche ich eine Eingabemöglichkeit für die Affiliate Partner, Menüpunkt ist integriert, der List-Frame und der Main-Frame werden angezeigt. Im Listframe stehen auch die DB Einträge, sobald ich aber dort auf irgendeinen Link klicke (egal ob sortierung oder Listeneintrag) erscheint der Shop in dem Frame. Weiß jemand was fehlt, was ich vergesse zu übergeben?

lg
ralf

ok, ich hab einen Schreibfehler gehabt. Jetzt kommt aber (sobald ich in der Liste klick) der Login Bildschirm… Ich verzweifel gleich :slight_smile:

Bei neueren Version von oxid muss im Adminbereich immer auch der Parameter stoken übergeben werden.

Vielleicht fehlt der Parameter bei Dir. Das erzeugt jedenfalls das Fehlerbild “Anmeldebildschirm”.

Hi,

nein ist drin, baut Oxid ja selber auf mit [{$shop->selflink}]

Auszug aus der Seite (Dieses Formular wird ja beim Reload abgeschickt)

<form name=“transfer” id=“transfer” action=“http://localhost/admin/index.php?stoken=C53EA34&” method=“post”>
<input type=“hidden” name=“stoken” value=“C53EA34”><input type=“hidden” name=“force_admin_sid” value=“2fdccee522d6dfed58cad2bb8f615364”>
<input type=“hidden” name=“oxid” value="-1">
<input type=“hidden” name=“oxidCopy” value="-1">
<input type=“hidden” name=“cl” value=“b2k_tracking_main”>
<input type=“hidden” name=“language” value=“0”>
</form>

[QUOTE=Kerstel;41682]Im Listframe stehen auch die DB Einträge, sobald ich aber dort auf irgendeinen Link klicke (egal ob sortierung oder Listeneintrag) erscheint der Shop in dem Frame. Weiß jemand was fehlt, was ich vergesse zu übergeben?
[/QUOTE]

ExeptionLog im /log Ordner hilft bei so etwas weiter.

Hi,

hab ich auch gedacht (dadurch hab ich auch den ersten Fehler gefunden). Dieser erzeigt anscheinend keine Exception, man wird einfach nur ausgeloggt :slight_smile:

muss in der render() des main-Frames was bestimmtes abgefangen werden? Oder im List-Frame schon berücksichtigt? In der .php des Main-Frames hab ich nur ein parent::render() und ein return mit dem Templatenamen.

lg
ralf

Hi,

hab nochmal ein wenig geforscht, es kann nur am submit des transfer-Formulars liegen. Dieses wird so ausgegeben:

<form name=“transfer” id=“transfer” action=“http://localhost/admin/index.php?stoken=E690C892&” method=“post”>
<input type=“hidden” name=“stoken” value=“E690C892”><input type=“hidden” name=“force_admin_sid” value=“b695f285347a2e7699c225b8bcf1f230”>
<input type=“hidden” name=“oxid” value="-1">
<input type=“hidden” name=“oxidCopy” value="-1">
<input type=“hidden” name=“cl” value=“b2k_tracking_main”>
<input type=“hidden” name=“language” value=“0”>
</form>

Anscheinend wird irgendwas nicht korrekt verarbeitet, aber was? Muss was in der b2k_tracking_main stehen?

lg ralf

“oxid” sollte IMHO die Shop-ID sein… also oxbaseshop bei der CE.

“cl” ist die View… gibt es die im Admin-Ordner (b2k_tracking_main.php) und ist der Dateiname klein geschrieben, heißt die Klasse ebenfalls so, ist dies eine View mit render() Methode oder leitet sich diese von der Admin View ab und gibt diese ein existierendes Admin-Template zurück?

Ich vermisse “actshop”, sollte auch oxbaseshop sein.

“stocken” ist zwei mal da, einmal in form-action, einmal als input-element.

Was passiert, wenn man nach den Fehler im Frame mit den Frontend irgendein Link anklickt… dann sollte der Shop wieder laden, aber mit Fehlermeldung.

Hi,

ich bin der Meinung das oxid die id der Tabelle ist, da über js die id übergeben wird an das Formular, zudem ist es eine EE :-). Ich hab mal bei anderen Modulen geschaut, wie z.B. die language_main, dort steht das gleiche drin.

Die Dateien gibt es alle, die Klasse sieht so aus:

class b2k_tracking_main extends oxAdminDetails
{
public function render()
{
parent::render();

	return "b2k_tracking_main.tpl";
}

}

Diese wird aber nicht mehr angefasst, ich hab es an verschiedenen Stellen mit echo (und alert im js) versucht. Die stelle an der er rausspringt ist der submit des transfer-Formulars (wird über oxid.admin.editThis(ID_DER_TABELLE) gesteuert). Ich werd jetzt bald kirre, kann doch nicht so schwer sein ein Adminmodul zu schreiben :slight_smile: Ich kann gerne mal die ganzen php und tpl Dateien zur verfügung stellen.

lg ralf

p.s. der redirect erfolgt nicht auf den shop, sondern auf den login vom admin (erst kurz im main-frame und dann auf der ganzen seite)

Da hilft nur debuggen.

ZB:
Wird die View angesprochen?
public function render(){die(‘Ja, ich werde’);}

beim klick innerhalb der liste wird diese nicht mehr angesprochen. Beim ersten laden schon, sobald aber auf einen Listeneintrag geklickt wird, kommt er nicht mehr in die render()

Kann man auch schwer debuggen, da ja das transfer-Formular benötigt wird, was aber nicht existiert wenn die render() kein Template zurück gibt :slight_smile:

Deswegen, geb ich mir in der render() das transfer-Formular aus dem Seitenquelltext vorher aus, so dass nur das existiert. Jetzt ist es definitiv, dass am absenden dieses Formulares liegt, nur was…

ich bin wieder mal einen schritt weiter. In der oxid.js gibt es die Funktion editThis:

    editThis : function( sID )
    {
        var oTransfer = top.basefrm.edit.document.getElementById( "transfer" );
        oTransfer.oxid.value = sID;
        oTransfer.cl.value = top.oxid.admin.getClass( sID );

        //forcing edit frame to reload after submit
        top.forceReloadingEditFrame();

        var oSearch = top.basefrm.list.document.getElementById( "search" );
        oSearch.oxid.value = sID;
        oSearch.submit();
    },

An diese Funktion wird die ID für die Datenbank übergeben und der Frame Submitted. Mein Problem entsteht nun in der 3. Zeile in der der cl-Parameter durch die Funktion getClass überschrieben wird:

    getClass : function( sID )
    {
        if ( top.basefrm.list.sDefClass && top.basefrm.list.sActClass ) {
            return ( sID == -1 || sID == '-1' ) ? top.basefrm.list.sDefClass : top.basefrm.list.sActClass;
        } else if ( top.basefrm.edit.sDefClass && top.basefrm.edit.sActClass ) {
            return ( sID == -1 || sID == '-1' ) ? top.basefrm.edit.sDefClass : top.basefrm.edit.sActClass;
        }
        return '';
    },

Sobald ich diese Zeile auskommentiere geht es. Ich hab das Formular nochmal mit anderen verglichen und ich kann keinen Unterschied feststellen. Was fehlt mir hier??

Tag, ich hab den Fehler gefunden. In der menu.xml hat der list-Parameter gefehlt. Immer da wo man als letztes schaut…

Danke trotzdem für die Hilfe
Ralf

Hallo,

ich habe ein ähnliches Problem.
Ein eigenes Admin-Modul soll list und main zeigen.
Der Listbereich wird angezeigt und der ‘main’-Tab auch.
Der Mainbereich zeigt allerdings nur den Backend-Home-Bereich.

Wenn ich im Frameset die cl für den unteren Bereich angebe, sieht man ganz kurz das Formular, aber dann kommt wieder der Home-Bereich.
Ein die(‘Ja’); im Main-Render kann man auch kurz sehen, wenn ich es einsetze.

Warum wird das Formular nicht dauerhaft angezeigt?
Welche sinnvollen Teile kann ich posten?

Danke

OXID 6.1.5

Wahrscheinlich hast nen Fehler drin :wink:. Was sagt denn die Log-Datei? Alte oder neue Struktur (composer) ?

Es steht nichts in der Log-Datei.
Ich entwickle das Modul per manueller Installation, also ohne Composer.

An welcher Stelle wird ‘Main’ denn beim ersten Aufruf geladen?
Das muss wohl irgendwo im JS sein.
Vielleicht kann ich von der Seite weiter suchen.

Ich habe den Fehler:

Im <frameset…> wird im [{$editurl}] die untere Klasse angegeben.
Diese Variable habe ich übersehen.

Danke

Trotzdem hatte ich noch reichlich Fehler drin.
Die Anleitung kann ich empfehlen: https://www.youtube.com/watch?v=I_KllyZy0zg&t=2810s

1 Like