Hallo, gerne möchte ich in order_details unter der Box "Lieferscheine" eine eigene Box erstellen. kurz was ich bis jetzt gemacht habe. Ich habe meine alte ESR-implementation aus dem alten GX2 shop auf den neuen Shop angepasst. Hierzu habe ich ein neues Admin Menü für Konfigurationen erstellt. damit ich ein ESR Schein erstellen kann, habe ich in order_details den Abschnitt für "Invoice" kopiert und unter packingslip eingefügt. So hatte ich die Möglichkeit ein PDF zu erstellen. Das PDF wird unter /export/esr kopiert. Die Datei hat folgendes Format: 3360__ESR__9397870000000000000000033600__2016-04-16-16-35-52__7d078158ee68b43b6427af7044d27658.pdf in diesem Ordner sind auch noch zwei weitere Dateien vorhanden. Die .htaccess und index.html. Die .htaccess hat folgenden Inhalt. Code: order_esr allow,deny deny from all Dammit das ganze unter oder_details auch update sicher ist, muss dass was ich temporär eingebaut habe wieder raus. Ich habe gesehen das im Ordner /system/overloads/OrderExtenderComponent/ die Datei InvoicePDFOrderExtender.inc.php existiert. Scheinbar wird diese Benutzt um die "Rechnungs und Lieferschein Boxen" zu erstellen. Ich habe mir diese Datei mal Kopiert und sie in EsrPDFOrderExtender.inc.php umbenennt. der Inhalt sieht wie folgt aus. Code: <?php class EsrPDFOrderExtender extends EsrPDFOrderExtender_parent { function proceed() { ob_end_clean(); $t_order_id = (int)$_GET['oID']; $t_esr_files_array = glob(DIR_FS_CATALOG . 'export/esr/' . $t_order_id . '_*.pdf'); ?> <div class="invoice-packingslip hidden"> <table border="0" width="100%" cellspacing="0" cellpadding="0"> <thead> <tr> <th> <?php echo ESR_CREATED; ?> </th> </tr> </thead> <tbody> <tr class="table-container"> <td class="invoice-container" valign="top"> <table border="0" width="100%" cellspacing="0" cellpadding="2" class="dataTableRow invoice" data-gx-controller="order/order_pdf_delete" data-gx-extension="visibility_switcher" data-visibility_switcher-selections=".action-icons"> <thead> <tr> <th><?php echo TITLE_ESR_CODE; ?></th> <th><?php echo TEXT_DATE; ?></th> <th></th> </tr> </thead> <tbody> <?php if(is_array($t_esr_files_array) && count($t_esr_files_array) > 0) { foreach($t_esr_files_array as $t_file) { $t_file_parts = explode('__', basename($t_file)); ?> <tr class="invoice visibility_switcher"> <td> <?php echo $t_file_parts[2] ?> </td> <td> <?php echo xtc_datetime_short($t_file_parts[2]); ?> </td> <td> <div class="action-icons"> <a href="request_port.php?module=OrderAdmin&action=showPdf&type=invoice&file=<?php echo basename($t_file); ?>" target="_blank" class="icon-container"><i class="fa fa-eye"></i></a> <a href="request_port.php?module=OrderAdmin&action=downloadPdf&type=invoice&file=<?php echo basename($t_file); ?>" target="_blank" class="icon-container"><i class="fa fa-download"></i></a> <a href="#" rel="<?php echo basename($t_file); ?>" class="delete_pdf icon-container"><i class="fa fa-trash-o"></i></a> </div> </td> </tr> <?php } ?> <tr style="display: none;" class="invoice"> <td> <?php echo NO_ESR_CREATED; ?> </td> </tr> <?php } else { ?> <tr class="invoice"> <td> — </td> </tr> <?php } ?> </tbody> </table> </td> </tr> </tbody> </table> </div> <?php ob_start(); $this->addContent(); parent::proceed(); } } Was jetzt funktioniert ist die Anzeige der Dateien. Das ist aber schon alles. Die Tabelle ist auch in der Box Rechnungen eingebettet. Ich denke dass da noch was mit den classen gesteuert wird, denn wenn ich Code: class="dataTableRow invoice" in Code: class="dataTableRow esr" ändere, ist die Tabelle nicht mehr zu sehen. Ich kenne den Shop nicht so gut im Detail wie es hier viele tun, daher hoffe ich auf ein paar Hinweise. Was muss ich noch anpassen damit die Box für sich alleine steht? besten Dank für eure hinweise. Gruss Pascal
.. in der Zwischenzeit habe ich noch folgende Zeilen angepasst: Code: <a href="request_port.php?module=OrderAdmin&action=showPdf&type=esr&file=<?php echo basename($t_file); ?>" target="_blank" class="icon-container"><i class="fa fa-eye"></i></a> <a href="request_port.php?module=OrderAdmin&action=downloadPdf&type=esr&file=<?php echo basename($t_file); ?>" target="_blank" class="icon-container"><i class="fa fa-download"></i></a> <a href="#" rel="<?php echo basename($t_file); ?>" class="delete_pdf icon-container"><i class="fa fa-trash-o"></i></a> somit kann ich jetzt das ESR PDF anschauen, herunterladen, und löschen.
... so, habe es doch noch gefunden und gelöst. eine Datei unter /user_classes/overloads/OrderExtenderComponent anlegen => EsrOrderExtender.inc.php Code: <?php /** * Class EsrOrderExtender * * @see OrderExtenderComponent */ class EsrOrderExtender extends EsrOrderExtender_parent { /** * Overloaded "proceed" method. */ public function proceed() { $languageTextManager = MainFactory::create('LanguageTextManager', 'esr'); $esrCreated = $languageTextManager->get_text('ESR_CREATED'); $esrCreate = $languageTextManager->get_text('ESR_TITLE'); $esrCode = $languageTextManager->get_text('TITLE_ESR_CODE'); $t_order_id = (int)$_GET['oID']; $esr_files_array = glob(DIR_FS_CATALOG . 'export/esr/' . $t_order_id . '_*.pdf'); $esrList = ''; if (is_array($esr_files_array) && count($esr_files_array) > 0) { foreach ($esr_files_array as $t_file) { $t_file_parts = explode('__', basename($t_file)); $esrList .= '<tr class="invoice visibility_switcher"> <td> ' . $t_file_parts[2] . ' </td> <td> ' . xtc_datetime_short($t_file_parts[3]) . ' </td> <td> <div class="action-icons"> <a href="request_port.php?module=OrderAdmin&action=showPdf&type=esr&file=' . basename($t_file) . '" target="_blank" class="icon-container"><i class="fa fa-eye"></i></a> <a href="request_port.php?module=OrderAdmin&action=downloadPdf&type=esr&file=' . basename($t_file) . ' target="_blank" class="icon-container"><i class="fa fa-download"></i></a> <a href="#" rel="' . basename($t_file) . '" class="delete_pdf icon-container"><i class="fa fa-trash-o"></i></a> </div> </td> </tr>'; } } //Position: below_history $this->v_output_buffer['below_history_heading'] = ' ' . $esrCreated . ' </label> <label class="pull-right head-link default"> <a onclick="window.open(\'' . xtc_href_link('esr_pdf.php', 'oID=' . (int)$GLOBALS['oID']) . '\', \'_blank\')"> ' . $esrCreate . ' </a> </label>'; $this->v_output_buffer['below_history'] = ' <div class="frame-content"> <table border = "0" width = "100%" cellspacing = "0" cellpadding = "2" class="dataTableRow" data-gx-controller = "order/order_pdf_delete" data-order_pdf_delete-type = "esr" data-gx-extension = "visibility_switcher" data-visibility_switcher-selections = ".action-icons"> <thead> <tr> <th>' . $esrCode . '</th> <th>' . TEXT_DATE . '</th> <th></th> </tr> </thead> <tbody> ' . $esrList . ' </tbody> </table> </div>'; //The following two rows need to be at the end of every overload of the OrderExtender $this->addContent(); parent::proceed(); } } und somit habe ich die Box, update sicher