diff --git a/administrator/language/en-GB/en-GB.plg_system_helixultimate.ini b/administrator/language/en-GB/en-GB.plg_system_helixultimate.ini
index 558c6208..3c9d7c34 100644
--- a/administrator/language/en-GB/en-GB.plg_system_helixultimate.ini
+++ b/administrator/language/en-GB/en-GB.plg_system_helixultimate.ini
@@ -88,6 +88,8 @@ HELIX_ULTIMATE_LOADER_CIRCLE_TWO="Two Circles"
HELIX_ULTIMATE_LOADER_CLOCK="Clock"
HELIX_ULTIMATE_LOADER_LOGO="Logo"
HELIX_ULTIMATE_ENABLE_BOXED_LAYOUT="Boxed Layout"
+HELIX_ULTIMATE_CONTAINER_MAX_WIDTH="Container Max Width (px)"
+HELIX_ULTIMATE_CONTAINER_MAX_WIDTH_DESC="Set the max width of the container. (Not applicable for Tablet & Mobile devices)
If you don't want to set the maximum width, leave the field blank"
HELIX_ULTIMATE_BODY_BACKGROUND_IMAGE="Background Image"
HELIX_ULTIMATE_COPYRIGHT="Copyright"
HELIX_ULTIMATE_GO_TO_TOP="Go to Top"
@@ -145,6 +147,7 @@ HELIX_ULTIMATE_PAGE_TITLE_HEADING="Heading H1 or H2"
HELIX_ULTIMATE_PAGE_TITLE_HEADING_DESC="Set the page title to be either an <h1> or <h2> element."
HELIX_ULTIMATE_SELECT_OFFCANVAS="Select Off-canvas"
HELIX_ULTIMATE_SELECT_OFFCANVAS_DESC="Select an off-canvas for mobile menu."
+HELIX_ULTIMATE_FEATURED="Featured"
;Page Title
HELIX_ULTIMATE_PAGE_TITLE="Page Title"
@@ -180,6 +183,22 @@ HELIX_ULTIMATE_BLOG_POST_FORMAT_VIDEO_DESCRIPTION="Add YouTube or Vimeo full URL
HELIX_ULTIMATE_IMAGE_LARGE_CROP_QUALITY="Quality"
HELIX_ULTIMATE_IMAGE_LARGE_CROP_QUALITY_DESC="Set image quality for better compressions. Applicable for JPG images only."
HELIX_ULTIMATE_BLOG_DETAILS_REMOVE_CONTAINER="Full-width Layout"
+HELIX_ULTIMATE_BLOG_LIST_TYPE="List Type"
+HELIX_ULTIMATE_BLOG_LIST_TYPE_DEFAULT="Default"
+HELIX_ULTIMATE_BLOG_LIST_TYPE_MASONRY="Masonry"
+HELIX_ULTIMATE_BLOG_READ_TIME="Read Time"
+HELIX_ULTIMATE_BLOG_READ_TIME_DESC="Display estimated article Read Time in minutes"
+
+HELIX_ULTIMATE_BLOG_LIST_DISABLE_MODULE="Disable Modules"
+HELIX_ULTIMATE_BLOG_LIST_DISABLE_MODULE_DESC="This option will disable all modules from the selected field from article list page."
+HELIX_ULTIMATE_BLOG_LIST_DISABLE_MODULE_POSITIONS="Disable Positions"
+HELIX_ULTIMATE_BLOG_LIST_DISABLE_MODULE_POSITIONS_DESC="Select which module positions you want to disable"
+HELIX_ULTIMATE_BLOG_DETAILS_DISABLE_MODULE="Disable Modules"
+HELIX_ULTIMATE_BLOG_DETAILS_DISABLE_MODULE_DESC="This option will disable all modules from the selected filed from article details page."
+HELIX_ULTIMATE_BLOG_DETAILS_DISABLE_MODULE_POSITIONS="Disable Positions"
+HELIX_ULTIMATE_BLOG_DETAILS_DISABLE_MODULE_POSITIONS_DESC="Select which module positions you want to disable"
+HELIX_ULTIMATE_BLOG_MINUTE_READ="minute read"
+HELIX_ULTIMATE_BLOG_MINUTES_READ="minutes read"
;Layout
HELIX_ULTIMATE_SECTION_TITLE="Section"
@@ -348,4 +367,7 @@ COM_FINDER_ADVANCED_TIPS="
Entering this and that into the se
HELIX_ULTIMATE_HEADER_STICKY_OFFSET="Sticky Offset"
HELIX_ULTIMATE_HEADER_STICKY_OFFSET_DESC="After which scroll offset the header being sticky."
HELIX_ULTIMATE_BLOG_IMAGE_ALT_TEXT="Image Alt Text"
-HELIX_ULTIMATE_BLOG_IMAGE_ALT_TEXT_DESCRIPTION="This field isn't required. So, if you leave this field then alt text will get from title."
\ No newline at end of file
+HELIX_ULTIMATE_BLOG_IMAGE_ALT_TEXT_DESCRIPTION="This field isn't required. So, if you leave this field then alt text will get from title."
+
+HELIX_ULTIMATE_STICKY_POSITION="Position Sticky"
+HELIX_ULTIMATE_STICKY_POSITION_DESC="The viewport doesn’t change when the window is scrolled, so a fixed positioned element will stay right/left where it is when the page is scrolled"
\ No newline at end of file
diff --git a/gulpfile.js b/gulpfile.js
index 43c35995..81958aab 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -14,9 +14,9 @@ const config = {
srcPath: path.resolve(__dirname),
buildPath: path.resolve(__dirname, './package/'),
qsPath: path.resolve(__dirname, './package/helix_ultimate_quickstart/'),
- qsPackageName: 'helixultimate_quickstart_j4_2.0.18.zip',
- packageName: 'helixultimate_template_v2.0.18.zip',
- pluginPackageName: 'plg_system_helixultimate_v2.0.18.zip',
+ qsPackageName: 'helixultimate_quickstart_j4_2.1.0.zip',
+ packageName: 'helixultimate_template_v2.1.0.zip',
+ pluginPackageName: 'plg_system_helixultimate_v2.1.0.zip',
templateFileExtensions: 'xml, json, php, png, scss, js, ico, svg, jpg, eot, ttf, woff, woff2, otf, css, html',
pluginFileExtensions: function () {
return this.templateFileExtensions + ', ini';
diff --git a/language/en-GB/en-GB.tpl_shaper_helixultimate.ini b/language/en-GB/en-GB.tpl_shaper_helixultimate.ini
index 66d43a58..d2b98eaf 100644
--- a/language/en-GB/en-GB.tpl_shaper_helixultimate.ini
+++ b/language/en-GB/en-GB.tpl_shaper_helixultimate.ini
@@ -243,8 +243,6 @@ HELIX_ULTIMATE_BLOG_SOCIAL_SHARE_LIST_DESC="Add or remove social share button as
HELIX_ULTIMATE_BLOG_SOCIAL_SHARE_FACEBOOK="Facebook"
HELIX_ULTIMATE_BLOG_SOCIAL_SHARE_TWITTER="X (formerly Twitter)"
HELIX_ULTIMATE_BLOG_SOCIAL_SHARE_LINKEDIN="Linkedin"
-HELIX_ULTIMATE_BLOG_DETAILS_DISABLE_MODULE="Disable Modules"
-HELIX_ULTIMATE_BLOG_DETAILS_DISABLE_MODULE_DESC="This option will disable all modules from the left or right sidebar from article details page."
HELIX_ULTIMATE_BLOG_DETAILS_READING_TIME_PROGRESS="Reading Time Progress Bar"
HELIX_ULTIMATE_BLOG_DETAILS_READING_TIME_PROGRESS_DESC="Show reading progress bar in blog details page."
HELIX_ULTIMATE_BLOG_DETAILS_READING_TIME_PROGRESS_BG_COLOR="Background Color"
diff --git a/plugins/system/helixultimate/assets/css/admin/blog-options.css b/plugins/system/helixultimate/assets/css/admin/blog-options.css
index d43ee726..4dbfdfe3 100644
--- a/plugins/system/helixultimate/assets/css/admin/blog-options.css
+++ b/plugins/system/helixultimate/assets/css/admin/blog-options.css
@@ -10,13 +10,13 @@
}
.hu-image-upload-wrapper {
- width: 200px;
+ width: 290px;
display: block;
margin-bottom: 20px;
}
.hu-image-upload-wrapper:not(.loading) {
- height: 200px;
+ max-height: 290px;
background: #f5f5f5;
padding: 5px;
border: 1px solid #e5e5e5;
diff --git a/plugins/system/helixultimate/assets/css/admin/helix-ultimate.css b/plugins/system/helixultimate/assets/css/admin/helix-ultimate.css
index 8f8b8c95..f78fe786 100644
--- a/plugins/system/helixultimate/assets/css/admin/helix-ultimate.css
+++ b/plugins/system/helixultimate/assets/css/admin/helix-ultimate.css
@@ -2144,7 +2144,6 @@ select:focus::-ms-value {
.hu-topbar .topbar-left {
display: flex;
align-items: center;
- min-width: 400px;
}
.hu-topbar .topbar-middle {
@@ -2152,7 +2151,6 @@ select:focus::-ms-value {
align-items: center;
text-align: center;
justify-content: center;
- min-width: 400px;
transition: all 0.3s ease;
}
@@ -2209,7 +2207,6 @@ select:focus::-ms-value {
max-width: 450px;
border-left: 1px solid #f1f1f1;
margin-right: 20px;
- min-width: 400px;
}
.hu-topbar .topbar-right .hu-btn:not(:last-child) {
@@ -2242,32 +2239,6 @@ select:focus::-ms-value {
fill: rgb(var(--primary));
}
-@media (max-width: 576px) {
- .hu-topbar .topbar-middle {
- display: none;
- }
- .hu-topbar .topbar-right .helix-topbar-save-text {
- display: none;
- }
-
- .hu-btn svg {
- margin-right: 0 !important;
- }
-
- .hu-topbar .topbar-right .helix-topbar-show-preview-text {
- display: none;
- }
-}
-
-@media (max-width: 768px) {
- .hu-topbar .topbar-middle {
- display: none;
- }
- .hu-topbar .topbar-right {
- border-left: 0;
- }
-}
-
.hu-edit-panel {
background: #eff4fb;
width: 420px;
@@ -3671,3 +3642,54 @@ input[type='color'] {
.hu-no-gutter-bottom .hu-inline-group {
margin-bottom: 0px !important;
}
+
+/* Media css */
+@media (max-width: 768px) {
+ .hu-topbar .topbar-left {
+ min-width: auto;
+ }
+ .hu-topbar .topbar-middle {
+ display: none;
+ min-width: auto;
+ }
+ .hu-topbar .topbar-right {
+ border-left: 0;
+ min-width: auto;
+ }
+}
+@media (max-width: 576px) {
+ .hu-topbar .topbar-left {
+ min-width: auto;
+ }
+ .hu-topbar .topbar-middle {
+ display: none;
+ min-width: auto;
+ }
+ .hu-topbar .topbar-right {
+ min-width: auto;
+ }
+ .hu-topbar .topbar-right .helix-topbar-save-text {
+ display: none;
+ }
+
+ .hu-btn svg {
+ margin-right: 0 !important;
+ }
+
+ .hu-topbar .topbar-right .helix-topbar-show-preview-text {
+ display: none;
+ }
+
+ #hu-options-panel {
+ width: 44px;
+ }
+ .hu-fieldset-header .hu-option-title {
+ display: none;
+ }
+ .hu-panel-position-left .hu-fieldset-contents {
+ top: 12%;
+ right: 0;
+ width: 100%;
+ position: fixed;
+ }
+}
\ No newline at end of file
diff --git a/plugins/system/helixultimate/assets/js/admin/layout.js b/plugins/system/helixultimate/assets/js/admin/layout.js
index a98925b7..3895aa58 100644
--- a/plugins/system/helixultimate/assets/js/admin/layout.js
+++ b/plugins/system/helixultimate/assets/js/admin/layout.js
@@ -12,7 +12,6 @@ jQuery(function ($) {
event.stopPropagation();
$(this).closest('li').find('.hu-column-list').slideToggle(300);
- console.log('click fired');
});
/** Close the hu-column-list on select. */
@@ -32,9 +31,7 @@ jQuery(function ($) {
opacity: 1,
tolerance: 'pointer',
start(_, ui) {
- $('.hu-layout-section [data-hu-layout-row]')
- .find('.ui-state-highlight')
- .addClass($(ui.item).attr('class'));
+ $('.hu-layout-section [data-hu-layout-row]').find('.ui-state-highlight').addClass($(ui.item).attr('class'));
$('.hu-layout-section [data-hu-layout-row]')
.find('.ui-state-highlight')
.css('height', $(ui.item).outerHeight());
@@ -82,7 +79,6 @@ jQuery(function ($) {
// setInputValue Callback Function
$.fn.setInputValue = function (options) {
- console.log(options);
if (this.attr('type') == 'checkbox') {
if (options.field == '1') {
this.attr('checked', 'checked');
@@ -124,16 +120,6 @@ jQuery(function ($) {
// color picker initialize
$.fn.initColorPicker = function () {
Joomla.initColorPicker(this.find('.minicolors'));
- // this.find('.minicolors').each(function () {
- // $(this).minicolors({
- // control: 'hue',
- // position: 'bottom',
- // theme: 'bootstrap',
- // keywords: 'transparent, initial, inherit',
- // letterCase: 'uppercase',
- // opacity: true,
- // });
- // });
};
// Open Row settings Modal
@@ -213,10 +199,26 @@ jQuery(function ($) {
$clone = $('.hu-options-modal-inner').html($clone.removeAttr('id').addClass('hu-options-modal-content'));
+ var removeSticky = true;
+
$clone.find('.hu-input').each(function () {
var $that = $(this),
+ attrName = $that.data('attrname'),
attrValue = $parent.data($that.data('attrname'));
$that.setInputValue({ field: attrValue });
+
+ if ((attrName == 'name' && attrValue == 'right') || (attrName == 'name' && attrValue == 'left')) {
+ removeSticky = false;
+ }
+
+ if (removeSticky) {
+ if (attrName == 'sticky_position') {
+ if ($that.prop('checked')) {
+ $that.prop('checked', false);
+ }
+ $that.closest('.control-group').hide();
+ }
+ }
});
$clone.find('select.hu-input').each(function () {
@@ -224,6 +226,19 @@ jQuery(function ($) {
});
$clone.initColorPicker();
+
+ var $chosenSelect = $('select[data-attrname="name"]').chosen();
+ // Add change event listener to the Chosen select
+ $chosenSelect.on('change', function () {
+ var selectedValue = $(this).val();
+
+ if (selectedValue == 'right' || selectedValue == 'left') {
+ $(this).closest('.control-group').next().show();
+ } else {
+ $(this).closest('.control-group').next().hide();
+ $(this).closest('.control-group').next().find('.hu-input-sticky_position').prop('checked', false);
+ }
+ });
});
$('.hu-input-column_type').change(function (event) {
@@ -425,7 +440,7 @@ jQuery(function ($) {
Joomla.HelixToaster.success(
'Grid pattern updated to ' + newLayout.join('+') + '',
- 'Layout Settings'
+ 'Layout Settings',
);
updateLayoutField();
});
@@ -525,7 +540,7 @@ jQuery(function ($) {
Joomla.HelixToaster.success(
'Grid pattern updated to ' + newLayout.join('+') + '',
- 'Layout Settings'
+ 'Layout Settings',
);
updateLayoutField();
diff --git a/plugins/system/helixultimate/assets/js/sticky-sidebar.js b/plugins/system/helixultimate/assets/js/sticky-sidebar.js
new file mode 100644
index 00000000..1af36a78
--- /dev/null
+++ b/plugins/system/helixultimate/assets/js/sticky-sidebar.js
@@ -0,0 +1 @@
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.StickySidebar={})}(this,function(t){"use strict";var e,i,n,s="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},o=((e=function(t,e){var i,n;(n=function(t){Object.defineProperty(t,"__esModule",{value:!0});var e,i,n=function(){function t(t,e){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{};if(function t(e,i){if(!(e instanceof i))throw TypeError("Cannot call a class as a function")}(this,t),this.options=t.extend(i,s),this.sidebar="string"==typeof e?document.querySelector(e):e,void 0===this.sidebar)throw Error("There is no specific sidebar element.");this.sidebarInner=!1,this.container=this.sidebar.parentElement,this.affixedType="STATIC",this.direction="down",this.support={transform:!1,transform3d:!1},this._initialized=!1,this._reStyle=!1,this._breakpoint=!1,this.dimensions={translateY:0,maxTranslateY:0,topSpacing:0,lastTopSpacing:0,bottomSpacing:0,lastBottomSpacing:0,sidebarHeight:0,sidebarWidth:0,containerTop:0,containerHeight:0,viewportHeight:0,viewportTop:0,lastViewportTop:0},["handleEvent"].forEach(function(t){n[t]=n[t].bind(n)}),this.initialize()}return n(t,[{key:"initialize",value:function t(){var e=this;if(this._setSupportFeatures(),this.options.innerWrapperSelector&&(this.sidebarInner=this.sidebar.querySelector(this.options.innerWrapperSelector),null===this.sidebarInner&&(this.sidebarInner=!1)),!this.sidebarInner){var i=document.createElement("div");for(i.setAttribute("class","inner-wrapper-sticky"),this.sidebar.appendChild(i);this.sidebar.firstChild!=i;)i.appendChild(this.sidebar.firstChild);this.sidebarInner=this.sidebar.querySelector(".inner-wrapper-sticky")}if(this.options.containerSelector){var n=document.querySelectorAll(this.options.containerSelector);if((n=Array.prototype.slice.call(n)).forEach(function(t,i){t.contains(e.sidebar)&&(e.container=t)}),!n.length)throw Error("The container does not contains on the sidebar.")}"function"!=typeof this.options.topSpacing&&(this.options.topSpacing=parseInt(this.options.topSpacing)||0),"function"!=typeof this.options.bottomSpacing&&(this.options.bottomSpacing=parseInt(this.options.bottomSpacing)||0),this._widthBreakpoint(),this.calcDimensions(),this.stickyPosition(),this.bindEvents(),this._initialized=!0}},{key:"bindEvents",value:function t(){window.addEventListener("resize",this,{passive:!0,capture:!1}),window.addEventListener("scroll",this,{passive:!0,capture:!1}),this.sidebar.addEventListener("update"+e,this),this.options.resizeSensor&&"undefined"!=typeof ResizeSensor&&(new ResizeSensor(this.sidebarInner,this.handleEvent),new ResizeSensor(this.container,this.handleEvent))}},{key:"handleEvent",value:function t(e){this.updateSticky(e)}},{key:"calcDimensions",value:function e(){if(!this._breakpoint){var i=this.dimensions;i.containerTop=t.offsetRelative(this.container).top,i.containerHeight=this.container.clientHeight,i.containerBottom=i.containerTop+i.containerHeight,i.sidebarHeight=this.sidebarInner.offsetHeight,i.sidebarWidth=this.sidebarInner.offsetWidth,i.viewportHeight=window.innerHeight,i.maxTranslateY=i.containerHeight-i.sidebarHeight,this._calcDimensionsWithScroll()}}},{key:"_calcDimensionsWithScroll",value:function e(){var i=this.dimensions;i.sidebarLeft=t.offsetRelative(this.sidebar).left,i.viewportTop=document.documentElement.scrollTop||document.body.scrollTop,i.viewportBottom=i.viewportTop+i.viewportHeight,i.viewportLeft=document.documentElement.scrollLeft||document.body.scrollLeft,i.topSpacing=this.options.topSpacing,i.bottomSpacing=this.options.bottomSpacing,"function"==typeof i.topSpacing&&(i.topSpacing=parseInt(i.topSpacing(this.sidebar))||0),"function"==typeof i.bottomSpacing&&(i.bottomSpacing=parseInt(i.bottomSpacing(this.sidebar))||0),"VIEWPORT-TOP"===this.affixedType?i.topSpacing=e.containerBottom?(e.translateY=e.containerBottom-i,o="CONTAINER-BOTTOM"):n>=e.containerTop&&(e.translateY=n-e.containerTop,o="VIEWPORT-TOP"):e.containerBottom<=s?(e.translateY=e.containerBottom-i,o="CONTAINER-BOTTOM"):i+e.translateY<=s?(e.translateY=s-i,o="VIEWPORT-BOTTOM"):e.containerTop+e.translateY<=n&&0!==e.translateY&&e.maxTranslateY!==e.translateY&&(o="VIEWPORT-UNBOTTOM"),o}},{key:"_getAffixTypeScrollingUp",value:function t(){var e=this.dimensions,i=e.sidebarHeight+e.containerTop,n=e.viewportTop+e.topSpacing,s=e.viewportBottom-e.bottomSpacing,o=this.affixedType;return n<=e.translateY+e.containerTop?(e.translateY=n-e.containerTop,o="VIEWPORT-TOP"):e.containerBottom<=s?(e.translateY=e.containerBottom-i,o="CONTAINER-BOTTOM"):!this.isSidebarFitsViewport()&&e.containerTop<=n&&0!==e.translateY&&e.maxTranslateY!==e.translateY&&(o="VIEWPORT-UNBOTTOM"),o}},{key:"_getStyle",value:function e(i){if(void 0!==i){var n={inner:{},outer:{}},s=this.dimensions;switch(i){case"VIEWPORT-TOP":n.inner={position:"fixed",top:s.topSpacing,left:s.sidebarLeft-s.viewportLeft,width:s.sidebarWidth};break;case"VIEWPORT-BOTTOM":n.inner={position:"fixed",top:"auto",left:s.sidebarLeft,bottom:s.bottomSpacing,width:s.sidebarWidth};break;case"CONTAINER-BOTTOM":case"VIEWPORT-UNBOTTOM":var o=this._getTranslate(0,s.translateY+"px");o?n.inner={transform:o}:n.inner={position:"absolute",top:s.translateY,width:s.sidebarWidth}}switch(i){case"VIEWPORT-TOP":case"VIEWPORT-BOTTOM":case"VIEWPORT-UNBOTTOM":case"CONTAINER-BOTTOM":n.outer={height:s.sidebarHeight,position:"relative"}}return n.outer=t.extend({height:"",position:""},n.outer),n.inner=t.extend({position:"relative",top:"",left:"",bottom:"",width:"",transform:""},n.inner),n}}},{key:"stickyPosition",value:function i(n){if(!this._breakpoint){n=this._reStyle||n||!1,this.options.topSpacing,this.options.bottomSpacing;var s=this.getAffixType(),o=this._getStyle(s);if((this.affixedType!=s||n)&&s){var r="affix."+s.toLowerCase().replace("viewport-","")+e;for(var a in t.eventTrigger(this.sidebar,r),"STATIC"===s?t.removeClass(this.sidebar,this.options.stickyClass):t.addClass(this.sidebar,this.options.stickyClass),o.outer){var p="number"==typeof o.outer[a]?"px":"";this.sidebar.style[a]=o.outer[a]+p}for(var c in o.inner){var l="number"==typeof o.inner[c]?"px":"";this.sidebarInner.style[c]=o.inner[c]+l}var h="affixed."+s.toLowerCase().replace("viewport-","")+e;t.eventTrigger(this.sidebar,h)}else this._initialized&&(this.sidebarInner.style.left=o.inner.left);this.affixedType=s}}},{key:"_widthBreakpoint",value:function e(){window.innerWidth<=this.options.minWidth?(this._breakpoint=!0,this.affixedType="STATIC",this.sidebar.removeAttribute("style"),t.removeClass(this.sidebar,this.options.stickyClass),this.sidebarInner.removeAttribute("style")):this._breakpoint=!1}},{key:"updateSticky",value:function t(){var e,i=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!this._running&&(this._running=!0,e=n.type,requestAnimationFrame(function(){"scroll"===e?(i._calcDimensionsWithScroll(),i.observeScrollDir(),i.stickyPosition()):(i._widthBreakpoint(),i.calcDimensions(),i.stickyPosition(!0)),i._running=!1}))}},{key:"_setSupportFeatures",value:function e(){var i=this.support;i.transform=t.supportTransform(),i.transform3d=t.supportTransform(!0)}},{key:"_getTranslate",value:function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return this.support.transform3d?"translate3d("+e+", "+i+", "+n+")":!!this.support.translate&&"translate("+e+", "+i+")"}},{key:"destroy",value:function t(){window.removeEventListener("resize",this,{capture:!1}),window.removeEventListener("scroll",this,{capture:!1}),this.sidebar.classList.remove(this.options.stickyClass),this.sidebar.style.minHeight="",this.sidebar.removeEventListener("update"+e,this);var i={inner:{},outer:{}};for(var n in i.inner={position:"",top:"",left:"",bottom:"",width:"",transform:""},i.outer={height:"",position:""},i.outer)this.sidebar.style[n]=i.outer[n];for(var s in i.inner)this.sidebarInner.style[s]=i.inner[s];this.options.resizeSensor&&"undefined"!=typeof ResizeSensor&&(ResizeSensor.detach(this.sidebarInner,this.handleEvent),ResizeSensor.detach(this.container,this.handleEvent))}}],[{key:"supportTransform",value:function t(e){var i=!1,n=e?"perspective":"transform",s=n.charAt(0).toUpperCase()+n.slice(1),o=document.createElement("support").style;return(n+" "+["Webkit","Moz","O","ms"].join(s+" ")+s).split(" ").forEach(function(t,e){if(void 0!==o[t])return i=t,!1}),i}},{key:"eventTrigger",value:function t(e,i,n){try{var s=new CustomEvent(i,{detail:n})}catch(o){var s=document.createEvent("CustomEvent");s.initCustomEvent(i,!0,!0,n)}e.dispatchEvent(s)}},{key:"extend",value:function t(e,i){var n={};for(var s in e)void 0!==i[s]?n[s]=i[s]:n[s]=e[s];return n}},{key:"offsetRelative",value:function t(e){var i={left:0,top:0};do{var n=e.offsetTop,s=e.offsetLeft;isNaN(n)||(i.top+=n),isNaN(s)||(i.left+=s),e="BODY"===e.tagName?e.parentElement:e.offsetParent}while(e);return i}},{key:"addClass",value:function e(i,n){t.hasClass(i,n)||(i.classList?i.classList.add(n):i.className+=" "+n)}},{key:"removeClass",value:function e(i,n){t.hasClass(i,n)&&(i.classList?i.classList.remove(n):i.className=i.className.replace(RegExp("(^|\\b)"+n.split(" ").join("|")+"(\\b|$)","gi")," "))}},{key:"hasClass",value:function t(e,i){return e.classList?e.classList.contains(i):RegExp("(^| )"+i+"( |$)","gi").test(e.className)}},{key:"defaults",get:function(){return i}}]),t}());t.default=s,window.StickySidebar=s})(e)})(i={exports:{}},i.exports),i.exports),r=(n=o)&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n;t.default=r,t.__moduleExports=o,Object.defineProperty(t,"__esModule",{value:!0})});
\ No newline at end of file
diff --git a/plugins/system/helixultimate/fields/helixmultipositions.php b/plugins/system/helixultimate/fields/helixmultipositions.php
new file mode 100644
index 00000000..a4ae7034
--- /dev/null
+++ b/plugins/system/helixultimate/fields/helixmultipositions.php
@@ -0,0 +1,102 @@
+
+ * @copyright Copyright (c) 2010 - 2021 JoomShaper
+ * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
+ */
+
+defined('_JEXEC') or die();
+
+use Joomla\CMS\Factory;
+use Joomla\CMS\HTML\HTMLHelper;
+use HelixUltimate\Framework\Platform\Helper;
+use Joomla\CMS\Form\FormHelper;
+use Joomla\CMS\Version;
+
+FormHelper::loadFieldClass('list');
+
+$version = new Version();
+$JoomlaVersion = $version->getShortVersion();
+
+if (version_compare($JoomlaVersion, '4.0.0', '>='))
+{
+ JLoader::registerAlias('JFormFieldList', 'Joomla\CMS\Form\Field\ListField');
+}
+
+/**
+ * Form field for Helix positions
+ *
+ * @since 1.0.0
+ */
+class JFormFieldHelixmultipositions extends JFormFieldList
+{
+ /**
+ * Field type
+ *
+ * @var string $type
+ * @since 1.0.0
+ */
+ protected $type = 'Helixmultipositions';
+
+ /**
+ * Override getOptions function
+ *
+ * @return array
+ * @since 1.0.0
+ */
+ protected function getOptions()
+ {
+ $input = Factory::getApplication()->input;
+ $style_id = $input->get('id', 0, 'INT');
+ $style = Helper::getTemplateStyle($style_id);
+
+ $db = Factory::getDbo();
+ $query = $db->getQuery(true);
+ $query->select($db->quoteName('position'));
+ $query->from($db->quoteName('#__modules'));
+ $query->where($db->quoteName('client_id') . ' = 0');
+ $query->where($db->quoteName('published') . ' = 1');
+ $query->group('position');
+ $query->order('position ASC');
+ $db->setQuery($query);
+ $dbpositions = $db->loadObjectList();
+
+ $templateXML = JPATH_SITE . '/templates/' . $style->template . '/templateDetails.xml';
+ $template = simplexml_load_file($templateXML);
+ $options = array();
+
+ foreach ($dbpositions as $positions)
+ {
+ if (empty($positions->position)) {
+ continue;
+ }
+
+ $options[] = $positions->position;
+ }
+
+ foreach ($template->positions[0] as $position)
+ {
+ $options[] = (string) $position;
+ }
+
+ ksort($options);
+
+ $opts = array_unique($options);
+
+ $options = array();
+
+ foreach ($opts as $opt)
+ {
+ $options[$opt] = $opt;
+ }
+
+ $optionsArray = [];
+
+ foreach ($options as $key => $item) {
+ $optionsArray[] = HTMLHelper::_('select.option', $key, $item . ' (' . $key . ')');
+ }
+
+ return array_merge(parent::getOptions(), $optionsArray);
+ }
+}
diff --git a/plugins/system/helixultimate/helixultimate.xml b/plugins/system/helixultimate/helixultimate.xml
index 5e2cae12..7d0d9faf 100644
--- a/plugins/system/helixultimate/helixultimate.xml
+++ b/plugins/system/helixultimate/helixultimate.xml
@@ -10,7 +10,7 @@
http://www.gnu.org/licenses/gpl-2.0.html GPLv2 or later
support@joomshaper.com
www.joomshaper.com
- 2.0.18
+ 2.1.0
Helix Ultimate Framework - Joomla Template Framework by JoomShaper
diff --git a/plugins/system/helixultimate/layout/settings/settings.php b/plugins/system/helixultimate/layout/settings/settings.php
index f5c5911c..0fec7c13 100644
--- a/plugins/system/helixultimate/layout/settings/settings.php
+++ b/plugins/system/helixultimate/layout/settings/settings.php
@@ -210,6 +210,14 @@ function column_grid_system($device = 'lg')
'values' => array(),
'std' => 'none',
),
+
+ 'sticky_position' => array(
+ 'type' => 'checkbox',
+ 'group' => 'general',
+ 'title' => Text::_('HELIX_ULTIMATE_STICKY_POSITION'),
+ 'desc' => Text::_('HELIX_ULTIMATE_STICKY_POSITION_DESC'),
+ 'std' => '',
+ ),
'custom_class' => array(
'type' => 'text',
diff --git a/plugins/system/helixultimate/layouts/frontend/generate.php b/plugins/system/helixultimate/layouts/frontend/generate.php
index c9d9d99e..95f29b28 100644
--- a/plugins/system/helixultimate/layouts/frontend/generate.php
+++ b/plugins/system/helixultimate/layouts/frontend/generate.php
@@ -6,15 +6,52 @@
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/
+use Joomla\CMS\Factory;
use Joomla\CMS\Layout\FileLayout;
+use Joomla\CMS\Plugin\PluginHelper;
+use Joomla\CMS\Uri\Uri;
defined('_JEXEC') or die();
-
$layout_path = JPATH_ROOT .'/plugins/system/helixultimate/layouts';
$data = $displayData;
+$doc = Factory::getDocument();
+$plg_path = Uri::root(true) . '/plugins/system/helixultimate';
+
+$app = Factory::getApplication();
+$template = $app->getTemplate(true);
+$layout = [];
+
+$rightSticky = false;
+$leftSticky = false;
+
+// Check if position 'right' or 'left' is sticky from layout
+if (!empty($template->params->get('layout'))) {
+ $layout = json_decode($template->params->get('layout'));
+
+ foreach ($layout as $row) {
+ if (!empty($row->attr)) {
+ foreach ($row->attr as $attr) {
+ if (!empty($attr->settings) && !empty($attr->settings->name)) {
+ if ($attr->settings->name == 'right' && !empty($attr->settings->sticky_position)) {
+ if ($attr->settings->sticky_position) {
+ $rightSticky = true;
+ }
+ }
+
+ if ($attr->settings->name == 'left' && !empty($attr->settings->sticky_position)) {
+ if ($attr->settings->sticky_position) {
+ $leftSticky = true;
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
extract($displayData);
?>
@@ -50,4 +87,25 @@
->
\ No newline at end of file
+
+ addScript($plg_path . '/assets/js/sticky-sidebar.js'); ?>
+
+
+>
diff --git a/plugins/system/helixultimate/layouts/masonry/bloglist.php b/plugins/system/helixultimate/layouts/masonry/bloglist.php
new file mode 100644
index 00000000..a780c8c7
--- /dev/null
+++ b/plugins/system/helixultimate/layouts/masonry/bloglist.php
@@ -0,0 +1,119 @@
+params;
+$attribs = json_decode($item->attribs ?? "");
+HTMLHelper::addIncludePath(JPATH_COMPONENT . '/helpers/html');
+$canEdit = $item->params->get('access-edit');
+$info = $params->get('info_block_position', 0);
+$article_format = (isset($attribs->helix_ultimate_article_format) && $attribs->helix_ultimate_article_format) ? $attribs->helix_ultimate_article_format : 'standard';
+
+$template = HelixUltimate\Framework\Platform\Helper::loadTemplateData();
+$tmpl_params = $template->params;
+
+// Check if associations are implemented. If they are, define the parameter.
+$assocParam = (Associations::isEnabled() && $params->get('show_associations'));
+
+$currentDate = Factory::getDate()->format('Y-m-d H:i:s');
+$isUnpublished = JVERSION < 4 ? ($item->state == 0 || strtotime($item->publish_up) > strtotime(Factory::getDate()) || ((strtotime($item->publish_down) < strtotime(Factory::getDate())) && $item->publish_down != Factory::getDbo()->getNullDate())) : ($item->state == Joomla\Component\Content\Administrator\Extension\ContentComponent::CONDITION_UNPUBLISHED || $item->publish_up > $currentDate)
+ || ($item->publish_down < $currentDate && $item->publish_down !== null);
+
+$version = new Version();
+$JoomlaVersion = $version->getShortVersion();
+
+?>
+
+
+ $attribs, 'id'=>$item->id)); ?>
+
+ $attribs)); ?>
+
+ $attribs)); ?>
+
+
+
+featured) :?>
+
+
+
+
+
+
+
+
+
+
+
+
+ get('show_modify_date') || $params->get('show_publish_date') || $params->get('show_create_date')
+ || $params->get('show_hits') || $params->get('show_category') || $params->get('show_parent_category') || $params->get('show_author') || $assocParam); ?>
+
+
+ $item, 'params' => $params, 'position' => 'above', 'intro' => true)); ?>
+
+
+ get('show_tags', 1) && !$tmpl_params->get('show_list_tags',0) && !empty($item->tags->itemTags)) : ?>
+ tagLayout = new FileLayout('joomla.content.tags'); ?>
+ tagLayout->render($item->tags->itemTags); ?>
+
+
+ get('show_intro')) : ?>
+
+ event->afterDisplayTitle; ?>
+
+
+
+ event->beforeDisplayContent; ?>
+
+
+ introtext; ?>
+
+
+
+ $item, 'params' => $params, 'position' => 'below', 'intro' => true)); ?>
+
+
+ get('show_readmore') && $item->readmore) :
+ if ($params->get('access-view')) :
+ $link = Route::_(version_compare($JoomlaVersion, '4.0.0', '>=') ? Joomla\Component\Content\Site\Helper\RouteHelper::getArticleRoute($item->slug, $item->catid, $item->language) : ContentHelperRoute::getArticleRoute($item->slug, $item->catid, $item->language));
+ else :
+ $menu = Factory::getApplication()->getMenu();
+ $active = $menu->getActive();
+ $itemId = $active->id;
+ $link = new Uri(Route::_('index.php?option=com_users&view=login&Itemid=' . $itemId, false));
+ $link->setVar('return', base64_encode(version_compare($JoomlaVersion, '4.0.0', '>=') ? Joomla\Component\Content\Site\Helper\RouteHelper::getArticleRoute($item->slug, $item->catid, $item->language) : ContentHelperRoute::getArticleRoute($item->slug, $item->catid, $item->language)));
+ endif; ?>
+
+ $item, 'params' => $params, 'link' => $link)); ?>
+
+
+
+
+
+
+
+
+
+
+event->afterDisplayContent; ?>
diff --git a/plugins/system/helixultimate/layouts/preview/iframe.php b/plugins/system/helixultimate/layouts/preview/iframe.php
index a2bad764..7c85cf21 100644
--- a/plugins/system/helixultimate/layouts/preview/iframe.php
+++ b/plugins/system/helixultimate/layouts/preview/iframe.php
@@ -8,6 +8,21 @@
defined('_JEXEC') or die();
+use Joomla\CMS\Factory;
+use Joomla\CMS\Uri\Uri;
+use Joomla\CMS\Version;
+
+defined('_JEXEC') or die();
+
+$version = new Version();
+$JoomlaVersion = $version->getShortVersion();
+
+if (version_compare($JoomlaVersion, '5.0.0', '<'))
+{
+ $doc = Factory::getDocument();
+ $doc->addStyleSheet(Uri::root(true) . '/media/system/css/joomla-fontawesome.min.css', ['relative' => false, 'version' => 'auto']);
+}
+
extract($displayData);
$style = '';
diff --git a/plugins/system/helixultimate/overrides/com_content/article/default.php b/plugins/system/helixultimate/overrides/com_content/article/default.php
index db96cd6c..a63fdcc5 100644
--- a/plugins/system/helixultimate/overrides/com_content/article/default.php
+++ b/plugins/system/helixultimate/overrides/com_content/article/default.php
@@ -78,6 +78,10 @@
item); ?>
+ item->featured) :?>
+
+
+
get('show_modify_date') || $params->get('show_publish_date') || $params->get('show_create_date')
diff --git a/plugins/system/helixultimate/overrides/com_content/category/blog.php b/plugins/system/helixultimate/overrides/com_content/category/blog.php
index dfc010c0..3a937db8 100644
--- a/plugins/system/helixultimate/overrides/com_content/category/blog.php
+++ b/plugins/system/helixultimate/overrides/com_content/category/blog.php
@@ -13,6 +13,7 @@
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Layout\FileLayout;
+use Joomla\CMS\Layout\LayoutHelper;
HTMLHelper::addIncludePath(JPATH_COMPONENT . '/helpers');
@@ -30,9 +31,12 @@
$results = $app->triggerEvent('onContentAfterDisplay', array($this->category->extension . '.categories', &$this->category, &$this->params, 0));
$afterDisplayContent = trim(implode("\n", $results));
+$columns = !empty((int) $this->params->get('num_columns')) ? (int) $this->params->get('num_columns') : 3;
+$template = HelixUltimate\Framework\Platform\Helper::loadTemplateData();
+$blogListType = $template->params->get('blog_list_type') ?? 'default';
?>
-
+
params->get('show_page_heading')) : ?>