Antwort #67 am: 28. Oktober 2021, 16:54:06
Ich weiß nicht wo genau das Problem liegt und habe nicht die Zeit das Modul zu installieren und zu testen
(okay, eigtl. ist es "keine Lust").
Was mir jedoch auffällt ist, daß im System-Modul etwas fehlt (
/admin/includes/modules/system/paymentUnallowed.php).
Bei
function keys() {
müssen alle Werte eingetragen sein, also so
function keys
() { return array('MODULE_PAYMENTUNALLOWED_STATUS'. 'MODULE_CATEGORIES_PAYMENTUNALLOWED_STATUS', 'MODULE_CATEGORIES_PAYMENTUNALLOWED_SORT_ORDER', 'MODULE_CHECKOUT_PAYMENTUNALLOWED_STATUS', 'MODULE_CHECKOUT_PAYMENTUNALLOWED_SORT_ORDER' ); } Die Sortierung in der Klassenerweiterug ist unerheblich soweit ich das sehe.
Die Klassenerweiterung sollte automatisch mit dem System-Modul installiert (und deinstalliert) werden, dann gibt es auch keine Probleme mit der Reihenfolge der Installationen.
Wie es mom. ist muß das System-Modul zuerst installiert werden und dann erst die Klassenerweiterung. *edit* Meine letzte Aussage ist Blödsinn. *end_edit*
In der
/admin/includes/extra/modules/new_product/paymentUnallowed.php wird in einem Loop für jedes Zahlungsmodul mittels Javascript das nötige HTML verschoben (wieso in einem Loop, Performance ?). Das HTML ist jedoch zerschossen, sprich, nicht valide und das könnte der Grund dafür sein, daß die Werte nicht in jedem Browser als innerhalb des form-tags angesehen und somit auch nicht gespeichert werden.
Unten ein Vorschlag meinersseits dazu.
Der neuen DB-Tabelle
products_unallowed_payments würde ich einen UNIQUE INDEX geben der beide Felder umfasst (products_id, payment_modul).
Auch würde ich die Tabelle bei Deinstallation des System-Moduls nicht löschen, die stört ja nicht und vielleicht benötigt man die Einträge nochmal.
Das ganze Modul hat einige Unzulänglichkeiten und ist u.A. auch nicht "php 8"-kompatibel.
Von der teilweise Augen-Tinitus hervorrufenden Code-Formatierung wollen wir mal nicht reden.
Mein Vorschlag für die
/admin/includes/modules/system/paymentUnallowed.php:
<?php /* -------------------------------------------------------------------------------------------------
Module: Artikelabhaengige Zahlungsweisen
Anpassung: awids | reworked 10-2021, noRiddle
Platform: modified eCommerce Shopsoftware 2.x.x.x (http://www.modified-shop.org)
-----------------------------------------------------------------------------------------------*/if(defined('MODULE_PAYMENTUNALLOWED_STATUS') && MODULE_PAYMENTUNALLOWED_STATUS
== 'true') { if (defined('MODULE_PAYMENT_INSTALLED') && xtc_not_null
(MODULE_PAYMENT_INSTALLED
)) { $payment_array = array( array('id' => 0,'text' => TEXT_UNALLOWED_PAYMENTS_FALSE
), array('id' => 1,'text' => TEXT_UNALLOWED_PAYMENTS_TRUE
), ); $modules = explode(';', MODULE_PAYMENT_INSTALLED
); $excluded_payments = array(); $excluded_query = xtc_db_query
("SELECT payment_modul FROM products_unallowed_payments WHERE products_id = ".(int
)$pInfo->products_id." ORDER BY payment_modul"); while ($row = xtc_db_fetch_array
($excluded_query)) { $excluded_payments[] = $row['payment_modul']; } if(!empty($modules) { echo '<div class="cf" style="float:left; width:100%; vertical-align:top">' .'<hr />' .'<table class="tableInput border0">'; foreach($modules as $value) { $class = substr($value, 0, strrpos($value, '.')); include(DIR_FS_LANGUAGES
. $_SESSION['language'] . '/modules/payment/' . $value);?> <tr>
<td>
<span class="main">
<?php printf(TEXT_UNALLOWED_PAYMENTS
, strip_tags(constant("MODULE_PAYMENT_".strtoupper($class)."_TEXT_TITLE"))); ?></span>
</td>
<td>
<span class="main">
<?php echo draw_on_off_selection
('unallowed_payments['.$class.']', 'checkbox', (in_array($class, $excluded_payments) ?
true : false)); ?></span>
</td>
</tr>
<?php } echo '</table>' .'<hr />' .'/div>'; } }}?> Außerdem in
/admin/includes/modules/categories/paymentUnallowed.php aus dem
foreach ($products_data['unallowed_payments'] as $class => $enabled) {
if ($enabled) {
das machen
foreach ($products_data['unallowed_payments'] as $class => $enabled) {
if ($enabled == '1') {
Gruß,
noRiddle