first commit

This commit is contained in:
2025-04-30 23:59:49 +02:00
commit 652863d54f
117 changed files with 12276 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
<div class="alogin-page">
<div class="panel-login container">
<form action="/apanel/login_check/" method="POST">
<div class="form-group">
<input type="password" name="admin_password" id="password" class="form-control" placeholder="Hasło">
</div>
<button type="submit" class="btn-t1">zaloguj się</button>
</form>
</div>
</div>

View File

@@ -0,0 +1,55 @@
<?php
$orderArr = $this->orders;
?>
<div id="tickets-orders">
<div class="container">
<div class="tickets-orders">
<h1>Lista zamówień</h1>
<div class="orders-list">
<div style="overflow-x:auto;">
<table class="table table-striped" id="myTable">
<thead>
<tr>
<th scope="col">id</th>
<th scope="col">Imię</th>
<th scope="col">Nazwisko</th>
<th scope="col">Email</th>
<th scope="col">Cena</th>
<th scope="col">Status płatności</th>
<th scope="col">Status biletu</th>
<th scope="col">Data zakupu</th>
<th>Edytuj</th>
</tr>
</thead>
<tbody>
<? foreach ($orderArr as $key => $value) : ?>
<tr>
<td scope="row"><?= $value['id']; ?></td>
<td><?= $value['name']; ?></td>
<td><?= $value['surname']; ?></td>
<td><?= $value['email']; ?></td>
<td><?= $value['order_price']; ?></td>
<td><?= $value['payment_status'] == 1 ? 'Zapłacono': 'Nie zapłacono'; ?></td>
<td><?= $value['used_ticket'] == 1 ? 'Wykorzystany': 'Nie wykorzystany'; ?></td>
<td><?= $value['date_added']; ?></td>
<td class="edit-btn"><a href="/apanel/order_data/id=<?= $value['id']; ?>"><i
class="fa-regular fa-pen-to-square"></i></a></td>
</tr>
<? endforeach; ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
var table = $('#myTable').DataTable({
"pagingType": "simple",
order: [
[0, 'desc']
],
});
});
</script>

View File

@@ -0,0 +1,49 @@
<?php
$orderData = $this->order_tickets;
?>
<table>
<tr>
<th>
<h3>BILETY</h3>
</th>
<th>
<h3>TERMIN</h3>
</th>
<th>
<h3>CENA</h3>
</th>
<th>
<h3>WARTOŚĆ</h3>
</th>
<th>
<h3>ZMIENIĆ ILOŚĆ</h3>
</th>
<th>
<h3>USUŃ</h3>
</th>
</tr>
<?php foreach ($orderData as $key => $value) : ?>
<tr>
<td><?= $value['name']; ?> ( x <?= $value["quantity"]; ?>)</td>
<td><?= $value['date_visit'] ? date('d/m/Y', strtotime($value['date_visit'])) : ''; ?></td>
<td><?= $value['price']; ?> zł</td>
<td><?= $value['price'] * $value["quantity"]; ?> zł</td>
<td>
<? if ( $value['product_id'] != 0 and $value['product_id'] != 999999 ) : ?>
<button class="btn_t1 add" ticket_id="<?= $key; ?>">
<i class="fa-solid fa-plus"></i>
</button>
<button class="btn_t1 subtract" ticket_id="<?= $key; ?>">
<i class="fa-solid fa-minus"></i>
</button>
<? endif;?>
</td>
<td>
<button class="btn_t1 delete" ticket_id="<?= $key; ?>">
<i class="fa-solid fa-trash-can"></i>
</button>
</td>
</tr>
<?php endforeach; ?>
</table>

View File

@@ -0,0 +1,346 @@
<?php
$ticketsData = $this->order_tickets;
$orderInfo = $this->order_info;
?>
<div id="order-data">
<div class="order-data">
<div class="container">
<div class="mini-nav-menu">
<a href="/apanel/main_view/" class="btn-t1">Lista zamówień</a>
</div>
<div class="box_01">
<input type="hidden" name="order_id" id="order_id" value="<?= $ticketsData[0]['order_id'] ?>">
<div class="box-tickets-list">
<table>
<tr>
<th>
<h3>BILETY</h3>
</th>
<th>
<h3>TERMIN</h3>
</th>
<th>
<h3>CENA</h3>
</th>
<th>
<h3>WARTOŚĆ</h3>
</th>
<th>
<h3>ZMIENIĆ ILOŚĆ</h3>
</th>
<th>
<h3>USUŃ</h3>
</th>
</tr>
<?php foreach ($ticketsData as $key => $value) : ?>
<? $ticketsPrice += $value['price'] * $value['quantity'];?>
<tr>
<td><?= $value['name']; ?> ( x <?= $value["quantity"]; ?>)</td>
<td><?= $value['date_visit'] ? date('d/m/Y', strtotime($value['date_visit'])) : ''; ?></td>
<td><?= $value['price']; ?> zł</td>
<td><?= $value['price'] * $value["quantity"]; ?> zł</td>
<td>
<? if ( $value['product_id'] != 0 and $value['product_id'] != 999999 ) : ?>
<button class="btn_t1 add" ticket_id="<?= $key; ?>">
<i class="fa-solid fa-plus"></i>
</button>
<button class="btn_t1 subtract" ticket_id="<?= $key; ?>">
<i class="fa-solid fa-minus"></i>
</button>
<? endif;?>
</td>
<td>
<button class="btn_t1 delete" ticket_id="<?= $key; ?>">
<i class="fa-solid fa-trash-can"></i>
</button>
</td>
</tr>
<?php endforeach; ?>
</table>
</div>
</div>
<div class="box_02">
<div class="row">
<div class="order-detale-info col-lg-8 col-md-8 col-xs-12">
<div class="order-detale-info__wrapper">
<h2>SZCZEGÓŁY</h2>
<div class="form-group row mb-lg-2">
<label for="name" class="col-lg-3 col-form-label">Status płatności</label>
<div class="col-lg-9">
<select name="payment_status" class="form-control">
<option value="0" <?= $orderInfo[0]['payment_status'] == 0 ? 'selected' : ''; ?>>Nie zapłacono</option>
<option value="1" <?= $orderInfo[0]['payment_status'] == 1 ? 'selected' : ''; ?>>Zapłacono</option>
</select>
</div>
</div>
<div class="form-group row mb-lg-2">
<label for="name" class="col-lg-3 col-form-label">Imię</label>
<div class="col-lg-9">
<input type="text" class="form-control" id="name" name="name" value="<?= $orderInfo[0]['name']; ?>"
disabled>
</div>
</div>
<div class="form-group row mb-lg-2">
<label for="surname" class="col-lg-3 col-form-label">Nazwisko</label>
<div class="col-lg-9">
<input type="text" class="form-control" id="surname" name="surname"
value="<?= $orderInfo[0]['surname']; ?>" disabled>
</div>
</div>
<div class="form-group row mb-lg-2">
<label for="email" class="col-lg-3 col-form-label">Email</label>
<div class="col-lg-9">
<input type="email" class="form-control" id="email" name="email" value="<?= $orderInfo[0]['email']; ?>"
disabled>
</div>
</div>
<div class="form-group row mb-lg-2">
<label for="zip_code" class="col-lg-3 col-form-label">Kod pocztowy</label>
<div class="col-lg-9">
<input type="text" class="form-control" id="zip_code" name="zip_code"
value="<?= $orderInfo[0]['zip_code']; ?>" disabled>
</div>
</div>
<div class="form-group row mb-lg-2">
<label for="city" class="col-lg-3 col-form-label">Miejscowość</label>
<div class="col-lg-9">
<input type="text" class="form-control" id="city" name="city" value="<?= $orderInfo[0]['city']; ?>"
disabled>
</div>
</div>
<div class="form-group row mb-lg-2">
<label for="street" class="col-lg-3 col-form-label">Ulica</label>
<div class="col-lg-9">
<input type="text" class="form-control" id="street" name="street" value="<?= $orderInfo[0]['street']; ?>"
disabled>
</div>
</div>
<? if(!empty($orderInfo[0]['gift_address'])) : ?>
<div class="form-group row mb-lg-2" id="gift_address_box">
<label for="gift_address" class="col-lg-3 col-form-label">Dane do wysyłki biletu prezentowego</label>
<div class="col-lg-9">
<textarea rows="5" type="text" class="form-control" id="gift_address" name="gift_address" disabled><?= $orderInfo[0]['gift_address']; ?></textarea>
</div>
</div>
<? endif; ?>
<div class="form-group row mb-lg-2">
<label for="date-added-ticket" class="col-lg-3 col-form-label">Data dodanie</label>
<div class="col-lg-9">
<input type="text" class="form-control" id="date-added-ticket" name="date-added-ticket"
value="<?= $orderInfo[0]['date_added']; ?>" disabled>
</div>
</div>
<div class="form-group row mb-lg-2">
<label for="date-pay-ticket" class="col-lg-3 col-form-label">Data płatności</label>
<div class="col-lg-9">
<input type="text" class="form-control" id="date-pay-ticket" name="date-pay-ticket"
value="<?= $orderInfo[0]['payment_date']; ?>" disabled>
</div>
</div>
<div class="form-group row mb-lg-2">
<label for="pay-status" class="col-lg-3 col-form-label">Status płatności</label>
<div class="col-lg-9">
<input type="text" class="form-control" id="pay-status" name="pay-status"
value="<?= $orderInfo[0]['payment_status'] ? 'Zapłacono' : 'Nie zapłacono'; ?>" disabled>
</div>
</div>
<div class="form-group row mb-lg-2">
<label for="ticket-status" class="col-lg-3 col-form-label">Status biletu</label>
<div class="col-lg-9">
<input type="text" class="form-control" id="ticket-status" name="ticket-status"
value="<?= $orderInfo[0]['used_ticket'] ? 'Wykorzystany' : 'Nie wykorzystany'; ?>" disabled>
</div>
</div>
<? if($orderInfo[0]['used_ticket_date']) : ?>
<div class="form-group row mb-lg-2">
<label for="ticket-use-date" class="col-lg-3 col-form-label">Data wykorzystania</label>
<div class="col-lg-9">
<input type="text" class="form-control" id="ticket-use-date" name="ticket-use-date"
value="<?= $orderInfo[0]['used_ticket_date']; ?>" disabled>
</div>
</div>
<? endif; ?>
<!-- <pre>
<?= var_dump($orderInfo[0]['vat']); ?>
</pre> -->
<div class="form-group row mb-lg-2">
<label for="date-pay-ticket" class="col-lg-3 col-form-label"><?= $orderInfo[0]['vat'] ? "Faktura" : 'Paragon'; ?></label>
<div class="col-lg-9">
<a href="<?= $orderInfo[0]['invoice_url']; ?>"><?= $orderInfo[0]['invoice_url']; ?></a>
</div>
</div>
<?php if($orderInfo[0]['vat']) : ?>
<div class="form-group row mb-lg-2">
<label for="company_name" class="col-lg-3 col-form-label">Nazwa firmy</label>
<div class="col-lg-9">
<input type="text" class="form-control" id="company_name" name="company_name" disabled value="<?= $orderInfo[0]['company_name']; ?>">
</div>
</div>
<div class="form-group row mb-lg-2">
<label for="nip" class="col-lg-3 col-form-label">NIP</label>
<div class="col-lg-9">
<input type="text" class="form-control" id="nip" name="nip" disabled value="<?= $orderInfo[0]['nip']; ?>">
</div>
</div>
<?php endif; ?>
</div>
</div>
<div class="order-summary col-lg-4 col-md-4 col-xs-12">
<div class="order-summary__wrapper">
<h2>Suma:</h2>
<p id="order-general-price"><?= $ticketsPrice; ?> zł</p>
<hr>
<div class="flex flex-buttons-group">
<button class="btn-t1 btn-save-new-list">Zapisz</button>
<a href="#" class="btn btn-danger btn-delete-order" data-id="<?= $orderInfo[0]['id']; ?>">Usuń zamówienie</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function() {
// add
$('body').on('click', '.add', function() {
var ticket_id = $(this).attr('ticket_id');
$.ajax({
type: 'POST',
cache: false,
url: '/apanel/ticket_inc/',
data: {
ticket_id: ticket_id,
},
success: function(data) {
response = jQuery.parseJSON(data);
$('.box_01 .box-tickets-list').html(response.basket_form);
$('.box_02 .order-summary').html(response.order_summ);
$('.btn-save-new-list').attr('disabled', false)
}
});
});
// subtract
$('body').on('click', '.subtract', function() {
var ticket_id = $(this).attr('ticket_id');
$.ajax({
type: 'POST',
cache: false,
url: '/apanel/ticket_dec/',
data: {
ticket_id: ticket_id,
},
success: function(data) {
response = jQuery.parseJSON(data);
$('.box_01 .box-tickets-list').html(response.basket_form);
$('.box_02 .order-summary').html(response.order_summ);
$('.btn-save-new-list').attr('disabled', false)
}
});
});
//remove
$('body').on('click', '.delete', function() {
var ticket_id = $(this).attr('ticket_id');
$.ajax({
type: 'POST',
cache: false,
url: '/apanel/ticket_rem/',
data: {
ticket_id: ticket_id,
},
success: function(data) {
response = jQuery.parseJSON(data);
$('.box_01 .box-tickets-list').html(response.basket_form);
$('.box_02 .order-summary').html(response.order_summ);
$('.btn-save-new-list').attr('disabled', false)
}
});
});
$( 'body' ).on( 'click', '.btn-delete-order', function(e)
{
e.preventDefault();
var order_id = $(this).attr( 'data-id' );
$.alert({
title: 'Pytanie',
content: 'Na pewno chcesz usunąć wybrane zamówienie?',
type: 'orange',
closeIcon: true,
closeIconClass: 'fa fa-times',
typeAnimated: true,
animation: 'opacity',
columnClass: 'col-12 col-lg-10',
theme: 'modern',
icon: 'fa fa-question',
buttons: {
confirm: {
text: 'Tak',
btnClass: 'btn-success',
keys: ['enter'],
action: function() {
document.location.href = '/apanel/order_delete/order_id=' + order_id;
}
},
cancel: {
text: 'Nie',
btnClass: 'btn-dark',
action: function() {}
}
}
});
return false;
})
//save
$('body').on('click', '.btn-save-new-list', function() {
$.ajax({
type: 'POST',
cache: false,
url: '/apanel/ticket_save/',
data: {
order_id: $('#order_id').val(),
payment_status: $('select[name="payment_status"]').val()
},
beforeSend: function() {
$('.btn-save-new-list').attr('disabled', true)
},
complete: function(data) {
$.alert({
icon: 'fa-regular fa-face-smile-beam',
title: 'Zmiany zapisano',
content: '',
typeAnimated: true,
animation: 'scale',
closeAnimation: 'scale',
autoClose: 'confirm|10000',
bgOpacity: '0.5',
type: 'green',
theme: 'modern',
columnClass: 'col-md-6 col-md-offset-3',
buttons: {
confirm: {
text: 'Zamknij',
btnClass: 'btn-green btn-alert',
keys: ['enter'],
action: function() {}
}
}
});
}
});
})
});
</script>

