first commit

This commit is contained in:
2024-10-28 22:14:22 +01:00
commit b65352c452
40581 changed files with 5712079 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
drwxr-xr-x 7 30094 users 9 Oct 6 10:16 .
drwxr-xr-x 7 30094 users 14 Oct 6 10:16 ..
-rw-r--r-- 1 30094 users 770 Aug 31 2021 config.rb
drwxr-xr-x 2 30094 users 4 Oct 6 10:16 css
drwxr-xr-x 2 30094 users 3 Oct 6 10:16 img
-rw-r--r-- 1 30094 users 875 Aug 31 2021 index.php
drwxr-xr-x 2 30094 users 7 Oct 6 10:16 js
drwxr-xr-x 2 30094 users 4 Oct 6 10:16 scss
drwxr-xr-x 4 30094 users 5 Oct 6 10:16 templates

View File

@@ -0,0 +1,25 @@
# Require any additional compass plugins here.
# Set this to the root of your project when deployed:
http_path = "/"
css_dir = "css"
sass_dir = "scss"
images_dir = "img"
javascripts_dir = "js"
fonts_dir = "font"
output_style = :nested
environment = :development
# To enable relative paths to assets via compass helper functions. Uncomment:
# relative_assets = true
# To disable debugging comments that display the original location of your selectors. Uncomment:
line_comments = false
color_output = false
# If you prefer the indented syntax, you might want to regenerate this
# project again passing --syntax sass, or you can uncomment this:
# preferred_syntax = :sass
# and then run:
# sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass

View File

@@ -0,0 +1,4 @@
drwxr-xr-x 2 30094 users 4 Oct 6 10:16 .
drwxr-xr-x 7 30094 users 9 Oct 6 10:16 ..
-rw-r--r-- 1 30094 users 3120 Aug 31 2021 admin.css
-rw-r--r-- 1 30094 users 10620 Aug 31 2021 jxmegamenu.css

View File

@@ -0,0 +1,163 @@
.jxmegamenu select option:disabled {
background:#eee;
font-weight:bold;
}
.banner-thumbnail {
max-width:300px;
height:auto;
max-height:150px;
}
.jxmegamenu select[multiple="multiple"] {
max-width:100%;
height:130px;
}
.jxmegamenu select option.cms_page {
text-align:right;
background:#f8f8f8;
padding-right:10px;
}
.megamenu-row {
border:1px solid #ccc;
padding:10px 10px 5px;
margin-bottom:10px;
background:#f9f9f9;
}
.add-column-button-container {
margin-bottom:10px;
}
.megamenu-row-content .megamenu-col {
margin-bottom:10px;
padding:0 4px 1px;
overflow:hidden
}
.megamenu-col-inner {
padding:10px 15px;
border:1px solid #ccc;
background:#fff;
}
.megamenu-col-inner .form-group {
margin-bottom:5px;
}
.megamenu-col-inner .form-group .form-control {
height:26px;
padding:3px 5px;
}
.megamenu-col-inner .form-group .help-block {
margin-bottom:0px;
font-size:11px;
line-height:12px;
}
#megamenu-content.item-active .megamenu-row {
background:#f7f7f7;
}
.megamenu-col.active .megamenu-col-inner {
background:#fff;
}
.simple_menu .order-buttons {
padding-top:70px;
}
.mega_menu {
border:1px dashed #ccc;
padding:10px;
text-align:center;
}
.mega_menu #megamenu-content {
text-align:left;
}
.btn#add-megamenu-row {
}
.btn#add-megamenu-row:before {
font-family:'FontAwesome';
content:'\f067';
padding-right:5px;
}
.megamenu-col.ui-sortable-placeholder {
background:#FC9;
outline:1px solid #C96;
visibility:visible !important;
}
.megamenu-row.ui-sortable-placeholder {
background:#f1f1f1;
outline:1px solid #ccc;
visibility:visible !important;
}
#megamenu-content .ui-sortable-helper {
transform:scale(0.5);
}
.backend-map {
min-height:250px;
}
#jxmegamenu-style fieldset h4 {
background:#999;
color:#fff;
text-transform:uppercase;
margin:1px 0;
padding:5px;
}
#jxmegamenu-style fieldset h4.error {
background:#f00;
}
#jxmegamenu-style fieldset h4 span {
font-size:13px;
font-style:italic;
margin-left:5px;
}
.fieldset-content-wrapper {
padding:15px 10px 10px;
border:1px solid #666;
}
.fieldset-content-wrapper .no-indent {
margin-bottom:5px;
}
#jxmegamenu-style .fieldset-content-wrapper .form-group {
margin-bottom:10px;
}
#jxmegamenu-style .fieldset-content-wrapper .help-block {
margin-bottom:0;
}
.fieldset-content-wrapper.closed {
display:none;
}
#myModal .modal-loader {
display:none;
}
#myModal .modal-loader.loading {
display:block;
width:100%;
height:100%;
background:rgba(0,0,0,0.1);
position:absolute;
left:0;
top:0;
z-index:5;
}
#myModal .modal-loader .loader-gif {
position:absolute;
left:50%;
top:50%;
width:128px;
height:128px;
margin:-64px 0 0 -64px;
display:block;
background:url(../img/loader.gif) no-repeat;
}
.form-control.error, .form-control.error:focus {
border-color:#f00;
background-color:rgba(240, 0, 0, 0.2);
}
.form-control.error:focus {
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset, 0 0 8px rgba(240, 0, 0, 0.6)
}
#jxmegamenu-configurations-buttons a i {
display: block;
font-size: 28px;
height: 30px;
margin: 0 auto;
width: 30px;
}
button.indent-left {
margin-left: 5px;
}

View File

