diff --git a/assets/css/scss/_icons.scss b/assets/css/scss/_icons.scss index 0eac7f5b..68b0334b 100644 --- a/assets/css/scss/_icons.scss +++ b/assets/css/scss/_icons.scss @@ -117,7 +117,8 @@ }*/ .lsx-price-wrapper, -.lsx-single-supplement-wrapper { +.lsx-single-supplement-wrapper, +.unit-price-wrapper { /*&:before { background-image: url( ../img/icons/price-icon.png ); }*/ diff --git a/assets/css/scss/_slider.scss b/assets/css/scss/_slider.scss index 841ba110..c8f98a3c 100644 --- a/assets/css/scss/_slider.scss +++ b/assets/css/scss/_slider.scss @@ -3,6 +3,8 @@ top: 32px; } + + .lsx-to-slider, .slick-lightbox-inner { .slick-arrow { diff --git a/assets/css/style.css b/assets/css/style.css index cbb562c4..79a613d1 100644 --- a/assets/css/style.css +++ b/assets/css/style.css @@ -3,104 +3,135 @@ * LSX Tour Operators */ .lsx-price-wrapper .amount .currency-icon:after, -.lsx-single-supplement-wrapper .amount .currency-icon:after { +.lsx-single-supplement-wrapper .amount .currency-icon:after, +.unit-price-wrapper .amount .currency-icon:after { margin-left: 3px; margin-right: 3px; } .lsx-price-wrapper .amount .currency-icon.usd:after, -.lsx-single-supplement-wrapper .amount .currency-icon.usd:after, .lsx-price-wrapper .amount .currency-icon.nad:after, -.lsx-single-supplement-wrapper .amount .currency-icon.nad:after, .lsx-price-wrapper .amount .currency-icon.cad:after, -.lsx-single-supplement-wrapper .amount .currency-icon.cad:after, .lsx-price-wrapper .amount .currency-icon.hkd:after, -.lsx-single-supplement-wrapper .amount .currency-icon.hkd:after, .lsx-price-wrapper .amount .currency-icon.sgd:after, -.lsx-single-supplement-wrapper .amount .currency-icon.sgd:after, .lsx-price-wrapper .amount .currency-icon.nzd:after, -.lsx-single-supplement-wrapper .amount .currency-icon.nzd:after, .lsx-price-wrapper .amount .currency-icon.aud:after, -.lsx-single-supplement-wrapper .amount .currency-icon.aud:after { +.lsx-single-supplement-wrapper .amount .currency-icon.usd:after, +.unit-price-wrapper .amount .currency-icon.usd:after, .lsx-price-wrapper .amount .currency-icon.nad:after, +.lsx-single-supplement-wrapper .amount .currency-icon.nad:after, +.unit-price-wrapper .amount .currency-icon.nad:after, .lsx-price-wrapper .amount .currency-icon.cad:after, +.lsx-single-supplement-wrapper .amount .currency-icon.cad:after, +.unit-price-wrapper .amount .currency-icon.cad:after, .lsx-price-wrapper .amount .currency-icon.hkd:after, +.lsx-single-supplement-wrapper .amount .currency-icon.hkd:after, +.unit-price-wrapper .amount .currency-icon.hkd:after, .lsx-price-wrapper .amount .currency-icon.sgd:after, +.lsx-single-supplement-wrapper .amount .currency-icon.sgd:after, +.unit-price-wrapper .amount .currency-icon.sgd:after, .lsx-price-wrapper .amount .currency-icon.nzd:after, +.lsx-single-supplement-wrapper .amount .currency-icon.nzd:after, +.unit-price-wrapper .amount .currency-icon.nzd:after, .lsx-price-wrapper .amount .currency-icon.aud:after, +.lsx-single-supplement-wrapper .amount .currency-icon.aud:after, +.unit-price-wrapper .amount .currency-icon.aud:after { content: "$"; } .lsx-price-wrapper .amount .currency-icon.eur:after, -.lsx-single-supplement-wrapper .amount .currency-icon.eur:after { +.lsx-single-supplement-wrapper .amount .currency-icon.eur:after, +.unit-price-wrapper .amount .currency-icon.eur:after { content: "€"; } .lsx-price-wrapper .amount .currency-icon.gbp:after, -.lsx-single-supplement-wrapper .amount .currency-icon.gbp:after { +.lsx-single-supplement-wrapper .amount .currency-icon.gbp:after, +.unit-price-wrapper .amount .currency-icon.gbp:after { content: "£"; } .lsx-price-wrapper .amount .currency-icon.zar:after, -.lsx-single-supplement-wrapper .amount .currency-icon.zar:after { +.lsx-single-supplement-wrapper .amount .currency-icon.zar:after, +.unit-price-wrapper .amount .currency-icon.zar:after { content: "R"; } .lsx-price-wrapper .amount .currency-icon.brl:after, -.lsx-single-supplement-wrapper .amount .currency-icon.brl:after { +.lsx-single-supplement-wrapper .amount .currency-icon.brl:after, +.unit-price-wrapper .amount .currency-icon.brl:after { content: "R$"; } .lsx-price-wrapper .amount .currency-icon.bwp:after, -.lsx-single-supplement-wrapper .amount .currency-icon.bwp:after { +.lsx-single-supplement-wrapper .amount .currency-icon.bwp:after, +.unit-price-wrapper .amount .currency-icon.bwp:after { content: "P"; } .lsx-price-wrapper .amount .currency-icon.cny:after, -.lsx-single-supplement-wrapper .amount .currency-icon.cny:after, .lsx-price-wrapper .amount .currency-icon.jpy:after, -.lsx-single-supplement-wrapper .amount .currency-icon.jpy:after { +.lsx-single-supplement-wrapper .amount .currency-icon.cny:after, +.unit-price-wrapper .amount .currency-icon.cny:after, .lsx-price-wrapper .amount .currency-icon.jpy:after, +.lsx-single-supplement-wrapper .amount .currency-icon.jpy:after, +.unit-price-wrapper .amount .currency-icon.jpy:after { content: "¥"; } .lsx-price-wrapper .amount .currency-icon.inr:after, -.lsx-single-supplement-wrapper .amount .currency-icon.inr:after { +.lsx-single-supplement-wrapper .amount .currency-icon.inr:after, +.unit-price-wrapper .amount .currency-icon.inr:after { content: "₹"; } .lsx-price-wrapper .amount .currency-icon.idr:after, -.lsx-single-supplement-wrapper .amount .currency-icon.idr:after { +.lsx-single-supplement-wrapper .amount .currency-icon.idr:after, +.unit-price-wrapper .amount .currency-icon.idr:after { content: "₹"; } .lsx-price-wrapper .amount .currency-icon.ils:after, -.lsx-single-supplement-wrapper .amount .currency-icon.ils:after { +.lsx-single-supplement-wrapper .amount .currency-icon.ils:after, +.unit-price-wrapper .amount .currency-icon.ils:after { content: "₪"; } .lsx-price-wrapper .amount .currency-icon.kes:after, -.lsx-single-supplement-wrapper .amount .currency-icon.kes:after { +.lsx-single-supplement-wrapper .amount .currency-icon.kes:after, +.unit-price-wrapper .amount .currency-icon.kes:after { content: "K"; } .lsx-price-wrapper .amount .currency-icon.lak:after, -.lsx-single-supplement-wrapper .amount .currency-icon.lak:after { +.lsx-single-supplement-wrapper .amount .currency-icon.lak:after, +.unit-price-wrapper .amount .currency-icon.lak:after { content: "₭"; } .lsx-price-wrapper .amount .currency-icon.mwk:after, -.lsx-single-supplement-wrapper .amount .currency-icon.mwk:after { +.lsx-single-supplement-wrapper .amount .currency-icon.mwk:after, +.unit-price-wrapper .amount .currency-icon.mwk:after { content: "MK"; } .lsx-price-wrapper .amount .currency-icon.myr:after, -.lsx-single-supplement-wrapper .amount .currency-icon.myr:after { +.lsx-single-supplement-wrapper .amount .currency-icon.myr:after, +.unit-price-wrapper .amount .currency-icon.myr:after { content: "RM"; } .lsx-price-wrapper .amount .currency-icon.mzn:after, -.lsx-single-supplement-wrapper .amount .currency-icon.mzn:after { +.lsx-single-supplement-wrapper .amount .currency-icon.mzn:after, +.unit-price-wrapper .amount .currency-icon.mzn:after { content: "MT"; } .lsx-price-wrapper .amount .currency-icon.nok:after, -.lsx-single-supplement-wrapper .amount .currency-icon.nok:after, .lsx-price-wrapper .amount .currency-icon.sek:after, -.lsx-single-supplement-wrapper .amount .currency-icon.sek:after { +.lsx-single-supplement-wrapper .amount .currency-icon.nok:after, +.unit-price-wrapper .amount .currency-icon.nok:after, .lsx-price-wrapper .amount .currency-icon.sek:after, +.lsx-single-supplement-wrapper .amount .currency-icon.sek:after, +.unit-price-wrapper .amount .currency-icon.sek:after { content: "kr"; } .lsx-price-wrapper .amount .currency-icon.rub:after, -.lsx-single-supplement-wrapper .amount .currency-icon.rub:after { +.lsx-single-supplement-wrapper .amount .currency-icon.rub:after, +.unit-price-wrapper .amount .currency-icon.rub:after { content: "руб"; } .lsx-price-wrapper .amount .currency-icon.chf:after, -.lsx-single-supplement-wrapper .amount .currency-icon.chf:after { +.lsx-single-supplement-wrapper .amount .currency-icon.chf:after, +.unit-price-wrapper .amount .currency-icon.chf:after { content: "CHF"; } .lsx-price-wrapper .amount .currency-icon.tzs:after, -.lsx-single-supplement-wrapper .amount .currency-icon.tzs:after { +.lsx-single-supplement-wrapper .amount .currency-icon.tzs:after, +.unit-price-wrapper .amount .currency-icon.tzs:after { content: "TSh"; } .lsx-price-wrapper .amount .currency-icon.aed:after, -.lsx-single-supplement-wrapper .amount .currency-icon.aed:after { +.lsx-single-supplement-wrapper .amount .currency-icon.aed:after, +.unit-price-wrapper .amount .currency-icon.aed:after { content: "د.إ"; } .lsx-price-wrapper .amount .currency-icon.zmw:after, -.lsx-single-supplement-wrapper .amount .currency-icon.zmw:after { +.lsx-single-supplement-wrapper .amount .currency-icon.zmw:after, +.unit-price-wrapper .amount .currency-icon.zmw:after { content: "Zk"; } .lsx-price-wrapper .amount .currency-icon.zwl:after, -.lsx-single-supplement-wrapper .amount .currency-icon.zwl:after { +.lsx-single-supplement-wrapper .amount .currency-icon.zwl:after, +.unit-price-wrapper .amount .currency-icon.zwl:after { content: "Z$"; } @@ -116,13 +147,15 @@ } }*/ .lsx-price-wrapper, -.lsx-single-supplement-wrapper { +.lsx-single-supplement-wrapper, +.unit-price-wrapper { /*&:before { background-image: url( ../img/icons/price-icon.png ); }*/ } .lsx-price-wrapper .amount .currency-icon:after, -.lsx-single-supplement-wrapper .amount .currency-icon:after { +.lsx-single-supplement-wrapper .amount .currency-icon:after, +.unit-price-wrapper .amount .currency-icon:after { margin-right: 0px; } diff --git a/assets/css/style.css.map b/assets/css/style.css.map index d858bc1a..d51116f1 100644 --- a/assets/css/style.css.map +++ b/assets/css/style.css.map @@ -1 +1 @@ -{"version":3,"sources":["style.css","style.scss","scss/_icons.scss","scss/_slider.scss"],"names":[],"mappings":"AAAA,gBAAgB;ACAhB;;EAAA;ACEE;;EACC,gBAAA;EACA,iBAAA;AFIH;AEMG;;;;;;;;EAAU,YAAA;AFIb;AEAG;;EAAU,YAAA;AFIb;AEAG;;EAAU,YAAA;AFIb;AEAG;;EAAU,YAAA;AFIb;AEAG;;EAAU,aAAA;AFIb;AEAG;;EAAU,YAAA;AFIb;AECG;;;EAAU,YAAA;AFIb;AEAG;;EAAU,YAAA;AFIb;AEAG;;EAAU,YAAA;AFIb;AEAG;;EAAU,YAAA;AFIb;AEAG;;EAAU,YAAA;AFIb;AEAG;;EAAU,YAAA;AFIb;AEAG;;EAAU,aAAA;AFIb;AEAG;;EAAU,aAAA;AFIb;AEAG;;EAAU,aAAA;AFIb;AECG;;;EAAU,aAAA;AFIb;AEAG;;EAAU,cAAA;AFIb;AEAG;;EAAU,cAAA;AFIb;AEAG;;EAAU,cAAA;AFIb;AEAG;;EAAU,cAAA;AFIb;AEAG;;EAAU,aAAA;AFIb;AEAG;;EAAU,aAAA;AFIb;;AEEA;;;;;;;;;;EAAA;AAYA;;EAEC;;IAAA;AFED;AEMG;;EAAU,iBAAA;AFFb;;AG9HA;EACC,WAAA;EACA,SAAA;AHiID;;AG5HC;;EACC,uBAAA;EACA,kBAAA;EACA,mBAAA;EACA,iBAAA;EACA,WAAA;EACA,YAAA;EACA,sCAAA;EACA,UAAA;EACA,iBAAA;EACA,2BAAA;EACA,6BAAA;EACA,WAAA;EACA,UAAA;AHgIF;AG9HE;;EACC,cAAA;EACA,0BAAA;EACA,eAAA;EACA,cAAA;EACA,kBAAA;EACA,oBAAA;EACA,QAAA;EACA,2BAAA;EACA,4BAAA;EAEA,mCAAA;EACA,kCAAA;AHgIH;AG7HE;;EAAmB,mBAAA;AHiIrB;AG9HG;;EACC,gBAAA;EACA,YAAA;AHiIJ;AG5HG;;EACC,gBAAA;EACA,YAAA;AH+HJ;;AGxHC;EACC,mBAAA;EACA,aAAA;EACA,mBAAA;EACA,YAAA;EACA,uBAAA;EACA,gBAAA;EACA,gBAAA;EACA,UAAA;AH2HF;AGzHE;EACC,cAAA;EACA,YAAA;AH2HH;AGzHG;EACC,uBAAA;EACA,mBAAA;EACA,iBAAA;EACA,WAAA;EACA,YAAA;EACA,iCAAA;EACA,WAAA;AH2HJ;AGrHE;EAAe,WAAA;AHwHjB;AGvHE;EAAe,YAAA;AH0HjB;;AGrHC;EAAoB,gBAAA;AHyHrB;;AGrHC;EACC,aAAA;AHwHF;AGtHE;EAAU,UAAA;AHyHZ;;AGrHA;EAAgC,qBAAA;AHyHhC;;AGpHE;;EACC,iBAAA;AHwHH;;ACxNC;;EACC,aAAA;AD4NF","file":"style.css"} \ No newline at end of file +{"version":3,"sources":["style.css","style.scss","scss/_icons.scss","scss/_slider.scss"],"names":[],"mappings":"AAAA,gBAAgB;ACAhB;;EAAA;ACEE;;;EACC,gBAAA;EACA,iBAAA;AFKH;AEKG;;;;;;;;;;;;;;;EAAU,YAAA;AFYb;AERG;;;EAAU,YAAA;AFab;AETG;;;EAAU,YAAA;AFcb;AEVG;;;EAAU,YAAA;AFeb;AEXG;;;EAAU,aAAA;AFgBb;AEZG;;;EAAU,YAAA;AFiBb;AEZG;;;;;EAAU,YAAA;AFmBb;AEfG;;;EAAU,YAAA;AFoBb;AEhBG;;;EAAU,YAAA;AFqBb;AEjBG;;;EAAU,YAAA;AFsBb;AElBG;;;EAAU,YAAA;AFuBb;AEnBG;;;EAAU,YAAA;AFwBb;AEpBG;;;EAAU,aAAA;AFyBb;AErBG;;;EAAU,aAAA;AF0Bb;AEtBG;;;EAAU,aAAA;AF2Bb;AEtBG;;;;;EAAU,aAAA;AF6Bb;AEzBG;;;EAAU,cAAA;AF8Bb;AE1BG;;;EAAU,cAAA;AF+Bb;AE3BG;;;EAAU,cAAA;AFgCb;AE5BG;;;EAAU,cAAA;AFiCb;AE7BG;;;EAAU,aAAA;AFkCb;AE9BG;;;EAAU,aAAA;AFmCb;;AE7BA;;;;;;;;;;EAAA;AAYA;;;EAGC;;IAAA;AFiCD;AEzBG;;;EAAU,iBAAA;AF8Bb;;AG/JA;EACC,WAAA;EACA,SAAA;AHkKD;;AG3JC;;EACC,uBAAA;EACA,kBAAA;EACA,mBAAA;EACA,iBAAA;EACA,WAAA;EACA,YAAA;EACA,sCAAA;EACA,UAAA;EACA,iBAAA;EACA,2BAAA;EACA,6BAAA;EACA,WAAA;EACA,UAAA;AH+JF;AG7JE;;EACC,cAAA;EACA,0BAAA;EACA,eAAA;EACA,cAAA;EACA,kBAAA;EACA,oBAAA;EACA,QAAA;EACA,2BAAA;EACA,4BAAA;EAEA,mCAAA;EACA,kCAAA;AH+JH;AG5JE;;EAAmB,mBAAA;AHgKrB;AG7JG;;EACC,gBAAA;EACA,YAAA;AHgKJ;AG3JG;;EACC,gBAAA;EACA,YAAA;AH8JJ;;AGvJC;EACC,mBAAA;EACA,aAAA;EACA,mBAAA;EACA,YAAA;EACA,uBAAA;EACA,gBAAA;EACA,gBAAA;EACA,UAAA;AH0JF;AGxJE;EACC,cAAA;EACA,YAAA;AH0JH;AGxJG;EACC,uBAAA;EACA,mBAAA;EACA,iBAAA;EACA,WAAA;EACA,YAAA;EACA,iCAAA;EACA,WAAA;AH0JJ;AGpJE;EAAe,WAAA;AHuJjB;AGtJE;EAAe,YAAA;AHyJjB;;AGpJC;EAAoB,gBAAA;AHwJrB;;AGpJC;EACC,aAAA;AHuJF;AGrJE;EAAU,UAAA;AHwJZ;;AGpJA;EAAgC,qBAAA;AHwJhC;;AGnJE;;EACC,iBAAA;AHuJH;;ACzPC;;EACC,aAAA;AD6PF","file":"style.css"} \ No newline at end of file diff --git a/assets/js/blocks/general.js b/assets/js/blocks/general.js index fbaf07b5..b768075c 100644 --- a/assets/js/blocks/general.js +++ b/assets/js/blocks/general.js @@ -1,9 +1,9 @@ wp.domReady(() => { - // Gallery Wrapper + // Gallery Block wp.blocks.registerBlockVariation("core/gallery", { name: "lsx-tour-operator/gallery", title: "TO Gallery", - icon: "admin-multisite", + icon: "gallery", category: "lsx-tour-operator", attributes: { metadata: { @@ -40,7 +40,7 @@ wp.domReady(() => { isDefault: false }); - // Price Wrapper + // Price Block wp.blocks.registerBlockVariation("core/group", { name: "lsx-tour-operator/price", title: "Price", @@ -405,10 +405,12 @@ wp.domReady(() => { ] }); + // View More Button Block wp.blocks.registerBlockVariation('core/button', { name: 'lsx-tour-operator/more-link', title: 'More Button', name: 'core/button', + category: "lsx-tour-operator", attributes: { className: 'lsx-to-more-link more-link', metadata: { diff --git a/assets/js/src/custom.js b/assets/js/src/custom.js index e379ec29..de2b1c5f 100755 --- a/assets/js/src/custom.js +++ b/assets/js/src/custom.js @@ -51,7 +51,7 @@ if ( window.location.hash ) { lsx_to.readMoreText = $(this).contents().filter(function() { return this.nodeType === Node.TEXT_NODE; }).text(); - lsx_to.readMoreSet( $(this) ); + lsx_to.readMoreSet( $(this), $(this).closest( '.wp-block-group' ).find('.wp-block-post-content') ); } ); $( '.single-tour-operator .wp-block-read-more' ).on( 'click', function( event ) { @@ -59,24 +59,25 @@ if ( window.location.hash ) { $( this ).hide(); if ( $( this ).hasClass( 'less-link' ) ) { - lsx_to.readMoreSet($( this )); + lsx_to.readMoreSet( $(this), $(this).closest( '.wp-block-group' ).find('.wp-block-post-content') ); } else { - lsx_to.readMoreOpen($( this )); + lsx_to.readMoreOpen( $(this), $(this).closest( '.wp-block-group' ).find('.wp-block-post-content') ); } $( this ).show(); } ); }; - lsx_to.readMoreSet = function( button ) { - let contentWrapper = button.closest( '.wp-block-group' ).find('.wp-block-post-content'); + lsx_to.readMoreSet = function( button, contentWrapper ) { + console.log(contentWrapper); + console.log(contentWrapper.length); if ( 0 < contentWrapper.length ) { - if ( 1 < contentWrapper.find('p').length ) { + if ( 1 < contentWrapper.children().length ) { var limit = 1; let counter = 0; - contentWrapper.find('p').each( function() { + contentWrapper.children().each( function() { if ( limit <= counter ) { $(this).hide(); } @@ -87,14 +88,17 @@ if ( window.location.hash ) { } button.removeClass('less-link'); button.text( lsx_to.readMoreText ); + } else { + button.hide(); } } - lsx_to.readMoreOpen = function( button ) { - let contentWrapper = button.closest( '.wp-block-group' ).find('.wp-block-post-content p'); - if ( 0 < contentWrapper.length ) { - contentWrapper.each( function() { - $(this).show(); + lsx_to.readMoreOpen = function( button, contentWrapper ) { + if ( 0 < contentWrapper.children().length ) { + contentWrapper.children().each( function() { + if ( ! $(this).hasClass('wp-block-read-more') ) { + $(this).show(); + } }); button.addClass( 'less-link' ); button.text( 'Read Less' ); @@ -114,7 +118,7 @@ if ( window.location.hash ) { $( '.single-tour-operator .additional-info .lsx-to-more-link' ).each( function() { lsx_to.readMoreTIText = $(this).find('a').text(); - lsx_to.readMoreSetTI( $(this) ); + lsx_to.readMoreSet( $(this), $(this).closest( '.additional-info' ).find('.content') ); } ); $( '.single-tour-operator .additional-info .lsx-to-more-link' ).on( 'click', function( event ) { @@ -122,56 +126,14 @@ if ( window.location.hash ) { $( this ).hide(); if ( $( this ).hasClass( 'less-link' ) ) { - lsx_to.readMoreSetTI($( this )); + lsx_to.readMoreSet( $(this), $(this).closest( '.additional-info' ).find('.content') ); } else { - lsx_to.readMoreOpenTI($( this )); + lsx_to.readMoreOpenTI( $(this), $(this).closest( '.additional-info' ).find('.content') ); } $( this ).show(); } ); - }; - lsx_to.readMoreSetTI = function( button ) { - let contentWrapper = button.closest( '.additional-info' ).find('.content'); - if ( 0 < contentWrapper.length ) { - if ( 1 < contentWrapper.find('p').length ) { - - //first remove empty p tags. - contentWrapper.find('p').each( function() { - if ( '' === $(this).html() ) { - $(this).remove(); - } - }); - - var limit = 1; - let counter = 0; - - contentWrapper.find('p').each( function() { - if ( limit <= counter ) { - $(this).hide(); - } - counter++; - }); - } else { - button.hide(); - } - button.removeClass('less-link'); - button.find('a').text( lsx_to.readMoreTIText ); - } - } - - lsx_to.readMoreOpenTI = function( button ) { - let contentWrapper = button.closest( '.additional-info' ).find('.content p'); - if ( 0 < contentWrapper.length ) { - contentWrapper.each( function() { - $(this).show(); - }); - button.addClass( 'less-link' ); - button.find('a').text( 'View Less' ); - button.show(); - - } - } /** * Read more (itinerary) effect. @@ -179,14 +141,27 @@ if ( window.location.hash ) { * @package tour-operator * @subpackage scripts */ + + lsx_to.readMoreItinText = ''; + lsx_to.set_read_more_itinerary = function() { - $( '#itinerary .view-more a' ).click( function( event ) { + $( '.single-tour-operator .lsx-itinerary-wrapper .wp-block-read-more' ).each( function() { + $(this).show(); + lsx_to.readMoreItinText = $(this).find('a').text(); + lsx_to.readMoreSet( $(this), $(this).parent( 'div' ).find('.itinerary-description') ); + } ); + + $( '.single-tour-operator .lsx-itinerary-wrapper .wp-block-read-more' ).on( 'click', function( event ) { event.preventDefault(); $( this ).hide(); - $( this ).parents( '#itinerary' ).find( '.itinerary-item.hidden' ).each( function() { - $( this ).removeClass( 'hidden' ); - } ); + if ( $( this ).hasClass( 'less-link' ) ) { + lsx_to.readMoreSet( $(this), $(this).parent( 'div' ).find('.itinerary-description') ); + } else { + lsx_to.readMoreOpen( $(this), $(this).parent( 'div' ).find('.itinerary-description') ); + } + + $( this ).show(); } ); }; @@ -378,7 +353,7 @@ if ( window.location.hash ) { $document.ready( function() { lsx_to.set_read_more(); lsx_to.set_read_more_travel_info(); - //lsx_to.set_read_more_itinerary(); + lsx_to.set_read_more_itinerary(); lsx_to.build_slider( window_width ); } ); diff --git a/includes/classes/admin/class-setup.php b/includes/classes/admin/class-setup.php index b2edfd20..2e25a5d2 100644 --- a/includes/classes/admin/class-setup.php +++ b/includes/classes/admin/class-setup.php @@ -33,7 +33,42 @@ class Setup { * @since 1.1.0 * @var array */ - public $post_types; + public $post_types = [ + 'tour', + 'accommodation', + 'destination', + ]; + + public $image_sizes = [ + 'lsx-to-card-list' => [ + 'title' => 'TO Card (list)', + 'ratio' => '1:1', + 'width' => 300, + 'height' => 300, + 'crop' => true + ], + 'lsx-to-card-grid' => [ + 'title' => 'TO Card (grid)', + 'ratio' => '3:2', + 'width' => 400, + 'height' => 250, + 'crop' => true + ], + 'lsx-to-gallery' => [ + 'title' => 'TO Gallery', + 'ratio' => '3:2', + 'width' => 900, + 'height' => 600, + 'crop' => true + ], + 'lsx-to-banner' => [ + 'title' => 'TO Banner', + 'ratio' => '5:2', + 'width' => 1440, + 'height' => 600, + 'crop' => true + ] + ]; /** * Initialize the plugin by setting localization, filters, and administration functions. @@ -43,13 +78,10 @@ class Setup { * @access private */ public function __construct() { - $this->post_types = array( - 'tour', - 'accommodation', - 'destination', - ); add_action( 'init', array( $this, 'load_plugin_textdomain' ) ); add_action( 'init', array( $this, 'register_meta_with_rest' ) ); + add_action( 'init', array( $this, 'register_image_sizes' ) ); + add_filter( 'image_size_names_choose', array( $this, 'editor_image_sizes' ), 10, 1 ); add_action( 'cmb2_admin_init', array( $this, 'register_cmb2_fields' ) ); // Allow extra tags and attributes to wp_kses_post(). @@ -346,4 +378,29 @@ public function safe_style_css( $allowedstyles ) { return $allowedstyles; } + + /** + * Register the image sizes with WordPress + * + * @return void + */ + public function register_image_sizes() { + foreach ( $this->image_sizes as $key => $params ) { + add_image_size( $key, $params['width'], $params['height'], $params['crop'] ); + } + } + + /** + * The array of image sizes from WordPress + * + * @param array $sizes + * @return array + */ + public function editor_image_sizes( $sizes ) { + $new_sizes = []; + foreach ( $this->image_sizes as $key => $params ) { + $new_sizes[ $key ] = $params['title']; + } + return array_merge( $sizes, $new_sizes ); + } } \ No newline at end of file diff --git a/includes/classes/blocks/class-bindings.php b/includes/classes/blocks/class-bindings.php index 1c529f53..7b8c5cc5 100644 --- a/includes/classes/blocks/class-bindings.php +++ b/includes/classes/blocks/class-bindings.php @@ -170,6 +170,7 @@ public function post_connections_callback( $source_args, $block_instance ) { $value = get_post_meta( get_the_ID(), $source_args['key'], $single ); if ( is_array( $value ) && ! empty( $value ) ) { + $value = array_filter( $value ); $values = array(); foreach( $value as $pid ) { if ( true === $only_parents ) { @@ -277,6 +278,7 @@ public function render_itinerary_block( $block_content, $parsed_block, $block_ob while ( lsx_to_itinerary_loop() ) { lsx_to_itinerary_loop_item(); $build = $pattern; + foreach ( $this->itinerary_fields as $field ) { $build = $this->build_itinerary_field( $build, $field, $itinerary_count ); } @@ -377,17 +379,30 @@ public function build_image( $build = '', $classname = 'itinerary-image' ) { $tags = new \WP_HTML_Tag_Processor( $build ); if ( $tags->next_tag( array( 'class_name' => $classname ) ) ) { + + $size = 'medium'; + $classes = $tags->get_attribute( 'class' ); + $classes = explode( ' ', $classes ); + foreach ( $classes as $class ) { + if ( 0 <= stripos( $class, 'size-' ) ) { + $size = str_replace( 'size-', '', $class ); + } + } + if ( $tags->next_tag( array( 'tag_name' => 'img' ) ) ) { if ( 'itinerary-image' === $classname ) { - $img_src = lsx_to_itinerary_thumbnail(); + $img_src = lsx_to_itinerary_thumbnail( $size ); } else { - $img_src = $rooms->item_thumbnail(); + $img_src = $rooms->item_thumbnail( $size ); } $tags->set_attribute( 'rel', sanitize_key( $classname ) ); $tags->set_attribute( 'src', $img_src ); $build = $tags->get_updated_html(); } + + + } return $build; @@ -453,12 +468,13 @@ public function render_units_block( $block_content, $parsed_block, $block_obj ) */ public function build_unit_field( $build = '', $field = '', $count = 1 ) { global $rooms; - $pattern = ''; - $value = ''; + $pattern = ''; + $value = ''; + $tour_operator = tour_operator(); switch ( $field ) { case 'title': - $value = $rooms->item_title( '', '', false ); + $value = strip_tags( $rooms->item_title( '', '', false ) ); $pattern = '/(]*\bclass="[^"]*\bunit-title\b[^"]*"[^>]*>).*?(<\/h[1-6]>)/is'; break; @@ -484,6 +500,14 @@ public function build_unit_field( $build = '', $field = '', $count = 1 ) { case 'price': $value = $rooms->item_price( '', '', false ); + + if ( is_object( $tour_operator ) && isset( $tour_operator->options['currency'] ) && ! empty( $tour_operator->options['currency'] ) ) { + $currency = $tour_operator->options['currency']; + $currency = '' . $currency . ''; + } + + $value = $currency . $value; + $pattern = '/(]*\bclass="[^"]*\bunit-price\b[^"]*"[^>]*>).*?(<\/p>)/is'; break; @@ -495,8 +519,9 @@ public function build_unit_field( $build = '', $field = '', $count = 1 ) { if ( '' === $value ) { $pattern = '/\bunit-' . $field . '-wrapper\b/'; $value = 'hidden unit-' . $field . '-wrapper'; - } - $replacement = '$1' . $value . '$2'; + } + + $replacement = '$1 ' . $value . ' $2'; $build = preg_replace($pattern, $replacement, $build); return $build; } diff --git a/includes/classes/blocks/class-registration.php b/includes/classes/blocks/class-registration.php index 3207168a..45f240ba 100644 --- a/includes/classes/blocks/class-registration.php +++ b/includes/classes/blocks/class-registration.php @@ -102,8 +102,6 @@ public function query_args_filter( $query, $block ) { return $query; } - do_action( 'qm/debug', [ $key ] ); - switch ( $key ) { case 'regions': // We only restric this on the destination post type, in case the block is used on a landing page. @@ -174,15 +172,12 @@ public function query_args_filter( $query, $block ) { // Get the current destinations attached $destinations = get_post_meta( get_the_ID(), 'destination_to_' . $from, true ); - - do_action( 'qm/debug', $destinations ); if ( ! empty( $destinations ) ) { $items = []; foreach ( $destinations as $destination ) { $found_items = get_post_meta( $destination, $to . '_to_destination', true ); - do_action( 'qm/debug', [ $to . '_to_destination', $found_items ] ); if ( ! empty( $found_items ) ) { if ( ! is_array( $found_items ) ) { $found_items = [ $found_items ]; @@ -198,8 +193,6 @@ public function query_args_filter( $query, $block ) { } } - do_action( 'qm/debug', $query['post__in'] ); - if ( ! isset( $query['post__in'] ) ) { $this->disabled[ $key ] = true; } @@ -225,8 +218,6 @@ public function query_args_filter( $query, $block ) { $found_items = get_post_meta( get_the_ID(), $to . '_to_' . $from, true ); - do_action( 'qm/debug', [ get_the_ID(), $to . '_to_' . $from, $found_items ] ); - if ( false !== $found_items && ! empty( $found_items ) ) { if ( ! is_array( $found_items ) ) { $found_items = [ $found_items ]; @@ -416,7 +407,6 @@ protected function post_ids_exist( $ids ) { */ public function posts_pre_query( $posts, $query ) { if ( isset( $query->query['lsx_to_featured'] ) && isset( $this->featured[ $query->query['lsx_to_featured'] ] ) ) { - do_action( 'qm/debug', $this->featured[ $query->query['lsx_to_featured'] ] ); $posts = $this->featured[ $query->query['lsx_to_featured'] ]; } return $posts; diff --git a/includes/classes/legacy/class-accommodation.php b/includes/classes/legacy/class-accommodation.php index d0ccb24a..3d3af61f 100644 --- a/includes/classes/legacy/class-accommodation.php +++ b/includes/classes/legacy/class-accommodation.php @@ -123,6 +123,8 @@ public function price_filter( $html = '', $meta_key = false, $value = false, $be 'single_supplement' ]; + do_action( 'qm/debug', [ get_post_type(), $meta_key ] ); + if ( get_post_type() === 'accommodation' && in_array( $meta_key, $currency_fields ) ) { $price_type = get_post_meta( get_the_ID(), 'price_type', true ); $value = preg_replace( '/[^0-9,.]/', '', $value ); diff --git a/includes/classes/legacy/class-unit-query.php b/includes/classes/legacy/class-unit-query.php index 2dad81f7..90183cea 100644 --- a/includes/classes/legacy/class-unit-query.php +++ b/includes/classes/legacy/class-unit-query.php @@ -208,13 +208,13 @@ public function item_type( $before = '', $after = '', $echo = false ) { /** * Outputs the current items "gallery" field */ - public function item_thumbnail() { + public function item_thumbnail( $size = 'large' ) { $thumbnail_src = false; $thumbnail_src = apply_filters( 'lsx_to_accommodation_room_thumbnail', $thumbnail_src ); if ( $this->have_query && false !== $this->query_item && ! empty( $this->query_item ) ) { if ( isset( $this->query_item['gallery'] ) && ! empty( $this->query_item['gallery'] ) ) { $images = array_keys( $this->query_item['gallery'] ); - $thumbnail = wp_get_attachment_image_src( $images[0], 'medium' ); + $thumbnail = wp_get_attachment_image_src( $images[0], $size ); if ( is_array( $thumbnail ) ) { $thumbnail_src = $thumbnail[0]; } diff --git a/includes/patterns/gallery.php b/includes/patterns/gallery.php new file mode 100644 index 00000000..54e5d746 --- /dev/null +++ b/includes/patterns/gallery.php @@ -0,0 +1,39 @@ + __( 'TO Gallery', 'tour-operator' ), + 'description' => __( '', 'tour-operator' ), + 'categories' => array( $this->category ), + 'templateTypes' => array( 'single' ), + 'content' => ' + + + + ', +); diff --git a/includes/patterns/room-card.php b/includes/patterns/room-card.php index b22dd85b..56953c26 100644 --- a/includes/patterns/room-card.php +++ b/includes/patterns/room-card.php @@ -35,8 +35,8 @@

Information

- -
+ +
@@ -51,8 +51,8 @@
- -
+ +
@@ -63,7 +63,7 @@ -
+
diff --git a/includes/template-tags/helpers.php b/includes/template-tags/helpers.php index 2ec90a30..af69f52c 100644 --- a/includes/template-tags/helpers.php +++ b/includes/template-tags/helpers.php @@ -284,6 +284,7 @@ function lsx_to_custom_field_query( $meta_key = false, $before = '', $after = '' $value = get_post_meta( $post_id, $meta_key, $single ); if ( is_array( $value ) ) { + $value = array_filter($value); $value = implode( ', ', $value ); } } diff --git a/vendor/cmb-field-select2/cmb-field-select2.php b/vendor/cmb-field-select2/cmb-field-select2.php index 850bbb30..70e6877c 100755 --- a/vendor/cmb-field-select2/cmb-field-select2.php +++ b/vendor/cmb-field-select2/cmb-field-select2.php @@ -122,6 +122,10 @@ public function get_pw_multiselect_options( $field_escaped_value, $field_type_ob } } + if ( empty( $selected_items ) ) { + $selected_items = ''; + } + return $selected_items . $other_items; }