View File

@@ -0,0 +1,16 @@
<div class="order-summary__wrapper">
<h2>Suma:</h2>
<?php
$finalPrice = 0;
foreach (($this->order_tickets) as $data => $value)
{
$finalPrice += $value['price'] * $value['quantity'];
}
?>
<p id="order-general-price"><?= $finalPrice; ?> zł</p>
<hr>
<div class="flex flex-buttons-group">
<button class="btn-t1 btn-save-new-list">Zapisz</button>
<a href="#" class="btn btn-danger btn-delete-order" data-id="<?= $this -> order_id; ?>">Usuń zamówienie</a>
</div>
</div>

View File

@@ -0,0 +1,10 @@
<div class="lds-roller">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>

View File

@@ -0,0 +1,97 @@
<?
$grid = new \gridEdit;
$grid -> id = 'cron';
$grid -> include_plugins = true;
$grid -> title = 'Cron';
$grid -> default_buttons = false;
$grid -> external_code = '<div class="countdown callback"></div><div id="cron-container"></div>';
echo $grid -> draw();
?>
<script type="text/javascript" src="/libraries/countdown/jquery.countdown.js"></script>
<script type="text/javascript">
var delay = 1;
$( document ).ready( function()
{
$( '#content_wrapper' ).css( 'margin', '0px' );
$( '.countdown.callback' ).countdown(
{
date: +(new Date) + 1000,
render: function(data)
{
$( this.el ).text( this.leadingZeros( data.sec, 2 ) + " sek" );
},
onEnd: function()
{
$( this.el ).addClass( 'ended' );
cron();
}
}).stop();
});
function cron()
{
$( '.msg:gt(48)' ).remove();
$.ajax(
{
type: 'POST',
cache: false,
url: '/cron.php',
timeout: ( 30 * 1000 ),
data:
{
cron: 'true'
},
beforeSend: function()
{
jQuery( '#cron-container' ).css( 'opacity', '0.8' );
},
success: function( data )
{
response = jQuery.parseJSON( data );
jQuery( '#cron-container' ).css( 'opacity', '1' );
if ( response.status === 'empty' )
{
delay++;
if ( delay > 60 )
delay = 60;
$( '.countdown.callback' ).removeClass('ended').data('countdown').update( +( new Date ) + delay * 1000 ).start();
if ( typeof value === "undefined" )
$( '#cron-container' ).prepend( '<div class="msg">W tej chwili nie ma nic do wykonania.</div>' );
else
$( '#cron-container' ).prepend( '<div class="msg">' + response.msg + '</div>' );
}
else
{
delay = 1;
$( '#cron-container' ).prepend( '<div class="msg">' + response.msg + '</div>' );
$( '.countdown.callback' ).removeClass('ended').data('countdown').update( +( new Date ) + 1 ).start();
}
},
error: function(data)
{
delay++;
if ( delay > 120 )
delay = 120;
$( '#cron-container' ).prepend( '<div class="msg">Błąd podczas połączenia.</div>' );
$( '.countdown.callback' ).removeClass('ended').data('countdown').update( +( new Date ) + delay * 1000 ).start();
},
statusCode:
{
500: function() {
delay++;
if ( delay > 120 )
delay = 120;
$( '#cron-container' ).prepend( '<div class="msg">Błąd podczas połączenia.</div>' );
$( '.countdown.callback' ).removeClass('ended').data('countdown').update( +( new Date ) + delay * 1000 ).start();
}
}
});
}
</script>

37
templates/html/button.php Normal file
View File

@@ -0,0 +1,37 @@
<?
if ( $this -> params['type'] == 'submit' )
$out .= '<button ';
else
$out = '<a ';
$out .= 'class="btn ' . $this -> params['class'] . '" ';
if ( $this -> params['style'] )
$out .= 'style="' . $this -> params['style'] . '" ';
if ( $this -> params['js'] )
$out .= 'onclick="' . htmlspecialchars( $this -> params['js'] ) . '" ';
if ( $this -> params['url'] )
$out .= 'href="' . htmlspecialchars( $this -> params['url'] ) . '" ';
if ( $this -> params['id'] )
$out .= 'id="' . $this -> params['id'] . '" ';
if ( $this -> params['title'] )
$out .= 'title="' . htmlspecialchars( $this -> params['title'] ) . '" ';
if ( $this -> params['type'] == 'submit' )
$out .= 'type="submit" ';
$out .= '>';
if ( $this -> params['icon'] )
$out .= '<i class="fa ' . $this -> params['icon'] . ' mr5"></i>';
$out .= $this -> params['text'];
if ( $this -> params['type'] == 'submit' )
$out .= '</button';
else
$out .= '</a>';
echo $out;

View File

@@ -0,0 +1,8 @@
<div class="form-group">
<label class="col-lg-4 control-label"><?= $this -> params['label'];?>:</label>
<div class="col-lg-8">
<p class="form-control-static" id="<?= $this -> params['id'];?>">
<?= $this -> params['text'];?>
</p>
</div>
</div>

View File

@@ -0,0 +1,71 @@
<?
if ( $this -> params['label'] )
{
$out .= '<div class="form-group row">';
$out .= '<label class="';
if ( !$this -> params['inline'] )
$out .= 'col-md-12 text-left ';
else
$out .= 'col-md-3 ';
$out .= 'col-form-label">' . $this -> params['label'] . ':</label>';
$out .= '<div class="';
if ( !$this -> params['inline'] )
$out .= 'col-md-12';
else
$out .= 'col-md-9';
$out .= '">';
}
$out .= '<div class="input-group">';
$out .= '<input ';
$out .= 'type="' . $this -> params['type'] . '" ';
if ( $this -> params['id'] )
$out .= 'id="' . $this -> params['id'] . '" ';
else
$out .= 'id="' . $this -> params['name'] . '" ';
if ( $this -> params['class'] or $this -> params['label'] )
{
if ( $this -> params['label'] )
$out .= 'class="' . $this -> params['class'] . ' form-control" ';
else if ( $this -> params['class'] )
$out .= 'class="' . $this -> params['class'] . '" ';
}
$out .= 'name="' . $this -> params['name'] . '" ';
$out .= 'value="' . $this -> secureHTML( $this -> params['value'] ) . '" ';
if ( $this -> params['style'] )
$out .= 'style="' . $this -> params['style'] . '" ';
if ( $this -> params['readonly'] )
$out .= 'readonly="readonly" ';
if ( $this -> params['required'] )
$out .= 'required ';
if ( $this -> params['autocomplete'] == 'off' )
$out .= 'autocomplete="off" ';
$out .= ' />';
$out .= '<span class="input-group-addon ';
if ( $this -> params['icon_js'] )
$out .= 'pointer ';
$out .= '"';
if ( $this -> params['icon_js'] )
$out .= 'onclick="' . htmlspecialchars( $this -> params['icon_js'] ) . '" ';
$out .= '>';
$out .= $this -> params['icon_content'];
$out .= '</span>';
$out .= '</div>';
if ( $this -> params['label'] )
{
$out .= '</div>';
$out .= '</div>';
}
echo $out;

View File

@@ -0,0 +1,36 @@
<?
if ( $this -> params['label'] )
{
$out .= '<div class="form-group row">';
$out .= '<label class="col-md-3 col-form-label">' . $this -> params['label'] . ':</label>';
$out .= '<div class="col-md-9">';
}
$out .= '<div class="switch switch-primary round switch-inline">';
$out .= '<input ';
if ( $this -> params['id'] )
$out .= 'id="' . $this -> params['id'] . '" ';
else
$out .= 'id="' . $this -> params['name'] . '" ';
$out .= 'name="' . $this -> params['name'] . '" type="checkbox"';
if ( $this -> params['checked'] )
$out .= 'checked="checked" ';
$out .= '>';
$out .= '<label for="';
if ( $this -> params['id'] )
$out .= $this -> params['id'];
else
$out .= $this -> params['name'];
$out .= '"></label>';
$out .= '</div>';
if ( $this -> params['label'] )
{
$out .= '</div>';
$out .= '</div>';
}
echo $out;

59
templates/html/input.php Normal file
View File

