ver. 0.283: Legacy class cleanup — S, Html, Email, Image, Log, Mobile_Detect → Shared namespace

- Migrate class.S → Shared\Helpers\Helpers (140+ files), remove 12 unused methods
- Migrate class.Html → Shared\Html\Html
- Migrate class.Email → Shared\Email\Email
- Migrate class.Image → Shared\Image\ImageManipulator
- Delete class.Log (unused), class.Mobile_Detect (outdated UA detection)
- Remove grid library loading from admin (index.php, ajax.php)
- Replace gridEdit usage in 10 admin templates with grid-edit-replacement.php
- Fix grid-edit-replacement.php AJAX to send values as JSON (grid.js compat)
- Remove mobile layout conditionals (m_html/m_css/m_js) from Site + LayoutsRepository
- Remove \Log::save_log() calls from OrderAdminService, ShopOrder, Order

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-16 23:06:06 +01:00
parent 8e97413361
commit 431add234c
159 changed files with 1501 additions and 3043 deletions

View File

@@ -1,7 +1,7 @@
<script type="text/javascript" src="/libraries/ckeditor/ckeditor.js"></script>
<script type="text/javascript" src="/libraries/ckeditor/adapters/jquery.js"></script>
<?
\S::set_session( 'admin', true );
\Shared\Helpers\Helpers::set_session( 'admin', true );
global $db;
$_SESSION['rfm_akey'] = bin2hex(random_bytes(16));
@@ -19,7 +19,7 @@ ob_start();
</ul>
<div class="resp-tabs-container settings-tabs">
<div>
<?= \Html::input(
<?= \Shared\Html\Html::input(
array(
'label' => 'Nazwa',
'name' => 'name',
@@ -28,7 +28,7 @@ ob_start();
'class' => 'require'
) );
?>
<?= \Html::input_switch(
<?= \Shared\Html\Html::input_switch(
array(
'label' => 'Aktywny',
'name' => 'status',
@@ -46,7 +46,7 @@ ob_start();
)
);
?>
<?= \Html::input(
<?= \Shared\Html\Html::input(
array(
'label' => 'Data zakończenia',
'name' => 'date_end',
@@ -55,7 +55,7 @@ ob_start();
'class' => 'date'
) );
?>
<?= \Html::input_switch(
<?= \Shared\Html\Html::input_switch(
array(
'label' => 'Slajder / Strona główna',
'name' => 'home_page',
@@ -78,7 +78,7 @@ ob_start();
<? if ( is_array( $this -> languages ) ): foreach ( $this -> languages as $lg ):?>
<? if ( $lg['status'] ):?>
<div>
<?= \Html::input_icon(
<?= \Shared\Html\Html::input_icon(
array(
'label' => 'Obraz',
'name' => 'src[' . $lg['id'] . ']',
@@ -89,7 +89,7 @@ ob_start();
)
);
?>
<?= \Html::input(
<?= \Shared\Html\Html::input(
array(
'label' => 'Url',
'name' => 'url[' . $lg['id'] . ']',
@@ -98,7 +98,7 @@ ob_start();
)
);
?>
<?= \Html::textarea(
<?= \Shared\Html\Html::textarea(
array(
'label' => 'Kod html',
'name' => 'html[' . $lg['id'] . ']',
@@ -107,7 +107,7 @@ ob_start();
)
);
?>
<?= \Html::textarea(
<?= \Shared\Html\Html::textarea(
array(
'label' => 'Treść',
'name' => 'text[' . $lg['id'] . ']',
@@ -136,26 +136,14 @@ ob_start();
<?
$out = ob_get_clean();
$grid = new \gridEdit;
$grid -> id = 'banner-edit';
$grid -> gdb_opt = $gdb;
$grid -> include_plugins = true;
$grid -> title = 'Edycja baneru';
$grid -> fields = [
[
'db' => 'id',
'type' => 'hidden',
'value' => $this -> banner['id']
]
];
$grid -> external_code = $out;
$grid -> actions = [
'save' => [ 'url' => '/admin/banners/save/', 'back_url' => '/admin/banners/list/' ],
'cancel' => [ 'url' => '/admin/banners/list/' ]
];
$grid -> persist_edit = true;
$grid -> id_param = 'id';
echo $grid -> draw();
$gridId = 'banner-edit';
$gridTitle = 'Edycja baneru';
$gridSaveUrl = '/admin/banners/save/';
$gridBackUrl = '/admin/banners/list/';
$gridHidden = [['name' => 'id', 'value' => $this -> banner['id']]];
$gridContent = $out;
$gridPersist = true;
include __DIR__ . '/../components/grid-edit-replacement.php';
?>
<script type="text/javascript">
$(function ()

View File

@@ -11,7 +11,7 @@ $form = $this->form;
$renderer = new FormFieldRenderer($form);
// Przygotuj filemanager key
\S::set_session('admin', true);
\Shared\Helpers\Helpers::set_session('admin', true);
if (
empty($_SESSION['rfm_akey']) ||
(($_SESSION['rfm_akey_expires'] ?? 0) < time())

View File

@@ -0,0 +1,171 @@
<?php
/**
* Zastepnik gridEdit — generuje panel z przyciskami zapisu/anulowania i formularzem.
*
* Wymagane zmienne:
* $gridId — identyfikator formularza (np. 'layout-edit')
* $gridTitle — tytuł panelu
* $gridSaveUrl — URL zapisu (AJAX POST)
* $gridBackUrl — URL powrotu po zapisie / anulowaniu
* $gridHidden — tablica ukrytych pól [['name' => ..., 'value' => ...], ...]
* $gridContent — HTML zawartość formularza (z ob_get_clean())
* $gridPersist — (bool) czy zostać na stronie po zapisie
*/
$gridPersist = !empty($gridPersist);
?>
<!-- iCheck -->
<link rel="stylesheet" type="text/css" href="/libraries/grid/plugins/icheck/skins/minimal/minimal.css" />
<link rel="stylesheet" type="text/css" href="/libraries/grid/plugins/icheck/skins/minimal/blue.css" />
<script type="text/javascript" src="/libraries/grid/plugins/icheck/icheck.min.js"></script>
<!-- impromptu -->
<link rel="stylesheet" type="text/css" href="/libraries/grid/plugins/impromptu/jquery-impromptu.css" />
<script type="text/javascript" src="/libraries/grid/plugins/impromptu/jquery-impromptu.js"></script>
<div class="row">
<div class="col col-xs-12">
<div class="g-container" data="table:<?= htmlspecialchars($gridId) ?>">
<div class="panel panel-info panel-border top">
<div class="panel-heading">
<span class="panel-title"><?= htmlspecialchars($gridTitle) ?></span>
</div>
<?php if (!empty($gridSaveUrl)): ?>
<div class="panel-heading p10 pl15" id="g-menu" style="height: auto;">
<?php if ($gridPersist): ?>
<a href="#" id="g-edit-save-close" class="btn btn-system btn-sm"
persist_edit="0"
back_url="<?= htmlspecialchars($gridBackUrl) ?>"
url="<?= htmlspecialchars($gridSaveUrl) ?>">
<i class="fa fa-check-circle mr5"></i>Zatwierdź i zamknij
</a>
<?php endif; ?>
<a href="#" id="g-edit-save" class="btn btn-success btn-sm"
persist_edit="<?= $gridPersist ? '1' : '0' ?>"
id_param="id"
back_url="<?= htmlspecialchars($gridBackUrl) ?>"
url="<?= htmlspecialchars($gridSaveUrl) ?>">
<i class="fa fa-check-circle mr5"></i>Zatwierdź
</a>
<a href="<?= htmlspecialchars($gridBackUrl) ?>" class="btn btn-dark btn-sm" id="g-edit-cancel">
<i class="fa fa-reply mr5"></i>Wstecz
</a>
</div>
<?php endif; ?>
<div class="panel-body">
<form method="POST" id="fg-<?= htmlspecialchars($gridId) ?>" class="g-form form-horizontal" enctype="multipart/form-data">
<?php if (!empty($gridHidden) && is_array($gridHidden)): ?>
<?php foreach ($gridHidden as $h): ?>
<input type="hidden" name="<?= htmlspecialchars($h['name']) ?>" id="<?= htmlspecialchars($h['name']) ?>" value="<?= htmlspecialchars($h['value'] ?? '') ?>" />
<?php endforeach; ?>
<?php endif; ?>
<?= $gridContent ?>
</form>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
jQuery(function() {
jQuery('.g-checkbox, .g-radio, .icheck').iCheck({
checkboxClass: 'icheckbox_minimal-blue',
radioClass: 'iradio_minimal-blue'
});
function showGridMessage(type, text) {
var safeText = $('<div/>').text(text || '').html();
var alertClass = type === 'error' ? 'alert-danger' : 'alert-primary';
var html = '<div class="row js-form-message"><div class="col col-xs-12"><div class="alert ' + alertClass + ' alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button><i class="fa fa-info pr10"></i>' + safeText + '</div></div></div>';
$('#content .js-form-message').remove();
$('#content').prepend(html);
}
$('#g-edit-save, #g-edit-save-close').on('click', function(e) {
e.preventDefault();
var $btn = $(this);
var url = $btn.attr('url');
var backUrl = $btn.attr('back_url');
var persist = $btn.attr('persist_edit');
var formId = 'fg-<?= $gridId ?>';
if (typeof CKEDITOR !== 'undefined' && CKEDITOR.instances) {
for (var i in CKEDITOR.instances) {
if (CKEDITOR.instances.hasOwnProperty(i)) CKEDITOR.instances[i].updateElement();
}
}
// Serializacja kompatybilna z grid.js — JSON w parametrze 'values'
var values = $('#' + formId).serializeArray();
var formattedValues = {};
$.each(values, function(i, field) {
var fieldName = field.name.replace(/\[\]$/, '');
var nestedMatch = fieldName.match(/^(.+?)\[(.+?)\]$/);
if (nestedMatch) {
var mainField = nestedMatch[1];
var subField = nestedMatch[2];
if (!formattedValues[mainField]) {
formattedValues[mainField] = {};
}
formattedValues[mainField][subField] = field.value;
} else if (field.name.indexOf('[]', field.name.length - 2) !== -1) {
if (!formattedValues[fieldName]) {
formattedValues[fieldName] = [];
}
formattedValues[fieldName].push(field.value);
} else {
formattedValues[fieldName] = field.value;
}
});
// Normalizacja checkboxów tablicowych (boolean-like)
(function() {
var $form = $('#' + formId);
var groups = {};
$form.find('input[type="checkbox"][name$="[]"]').each(function() {
var n = this.name;
(groups[n] = groups[n] || []).push(this);
});
$.each(groups, function(nameWithBrackets, inputs) {
var vals = {};
$.each(inputs, function(_, el) { vals[(el.getAttribute('value') || '').toLowerCase()] = true; });
var boolSet = {'': true, '1': true, 'on': true, 'true': true, 'yes': true};
var isBool = true;
$.each(vals, function(v) { if (!boolSet[v]) isBool = false; });
if (isBool) {
var baseKey = nameWithBrackets.replace(/\[\]$/, '');
formattedValues[baseKey] = $.map(inputs, function(el) { return el.checked ? '1' : '0'; });
}
});
})();
$.ajax({
url: url,
type: 'POST',
data: {
gtable: formId.replace('fg-', ''),
values: JSON.stringify(formattedValues),
a: 'gsave'
},
dataType: 'json',
success: function(r) {
if (r.status === 'ok' || r.success) {
if (backUrl && persist === '0') {
window.location.href = backUrl;
} else {
showGridMessage('success', r.msg || r.message || 'Zmiany zostały zapisane.');
if (r.id) {
$('#fg-' + formId.replace('fg-','') + ' input[name="id"]').val(r.id);
}
}
} else {
showGridMessage('error', r.msg || r.message || 'Wystąpił błąd.');
}
},
error: function() {
showGridMessage('error', 'Wystąpił błąd połączenia.');
}
});
});
});
</script>

View File

@@ -32,7 +32,7 @@
</tr>
</thead>
<tbody>
<? if ( \S::is_array_fix( $this -> last_orders ) ): foreach ( $this -> last_orders as $order ):?>
<? if ( \Shared\Helpers\Helpers::is_array_fix( $this -> last_orders ) ): foreach ( $this -> last_orders as $order ):?>
<tr class="status-<?= $order['status'];?>">
<td><?= date( "Y-m-d H:i", strtotime( $order['date_order'] ) );?></td>
<td>
@@ -122,7 +122,7 @@
</tr>
</thead>
<tbody>
<? if ( \S::is_array_fix( $this -> best_sales_products ) ): foreach ( $this -> best_sales_products as $row ):?>
<? if ( \Shared\Helpers\Helpers::is_array_fix( $this -> best_sales_products ) ): foreach ( $this -> best_sales_products as $row ):?>
<? $product = \shop\Product::getFromCache( (int)$row['parent_product_id'], ( new \Domain\Languages\LanguagesRepository( $GLOBALS['mdb'] ) )->defaultLanguage() );?>
<tr>
<td>
@@ -157,7 +157,7 @@
</tr>
</thead>
<tbody>
<? if ( \S::is_array_fix( $this -> most_view_products ) ): foreach ( $this -> most_view_products as $row ):?>
<? if ( \Shared\Helpers\Helpers::is_array_fix( $this -> most_view_products ) ): foreach ( $this -> most_view_products as $row ):?>
<? $product = new \shop\Product( $row['id'] );?>
<tr>
<td>

View File

@@ -241,7 +241,7 @@ ob_start();
</ul>
<div class="resp-tabs-container layout-tabs">
<div>
<?= \Html::input(
<?= \Shared\Html\Html::input(
array(
'label' => 'Nazwa',
'name' => 'name',
@@ -249,14 +249,14 @@ ob_start();
'value' => $this -> layout['name']
)
);?>
<?= \Html::input_switch(
<?= \Shared\Html\Html::input_switch(
array(
'label' => 'Szablon domy&#347;lny',
'name' => 'status',
'checked' => $this -> layout['status'] == 1 ? true : false
)
);?>
<?= \Html::input_switch(
<?= \Shared\Html\Html::input_switch(
array(
'label' => 'Szablon domy&#347;lny (kategorie)',
'name' => 'categories_default',
@@ -329,26 +329,13 @@ ob_start();
<?
$out = ob_get_clean();
$grid = new \gridEdit;
$grid -> id = 'layout-edit';
$grid -> gdb_opt = $gdb;
$grid -> include_plugins = true;
$grid -> title = 'Edycja szablonu';
$grid -> fields = [
[
'db' => 'id',
'type' => 'hidden',
'value' => $this -> layout['id']
]
];
$grid -> actions = [
'save' => [ 'url' => '/admin/layouts/save/', 'back_url' => '/admin/layouts/list/' ],
'cancel' => [ 'url' => '/admin/layouts/list/' ]
];
$grid -> external_code = $out;
$grid -> persist_edit = true;
$grid -> id_param = 'id';
echo $grid -> draw();
$gridId = 'layout-edit';
$gridTitle = 'Edycja szablonu';
$gridSaveUrl = '/admin/layouts/save/';
$gridBackUrl = '/admin/layouts/list/';
$gridHidden = [['name' => 'id', 'value' => $this->layout['id']]];
$gridContent = $out;
$gridPersist = true;
include __DIR__ . '/../components/grid-edit-replacement.php';
?>

View File

@@ -21,21 +21,14 @@ ob_start();
<?php
$out = ob_get_clean();
$grid = new \gridEdit;
$grid->gdb_opt = $gdb;
$grid->include_plugins = true;
$grid->default_buttons = false;
$grid->external_code = $out;
$grid->title = 'Lista artyku&#322;&#243;w';
$grid->buttons = [
[
'label' => 'Wstecz',
'url' => '/admin/pages/list/',
'icon' => 'fa-reply',
'class' => 'btn-dark',
],
];
echo $grid->draw();
$gridId = 'page-articles';
$gridTitle = 'Lista artyku&#322;&#243;w';
$gridSaveUrl = '';
$gridBackUrl = '';
$gridHidden = [];
$gridContent = $out;
$gridPersist = false;
include __DIR__ . '/../components/grid-edit-replacement.php';
?>
<script type="text/javascript" src="/libraries/jquery-nested-sortable/jquery.mjs.nestedSortable.js"></script>
<script type="text/javascript">

View File

@@ -31,15 +31,14 @@ foreach ($menus as $menu):
endforeach;
$out = ob_get_clean();
$grid = new \gridEdit;
$grid->id = 'pages-list';
$grid->gdb_opt = $gdb;
$grid->include_plugins = true;
$grid->title = 'Lista stron';
$grid->default_buttons = false;
$grid->external_code = $out;
echo $grid->draw();
$gridId = 'pages-list';
$gridTitle = 'Lista stron';
$gridSaveUrl = '';
$gridBackUrl = '';
$gridHidden = [];
$gridContent = $out;
$gridPersist = false;
include __DIR__ . '/../components/grid-edit-replacement.php';
?>
<style type="text/css">
<?php if ($modal): ?>.mfp-container<?php endif; ?> body.sb-top.sb-top-sm .navbar.navbar-fixed-top + #sidebar_left + #content_wrapper {

View File

@@ -43,23 +43,14 @@ foreach ($menus as $menu):
endforeach;
$out = ob_get_clean();
$grid = new \gridEdit;
$grid->id = 'pages-list';
$grid->gdb_opt = $gdb;
$grid->include_plugins = true;
$grid->title = 'Lista stron';
$grid->default_buttons = false;
$grid->buttons = [
[
'label' => 'Dodaj menu',
'url' => '/admin/pages/menuEdit/',
'icon' => 'fa-plus-circle',
'class' => 'btn-success',
],
];
$grid->external_code = $out;
echo $grid->draw();
$gridId = 'pages-list';
$gridTitle = 'Lista stron';
$gridSaveUrl = '';
$gridBackUrl = '';
$gridHidden = [];
$gridContent = $out;
$gridPersist = false;
include __DIR__ . '/../components/grid-edit-replacement.php';
?>
<script type="text/javascript" src="/libraries/jquery-nested-sortable/jquery.mjs.nestedSortable.js"></script>
<style type="text/css">

View File

@@ -41,7 +41,7 @@ ob_start();
</ul>
<div class="resp-tabs-container settings-tabs">
<div>
<?= \Html::input(
<?= \Shared\Html\Html::input(
array(
'label' => 'Nazwa firmy',
'name' => 'firm_name',
@@ -49,7 +49,7 @@ ob_start();
'value' => $this -> settings['firm_name']
)
);?>
<?= \Html::textarea(
<?= \Shared\Html\Html::textarea(
array(
'label' => 'Dodatkowe informacje',
'name' => 'additional_info',
@@ -57,14 +57,14 @@ ob_start();
'value' => $this -> settings['additional_info']
)
);?>
<?= \Html::input_switch(
<?= \Shared\Html\Html::input_switch(
array(
'label' => 'Mapa',
'name' => 'google_maps',
'checked' => $this -> settings['google_maps'] == 1 ? true : false
)
);?>
<?= \Html::textarea(
<?= \Shared\Html\Html::textarea(
array(
'label' => 'Mapa - adres',
'name' => 'firm_adress',
@@ -74,7 +74,7 @@ ob_start();
);?>
</div>
<div>
<?= \Html::textarea(
<?= \Shared\Html\Html::textarea(
array(
'label' => 'Dane do przelewu',
'name' => 'shop_bank_account_info',
@@ -84,54 +84,54 @@ ob_start();
'ckeditor' => true
)
);?>
<?= \Html::input( [
<?= \Shared\Html\Html::input( [
'label' => 'Klucz API HotPay',
'name' => 'hotpay_api',
'id' => 'hotpay_api',
'value' => $this -> settings['hotpay_api']
] );?>
<?= \Html::input_switch( [
<?= \Shared\Html\Html::input_switch( [
'label' => 'Tpay.com - tryb sandbox',
'name' => 'tpay_sandbox',
'checked' => $this -> settings['tpay_sandbox'] == 1 ? true : false
] );?>
<?= \Html::input( [
<?= \Shared\Html\Html::input( [
'label' => 'Tpay.com ID',
'name' => 'tpay_id',
'id' => 'tpay_id',
'value' => $this -> settings['tpay_id']
] );?>
<?= \Html::input( [
<?= \Shared\Html\Html::input( [
'label' => 'Tpay.com - kod bezpieczeństwa',
'name' => 'tpay_security_code',
'id' => 'tpay_security_code',
'value' => $this -> settings['tpay_security_code']
] );?>
<?= \Html::input_switch( [
<?= \Shared\Html\Html::input_switch( [
'label' => 'Przelewy24.pl - tryb sandbox',
'name' => 'przelewy24_sandbox',
'checked' => $this -> settings['przelewy24_sandbox'] == 1 ? true : false
] );?>
<?= \Html::input( [
<?= \Shared\Html\Html::input( [
'label' => 'Przelewy24.pl - merchant ID',
'name' => 'przelewy24_merchant_id',
'id' => 'przelewy24_merchant_id',
'value' => $this -> settings['przelewy24_merchant_id']
] );?>
<?= \Html::input( [
<?= \Shared\Html\Html::input( [
'label' => 'Przelewy24.pl - klucz CRC',
'name' => 'przelewy24_crc_key',
'id' => 'przelewy24_crc_key',
'value' => $this -> settings['przelewy24_crc_key']
] );?>
<?= \Html::input( [
<?= \Shared\Html\Html::input( [
'label' => 'Darmowa dostawa od',
'class' => 'number-format',
'name' => 'free_delivery',
'id' => 'free_delivery',
'value' => $this -> settings['free_delivery']
] );?>
<?= \Html::input( [
<?= \Shared\Html\Html::input( [
'label' => 'Orlen Paczka map token',
'name' => 'orlen_paczka_map_token',
'id' => 'orlen_paczka_map_token',
@@ -161,7 +161,7 @@ ob_start();
?>
<? if ( $lg['status'] ):?>
<div>
<?= \Html::input(
<?= \Shared\Html\Html::input(
array(
'label' => 'Komunikat gdy stan magazynowy równy 0',
'name' => 'warehouse_message_zero[' . $lg['id'] . ']',
@@ -170,7 +170,7 @@ ob_start();
'inline' => true
)
);?>
<?= \Html::input(
<?= \Shared\Html\Html::input(
array(
'label' => 'Komunikat gdy stan magazynowy większy niż 0',
'name' => 'warehouse_message_nonzero[' . $lg['id'] . ']',
@@ -187,14 +187,14 @@ ob_start();
</div>
</div>
<div>
<?= \Html::input_switch(
<?= \Shared\Html\Html::input_switch(
array(
'label' => 'Formularz kontaktowy',
'name' => 'contact_form',
'checked' => $this -> settings['contact_form'] == 1 ? true : false
)
);?>
<?= \Html::input(
<?= \Shared\Html\Html::input(
array(
'label' => 'Email kontaktowy',
'name' => 'contact_email',
@@ -202,7 +202,7 @@ ob_start();
'value' => $this -> settings['contact_email']
)
);?>
<?= \Html::input(
<?= \Shared\Html\Html::input(
array(
'label' => 'Email - host',
'name' => 'email_host',
@@ -210,7 +210,7 @@ ob_start();
'value' => $this -> settings['email_host']
)
);?>
<?= \Html::input(
<?= \Shared\Html\Html::input(
array(
'label' => 'Email - port',
'name' => 'email_port',
@@ -218,7 +218,7 @@ ob_start();
'value' => $this -> settings['email_port']
)
);?>
<?= \Html::input(
<?= \Shared\Html\Html::input(
array(
'label' => 'Email - login',
'name' => 'email_login',
@@ -226,7 +226,7 @@ ob_start();
'value' => $this -> settings['email_login']
)
);?>
<?= \Html::input(
<?= \Shared\Html\Html::input(
array(
'label' => 'Email - hasło',
'name' => 'email_password',
@@ -236,7 +236,7 @@ ob_start();
);?>
</div>
<div>
<?= \Html::input(
<?= \Shared\Html\Html::input(
array(
'label' => 'Facebook link',
'name' => 'facebook_link',
@@ -252,7 +252,7 @@ ob_start();
]
);
?>
<?= \Html::textarea(
<?= \Shared\Html\Html::textarea(
array(
'label' => 'Kod statystyk',
'name' => 'statistic_code',
@@ -261,7 +261,7 @@ ob_start();
'rows' => 10
)
);?>
<?= \Html::textarea(
<?= \Shared\Html\Html::textarea(
array(
'label' => 'Własne reguły htacess',
'name' => 'htaccess',
@@ -270,7 +270,7 @@ ob_start();
'rows' => 10
)
);?>
<?= \Html::textarea(
<?= \Shared\Html\Html::textarea(
array(
'label' => 'Własne reguły robots.txt',
'name' => 'robots',
@@ -281,7 +281,7 @@ ob_start();
);?>
</div>
<div>
<?= \Html::input_switch(
<?= \Shared\Html\Html::input_switch(
array(
'label' => 'Aktualizacja',
'name' => 'update',
@@ -296,31 +296,31 @@ ob_start();
]
);
?>
<?= \Html::input_switch(
<?= \Shared\Html\Html::input_switch(
array(
'label' => 'Strona konstrukcyjna',
'name' => 'devel',
'checked' => $this -> settings['devel'] == 1 ? true : false
)
);?>
<?= \Html::input_switch( [
<?= \Shared\Html\Html::input_switch( [
'label' => 'Lazy loading obrazów',
'name' => 'lazy_loading',
'checked' => $this -> settings['lazy_loading'] == 1 ? true : false
] );?>
<?= \Html::input_switch( [
<?= \Shared\Html\Html::input_switch( [
'label' => 'Generowanie obrazków WEBP',
'name' => 'generate_webp',
'checked' => $this -> settings['generate_webp'] == 1 ? true : false
] );?>
<?= \Html::input_switch( [
<?= \Shared\Html\Html::input_switch( [
'label' => 'Infinitescroll',
'name' => 'infinitescroll',
'checked' => $this -> settings['infinitescroll'] == 1 ? true : false
] );?>
<?= \Html::input_switch(
<?= \Shared\Html\Html::input_switch(
array(
'label' => 'Htaccess cache',
'name' => 'htaccess_cache',
@@ -335,14 +335,14 @@ ob_start();
'id' => 'google_tag_manager_id',
'value' => $this -> settings['google_tag_manager_id']
] ); ?>
<?= \Html::textarea( [
<?= \Shared\Html\Html::textarea( [
'label' => 'Własny kod GTM JS (bez tagu script)',
'name' => 'own_gtm_js',
'id' => 'own_gtm_js',
'value' => $this -> settings['own_gtm_js'],
'rows' => 10
] );?>
<?= \Html::textarea( [
<?= \Shared\Html\Html::textarea( [
'label' => 'Własny kod GTM HTML',
'name' => 'own_gtm_html',
'id' => 'own_gtm_html',
@@ -355,17 +355,14 @@ ob_start();
<?
$out = ob_get_clean();
$grid = new \gridEdit;
$grid -> id = 'settings-edit';
$grid -> gdb_opt = $gdb;
$grid -> include_plugins = true;
$grid -> title = 'Edycja ustawień';
$grid -> actions = [
'save' => [ 'url' => '/admin/settings/save/', 'back_url' => '' ],
];
$grid -> persist_edit = true;
$grid -> external_code = $out;
echo $grid -> draw();
$gridId = 'settings-edit';
$gridTitle = 'Edycja ustawień';
$gridSaveUrl = '/admin/settings/save/';
$gridBackUrl = '';
$gridHidden = [];
$gridContent = $out;
$gridPersist = true;
include __DIR__ . '/../components/grid-edit-replacement.php';
?>
<script>CKEDITOR.dtd.$removeEmpty['span'] = false;</script>
<style type="text/css">#g-edit-cancel, #g-edit-save.btn-system { display: none; }</style>

View File

@@ -40,22 +40,13 @@ ob_start();
<?
$out = ob_get_clean();
$grid = new \gridEdit;
$grid -> id = 'pages-list';
$grid -> gdb_opt = $gdb;
$grid -> include_plugins = true;
$grid -> title = 'Lista kategorii';
$grid -> default_buttons = false;
$grid -> buttons = [
[
'label' => 'Dodaj kategorię',
'url' => '/admin/shop_category/category_edit/',
'icon' => 'fa-plus-circle',
'class' => 'btn-success'
]
];
$grid -> external_code = $out;
echo $grid -> draw();
$gridId = 'pages-list';
$gridTitle = 'Lista kategorii';
$gridSaveUrl = '';
$gridBackUrl = '';
$gridHidden = [];
$gridContent = $out;
$gridPersist = false;
include __DIR__ . '/../components/grid-edit-replacement.php';
?>
<?= \Tpl::view( 'shop-category/categories-list-custom-script' ); ?>

View File

@@ -30,15 +30,14 @@ ob_start();
<?
$out = ob_get_clean();
$grid = new \gridEdit;
$grid -> id = 'pages-list';
$grid -> gdb_opt = $gdb;
$grid -> include_plugins = false;
$grid -> title = 'Lista kategorii';
$grid -> default_buttons = false;
$grid -> external_code = $out;
echo $grid -> draw();
$gridId = 'pages-list';
$gridTitle = 'Lista kategorii';
$gridSaveUrl = '';
$gridBackUrl = '';
$gridHidden = [];
$gridContent = $out;
$gridPersist = false;
include __DIR__ . '/../components/grid-edit-replacement.php';
?>
<style type="text/css">
.mfp-container body.sb-top.sb-top-sm .navbar.navbar-fixed-top + #sidebar_left + #content_wrapper {

View File

@@ -25,7 +25,7 @@ ob_start();
<? if ( is_array( $this -> languages ) ): foreach ( $this -> languages as $lg ):?>
<? if ( $lg['status'] ):?>
<div>
<?= \Html::input(
<?= \Shared\Html\Html::input(
array(
'label' => 'Nazwa kategorii',
'name' => 'title[' . $lg['id'] . ']',
@@ -34,7 +34,7 @@ ob_start();
'inline' => true
)
);?>
<?= \Html::textarea(
<?= \Shared\Html\Html::textarea(
array(
'label' => 'Opis kategorii',
'name' => 'text[' . $lg['id'] . ']',
@@ -43,7 +43,7 @@ ob_start();
'inline' => true
)
);?>
<?= \Html::textarea(
<?= \Shared\Html\Html::textarea(
array(
'label' => 'Opis kategorii (rozwinięcie)',
'name' => 'text_hidden[' . $lg['id'] . ']',
@@ -52,7 +52,7 @@ ob_start();
'inline' => true
)
);?>
<?= \Html::textarea( [
<?= \Shared\Html\Html::textarea( [
'label' => 'Dodatkowy tekst (nad produktami)',
'name' => 'additional_text[' . $lg['id'] . ']',
'id' => 'additional_text_' . $lg['id'],
@@ -75,14 +75,14 @@ ob_start();
</div>
</div>
<div style="padding: 15px;">
<?= \Html::input_switch(
<?= \Shared\Html\Html::input_switch(
array(
'label' => 'Aktywna',
'name' => 'status',
'checked' => $this -> category['status'] == 1 or !$this -> category['id'] ? true : false
)
);?>
<?= \Html::select(
<?= \Shared\Html\Html::select(
[
'label' => 'Sortowanie produktĂłw',
'name' => 'sort_type',
@@ -91,7 +91,7 @@ ob_start();
'value' => $this -> category['sort_type']
]
);?>
<?= \Html::input_switch(
<?= \Shared\Html\Html::input_switch(
array(
'label' => 'WyĹwietlić podkategorie',
'name' => 'view_subcategories',
@@ -112,7 +112,7 @@ ob_start();
<? if ( is_array( $this -> languages ) ): foreach ( $this -> languages as $lg ):?>
<? if ( $lg['status'] ):?>
<div>
<?= \Html::input_icon(
<?= \Shared\Html\Html::input_icon(
array(
'label' => 'Link SEO',
'name' => 'seo_link[' . $lg['id'] . ']',
@@ -122,7 +122,7 @@ ob_start();
'icon_js' => 'generate_seo_links( "' . $lg['id'] . '", $( "#title_' . $lg['id'] . '" ).val(), ' . (int)$this -> category['id'] . ' );'
)
);?>
<?= \Html::input(
<?= \Shared\Html\Html::input(
array(
'label' => 'TytuĹ kategorii (h1)',
'name' => 'category_title[' . $lg['id'] . ']',
@@ -130,7 +130,7 @@ ob_start();
'value' => $this -> category['languages' ][ $lg['id'] ]['category_title']
)
);?>
<?= \Html::input(
<?= \Shared\Html\Html::input(
array(
'label' => 'Meta title',
'name' => 'meta_title[' . $lg['id'] . ']',
@@ -138,7 +138,7 @@ ob_start();
'value' => $this -> category['languages'][ $lg['id'] ]['meta_title']
)
);?>
<?= \Html::textarea(
<?= \Shared\Html\Html::textarea(
array(
'label' => 'Meta description',
'name' => 'meta_description[' . $lg['id'] . ']',
@@ -146,7 +146,7 @@ ob_start();
'value' => $this -> category['languages'][ $lg['id'] ]['meta_description']
)
);?>
<?= \Html::textarea(
<?= \Shared\Html\Html::textarea(
array(
'label' => 'Meta keywords',
'name' => 'meta_keywords[' . $lg['id'] . ']',
@@ -154,7 +154,7 @@ ob_start();
'value' => $this -> category['languages'][ $lg['id'] ]['meta_keywords']
)
);?>
<?= \Html::select(
<?= \Shared\Html\Html::select(
array(
'label' => 'Blokuj indeksacjÄ™',
'name' => 'noindex[' . $lg['id'] . ']',
@@ -177,32 +177,17 @@ ob_start();
<?
$out = ob_get_clean();
$grid = new \gridEdit;
$grid -> id = 'category-edit';
$grid -> gdb_opt = $gdb;
$grid -> include_plugins = true;
$grid -> title = 'Edycja kategorii';
$grid -> fields = [
[
'db' => 'id',
'type' => 'hidden',
'value' => $this -> category['id']
],
[
'db' => 'parent_id',
'type' => 'hidden',
'value' => $this -> category['id'] ? $this -> category['parent_id'] : $this -> pid
]
];
$grid -> actions = [
'save' => [ 'url' => '/admin/shop_category/save/', 'back_url' => '/admin/shop_category/view_list/' ],
'cancel' => [ 'url' => '/admin/shop_category/view_list/' ]
];
$grid -> external_code = $out;
$grid -> persist_edit = true;
$grid -> id_param = 'id';
echo $grid -> draw();
$gridId = 'category-edit';
$gridTitle = 'Edycja kategorii';
$gridSaveUrl = '/admin/shop_category/save/';
$gridBackUrl = '/admin/shop_category/view_list/';
$gridHidden = [
['name' => 'id', 'value' => $this -> category['id']],
['name' => 'parent_id', 'value' => $this -> category['id'] ? $this -> category['parent_id'] : $this -> pid]
];
$gridContent = $out;
$gridPersist = true;
include __DIR__ . '/../components/grid-edit-replacement.php';
?>
<?= \Tpl::view( 'shop-category/category-edit-custom-script' ); ?>

View File

@@ -18,20 +18,13 @@ ob_start();
<?
$out = ob_get_clean();
$grid = new \gridEdit;
$grid -> gdb_opt = $gdb;
$grid -> include_plugins = true;
$grid -> default_buttons = false;
$grid -> external_code = $out;
$grid -> title = 'Lista produktów';
$grid -> buttons = [
[
'label' => 'Wstecz',
'url' => '/admin/shop_category/view_list/',
'icon' => 'fa-reply',
'class' => 'btn-dark'
]
];
echo $grid -> draw();
$gridId = 'category-products';
$gridTitle = 'Lista produktów';
$gridSaveUrl = '';
$gridBackUrl = '';
$gridHidden = [];
$gridContent = $out;
$gridPersist = false;
include __DIR__ . '/../components/grid-edit-replacement.php';
?>
<?= \Tpl::view( 'shop-category/category-products-custom-script', [ 'category_id' => $this -> category_id ] ); ?>

View File

@@ -128,7 +128,7 @@ $orderId = (int)($this -> order['id'] ?? 0);
<button class="btn btn-success order_status_change">zmień status</button>
</div>
<div class="col-12 order-history">
<? if ( \S::is_array_fix( $this -> order['statuses'] ) ): foreach ( $this -> order['statuses'] as $status ):?>
<? if ( \Shared\Helpers\Helpers::is_array_fix( $this -> order['statuses'] ) ): foreach ( $this -> order['statuses'] as $status ):?>
<div><b><?= date( 'Y-m-d H:i', strtotime( $status['date'] ) );?></b>: <?= $this -> order_statuses[$status['status_id']];?> <? if ( $status['mail'] ):?><i class="fa fa-envelope-o"></i><? endif;?></div>
<? endforeach; endif;?>
</div>
@@ -185,9 +185,9 @@ $orderId = (int)($this -> order['id'] ?? 0);
</div>
</td>
<td class="tab-center"><?= $product[ 'quantity' ];?></td>
<td class="tab-right"><?= \S::decimal( $product[ 'price_brutto' ] );?> zł</td>
<td class="tab-right"><?= \S::decimal( $product[ 'price_brutto_promo' ] );?> zł</td>
<td class="tab-right"><?= \S::decimal( $product[ 'price_brutto_promo' ] * $product[ 'quantity' ] );?> zł</td>
<td class="tab-right"><?= \Shared\Helpers\Helpers::decimal( $product[ 'price_brutto' ] );?> zł</td>
<td class="tab-right"><?= \Shared\Helpers\Helpers::decimal( $product[ 'price_brutto_promo' ] );?> zł</td>
<td class="tab-right"><?= \Shared\Helpers\Helpers::decimal( $product[ 'price_brutto_promo' ] * $product[ 'quantity' ] );?> zł</td>
</tr>
<? endforeach; endif;?>
</tbody>

View File

@@ -90,7 +90,7 @@ $orderId = (int)($this -> order['id'] ?? 0);
<div class="col-12">
<select name="transport_id" class="form-control" id="transport_id">
<option value="0">--- wybierz formę transportu ---</option>
<? if ( \S::is_array_fix( $this -> transport ) ): foreach ( $this -> transport as $transport_tmp ):?>
<? if ( \Shared\Helpers\Helpers::is_array_fix( $this -> transport ) ): foreach ( $this -> transport as $transport_tmp ):?>
<option value="<?= $transport_tmp['id'];?>" <? if ( $this -> order['transport_id'] == $transport_tmp['id'] ):?>selected="selected"<? endif;?>>
<?= $transport_tmp['name'];?> - <?= $transport_tmp['cost'];?> zł
</option>
@@ -113,7 +113,7 @@ $orderId = (int)($this -> order['id'] ?? 0);
<div class="col-12">
<select name="payment_method_id" class="form-control" id="payment_method_id">
<option value="0">--- wybierz formę płatności ---</option>
<? if ( \S::is_array_fix( $this -> payment_methods ) ): foreach ( $this -> payment_methods as $payment_method ):?>
<? if ( \Shared\Helpers\Helpers::is_array_fix( $this -> payment_methods ) ): foreach ( $this -> payment_methods as $payment_method ):?>
<option value="<?= $payment_method['id'];?>" <? if ( $this -> order['payment_method_id'] == $payment_method['id'] ):?>selected="selected"<? endif;?>>
<?= $payment_method['name'];?>
</option>
@@ -143,7 +143,7 @@ $orderId = (int)($this -> order['id'] ?? 0);
<button class="btn btn-success order_status_change">zmień status</button>
</div>
<div class="col-12 order-history">
<? if ( \S::is_array_fix( $this -> order['statuses'] ) ): foreach ( $this -> order['statuses'] as $status ):?>
<? if ( \Shared\Helpers\Helpers::is_array_fix( $this -> order['statuses'] ) ): foreach ( $this -> order['statuses'] as $status ):?>
<div><b><?= date( 'Y-m-d H:i', strtotime( $status['date'] ) );?></b>: <?= $this -> order_statuses[$status['status_id']];?></div>
<? endforeach; endif;?>
</div>
@@ -217,7 +217,7 @@ $orderId = (int)($this -> order['id'] ?? 0);
</form>
<div class="inpost-map-container">
<a href="#" onclick="$( '.inpost-map-container' ).hide(); return false;" class="inpost-hide"><?= \S::lang( 'zamknij' );?></a>
<a href="#" onclick="$( '.inpost-map-container' ).hide(); return false;" class="inpost-hide"><?= \Shared\Helpers\Helpers::lang( 'zamknij' );?></a>
<div id="inpost-map"></div>
</div>
<link class="footer" rel="stylesheet" type="text/css" href="https://geowidget.easypack24.net/css/easypack.css">

View File

@@ -22,7 +22,7 @@
</tr>
</thead>
<tbody>
<? if ( \S::is_array_fix( $this -> product_permutations ) ): foreach ( $this -> product_permutations as $product ):?>
<? if ( \Shared\Helpers\Helpers::is_array_fix( $this -> product_permutations ) ): foreach ( $this -> product_permutations as $product ):?>
<tr data-combination-id="<?= $product['id'];?>">
<td>
<?

View File

@@ -41,8 +41,8 @@
<div class="menu">
<div class="logo sticky-top">
shop<b>Pro</b>
<span>ver. <?= \S::get_version();?></span><br>
<? if ( $settings[ 'update' ] and \S::get_new_version() > \S::get_version() ):?>
<span>ver. <?= \Shared\Helpers\Helpers::get_version();?></span><br>
<? if ( $settings[ 'update' ] and \Shared\Helpers\Helpers::get_new_version() > \Shared\Helpers\Helpers::get_version() ):?>
<a href="/admin/update/main_view/" class="label label-danger">aktualizacja</a>
<? endif;?>
</div>
@@ -187,8 +187,8 @@
</div>
</div>
<?
if ( $alert = \S::get_session( 'alert' ) ):
\S::alert( false );
if ( $alert = \Shared\Helpers\Helpers::get_session( 'alert' ) ):
\Shared\Helpers\Helpers::alert( false );
?>
<div class="row">
<div class=" col-12">

View File

@@ -32,8 +32,8 @@
Zaloguj się do panelu administratora <b>shopPro</b>.
</div>
<?
if ( $alert = \S::get_session( 'alert' ) ):
\S::alert( false );
if ( $alert = \Shared\Helpers\Helpers::get_session( 'alert' ) ):
\Shared\Helpers\Helpers::alert( false );
?>
<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>

View File

@@ -32,8 +32,8 @@
Zaloguj się do panelu administratora <b>shopPro</b>.
</div>
<?
if ( $alert = \S::get_session( 'alert' ) ):
\S::alert( false );
if ( $alert = \Shared\Helpers\Helpers::get_session( 'alert' ) ):
\Shared\Helpers\Helpers::alert( false );
?>
<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>