Jump to content
xt:Commerce Community Forum

Hookpoint oder Hinweis auf daten für Bestellung Bearbeiten


mulix

Recommended Posts

Hi Leute,

ich arbeite an einem plugin welches details über bestellungen ausgibt. Zwar sollte im backend der punkt bestellungen und die seite bestellung bearbeiten ausreichen, aber wie immer gibt es hier nur sonderlösungen bei uns. Ich habe zwar unter

templates/__xtAdmin/xtCore/pages/order.html
das template gefunden aber wo kommen die daten her. Welche php-dateien stellen die daten zusammen und übergibt diese dann an die methoden für die backend-darstellung. Ich hab mir
xtFramework/classes/class.order.php[/code]

angeschaut, aber den punkt an dem etwas für die seite bestellung bearbeiten ausgeführt wird, hab ich nicht gefunden. Nur haufen zeugs was die bestellungen angeht (macht ja aus sinn). Ganz gern würde ich eine liste ähnlich der liste mit den bestellstatus anlegen. Also hatt jemand ne idee welche hookpoints da für mich interessant wären. In der oop mit php bin ich fitt, also ist mir das thema plugins schon klar.

bis dann

Michael

Link to comment
Share on other sites

Hi Leute,

hab jetzt in der listenansicht der bestellungen mir einfach nur ein rowAction

über den hook class.order.php:_getParams_row_actions eingefügt.

Als rowActionsFunctions nutze ich


<phpcode>

<![CDATA[

$rowActions[] = array('iconCls' => 'plg_msbill', 'qtipIndex' => 'qtip1', 'tooltip' => TEXT_PLG_MSBILL);


$plg_msbill_js = "var edit_id = record.id;";

$plg_msbill_js .= "addTab('adminHandler.php?load_section=order_bill&plugin=ms_bill&pg=overview&products_id='+edit_id,'".TEXT_PLG_MSBILL." ('+edit_name+')', 'ms_bill'+edit_id)";


$rowActionsFunctions['plg_msbill'] = $plg_msbill_js;    


]]>

</phpcode>

also rufe ich die funktion addTab auf, die leider nicht dokumentiert ist. Daher muste ich mit hilfe der doku aus dem veyton buch bissel interpretieren. Die funktion addTab sucht die datei (sie sollte das wohl) plugins/ms_bill/classes/class.order_bill.php. Nur leider kann ich das nicht prüfen, wenn ich auf den link mit meiner rowAction klicke passiert nichts. Mein ziel ist es nach dem klicken der rowAction bissel was aus der datenbank zu holen und ein smarty-template zu parsen. Der code dafür muss ja dann in der class.order_bill.php stehen. Bis jetzt sieht die datei so aus


<?php
/*the file is only open into the backend*/
defined('_VALID_CALL') or die('Direct Access is not allowed.');

class order_bill {


protected $_table = orders;
protected $_table_lang = null;
protected $_table_seo = null;
protected $_master_key = 'orders_id';

}

?>
[/PHP]

also lehr, jemand ne idee oder nen ansatz...

so long...

Link to comment
Share on other sites

  • 1 year later...

schon uralt, aber ich finde es schlimm dass solch wichtige Fragen fast immer unbeantwortet bleiben...

grundsätzlich müssen noch folgende funktionen rein:


    public function setPosition( $position )

    {

        $this->position = $position;

    }


    public function _getParams(  )

    {

        // hier werden u.a. die Parameter übergeben, was für Buttons und

        // Funktionen ausführbar sein sollen

    }


    public function _get( $ID = 0 )

    {

        // hier wird u.a. die Ausgabe einer eigenen Tabelle festgelegt

    }

Link to comment
Share on other sites

  • 5 months later...

Hallo zusammen,

ich bin froh endlich mal auf einen thread zu stoßen, der mir zumindest ansatzweise weiterhilft.

Auch ich will die JS Funktion addTab() verwenden um besondere Details zu einem Kunden darzustellen.

Ich habe es nun zumindest hinbekommen, dass sich der Tab öffnet und eine Testausgabe stattfindet. Dank einem Denkanstoß aus dem ersten post hier.

Kurz zur Dokumentation:

installer.xml


<![CDATA[
$rowActions[] = array('iconCls' => 'customClassName', 'qtipIndex' => 'qtip1', 'tooltip' => 'MyPluginIconTooltip');
if ($this->url_data['edit_id'])
$js = "var edit_id = ".$this->url_data['edit_id']."; var edit_name = '".htmlentities($customers_id)."'; ";
else
$js = "var edit_id = record.id; var edit_name=record.get('customers_id'); ";

$js .= "addTab('adminHandler.php?load_section=my_class_name&plugin=xt_my_plugin&customerId='+edit_id,'"."TabTitle"." ('+edit_name+')', 'xt_my_plugin'+edit_id)";
$rowActionsFunctions['customClassName'] = $js;
]]>
[/HTML]

Damit wird der adminHandler aufgerufen, welcher wiederum die Klasse

veyton\xtFramework\classes\class.my_class_name.php

aufruft.

class.my_class_name.php

[PHP]
defined('_VALID_CALL') or die('Direct Access is not allowed.');

class my_class_name
{
public function setPosition( $position )
{
$this->position = $position;
}

public function _getParams( )
{
// hier werden u.a. die Parameter übergeben, was für Buttons und
// Funktionen ausführbar sein sollen
}

public function _get( $ID = 0 )
{
echo '<pre>'; var_dump('TEST'); echo '</pre>';
// hier wird u.a. die Ausgabe einer eigenen Tabelle festgelegt
}
}
[/PHP]

Ergebnis ist ok. Aber was mich verwirrt ist die Tatsache, dass ich meine für das Plugin erstellte Klasse in einen existierenden Veyton Ordner verschieben muss, damit der adminHandler diese findet.

Das ist doch nicht Sinn eines Plugins. Stehe ich gerade nur auf dem Schlauch?

Es wäre super, wenn jemand kurz erklären könnte wie ich meinen Klassenaufruf abändern muss, damit meine Datei auch in meinem Modulordner liegen kann und trotzdem gefunden wird.

Da ich nicht weiß wie der adminHandler aussehen muss, kann ich spontan auch keinen eigenen schreiben.

So far

Link to comment
Share on other sites

  • 1 month later...

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...