@@ -0,0 +1,59 @@
<?
if ( $this -> params['label'] )
{
$out .= '<div class="form-group row">';
$out .= '<label class="';
if ( !$this -> params['inline'] )
$out .= 'col-md-12 text-left ';
else
$out .= 'col-md-3 ';
$out .= 'col-form-label">' . $this -> params['label'] . ':</label>';
$out .= '<div class="';
if ( !$this -> params['inline'] )
$out .= 'col-md-12';
else
$out .= 'col-md-9';
$out .= '">';
}
$out .= '<input ';
$out .= 'type="' . $this -> params['type'] . '" ';
if ( $this -> params['id'] )
$out .= 'id="' . $this -> params['id'] . '" ';
if ( $this -> params['class'] or $this -> params['label'] )
{
if ( $this -> params['label'] )
$out .= 'class="' . $this -> params['class'] . ' form-control" ';
else if ( $this -> params['class'] )
$out .= 'class="' . $this -> params['class'] . '" ';
}
$out .= 'name="' . $this -> params['name'] . '" ';
$out .= 'value="' . $this -> secureHTML( $this -> params['value'] ) . '" ';
if ( $this -> params['style'] )
$out .= 'style="' . $this -> params['style'] . '" ';
if ( $this -> params['readonly'] )
$out .= 'readonly="readonly" ';
if ( $this -> params['required'] )
$out .= 'required ';
if ( $this -> params['autocomplete'] == 'off' )
$out .= 'autocomplete="off" ';
if ( $this -> params['placeholder'] )
$out .= 'placeholder="' . $this -> params['placeholder'] . '" ';
$out .= ' />';
if ( $this -> params['label'] )
{
$out .= '</div>';
$out .= '</div>';
}
echo $out;

8
templates/html/panel.php Normal file
View File

@@ -0,0 +1,8 @@
<div class="panel <?= $this -> params['class'];?>">
<div class="panel-heading">
<span class="panel-title"><?= $this -> params['title'];?></span>
</div>
<div class="panel-body">
<?= $this -> params['content'];?>
</div>
</div>

56
templates/html/select.php Normal file
View File

@@ -0,0 +1,56 @@
<?
if ( $this -> params['label'] )
{
$out .= '<div class="form-group row';
if ( $this -> params['inline'] )
$out .= 'pl10 pr10';
$out .= '">';
$out .= '<label class="';
if ( !$this -> params['inline'] )
$out .= 'col-md-3 ';
if ( $this -> params['inline'] )
$out .= 'mb5 ';
$out .= 'col-form-label">' . $this -> params['label'] . ':</label>';
$out .= '<div class="';
if ( !$this -> params['inline'] )
$out .= 'col-md-9';
$out .= '">';
}
$out .= '<select ';
if ( $this -> params['id'] )
$out .= 'id="' . $this -> params['id'] . '" ';
if ( $this -> params['class'] or $this -> params['label'] )
{
if ( $this -> params['label'] )
$out .= 'class="' . $this -> params['class'] . ' form-control" ';
else if ( $this -> params['class'] )
$out .= 'class="' . $this -> params['class'] . '" ';
}
$out .= 'name="' . $this -> params['name'] . '" ';
if ( $this -> params['style'] )
$out .= 'style="' . $this -> params['style'] . '" ';
$out .= '>';
if ( $this -> params['empty'] )
$out .= '<option value="">--- ' . mb_strtolower( $this -> params['label'], 'UTF-8' ) . ' ---</option>';
if ( is_array( $this -> params['values'] ) ) foreach ( $this -> params['values'] as $key => $val )
{
$out .= '<option value="' . $key . '"'; if ( $key == $this -> params['value'] ) $out .= 'selected="selected"'; $out .='>' . $val . '</option>';
}
$out .= '</select>';
if ( $this -> params['label'] )
{
$out .= '</div>';
$out .= '</div>';
}
echo $out;

View File

@@ -0,0 +1,49 @@
<?
if ( $this -> params['label'] )
{
$out .= '<div class="form-group row';
if ( $this -> params['inline'] )
$out .= 'pl10 pr10';
$out .= '">';
$out .= '<label class="';
if ( !$this -> params['inline'] )
$out .= 'col-md-3 ';
if ( $this -> params['inline'] )
$out .= 'mb5 ';
$out .= 'col-form-label">' . $this -> params['label'] . ':</label>';
$out .= '<div class="';
if ( !$this -> params['inline'] )
$out .= 'col-md-9';
$out .= '">';
}
$out .= '<textarea ';
if ( $this -> params['id'] )
$out .= 'id="' . $this -> params['id'] . '" ';
if ( $this -> params['class'] or $this -> params['label'] )
{
if ( $this -> params['label'] )
$out .= 'class="' . $this -> params['class'] . ' form-control" ';
else if ( $this -> params['class'] )
$out .= 'class="' . $this -> params['class'] . '" ';
}
$out .= 'name="' . $this -> params['name'] . '" ';
if ( $this -> params['style'] )
$out .= 'style="' . $this -> params['style'] . '" ';
if ( $this -> params['placeholder'] )
$out .= 'placeholder="' . $this -> params['placeholder'] . '" ';
$out .= ' rows="' . $this -> params['rows'] . '">' . $this -> secureHTML( $this -> params['value'] ) . '</textarea>';
if ( $this -> params['label'] )
{
$out .= '</div>';
$out .= '</div>';
}
echo $out;

View File

@@ -0,0 +1,63 @@
<!DOCTYPE html>
<html lang="pl">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>crmPro</title>
<meta name="keywords" content="">
<meta name="description" content="">
<meta name="robots" content="all">
<link
href="https://fonts.googleapis.com/css?family=Roboto:100,100i,300,300i,400,400i,500,500i,700,700i,900,900i&amp;subset=latin-ext"
rel="stylesheet">
<link rel="stylesheet" type="text/css" href="/libraries/bootstrap-4.1.3/css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="/libraries/font-awesome-6.1.1/css/all.min.css">
<link rel="stylesheet" type="text/css" href="/libraries/icheck-1.0.2/skins/square/aero.css">
<link rel="stylesheet" type="text/css" href="/libraries/jquery-confirm/jquery-confirm.min.css">
<link rel="stylesheet" type="text/css" href="/libraries/datepicker/css/datepicker.min.css">
<link rel="stylesheet" type="text/css" href="/layout/style-css/style.css">
<script type="text/javascript" src="/libraries/jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="/libraries/bootstrap-4.1.3/js/bootstrap.js"></script>
<script type="text/javascript" src="/libraries/icheck-1.0.2/icheck.min.js"></script>
<script type="text/javascript" src="/libraries/jquery-confirm/jquery-confirm.min.js"></script>
<script type="text/javascript" src="/libraries/datepicker/js/datepicker.min.js"></script>
<script type="text/javascript" src="/libraries/datepicker/js/i18n/datepicker.pl.js"></script>
<script type="text/javascript" src="/libraries/functions.js"></script>
</head>
<body class="logged">
<div id="top">
<div class="container-fluid">
<div class="row">
<div class="col-12 col-sm-6">
<a href="/" id="logo">search<span>Pro</span></a>
</div>
</div>
</div>
</div>
<div id="main-menu">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<ul>
<li>
<a href="#">Kontakt</a>
</li>
</ul>
</div>
</div>
</div>
</div>
<div id="main">
<div class="container-fluid">
<? if ( $this -> alert ):?>
<div class="alert"><?= $this -> alert;?></div>
<? endif;?>
<?= $this -> content;?>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,132 @@
<!DOCTYPE html>
<html lang="pl">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Bilety online - brzezovka.pl</title>
<meta name="keywords" content="">
<meta name="description" content="">
<meta name="robots" content="all">
<link
href="https://fonts.googleapis.com/css?family=Roboto:100,100i,300,300i,400,400i,500,500i,700,700i,900,900i&amp;subset=latin-ext"
rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="/libraries/font-awesome-6.1.1/css/all.min.css">
<link rel="stylesheet" type="text/css" href="/libraries/icheck-1.0.2/skins/square/aero.css">
<link rel="stylesheet" type="text/css" href="/libraries/jquery-confirm/jquery-confirm.min.css">
<link rel="stylesheet" type="text/css" href="/libraries/datepicker/css/datepicker.min.css">
<link rel="stylesheet" type="text/css" href="/layout/style-css/style.css">
<link rel="stylesheet" type="text/css" href="/libraries/dataTable/jquery.dataTables.min.css">
<script type="text/javascript" src="/libraries/jquery/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js"
integrity="sha384-pprn3073KE6tl6bjs2QrFaJGz5/SUsLqktiwsUTF55Jfv3qYSDhgCecCxMW52nD2" crossorigin="anonymous">
</script>
<script type="text/javascript" src="/libraries/icheck-1.0.2/icheck.min.js"></script>
<script type="text/javascript" src="/libraries/jquery-confirm/jquery-confirm.min.js"></script>
<script type="text/javascript" src="/libraries/datepicker/js/datepicker.min.js"></script>
<script type="text/javascript" src="/libraries/datepicker/js/i18n/datepicker.pl.js"></script>
<script type="text/javascript" src="/libraries/functions.js"></script>
<script type="text/javascript" src="/libraries/qrcode-scanner/html5-qrcode.min.js"></script>
<script type="text/javascript" src="/libraries/dataTable/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/1.12.1/js/dataTables.bootstrap5.min.js"></script>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-TW9WCD9J');</script>
<!-- End Google Tag Manager -->
</head>
<body>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-TW9WCD9J"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<div class="top">
<div class="container">
<?php if (\S::get_session( 'user')) : ?>
<div class="row a_menu">
<div class="col-4">
<a href="/tickets/main_view/" class="logo">
<img src="https://brzezovka.pl/img/logo.png" alt="">
</a>
</div>
<div class="col-8">
<nav id="nav-menu">
<ul>
<li>
<a href="/scanner/scanner_view/">
Skaner
</a>
</li>
<li>
<a href="/apanel/main_view/">
Lista zamówień
</a>
</li>
<li>
<form action="/apanel/unlogin/" method="POST" class="unlogin">
<button type="submit" class="btn-t2">Wylogować się</button>
</form>
</li>
</ul>
</nav>
<div id="menu-hamburger">
<div id="btn-hamburger">
<span></span>
<span></span>
<span></span>
</div>
<!-- <i class="fa-solid fa-bars" id="btn-hamburger"></i> -->
</div>
</div>
</div>
<?php else: ?>
<div class="col-12">
<a href="/tickets/main_view/" class="logo">
<img src="/layout/images/logo-white.png" alt="">
</a>
</div>
<?php endif; ?>
</div>
</div>
<div class="main ">
<?= $this -> content;?>
</div>
<div class="footer">
<div class="footer__top">
<div class="opening-hours">
<a href="https://brzezovka.pl/godziny-otwarcia">Zobacz godziny otwarcia</a><br />
<a href="/tickets/regulamin/">Regulamin</a>
</div>
<div class="logo">
<img src="/layout/images/logo.png" alt="logo">
</div>
<div class="location">
<p class="title">Lokalizacja</p>
<p class="adres">Domatków 36 F, 36-100 Kolbuszowa</p>
<a href="https://www.google.pl/maps/place/Brzez%C3%B3vka+Kompleks+Turystyczny/@50.2187295,21.7485387,17z/data=!3m1!4b1!4m5!3m4!1s0x473d1958eafce313:0x655488625ac5319!8m2!3d50.2182642!4d21.7445448"
class="navigate">Nawiguj do Brzezowki</a>
</div>
</div>
<div class="footer__bottom">
<p>Copyright © 2022 Brzezovka</p>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
$('#menu-hamburger #btn-hamburger').on('click', function() {
$('#nav-menu').toggleClass('active')
$('#menu-hamburger').toggleClass('active')
})
})
</script>
</body>
</html>

View File