@@ -0,0 +1,318 @@
.default-menu {
padding: 0 15px;
clear: both; }
.default-menu > ul {
padding: 0; }
.default-menu > ul > li {
float: left;
margin-bottom: -3px; }
.default-menu > ul > li > a,
.default-menu > ul > li > .top-level-menu-li-span {
display: block;
padding: 10px;
border-right: 1px solid #ccc;
border-left: 0;
border-bottom: 3px solid #e9e9e9;
color: #484848;
font: 600 18px/22px "Open Sans", sans-serif;
padding: 17px 20px;
text-transform: uppercase;
cursor: pointer;
position: relative; }
.default-menu > ul > li:hover > a, .default-menu > ul > li.sfHover > a, .default-menu > ul > li.sfHoverForce > a, .default-menu > ul > li > a:hover, .default-menu > ul > li:hover > .top-level-menu-li-span, .default-menu > ul > li.sfHover > .top-level-menu-li-span, .default-menu > ul > li.sfHoverForce > .top-level-menu-li-span, .default-menu > ul > li > .top-level-menu-li-span:hover {
background: #333333;
color: #fff;
border-bottom-color: #666666; }
.default-menu > ul > li:hover > span.menu-mobile-grover:before {
color: #fff; }
@media only screen and (min-width: 768px) {
.default-menu > ul > li ul.is-simplemenu, .default-menu > ul > li ul.is-simplemenu ul {
display: none;
width: 200px;
top: -1px;
right: -200px;
position: absolute;
z-index: 99;
border: 1px solid #ccc;
background: #fff; } }
@media only screen and (max-width: 767px) {
.default-menu > ul > li ul.is-simplemenu, .default-menu > ul > li ul.is-simplemenu ul {
background: #fff; } }
.default-menu > ul > li > ul.is-simplemenu {
right: auto;
left: 0;
top: 59px; }
@media only screen and (max-width: 767px) {
.default-menu > ul > li {
width: 100%;
float: none;
position: relative; }
.default-menu > ul > li > a {
border-right: none; } }
.default-menu .jxmegamenu {
position: relative;
background: #F6F6F6;
border-bottom: 3px solid #e9e9e9;
padding: 0; }
@media only screen and (max-width: 767px) {
.default-menu .jxmegamenu {
display: none; } }
.default-menu li a {
position: relative; }
.default-menu li.simple, .default-menu li li {
position: relative; }
.default-menu li li a {
display: block;
padding: 5px 10px; }
.default-menu li li.sfHover > a, .default-menu li li:hover > a, .default-menu li li.sfHoverForce > a {
color: #f00; }
.default-menu .menu_badge {
position: absolute;
top: -2px;
right: -5px;
z-index: 2;
font-size: 10px;
display: inline-block;
background: #f00;
color: #fff;
padding: 1px 5px 2px 5px;
line-height: 12px;
border-radius: 3px;
margin-left: 10px; }
.default-menu .is-megamenu {
width: 100%;
border: 1px solid #ccc;
padding: 0 15px;
background: #fff;
display: none;
-moz-box-shadow: 0 5px 13px rgba(0, 0, 0, 0.2);
-webkit-box-shadow: 0 5px 13px rgba(0, 0, 0, 0.2);
box-shadow: 0 5px 13px rgba(0, 0, 0, 0.2);
z-index: 7; }
@media only screen and (min-width: 768px) {
.default-menu .is-megamenu {
position: absolute;
top: 59px;
left: 0; } }
.default-menu .is-megamenu .megamenu-row {
padding-top: 15px;
padding-bottom: 15px; }
.default-menu .is-megamenu .megamenu-row + .megamenu-row {
border-top: 1px solid #ccc; }
.default-menu .is-megamenu .megamenu-row-2 {
background: #f8f8f8; }
.default-menu .is-megamenu li li {
padding-left: 10px; }
.default-menu .is-megamenu ul.content > li > a {
font: 600 18px/22px "Open Sans", sans-serif;
color: #333333;
text-transform: uppercase; }
.default-menu .is-megamenu ul.content ul {
opacity: 1 !important;
display: block !important; }
.default-menu .menu-title {
position: relative;
background: #F6F6F6;
border-bottom: 3px solid #e9e9e9;
padding: 17px 20px;
font: 600 18px/22px "Open Sans", sans-serif;
color: #484848;
text-transform: uppercase;
cursor: pointer; }
.default-menu .menu-title:hover {
background: #333333;
color: #fff;
border-bottom-color: #666666; }
.default-menu .menu-title:after {
position: absolute;
content: "\E145";
font-family: 'Material Icons';
height: 30px;
width: 30px;
font-size: 26px;
top: 20px;
right: 6px;
cursor: pointer;
z-index: 1; }
.default-menu .menu-title.active:after {
content: "\E15B"; }
@media only screen and (min-width: 768px) {
.default-menu .menu-title {
display: none; } }
.default-menu .menu-mobile-grover:before {
position: absolute;
content: "\E145";
font-family: 'Material Icons';
height: 30px;
width: 30px;
font-size: 26px;
top: 20px;
right: 6px;
cursor: pointer;
z-index: 1; }
@media only screen and (min-width: 768px) {
.default-menu .menu-mobile-grover:before {
display: none; } }
.default-menu .menu-mobile-grover.active:before {
content: "\E15B"; }
@media only screen and (max-width: 767px) {
.default-menu .is-simplemenu li {
border-top: 1px solid #ccc; }
.default-menu .is-simplemenu li .menu-mobile-grover:before {
top: 8px;
right: 0;
font-size: 18px; }
.default-menu .is-simplemenu li a {
display: block;
font-size: 14px;
padding: 8px 10px; }
.default-menu .is-simplemenu li li a {
padding-left: 20px; }
.default-menu .is-simplemenu li li li a {
padding-left: 30px; }
.default-menu .is-simplemenu li li li li a {
padding-left: 40px; }
.default-menu li.simple ul {
display: none; }
.default-menu .megamenu-col.col-sm-3 {
float: left;
width: 50%; }
.default-menu .megamenu-col.col-sm-3.first-in-line-sm {
clear: left; } }
@media only screen and (max-width: 480px) {
.default-menu .megamenu-col.col-sm-3 {
width: 100%; } }
.red {
background: #f00; }
.menuvideowrapper {
clear: both;
float: none;
height: 0;
padding-bottom: 56.25%;
padding-top: 25px;
position: relative;
width: 100%; }
.menuvideowrapper iframe {
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%; }
.embed-container {
position: relative;
padding-bottom: 56.25%;
height: 0;
overflow: hidden;
max-width: 100%;
height: auto; }
.embed-container iframe,
.embed-container object,
.embed-container embed {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%; }
.frontend-map {
min-height: 200px; }
/**** Left/Right column menu ****/
.displayLeftColumn_menu li, .displayRightColumn_menu li {
position: relative; }
.displayLeftColumn_menu .simple ul, .displayRightColumn_menu .simple ul {
display: none; }
@media only screen and (min-width: 768px) {
.displayLeftColumn_menu .simple ul, .displayRightColumn_menu .simple ul {
position: absolute;
top: -1px;
width: 200px;
border: 1px solid #ccc;
background: #fff;
z-index: 999; } }
@media only screen and (max-width: 767px) {
.displayLeftColumn_menu .simple ul li, .displayRightColumn_menu .simple ul li {
border-top: 1px solid #ccc;
position: relative; }
.displayLeftColumn_menu .simple ul li a, .displayRightColumn_menu .simple ul li a {
display: block;
padding: 10px 0 10px 15px;
position: relative; }
.displayLeftColumn_menu .simple ul li li a, .displayRightColumn_menu .simple ul li li a {
padding-left: 25px; } }
.displayLeftColumn_menu .jxmegamenu > li, .displayRightColumn_menu .jxmegamenu > li {
border-top: 1px solid #ccc;
position: relative; }
.displayLeftColumn_menu .jxmegamenu > li > a, .displayRightColumn_menu .jxmegamenu > li > a {
display: block;
padding: 10px 0;
position: relative; }
.displayLeftColumn_menu .jxmegamenu > li:first-child, .displayRightColumn_menu .jxmegamenu > li:first-child {
border: none; }
.displayLeftColumn_menu span.menu_badge, .displayRightColumn_menu span.menu_badge {
font-size: 10px;
display: inline-block;
background: #f00;
color: #fff;
padding: 1px 5px 2px 5px;
line-height: 12px;
border-radius: 3px;
margin-left: 10px; }
.displayLeftColumn_menu .simple li a, .displayRightColumn_menu .simple li a {
padding: 4px 5px;
display: block; }
.displayLeftColumn_menu .is-megamenu, .displayRightColumn_menu .is-megamenu {
display: none; }
.displayLeftColumn_menu .is-megamenu ul, .displayRightColumn_menu .is-megamenu ul {
display: block !important;
opacity: 1 !important; }
.displayLeftColumn_menu .is-megamenu ul.content > li > a, .displayRightColumn_menu .is-megamenu ul.content > li > a {
font-weight: bold;
text-transform: uppercase; }
.displayLeftColumn_menu .is-megamenu ul.content > li li, .displayRightColumn_menu .is-megamenu ul.content > li li {
padding-left: 5px; }
@media only screen and (min-width: 768px) {
.displayLeftColumn_menu .is-megamenu, .displayRightColumn_menu .is-megamenu {
position: absolute;
top: 0;
width: 600px;
padding: 15px;
background: #fff;
border: 1px solid #ccc;
z-index: 999; } }
@media only screen and (min-width: 481px) and (max-width: 767px) {
.displayLeftColumn_menu .is-megamenu .megamenu-col.col-sm-3, .displayRightColumn_menu .is-megamenu .megamenu-col.col-sm-3 {
width: 50%;
float: left; }
.displayLeftColumn_menu .is-megamenu .megamenu-col.col-sm-3.first-in-line-sm, .displayRightColumn_menu .is-megamenu .megamenu-col.col-sm-3.first-in-line-sm {
clear: left; } }
.displayLeftColumn_menu .menu-mobile-grover:after, .displayRightColumn_menu .menu-mobile-grover:after {
position: absolute;
right: 0;
top: 12px;
height: 15px;
width: 15px;
line-height: 15px;
font-size: 15px;
content: "\E145";
font-family: 'Material Icons';
z-index: 1;
cursor: pointer; }
.displayLeftColumn_menu .menu-mobile-grover.active:after, .displayRightColumn_menu .menu-mobile-grover.active:after {
content: "\E15B"; }
.displayLeftColumn_menu li.simple ul {
right: -200px; }
.displayRightColumn_menu li.simple ul {
left: -200px; }
.displayLeftColumn_menu div.is-megamenu {
right: -600px; }
.displayRightColumn_menu div.is-megamenu {
left: -600px; }

View File

@@ -0,0 +1,3 @@
drwxr-xr-x 2 30094 users 3 Oct 6 10:16 .
drwxr-xr-x 7 30094 users 9 Oct 6 10:16 ..
-rw-r--r-- 1 30094 users 15671 Aug 31 2021 loader.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,32 @@
<?php
/*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*/
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,7 @@
drwxr-xr-x 2 30094 users 7 Oct 6 10:16 .
drwxr-xr-x 7 30094 users 9 Oct 6 10:16 ..
-rw-r--r-- 1 30094 users 24904 Aug 31 2021 admin.js
-rw-r--r-- 1 30094 users 4938 Aug 31 2021 hoverIntent.js
-rw-r--r-- 1 30094 users 875 Aug 31 2021 index.php
-rw-r--r-- 1 30094 users 3871 Aug 31 2021 jxmegamenu.js
-rw-r--r-- 1 30094 users 6979 Aug 31 2021 superfish.js

View File

@@ -0,0 +1,906 @@
/*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*/
$(document).ready(function(e) {
listSorterInit();
initItemsButtons();
updateRowsInfo(false);
sortInit();
$(document).on('change', 'select[name="hookName"]', function() {
location.href = location.href
.replace(/&addItem/, '')
.replace(/&addHtml/, '')
.replace(/&addLink/, '')
.replace(/&addBanner/, '')
.replace(/&addVideo/, '')
.replace(/&addMap/, '')
.replace(/&id_item=[^&]*/, '')
.replace(/&itemstatus=[^&]*/, '')
.replace(/&hookName=[^&]*/, '')+'&hookName='+$(this).val();5
});
if ($('input[name="addnewmega"]:checked').val() == 1)
$('#is_simple_menu').hide();
else
$('.mega_menu').hide();
if ($('input[name="issimplemenu"]:checked').val() == 1)
$('#is_mega_menu').hide();
else
$('.simple_menu').hide();
if ($('#jxmegamenu_url_type').val() == 1)
$('.jxmegamenu-fields-url').show();
else
$('.jxmegamenu_url_text select').show()
$(document).on('change', '#jxmegamenu_url_type', function(){
if($(this).val() == 1)
$('.jxmegamenu_url_text select').hide(),
$('.jxmegamenu-fields-url').show()
else
$('.jxmegamenu-fields-url').hide(),
$('.jxmegamenu_url_text select').show()
});
$(document).on('change', 'input[name="addnewmega"]', function(){
if($(this).val() == 1)
$('#is_simple_menu').hide(),
$('.mega_menu').show();
else
$('#is_simple_menu').show(),
$('.mega_menu').hide();
});
$(document).on('change', 'input[name="issimplemenu"]', function(){
if($(this).val() == 1)
$('#is_mega_menu').hide(),
$('.simple_menu').show();
else
$('#is_mega_menu').show(),
$('.simple_menu').hide();
});
megamenuConstructor();
$(document).on('click', 'button#remove_map_marker', function(){
$(this).parents('form').find('input[name="old_marker"]').val('');
$(this).parents('form').find('.megamenu-marker-preview').remove();
return false;
});
$(document).on('click', '#get-settings', function(){
getSettingsModal();
});
$(document).on('click', '#save-settings', function(){
var form = $(this).parents('#myModalSettings');
saveSettings(form.find('input[name="googleapi"]').val());
});
$(document).on('click', '#generate-styles', function(){
form = $(this).parent().parent().parent();
unique_code = $('form').find('input[name="unique_code"]').val();
cssname = $('form').find('input[name="cssname"]').val();
hookName = $('form').find('input[name="hookname"]').val();
form_group = form.find('fieldset');
result = new Array();
form_group.each(function() {
hover = '';
class_data = new Array();
main_class = $(this).find('input.mainclass').val();
other_classes = $(this).find('input.classes').val();
data = $(this).find('input, select').not('.mainclass, .classes');
data.each(function(){
name = $(this).attr('name');
value = $(this).attr('value');
if ($(this).has('data-name') && $(this).attr('data-name') == 'bgimg' && $(this).val() != '' && $(this).val() != 'none') // wrap url() and drop protocal if background image field
value = 'url('+value.replace('http:', '').replace('https:', '')+')';
if (value !='') // check if style has value
class_data.push(name+':'+value+'^');
});
result.push(main_class+' | '+class_data);
if (other_classes)
result.push(other_classes+' | '+class_data);
});
if (checkFiledsValidation())
sendAjax(result, unique_code, cssname, hookName)
});
$(document).on('click', '#jxmegamenu-style h4', function(){
element = $(this).parent().find('.fieldset-content-wrapper');
if (element.hasClass('opened'))
element.removeClass('opened').addClass('closed');
else if (element.hasClass('closed'))
element.removeClass('closed').addClass('opened');
});
// valiate inputs data-name = px
$(document).on('change', 'input[data-name="px"]', function(){
data = $(this).val();
dimension = '';
parents_error = '';
value = '';
if (!data)
{
$(this).removeClass('error');
parents_error = $(this).parents('fieldset').find('input.error');
if (!parents_error.length)
$(this).parents('fieldset').find('h4').removeClass('error');
}
if (data == 0)
return;
dimension = data.substr(data.length - 2);
if (!dimension || (dimension != 'px' && dimension != 'em'))
{
$(this).addClass('error');
return;
}
value = data.replace(dimension, '');
if (!$.isNumeric(value) || !value)
{
$(this).addClass('error');
return;
}
$(this).removeClass('error');
parents_error = $(this).parents('fieldset').find('input.error');
if (!parents_error.length)
$(this).parents('fieldset').find('h4').removeClass('error');
});
// valiate inputs data-name = shdw
$(document).on('change', 'input[data-name="shdw"]', function(){
data = $(this).val();
inputString = "~!@$%^&*_+=`{}[]|\:;'<>/?";
parents_error = '';
if (!data)
{
$(this).removeClass('error');
parents_error = $(this).parents('fieldset').find('input.error');
if (!parents_error.length)
$(this).parents('fieldset').find('h4').removeClass('error');
}
for (i = 0; i < inputString.length; i++)
{
if (data.indexOf(inputString[i]) != -1)
{
$(this).addClass('error');
return;
}
}
$(this).removeClass('error');
parents_error = $(this).parents('fieldset').find('input.error');
if (!parents_error.length)
$(this).parents('fieldset').find('h4').removeClass('error');
});
$(document).on('change', 'input[data-name="shdw"]', function(){
data = $(this).val();
});
// reset styles
$(document).on('click', '#reset-styles', function(){
$('#jxmegamenu-style input:not([name="cssname"], .mainclass, .classes), #jxmegamenu-style select').each(function() {
$(this).val('').trigger('change');
$(this).attr('style', '');
});
cssname = $('form').find('input[name="cssname"]').val();
resetAjax(cssname)
});
$(document).on('click', 'a.clear-image', function(e){
$(this).parents('.input-group').find('input').val('');
return false;
});
$(document).on('click', 'a.clear-image-none', function(e){
$(this).parents('.input-group').find('input').val('none');
return false;
});
$('.iframe-btn').fancybox({
'width': 900,
'height': 600,
'type': 'iframe',
'autoScale': false,
'autoDimensions': false,
'fitToView': false,
'autoSize': false,
onUpdate: function() {
$('.fancybox-iframe').contents().find('a.link').data('field_id', $(this.element).data("input-name"));
$('.fancybox-iframe').contents().find('a.link').attr('data-field_id', $(this.element).data("input-name"));
},
afterShow: function() {
$('.fancybox-iframe').contents().find('a.link').data('field_id', $(this.element).data("input-name"));
$('.fancybox-iframe').contents().find('a.link').attr('data-field_id', $(this.element).data("input-name"));
}
});
});
function initItemsButtons()
{
$('#menuOrderUp').click(function(e){
e.preventDefault();
move(true);
});
$('#menuOrderDown').click(function(e){
e.preventDefault();
move();
});
$("#simplemenu_items").closest('form').on('submit', function(e) {
$("#simplemenu_items option").prop('selected', true);
});
$("#addItem").click(add);
$("#availableItems").dblclick(add);
$("#removeItem").click(remove);
$("#simplemenu_items").dblclick(remove);
function add()
{
$(".simple_menu #availableItems option:selected").each(function(i){
var val = $(this).val();
var text = $(this).text();
text = text.replace(/(^\s*)|(\s*$)/gi,"");
if (val == "PRODUCT")
{
val = prompt(product_add_text);
if (val == null || val == "" || isNaN(val))
return;
text = product_id+val;
val = "PRD"+val;
}
if (val == "PRODUCTINFO")
{
val = prompt(product_add_text);
if (val == null || val == "" || isNaN(val))
return;
text = product_id+val+' (info)';
val = "PRDI"+val;
}
$(".simple_menu #simplemenu_items").append('<option value="'+val+'" selected="selected">'+text+'</option>');
});
serialize();
return false;
}
function remove()
{
$("#simplemenu_items option:selected").each(function(i){
$(this).remove();
});
serialize();
return false;
}
function serialize()
{
var options = "";
$("#simplemenu_items option").each(function(i){
options += $(this).val()+",";
});
$("#itemsInput").val(options.substr(0, options.length - 1));
}
function move(up)
{
var tomove = $('#simplemenu_items option:selected');
if (tomove.length >1)
{
alert(move_warning);
return false;
}
if (up)
tomove.prev().insertAfter(tomove);
else
tomove.next().insertBefore(tomove);
serialize();
return false;
}
}
function megamenuConstructor()
{
var megamenuContent = $('#megamenu-content');
var megamenuCol = '';
/***
Add one more row to the menu tab
***/
$(document).on('click', '#add-megamenu-row', function(){
megamenuContent.append(megamenuRowConstruct());
updateRowsInfo(true)
});
/***
Add one more col to the row of the menu tab
***/
$(document).on('click', '.add-megamenu-col', function(){
columnWidth = prompt('Select column type', 2);
if(columnWidth < 2 || columnWidth > 12)
{
alert(col_width_alert_max_text);
return;
}
parrentRow = $(this).parents('.megamenu-row').attr('id');
$(this).parents('.megamenu-row').find('.megamenu-row-content').append(megamenuColConstruct(parrentRow, columnWidth));
updateRowInfo('#'+parrentRow, true); // update row information after new col added
});
/***
Update data after any block changes
***/
$(document).on('change', '.mega_menu .megamenu-col input, .mega_menu .megamenu-col select:not([name="col-item-items"], [class="availible_items"])', function(){
updateColInfo($(this));
});
/***
Add multiple selected items to the column parameters
***/
$(document).on('click', '.add-item-to-selected', function(){
var element = $(this).parents('.megamenu-col');
element.find('.availible_items option:selected').each(function() {
var value = new Array();
if ($(this).val() == 'PRODUCT' || $(this).val() == 'PRODUCTINFO')
{
values = addProductToBlock($(this));
if (typeof(values) == 'undefined' || values.length < 1)
return;
value.push(values[0]);
value.push(values[1]);
}
else
{
value.push($(this).val());
value.push($.trim($(this).text()))
}
element.find('select[name="col-item-items"]').append('<option value="'+value[0]+'" selected="selected">'+value[1]+'</option>');
});
updateColInfo($(this));
});
/***
Add one selected item to the column parameters by doubleclick
***/
$(document).on('dblclick', 'select.availible_items option', function(){
var element = $(this).parents('.megamenu-col');
var val = $(this).val();
var text = $.trim($(this).text());
if (val == "PRODUCT")
{
val = prompt(product_add_text);
if (val == null || val == "" || isNaN(val))
return;
text = product_id+val+' (link)';
val = "PRD"+val;
}
if (val == "PRODUCTINFO")
{
val = prompt(product_add_text);
if (val == null || val == "" || isNaN(val))
return;
text = product_id+val+' (info)';
val = "PRDI"+val;
}
element.find('select[name="col-item-items"]').append('<option value="'+val+'" selected="selected">'+text+'</option>');
updateColInfo($(this));
});
/***
Remove multiple selected items from the column parameters
***/
$(document).on('click', '.remove-item-from-selected', function(){
var element = $(this).parents('.megamenu-col');
if (typeof(element) == 'undefined')
return;
element.find('select[name="col-item-items"] option:selected').each(function() {
element.find(this).remove();
});
updateColInfo($(this));
});
/***
Remove column button
***/
$(document).on('click', '.btn-remove-column', function(){
var column = $(this).parents('.megamenu-col');
var row = '#'+column.parents('.megamenu-row').attr('id');
column.remove();
updateRowInfo(row, true);
});
/***
Remove row button
***/
$(document).on('click', '.btn-remove-row', function(){
var row = $(this).parents('.megamenu-row');
row.remove();
updateRowsInfo(true);
});
/***
Replace all special chars by "_"
***/
$(document).on('change', 'input[name="col-item-class"]', function(){
var old_class = $(this).val();
var new_class = old_class.trim().replace(/["~!@#$%^&*\(\)_+=`{}\[\]\|\\:;'<>,.\/?"\- \t\r\n]+/g, '_');
$(this).val(new_class);
})
}
function megamenuRowConstruct()
{
html = '';
var num = [];
$('.megamenu-row').each(function() { // build array of existing rows ids
tmp_num = $(this).attr('id').split('-');
tmp_num = tmp_num[2];
num.push(tmp_num);
});
if($.isEmptyObject(num)) // check if any row already exist if not set 1
num = 1;
else // check if any row already exist if yes set max + 1
num = Math.max.apply(Math,num) + 1;
html += '<div id="megamenu-row-'+num+'" class="megamenu-row">';
html += '<div class="row">';
html += '<div class="add-column-button-container col-lg-6">';
html += '<a href="#" onclick="return false;" class="btn btn-sm btn-success add-megamenu-col">'+add_megamenu_column+'</a>';
html += '</div>';
html += '<div class="remove-row-button col-lg-6 text-right">';
html += '<a class="btn btn-sm btn-danger btn-remove-row" href="#" onclick="return false;">'+btn_remove_row_text+'</a>';
html += '</div>';
html += '</div>';
html += '<div class="megamenu-row-content row"></div>';
html += '<input type="hidden" name="row_content" />';
html += '</div>';
return html;
}
function megamenuColConstruct(parrentRow, columnWidth)
{
var html = '';
var num = [];
var parrentId = parseInt(parrentRow.replace ( /[^\d.]/g, '' ));
$('#'+parrentRow+' .megamenu-col').each(function() {
tmp_num = $(this).attr('id').split('-');
tmp_num = tmp_num[2];
num.push(tmp_num);
});
if($.isEmptyObject(num))
num = 1;
else
num = Math.max.apply(Math,num) + 1;
html +='<div id="column-'+parrentId+'-'+num+'" class="megamenu-col megamenu-col-'+num+' col-lg-'+columnWidth+'">';
html += '<div class="megamenu-col-inner">';
html += '<div class="form-group">';
html +='<label>'+col_width_label+'</label>';
html += '<select class="form-control" name="col-item-type" autocomplete="off">';
for(i=2; i<=getReminingWidth(parrentRow); i++)
{
columnWidth==i?selected='selected="selected"':selected='';
html += '<option '+selected+' value="'+i+'">col-'+i+'</option>';
}
html += '</select>';
html += '</div>';
html += '<div class="form-group">';
html +='<label>'+col_class_text+'</label>';
html += '<input class="form-control" type="text" name="col-item-class" autocomplete="off" />';
html += '<p class="help-block">'+warning_class_text+'</p>';
html += '</div>';
html += '<div class="form-group">';
html +='<label>'+col_items_text+'</label>';
html += option_list;
html += '</div>';
html += '<div class="form-group buttons-group">';
html += '<a class="add-item-to-selected btn btn-sm btn-default" href="#" onclick="return false;">'+btn_add_text+'</a>';
html += '<a class="remove-item-from-selected btn-sm btn btn-default" href="#" onclick="return false;">'+btn_remove_text+'</a>';
html += '</div>';
html += '<div class="form-group">';
html +='<label>'+col_items_selected_text+'</label>';
html += '<select multiple="multiple" style="height: 160px;" name="col-item-items" autocomplete="off"></select>';
html += '</div>';
html += '<div class="remove-block-button">';
html += '<a href="#" class="btn btn-sm btn-default btn-remove-column" onclick="return false;">'+btn_remove_column_text+'</a>';
html += '</div>';
html += '</div>';
html += '<input type="hidden" name="col_content" value="{col-'+num+'-'+columnWidth+'-()-0-[]}" />';
html += '</div>';
sortInit();
return html;
}
function updateColInfo(element)
{
var item_num = element.parents('.megamenu-col').attr('id').split('-');
item_num = item_num[2];
var col_type = element.parents('.megamenu-col').find('select[name="col-item-type"]').val();
var col_class = element.parents('.megamenu-col').find('input[name="col-item-class"]').val();
var col_content_type = 0;
var col_items = '';
var devider = '';
element.parents('.megamenu-col').find('select[name="col-item-items"] option').each(function() {
col_items += devider + $(this).val();
devider = ',';
});
updateAdminBlockWidth(element, col_type);
element.parents('.megamenu-col').find('input[name="col_content"]').val('{col-'+item_num+'-'+col_type+'-('+col_class+')-'+col_content_type+'-['+col_items+']}'); // build hidde input with parameters
updateRowInfo('#'+element.parents('.megamenu-row').attr('id'), true);
}
function updateRowInfo(row, use_ajax)
{
var data = '';
$(row+' .megamenu-col').each(function() {
data += $(this).find('input[name="col_content"]').val();
});
$(row+' input[name="row_content"]').val(data);
updateRowsInfo(use_ajax);
}
function updateRowsInfo(use_ajax)
{
var data = '';
var id_row;
var delimeter = '';
$('.megamenu-row').each(function() {
id_row = $(this).attr('id').split('-');
id_row = id_row[2];
data += delimeter+'row-'+id_row+$(this).find('input[name="row_content"]').val();
delimeter = '+';
});
$('input[name="megamenu_options"]').val(data);
if (use_ajax && $('input[name="id_tab"]').val())
{
$.ajax({
type:'POST',
url:theme_url + '&ajax',
headers: { "cache-control": "no-cache" },
dataType: 'json',
async: false,
data: {
action: 'tabupdate',
id_tab: $('input[name="id_tab"]').val(),
data: $('input[name="megamenu_options"]').val()
},
success: function(msg)
{
if (msg.error_status)
{
showErrorMessage(msg.error_status);
return;
}
showSuccessMessage(msg.success_status);
}
});
}
}
function getReminingWidth(row)
{
width = 12;
$('#'+row+' .megamenu-col').each(function() {
//alert($(this).find('select[name="col-item-type"]').val());
width = width - $(this).find('select[name="col-item-type"]').val();
});
return 12;
}
function sortInit()
{
$('#megamenu-content').sortable({
cursor: 'move',
update:function(event, ui){
updateRowsInfo(true);
}
});
$('#megamenu-content .megamenu-row-content').sortable({
cursor: 'move',
items: '> div',
connectWith: '.megamenu-row-content',
update: function(event, ui){
$(this).find('.megamenu-col').each(function(index){
index = index + 1;
id = $(this).prop('id').slice(0,-1);
$(this).prop('id', id+index);
col_data = $(this).find('input[name="col_content"]').val().split('-');
new_col_data = '';
delimiter = '';
for (i = 0; i < col_data.length; i++)
{
if (i == 1)
new_col_data += delimiter + index;
else
new_col_data += delimiter + col_data[i];
delimiter = '-';
}
$(this).find('input[name="col_content"]').val(new_col_data);
});
updateRowInfo('#'+$(this).parent().prop('id'), true);
}
});
}
function addProductToBlock(element)
{
val = element.val();
if (val == "PRODUCT")
{
val = prompt(product_add_text);
if (val == null || val == "" || isNaN(val))
return;
text = product_id+val+' (link)';
val = "PRD"+val;
}
if (val == "PRODUCTINFO")
{
val = prompt(product_add_text);
if (val == null || val == "" || isNaN(val))
return;
text = product_id+val+' (info)';
val = "PRDI"+val;
}
return Array(val,text);
}
function updateAdminBlockWidth(col, width)
{
var columnn_width = '';
var new_class = '';
var old_class = col.parents('.megamenu-col').prop('class').split(' ');
for (i = 0; i < old_class.length; i++)
{
if (old_class[i].indexOf('col-lg') >= 0)
new_class += ' col-lg-'+width;
else
new_class += ' '+old_class[i];
}
col.parents('.megamenu-col').removeProp('class').addClass(new_class);
}
function listSorterInit()
{
$('.tablist tbody').sortable({
cursor: 'move',
items: '> tr',
update: function(event, ui){
$('.tablist tbody > tr').each(function(index){
$(this).find('.positions').text(index + 1);
});
}
}).bind('sortupdate', function() {
var orders = $(this).sortable('toArray');
$.ajax({
type: 'POST',
url: theme_url + '&ajax',
headers: { "cache-control": "no-cache" },
dataType: 'json',
data: {
action: 'updateposition',
item: orders,
},
success: function(msg)
{
if (msg.error)
{
showErrorMessage(msg.error);
return;
}
showSuccessMessage(msg.success);
}
});
});
}
function sendAjax(data, unique_code, cssname, hookname)
{
loading = $('#myModal').find('.modal-loader');
messageblock = $('#myModal').find('.modal-footer');
messageblock.find('p').remove();
loading.addClass('loading');
$.ajax({
type:'POST',
url:theme_url + '&ajax',
headers: { "cache-control": "no-cache" },
dataType: 'json',
data: {
action: 'generatestyles',
data: data,
unique_code: unique_code,
cssname: cssname,
hookname: hookname
},
success: function(msg)
{
if (msg.status == 'success')
{
loading.removeClass('loading');
messageblock.prepend('<p class="alert alert-success">'+msg.message+'</p>');
setTimeout(function(){messageblock.find('p').remove()}, 5000)
return;
}
else if (msg.status == 'error')
{
loading.removeClass('loading');
messageblock.prepend('<p class="alert alert-danger">'+msg.message+'</p>');
setTimeout(function(){messageblock.find('p').remove()}, 5000)
return;
}
}
});
return false;
}
function resetAjax(cssname)
{
loading = $('#myModal').find('.modal-loader');
messageblock = $('#myModal').find('.modal-footer');
messageblock.find('p').remove();
loading.addClass('loading');
$.ajax({
type:'POST',
url:theme_url + '&ajax',
headers: { "cache-control": "no-cache" },
dataType: 'json',
data: {
action: 'resetstyles',
cssname: cssname
},
success: function(msg)
{
if (msg.status == 'success')
{
loading.removeClass('loading');
messageblock.prepend('<p class="alert alert-success">'+msg.message+'</p>');
setTimeout(function(){messageblock.find('p').remove()}, 5000)
return;
}
else if (msg.status == 'error')
{
loading.removeClass('loading');
messageblock.prepend('<p class="alert alert-danger">'+msg.message+'</p>');
setTimeout(function(){messageblock.find('p').remove()}, 5000)
return;
}
}
});
return false;
}
function checkFiledsValidation () {
fields = $('#jxmegamenu-style').find('input.error');
$('#jxmegamenu-style fieldset').each(function() {
$(this).find('h4').removeClass('error');
});
$('#myModal .modal-footer').find('p').remove();
if (fields.length)
{
$('#myModal .modal-footer').prepend('<p class="alert alert-danger">'+fields_alert_message+'</p>');
fields.each(function() {
$(this).parents('fieldset').find('h4').addClass('error');
});
return false;
}
return true;
}
function getSettingsModal() {
$.ajax({
type:'POST',
url:theme_url + '&ajax',
headers: { "cache-control": "no-cache" },
dataType: 'json',
data: {
action: 'getsettingsmodal',
hookname: $('input[name="hook_name"]').val()
},
success: function(msg)
{
if (msg.status == 'success') {
$('body').find('#content').append(msg.content);
$('#myModalSettings').modal();
}
}
});
}
function saveSettings(api)
{
var loading = $('#myModalSettings').find('.modal-loader');
var messageblock = $('#myModalSettings').find('.modal-footer');
messageblock.find('p').remove();
loading.addClass('loading');
$.ajax({
type:'POST',
url:theme_url + '&ajax',
headers: { "cache-control": "no-cache" },
dataType: 'json',
data: {
action: 'savesettings',
googleapi: api,
hookname: $('input[name="hook_name"]').val()
},
success: function(msg)
{
if (msg.status == 'success')
{
loading.removeClass('loading');
messageblock.prepend('<p class="alert alert-success">'+msg.message+'</p>');
setTimeout(function(){messageblock.find('p').remove()}, 5000)
return;
}
else if (msg.status == 'error')
{
loading.removeClass('loading');
messageblock.prepend('<p class="alert alert-danger">'+msg.message+'</p>');
setTimeout(function(){messageblock.find('p').remove()}, 5000)
return;
}
}
});
return false;
}

View File

@@ -0,0 +1,114 @@
/**
* hoverIntent is similar to jQuery's built-in "hover" method except that
* instead of firing the handlerIn function immediately, hoverIntent checks
* to see if the user's mouse has slowed down (beneath the sensitivity
* threshold) before firing the event. The handlerOut function is only
* called after a matching handlerIn.
*
* hoverIntent r7 // 2013.03.11 // jQuery 1.9.1+
* http://cherne.net/brian/resources/jquery.hoverIntent.html
*
* You may use hoverIntent under the terms of the MIT license. Basically that
* means you are free to use hoverIntent as long as this header is left intact.
* Copyright 2007, 2013 Brian Cherne
*
* // basic usage ... just like .hover()
* .hoverIntent( handlerIn, handlerOut )
* .hoverIntent( handlerInOut )
*
* // basic usage ... with event delegation!
* .hoverIntent( handlerIn, handlerOut, selector )
* .hoverIntent( handlerInOut, selector )
*
* // using a basic configuration object
* .hoverIntent( config )
*
* @param handlerIn function OR configuration object
* @param handlerOut function OR selector for delegation OR undefined
* @param selector selector OR undefined
* @author Brian Cherne <brian(at)cherne(dot)net>
**/
(function($) {
$.fn.hoverIntent = function(handlerIn,handlerOut,selector) {
// default configuration values
var cfg = {
interval: 100,
sensitivity: 7,
timeout: 0
};
if ( typeof handlerIn === "object" ) {
cfg = $.extend(cfg, handlerIn );
} else if ($.isFunction(handlerOut)) {
cfg = $.extend(cfg, { over: handlerIn, out: handlerOut, selector: selector } );
} else {
cfg = $.extend(cfg, { over: handlerIn, out: handlerIn, selector: handlerOut } );
}
// instantiate variables
// cX, cY = current X and Y position of mouse, updated by mousemove event
// pX, pY = previous X and Y position of mouse, set by mouseover and polling interval
var cX, cY, pX, pY;
// A private function for getting mouse position
var track = function(ev) {
cX = ev.pageX;
cY = ev.pageY;
};
// A private function for comparing current and previous mouse position
var compare = function(ev,ob) {
ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
// compare mouse positions to see if they've crossed the threshold
if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) {
$(ob).off("mousemove.hoverIntent",track);
// set hoverIntent state to true (so mouseOut can be called)
ob.hoverIntent_s = 1;
return cfg.over.apply(ob,[ev]);
} else {
// set previous coordinates for next time
pX = cX; pY = cY;
// use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs)
ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval );
}
};
// A private function for delaying the mouseOut function
var delay = function(ev,ob) {
ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
ob.hoverIntent_s = 0;
return cfg.out.apply(ob,[ev]);
};
// A private function for handling mouse 'hovering'
var handleHover = function(e) {
// copy objects to be passed into t (required for event object to be passed in IE)
var ev = jQuery.extend({},e);
var ob = this;
// cancel hoverIntent timer if it exists
if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }
// if e.type == "mouseenter"
if (e.type == "mouseenter") {
// set "previous" X and Y position based on initial entry point
pX = ev.pageX; pY = ev.pageY;
// update "current" X and Y position based on mousemove
$(ob).on("mousemove.hoverIntent",track);
// start polling interval (self-calling timeout) to compare mouse coordinates over time
if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );}
// else e.type == "mouseleave"
} else {
// unbind expensive mousemove event
$(ob).off("mousemove.hoverIntent",track);
// if hoverIntent state is true, then call the mouseOut function after the specified delay
if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );}
}
};
// listen for mouseenter and mouseleave
return this.on({'mouseenter.hoverIntent':handleHover,'mouseleave.hoverIntent':handleHover}, cfg.selector);
};
})(jQuery);

View File

@@ -0,0 +1,32 @@
<?php
/*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*/
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,139 @@
/*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*/
var responsiveflagJXMenu = false;
var JxCategoryMenu = $('ul.jxmegamenu');
var JxCategoryGrover = $('.default-menu .menu-title');
$(document).ready(function(){
JxCategoryMenu = $('ul.jxmegamenu');
JxCategoryGrover = $('.default-menu .menu-title');
setColumnClean();
responsiveJxMenu();
$(window).resize(responsiveJxMenu);
});
// check resolution
function responsiveJxMenu()
{
if ($(document).width() <= 767 && responsiveflagJXMenu == false)
{
menuChange('enable');
responsiveflagJXMenu = true;
}
else if ($(document).width() >= 768)
{
menuChange('disable');
responsiveflagJXMenu = false;
}
}
function JxdesktopInit()
{
JxCategoryGrover.off();
JxCategoryGrover.removeClass('active');
$('.jxmegamenu > li > ul, .jxmegamenu > li > ul.is-simplemenu ul, .jxmegamenu > li > div.is-megamenu').removeClass('menu-mobile').parent().find('.menu-mobile-grover').remove();
$('.jxmegamenu').removeAttr('style');
JxCategoryMenu.superfish('init');
//add class for width define
$('.jxmegamenu > li > ul').addClass('submenu-container clearfix');
$(".top-level-menu-li-span").each(function() {
if($(this).parent().children().length > 1) {
$(this).addClass('sf-with-ul');
}
});
}
function JxmobileInit()
{
var JxclickEventType=((document.ontouchstart!==null)?'click':'touchstart');
JxCategoryMenu.superfish('destroy');
$('.jxmegamenu').removeAttr('style');
JxCategoryGrover.on(JxclickEventType, function(e){
$(this).toggleClass('active').parent().find('ul.jxmegamenu').stop().slideToggle('medium');
return false;
});
$('.jxmegamenu > li > ul, .jxmegamenu > li > div.is-megamenu, .jxmegamenu > li > ul.is-simplemenu ul').addClass('menu-mobile clearfix').parent().prepend('<span class="menu-mobile-grover"></span>');
$(".jxmegamenu .menu-mobile-grover").on(JxclickEventType, function(e){
var catSubUl = $(this).next().next('.menu-mobile');
if (catSubUl.is(':hidden'))
{
catSubUl.slideDown();
$(this).addClass('active');
}
else
{
catSubUl.slideUp();
$(this).removeClass('active');
}
return false;
});
$('.default-menu > ul:first > li > a, .block_content > ul:first > li > a').on(JxclickEventType, function(e){
var parentOffset = $(this).prev().offset();
var relX = parentOffset.left - e.pageX;
if ($(this).parent('li').find('ul').length && relX >= 0 && relX <= 20)
{
e.preventDefault();
var mobCatSubUl = $(this).next('.menu-mobile');
var mobMenuGrover = $(this).prev();
if (mobCatSubUl.is(':hidden'))
{
mobCatSubUl.slideDown();
mobMenuGrover.addClass('active');
}
else
{
mobCatSubUl.slideUp();
mobMenuGrover.removeClass('active');
}
}
});
$(".top-level-menu-li-span").each(function() {
if($(this).parent().children().length > 1) {
$(this).removeClass('sf-with-ul');
}
});
}
// change the menu display at different resolutions
function menuChange(status)
{
status == 'enable' ? JxmobileInit(): JxdesktopInit();
}
function setColumnClean()
{
$('.jxmegamenu div.is-megamenu > div').each(function(){
i = 1;
$(this).children('.megamenu-col').each(function(index, element) {
if(i % 3 == 0)
{
$(this).addClass('first-in-line-sm');
}
i++;
});
});
}

View File

@@ -0,0 +1,257 @@
/*
* jQuery Superfish Menu Plugin
* Copyright (c) 2013 Joel Birch
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*/
(function ($) {
"use strict";
var methods = (function () {
// private properties and methods go here
var c = {
bcClass: 'sf-breadcrumb',
menuClass: 'sf-js-enabled',
anchorClass: 'sf-with-ul',
menuArrowClass: 'sf-arrows'
},
ios = (function () {
var ios = /iPhone|iPad|iPod/i.test(navigator.userAgent);
if (ios) {
// iOS clicks only bubble as far as body children
$(window).load(function () {
$('body').children().on('click', $.noop);
});
}
return ios;
})(),
wp7 = (function () {
var style = document.documentElement.style;
return ('behavior' in style && 'fill' in style && /iemobile/i.test(navigator.userAgent));
})(),
toggleMenuClasses = function ($menu, o) {
var classes = c.menuClass;
if (o.cssArrows) {
classes += ' ' + c.menuArrowClass;
}
$menu.toggleClass(classes);
},
setPathToCurrent = function ($menu, o) {
return $menu.find('li.' + o.pathClass).slice(0, o.pathLevels)
.addClass(o.hoverClass + ' ' + c.bcClass)
.filter(function () {
return ($(this).children(o.popUpSelector).hide().show().length);
}).removeClass(o.pathClass);
},
toggleAnchorClass = function ($li) {
$li.children('a').toggleClass(c.anchorClass);
},
toggleTouchAction = function ($menu) {
var touchAction = $menu.css('ms-touch-action');
touchAction = (touchAction === 'pan-y') ? 'auto' : 'pan-y';
$menu.css('ms-touch-action', touchAction);
},
applyHandlers = function ($menu, o) {
var targets = 'li:has(' + o.popUpSelector + ')';
if ($.fn.hoverIntent && !o.disableHI) {
$menu.hoverIntent(over, out, targets);
}
else {
$menu
.on('mouseenter.superfish', targets, over)
.on('mouseleave.superfish', targets, out);
}
var touchevent = 'MSPointerDown.superfish';
if (!ios) {
touchevent += ' touchend.superfish';
}
if (wp7) {
touchevent += ' mousedown.superfish';
}
$menu
.on('focusin.superfish', 'li', over)
.on('focusout.superfish', 'li', out)
.on(touchevent, 'a', o, touchHandler);
},
touchHandler = function (e) {
var $this = $(this),
$ul = $this.siblings(e.data.popUpSelector);
if ($ul.length > 0 && $ul.is(':hidden')) {
$this.one('click.superfish', false);
if (e.type === 'MSPointerDown') {
$this.trigger('focus');
} else {
$.proxy(over, $this.parent('li'))();
}
}
},
over = function () {
var $this = $(this),
o = getOptions($this);
clearTimeout(o.sfTimer);
$this.siblings().superfish('hide').end().superfish('show');
},
out = function () {
var $this = $(this),
o = getOptions($this);
if (ios) {
$.proxy(close, $this, o)();
}
else {
clearTimeout(o.sfTimer);
o.sfTimer = setTimeout($.proxy(close, $this, o), o.delay);
}
},
close = function (o) {
o.retainPath = ($.inArray(this[0], o.$path) > -1);
this.superfish('hide');
if (!this.parents('.' + o.hoverClass).length) {
o.onIdle.call(getMenu(this));
if (o.$path.length) {
$.proxy(over, o.$path)();
}
}
},
getMenu = function ($el) {
return $el.closest('.' + c.menuClass);
},
getOptions = function ($el) {
return getMenu($el).data('sf-options');
};
return {
// public methods
hide: function (instant) {
if (this.length) {
var $this = this,
o = getOptions($this);
if (!o) {
return this;
}
var not = (o.retainPath === true) ? o.$path : '',
$ul = $this.find('li.' + o.hoverClass).add(this).not(not).removeClass(o.hoverClass).children(o.popUpSelector),
speed = o.speedOut;
if (instant) {
$ul.show();
speed = 0;
}
o.retainPath = false;
o.onBeforeHide.call($ul);
$ul.stop(true, true).animate(o.animationOut, speed, function () {
var $this = $(this);
o.onHide.call($this);
});
}
return this;
},
show: function () {
var o = getOptions(this);
if (!o) {
return this;
}
var $this = this.addClass(o.hoverClass),
$ul = $this.children(o.popUpSelector);
o.onBeforeShow.call($ul);
$ul.stop(true, true).animate(o.animation, o.speed, function () {
o.onShow.call($ul);
});
return this;
},
destroy: function () {
return this.each(function () {
var $this = $(this),
o = $this.data('sf-options'),
$hasPopUp;
if (!o) {
return false;
}
$hasPopUp = $this.find(o.popUpSelector).parent('li');
clearTimeout(o.sfTimer);
toggleMenuClasses($this, o);
toggleAnchorClass($hasPopUp);
toggleTouchAction($this);
// remove event handlers
$this.off('.superfish').off('.hoverIntent');
// clear animation's inline display style
$hasPopUp.children(o.popUpSelector).attr('style', function (i, style) {
return style.replace(/display[^;]+;?/g, '');
});
// reset 'current' path classes
o.$path.removeClass(o.hoverClass + ' ' + c.bcClass).addClass(o.pathClass);
$this.find('.' + o.hoverClass).removeClass(o.hoverClass);
o.onDestroy.call($this);
$this.removeData('sf-options');
});
},
init: function (op) {
return this.each(function () {
var $this = $(this);
if ($this.data('sf-options')) {
return false;
}
var o = $.extend({}, $.fn.superfish.defaults, op),
$hasPopUp = $this.find(o.popUpSelector).parent('li');
o.$path = setPathToCurrent($this, o);
$this.data('sf-options', o);
toggleMenuClasses($this, o);
toggleAnchorClass($hasPopUp);
toggleTouchAction($this);
applyHandlers($this, o);
$hasPopUp.not('.' + c.bcClass).superfish('hide', true);
o.onInit.call(this);
});
}
};
})();
$.fn.superfish = function (method, args) {
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
}
else if (typeof method === 'object' || ! method) {
return methods.init.apply(this, arguments);
}
else {
return $.error('Method ' + method + ' does not exist on jQuery.fn.superfish');
}
};
$.fn.superfish.defaults = {
popUpSelector: 'ul,.is-megamenu', // within menu context
hoverClass: 'sfHover',
pathClass: 'overrideThisToUse',
pathLevels: 1,
delay: 800,
animation: {opacity: 'show'},
animationOut: {opacity: 'hide'},
speed: 'normal',
speedOut: 'fast',
cssArrows: true,
disableHI: false,
onInit: $.noop,
onBeforeShow: $.noop,
onShow: $.noop,
onBeforeHide: $.noop,
onHide: $.noop,
onIdle: $.noop,
onDestroy: $.noop
};
// soon to be deprecated
$.fn.extend({
hideSuperfishUl: methods.hide,
showSuperfishUl: methods.show
});
})(jQuery);

View File

@@ -0,0 +1,4 @@
drwxr-xr-x 2 30094 users 4 Oct 6 10:16 .
drwxr-xr-x 7 30094 users 9 Oct 6 10:16 ..
-rw-r--r-- 1 30094 users 875 Aug 31 2021 index.php
-rw-r--r-- 1 30094 users 8568 Aug 31 2021 jxmegamenu.scss

View File

@@ -0,0 +1,32 @@
<?php
/*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*/
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,453 @@
@import 'compass';
$icon: '\E145';
$icon-active: '\E15B';
$menu-main-font: 600 18px/22px "Open Sans", sans-serif;
.default-menu {
padding: 0 15px;
clear: both;
> ul {
padding: 0;
> li {
float: left;
margin-bottom: -3px;
> a,
> .top-level-menu-li-span {
display:block;
padding:10px;
border-right:1px solid #ccc;
border-left:0;
border-bottom:3px solid #e9e9e9;
color:#484848;
font:$menu-main-font;
padding:17px 20px;
text-transform:uppercase;
cursor: pointer;
position: relative;
}
&:hover > a, &.sfHover > a, &.sfHoverForce > a, > a:hover,
&:hover > .top-level-menu-li-span, &.sfHover > .top-level-menu-li-span, &.sfHoverForce > .top-level-menu-li-span, > .top-level-menu-li-span:hover{
background:#333333;
color:#fff;
border-bottom-color:#666666;
}
&:hover {
> span.menu-mobile-grover:before {
color: #fff;
}
}
ul.is-simplemenu, ul.is-simplemenu ul {
@media only screen and (min-width: 768px) {
display: none;
width: 200px;
top: -1px;
right: -200px;
position: absolute;
z-index: 99;
border: 1px solid #ccc;
background: #fff;
}
@media only screen and (max-width: 767px) {
background: #fff;
}
}
> ul.is-simplemenu {
right: auto;
left: 0;
top: 59px;
}
@media only screen and (max-width: 767px) {
width: 100%;
float: none;
position: relative;
> a {
border-right: none;
}
}
}
}
.jxmegamenu {
position: relative;
background: #F6F6F6;
border-bottom: 3px solid #e9e9e9;
padding:0;
@media only screen and (max-width: 767px) {
display: none;
}
}
li {
a {
position: relative;
}
&.simple, li {
position: relative;
}
li {
a {
display: block;
padding: 5px 10px;
}
&.sfHover > a, &:hover > a, &.sfHoverForce > a {
color: #f00;
}
}
}
.menu_badge {
position: absolute;
top: -2px;
right: -5px;
z-index: 2;
font-size: 10px;
display: inline-block;
background: #f00;
color: #fff;
padding: 1px 5px 2px 5px;
line-height: 12px;
border-radius: 3px;
margin-left: 10px;
}
ul {
li {
&:hover {
> ul, > div {
}
}
}
}
.is-megamenu {
width: 100%;
border: 1px solid #ccc;
padding: 0 15px;
background: #fff;
display: none;
@include box-shadow(0 5px 13px rgba(0, 0, 0, 0.2));
z-index: 7;
@media only screen and (min-width: 768px) {
position: absolute;
top: 59px;
left: 0;
}
.megamenu-row {
padding-top: 15px;
padding-bottom: 15px;
+ .megamenu-row {
border-top: 1px solid #ccc;
}
}
.megamenu-row-2 {
background: #f8f8f8;
}
li li {
padding-left: 10px;
}
ul.content {
> li {
> a {
font: $menu-main-font;
color: #333333;
text-transform: uppercase;
}
}
ul {
opacity: 1 !important;
display: block !important;
}
}
}
.menu-title {
position: relative;
background: #F6F6F6;
border-bottom: 3px solid #e9e9e9;
padding: 17px 20px;
font: $menu-main-font;
color: #484848;
text-transform: uppercase;
cursor: pointer;
&:hover {
background: #333333;
color: #fff;
border-bottom-color: #666666;
}
&:after {
position: absolute;
content: $icon;
font-family: 'Material Icons';
height: 30px;
width: 30px;
font-size: 26px;
top: 20px;
right: 6px;
cursor: pointer;
z-index: 1;
}
&.active {
&:after {
content: $icon-active;
}
}
@media only screen and (min-width: 768px) {
display: none;
}
}
.menu-mobile-grover:before {
position: absolute;
content: $icon;
font-family: 'Material Icons';
height: 30px;
width: 30px;
font-size: 26px;
top: 20px;
right: 6px;
cursor: pointer;
z-index: 1;
@media only screen and (min-width: 768px) {
display: none;
}
}
.menu-mobile-grover.active:before {
content: $icon-active;
}
@media only screen and (max-width: 767px) {
.is-simplemenu {
li {
border-top: 1px solid #ccc;
.menu-mobile-grover {
&:before {
top: 8px;
right: 0;
font-size: 18px;
}
}
a {
display: block;
font-size: 14px;
padding: 8px 10px;
}
li {
a {
padding-left: 20px;
}
li {
a {
padding-left: 30px;
}
li {
a {
padding-left: 40px;
}
}
}
}
}
}
li.simple ul {
display: none;
}
.megamenu-col.col-sm-3 {
float: left;
width: 50%;
&.first-in-line-sm {
clear: left;
}
}
}
@media only screen and (max-width: 480px) {
.megamenu-col.col-sm-3 {
width: 100%;
}
}
}
.red {
background: #f00;
}
.menuvideowrapper {
clear: both;
float: none;
height: 0;
padding-bottom: 56.25%;
padding-top: 25px;
position: relative;
width: 100%;
iframe {
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
}
.embed-container {
position: relative;
padding-bottom: 56.25%;
height: 0;
overflow: hidden;
max-width: 100%;
height: auto; }
.embed-container iframe,
.embed-container object,
.embed-container embed {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.frontend-map {
min-height: 200px;
}
/**** Left/Right column menu ****/
.displayLeftColumn_menu, .displayRightColumn_menu {
li {
position: relative;
}
.simple ul {
display: none;
@media only screen and (min-width: 768px) {
position: absolute;
top: -1px;
width: 200px;
border: 1px solid #ccc;
background: #fff;
z-index: 999;
}
@media only screen and (max-width: 767px) {
li {
border-top: 1px solid #ccc;
position: relative;
a {
display: block;
padding: 10px 0 10px 15px;
position: relative;
}
li {
a {
padding-left: 25px;
}
}
}
}
}
.jxmegamenu > li {
border-top: 1px solid #ccc;
position: relative;
> a {
display: block;
padding: 10px 0;
position: relative;
}
&:first-child {
border: none;
}
}
span.menu_badge {
font-size: 10px;
display: inline-block;
background: #f00;
color: #fff;
padding: 1px 5px 2px 5px;
line-height: 12px;
border-radius: 3px;
margin-left: 10px;
}
.simple li a {
padding: 4px 5px;
display: block;
}
.is-megamenu {
display: none;
ul {
display: block !important;
opacity: 1 !important;
&.content {
> li {
> a {
font-weight: bold;
text-transform: uppercase;
}
li {
padding-left: 5px;
}
}
}
}
@media only screen and (min-width: 768px) {
position: absolute;
top: 0;
width: 600px;
padding: 15px;
background: #fff;
border: 1px solid #ccc;
z-index: 999;
}
@media only screen and (min-width: 481px) and (max-width: 767px) {
.megamenu-col.col-sm-3 {
width: 50%;
float: left;
&.first-in-line-sm {
clear: left;
}
}
}
}
.menu-mobile-grover {
&:after {
position: absolute;
right: 0;
top: 12px;
height: 15px;
width: 15px;
line-height: 15px;
font-size: 15px;
content: $icon;
font-family: 'Material Icons';
z-index: 1;
cursor: pointer;
}
&.active {
&:after {
content: $icon-active;
}
}
}
}
.displayLeftColumn_menu li.simple ul {
right: -200px;
}
.displayRightColumn_menu li.simple ul {
left: -200px;
}
.displayLeftColumn_menu div.is-megamenu {
right: -600px;
}
.displayRightColumn_menu div.is-megamenu {
left: -600px;
}

View File

@@ -0,0 +1,5 @@
drwxr-xr-x 4 30094 users 5 Oct 6 10:16 .
drwxr-xr-x 7 30094 users 9 Oct 6 10:16 ..
drwxr-xr-x 4 30094 users 7 Oct 6 10:16 admin
drwxr-xr-x 3 30094 users 6 Oct 6 10:16 hook
-rw-r--r-- 1 30094 users 875 Aug 31 2021 index.php

View File

@@ -0,0 +1,7 @@
drwxr-xr-x 4 30094 users 7 Oct 6 10:16 .
drwxr-xr-x 4 30094 users 5 Oct 6 10:16 ..
drwxr-xr-x 3 30094 users 3 Oct 6 10:16 _configure
drwxr-xr-x 2 30094 users 8 Oct 6 10:16 _partials
-rw-r--r-- 1 30094 users 205148 Aug 31 2021 additem.tpl
-rw-r--r-- 1 30094 users 251256 Aug 31 2021 list.tpl
-rw-r--r-- 1 30094 users 2131 Aug 31 2021 tree-branch.tpl

View File

@@ -0,0 +1,3 @@
drwxr-xr-x 3 30094 users 3 Oct 6 10:16 .
drwxr-xr-x 4 30094 users 7 Oct 6 10:16 ..
drwxr-xr-x 3 30094 users 3 Oct 6 10:16 helpers

View File

@@ -0,0 +1,3 @@
drwxr-xr-x 3 30094 users 3 Oct 6 10:16 .
drwxr-xr-x 3 30094 users 3 Oct 6 10:16 ..
drwxr-xr-x 2 30094 users 3 Oct 6 10:16 form

View File

@@ -0,0 +1,3 @@
drwxr-xr-x 2 30094 users 3 Oct 6 10:16 .
drwxr-xr-x 3 30094 users 3 Oct 6 10:16 ..
-rw-r--r-- 1 30094 users 9298 Aug 31 2021 form.tpl

View File

@@ -0,0 +1,192 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
{extends file="helpers/form/form.tpl"}
{block name="field"}
{if $input.type == 'files_lang'}
<div class="row">
{foreach from=$languages item=language}
{if $languages|count > 1}
<div class="translatable-field lang-{$language.id_lang|escape:'htmlall':'UTF-8'}" {if $language.id_lang != $defaultFormLanguage}style="display:none"{/if}>
{/if}
<div class="col-lg-6">
{if isset($fields[0]['form']['images'])}
<img src="{$image_baseurl|escape:'htmlall':'UTF-8'}{$fields[0]['form']['images'][$language.id_lang|escape:'htmlall':'UTF-8']}" class="img-thumbnail" />
{/if}
<div class="dummyfile input-group">
<input id="{$input.name|escape:'htmlall':'UTF-8'}_{$language.id_lang|escape:'htmlall':'UTF-8'}" type="file" name="{$input.name|escape:'htmlall':'UTF-8'}_{$language.id_lang|escape:'htmlall':'UTF-8'}" class="hide-file-upload" />
<span class="input-group-addon"><i class="icon-file"></i></span>
<input id="{$input.name|escape:'htmlall':'UTF-8'}_{$language.id_lang|escape:'htmlall':'UTF-8'}-name" type="text" class="disabled" name="filename" readonly />
<span class="input-group-btn">
<button id="{$input.name|escape:'htmlall':'UTF-8'}_{$language.id_lang|escape:'htmlall':'UTF-8'}-selectbutton" type="button" name="submitAddAttachments" class="btn btn-default">
<i class="icon-folder-open"></i> {l s='Choose a file' mod='jxmegamenu'}
</button>
</span>
</div>
</div>
{if $languages|count > 1}
<div class="col-lg-2">
<button type="button" class="btn btn-default dropdown-toggle" tabindex="-1" data-toggle="dropdown">
{$language.iso_code|escape:'htmlall':'UTF-8'}
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
{foreach from=$languages item=lang}
<li><a href="javascript:hideOtherLanguage({$lang.id_lang|escape:'htmlall':'UTF-8'});" tabindex="-1">{$lang.name|escape:'htmlall':'UTF-8'}</a></li>
{/foreach}
</ul>
</div>
{/if}
{if $languages|count > 1}
</div>
{/if}
<script>
$(document).ready(function(){
$('#{$input.name|escape:"htmlall":"UTF-8"}_{$language.id_lang|escape:"htmlall":"UTF-8"}-selectbutton').click(function(e){
$('#{$input.name|escape:"htmlall":"UTF-8"}_{$language.id_lang|escape:"htmlall":"UTF-8"}').trigger('click');
});
$('#{$input.name|escape:"htmlall":"UTF-8"}_{$language.id_lang|escape:"htmlall":"UTF-8"}').change(function(e){
var val = $(this).val();
var file = val.split(/[\\/]/);
$('#{$input.name|escape:"htmlall":"UTF-8"}_{$language.id_lang|escape:"htmlall":"UTF-8"}-name').val(file[file.length-1]);
});
});
</script>
{/foreach}
</div>
{/if}
{if $input.type == 'videos_lang'}
<div class="row">
{foreach from=$languages item=language}
{if $languages|count > 1}
<div class="translatable-field lang-{$language.id_lang|escape:'htmlall':'UTF-8'}" {if $language.id_lang != $defaultFormLanguage}style="display:none"{/if}>
{/if}
<div class="col-lg-3">
{if isset($fields[0]['form']['videos'])}
<div class="videowrapper">
{if $fields[0]['form']['types'][$language.id_lang|escape:'htmlall':'UTF-8'] == 'youtube'}
<iframe type="text/html"
src="{$fields[0]['form']['videos'][$language.id_lang|escape:'htmlall':'UTF-8']}?enablejsapi=1&version=3&html5=1&wmode=transparent"
frameborder="0"
wmode="Opaque"></iframe>
{else}
<iframe
src="{$fields[0]['form']['videos'][$language.id_lang|escape:'htmlall':'UTF-8']}"
frameborder="0"
webkitAllowFullScreen
mozallowfullscreen
allowFullScreen>
</iframe>
{/if}
</div>
{else}
{l s='No video yet.' mod='jxmegamenu'}
{/if}
{if isset($fields[0]['form']['types'])}
<input type="hidden" name="type_{$language.id_lang|escape:'htmlall':'UTF-8'}" value="{$fields[0]['form']['types'][$language.id_lang|escape:'htmlall':'UTF-8']}" />
{/if}
</div>
{if $languages|count > 1}
<div class="col-lg-2">
<button type="button" class="btn btn-default dropdown-toggle" tabindex="-1" data-toggle="dropdown">
{$language.iso_code|escape:'htmlall':'UTF-8'}
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
{foreach from=$languages item=lang}
<li><a href="javascript:hideOtherLanguage({$lang.id_lang|escape:'htmlall':'UTF-8'});" tabindex="-1">{$lang.name|escape:'htmlall':'UTF-8'}</a></li>
{/foreach}
</ul>
</div>
{/if}
{if $languages|count > 1}
</div>
{/if}
<script>
$(document).ready(function(){
$('#{$input.name|escape:"htmlall":"UTF-8"}_{$language.id_lang|escape:"htmlall":"UTF-8"}-selectbutton').click(function(e){
$('#{$input.name|escape:"htmlall":"UTF-8"}_{$language.id_lang|escape:"htmlall":"UTF-8"}').trigger('click');
});
$('#{$input.name|escape:"htmlall":"UTF-8"}_{$language.id_lang|escape:"htmlall":"UTF-8"}').change(function(e){
var val = $(this).val();
var file = val.split(/[\\/]/);
$('#{$input.name|escape:"htmlall":"UTF-8"}_{$language.id_lang|escape:"htmlall":"UTF-8"}-name').val(file[file.length-1]);
});
});
</script>
{/foreach}
</div>
{/if}
{if $input.type == 'megamenu_map'}
<div class="row">
<div class="col-lg-4 col-lg-offset-3">
{if isset($fields[0]['form']['latitude']) && isset($fields[0]['form']['longitude'])}
<div id="jxmegamenu_map_{$fields[0]['form']['id']|escape:'htmlall':'UTF-8'}" class="backend-map"></div>
{literal}
<script type="text/javascript">
$(document).ready(function(){
var myLatLng = {lat: {/literal}{$fields[0]['form']['latitude']|escape:'htmlall':'UTF-8'}{literal}, lng: {/literal}{$fields[0]['form']['longitude']|escape:'htmlall':'UTF-8'}{literal}};
var image = '{/literal}{$marker_url|escape:'html':'UTF-8'}{$fields[0]["form"]["marker"]|escape:'htmlall':'UTF-8'}{literal}';
var map = new google.maps.Map(document.getElementById('jxmegamenu_map_{/literal}{$fields[0]["form"]["id"]|escape:"htmlall":"UTF-8"}{literal}'), {
center: myLatLng,
zoom: {/literal}{$fields[0]['form']['scale']|escape:'htmlall':'UTF-8'}{literal},
scrollwheel: false,
mapTypeControl: false,
streetViewControl: false,
draggable:true,
panControl: true,
mapMaker: true,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
}
});
{/literal}{if $fields[0]["form"]["marker"]|escape:"htmlall":"UTF-8"}{literal}
var marker = new google.maps.Marker({
position: myLatLng,
map: map,
icon: image
});
{/literal}{else}{literal}
var marker = new google.maps.Marker({
position: myLatLng,
map: map
});
{/literal}{/if}{literal}
});
</script>
{/literal}
{/if}
</div>
</div>
{/if}
{if $input.type == 'marker_prev'}
<div class="row megamenu-marker-preview">
<div class="col-lg-4 col-lg-offset-3">
{if isset($fields[0]['form']['marker']) && $fields[0]['form']['marker']}
<img src="{$marker_url|escape:'htmlall':'UTF-8'}{$fields[0]['form']['marker']|escape:'htmlall':'UTF-8'}" class="img-thumbnail" />
<button id="remove_map_marker" name='remove_marker' class="btn btn-sm btn-danger"><span>x</span></button>
{/if}
</div>
</div>
{/if}
{$smarty.block.parent}
{/block}

View File

@@ -0,0 +1,8 @@
drwxr-xr-x 2 30094 users 8 Oct 6 10:16 .
drwxr-xr-x 4 30094 users 7 Oct 6 10:16 ..
-rw-r--r-- 1 30094 users 1007 Aug 31 2021 available-select.tpl
-rw-r--r-- 1 30094 users 883 Aug 31 2021 class-select.tpl
-rw-r--r-- 1 30094 users 3258 Aug 31 2021 layout.tpl
-rw-r--r-- 1 30094 users 1324 Aug 31 2021 option.tpl
-rw-r--r-- 1 30094 users 1064 Aug 31 2021 selected-select.tpl
-rw-r--r-- 1 30094 users 2089 Aug 31 2021 settings-modal.tpl

View File

@@ -0,0 +1,33 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
<select multiple="multiple" id="availableItems" class="availible_items" autocomplete="off">
{foreach from=$groups item='group'}
<optgroup label="{$group.title|escape:'htmlall':'UTF-8'}">
{if isset($group.items) && $group.items}
{foreach from=$group.items key='code' item='item'}
{include file='./option.tpl' key=$code item=$item}
{/foreach}
{/if}
</optgroup>
{/foreach}
</select>

View File

@@ -0,0 +1,30 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
<div class="form-group">
<label>{l s='Set column width.' mod='jxmegamenu'}</label>
<select class="form-control" name="col-item-type" autocomplete="off">
{for $foo=2 to 12}
<option {if $foo == $selected}selected="selected"{/if} value="{$foo}">col-{$foo}</option>
{/for}
</select>
</div>

View File

@@ -0,0 +1,67 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
{if isset($layout) && layout}
{foreach from=$layout key='id_row' item='row'}
<div id="megamenu-row-{$id_row|escape:'html':'UTF-8'}" class="megamenu-row">
<div class="row">
<div class="add-column-button-container col-lg-6">
<a class="btn btn-sm btn-success add-megamenu-col" onclick="return false;" href="#">{l s='Add column' mod='jxmegamenu'}</a>
</div>
<div class="remove-row-button col-lg-6 text-right">
<a class="btn btn-sm btn-danger btn-remove-row" onclick="return false;" href="#">{l s='Remove row' mod='jxmegamenu'}</a>
</div>
</div>
<div class="megamenu-row-content row">
{foreach from=$row.items key='id_col' item='item'}
<div id="column-{$id_row|escape:'html':'UTF-8'}-{$item.col|escape:'html':'UTF-8'}" class="megamenu-col megamenu-col-{$item.col|escape:'html':'UTF-8'} col-lg-{$item.width|escape:'html':'UTF-8'}">
<div class="megamenu-col-inner">
{$item.class_select|escape:'quotes':'UTF-8'}
<div class="form-group">
<label>{l s='Enter specific class' mod='jxmegamenu'}</label>
<input class="form-control" type="text" name="col-item-class" value="{$item.class}" autocomplete="off" />
<p class="help-block">{l s='Can not contain special chars, only _ is allowed.(Will be automatically replaced)' mod='jxmegamenu'}</p>
</div>
<div class="form-group">
<label>{l s='Select content' mod='jxmegamenu'}</label>
{$item.choices_select|escape:'quotes':'UTF-8'}
</div>
<div class="form-group buttons-group">
<a class="add-item-to-selected btn btn-sm btn-default" onclick="return false;" href="#">{l s='Add' mod='jxmegamenu'}</a>
<a class="remove-item-from-selected btn btn-sm btn-default" onclick="return false;" href="#">{l s='Remove' mod='jxmegamenu'}</a>
</div>
<div class="form-group">
<label>{l s='Selected items' mod='jxmegamenu'}</label>
{$item.menu_options|escape:'quotes':'UTF-8'}
</div>
<div class="remove-block-button">
<a href="#" class="btn btn-sm btn-default btn-remove-column" onclick="return false;">{l s='Remove block' mod='jxmegamenu'}</a>
</div>
</div>
<input type="hidden" value="{$item.col_data|escape:'html':'UTF-8'}" name="col_content" />
</div>
{/foreach}
</div>
<input type="hidden" name="row_content" value="{$row.row_data|escape:'html':'UTF-8'}" />
</div>
{/foreach}
{/if}

View File

@@ -0,0 +1,39 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
{if isset($item.items) && $item.items}
<option value="{$key|escape:'htmlall':'UTF-8'}">{$item.title|escape:'quotes':'UTF-8'}</option>
{foreach from=$item.items key='icode' item='i'}
{include file='./option.tpl' key=$icode item=$i}
{/foreach}
{else}
{if isset($item.title) && $item.title}
<option value="{$key|escape:'htmlall':'UTF-8'}">{$item.title|escape:'quotes':'UTF-8'}</option>
{else}
<option value="{$key|escape:'htmlall':'UTF-8'}">{$item|escape:'quotes':'UTF-8'}</option>
{/if}
{/if}
{if isset($item.pages) && $item.pages}
{foreach from=$item.pages item='page'}
<option style="font-style: italic;" value="CMS{$page.id|escape:'htmlall':'UTF-8'}">{$page.name|escape:'quotes':'UTF-8'}</option>
{/foreach}
{/if}

View File

@@ -0,0 +1,31 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
{if isset($options) && $options}
<select multiple="multiple" name="{$options.name|escape:'html':'UTF-8'}" {if isset($options.id)}id="{$options.id|escape:'html':'UTF-8'}"{/if} {if isset($options.autocomplete)}autocomplete="off"{/if}>
{if isset($options.options)}
{foreach from=$options.options key='code' item='name'}
<option selected="selected" value="{$code|escape:'html':'UTF-8'}">{$name|escape:'html':'UTF-8'}</option>
{/foreach}
{/if}
</select>
{/if}

View File

@@ -0,0 +1,53 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
<div class="modal fade bs-example-modal-lg" id="myModalSettings" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title">{l s='Menu\'s general settings' mod='jxmegamenu'}</h4>
</div>
<div class="modal-body">
<div class="form-wrapper">
<form class="form-horizontal">
<div class="form-group">
<label class="control-label col-lg-2">{l s='Google Map API' mod='jxmegamenu'}</label>
<div class="col-lg-10">
<div class="form-group no-indent">
<div class="col-lg-6">
<input data-name="googleapi" class="form-control" name="googleapi" value="{if isset($settings->googleapi) && $settings->googleapi}{$settings->googleapi|escape:'html':'UTF-8'}{/if}" />
<p class="help-block no-indent">{l s='Enter your Google Map API code here' mod='jxmegamenu'}</p>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="modal-footer clearfix">
<button id="save-settings" class="btn btn-sm btn-success" >{l s='Save settings' mod='jxmegamenu'}</button>
</div>
</div>
<div class="modal-loader"><span class="loader-gif"></span></div>
</div>
</div>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,51 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
{if isset($node.id) && $node.id}
{assign var="id" value=$node.id}
{elseif isset($node.id_cms_category) && $node.id_cms_category}
{assign var="id" value=$node.id_cms_category}
{elseif isset($node.id_jxblog_category) && $node.id_jxblog_category}
{assign var="id" value=$node.id_jxblog_category}
{/if}
{if isset($node.is_cms) && $node.is_cms}
{assign var='item' value="CMS_CAT{$id}"}
{elseif isset($node.is_cms_page) && $node.is_cms_page}
{assign var='item' value="CMS{$id}"}
{elseif isset($node.id_jxblog_category) && $node.id_jxblog_category}
{assign var='item' value="BLOG{$id}"}
{else}
{assign var='item' value="CAT{$id}"}
{/if}
<option value="{$item|escape:'htmlall':'UTF-8'}"{if $item == $active} selected="selected"{/if} {if isset($node.level_depth) && $node.level_depth}style="padding-left:{7*$node.level_depth|escape:'htmlall':'UTF-8'}px"{/if} class="{if isset($node.is_cms) && $node.is_cms}cms{elseif isset($node.is_cms_page) && $node.is_cms_page}cms_page{elseif isset($node.id_jxblog_category) && $node.id_jxblog_category}blog-categoty{else}category{/if}">
{$node.name|escape:'html':'UTF-8'}
{if isset($node.children) && $node.children|@count > 0}
{foreach from=$node.children item=child name=categoryTreeBranch}
{include file="$branche_tpl_path" node=$child active=$active}
{/foreach}
{/if}
{if isset($node.pages) && $node.pages|@count > 0}
{foreach from=$node.pages item=child name=categoryTreeBranch}
{include file="$branche_tpl_path" node=$child active=$active}
{/foreach}
{/if}
</option>

View File

@@ -0,0 +1,6 @@
drwxr-xr-x 3 30094 users 6 Oct 6 10:16 .
drwxr-xr-x 4 30094 users 5 Oct 6 10:16 ..
drwxr-xr-x 2 30094 users 16 Oct 6 10:16 items
-rw-r--r-- 1 30094 users 646 Aug 31 2021 jxmegamenu-header.tpl
-rw-r--r-- 1 30094 users 2773 Aug 31 2021 jxmegamenu-script.tpl
-rw-r--r-- 1 30094 users 3081 Aug 31 2021 jxmegamenu.tpl

View File

@@ -0,0 +1,16 @@
drwxr-xr-x 2 30094 users 16 Oct 6 10:16 .
drwxr-xr-x 3 30094 users 6 Oct 6 10:16 ..
-rw-r--r-- 1 30094 users 1228 Aug 31 2021 banner.tpl
-rw-r--r-- 1 30094 users 1338 Aug 31 2021 blog-categories-tree-branch.tpl
-rw-r--r-- 1 30094 users 1324 Aug 31 2021 blog-categories-tree.tpl
-rw-r--r-- 1 30094 users 1104 Aug 31 2021 categories-tree-branch.tpl
-rw-r--r-- 1 30094 users 1230 Aug 31 2021 categories-tree.tpl
-rw-r--r-- 1 30094 users 1510 Aug 31 2021 cms-tree-branch.tpl
-rw-r--r-- 1 30094 users 1484 Aug 31 2021 cms-tree.tpl
-rw-r--r-- 1 30094 users 687 Aug 31 2021 html.tpl
-rw-r--r-- 1 30094 users 1077 Aug 31 2021 link-list.tpl
-rw-r--r-- 1 30094 users 727 Aug 31 2021 link.tpl
-rw-r--r-- 1 30094 users 903 Aug 31 2021 map.tpl
-rw-r--r-- 1 30094 users 1034 Aug 31 2021 post.tpl
-rw-r--r-- 1 30094 users 1644 Aug 31 2021 product.tpl
-rw-r--r-- 1 30094 users 1357 Aug 31 2021 video.tpl

View File

@@ -0,0 +1,37 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
{if isset($banner) && $banner}
<li class="megamenu_banner{if $banner.specific_class} {$banner.specific_class}{/if}">
<a href="{$banner.url}" {if $banner.blank}target="_blank"{/if}>
<img class="img-responsive img-fluid" src="{$image_baseurl}{$banner.image}" alt="{$banner.title}" />
{if isset($banner.public_title) && $banner.public_title}
{$banner.public_title nofilter}
{/if}
{if isset($banner.description) && $banner.description}
<div class="description">
{$banner.description nofilter}
</div>
{/if}
</a>
</li>
{/if}

View File

@@ -0,0 +1,34 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
{if isset($items) && $items}
<ul>
{foreach from=$items item='item'}
<li class="category{if isset($page.page_name) && $page.page_name == 'module-jxblog-category' && $id_selected == $item.id_category} sfHoverForce{/if}">
<a data-blog-category-image="{JXBlogImageManager::getImage('category_thumb', $item.id_category, 'category_listing')}" href="{url entity='module' name='jxblog' controller='category' params = ['id_jxblog_category' => $item.id_category, 'rewrite' => $item.link_rewrite]}" title="{$item.name}">{$item.name}</a>
{if isset($item.children) && $item.children}
{include file='./blog-categories-tree-branch.tpl' items=$item.children id_selected=$id_selected}
{/if}
</li>
{/foreach}
</ul>
{/if}

View File

@@ -0,0 +1,32 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
{if isset($tree) && $tree}
{foreach from=$tree item='branch'}
<li class="category{if isset($page.page_name) && $page.page_name == 'module-jxblog-category' && $id_selected == $branch.id_category} sfHoverForce{/if}">
<a data-blog-category-image="{JXBlogImageManager::getImage('category_thumb', $branch.id_category, 'category_listing')}" href="{url entity='module' name='jxblog' controller='category' params = ['id_jxblog_category' => $branch.id_category, 'rewrite' => $branch.link_rewrite]}" title="{$branch.name}">{$branch.name}</a>
{if isset($branch.children) && $branch.children}
{include file='./blog-categories-tree-branch.tpl' items=$branch.children id_selected=$id_selected}
{/if}
</li>
{/foreach}
{/if}

View File

@@ -0,0 +1,34 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
{if isset($items) && $items}
<ul>
{foreach from=$items item='item'}
<li class="category{if isset($page.page_name) && $page.page_name == 'category' && $id_selected == $item.id_category} sfHoverForce{/if}">
<a href="{$link->getCategoryLink($item.id_category)}" title="{$item.name}">{$item.name}</a>
{if isset($item.children) && $item.children}
{include file='./categories-tree-branch.tpl' items=$item.children id_selected=$id_selected}
{/if}
</li>
{/foreach}
</ul>
{/if}

View File

@@ -0,0 +1,36 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
{if isset($tree) && $tree}
{foreach from=$tree item='branch'}
<li class="category{if isset($page.page_name) && $page.page_name == 'category' && $id_selected == $branch.id_category} sfHoverForce{/if}">
{assign var='url' value=$link->getPageLink('index')}
{if $branch.level_depth > 1}
{assign var='url' value=$link->getCategoryLink($branch.id_category)}
{/if}
<a href="{$url}" title="{$branch.name}">{$branch.name}</a>
{if isset($branch.children) && $branch.children}
{include file='./categories-tree-branch.tpl' items=$branch.children id_selected=$id_selected}
{/if}
</li>
{/foreach}
{/if}

View File

@@ -0,0 +1,41 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
{if isset($items) && $items}
<ul>
{foreach from=$items item='item'}
<li class="cms-category{if isset($page.page_name) && $page.page_name == 'cms' && $id_selected == $item.id_cms_category} sfHoverForce{/if}">
<a href="{$link->getCMSCategoryLink($item.id_cms_category)}" title="{$item.title}">{$item.title}</a>
{if isset($item.children) && $item.children}
{include file='./cms-tree-branch.tpl' items=$item.children id_selected=$id_selected id_selected_page=id_selected_page}
{/if}
</li>
{if isset($item.pages) && $item.pages}
{foreach from=$item.pages item='page'}
<li class="cms-page{if isset($page.page_name) && $page.page_name == 'cms' && $id_selected_page == $page.id} sfHoverForce{/if}">
<a href="{$link->getCMSLink($page.id)}" title="{$page.name}">{$page.name}</a>
</li>
{/foreach}
{/if}
{/foreach}
</ul>
{/if}

View File

@@ -0,0 +1,39 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
{if isset($tree) && $tree}
{foreach from=$tree item='branch'}
<li class="cms-category{if isset($page.page_name) && $page.page_name == 'cms' && $id_selected == $branch.id_cms_category} sfHoverForce{/if}">
<a href="{$link->getCMSCategoryLink($branch.id_cms_category)}" title="{$branch.title}">{$branch.title}</a>
{if isset($branch.children) && $branch.children}
{include file='./cms-tree-branch.tpl' items=$branch.children id_selected=$id_selected id_selected_page=id_selected_page}
{/if}
</li>
{if isset($branch.pages) && $branch.pages}
{foreach from=$branch.pages item='page'}
<li class="cms-page{if isset($page.page_name) && $page.page_name == 'cms' && $id_selected_page == $page.id} sfHoverForce{/if}">
<a href="{$link->getCMSLink($page.id)}" title="{$page.name}">{$page.name}</a>
</li>
{/foreach}
{/if}
{/foreach}
{/if}

View File

@@ -0,0 +1,26 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
<li class="html{if $specific_class} {$specific_class}{/if}">
<h3>{$title}</h3>
{$content nofilter}
</li>

View File

@@ -0,0 +1,37 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
{if isset($list)}
<li class="{$list.class}{if isset($list.selected) && $list.selected}{$list.selected}{/if}">
<a href="{$list.url}" title="{$list.title}">{$list.title}</a>
{if isset($list.items)}
<ul>
{foreach from=$list.items item='item'}
<li {if isset($item.selected) && $item.selected}{$item.selected nofilter}{/if}>
<a href="{$item.url}" title="{$item.name}">{$item.name}</a>
</li>
{/foreach}
</ul>
{/if}
</li>
{/if}

View File

@@ -0,0 +1,25 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
<li {if $selected}{$selected nofilter}{/if}>
<a {if isset($target) && $target}target="_blank"{/if} href="{$lnk}" title="{$name}">{$name}</a>
</li>

View File

@@ -0,0 +1,33 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
{if isset($map) && $map && $map.latitude && $map.longitude}
<li class="megamenu_map">
<h5>{$map.title}</h5>
<div id="jxmegamenu_map_{$map.id}" class="frontend-map"></div>
{if $map.description}
<div class="megamenu-map-description">
{$map.description nofilter}
</div>
{/if}
</li>
{/if}

View File

@@ -0,0 +1,35 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
{if isset($jxpost) && $jxpost}
<li class="post-thumbnail">
<div class="post-container">
<h3 class="post-name">{$jxpost->name}</h3>
<div class="post-image">
<a href="{$url}"><img class="img-fluid" src="{JXBlogImageManager::getImage('post_thumb', $jxpost->id, 'post_listing')}" alt="{$jxpost->name}" /></a>
</div>
<div class="post-description">
{$jxpost->short_description}
</div>
</div>
</li>
{/if}

View File

@@ -0,0 +1,51 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
{if isset($product) && $product}
<li {if isset($selected) && $selected}{$selected nofilter}{/if}>
<div class="product product-{$product.id_product}">
<div class="product-image">
<a href="{$product.url}" title="{$product.name}">
<img class="img-responsive" src="{$product.cover.bySize.home_default.url}" alt="{$product.cover.legend}"/>
</a>
</div>
<h5 class="product-name">
<a href="{$product.url}" title="{$product.name}">
{$product.name}
</a>
</h5>
<div class="product-description">
{if $product.description_short}{$product.description_short nofilter}{/if}
</div>
<div class="product-price">
{if $product.has_discount}
<span class="regular-price">{$product.regular_price}</span>
{if $product.discount_type === 'percentage'}
<span class="discount-percentage">{$product.discount_percentage}</span>
{/if}
{/if}
<span class="price">{$product.price}</span>
</div>
</div>
</li>
{/if}

View File

@@ -0,0 +1,44 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
{if isset($video) && $video}
<li class="megamenu_video">
<h5>{$video.title}</h5>
{if $video.type == 'youtube'}
<div class="menuvideowrapper">
<iframe
src="{$video.url}?enablejsapi=1&version=3&html5=1"
frameborder="0"></iframe>
</div>
{elseif $video.type == 'vimeo'}
<div class='embed-container'>
<iframe
src="{$video.url}"
frameborder="0"
webkitAllowFullScreen
mozallowfullscreen
allowFullScreen>
</iframe>
</div>
{/if}
</li>
{/if}

View File

@@ -0,0 +1,25 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
{if $google_script}
<script src="{$google_script}"></script>
{/if}

View File

@@ -0,0 +1,68 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
<script type="text/javascript">
{foreach from=$maps item=map}
{if isset($map) && $map && $map.latitude && $map.longitude}
{literal}
$(document).ready(function() {
$('#jxmegamenu_map_{/literal}{$map.id_item}{literal}').parents('.top-level-menu-li').one('mouseenter click', function() {
setTimeout(function() {
initMap{/literal}{$map.id_item}{literal}()
}, 300)
});
});
function initMap{/literal}{$map.id_item}{literal}() {
var myLatLng{/literal}{$map.id_item}{literal} = {
lat : {/literal}{$map.latitude}{literal},
lng : {/literal}{$map.longitude}{literal}};
var map_element{/literal}{$map.id_item}{literal} = document.getElementById('jxmegamenu_map_{/literal}{$map.id_item}{literal}');
var image = '{/literal}{$map.icon}{literal}';
var map{/literal}{$map.id_item}{literal} = new google.maps.Map(map_element{/literal}{$map.id_item}{literal}, {
center : myLatLng{/literal}{$map.id_item}{literal},
zoom : {/literal}{$map.scale}{literal},
scrollwheel : false,
mapTypeControl : false,
streetViewControl : false,
draggable : true,
panControl : false,
mapTypeControlOptions : {
style : google.maps.MapTypeControlStyle.DROPDOWN_MENU
}
});
{/literal}{if $map.icon}{literal}
var marker{/literal}{$map.id_item}{literal} = new google.maps.Marker({
position : myLatLng{/literal}{$map.id_item}{literal},
map : map{/literal}{$map.id_item}{literal},
icon : image
});
{/literal}{else}{literal}
var marker{/literal}{$map.id_item}{literal} = new google.maps.Marker({
position : myLatLng{/literal}{$map.id_item}{literal},
map : map{/literal}{$map.id_item}{literal},
});
{/literal}{/if}{literal}
}
{/literal}
{/if}
{/foreach}
</script>

View File

@@ -0,0 +1,84 @@
{*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*}
{if isset($menu) && $menu}
{if $hook == 'left_column' || $hook == 'right_column'}
<section class="block">
<h4 class="title_block">{l s='Menu' mod='jxmegamenu'}</h4>
<div class="block_content {$hook}_menu column_menu top-level jxmegamenu_item">
{else}
<div class="{$hook}_menu top-level jxmegamenu_item">
<div class="menu-title jxmegamenu_item">{l s='Menu' mod='jxmegamenu'}</div>
{/if}
<ul class="jxmegamenu clearfix top-level-menu jxmegamenu_item">
{foreach from=$menu key=id item='item'}
<li class="{$item.specific_class}{if $item.is_simple} simple{/if} top-level-menu-li jxmegamenu_item {$item.unique_code} {if isset($item.selected) && $item.selected}{$item.selected}{/if}">
{if $item.url}
<a class="{$item.unique_code} top-level-menu-li-a jxmegamenu_item" href="{$item.url}">
{else}
<span class="{$item.unique_code} top-level-menu-li-span jxmegamenu_item">
{/if}
{if $item.title}{$item.title}{/if}
{if $item.badge}
<span class="menu_badge {$item.unique_code} top-level-badge jxmegamenu_item">{$item.badge}</span>
{/if}
{if $item.url}
</a>
{else}
</span>
{/if}
{if $item.is_simple}
<ul class="is-simplemenu jxmegamenu_item first-level-menu {$item.unique_code}">
{if isset($item.submenu)}
{$item.submenu nofilter}
{/if}
</ul>
{/if}
{if $item.is_mega}
<div class="is-megamenu jxmegamenu_item first-level-menu {$item.unique_code}">
{if isset($item.submenu)}
{foreach from=$item.submenu key='id_row' item='row'}
<div id="megamenu-row-{$id}-{$id_row}" class="megamenu-row row megamenu-row-{$id_row}">
{if isset($row)}
{foreach from=$row item='col'}
<div id="column-{$id}-{$id_row}-{$col.col}" class="megamenu-col megamenu-col-{$id_row}-{$col.col} col-sm-{$col.width} {$col.class}">
<ul class="content">
{$col.content nofilter}
</ul>
</div>
{/foreach}
{/if}
</div>
{/foreach}
{/if}
</div>
{/if}
</li>
{/foreach}
</ul>
{if $hook == 'left_column' || $hook == 'right_column'}
</div>
</section>
{else}
</div>
{/if}
{/if}

View File

@@ -0,0 +1,32 @@
<?php
/*
* 2017-2019 Zemez
*
* JX Mega Menu
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*/
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;