download all files

This commit is contained in:
Roman Pyrih
2025-06-24 14:14:35 +02:00
parent ebed09c00b
commit 4c71b5d9c2
72007 changed files with 10407727 additions and 40029 deletions

View File

@@ -0,0 +1,31 @@
<script type="text/javascript">
(function (i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] || function () {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date();
a = s.createElement(o),
m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m)
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
ga('create', '{$ga_key}', 'auto');
ga('send', 'pageview');
{if isset($ga_conversion) && $ga_conversion}
ga('require', 'ecommerce');
{foreach $ga_conversion as $ga_item}
ga('{$ga_item.command}', {
{foreach $ga_item.properties as $key => $prop}
'{$key}': '{$prop}',
{/foreach}
});
{/foreach}
ga('ecommerce:send');
{/if}
</script>

View File

@@ -0,0 +1,8 @@
{extends file=$layout}
{block name='content'}
{capture name=path}{l s='Payment' mod='imoje'}{/capture}
<div class="text-center">{l s='Your order has been processed. You will be informed via e-mail about it end status' mod='imoje'}</div>
<br>
{/block}

View File

@@ -0,0 +1,9 @@
{extends file=$layout}
{block name='content'}
<div class="alert alert-danger" role="alert">
{foreach from=$imojeErrors key=key item=error}
<p class="text-center">{l s=$error mod='imoje'}</p>
{/foreach}
</div>
{/block}

View File

@@ -0,0 +1,9 @@
{extends file=$layout}
{block name='content'}
{capture name=path}{l s='Payment' mod='imoje'}{/capture}
<div class="text-center">{l s='Unable to complete your payment request. Try again later or contact with shop staff.' mod='imoje'}</div>
<br>
{if isset($ga_key) && $ga_key}{include file="module:imoje/views/templates/front/_ga.tpl" ga_key=$ga_key}{/if}
{/block}

View File

@@ -0,0 +1,11 @@
<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Location: ../");
exit;

View File

@@ -0,0 +1,36 @@
{extends file=$layout}
{block name='content'}
<style>
#submit-payment-form {
display: none;
}
</style>
{capture name=path}{l s='Payment' mod='imoje'}{/capture}
<div class="text-center" style="text-align:center">
<span id="text-tip">
{if isset($blik_msg) && $blik_msg}
{l s='Please wait, you will be redirected to BLIK payment page.' mod='imoje'}
{elseif isset($pbl_msg) && $pbl_msg}
{l s='Please wait, in the next step you will be redirected to the bank.' mod='imoje'}
{else}
{l s='Please wait, in the next step you will choose a payment method.' mod='imoje'}
{/if}
</span>
</div>
<br>
<div id="imoje-payment-form">
{$form nofilter}
</div>
<br>
{if isset($ga_key) && $ga_key}{include file="module:imoje/views/templates/front/_ga.tpl" ga_key=$ga_key}{/if}
<script type="text/javascript">
if (window.location.hash === '#processed') {
window.location.replace("{$checkout_link}");
document.getElementById('text-tip').innerHTML = '{$text_return_to_checkout}';
} else {
window.location.hash = '#processed';
document.getElementById("submit-payment-form").click();
}
</script>
{/block}

View File