@@ -0,0 +1,85 @@
<!DOCTYPE html>
<html lang="pl">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Bilety online - brzezovka.pl</title>
<meta name="keywords" content="">
<meta name="description" content="">
<meta name="robots" content="all">
<link
href="https://fonts.googleapis.com/css?family=Roboto:100,100i,300,300i,400,400i,500,500i,700,700i,900,900i&amp;subset=latin-ext"
rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="/libraries/font-awesome-6.1.1/css/all.min.css">
<link rel="stylesheet" type="text/css" href="/libraries/icheck-1.0.2/skins/square/aero.css">
<link rel="stylesheet" type="text/css" href="/libraries/jquery-confirm/jquery-confirm.min.css">
<link rel="stylesheet" type="text/css" href="/libraries/datepicker/css/datepicker.min.css">
<link rel="stylesheet" type="text/css" href="/layout/style-css/style.css">
<link rel="stylesheet" type="text/css" href="/libraries/dataTable/jquery.dataTables.min.css">
<script type="text/javascript" src="/libraries/jquery/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js"
integrity="sha384-pprn3073KE6tl6bjs2QrFaJGz5/SUsLqktiwsUTF55Jfv3qYSDhgCecCxMW52nD2" crossorigin="anonymous">
</script>
<script type="text/javascript" src="/libraries/icheck-1.0.2/icheck.min.js"></script>
<script type="text/javascript" src="/libraries/jquery-confirm/jquery-confirm.min.js"></script>
<script type="text/javascript" src="/libraries/datepicker/js/datepicker.min.js"></script>
<script type="text/javascript" src="/libraries/datepicker/js/i18n/datepicker.pl.js"></script>
<script type="text/javascript" src="/libraries/functions.js"></script>
<script type="text/javascript" src="/libraries/qrcode-scanner/html5-qrcode.min.js"></script>
<script type="text/javascript" src="/libraries/dataTable/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/1.12.1/js/dataTables.bootstrap5.min.js"></script>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-TW9WCD9J');</script>
<!-- End Google Tag Manager -->
</head>
<body>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-TW9WCD9J"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<div class="top">
<div class="container">
<div class="row">
<div class="col-12">
<a href="/tickets/main_view/" class="logo">
<img src="/layout/images/logo-white.png" alt="">
</a>
</div>
</div>
</div>
</div>
<div class="main ">
</div>
<div class="footer">
<div class="footer__top">
<div class="opening-hours">
<a href="https://brzezovka.pl/godziny-otwarcia">Zobacz godziny otwarcia</a><br />
<a href="/tickets/regulamin/">Regulamin</a>
</div>
<div class="logo">
<img src="/layout/images/logo.png" alt="logo">
</div>
<div class="location">
<p class="title">Lokalizacja</p>
<p class="adres">Domatków 36 F, 36-100 Kolbuszowa</p>
<a href="https://www.google.pl/maps/place/Brzez%C3%B3vka+Kompleks+Turystyczny/@50.2187295,21.7485387,17z/data=!3m1!4b1!4m5!3m4!1s0x473d1958eafce313:0x655488625ac5319!8m2!3d50.2182642!4d21.7445448"
class="navigate">Nawiguj do Brzezowki</a>
</div>
</div>
<div class="footer__bottom">
<p>Copyright © 2022 Brzezovka</p>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,24 @@
<div id="regulamin_box">
<div class="container">
<div class="regulamin_box__wrapper">
<h5>Regulamin biletów prezentowych</h5>
<section class="regulamin__box_1 regulamin__box">
<h5>BILETY NA PREZENT </h5>
<ul>
<li>Bilet na prezent (w wersji papierowej) ważny jest do końca sezonu w którym był wydany lub do daty wskazanej na voucherze.</li>
<li>Bilet obejmuje atrakcje wskazane na voucherze.</li>
<li>Bilet upoważnia do korzystania ze wszystkich atrakcji wskazanego parku bez dodatkowych opłat (nie wliczamy w to gastronomi oraz gier zręcznościowych).</li>
<li>Bilet jest jednorazowy.</li>
<li>Do biletów naliczana jest opłata za wysyłkę.</li>
<li>Biletów prezentowych nie można przenieść na sezon inny niż wskazany na voucherze.</li>
<li>Bilety prezentowe imienne i należy mieć ze sobą dokument potwierdzający tożsamość.</li>
</ul>
</section>
<section class="regulamin__box_2 regulamin__box">
<h5>BILETY PREZENTOWE - IDEALNY PREZENT DLA NAJBLIŻSZYCH, PRACOWNIKÓW, KONTRAHENTÓW, NA KONKURSY I LOTERIE</h5>
<p>Bilet Prezent w ekskluzywnym opakowaniu, to wyjątkowy upominek dla najbliższych. Już teraz można zakupić bilety prezentowe ważne do końca sezonu w którym był wydany lub do daty wskazanej na voucherze. Bilet obejmuje wszystkie atrakcje Parku wskazanego na voucherze.</p>
<p>Zapraszamy Firmy i Instytucje do zakupubiletów w formie biletów prezentowych, wówczas pracownicy mogą odwiedzić Park w dowolnym terminie bez konieczności organizacji wycieczki grupowej.</p>
</section>
</div>
</div>
</div>

View File

@@ -0,0 +1,139 @@
<div id="regulamin_box">
<div class="container">
<div class="regulamin_box__wrapper">
<h5>Regulamin sprzedaży biletów</h5>
<h6>REGULAMIN SPRZEDAŻY BILETÓW PRZEZ ZAŁADKĘ „KUP BILET” NA STRONIE INTERNETOWEJ WWW.BRZEZOVKA.PL</h6>
<section class="regulamin__box_1 regulamin__box">
<h5>§1 Zasady ogólne</h5>
<ul>
<li>Fun&Sun Sp. z o.o. z siedzibą w Kolbuszowej, ul. Zbożowa 7, 36-100 Kolbuszowa, wpisana do rejestru przedsiębiorców Krajowego Rejestru Sądowego pod numerem KRS 0001035236, posiadająca NIP: 8141698219 i REGON: 525271764, działająca pod nazwą KTB BRZEZOVKA [dalej „KTB BRZEZOVKA”],
prowadzi sprzedaż detaliczną biletów [dalej „Bilet”] za pośrednictwem strony
internetowej KTB BRZEZOWKA https://bilety.brzezovka.pl/ [dalej „Strona”] oraz punktów
sprzedażowych [dalej „Punkt”], której zasady reguluje niniejszy regulamin [dalej
„Regulamin”]. Regulamin dotyczy sprzedaży zarówno na imprezy własne jak i na
imprezy organizowane przez podmioty trzecie i w tym zakresie BRZEZOVKA działa
jako pośrednik w imieniu i na rzecz Organizatora.</li>
<li>Przez Bilet rozumiany jest dokument uprawniający do udziału w wydarzeniu [dalej
„Wydarzenie”].</li>
<li>Regulamin jest integralną częścią umowy sprzedaży zawieranej z Klientem.</li>
<li>Ceny podane na Stronie cenami brutto (zawierają podatek VAT).</li>
<li>Przed zakupem Klient zobowiązany jest zapoznać się z regulaminem Wydarzenia na
które wystawiony jest bilet, regulaminem obiektu na którym Wydarzenie się odbywa
oraz niniejszym Regulaminem Sprzedaży. Poprzez zakup biletu uczestnik akceptuje
owe regulaminy.</li>
<li>Termin realizacji biletów upływa z końcem sezonu w którym dokonano zakupu, chyba że zasady danej promocji określają inny termin podany w informacji dołączonej do promocji.</li>
</ul>
</section>
<section class="regulamin__box_2 regulamin__box">
<h5>§2 Zamówienie i płatność</h5>
<ul>
<li>Zamówienia można składać poprzez formularz dostępny na Stronie,</li>
<li>Opłatę za Bilet należy uiścić przez Stronę, za pomocą Przelewy24;</li>
<li>Bilety będą wygenerowane bezpośrednio po zakupie biletu w formie kodu QR.</li>
<li>Za zakupione Bilety można otrzymać fakturę AT.
W przypadku zakupu Biletu przez Stronę, należy zgłosić dane do faktury oraz podać numer zamówienia
wysyłając
wiadomość na adres info@brzezovka.pl. Faktura zostanie wysłana w pliku typu PDF na adres e-mail podany w
profilu Klienta.</li>
<li>Klient zobowiązany jest do zachowania dowodu zakupu Biletu paragonu fiskalnego
lub faktury VAT.</li>
<li>Szczegółowe warunki zakupu przez Stronę:
Warunkiem realizacji zamówienia poprzez Stronę jest podanie wszystkich wymaganych danych pozwalających
na
weryfikację Klienta i odbiorcy Biletu. KTB BRZEZOVKA potwierdza przyjęcie zamówienia za pomocą poczty
email.
<p>- Dla stron wiążące informacje zawarte na Stronie podczas zamawiania Biletu, w szczególności: cena
i
charakterystyka Biletu.</p>
<p>- Informacje znajdujące się na Stronie nie stanowią oferty w rozumieniu Kodeksu Cywilnego. Klient
składając zamówienie składa ofertę zakupu określonego Biletu. Do zawarcia umowy sprzedaży dochodzi w
momencie odnotowania wpłaty za zarezerwowane Bilety zgodnie z ustaloną ceną.</p>
<p>- KTB BRZEZOVKA nie bierze odpowiedzialności za błędnie wpisane przez klienta dane do formularza.</p>
</li>
<li>Zamówienie uważa się za złożone w momencie gdy Klient wybierze rodzaj Biletów, określi ich ilość,
uiści
zapłatę.</li>
<li>Zamówienie zostanie automatycznie anulowane w przypadku jego nieopłacenia:
<p>- w terminie 2 dni od dnia złożenia zamówienia na Stronie, gdy transakcja ma być wykonana za pomocą
systemu przelewy24, a w tym terminie nie będzie pozytywnej autoryzacji płatności.</p>
</li>
</ul>
</section>
<section class="regulamin__box_3 regulamin__box">
<h5>§3 Odbiór biletu</h5>
<ul>
<li>Warunkiem wydania Biletu jest zapłata za Bilet.</li>
<li>Klient zobowiązany jest do sprawdzenia zgodności informacji umieszczonych na Bilecie z danymi
zawartymi
w złożonym przez Klienta zamówieniu.</li>
<li>Bilet zamówiony przez Stronę KTB BRZEZOVKA generuje się bezpośrednio po autoryzacji płatności.</li>
<li>Bilet nieczytelny, zniszczony lub uszkodzony w taki sposób, nie jest możliwe jego odczytanie nie
uprawnia do uczestniczenia w Wydarzeniu i zostanie uznany za nieważny.</li>
<li>Bilety zakupione w Punkcie, Bilety zamówione na Stronie i przesłane Klientowi, Bilety zamówione na
Stronie i odebrane przed Wydarzeniem, nie spersonalizowane.</li>
<li>KTB BRZEZOVKA nie ponosi odpowiedzialności za skutki nieuprawnionego powielenia raz otrzymanego Biletu
domowego przez rezerwującego lub osoby trzecie, którym udostępnił on dane otrzymanego Biletu
elektronicznego w formie kodu QR.</li>
</ul>
</section>
<section class="regulamin__box_4 regulamin__box">
<h5>§4 Odwołanie lub zmiana</h5>
<ul>
<li>Zwroty biletów przyjmowane w wypadku odwołania imprezy oraz w wypadku zmiany programu imprezy,
zmiany
miejsca lub terminu odbycia się imprezy. Organizator każdorazowo ogłasza informację o możliwości i
terminach zwrotu biletów na Stronie.</li>
<li>Podstawą zwrócenia Biletu jest przedstawienie przez Klienta dowodu zakupu towaru (paragon fiskalny lub
faktura VAT).</li>
<li>Zwrotu Biletów dokonujemy poprzez kontakt: e-mail na adres <a
href="mailto:info@brzezowka.pl">info@brzezowka.pl</a>, telefonicznie na numer 781 116 909 lub
osobiście
w Punkcie określonym przez KTB BRZEZOVKA, po uprzednim kontakcie.</li>
<li>KTB BRZEZOVKA informuje, że zgodnie z art. 38 pkt. 12 ustawy z dnia 30 maja 2014 r. o prawach
konsumenta
(DzU 2014, poz.827), Klientowi nie przysługuje prawo od odstąpienia od umowy zawartej na odległość w
trybie określonym w art. 27 ww. ustawy.</li>
</ul>
</section>
<section class="regulamin__box_5 regulamin__box">
<h5>§5 Ochrona danych i własność intelektualna</h5>
<ul>
<li>Składając zamówienie Klient wyraża zgodę na przetwarzanie jego danych osobowych wyłącznie w celu
realizacji zamówienia.</li>
<li>Klient może również wyrazić odrębną zgodę na otrzymywanie od KTB BRZEZOVKA materiałów reklamowo -
promocyjnych, w tym biuletynu handlowego. Taka zgoda może być w każdej chwili cofnięta.</li>
<li>Klient ma prawo wglądu do swoich danych i ich korekty.</li>
<li>Zabrania się wykorzystywania jakichkolwiek materiałów publikowanych na Stronie (w tym zdjęć i opisów
biletów) bez pisemnej zgody właściciela Strony.</li>
</ul>
</section>
<section class="regulamin__box_6 regulamin__box">
<h5>§6 Wejście w życie i zmiany</h5>
<ul>
<li>Regulamin wchodzi w życie z dniem publikacji na Stronie.</li>
<li>KTB BRZEZOWKA zastrzega sobie możliwość zmian w Regulaminie, które wchodzą w życie z dniem ich
publikacji na Stronie.</li>
</ul>
</section>
<section class="regulamin__box_7 regulamin__box">
<h5>§7 Uwagi końcowe</h5>
<ul>
<li>KTB BRZEZOVKA dokłada wszelkich starań, by usługi świadczone w ramach Strony były na najwyższym
poziomie, jednakże nie wyklucza możliwości czasowego zawieszenia dostępności Strony przypadku
konieczności
przeprowadzenia prac konserwacyjnych. Klient winien sygnalizować wszelkie nieprawidłowości w
funkcjonowaniu Strony.</li>
<li>KTB BRZEZOVKA nie ponosi odpowiedzialności za blokowanie przez administratorów serwerów pocztowych
przesyłania wiadomości na adres email wskazany przez Klienta oraz za usuwanie i blokowanie emaili przez
oprogramowanie zainstalowane na komputerze używanym przez Klienta.</li>
<li>Odpowiedzialność za przebieg Wydarzenia na które sprzedawane Bilety ponosi jego organizator.</li>
<li>W sprawach nieuregulowanych w niniejszym Regulaminie zastosowanie będą miały przepisy Kodeksu
Cywilnego.
</li>
<li>W razie sporów z Klientem, sądem właściwym do ich rozpoznawania jest sąd powszechny właściwy na
podstawie obowiązujących przepisów.</li>
</ul>
</section>
</div>
</div>
</div>

