Add view classes for articles, banners, languages, menu, newsletter, containers, shop categories, clients, payment methods, products, and search

- Created `Articles` class for rendering article views including full articles, miniature lists, and news sections.
- Added `Banners` class for handling banner displays.
- Introduced `Languages` class for rendering language options.
- Implemented `Menu` class for rendering page and menu structures.
- Developed `Newsletter` class for newsletter rendering.
- Created `Scontainers` class for rendering specific containers.
- Added `ShopCategory` class for managing shop category views and pagination.
- Implemented `ShopClient` class for client-related views including address management and login forms.
- Created `ShopPaymentMethod` class for displaying payment methods in the basket.
- Added `ShopProduct` class for generating product URLs.
- Introduced `ShopSearch` class for rendering a simple search form.
- Added `.htaccess` file in the plugins directory to enhance security by restricting access to sensitive files and directories.
This commit is contained in:
2026-02-21 23:00:54 +01:00
parent a605e0f4ad
commit fc45bbf20e
322 changed files with 35722 additions and 21849 deletions

View File

@@ -4,10 +4,10 @@ global $lang_id;
if ( $this -> settings['ssl'] ) $base = 'https'; else $base = 'http';
echo $this -> settings['newsletter_header'];
?>
<p style="font-family: Arial; font-size: 14px; font-weight: normal; margin-bottom: 25px;"><?= ucfirst( \S::lang( 'podsumowanie-zamowienia' ) );?> <?= \S::lang( 'nr' );?> <strong><?= $this -> order['number'];?></strong> <?= \S::lang( 'z-dnia' );?> <strong><?= date( 'd.m.Y H:i', strtotime( $this -> order['date_order'] ) );?></strong></p>
<p><a href="<?= $base . "://" . $_SERVER['SERVER_NAME'];?>/zamowienie/<?= $this -> order['hash'];?>" style="display: block; width: 200px; text-align: center; padding: 10px; background: #77cdd1; color: #FFF; text-decoration: none; text-transform: uppercase;"><?= \S::lang( 'szczegoly-zamowienia' );?></a></p>
<p style="font-family: Arial; font-size: 14px; font-weight: normal; margin-bottom: 25px;"><?= ucfirst( \Shared\Helpers\Helpers::lang( 'podsumowanie-zamowienia' ) );?> <?= \Shared\Helpers\Helpers::lang( 'nr' );?> <strong><?= $this -> order['number'];?></strong> <?= \Shared\Helpers\Helpers::lang( 'z-dnia' );?> <strong><?= date( 'd.m.Y H:i', strtotime( $this -> order['date_order'] ) );?></strong></p>
<p><a href="<?= $base . "://" . $_SERVER['SERVER_NAME'];?>/zamowienie/<?= $this -> order['hash'];?>" style="display: block; width: 200px; text-align: center; padding: 10px; background: #77cdd1; color: #FFF; text-decoration: none; text-transform: uppercase;"><?= \Shared\Helpers\Helpers::lang( 'szczegoly-zamowienia' );?></a></p>
<? if ( is_array( $this -> order['products'] ) ): foreach ( $this -> order['products'] as $product ):?>
<? $summary_tmp += \S::normalize_decimal( $product['price_brutto'] * $product['quantity'] );?>
<? $summary_tmp += \Shared\Helpers\Helpers::normalize_decimal( $product['price_brutto'] * $product['quantity'] );?>
<? $quantity += $product['quantity'];?>
<? endforeach; endif;?>
<?
@@ -20,14 +20,14 @@ echo $this -> settings['newsletter_header'];
<? $summary_tmp += $this -> order['transport_cost'];?>
<? if ( $this -> order['payment_method_id'] == 1 ):?>
<div style="border-bottom: 1px solid #eee; margin-bottom: 15px;"></div>
<p style="font-family: Arial; font-size: 14px; font-weight: 600; text-transform: uppercase;"><?= \S::lang( 'dane-do-przelewu' );?>:</p>
<p style="font-family: Arial; font-size: 14px; font-weight: 600; text-transform: uppercase;"><?= \Shared\Helpers\Helpers::lang( 'dane-do-przelewu' );?>:</p>
<div style="font-family: Arial; font-size: 14px;">
<?= str_replace( [ '[KWOTA]', '[NR-ZAMOWIENIA]' ], [ \S::decimal( $summary_tmp ) . ' zł', $this -> order['number'] ], $this -> settings['shop_bank_account_info'] );?>
<?= str_replace( [ '[KWOTA]', '[NR-ZAMOWIENIA]' ], [ \Shared\Helpers\Helpers::decimal( $summary_tmp ) . ' zł', $this -> order['number'] ], $this -> settings['shop_bank_account_info'] );?>
</div>
<? endif;?>
<div style="border-bottom: 1px solid #eee; margin-bottom: 15px;"></div>
<p style="font-family: Arial; font-size: 14px; font-weight: 600; text-transform: uppercase;"><?= \S::lang( 'dane-do-dostawy' );?>:</p>
<p style="font-family: Arial; font-size: 14px; font-weight: 600; text-transform: uppercase;"><?= \Shared\Helpers\Helpers::lang( 'dane-do-dostawy' );?>:</p>
<p style="font-family: Arial; font-size: 14px; ">
<?= $this -> order['client_surname'];?> <?= $this -> order['client_name'];?><br />
<?= $this -> order['client_street'];?><br />
@@ -43,7 +43,7 @@ echo $this -> settings['newsletter_header'];
</p>
<? if ( $this -> order['firm_name'] ):?>
<div style="border-bottom: 1px solid #eee; margin-bottom: 15px;"></div>
<p style="font-family: Arial; font-size: 14px; font-weight: 600; text-transform: uppercase;"><?= \S::lang( 'dane-do-faktury' );?>:</p>
<p style="font-family: Arial; font-size: 14px; font-weight: 600; text-transform: uppercase;"><?= \Shared\Helpers\Helpers::lang( 'dane-do-faktury' );?>:</p>
<p style="font-family: Arial; font-size: 14px; margin-top: 15px;">
<?= $this -> order['firm_name'];?><br />
<?= $this -> order['firm_street'];?><br />
@@ -52,26 +52,26 @@ echo $this -> settings['newsletter_header'];
</p>
<? endif;?>
<div style="border-bottom: 1px solid #eee; margin-bottom: 15px;"></div>
<p style="font-family: Arial; font-size: 14px; font-weight: 600; text-transform: uppercase;"><?= \S::lang( 'zamowione-produkty' );?>:</p>
<p style="font-family: Arial; font-size: 14px; font-weight: 600; text-transform: uppercase;"><?= \Shared\Helpers\Helpers::lang( 'zamowione-produkty' );?>:</p>
<table style="font-family: Arial; width: 100%; max-width: 800px; border-collapse: collapse; font-size: 14px; margin-bottom: 25px;">
<thead>
<tr>
<th style="text-align: left; border-bottom: 1px solid #ccc;"><?= ucfirst( \S::lang( 'produkt' ) );?></th>
<th style="text-align: right; border-bottom: 1px solid #ccc; padding: 0 5px;"><?= ucfirst( \S::lang( 'cena' ) );?></th>
<th style="text-align: right; border-bottom: 1px solid #ccc; padding: 0 5px;"><?= ucfirst( \S::lang( 'ilosc' ) );?></th>
<th style="text-align: right; border-bottom: 1px solid #ccc; padding: 0 5px;"><?= ucfirst( \S::lang( 'razem' ) );?></th>
<th style="text-align: left; border-bottom: 1px solid #ccc;"><?= ucfirst( \Shared\Helpers\Helpers::lang( 'produkt' ) );?></th>
<th style="text-align: right; border-bottom: 1px solid #ccc; padding: 0 5px;"><?= ucfirst( \Shared\Helpers\Helpers::lang( 'cena' ) );?></th>
<th style="text-align: right; border-bottom: 1px solid #ccc; padding: 0 5px;"><?= ucfirst( \Shared\Helpers\Helpers::lang( 'ilosc' ) );?></th>
<th style="text-align: right; border-bottom: 1px solid #ccc; padding: 0 5px;"><?= ucfirst( \Shared\Helpers\Helpers::lang( 'razem' ) );?></th>
</tr>
</thead>
<tbody>
<? if ( is_array( $this -> order['products'] ) ): foreach ( $this -> order['products'] as $position ):?>
<? $product = \shop\Product::getFromCache( $position['product_id'], $lang_id );?>
<? $product = (new \Domain\Product\ProductRepository($GLOBALS['mdb']))->findCached( $position['product_id'], $lang_id );?>
<tr style="border-bottom: 1px solid #eee;">
<td style="padding: 10px 10px 10px 0;" colspan="4">
<?
$product['language']['seo_link'] ? $url = '/' . $product['language']['seo_link'] : $url = '/p-' . $product['id'] . '-' . \S::seo( $product['language']['name'] );
$product['language']['seo_link'] ? $url = '/' . $product['language']['seo_link'] : $url = '/p-' . $product['id'] . '-' . \Shared\Helpers\Helpers::seo( $product['language']['name'] );
if ( \S::get_session( 'current-lang' ) != \front\factory\Languages::default_language() and $url != '#' )
$url = '/' . \S::get_session( 'current-lang' ) . $url;
if ( \Shared\Helpers\Helpers::get_session( 'current-lang' ) != ( new \Domain\Languages\LanguagesRepository( $GLOBALS['mdb'] ) )->defaultLanguage() and $url != '#' )
$url = '/' . \Shared\Helpers\Helpers::get_session( 'current-lang' ) . $url;
$regex = "-(<a[^>]+href\s*=\s*['\"])(((?!'|\"|http://).)*)(['\"][^>]*>)-i";
echo preg_replace( $regex, "$1" . $base . "://" . $_SERVER['SERVER_NAME'] . "$2$4", '<a href="' . $url . '" target="_blank" style="text-decoration: none; color: #77cdd1; font-size: 14px; font-weight: bold;">' . $product['language']['name'] . '</a>' );
@@ -106,33 +106,36 @@ echo $this -> settings['newsletter_header'];
</td>
<td style="text-align: right; white-space: nowrap; padding: 0 5px;">
<?
echo \S::decimal( $position['price_brutto_promo'] ) . ' zł';
if ( $position['price_brutto_promo'] and $position['price_brutto_promo'] < $position['price_brutto'])
echo '<u style="font-size: 15px; font-weight: 400; color: #c3c3c3; margin-left: 5px; text-decoration: line-through;">' . \S::decimal( $position['price_brutto'] ) . ' zł</u>';
if ( $position['price_brutto_promo'] and $position['price_brutto_promo'] < $position['price_brutto'] )
$discount += \S::normalize_decimal( ( $position['price_brutto'] - $position['price_brutto_promo'] ) * $position['quantity'] );
$_promo = round( (float)$position['price_brutto_promo'], 2 );
$_base = round( (float)$position['price_brutto'], 2 );
if ( $_promo > 0 and $_promo < $_base ) {
echo \Shared\Helpers\Helpers::decimal( $_promo ) . ' zł';
echo '<u style="font-size: 15px; font-weight: 400; color: #c3c3c3; margin-left: 5px; text-decoration: line-through;">' . \Shared\Helpers\Helpers::decimal( $_base ) . ' zł</u>';
$discount += \Shared\Helpers\Helpers::normalize_decimal( ( $_base - $_promo ) * $position['quantity'] );
} else {
echo \Shared\Helpers\Helpers::decimal( $_base ) . ' zł';
}
$_effective = ( $_promo > 0 and $_promo < $_base ) ? $_promo : $_base;
?>
</td>
<td style="text-align: right; white-space: nowrap; padding: 0 5px;">
<?= $position['quantity'];?>
</td>
<td style="text-align: right; white-space: nowrap; padding: 0 5px;">
<?= \S::decimal( \S::normalize_decimal( $position['price_brutto_promo'] * $position['quantity'] ) );?> zł
<?= \Shared\Helpers\Helpers::decimal( \Shared\Helpers\Helpers::normalize_decimal( $_effective * $position['quantity'] ) );?> zł
</td>
</tr>
<? $summary += \S::normalize_decimal( $position['price_brutto'] * $position['quantity'] );?>
<? $summary += \Shared\Helpers\Helpers::normalize_decimal( $_base * $position['quantity'] );?>
<? $quantity += $position['quantity'];?>
<? endforeach; endif;?>
<tr>
<td style="text-align: right; font-weight: 600; padding-top: 10px;" colspan="3">Wartość koszyka:</td>
<td style="text-align: right; font-weight: 600; padding-top: 10px; white-space: nowrap;"><?= \S::decimal( $summary );?> zł</td>
<td style="text-align: right; font-weight: 600; padding-top: 10px; white-space: nowrap;"><?= \Shared\Helpers\Helpers::decimal( $summary );?> zł</td>
</tr>
<? if ( $discount ):?>
<tr>
<td style="text-align: right; font-weight: 600; padding-top: 10px;" colspan="4">
Rabat: <span style="color: #cc0000;">-<?= \S::decimal( $discount );?> zł</span>
Rabat: <span style="color: #cc0000;">-<?= \Shared\Helpers\Helpers::decimal( $discount );?> zł</span>
</td>
</tr>
<? endif;?>
@@ -148,11 +151,11 @@ echo $this -> settings['newsletter_header'];
</tr>
<tr style="border-bottom: 1px solid #eee;">
<td style="text-align: right; font-weight: 600; padding-top: 10px; padding-bottom: 10px;" colspan="3"><?= $this -> order['transport'];?><div style="font-weight: 500; font-size: 13px; line-height: 16px; font-style: italic; margin-top: 5px;"><?= $this -> order['transport_description'];?></div></td>
<td style="text-align: right; font-weight: 600; padding-top: 10px; padding-bottom: 10px; white-space: nowrap;"><?= \S::decimal( $this -> order['transport_cost'] );?> zł</td>
<td style="text-align: right; font-weight: 600; padding-top: 10px; padding-bottom: 10px; white-space: nowrap;"><?= \Shared\Helpers\Helpers::decimal( $this -> order['transport_cost'] );?> zł</td>
</tr>
<tr>
<td style="text-align: right; font-weight: 600; padding-top: 10px; padding-bottom: 10px;" colspan="3"><?= ucfirst( \S::lang( 'razem' ) );?>:</td>
<td style="text-align: right; font-weight: 600; padding-top: 10px; padding-bottom: 10px; white-space: nowrap;"><?= \S::decimal( $summary - $discount + $this -> order['transport_cost'] );?> zł</td>
<td style="text-align: right; font-weight: 600; padding-top: 10px; padding-bottom: 10px;" colspan="3"><?= ucfirst( \Shared\Helpers\Helpers::lang( 'razem' ) );?>:</td>
<td style="text-align: right; font-weight: 600; padding-top: 10px; padding-bottom: 10px; white-space: nowrap;"><?= \Shared\Helpers\Helpers::decimal( $summary - $discount + $this -> order['transport_cost'] );?> zł</td>
</tr>
<? if ( $this -> order['message'] ):?>
<tr style="border-top: 1px solid #eee;">