@@ -0,0 +1,641 @@
{extends file=$layout}
{block name='content'}
<style>
.loading_gif {
display: block;
margin-left: auto;
margin-right: auto;
}
#blik_code {
width: 230px;
}
#content_blik_code {
padding: .9375rem;
}
.modal_blik {
display: none;
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 50000;
background: rgba(0, 0, 0, .5)
}
.modal_blik-content {
background: #fbfbfb none;
border: 1px solid #d6d4d4;
border-radius: 4px;
transform: translate(-50%, -50%);
position: absolute;
top: 50%;
left: 50%;
color: black;
padding: 20px;
}
#modal_blik_code-content {
max-width: 274px;
}
.remember_code-content {
margin-bottom: 10px;
}
.blik-alias, .alias-deactivate {
margin-right: 5px;
margin-bottom: 5px;
}
#modal_processing {
display: none;
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 50000;
background: rgba(0, 0, 0, .5)
}
.d--none {
display: none;
}
.alias-deactivate {
font-weight: 600;
text-transform: uppercase
}
.fr {
float: right;
}
#text-tip {
margin-top: 2rem;
margin-left: 2rem;
}
#insert_blik_code-text:after {
float: right;
content: "\25bc";
}
#insert_blik_code-text.is-active:after {
content: "\25b2";
}
</style>
<section class="clearfix">
<div class="card col-xs-12 col-lg-8">
<div id="text-tip" class="d--none"></div>
<div id="content_blik_code">
{if $active_profile}
<div id="content_blik_oneclick">
<p>
<h2 class="h3">{l s='Debit profile' mod='imoje'}</h2>
<hr/>
<div data-profile-id="{$active_profile.id}"
data-profile-name="{$active_profile.label}"
class="div_profile">
{foreach $active_profile.aliasList as $alias}
<div data-blik-key="{$alias.key}"
data-blik-name="{$alias.label}" class="blik-alias-div">
<button class="btn btn-primary blik-alias">
{$alias.label}
</button>
<button class="btn btn-danger alias-deactivate">
{l s='Deactivate' mod='imoje'}
</button>
</div>
{/foreach}
</div>
<hr/>
</div>
{/if}
<h2 class="h3 mt-2 mb-2" id="insert_blik_code-text">
{l s='Insert BLIK code' mod='imoje'}
</h2>
<div class="content_insert_code d--none">
<input id="blik_code"
placeholder="{l s='BLIK code' mod='imoje'}"
class="form-control"
type="text"
name="blik_code"
required
autocomplete="off"
maxlength="6">
<br/>
{if $is_customer_logged && $is_imoje_blik_oneclick}
<div class="remember_code-content">
<div class="float-xs-left">
<span class="custom-checkbox">
<input id="remember_code-checkbox" type="checkbox">
<span>
<i class="material-icons checkbox-checked"></i>
</span>
</span>
</div>
<div class="remember_code">
<label for="remember_code-checkbox">
{l s='I want to remember this shop' mod='imoje'}
</label>
</div>
</div>
{/if}
<button id="blik_submit" class="btn btn-primary btn-submit-code disabled"
style="display: inline-block" disabled>
{l s='Pay' mod='imoje'}
</button>
</div>
<br/>
</div>
</div>
<div class="col-xs-12 col-lg-4">
{block name='cart_summary'}
{include file='checkout/_partials/cart-summary.tpl' cart = $cart}
{/block}
{block name='hook_display_reassurance'}
{hook h='displayReassurance'}
{/block}
</div>
<div class="modal_blik" id="modal_processing">
<div class="modal_blik-content" id="modal_processing-content">
<img class="loading_gif" src="{$loading_gif}" alt="{l s='Loading' mod='imoje'}"/>
<br/>
<span id="modal_tip"></span>
</div>
</div>
<div class="modal_blik" id="modal_blik_code">
<div class="modal_blik-content" id="modal_blik_code-content">
<p id="proceed_payment_code"></p>
<label for="blik_code_modal" class="d--none">
</label>
<input placeholder="{l s='BLIK code' mod='imoje'}"
id="blik_code_modal"
class="form-control"
type="text"
name="blik_code"
required autocomplete="off"
maxlength="6">
<br/>
<button id="blik_submit_modal" class="btn btn-primary btn-submit-code disabled blik_submit" disabled>
{l s='Pay' mod='imoje'}
</button>
<button class="btn btn-secondary btn-modal-close">
{l s='Close' mod='imoje'}
</button>
</div>
</div>
<div class="modal_blik" id="modal_blik_alias_deactivate-modal">
<div class="modal_blik-content" id="modal_blik_alias_deactivate-modal-content">
<h2 class="h3">{l s='Deactivate profile' mod='imoje'}</h2>
<label for="blik_code" class="">
</label>
<p>
{l s='Are you sure that you want deactivate profile ' mod='imoje'}
<span id="deactivate_profile_name-text"></span>?
</p>
<button id="deactivate_profile_accept-btn" class="btn btn-primary">
{l s='Deactivate' mod='imoje'}
</button>
<button class="btn btn-secondary btn-modal-close">
{l s='Close' mod='imoje'}
</button>
</div>
</div>
</section>
<br>
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function (event) {
(function () {
// region vars
var $blikCode = $("#blik_code"),
$blikSubmit = $('#blik_submit'),
$contentBlikCode = $('#content_blik_code'),
$contentBlikOneclick = $('#content_blik_oneclick'),
$modalProcessing = $('#modal_processing'),
isSubmitted = false,
$rememberCodeCheckbox = $('#remember_code-checkbox'),
$aliasDeactivateButton = $('.alias-deactivate'),
$blikProfile = $('.blik-alias'),
$modalBlikAliasDeactivateModal = $('#modal_blik_alias_deactivate-modal'),
$deactivateProfileNameText = $('#deactivate_profile_name-text'),
$modalTip = $('#modal_tip'),
$deactivateProfileAcceptButton = $('#deactivate_profile_accept-btn'),
$textTip = $('#text-tip'),
$modalBlik = $('.modal_blik'),
dontProcessing = false,
dontProcessingTimeout = null,
$insertBlikCodeText = $('#insert_blik_code-text'),
$modalBlikCode = $('#modal_blik_code'),
$btnModalClose = $('.btn-modal-close'),
$blikSubmitModal = $('#blik_submit_modal'),
$blikCodeModal = $('#blik_code_modal'),
$proceedPaymentCodeText = $('#proceed_payment_code'),
timeoutAppendResultText = null,
tempKey = null,
profileId = null,
tempThis = null,
tempNewParamAlias = null,
msAppendResultText = 60000,
msBlikSubmit = 90000;
// endregion
{if !$active_profile}
toggleContentInsertCode();
{/if}
{if $profile_id}
profileId = "{$profile_id}";
{/if}
$insertBlikCodeText.on('click', function () {
toggleContentInsertCode();
});
if (!isSubmitted) {
$blikCode.on('input', function () {
if ($blikCode.val().length === 6) {
$blikSubmit.removeClass('disabled');
$blikSubmit.removeAttr("disabled");
} else {
disableBlikSubmit();
}
});
$blikCodeModal.on('input', function () {
if ($blikCodeModal.val().length === 6) {
$blikSubmitModal.removeClass('disabled').removeAttr("disabled");
} else {
disableBlikSubmit();
}
});
}
function toggleContentInsertCode() {
$insertBlikCodeText.toggleClass('is-active').next(".content_insert_code").stop().slideToggle(500);
}
function appendResultText(text, color) {
clearTimeout(timeoutAppendResultText);
if ({$create_order_arrangement}) {
$textTip.show();
$textTip.html(text).css('color', color);
timeoutAppendResultText = setTimeout(function () {
$textTip.hide();
}, msAppendResultText)
return;
}
$contentBlikCode.html(text)
}
function blikSubmit(data) {
disableBlikSubmit();
isSubmitted = true;
$modalBlik.hide();
clearDontProcessingTimeout()
dontProcessingTimeout = setTimeout(
function () {
dontProcessing = true
}, msBlikSubmit);
processForm(data);
}
$blikSubmit.on('click', function () {
var data = {
blikCode: $blikCode.val(),
}
if ($rememberCodeCheckbox.is(":checked")) {
data.rememberBlikCode = 1;
data.profileId = profileId;
}
blikSubmit(data);
});
$blikSubmitModal.on('click', function () {
var data = {
blikCode: $blikCodeModal.val(),
}
if ($('.blik-alias').length > 1) {
data.profileId = profileId
}
if (tempNewParamAlias) {
data.rememberBlikCode = 1
}
blikSubmit(data);
});
function disableBlikSubmit() {
$blikSubmit.addClass('disabled').attr("disabled", true);
$blikSubmitModal.addClass('disabled').attr("disabled", true);
}
// region deactivate profile
$aliasDeactivateButton.on('click', function () {
$deactivateProfileNameText.html($(this).parent().data("blik-name"))
tempThis = $(this);
$modalBlikAliasDeactivateModal.show();
});
$deactivateProfileAcceptButton.on('click', function () {
$modalBlikAliasDeactivateModal.hide();
if (!tempThis) {
return;
}
var blikKey = tempThis.parent().data('blik-key');
processForm({
profileId: profileId,
blikKey: blikKey,
deactivate: 1
},
'{l s='Please wait, deactivation is in progress' mod='imoje'}',
function (response) {
$modalProcessing.hide();
if (response.status) {
$('div[data-blik-key=' + blikKey + ']').remove();
appendResultText("{l s='Successfully deactivated profile' mod='imoje'}" + " " + tempThis.parent().data('blik-name'), 'green');
if ($('.blik-alias-div').length === 0) {
toggleContentInsertCode();
$('div[data-profile-id=' + profileId + ']').remove();
$contentBlikOneclick.remove();
return;
}
return;
}
appendResultText('{l s='Could not deactivate profile. Try again later or contact with shop staff.' mod='imoje'}', 'red')
})
})
// endregion
function clearDontProcessingTimeout() {
clearTimeout(dontProcessingTimeout);
dontProcessing = null;
}
function checkPayment(transactionId) {
$.ajax({
data: {
transactionId: transactionId,
checkTransaction: true
},
method: "POST",
url: "{$payment_blik_url nofilter}"
})
.then(function (data) { // done
if (dontProcessing) {
$modalProcessing.hide();
appendResultText('{l s='Response timed out. Try again.' mod='imoje'}', 'red');
clearDontProcessingTimeout();
return;
}
if (!data.status) {
$modalProcessing.hide();
appendResultText('{l s='Something went wrong. Please contact with shop staff' mod='imoje'}', 'red');
clearDontProcessingTimeout();
return;
}
if (data.body && data.body.error) {
$modalProcessing.hide();
clearDontProcessingTimeout();
if (data.body.code) {
$proceedPaymentCodeText.html(data.body.error);
if (data.body.newParamAlias) {
tempNewParamAlias = true;
}
$modalBlikCode.show();
return;
}
appendResultText(data.body.error, 'red');
return;
}
if (data.body.transaction.status === 'pending') { // state inny niz pending
if (dontProcessing) {
$modalProcessing.hide();
appendResultText('{l s='Response timed out. Try again.' mod='imoje'}', 'red');
clearDontProcessingTimeout();
return;
}
setTimeout(function () {
checkPayment(transactionId)
}, 1000);
return;
}
clearDontProcessingTimeout();
$modalProcessing.hide();
if (data.body.transaction.status === 'settled') {
$contentBlikCode.html('{l s='Your payment has been processed correctly. We will inform you about the progress of the order by e-mail.' mod='imoje'}');
return;
}
$contentBlikCode.html('{$failure_tip1} <br/><br/> {$failure_tip2}');
}, function () { // fail
});
}
// region debit profile
$blikProfile.on("click", function () {
dontProcessingTimeout = setTimeout(
function () {
dontProcessing = true
}, msBlikSubmit);
var parent = $(this).parent(),
key = parent.data("blik-key")
? parent.data("blik-key")
: null;
tempKey = key;
processForm({
profileId: profileId,
blikKey: key,
},
'',
function (response) {
if (response.status && response.body.transaction.id) {
checkPayment(response.body.transaction.id);
return;
}
$modalProcessing.hide();
appendResultText('{l s='Could not debit profile. Try again later or contact with shop staff.' mod='imoje'}', 'red');
}
);
});
// endregion
$btnModalClose.on('click', function () {
$modalBlik.hide();
}
)
// region show modal processing
function showModalProcessing(text) {
$modalTip.html(text);
$modalProcessing.show();
}
// endregion
function clearInputs(){
$blikCode.val('');
$blikCodeModal.val('');
}
// region process form
function processForm(data, modalTipText = '', funcAtDone = null, funcAtAlways = null) {
document.activeElement.blur();
$.ajax({
method: "POST",
url: "{$payment_blik_url nofilter}",
data: data,
beforeSend: function () {
$textTip.hide();
clearInputs();
showModalProcessing(modalTipText ? modalTipText : '{l s='Now accept payment in your bank application' mod='imoje'}');
}
})
.done(function (data) {
if (typeof data !== "object") {
$modalProcessing.hide();
appendResultText('{l s='Something went wrong. Please contact with shop staff' mod='imoje'}', 'red');
return;
}
if (!data.status) {
$modalProcessing.hide();
appendResultText('{l s='Something went wrong. Please contact with shop staff' mod='imoje'}', 'red');
return;
}
if (data.body && data.body.error) {
$modalProcessing.hide();
clearDontProcessingTimeout();
if (data.body.code) {
$('#proceed_payment_code').html(data.body.error);
if (data.body.newParamAlias) {
tempNewParamAlias = true;
}
$modalBlikCode.show();
return;
}
appendResultText(data.body.error, 'red');
return;
}
if (funcAtDone) {
funcAtDone(data);
return;
}
if (data.body.transaction.status === 'settled') {
$modalProcessing.hide();
$contentBlikCode.html('{l s='Your payment has been processed correctly. We will inform you about the progress of the order by e-mail.' mod='imoje'}');
return;
}
if (data.body.transaction.status === 'rejected') {
$modalProcessing.hide();
$contentBlikCode.html('{$failure_tip1} <br/><br/> {$failure_tip2}');
return;
}
if (data.body.transaction.id) {
checkPayment(data.body.transaction.id);
return;
}
$modalProcessing.hide();
appendResultText('{l s='Something went wrong. Please contact with shop staff' mod='imoje'}', 'red');
})
.fail(function () {
$modalProcessing.hide();
appendResultText('{l s='Something went wrong. Please contact with shop staff' mod='imoje'}', 'red');
})
.always(function (response) {
if (funcAtAlways) {
funcAtAlways(response);
}
});
}
// endregion
})()
});
</script>
{/block}