View File

@@ -0,0 +1,33 @@
<script>
$( 'body' ).on( 'click', '.article_file_edit', function()
{
var file_name = $( this ).val();
var file_id = $( this ).attr( 'file_id' );
$.ajax({
type: 'POST',
cache: false,
url: '/admin/ajax.php',
data:
{
a: 'article_file_name_change',
file_id: file_id,
file_name: file_name
},
beforeSend: function()
{
$( '#overlay' ).show();
},
success: function( data )
{
$( '#overlay' ).hide();
response = jQuery.parseJSON( data );
if ( response.status !== 'ok' )
create_error( response.msg );
}
});
});
</script>

View File

@@ -0,0 +1,57 @@
<table>
<tr>
<th>
<h3>BILETY</h3>
</th>
<th>
<h3>CENA</h3>
</th>
<th>
<h3>WARTOŚĆ</h3>
</th>
<th>
<h3>ZMIENIĆ ILOŚĆ</h3>
</th>
<th>
<h3>USUŃ</h3>
</th>
</tr>
<?php foreach ($this->cart as $ticket_id => $combinations) : ?>
<?php foreach ($combinations as $key => $value) : ?>
<tr>
<td><?= $this->settings['tickets'][$ticket_id]['name']; ?> (x<?= $value["quantity"]; ?>)</td>
<td><?= $value['ticket_price']; ?> zł</td>
<td><?= $value['ticket_price'] * $value["quantity"]; ?> zł</td>
<td>
<?php if ( $ticket_id != 'gift-price' and $ticket_id != 'ticket-protection' ):?>
<button class="btn_t1 add" ticket_id="<?= $ticket_id; ?>" combination_key="<?= $key; ?>">
<i class="fa-solid fa-plus"></i>
</button>
<button class="btn_t1 subtract" ticket_id="<?= $ticket_id; ?>" combination_key="<?= $key; ?>">
<i class="fa-solid fa-minus"></i>
</button>
<?php endif; ?>
</td>
<td>
<?php if ( $ticket_id != 'gift-price' ):?>
<? if ( $ticket_id == 'ticket-protection' ) : ?>
<a href="/tickets/basket_view/ticket_protection=false" class="btn_t1">
<i class="fa-solid fa-trash-can"></i>
</a>
<? else : ?>
<button class="btn_t1 delete" ticket_id="<?= $ticket_id; ?>" combination_key="<?= $key; ?>">
<i class="fa-solid fa-trash-can"></i>
</button>
<? endif; ?>
<?php endif; ?>
</td>
</tr>
<?php endforeach; ?>
<?php endforeach; ?>
</table>
<div class="basket_protection">
<a href="/tickets/basket_view/ticket_protection=true" class="ticket_protection">Dodaj ochronę kupującego (5 zł / bilet)</a>
<div class="basket_protection__text">
<p>Wszystkie bilety zostaną objęte ochroną kupującego. Pozwoli Ci to na zmianę terminu biletu.</p>
</div>
</div>

View File

@@ -0,0 +1,19 @@
<div class="basket_summary__wrapper">
<h2>Suma:</h2>
<?php
$finalPrice = 0;
foreach ( $this -> cart as $data => $value )
{
foreach ( $value as $key => $val )
{
$price = $val['ticket_price'];
$quantity = $val['quantity'];
$finalPrice += $price * $quantity;
}
}
?>
<p><?= $finalPrice; ?> zł</p>
<button class="buy-btn" type="submit">Płacę</button>
</div>

View File

@@ -0,0 +1,294 @@
<?php if(empty($_SESSION['basket'])){
header ('location: /tickets/main_view/');
exit;
} else {
$basket = \S::get_session('basket');
$giftKeys = array_filter(array_keys($basket), function ($key) {
return strpos($key, "gift-price") !== false;
});
}
?>
<div id="basket_page">
<div class="basket_content">
<div class="container">
<div class="box_01">
<table>
<tr>
<th>
<h3>BILETY</h3>
</th>
<th>
<h3>CENA</h3>
</th>
<th>
<h3>WARTOŚĆ</h3>
</th>
<th>
<h3>ZMIENIĆ ILOŚĆ</h3>
</th>
<th>
<h3>USUŃ</h3>
</th>
</tr>
<?php foreach ($this->cart as $ticket_id => $combinations) : ?>
<?php foreach ($combinations as $key => $value) : ?>
<tr>
<td><?= $this->settings['tickets'][$ticket_id]['name']; ?> (x<?= $value["quantity"]; ?>)</td>
<td><?= $value['ticket_price']; ?> zł</td>
<td><?= $value['ticket_price'] * $value["quantity"]; ?> zł</td>
<td>
<?php if ( $ticket_id != 'gift-price' and $ticket_id != 'ticket-protection' ):?>
<button class="btn_t1 add" ticket_id="<?= $ticket_id; ?>" combination_key="<?= $key; ?>">
<i class="fa-solid fa-plus"></i>
</button>
<button class="btn_t1 subtract" ticket_id="<?= $ticket_id; ?>" combination_key="<?= $key; ?>">
<i class="fa-solid fa-minus"></i>
</button>
<?php endif; ?>
</td>
<td>
<?php if ( $ticket_id != 'gift-price' ):?>
<button class="btn_t1 delete" ticket_id="<?= $ticket_id; ?>" combination_key="<?= $key; ?>">
<i class="fa-solid fa-trash-can"></i>
</button>
<?php endif; ?>
</td>
</tr>
<?php endforeach; ?>
<?php endforeach; ?>
</table>
<div class="basket_protection">
<a href="/tickets/basket_view/ticket_protection=true" class="ticket_protection">Dodaj ochronę kupującego (5 zł / bilet)</a>
<div class="basket_protection__text">
<p>Wszystkie bilety zostaną objęte ochroną kupującego. Pozwoli Ci to na zmianę terminu biletu.</p>
</div>
</div>
</div>
<div class="box_02">
<form action="/tickets/basketFormHandler/" method="POST">
<div class="row">
<div class="col-lg-8 col-md-8 col-xs-12 basket_user_data">
<div class="basket_user_data__wrapper">
<h2>TWOJE DANE</h2>
<div class="form-group row mb-lg-2">
<label for="name" class="col-lg-4 col-form-label">Imię*</label>
<div class="col-lg-8">
<input type="text" class="form-control" id="name" name="name" required>
</div>
</div>
<div class="form-group row mb-lg-2">
<label for="surname" class="col-lg-4 col-form-label">Nazwisko*</label>
<div class="col-lg-8">
<input type="text" class="form-control" id="surname" name="surname" required>
</div>
</div>
<div class="form-group row mb-lg-2">
<label for="email" class="col-lg-4 col-form-label">Email*</label>
<div class="col-lg-8">
<input type="email" class="form-control" id="email" name="email" required>
</div>
</div>
<div class="form-group row mb-lg-2">
<label for="zip_code" class="col-lg-4 col-form-label">Kod pocztowy<span class="form-vat-option">*</span></label>
<div class="col-lg-8">
<input type="text" class="form-control" id="zip_code" name="zip_code">
</div>
</div>
<div class="form-group row mb-lg-2">
<label for="city" class="col-lg-4 col-form-label">Miejscowość<span class="form-vat-option">*</span></label>
<div class="col-lg-8">
<input type="text" class="form-control" id="city" name="city">
</div>
</div>
<div class="form-group row mb-lg-2">
<label for="street" class="col-lg-4 col-form-label">Ulica<span class="form-vat-option">*</span></label>
<div class="col-lg-8">
<input type="text" class="form-control" id="street" name="street">
</div>
</div>
<?php if (!empty($giftKeys)) : ?>
<div class="form-group row mb-lg-2" id="gift_address_box">
<label for="gift_address" class="col-lg-4 col-form-label">Dane do wysyłki biletu prezentowego*</label>
<div class="col-lg-8">
<textarea rows="5" type="text" class="form-control" id="gift_address" name="gift_address" required></textarea>
</div>
</div>
<?php endif; ?>
<div class="form-group row mb-lg-2">
<label for="vat" class="col-lg-4 form-check-label"><strong>Chcę otrzymać fakturę VAT</strong></label>
<div class="col-lg-8">
<input type="checkbox" class="form-check-input" id="vat" name="vat">
</div>
</div>
<div class="form-vat-box">
<div class="form-group row mb-lg-2">
<label for="company_name" class="col-lg-4 col-form-label">Nazwa firmy*</label>
<div class="col-lg-8">
<input type="text" class="form-control" id="company_name" name="company_name">
</div>
</div>
<div class="form-group row mb-lg-2">
<label for="nip" class="col-lg-4 col-form-label">NIP*</label>
<div class="col-lg-8">
<input type="text" class="form-control" id="nip" name="nip">
</div>
</div>
</div>
<div class="form-group">
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="regulamin" required>
<label class="form-check-label" for="regulamin">
*akceptuję postanowienia <a href="/tickets/regulamin/">regulaminu</a>, oraz <a href="/tickets/regulamin_biletow_prezentowych/">regulaminu biletów prezentowych</a>.
</label>
<div class="invalid-feedback">
Musisz wyrazić zgodę przed przesłaniem.
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-md-4 col-xs-12 basket_summary">
<div class="basket_summary__wrapper">
<h2>Suma:</h2>
<?php
$finalPrice = 0;
foreach ( ( $this -> cart ) as $data => $value )
{
foreach ( $value as $key => $val )
{
$price = $val['ticket_price'];
$quantity = $val['quantity'];
$finalPrice += $price * $quantity;
}
}
?>
<p><?= $finalPrice; ?> zł</p>
<button class="buy-btn" type="submit">Płacę</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function() {
// add
$('body').on('click', '.add', function() {
var ticket_id = $(this).attr('ticket_id');
var data_combination_key = $(this).attr('combination_key');
$.ajax({
type: 'POST',
cache: false,
url: '/tickets/ticket_add/',
data: {
ticket_id: ticket_id,
diffdays: data_combination_key,
basket_step_1: true
},
success: function(data) {
response = jQuery.parseJSON(data);
$('.box_01').html(response.basket_form);
$('.box_02 .basket_summary').html(response.basket_summary);
}
});
});
// subtract
$('body').on('click', '.subtract', function() {
var ticket_id = $(this).attr('ticket_id');
var data_combination_key = $(this).attr('combination_key');
$.ajax({
type: 'POST',
cache: false,
url: '/tickets/ticket_subtract/',
data: {
ticket_id: ticket_id,
diffdays: data_combination_key,
basket_step_1: true,
},
success: function(data) {
response = jQuery.parseJSON(data);
$('.box_01').html(response.basket_form);
$('.box_02 .basket_summary').html(response.basket_summary);
giftAddressHandler()
if (response.cart_count <= 0) {
window.location.replace("/tickets/main_view/");
}
}
});
});
//remove
$('body').on('click', '.delete', function() {
var ticket_id = $(this).attr('ticket_id');
var data_combination_key = $(this).attr('combination_key');
$.ajax({
type: 'POST',
cache: false,
url: '/tickets/ticket_remove/',
data: {
ticket_id: ticket_id,
diffdays: data_combination_key,
basket_step_1: true
},
success: function(data) {
response = jQuery.parseJSON(data);
$('.box_01').html(response.basket_form);
$('.box_02 .basket_summary').html(response.basket_summary);
giftAddressHandler()
if (response.cart_count <= 0) {
window.location.replace("/tickets/main_view/");
}
}
});
});
// vat
$('body').on('click', '#vat', function() {
if(this.checked) {
$('.form-vat-box').slideDown()
$('#nip').prop("required", true)
$('#company_name').prop("required", true)
$('#zip_code').prop("required", true)
$('#city').prop("required", true)
$('#street').prop("required", true)
$('.form-vat-option').css("opacity", "1")
} else {
$('.form-vat-box').slideUp()
$('#nip').prop("required", false)
$('#company_name').prop("required", false)
$('#zip_code').prop("required", false)
$('#city').prop("required", false)
$('#street').prop("required", false)
$('.form-vat-option').css("opacity", "0")
}
})
function giftAddressHandler() {
let hasGift = false;
$('.box_01 table tr button[ticket_id]').each(function(index, button) {
const ticketId = $(button).attr('ticket_id');
if (ticketId.includes('gift') && ticketId !== 'gift-price') {
hasGift = true;
return false;
}
});
if (hasGift) {
} else {
$('#gift_address_box').remove()
}
}
});
</script>