View File

@@ -0,0 +1,128 @@
{extends file=$layout}
{block name='content'}
<style>
.box-pm {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
}
.title {
margin-bottom: 30px;
}
.pm {
margin: 0 .8125rem;
}
.pm-content {
position: relative;
margin-bottom: 1.563rem;
height: 165px;
width: 161px;
background: #fff;
box-shadow: 2px 2px 8px 0 rgb(0 0 0 / 20%)
}
.pm-content:hover {
border: 1px solid green
}
.pm-logo {
max-height: 50%;
max-width: 65%;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
}
.pm-description {
bottom: 1.25rem;
padding-top: .625rem;
z-index: 2;
text-align: center;
height: 3.125rem;
transition: bottom .3s;
color: black;
}
.hidden {
display: none;
}
.pbl_loading-content {
background: #fbfbfb none;
border: 1px solid #d6d4d4;
border-radius: 4px;
transform: translate(-50%, -50%);
position: absolute;
top: 50%;
left: 50%;
color: black;
padding: 20px;
}
#pbl_loading {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 50000;
background: rgba(0, 0, 0, .5)
}
</style>
<section class="clearfix" style="display:block">
<h2 class="h3 text-uppercase title">
{l s='Choose payment channel' mod='imoje'}
</h2>
<div class="box-pm row">
<div id="pbl_loading" class="hidden">
<div class="pbl_loading-content">
<img id="loading-gif" src="{$loading_gif}" alt="{l s='Loading' mod='imoje'}"
style="display: block; margin-left: auto; margin-right: auto;"/><br/>
{l s='Please wait, you will be redirected to next step.' mod='imoje'}
</div>
</div>
{foreach from=$payment_method_list key=id item=payment_method}
<div class="pm">
<a class="pm-link"
href="{$payment_link}?pm={$payment_method.paymentMethod}&pmc={$payment_method.paymentMethodCode}">
<div class="pm-content">
{if $payment_method.logo}
<img class="pm-logo" src="{$payment_method.logo}"
alt="{$payment_method.description}">
{/if}
<div class="pm-description">
<p>
{$payment_method.description}
</p>
</div>
</div>
</a>
</div>
{/foreach}
</div>
</section>
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function (event) {
$('.pm-link').click(function () {
$('#pbl_loading').removeClass('hidden');
});
})
</script>
{/block}