View File

@@ -0,0 +1,4 @@
<div class="alert alert-danger" style="width: 100%; max-width: 800px; margin: 250px auto 0; text-align: center;">
Sprzedaż biletów jest obecnie wyłączona.<br/>
Zapraszamy do zakupu biletów w kasach biletowych.
</div>

View File

@@ -0,0 +1,362 @@
<?php
if (isset($_POST['selected_date'])) {
$selected_date = $_POST['selected_date'];
$selected = DateTime::createFromFormat('d-m-Y', $selected_date);
$today = new DateTime();
$interval = $today->diff($selected);
$days_diff = (int)$interval->format('%r%a');
function date_price($item, $days_diff) {
if($days_diff == 0) {
$price = $item['price'] + $item['dynamic_prices']['day0'];
return $price . ' zł';
}
elseif ($days_diff == 1 || $days_diff == 2) {
$price = $item['price'] + $item['dynamic_prices']['day1_2'];
return $price . ' zł';
}
elseif ($days_diff >= 3 && $days_diff <= 7) {
$price = $item['price'] + $item['dynamic_prices']['day3_7'];
return $price . ' zł';
}
else {
$price = $item['price'];
return $price . ' zł';
}
}
}
?>
<script src="https://cdn.jsdelivr.net/npm/flatpickr"></script>
<script src="https://cdn.jsdelivr.net/npm/flatpickr/dist/l10n/pl.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">
<div class="tickets_calendar container" >
<form id="dateForm" method="POST">
<div class="_title">Wybierz datę przyjazdu:</div>
<input type="text" id="flatpickr" name="selected_date" value="<?= isset($_POST['selected_date']) ? htmlspecialchars($_POST['selected_date']) : ''; ?>" style="display: none;" >
</form>
</div>
<? if (isset($_POST['selected_date'])) : ?>
<div class="tickets container">
<!-- <div class="sale-box">
<h2>Do 31 marca ceny na wszystkie bilety <span>-20%</span></h2>
</div> -->
<!-- Bilet ulgowy -->
<div class="ticket-container">
<div class="title-container">
<h2 class="title">Bilet ulgowy</h2>
<p class="description">do 140cm wzrostu</p>
</div>
<? foreach($this -> settings['bilety-ulgowe'] as $key => $item) : ?>
<div class="ticket">
<div class="ticket-description ticket-description--<?= $this -> settings['tickets'][$item]['color']; ?>">
<h3 class="ticket__name"><?= explode( '-', $this -> settings['tickets'][$item]['name'])[0]; ?></h3>
<p class="description">bilet całodniowy</p>
<? if($this -> settings['tickets'][$item]['alert']) : ?>
<p class="ticket-alert"><?= $this -> settings['tickets'][$item]['alert']; ?></p>
<? endif; ?>
</div>
<h3 class="price">
<?php
echo date_price(
$this -> settings['tickets'][$item],
$days_diff
);
?>
</h3>
<!-- <h3 class="price"><?= $this -> settings['tickets'][$item]['price']; ?> zł</h3> -->
<div class="ticket-quantity">
<button class="add button" ticket_id="<?= $item; ?>"><i class="fa fa-plus"></i></button>
<span>1x</span>
<button class="subtract button" ticket_id="<?= $item; ?>" diffdays="<?= $days_diff; ?>"><i class="fa fa-minus"></i></button>
</div>
</div>
<? endforeach; ?>
</div>
<!-- Bilet normalny -->
<div class="ticket-container">
<div class="title-container">
<h2 class="title">Bilet normalny</h2>
<p class="description">od 140cm wzrostu</p>
</div>
<? foreach($this -> settings['bilety-normalne'] as $key => $item) : ?>
<div class="ticket">
<div class="ticket-description ticket-description--<?= $this -> settings['tickets'][$item]['color']; ?>">
<h3 class="ticket__name"><?= explode( '-', $this -> settings['tickets'][$item]['name'])[0]; ?></h3>
<p class="description">bilet całodniowy</p>
<? if($this -> settings['tickets'][$item]['alert']) : ?>
<p class="ticket-alert"><?= $this -> settings['tickets'][$item]['alert']; ?></p>
<? endif; ?>
</div>
<h3 class="price">
<?php
echo date_price(
$this -> settings['tickets'][$item],
$days_diff
);
?>
</h3>
<div class="ticket-quantity">
<button class="add button" ticket_id="<?= $item; ?>"><i class="fa fa-plus"></i></button>
<span>1x</span>
<button class="subtract button" ticket_id="<?= $item; ?>" diffdays="<?= $days_diff; ?>"><i class="fa fa-minus"></i></button>
</div>
</div>
<? endforeach; ?>
</div>
<? if($selected >= DateTime::createFromFormat('d-m-Y', '28-06-2025')): ?>
<!-- Bilet ALL OPEN -->
<div class="ticket-container">
<div class="title-container">
<h2 class="title">Bilet ALL OPEN</h2>
<p class="description">bilety do wszystkich parków</p>
</div>
<? foreach($this -> settings['bilety-all-open'] as $key => $item) : ?>
<? $pattern = "/All Open -/"; ?>
<div class="ticket">
<div class="ticket-description ticket-description--<?= $this -> settings['tickets'][$item]['color']; ?>">
<!-- <h3 class="ticket__name"><?= explode( '-', $this -> settings['tickets'][$item]['name'])[1]; ?></h3> -->
<h3 class="ticket__name"><?= preg_replace($pattern, '', $this -> settings['tickets'][$item]['name']); ?></h3>
<p class="description">bilet całodniowy</p>
</div>
<h3 class="price">
<?php
echo date_price(
$this -> settings['tickets'][$item],
$days_diff
);
?>
</h3>
<div class="ticket-quantity">
<button class="add button" ticket_id="<?= $item; ?>"><i class="fa fa-plus"></i></button>
<span>1x</span>
<button class="subtract button" ticket_id="<?= $item; ?>" diffdays="<?= $days_diff; ?>"><i class="fa fa-minus"></i></button>
</div>
</div>
<? endforeach; ?>
</div>
<? endif; ?>
<? if($selected >= DateTime::createFromFormat('d-m-Y', '28-06-2025')): ?>
<div class="ticket-container">
<div class="title-container">
<h2 class="title">Bilety rodzinne</h2>
<p class="description">bilety dla rodzin</p>
</div>
<? foreach($this -> settings['bilety-rodzinne'] as $key => $item) : ?>
<div class="ticket">
<div class="ticket-description ticket-description--<?= $this -> settings['tickets'][$item]['color']; ?>">
<h3 class="ticket__name"><?= $this -> settings['tickets'][$item]['name']; ?></h3>
<p class="description">bilet całodniowy</p>
</div>
<h3 class="price">
<?php
echo date_price(
$this -> settings['tickets'][$item],
$days_diff
);
?>
</h3>
<div class="ticket-quantity">
<button class="add button" ticket_id="<?= $item; ?>"><i class="fa fa-plus"></i></button>
<span>1x</span>
<button class="subtract button" ticket_id="<?= $item; ?>" diffdays="<?= $days_diff; ?>"><i class="fa fa-minus"></i></button>
</div>
</div>
<? endforeach; ?>
</div>
<? endif; ?>
<div class="ticket-container">
<div class="title-container">
<h2 class="title">Karnety</h2>
<p class="description">Na cały sezon</p>
</div>
<? foreach($this -> settings['karnety'] as $key => $item) : ?>
<div class="ticket">
<div class="ticket-description ticket-description--<?= $this -> settings['tickets'][$item]['color']; ?>">
<h3 class="ticket__name"><?= $this -> settings['tickets'][$item]['name']; ?></h3>
<!-- <p class="description">bilet całodniowy</p> -->
</div>
<h3 class="price">
<?php
echo date_price(
$this -> settings['tickets'][$item],
$days_diff
);
?>
</h3>
<div class="ticket-quantity">
<button class="add button" ticket_id="<?= $item; ?>"><i class="fa fa-plus"></i></button>
<span>1x</span>
<button class="subtract button" ticket_id="<?= $item; ?>" diffdays="<?= $days_diff; ?>"><i class="fa fa-minus"></i></button>
</div>
</div>
<? endforeach; ?>
</div>
</div>
<? endif; ?>
<div class="bottom-info">
<div class="bottom-info__description container">
<p>KASA NIE ZWRACA PIENIĘDZY ZA NIEWYKORZYSTANE ATRAKCJE ZE WZGLĘDU NA ZŁĄ POGODĘ, NAGŁĄ AWARIĘ TECHNICZNĄ ORAZ
OGRANICZONĄ PRZEPUSTOWOŚĆ DANYCH ATRAKCJI.</p>
<p>Przed zakupem biletu do Kompleksu Turystycznego BRZEZÓVKA należy zapoznać się z
<a style="color: #72b81b;" href="/tickets/regulamin/">regulaminem</a>, oraz <a style="color: #72b81b;" href="/tickets/regulamin_biletow_prezentowych/">regulaminem biletów prezentowych</a>.</p>
</div>
<div class="bottom-info__background "></div>
</div>
<div class="shopping-cart-container">
<div class=" <?= $this->cart ? 'shopping-cart shopping-cart--active' : "shopping-cart" ?>">
<div class="basket"><i class="fa-solid fa-ticket"></i></div>
<div class="quantity">
<p>Bilety</p>
</div>
<ul class="tickets__list">
<?php
$summary = 0;
foreach ($this->cart as $ticket_id => $combinations) :
foreach ($combinations as $key => $value) :
$summary_ticket = $value['ticket_price'] * $value['quantity'];
$summary += $summary_ticket;
?>
<li class="ticket">
<p class="ticket__description">
<?= $this->settings['tickets'][$ticket_id]['name'] . ' <span>x' . $value["quantity"] . '</span>' ?>
</p>
<p class="ticket__price">cena: <span><?= $summary_ticket ?> zł</span> </p>
<button class="ticket__button" data-ticket-id="<?= $ticket_id ?>" data-combination-key="<?= $key ?>">x</button>
</li>
<?php
endforeach;
endforeach;
?>
</ul>
<div class="sum-section">
<p>Łączna suma:</p>
<p class="sum"><?= $summary ?> zł</p>
</div>
<a href="/tickets/basket_view/" class="buy-btn">Kup teraz</a>
<button class="off-btn">x</button>
</div>
</div>
<script type="text/javascript">
$(function() {
$('body').on('click', '.shopping-cart .off-btn', function() {
$('.shopping-cart').removeClass('shopping-cart--active');
});
//add
$('body').on('click', '.add', function() {
var ticket_id = $(this).attr('ticket_id');
var date = $('#flatpickr').val();
$.ajax({
type: 'POST',
cache: false,
url: '/tickets/ticket_add/',
data: {
ticket_id: ticket_id,
date: date,
},
beforeSend: function() {},
success: function(data) {
response = jQuery.parseJSON(data);
$('.shopping-cart-container').html(response.shopping_cart);
// if (!$('.shopping-cart').hasClass('shopping-cart-active'))
// $('.shopping-cart').addClass('shopping-cart--active');
}
});
});
//subtract
$('body').on('click', '.subtract', function() {
var ticket_id = $(this).attr('ticket_id');
var diffdays = $(this).attr('diffdays');
console.log(diffdays);
$.ajax({
type: 'POST',
cache: false,
url: '/tickets/ticket_subtract/',
data: {
ticket_id: ticket_id,
diffdays: diffdays
},
beforeSend: function() {},
success: function(data) {
response = jQuery.parseJSON(data);
$('.shopping-cart-container').html(response.shopping_cart);
// if (response.cart_count = 0)
// $('.shopping-cart').removeClass('shopping-cart--active');
}
});
});
//remove
$('body').on('click', '.ticket__button', function() {
var ticket_id = $(this).attr('ticket_id');
$.ajax({
type: 'POST',
cache: false,
url: '/tickets/ticket_remove/',
data: {
ticket_id: ticket_id
},
beforeSend: function() {},
success: function(data) {
response = jQuery.parseJSON(data);
$('.shopping-cart-container').html(response.shopping_cart);
if (response.cart_count = 0)
$('.shopping-cart').removeClass('shopping-cart--active');
console.log($('.shopping-cart'));
}
});
});
});
//
const shoppingCart = document.querySelector(".shopping-cart");
document.addEventListener('onChange', () => {
let list = document.querySelectorAll(".ticket");
let subtract = document.querySelector(".subtract");
subtract.addEventListener("click", () => {
if (list.length === 0) {
shoppingCart.classList.remove("shopping-cart--active");
}
})
})
document.addEventListener('DOMContentLoaded', function() {
flatpickr("#flatpickr", {
inline: true,
dateFormat: "d-m-Y",
disableMobile: true,
minDate: "today",
locale: "pl",
theme: "material_blue",
onChange: function(selectedDates, dateStr, instance) {
document.getElementById('dateForm').submit();
}
});
});
</script>

View File

@@ -0,0 +1,178 @@
<?php if($this->order_successful === true) : ?>
<script type="text/javascript">
$.alert({
icon: 'fa-regular fa-face-smile-beam',
title: 'Zamówienie jest złożone',
content: 'Dziękujemy za złożenia zamówienia.',
typeAnimated: true,
animation: 'scale',
closeAnimation: 'scale',
autoClose: 'confirm|10000',
bgOpacity: '0.5',
type: 'green',
theme: 'modern',
columnClass: 'col-md-6 col-md-offset-3',
buttons: {
confirm: {
text: 'Zamknij',
btnClass: 'btn-green btn-alert',
keys: ['enter'],
action: function() {}
}
}
});
</script>
<?php endif; ?>
<?php if($this->order_fail === true) : ?>
<script type="text/javascript">
$.alert({
icon: 'fa-solid fa-circle-exclamation',
title: 'Błąd',
content: 'Wystąpił błąd podczas przetwarzania zamówienia.',
typeAnimated: true,
animation: 'scale',
closeAnimation: 'scale',
autoClose: 'confirm|10000',
bgOpacity: '0.5',
type: 'red',
theme: 'modern',
columnClass: 'col-md-6 col-md-offset-3',
buttons: {
confirm: {
text: 'Zamknij',
btnClass: 'btn-red btn-alert',
keys: ['enter'],
action: function() {}
}
}
});
</script>
<?php endif; ?>
<?php
$orderData = $this->order;
?>
<div id="basket_page">
<div class="basket_content">
<div class="container">
<div class="box_01">
<table>
<tr>
<th>
<h3>BILETY</h3>
</th>
<th>
<h3>CENA</h3>
</th>
<th>
<h3>WARTOŚĆ</h3>
</th>
</tr>
<?php foreach ($orderData['tickets'] as $key => $value) : ?>
<tr>
<td><?= $value['name']; ?> ( x <?= $value["quantity"]; ?>)</td>
<td><?= $value['price']; ?> zł</td>
<td><?= $value['price'] * $value["quantity"]; ?> zł</td>
</tr>
<?php endforeach; ?>
</table>
</div>
<div class="box_02">
<div class="form_data">
<div class="row">
<div class="col-lg-8 col-md-8 col-xs-12 basket_user_data">
<div class="basket_user_data__wrapper">
<h2>TWOJE DANE</h2>
<div class="form-group row mb-lg-2">
<label for="name" class="col-lg-4 col-form-label">Imię*</label>
<div class="col-lg-8">
<input type="text" class="form-control" id="name" name="name" disabled
value="<?= $orderData['name']; ?>">
</div>
</div>
<div class="form-group row mb-lg-2">
<label for="surname" class="col-lg-4 col-form-label">Nazwisko*</label>
<div class="col-lg-8">
<input type="text" class="form-control" id="surname" name="surname" disabled
value="<?= $orderData['surname']; ?>">
</div>
</div>
<div class="form-group row mb-lg-2">
<label for="email" class="col-lg-4 col-form-label">Email*</label>
<div class="col-lg-8">
<input type="email" class="form-control" id="email" name="email" disabled
value="<?= $orderData['email']; ?>">
</div>
</div>
<div class="form-group row mb-lg-2">
<label for="zip_code" class="col-lg-4 col-form-label">Kod pocztowy*</label>
<div class="col-lg-8">
<input type="text" class="form-control" id="zip_code" name="zip_code" disabled
value="<?= $orderData['zip_code']; ?>">
</div>
</div>
<div class="form-group row mb-lg-2">
<label for="city" class="col-lg-4 col-form-label">Miejscowość*</label>
<div class="col-lg-8">
<input type="text" class="form-control" id="city" name="city" disabled
value="<?= $orderData['city']; ?>">
</div>
</div>
<? if(!empty($orderData['gift_address'])) : ?>
<div class="form-group row mb-lg-2" id="gift_address_box">
<label for="gift_address" class="col-lg-4 col-form-label">Dane do wysyłki biletu prezentowego*</label>
<div class="col-lg-8">
<textarea rows="5" type="text" class="form-control" id="gift_address" name="gift_address" disabled><?= $orderData['gift_address']; ?></textarea>
</div>
</div>
<? endif; ?>
<div class="form-group row mb-lg-2">
<label for="vat" class="col-lg-4 form-check-label"><strong>Chcę otrzymać fakturę VAT</strong></label>
<div class="col-lg-8">
<input type="checkbox" class="form-check-input" id="vat" <?= $orderData['vat'] ? 'checked' : ""; ?> name="vat" disabled>
</div>
</div>
<?php if($orderData['vat']) : ?>
<div class="form-group row mb-lg-2">
<label for="company_name" class="col-lg-4 col-form-label">Nazwa firmy</label>
<div class="col-lg-8">
<input type="text" class="form-control" id="company_name" name="company_name" disabled value="<?= $orderData['company_name']; ?>">
</div>
</div>
<div class="form-group row mb-lg-2">
<label for="nip" class="col-lg-4 col-form-label">NIP</label>
<div class="col-lg-8">
<input type="text" class="form-control" id="nip" name="nip" disabled value="<?= $orderData['nip']; ?>">
</div>
</div>
<?php endif; ?>
</div>
</div>
<div class="col-lg-4 col-md-4 col-xs-12 basket_summary">
<div class="basket_summary__wrapper">
<h2>Suma:</h2>
<p><?= $orderData["order_price"]; ?> zł</p>
<hr>
<h2>Status:</h2>
<?php if($orderData["payment_status"]) : ?>
<p class="c_green">Zapłacono</p>
<img
src="https://bilety.brzezovka.pl/orders/<?= $orderData['hash'][0]; ?>/<?= $orderData['hash'][1]; ?>/<?= $orderData['hash']; ?>.png">
<?php else: ?>
<p class="c_red">Nie zapłacono</p>
<a href="/tickets/przelewy24/order=<?= $orderData['hash']; ?>" class="buy-btn">Powtórz transakcję</a>
<?php endif; ?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,69 @@
<?php
$clientData = $this->order;
$merchant_id = $this->settings['p24']['merchant_id'];
$pos_id = $this->settings['p24']['pos_id'];
$crc_key = '';
if($this->settings['p24']['sandbox']) {
$crc_key = $this->settings['p24']['sandbox_crc_key'];
} else {
$crc_key = $this->settings['p24']['crc_key'];
}
?>
<div class="spinner_container">
<?= \Tpl::view( 'components/spinner'); ?>
</div>
<form
action="<?= $this -> settings['p24']['sandbox'] ? 'https://sandbox.przelewy24.pl/trnDirect' : 'https://secure.przelewy24.pl/trnDirect';?>"
method="post" class="form" id="form_data" accept-charset="ISO-8859-2">
<input type="hidden" name="p24_session_id" value="<?= $this -> przelewy24_hash; ?>" />
<input type="hidden" name="p24_merchant_id" value="<?= $merchant_id; ?>" />
<input type="hidden" name="p24_pos_id" value="<?= $pos_id; ?>" />
<input type="hidden" name="p24_amount" value="<?= $clientData['order_price'] * 100;?>" />
<input type="hidden" name="p24_currency" value="PLN" />
<input type="hidden" name="p24_description" value="Zamówienie nr <?= $clientData['id']; ?>" />
<input type="hidden" name="p24_client" value="<?= $clientData['name'] . ' ' . $clientData['surname'];?>" />
<input type="hidden" name="p24_zip" value="<?= $clientData['zip_code']; ?>" />
<input type="hidden" name="p24_city" value="<?= $clientData['city']; ?>" />
<input type="hidden" name="p24_country" value="PL" />
<input type="hidden" name="p24_email" value="<?= $clientData['email']; ?>" />
<input type="hidden" name="p24_language" value="pl" />
<input type="hidden" name="p24_url_status"
value="https://<?= $_SERVER['SERVER_NAME'];?>/tickets/przelewy24_response/" />
<input type="hidden" name="p24_url_return"
value="https://<?= $_SERVER['SERVER_NAME'];?>/tickets/order_confirm/order=<?= $this -> order['hash'];?>" />
<input type="hidden" name="p24_api_version" value="3.2" />
<input type="hidden" name="p24_wait_for_result" value="1">
<input type="hidden" name="p24_method" value="227">
<input type="hidden" name="p24_sign"
value="<?= md5( $this -> przelewy24_hash . '|' . $merchant_id . '|' . ( $clientData['order_price'] * 100 ) . '|PLN|' . $crc_key );?>" />
</form>
<script type="text/javascript">
dataLayer.push({ ecommerce: null });
dataLayer.push({
event: "purchase",
ecommerce: {
transaction_id: "<?= $this -> order['id'];?>",
value: <?= str_replace( ',', '.', $this -> order['order_price'] );?>,
currency: "PLN",
shipping: 0,
items: [
<? foreach ( $this -> order['tickets'] as $ticket ):?>
{
'id': <?= (int)$ticket['product_id'];?>,
'name': '<?= $ticket['name'];?>',
'quantity': <?= $ticket['quantity'];?>,
'price': <?= $ticket['price'];?>
}<? if ( $ticket != end( $this -> order['tickets'] ) ) echo ',';?>
<? endforeach;?>
]
}
});
$( document ).ready( function() {
$( "#form_data" ).submit();
});
</script>