View File

@@ -0,0 +1,108 @@
{extends file=$layout}
{block name='content'}
{capture name=path}{l s='Payment' mod='imoje'}{/capture}
<div class="text-center">{l s='Please wait, in the next step you will choose a payment method...' mod='imoje'}
<br>
<form action="{$payment_url}" id="imoje_method_form" method="post">
<input type="hidden" name="imoje_method" value="PAYMENTPAGE"/>
<input type="hidden" name="imoje_order_id" value="{$order_id}"/>
<input type="hidden" name="imoje_customer_id" value="{$customer_id}"/>
<input type="hidden" name="imoje_address_invoice_id" value="{$address_invoice_id}"/>
<input type="hidden" name="imoje_address_delivery_id" value="{$address_delivery_id}"/>
<input type="hidden" name="twisto_data" id="twisto_data" value=""/>
<br/>
<button style="display:none" type="submit" name="submit" id="twisto_submit">{$continue}</button>
</form>
<br>
<script type="text/javascript">
document.getElementById('twisto_submit').classList.add("btn", "btn-warning", "button-medium");
(function () {
var twistoConfig = {
public_key: '{$payment_methods.twisto.pk}',
script: '{$twisto_script_url}'
};
(function (e, g, a) {
function h(a) {
return function () {
b._.push([a, arguments])
}
}
var f = ["check"], b = e || {}, c = document.createElement(a);
a = document.getElementsByTagName(a)[0];
b._ = [];
for (var d = 0; d < f.length; d++) {
b[f[d]] = h(f[d]);
}
this[g] = b;
c.type = "text/javascript";
c.async = !0;
c.src = e.script;
a.parentNode.insertBefore(c, a);
delete e.script
}).call(window, twistoConfig, "Twisto", "script");
document.addEventListener("DOMContentLoaded", function (event) {
var twistoTimeout,
twistoTimeoutFlag = false,
timeBeforeCheck;
function timeout() {
return setTimeout(function () {
processForm({
"details": "timeout"
});
}, {$payment_methods.twisto.timeout});
}
function processForm(response) {
clearTimeout(twistoTimeout);
response.timeResponse = (new Date()).getTime() - timeBeforeCheck;
document.getElementById('twisto_data').value = JSON.stringify(response);
$("#twisto_submit").show().click();
}
timeBeforeCheck = (new Date()).getTime();
twistoTimeout = timeout();
Twisto.check("{$twisto_payload}", function (response) {
processForm(response);
}, function (response) {
if (!response) {
response = {
"details": "errorCallback"
}
}
processForm(response);
}, {
"processingStarted": function () {
if (twistoTimeoutFlag) {
return;
}
twistoTimeoutFlag = true;
clearTimeout(twistoTimeout);
twistoTimeout = timeout();
}
}
);
});
})();
</script>
</div>
{/block}

View File

@@ -0,0 +1,9 @@
{extends file=$layout}
{block name='content'}
{capture name=path}{l s='Payment' mod='imoje'}{/capture}
<div class="text-center">{l s='Your order has been processed. You will be informed via e-mail about it end status.' mod='imoje'}</div><br>
{if isset($ga_key) && $ga_key}{include file="module:imoje/views/templates/front/_ga.tpl" ga_key=$ga_key ga_conversion=$ga_conversion}{/if}
{/block}