View File

@@ -0,0 +1,61 @@
<div id="scanner" style="width: 100%; overflow-x: hidden;"></div>
<div class="container">
<div id="result"></div>
</div>
<script type="text/javascript">
const html5QrCode = new Html5Qrcode("scanner");
const qrCodeSuccessCallback = (decodedText, decodedResult) => {
// document.getElementById('result').innerHTML = '<span class="result">' + decodedResult + '</span>';
getData(decodedText);
};
const config = {
fps: 10,
qrbox: {
width: 250,
height: 250
}
};
html5QrCode.start({
facingMode: "environment"
}, config, qrCodeSuccessCallback);
const getData = (hash) => {
$.ajax({
type: 'POST',
cache: false,
url: '/scanner/scanner_get_data/',
data: {
scannerData: hash,
},
success: function(data) {
response = jQuery.parseJSON(data);
$('#result').html(response);
}
});
}
$('body').on('click', '#btn-used', function() {
var order_id = $("#order-id").val();
$.ajax({
type: 'POST',
cache: false,
url: '/scanner/use_ticket/',
data: {
order_id: order_id,
},
success: function(data) {
response = jQuery.parseJSON(data);
if (response.useStatus == true) {
alert("Status zmieniono na 'Wykorzystany'")
}
}
});
});
</script>

View File

@@ -0,0 +1,71 @@
<? if ($this->cart) : ?>
<div class="shopping-cart shopping-cart--active">
<?php else : ?>
<div class="shopping-cart ">
<?php endif; ?>
<div class="basket">
<i class="fa-solid fa-ticket"></i>
</div>
<div class="quantity">
<p>Bilety</p>
</div>
<ul class="tickets__list">
<?
$summary = 0;
foreach ( $this -> cart as $data => $value )
{
foreach ( $value as $key => $val )
{
$summary_ticket = $val['ticket_price'] * $val['quantity'];
$summary += $summary_ticket;
$ticket_box = '
<li class="ticket">
<p class="ticket__description">' . $this->settings['tickets'][$data]['name'] . ' <span>x' . $val["quantity"] . '</span></p>
<p class="ticket__price">cena: <span>' . $summary_ticket . ' zł</span> </p>
' . write_btn($data, $key ) . '
</li>
';
echo $ticket_box;
}
}
// foreach ( $this -> cart as $ticket_id => $combinations )
// {
// foreach ($combinations as $key => $value)
// {
// $summary_ticket = $value['ticket_price'] * $value['quantity'];
// $summary += $summary_ticket;
// $ticket_box = '
// <li class="ticket">
// <p class="ticket__description">' . $this->settings['tickets'][$ticket_id]['name'] . ' <span>x' . $value["quantity"] . '</span></p>
// <p class="ticket__price">cena: <span>' . $summary_ticket . ' zł</span> </p>
// ' . write_btn($ticket_id, $key ) . '
// </li>
// ';
// echo $ticket_box;
// }
// }
function write_btn($data, $diffDays) {
if (strpos($data, "gift-price") !== false) {
return '';
} else {
return '<button class="ticket__button" ticket_id=' . $data . ' diffDays="' . $diffDays . '">x</button>';
}
};
?>
</ul>
<div class="sum-section">
<p>Łączna suma:</p>
<p class="sum"><?= $summary ?> zł</p>
</div>
<a href="/tickets/basket_view/" class="buy-btn">Kup teraz</a>
<button class="off-btn">x</button>
</div>

View File

@@ -0,0 +1,104 @@
<div class="container">
<div class="box box-login">
<div class="title"><span>crmPRO</span> | logowanie</div>
<div class="alert login"></div>
<div class="row">
<div class="col-md-12">
<form method="POST" class="login-form">
<div class="input-group">
<span class="input-group-addon">
<i class="fa fa-user-circle-o"></i>
</span>
<div class="form-line">
<input type="text" class="form-control" name="email" id="email" placeholder="Email" autofocus="" >
<p class="form-error hide">Uzupełnij adres email.</p>
</div>
</div>
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-lock"></i></span>
<div class="form-line">
<input type="password" class="form-control" id="password" name="password" placeholder="Hasło" >
<p class="form-error hide">Uzupełnij hasło.</p>
</div>
</div>
<div class="input-group">
<div class="form-line checkbox">
<input type="checkbox" id="remeber" name="remeber">Zapamiętaj mnie
</div>
</div>
<button type="button" class="btn login">Zaloguj się</button>
</form>
</div>
</div>
</div>
</div>
<link rel="stylesheet" type="text/css" href="/layout/style/login-form.css" />
<script type="text/javascript">
$( function()
{
$( 'body' ).on( 'keypress', '.login-form input', function(e)
{
if ( e.which === 13 )
submit_login_form();
});
$( 'body' ).on( 'click', '.login-form .btn.login', function()
{
submit_login_form();
});
function submit_login_form()
{
var email = $( '#email' ).val();
if ( $.trim( email ) === '' )
{
$( '#email' ).parents( '.form-line' ).children( 'p' ).removeClass( 'hide' );
$( '#email' ).focus();
return false;
} else
$( '#email' ).parents( '.form-line' ).children( 'p' ).addClass( 'hide' );
var password = $( '#password' ).val();
if ( $.trim( password ) === '' )
{
$( '#password' ).parents( '.form-line' ).children( 'p' ).removeClass( 'hide' );
$( '#password' ).focus();
return false;
} else
$( '#password' ).parents( '.form-line' ).children( 'p' ).addClass( 'hide' );
$.ajax(
{
type: 'POST',
cache: false,
url: '/users/login/',
data:
{
email: email,
password: password,
remember: $( '#remeber' ).is( ':checked' )
},
beforeSend: function()
{
$( '.login-form .btn.login' ).html( '<i class="fa fa-spinner spin"></i>' ).addClass( 'disabled' );
},
success: function( response )
{
$( '.login-form .btn.login' ).html( 'Zaloguj się' ).removeClass( 'disabled' );
data = jQuery.parseJSON( response );
$( '.alert' ).html( data.msg );
if ( data.result === 'false' )
$( '.alert' ).removeClass( 'alert-success' ).addClass( 'alert-danger' ).show();
else
{
$( '.alert' ).removeClass( 'alert-danger' ).addClass( 'alert-success' ).show();
document.location.href = '/projects/tasks/project_id=' + ( data.default_project != null ? data.default_project : 'all' );
}
}
});
return false;
}
});
</script>

View File

@@ -0,0 +1,84 @@
<div class="row">
<div class="col-12 col-md-6">
<div class="g-container">
<div class="block-header">
<h2>pushover <strong>API</strong></h2>
<small class="text-muted">uzupełnił dane potrzebne do wysyłania powiadomień PUSH</small>
</div>
<div id="g-form-container">
<form method="POST" id="pushover-settings" class="g-form form-horizontal" action="/users/settings_save/">
<?= \Html::input( [
'label' => 'Pushover API',
'name' => 'pushover_api',
'value' => $this -> user['pushover_api'],
'inline' => false
]
);?>
<?= \Html::input( [
'label' => 'Pushover User',
'name' => 'pushover_user',
'value' => $this -> user['pushover_user'],
'inline' => false
]
);?>
<?= \Html::button( [
'class' => 'btn-success',
'text' => 'Zapisz ustawienia',
'icon' => 'fa-check',
'js' => '$( "#pushover-settings" ).submit();'
]
);?>
</form>
</div>
</div>
</div>
<div class="col-12 col-md-6">
<div class="g-container">
<div class="block-header">
<h2>zmiana <strong>hasła</strong></h2>
<small class="text-muted">zmień swoje stare hasło na nowe</small>
</div>
<div id="g-form-container">
<form method="POST" id="password-settings" class="g-form form-horizontal" action="/users/password_change/">
<?= \Html::input_icon( [
'label' => 'Stare hasło',
'name' => 'password_old',
'type' => 'password',
'inline' => false,
'required' => true,
'icon_content' => '<i class="fa fa-eye"></i>',
'icon_js' => 'password_toggle( $( this ).children( "i" ), "password_old" ); return false;'
]
);?>
<?= \Html::input_icon( [
'label' => 'Nowe hasło',
'name' => 'password_new',
'type' => 'password',
'inline' => false,
'required' => true,
'icon_content' => '<i class="fa fa-eye"></i>',
'icon_js' => 'password_toggle( $( this ).children( "i" ), "password_new" ); return false;'
]
);?>
<?= \Html::button( [
'class' => 'btn-success',
'type' => 'submit',
'text' => 'Zmień hasło',
'icon' => 'fa-check'
]
);?>
</form>
</div>
</div>
</div>
</div>
<script type="text/javascript">
function password_toggle( input, id )
{
$( input ).toggleClass( 'fa-eye' ).toggleClass( 'fa-eye-slash' );
if ( $( '#' + id ).attr( 'type' ) === 'password' )
$( '#' + id ).attr( 'type', 'text' );
else
$( '#' + id ).attr( 'type', 'password' );
}
</script>