Plugin Directory

Changeset 1428045


Ignore:
Timestamp:
06/01/2016 05:29:46 AM (9 years ago)
Author:
tranthethang
Message:

release version 1.1.3

  • Add new filter: kopa_get_custom_layouts_for_private_object
  • Add new filter: kopa_get_selected_layout_for_private_object
Location:
kopa-page-builder/trunk
Files:
5 added
14 edited

Legend:

Unmodified
Added
Removed
  • kopa-page-builder/trunk/css/style.css

    r1323889 r1428045  
    208208.kpb-row-sub-area {
    209209  margin-top: 24px;
     210  padding: 12px 5px;
     211  border: 1px solid #fafafa;
    210212}
    211213.kpb-row-sub-area.kpb-row-sub-area-first {
  • kopa-page-builder/trunk/css/style.min.css

    r1323889 r1428045  
    1 .kpb-row{margin-right:-6px;margin-left:-6px}.kpb-row:before,.kpb-row:after{display:table;content:" "}.kpb-row:after{clear:both}.kpb-section-placeholder>.kpb-row{margin-top:-12px}.kpb-section-placeholder>.kpb-row>div{margin-top:12px}.kpb-content-box,.kpb-row{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.kpb-border-box,.kpb-col-1,.kpb-col-2,.kpb-col-3,.kpb-col-4,.kpb-col-5,.kpb-col-6,.kpb-col-7,.kpb-col-8,.kpb-col-9,.kpb-col-10,.kpb-col-11,.kpb-col-12{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.kpb-pull-right{float:right !important}.kpb-pull-left{float:left !important}.kpb-clearfix:before,.kpb-clearfix:after{display:table;content:" "}.kpb-clearfix:after{clear:both}.kpb-col-1,.kpb-col-2,.kpb-col-3,.kpb-col-4,.kpb-col-5,.kpb-col-6,.kpb-col-7,.kpb-col-8,.kpb-col-9,.kpb-col-10,.kpb-col-11,.kpb-col-12{float:left;padding-left:6px;padding-right:6px}.kpb-col-12{width:100%}.kpb-col-11{width:91.66666666666666%}.kpb-col-10{width:83.33333333333334%}.kpb-col-9{width:75%}.kpb-col-8{width:66.66666666666666%}.kpb-col-7{width:58.333333333333336%}.kpb-col-6{width:50%}.kpb-col-5{width:41.66666666666667%}.kpb-col-4{width:33.33333333333333%}.kpb-col-3{width:25%}.kpb-col-2{width:16.666666666666664%}.kpb-col-1{width:8.333333333333332%}#poststuff #kopa_page_builder_meta_boxes .inside{margin-top:12px}#kpb-widgets a,#kpb-widgets button,section.kpb-wrapper a,section.kpb-wrapper button,.kpb-customize a,.kpb-customize button{outer:none !important;box-shadow:none !important}#kpb-widgets a:focus,#kpb-widgets button:focus,section.kpb-wrapper a:focus,section.kpb-wrapper button:focus,.kpb-customize a:focus,.kpb-customize button:focus{box-shadow:none !important}header#kpb-wrapper-header{margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid #e5e5e5}header#kpb-wrapper-header.kpb-stuck{position:fixed;top:32px;left:0;right:0px;width:100%;height:36px;line-height:36px;background-color:rgba(255,255,255,0.9);margin-bottom:0px;padding-bottom:0px;-webkit-box-shadow:0 0 9px rgba(166,166,166,0.75);-moz-box-shadow:0 0 9px rgba(166,166,166,0.75);box-shadow:0 0 9px rgba(166,166,166,0.75);border-bottom:none;padding-top:6px;padding-left:12px;padding-right:12px}header#kpb-wrapper-header.kpb-stuck #kpb-button-save-layouts{margin-right:48px}header#kpb-wrapper-header.kpb-stuck #kpb-select-layout{display:none}.kpb-preview-images{display:block;padding:3px;border:1px solid #e5e5e5;overflow:hidden}.kpb-preview-images img{width:100%;max-width:100%}aside.kpb-section{margin-top:24px;border:1px solid #158bc5}aside.kpb-section.kpb-first{margin-top:0px}aside.kpb-section header.kpb-section-header{background-color:#158bc5;margin:-1px;border-bottom-color:#158bc5 !important}aside.kpb-section header.kpb-section-header label{color:#fff;text-transform:uppercase;font-size:15px;font-weight:bold}aside.kpb-section .kpb-section-placeholder{padding:0px 12px 12px 12px}.kpb-row-sub-area{margin-top:24px}.kpb-row-sub-area.kpb-row-sub-area-first{margin-top:0px}div.kpb-area{border:1px solid #ececec}div.kpb-area header.kpb-area-header{background-color:#ececec;margin:-1px}div.kpb-area header.kpb-area-header label{font-size:14px;text-transform:uppercase;font-style:bold}div.kpb-area .kpb-area-placeholder{padding:6px 12px;min-height:24px}div.kpb-area .kpb-area-placeholder .kpb-widget{cursor:move;background-color:#f8f8f8;border:1px solid #e5e5e5;border-radius:3px}#kpb-widgets{positions:relative;background-color:#fff;width:70%;margin:48px auto}#kpb-widgets #kpb-widgets-header{background-color:#ececec}#kpb-widgets .kpb-widgets-inner{padding:12px}#kpb-widgets .kpb-row .kpb-widget{margin-top:24px}#kpb-widgets .kpb-row.kpb-first .kpb-widget{margin-top:0px}#kpb-widgets aside.kpb-widget .kpb-widget-inner{border:1px solid #e5e5e5}#kpb-widgets aside.kpb-widget .kpb-widget-inner header{background-color:#f8f8f8}#kpb-widgets aside.kpb-widget .kpb-widget-inner .kpb-widget-description{padding:6px;font-size:85%;font-style:italic;color:#666}.kpb-widget-inner{overflow:hidden}#kpb-widget{positions:relative;background-color:#fff;width:70%;margin:48px auto}#kpb-widget #kpb-widget-header{background-color:#ececec}#kpb-widget .kpb-form-inner{margin-left:24px;margin-right:24px}.kpb-loading{font-style:italic}#kpb-metabox-loading-text{line-height:16px}#kpb-metabox-loading-text img{height:16px;width:16px;display:block;float:left;margin:0px;padding:0px}.kpb-widget-sortable-placeholder{background:#F9F9F9;border:1px solid #e5e5e5;border-radius:3px;margin-bottom:12px}#kpb-loading-overlay{display:block;position:fixed;bottom:24px;right:-150px;height:36px;line-height:36px;width:100px;z-index:999999;background-color:#158bc5;color:#FFF;font-style:italic;padding:0px 12px;-webkit-border-top-left-radius:12px;-webkit-border-bottom-left-radius:12px;-moz-border-radius-topleft:12px;-moz-border-radius-bottomleft:12px;border-top-left-radius:12px;border-bottom-left-radius:12px}.kpb-customize-lightbox{positions:relative;background-color:#fff;width:70%;margin:48px auto}.kpb-customize-lightbox header.kpb-customize-header .button-delete{margin-left:12px}.kpb-customize-lightbox .kpb-form-inner{margin:0px}.kpb-wrapper-configuration header{margin-bottom:-1px !important}.kpb-wrapper-configuration .kpb-wrapper-configuration-toggle{padding:12px 24px}.kpb-wrapper-configuration nav ul{margin:0px;list-style-type:none}.kpb-wrapper-configuration nav ul li{display:block;float:left;margin-bottom:0px;padding-left:12px;margin-left:12px;border-left:1px solid #e5e5e5;height:24px;line-height:24px}.kpb-wrapper-configuration nav ul li.kpb-tab-title-first{padding-left:0px;margin-left:0px;border-left:none}.kpb-wrapper-configuration nav ul li a{text-decoration:none;outline:none !important}.kpb-wrapper-configuration nav ul li.kpb-tab-title-active a{color:red}.kpb-wrapper-configuration .kpb-tab-content .kpb-control{margin-top:12px;padding-top:12px;border-top:1px solid #e5e5e5}.kpb-widget-customize .kpb-wrapper-configuration-toggle{padding:0px !important}#kpb-button-hide-preview{margin-right:24px}#kpb-button-customize{margin-left:24px}#kpb-list-icon{margin-top:24px;margin-bottom:24px}#kpb-list-icon .kpb-ui-icon-item{text-align:center;margin-top:24px}#kpb-list-icon .kpb-ui-icon-item a{display:inline-block;width:24px;height:24px;line-height:24px;font-size:16px;color:#000;border:1px solid #e5e5e5}#kpb-list-icon .kpb-ui-icon-item a:hover{color:red;border-color:red}.kpb-list-blocks.kpb-list-blocks-first .kpb-list-blocks-caption{margin-top:0px !important}.kpb-list-blocks .kpb-list-blocks-caption{margin-top:24px;margin-bottom:24px;padding-bottom:24px;border-bottom:3px double #e5e5e5}.kpb-ui-image-outer .button{margin-left:12px}.kpb-ui-image,.kpb-ui-image-preview{height:auto;width:200px;max-width:200px;border:1px solid #dedede;padding:1px}.kpb-ui-number{width:50px}.kpb-ui-textarea{width:100%}.kpb-ui-textarea.kpb-ui-textarea-guide-line{background:url("../images/textarea.gif") top left repeat transparent;font-family:"Courier";font-size:95%;line-height:21px}._kpb_header,aside.kpb-section header.kpb-section-header,div.kpb-area header.kpb-area-header,div.kpb-area .kpb-area-placeholder .kpb-widget,#kpb-widgets #kpb-widgets-header,#kpb-widgets aside.kpb-widget .kpb-widget-inner header,#kpb-widget #kpb-widget-header,.kpb-customize-lightbox header.kpb-customize-header,.kpb-wrapper-configuration header,._kpb_footer,#kpb-widget #kpb-widget-footer{padding:6px 12px;line-height:28px}._kpb_header,aside.kpb-section header.kpb-section-header,div.kpb-area header.kpb-area-header,div.kpb-area .kpb-area-placeholder .kpb-widget,#kpb-widgets #kpb-widgets-header,#kpb-widgets aside.kpb-widget .kpb-widget-inner header,#kpb-widget #kpb-widget-header,.kpb-customize-lightbox header.kpb-customize-header,.kpb-wrapper-configuration header{margin-bottom:12px;border-bottom:1px solid #e5e5e5}._kpb_footer,#kpb-widget #kpb-widget-footer{margin-top:12px;border-top:1px solid #e5e5e5}.kpb-active{display:block}.kpb-hidden{display:none}.kpb-img-responsive{display:block;height:auto;max-width:100%;width:100%}.button.button-link{border-color:transparent;box-shadow:none;font-style:italic}.button.button-delete{color:red}.kpb-button-customize{display:block;height:18px;width:18px;background:url("../images/customize.png") center center no-repeat transparent;margin-top:6px;outer:none !important;box-shadow:none !important}.kpb-button-customize:hover{opacity:0.8}.kpb-button-use,.kpb-button-add-widget{text-decoration:none;outer:none !important;box-shadow:none !important;font-style:italic}.kpb-button-edit,.kpb-button-delete{display:block;text-decoration:none;font-style:italic}.kpb-button-edit{margin-right:6px}.kpb-button-delete{color:red}.kpb-button-use{color:#158bc5}.kpb-ui-help-text{margin-top:12px;font-size:90%;font-style:italic}#kpb-button-customize-layout{margin-right:24px}#kpb-nav-list-blocks{margin-bottom:24px;padding-bottom:24px;border-bottom:1px solid #e5e5e5}.kpb-ui-alert{display:block;padding:12px 24px}.kpb-ui-alert.kpb-skin-info{background-color:#fff176;border:1px solid #fdd835;color:#333;font-style:italic}
     1.kpb-row{margin-right:-6px;margin-left:-6px}.kpb-row:before,.kpb-row:after{display:table;content:" "}.kpb-row:after{clear:both}.kpb-section-placeholder>.kpb-row{margin-top:-12px}.kpb-section-placeholder>.kpb-row>div{margin-top:12px}.kpb-content-box,.kpb-row{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.kpb-border-box,.kpb-col-1,.kpb-col-2,.kpb-col-3,.kpb-col-4,.kpb-col-5,.kpb-col-6,.kpb-col-7,.kpb-col-8,.kpb-col-9,.kpb-col-10,.kpb-col-11,.kpb-col-12{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.kpb-pull-right{float:right !important}.kpb-pull-left{float:left !important}.kpb-clearfix:before,.kpb-clearfix:after{display:table;content:" "}.kpb-clearfix:after{clear:both}.kpb-col-1,.kpb-col-2,.kpb-col-3,.kpb-col-4,.kpb-col-5,.kpb-col-6,.kpb-col-7,.kpb-col-8,.kpb-col-9,.kpb-col-10,.kpb-col-11,.kpb-col-12{float:left;padding-left:6px;padding-right:6px}.kpb-col-12{width:100%}.kpb-col-11{width:91.66666666666666%}.kpb-col-10{width:83.33333333333334%}.kpb-col-9{width:75%}.kpb-col-8{width:66.66666666666666%}.kpb-col-7{width:58.333333333333336%}.kpb-col-6{width:50%}.kpb-col-5{width:41.66666666666667%}.kpb-col-4{width:33.33333333333333%}.kpb-col-3{width:25%}.kpb-col-2{width:16.666666666666664%}.kpb-col-1{width:8.333333333333332%}#poststuff #kopa_page_builder_meta_boxes .inside{margin-top:12px}#kpb-widgets a,#kpb-widgets button,section.kpb-wrapper a,section.kpb-wrapper button,.kpb-customize a,.kpb-customize button{outer:none !important;box-shadow:none !important}#kpb-widgets a:focus,#kpb-widgets button:focus,section.kpb-wrapper a:focus,section.kpb-wrapper button:focus,.kpb-customize a:focus,.kpb-customize button:focus{box-shadow:none !important}header#kpb-wrapper-header{margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid #e5e5e5}header#kpb-wrapper-header.kpb-stuck{position:fixed;top:32px;left:0;right:0px;width:100%;height:36px;line-height:36px;background-color:rgba(255,255,255,0.9);margin-bottom:0px;padding-bottom:0px;-webkit-box-shadow:0 0 9px rgba(166,166,166,0.75);-moz-box-shadow:0 0 9px rgba(166,166,166,0.75);box-shadow:0 0 9px rgba(166,166,166,0.75);border-bottom:none;padding-top:6px;padding-left:12px;padding-right:12px}header#kpb-wrapper-header.kpb-stuck #kpb-button-save-layouts{margin-right:48px}header#kpb-wrapper-header.kpb-stuck #kpb-select-layout{display:none}.kpb-preview-images{display:block;padding:3px;border:1px solid #e5e5e5;overflow:hidden}.kpb-preview-images img{width:100%;max-width:100%}aside.kpb-section{margin-top:24px;border:1px solid #158bc5}aside.kpb-section.kpb-first{margin-top:0px}aside.kpb-section header.kpb-section-header{background-color:#158bc5;margin:-1px;border-bottom-color:#158bc5 !important}aside.kpb-section header.kpb-section-header label{color:#fff;text-transform:uppercase;font-size:15px;font-weight:bold}aside.kpb-section .kpb-section-placeholder{padding:0px 12px 12px 12px}.kpb-row-sub-area{margin-top:24px;padding:12px 5px;border:1px solid #fafafa}.kpb-row-sub-area.kpb-row-sub-area-first{margin-top:0px}div.kpb-area{border:1px solid #ececec}div.kpb-area header.kpb-area-header{background-color:#ececec;margin:-1px}div.kpb-area header.kpb-area-header label{font-size:14px;text-transform:uppercase;font-style:bold}div.kpb-area .kpb-area-placeholder{padding:6px 12px;min-height:24px}div.kpb-area .kpb-area-placeholder .kpb-widget{cursor:move;background-color:#f8f8f8;border:1px solid #e5e5e5;border-radius:3px}#kpb-widgets{positions:relative;background-color:#fff;width:70%;margin:48px auto}#kpb-widgets #kpb-widgets-header{background-color:#ececec}#kpb-widgets .kpb-widgets-inner{padding:12px}#kpb-widgets .kpb-row .kpb-widget{margin-top:24px}#kpb-widgets .kpb-row.kpb-first .kpb-widget{margin-top:0px}#kpb-widgets aside.kpb-widget .kpb-widget-inner{border:1px solid #e5e5e5}#kpb-widgets aside.kpb-widget .kpb-widget-inner header{background-color:#f8f8f8}#kpb-widgets aside.kpb-widget .kpb-widget-inner .kpb-widget-description{padding:6px;font-size:85%;font-style:italic;color:#666}.kpb-widget-inner{overflow:hidden}#kpb-widget{positions:relative;background-color:#fff;width:70%;margin:48px auto}#kpb-widget #kpb-widget-header{background-color:#ececec}#kpb-widget .kpb-form-inner{margin-left:24px;margin-right:24px}.kpb-loading{font-style:italic}#kpb-metabox-loading-text{line-height:16px}#kpb-metabox-loading-text img{height:16px;width:16px;display:block;float:left;margin:0px;padding:0px}.kpb-widget-sortable-placeholder{background:#F9F9F9;border:1px solid #e5e5e5;border-radius:3px;margin-bottom:12px}#kpb-loading-overlay{display:block;position:fixed;bottom:24px;right:-150px;height:36px;line-height:36px;width:100px;z-index:999999;background-color:#158bc5;color:#FFF;font-style:italic;padding:0px 12px;-webkit-border-top-left-radius:12px;-webkit-border-bottom-left-radius:12px;-moz-border-radius-topleft:12px;-moz-border-radius-bottomleft:12px;border-top-left-radius:12px;border-bottom-left-radius:12px}.kpb-customize-lightbox{positions:relative;background-color:#fff;width:70%;margin:48px auto}.kpb-customize-lightbox header.kpb-customize-header .button-delete{margin-left:12px}.kpb-customize-lightbox .kpb-form-inner{margin:0px}.kpb-wrapper-configuration header{margin-bottom:-1px !important}.kpb-wrapper-configuration .kpb-wrapper-configuration-toggle{padding:12px 24px}.kpb-wrapper-configuration nav ul{margin:0px;list-style-type:none}.kpb-wrapper-configuration nav ul li{display:block;float:left;margin-bottom:0px;padding-left:12px;margin-left:12px;border-left:1px solid #e5e5e5;height:24px;line-height:24px}.kpb-wrapper-configuration nav ul li.kpb-tab-title-first{padding-left:0px;margin-left:0px;border-left:none}.kpb-wrapper-configuration nav ul li a{text-decoration:none;outline:none !important}.kpb-wrapper-configuration nav ul li.kpb-tab-title-active a{color:red}.kpb-wrapper-configuration .kpb-tab-content .kpb-control{margin-top:12px;padding-top:12px;border-top:1px solid #e5e5e5}.kpb-widget-customize .kpb-wrapper-configuration-toggle{padding:0px !important}#kpb-button-hide-preview{margin-right:24px}#kpb-button-customize{margin-left:24px}#kpb-list-icon{margin-top:24px;margin-bottom:24px}#kpb-list-icon .kpb-ui-icon-item{text-align:center;margin-top:24px}#kpb-list-icon .kpb-ui-icon-item a{display:inline-block;width:24px;height:24px;line-height:24px;font-size:16px;color:#000;border:1px solid #e5e5e5}#kpb-list-icon .kpb-ui-icon-item a:hover{color:red;border-color:red}.kpb-list-blocks.kpb-list-blocks-first .kpb-list-blocks-caption{margin-top:0px !important}.kpb-list-blocks .kpb-list-blocks-caption{margin-top:24px;margin-bottom:24px;padding-bottom:24px;border-bottom:3px double #e5e5e5}.kpb-ui-image-outer .button{margin-left:12px}.kpb-ui-image,.kpb-ui-image-preview{height:auto;width:200px;max-width:200px;border:1px solid #dedede;padding:1px}.kpb-ui-number{width:50px}.kpb-ui-textarea{width:100%}.kpb-ui-textarea.kpb-ui-textarea-guide-line{background:url("../images/textarea.gif") top left repeat transparent;font-family:"Courier";font-size:95%;line-height:21px}._kpb_header,aside.kpb-section header.kpb-section-header,div.kpb-area header.kpb-area-header,div.kpb-area .kpb-area-placeholder .kpb-widget,#kpb-widgets #kpb-widgets-header,#kpb-widgets aside.kpb-widget .kpb-widget-inner header,#kpb-widget #kpb-widget-header,.kpb-customize-lightbox header.kpb-customize-header,.kpb-wrapper-configuration header,._kpb_footer,#kpb-widget #kpb-widget-footer{padding:6px 12px;line-height:28px}._kpb_header,aside.kpb-section header.kpb-section-header,div.kpb-area header.kpb-area-header,div.kpb-area .kpb-area-placeholder .kpb-widget,#kpb-widgets #kpb-widgets-header,#kpb-widgets aside.kpb-widget .kpb-widget-inner header,#kpb-widget #kpb-widget-header,.kpb-customize-lightbox header.kpb-customize-header,.kpb-wrapper-configuration header{margin-bottom:12px;border-bottom:1px solid #e5e5e5}._kpb_footer,#kpb-widget #kpb-widget-footer{margin-top:12px;border-top:1px solid #e5e5e5}.kpb-active{display:block}.kpb-hidden{display:none}.kpb-img-responsive{display:block;height:auto;max-width:100%;width:100%}.button.button-link{border-color:transparent;box-shadow:none;font-style:italic}.button.button-delete{color:red}.kpb-button-customize{display:block;height:18px;width:18px;background:url("../images/customize.png") center center no-repeat transparent;margin-top:6px;outer:none !important;box-shadow:none !important}.kpb-button-customize:hover{opacity:0.8}.kpb-button-use,.kpb-button-add-widget{text-decoration:none;outer:none !important;box-shadow:none !important;font-style:italic}.kpb-button-edit,.kpb-button-delete{display:block;text-decoration:none;font-style:italic}.kpb-button-edit{margin-right:6px}.kpb-button-delete{color:red}.kpb-button-use{color:#158bc5}.kpb-ui-help-text{margin-top:12px;font-size:90%;font-style:italic}#kpb-button-customize-layout{margin-right:24px}#kpb-nav-list-blocks{margin-bottom:24px;padding-bottom:24px;border-bottom:1px solid #e5e5e5}.kpb-ui-alert{display:block;padding:12px 24px}.kpb-ui-alert.kpb-skin-info{background-color:#fff176;border:1px solid #fdd835;color:#333;font-style:italic}
  • kopa-page-builder/trunk/css/style.scss

    r1323889 r1428045  
    1212.kpb-row {
    1313    @extend .kpb-content-box;
    14     margin-right: ($space / 2) * -1;
    15     margin-left: ($space / 2) * -1;
     14    margin-right: ( $space / 2) * -1;
     15    margin-left: ( $space / 2) * -1;   
    1616    &:before,
    1717    &:after{
     
    195195.kpb-row-sub-area{
    196196    margin-top: $space * 2;
     197    padding: 12px 5px;
     198    border: 1px solid #fafafa;
     199   
    197200    &.kpb-row-sub-area-first{
    198201        margin-top: 0px;
     
    489492    width: 100%;
    490493    &.kpb-ui-textarea-guide-line{
    491         background: url('../images/textarea.gif') top left repeat transparent;
     494        background: url( '../images/textarea.gif') top left repeat transparent;
    492495        font-family: "Courier";
    493496        font-size: 95%;
     
    542545    height: 18px;
    543546    width: 18px;
    544     background: url('../images/customize.png') center center no-repeat transparent;
     547    background: url( '../images/customize.png') center center no-repeat transparent;   
    545548    margin-top: $space / 2;
    546549    outer: none !important;
  • kopa-page-builder/trunk/js/jquery.magnific-popup.js

    r1209395 r1428045  
    22* http://dimsemenov.com/plugins/magnific-popup/
    33* Copyright (c) 2014 Dmitry Semenov; */
    4 ;(function($) {
     4;(function( $) {
    55
    66/*>>core*/
     
    3333 */
    3434var mfp, // As we have only one instance of MagnificPopup object, we define it locally to not to use 'this'
    35     MagnificPopup = function(){},
     35    MagnificPopup = function() {},
    3636    _isJQ = !!(window.jQuery),
    3737    _prevStatus,
     
    5151    },
    5252    _getEl = function(className, appendTo, html, raw) {
    53         var el = document.createElement('div');
     53        var el = document.createElement( 'div' );
    5454        el.className = 'mfp-'+className;
    5555        if(html) {
     
    7979    _getCloseBtn = function(type) {
    8080        if(type !== _currPopupType || !mfp.currTemplate.closeBtn) {
    81             mfp.currTemplate.closeBtn = $( mfp.st.closeMarkup.replace('%title%', mfp.st.tClose ) );
     81            mfp.currTemplate.closeBtn = $( mfp.st.closeMarkup.replace( '%title%', mfp.st.tClose ) );
    8282            _currPopupType = type;
    8383        }
     
    9494    // CSS transition detection, http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr
    9595    supportsTransitions = function() {
    96         var s = document.createElement('p').style, // 's' for style. better to create an element if body yet to exist
     96        var s = document.createElement( 'p').style, // 's' for style. better to create an element if body yet to exist
    9797            v = ['ms','O','Moz','Webkit']; // 'v' for vendor
    9898
     
    215215
    216216            // Dark overlay
    217             mfp.bgOverlay = _getEl('bg').on('click'+EVENT_NS, function() {
     217            mfp.bgOverlay = _getEl( 'bg').on( 'click'+EVENT_NS, function() {
    218218                mfp.close();
    219219            });
    220220
    221             mfp.wrap = _getEl('wrap').attr('tabindex', -1).on('click'+EVENT_NS, function(e) {
     221            mfp.wrap = _getEl( 'wrap').attr( 'tabindex', -1).on( 'click'+EVENT_NS, function(e) {
    222222                if(mfp._checkIfClose(e.target)) {
    223223                    mfp.close();
     
    225225            });
    226226
    227             mfp.container = _getEl('container', mfp.wrap);
    228         }
    229 
    230         mfp.contentContainer = _getEl('content');
     227            mfp.container = _getEl( 'container', mfp.wrap);
     228        }
     229
     230        mfp.contentContainer = _getEl( 'content' );
    231231        if(mfp.st.preloader) {
    232             mfp.preloader = _getEl('preloader', mfp.container, mfp.st.tLoading);
     232            mfp.preloader = _getEl( 'preloader', mfp.container, mfp.st.tLoading);
    233233        }
    234234
     
    241241            mfp['init'+n].call(mfp);
    242242        }
    243         _mfpTrigger('BeforeOpen');
     243        _mfpTrigger( 'BeforeOpen' );
    244244
    245245
     
    285285        if(mfp.st.enableEscapeKey) {
    286286            // Close on ESC key
    287             _document.on('keyup' + EVENT_NS, function(e) {
     287            _document.on( 'keyup' + EVENT_NS, function(e) {
    288288                if(e.keyCode === 27) {
    289289                    mfp.close();
     
    292292        }
    293293
    294         _window.on('resize' + EVENT_NS, function() {
     294        _window.on( 'resize' + EVENT_NS, function() {
    295295            mfp.updateSize();
    296296        });
     
    325325            } else {
    326326                // ie7 double-scroll bug
    327                 $('body, html').css('overflow', 'hidden');
     327                $( 'body, html').css( 'overflow', 'hidden' );
    328328            }
    329329        }
     
    342342        mfp.updateItemHTML();
    343343
    344         _mfpTrigger('BuildControls');
     344        _mfpTrigger( 'BuildControls' );
    345345
    346346        // remove scrollbar, add margin e.t.c
    347         $('html').css(windowStyles);
     347        $( 'html').css(windowStyles);
    348348       
    349349        // add everything to DOM
     
    365365           
    366366            // Trap the focus in popup
    367             _document.on('focusin' + EVENT_NS, mfp._onFocusIn);
     367            _document.on( 'focusin' + EVENT_NS, mfp._onFocusIn);
    368368
    369369        }, 16);
     
    416416            var windowStyles = {marginRight: ''};
    417417            if(mfp.isIE7) {
    418                 $('body, html').css('overflow', '');
     418                $( 'body, html').css( 'overflow', '' );
    419419            } else {
    420420                windowStyles.overflow = '';
    421421            }
    422             $('html').css(windowStyles);
    423         }
    424        
    425         _document.off('keyup' + EVENT_NS + ' focusin' + EVENT_NS);
     422            $( 'html').css(windowStyles);
     423        }
     424       
     425        _document.off( 'keyup' + EVENT_NS + ' focusin' + EVENT_NS);
    426426        mfp.ev.off(EVENT_NS);
    427427
    428428        // clean up DOM elements that aren't removed
    429         mfp.wrap.attr('class', 'mfp-wrap').removeAttr('style');
    430         mfp.bgOverlay.attr('class', 'mfp-bg');
    431         mfp.container.attr('class', 'mfp-container');
     429        mfp.wrap.attr( 'class', 'mfp-wrap').removeAttr( 'style' );
     430        mfp.bgOverlay.attr( 'class', 'mfp-bg' );
     431        mfp.container.attr( 'class', 'mfp-container' );
    432432
    433433        // remove close button from target element
     
    456456            var zoomLevel = document.documentElement.clientWidth / window.innerWidth;
    457457            var height = window.innerHeight * zoomLevel;
    458             mfp.wrap.css('height', height);
     458            mfp.wrap.css( 'height', height);
    459459            mfp.wH = height;
    460460        } else {
     
    463463        // Fixes #84: popup incorrectly positioned with position:relative on body
    464464        if(!mfp.fixedContentPos) {
    465             mfp.wrap.css('height', mfp.wH);
    466         }
    467 
    468         _mfpTrigger('Resize');
     465            mfp.wrap.css( 'height', mfp.wH);
     466        }
     467
     468        _mfpTrigger( 'Resize' );
    469469
    470470    },
     
    488488        var type = item.type;   
    489489
    490         _mfpTrigger('BeforeChange', [mfp.currItem ? mfp.currItem.type : '', type]);
     490        _mfpTrigger( 'BeforeChange', [mfp.currItem ? mfp.currItem.type : '', type]);
    491491        // BeforeChange event works like so:
    492         // _mfpOn('BeforeChange', function(e, prevType, newType) { });
     492        // _mfpOn( 'BeforeChange', function(e, prevType, newType) { });
    493493       
    494494        mfp.currItem = item;
     
    502502
    503503            // allows to modify markup
    504             _mfpTrigger('FirstMarkupParse', markup);
     504            _mfpTrigger( 'FirstMarkupParse', markup);
    505505
    506506            if(markup) {
     
    513513
    514514        if(_prevContentType && _prevContentType !== item.type) {
    515             mfp.container.removeClass('mfp-'+_prevContentType+'-holder');
     515            mfp.container.removeClass( 'mfp-'+_prevContentType+'-holder' );
    516516        }
    517517       
     
    527527        mfp.container.prepend(mfp.contentContainer);
    528528
    529         _mfpTrigger('AfterChange');
     529        _mfpTrigger( 'AfterChange' );
    530530    },
    531531
     
    541541                mfp.currTemplate[type] === true) {
    542542                // if there is no markup, we just append close button element inside
    543                 if(!mfp.content.find('.mfp-close').length) {
     543                if(!mfp.content.find( '.mfp-close').length) {
    544544                    mfp.content.append(_getCloseBtn());
    545545                }
     
    552552
    553553        _mfpTrigger(BEFORE_APPEND_EVENT);
    554         mfp.container.addClass('mfp-'+type+'-holder');
     554        mfp.container.addClass( 'mfp-'+type+'-holder' );
    555555
    556556        mfp.contentContainer.append(mfp.content);
     
    580580            // check for 'mfp-TYPE' class
    581581            for(var i = 0; i < types.length; i++) {
    582                 if( item.el.hasClass('mfp-'+types[i]) ) {
     582                if( item.el.hasClass( 'mfp-'+types[i]) ) {
    583583                    type = types[i];
    584584                    break;
     
    586586            }
    587587
    588             item.src = item.el.attr('data-mfp-src');
     588            item.src = item.el.attr( 'data-mfp-src' );
    589589            if(!item.src) {
    590                 item.src = item.el.attr('href');
     590                item.src = item.el.attr( 'href' );
    591591            }
    592592        }
     
    596596        item.parsed = true;
    597597        mfp.items[index] = item;
    598         _mfpTrigger('ElementParse', item);
     598        _mfpTrigger( 'ElementParse', item);
    599599
    600600        return mfp.items[index];
     
    642642
    643643        if(disableOn) {
    644             if($.isFunction(disableOn)) {
     644            if( $.isFunction(disableOn)) {
    645645                if( !disableOn.call(mfp) ) {
    646646                    return true;
     
    678678        if(mfp.preloader) {
    679679            if(_prevStatus !== status) {
    680                 mfp.container.removeClass('mfp-s-'+_prevStatus);
     680                mfp.container.removeClass( 'mfp-s-'+_prevStatus);
    681681            }
    682682
     
    690690            };
    691691            // allows to modify status
    692             _mfpTrigger('UpdateStatus', data);
     692            _mfpTrigger( 'UpdateStatus', data);
    693693
    694694            status = data.status;
     
    697697            mfp.preloader.html(text);
    698698
    699             mfp.preloader.find('a').on('click', function(e) {
     699            mfp.preloader.find( 'a').on( 'click', function(e) {
    700700                e.stopImmediatePropagation();
    701701            });
    702702
    703             mfp.container.addClass('mfp-s-'+status);
     703            mfp.container.addClass( 'mfp-s-'+status);
    704704            _prevStatus = status;
    705705        }
     
    714714    _checkIfClose: function(target) {
    715715
    716         if($(target).hasClass(PREVENT_CLOSE_CLASS)) {
     716        if( $(target).hasClass(PREVENT_CLOSE_CLASS)) {
    717717            return;
    718718        }
     
    726726
    727727            // We close the popup if click is on close button or on preloader. Or if there is no content.
    728             if(!mfp.content || $(target).hasClass('mfp-close') || (mfp.preloader && target === mfp.preloader[0]) ) {
     728            if(!mfp.content || $(target).hasClass( 'mfp-close') || (mfp.preloader && target === mfp.preloader[0]) ) {
    729729                return true;
    730730            }
     
    776776                return true;
    777777            }
    778             arr = key.split('_');
     778            arr = key.split( '_' );
    779779            if(arr.length > 1) {
    780780                var el = template.find(EVENT_NS + '-'+arr[0]);
     
    787787                        }
    788788                    } else if(attr === 'img') {
    789                         if(el.is('img')) {
    790                             el.attr('src', value);
     789                        if(el.is( 'img')) {
     790                            el.attr( 'src', value);
    791791                        } else {
    792                             el.replaceWith( '<img src="'+value+'" class="' + el.attr('class') + '" />' );
     792                            el.replaceWith( '<img src="'+value+'" class="' + el.attr( 'class') + '" />' );
    793793                        }
    794794                    } else {
     
    917917        if(options === 'open') {
    918918            var items,
    919                 itemOpts = _isJQ ? jqEl.data('magnificPopup') : jqEl[0].magnificPopup,
     919                itemOpts = _isJQ ? jqEl.data( 'magnificPopup') : jqEl[0].magnificPopup,
    920920                index = parseInt(arguments[1], 10) || 0;
    921921
     
    945945         */
    946946        if(_isJQ) {
    947             jqEl.data('magnificPopup', options);
     947            jqEl.data( 'magnificPopup', options);
    948948        } else {
    949949            jqEl[0].magnificPopup = options;
     
    966966
    967967}
    968 console.log('Test #1:', performance.now() - start);
     968console.log( 'Test #1:', performance.now() - start);
    969969
    970970start = performance.now();
     
    972972
    973973}
    974 console.log('Test #2:', performance.now() - start);
     974console.log( 'Test #2:', performance.now() - start);
    975975*/
    976976
     
    10291029                    }
    10301030
    1031                     mfp.updateStatus('ready');
     1031                    mfp.updateStatus( 'ready' );
    10321032                } else {
    1033                     mfp.updateStatus('error', inlineSt.tNotFound);
    1034                     el = $('<div>');
     1033                    mfp.updateStatus( 'error', inlineSt.tNotFound);
     1034                    el = $( '<div>' );
    10351035                }
    10361036
     
    10391039            }
    10401040
    1041             mfp.updateStatus('ready');
     1041            mfp.updateStatus( 'ready' );
    10421042            mfp._parseMarkup(template, {}, item);
    10431043            return template;
     
    10771077
    10781078            _mfpOn(CLOSE_EVENT+'.'+AJAX_NS, _destroyAjaxRequest);
    1079             _mfpOn('BeforeChange.' + AJAX_NS, _destroyAjaxRequest);
     1079            _mfpOn( 'BeforeChange.' + AJAX_NS, _destroyAjaxRequest);
    10801080        },
    10811081        getAjax: function(item) {
     
    10841084                _body.addClass(_ajaxCur);
    10851085
    1086             mfp.updateStatus('loading');
     1086            mfp.updateStatus( 'loading' );
    10871087
    10881088            var opts = $.extend({
     
    10941094                    };
    10951095
    1096                     _mfpTrigger('ParseAjax', temp);
     1096                    _mfpTrigger( 'ParseAjax', temp);
    10971097
    10981098                    mfp.appendContent( $(temp.data), AJAX_NS );
     
    11081108                    }, 16);
    11091109
    1110                     mfp.updateStatus('ready');
    1111 
    1112                     _mfpTrigger('AjaxContentAdded');
     1110                    mfp.updateStatus( 'ready' );
     1111
     1112                    _mfpTrigger( 'AjaxContentAdded' );
    11131113                },
    11141114                error: function() {
    11151115                    _removeAjaxCursor();
    11161116                    item.finished = item.loadError = true;
    1117                     mfp.updateStatus('error', mfp.st.ajax.tError.replace('%url%', item.src));
     1117                    mfp.updateStatus( 'error', mfp.st.ajax.tError.replace( '%url%', item.src));
    11181118                }
    11191119            }, mfp.st.ajax.settings);
     
    11431143
    11441144        if(src) {
    1145             if($.isFunction(src)) {
     1145            if( $.isFunction(src)) {
    11461146                return src.call(mfp, item);
    11471147            } else if(item.el) {
     
    11521152    };
    11531153
    1154 $.magnificPopup.registerModule('image', {
     1154$.magnificPopup.registerModule( 'image', {
    11551155
    11561156    options: {
     
    11781178                ns = '.image';
    11791179
    1180             mfp.types.push('image');
     1180            mfp.types.push( 'image' );
    11811181
    11821182            _mfpOn(OPEN_EVENT+ns, function() {
     
    11901190                    _body.removeClass(imgSt.cursor);
    11911191                }
    1192                 _window.off('resize' + EVENT_NS);
    1193             });
    1194 
    1195             _mfpOn('Resize'+ns, mfp.resizeImage);
     1192                _window.off( 'resize' + EVENT_NS);
     1193            });
     1194
     1195            _mfpOn( 'Resize'+ns, mfp.resizeImage);
    11961196            if(mfp.isLowIE) {
    1197                 _mfpOn('AfterChange', mfp.resizeImage);
     1197                _mfpOn( 'AfterChange', mfp.resizeImage);
    11981198            }
    11991199        },
     
    12061206                // fix box-sizing in ie7/8
    12071207                if(mfp.isLowIE) {
    1208                     decr = parseInt(item.img.css('padding-top'), 10) + parseInt(item.img.css('padding-bottom'),10);
    1209                 }
    1210                 item.img.css('max-height', mfp.wH-decr);
     1208                    decr = parseInt(item.img.css( 'padding-top' ), 10) + parseInt(item.img.css( 'padding-bottom' ),10);
     1209                }
     1210                item.img.css( 'max-height', mfp.wH-decr);
    12111211            }
    12121212        },
     
    12221222                item.isCheckingImgSize = false;
    12231223
    1224                 _mfpTrigger('ImageHasSize', item);
     1224                _mfpTrigger( 'ImageHasSize', item);
    12251225
    12261226                if(item.imgHidden) {
    12271227                    if(mfp.content)
    1228                         mfp.content.removeClass('mfp-loading');
     1228                        mfp.content.removeClass( 'mfp-loading' );
    12291229                   
    12301230                    item.imgHidden = false;
     
    12791279                    if(item) {
    12801280                        if (item.img[0].complete) {
    1281                             item.img.off('.mfploader');
     1281                            item.img.off( '.mfploader' );
    12821282                           
    12831283                            if(item === mfp.currItem){
    12841284                                mfp._onImageHasSize(item);
    12851285
    1286                                 mfp.updateStatus('ready');
     1286                                mfp.updateStatus( 'ready' );
    12871287                            }
    12881288
     
    12901290                            item.loaded = true;
    12911291
    1292                             _mfpTrigger('ImageLoadComplete');
     1292                            _mfpTrigger( 'ImageLoadComplete' );
    12931293                           
    12941294                        }
     
    13081308                onLoadError = function() {
    13091309                    if(item) {
    1310                         item.img.off('.mfploader');
     1310                        item.img.off( '.mfploader' );
    13111311                        if(item === mfp.currItem){
    13121312                            mfp._onImageHasSize(item);
    1313                             mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) );
     1313                            mfp.updateStatus( 'error', imgSt.tError.replace( '%url%', item.src) );
    13141314                        }
    13151315
     
    13221322
    13231323
    1324             var el = template.find('.mfp-img');
     1324            var el = template.find( '.mfp-img' );
    13251325            if(el.length) {
    1326                 var img = document.createElement('img');
     1326                var img = document.createElement( 'img' );
    13271327                img.className = 'mfp-img';
    1328                 item.img = $(img).on('load.mfploader', onLoadComplete).on('error.mfploader', onLoadError);
     1328                item.img = $(img).on( 'load.mfploader', onLoadComplete).on( 'error.mfploader', onLoadError);
    13291329                img.src = item.src;
    13301330
    13311331                // without clone() "error" event is not firing when IMG is replaced by new IMG
    13321332                // TODO: find a way to avoid such cloning
    1333                 if(el.is('img')) {
     1333                if(el.is( 'img')) {
    13341334                    item.img = item.img.clone();
    13351335                }
     
    13541354
    13551355                if(item.loadError) {
    1356                     template.addClass('mfp-loading');
    1357                     mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) );
     1356                    template.addClass( 'mfp-loading' );
     1357                    mfp.updateStatus( 'error', imgSt.tError.replace( '%url%', item.src) );
    13581358                } else {
    1359                     template.removeClass('mfp-loading');
    1360                     mfp.updateStatus('ready');
     1359                    template.removeClass( 'mfp-loading' );
     1360                    mfp.updateStatus( 'ready' );
    13611361                }
    13621362                return template;
    13631363            }
    13641364
    1365             mfp.updateStatus('loading');
     1365            mfp.updateStatus( 'loading' );
    13661366            item.loading = true;
    13671367
    13681368            if(!item.hasSize) {
    13691369                item.imgHidden = true;
    1370                 template.addClass('mfp-loading');
     1370                template.addClass( 'mfp-loading' );
    13711371                mfp.findImageSize(item);
    13721372            }
     
    13851385    getHasMozTransform = function() {
    13861386        if(hasMozTransform === undefined) {
    1387             hasMozTransform = document.createElement('p').style.MozTransform !== undefined;
     1387            hasMozTransform = document.createElement( 'p').style.MozTransform !== undefined;
    13881388        }
    13891389        return hasMozTransform;     
    13901390    };
    13911391
    1392 $.magnificPopup.registerModule('zoom', {
     1392$.magnificPopup.registerModule( 'zoom', {
    13931393
    13941394    options: {
     
    13971397        duration: 300,
    13981398        opener: function(element) {
    1399             return element.is('img') ? element : element.find('img');
     1399            return element.is( 'img') ? element : element.find( 'img' );
    14001400        }
    14011401    },
     
    14141414            var duration = zoomSt.duration,
    14151415                getElToAnimate = function(image) {
    1416                     var newImg = image.clone().removeAttr('style').removeAttr('class').addClass('mfp-animated-image'),
     1416                    var newImg = image.clone().removeAttr( 'style').removeAttr( 'class').addClass( 'mfp-animated-image' ),
    14171417                        transition = 'all '+(zoomSt.duration/1000)+'s ' + zoomSt.easing,
    14181418                        cssObj = {
     
    14311431                },
    14321432                showMainContent = function() {
    1433                     mfp.content.css('visibility', 'visible');
     1433                    mfp.content.css( 'visibility', 'visible' );
    14341434                },
    14351435                openTimeout,
    14361436                animatedImg;
    14371437
    1438             _mfpOn('BuildControls'+ns, function() {
     1438            _mfpOn( 'BuildControls'+ns, function() {
    14391439                if(mfp._allowZoom()) {
    14401440
    14411441                    clearTimeout(openTimeout);
    1442                     mfp.content.css('visibility', 'hidden');
     1442                    mfp.content.css( 'visibility', 'hidden' );
    14431443
    14441444                    // Basically, all code below does is clones existing image, puts in on top of the current one and animated it
     
    14661466                                animatedImg.remove();
    14671467                                image = animatedImg = null;
    1468                                 _mfpTrigger('ZoomAnimationEnded');
     1468                                _mfpTrigger( 'ZoomAnimationEnded' );
    14691469                            }, 16); // avoid blink when switching images
    14701470
     
    14951495                    animatedImg.css( mfp._getOffset(true) );
    14961496                    mfp.wrap.append(animatedImg);
    1497                     mfp.content.css('visibility', 'hidden');
     1497                    mfp.content.css( 'visibility', 'hidden' );
    14981498                   
    14991499                    setTimeout(function() {
     
    15371537
    15381538            var offset = el.offset();
    1539             var paddingTop = parseInt(el.css('padding-top'),10);
    1540             var paddingBottom = parseInt(el.css('padding-bottom'),10);
     1539            var paddingTop = parseInt(el.css( 'padding-top' ),10);
     1540            var paddingBottom = parseInt(el.css( 'padding-bottom' ),10);
    15411541            offset.top -= ( $(window).scrollTop() - paddingTop );
    15421542
     
    15551555            // I hate to do this, but there is no another option
    15561556            if( getHasMozTransform() ) {
    1557                 obj['-moz-transform'] = obj['transform'] = 'translate(' + offset.left + 'px,' + offset.top + 'px)';
     1557                obj['-moz-transform'] = obj['transform'] = 'translate( ' + offset.left + 'px,' + offset.top + 'px)';
    15581558            } else {
    15591559                obj.left = offset.left;
     
    15771577    _fixIframeBugs = function(isShowing) {
    15781578        if(mfp.currTemplate[IFRAME_NS]) {
    1579             var el = mfp.currTemplate[IFRAME_NS].find('iframe');
     1579            var el = mfp.currTemplate[IFRAME_NS].find( 'iframe' );
    15801580            if(el.length) {
    15811581                // reset src after the popup is closed to avoid "video keeps playing after popup is closed" bug
     
    15861586                // IE8 black screen bug fix
    15871587                if(mfp.isIE8) {
    1588                     el.css('display', isShowing ? 'block' : 'none');
     1588                    el.css( 'display', isShowing ? 'block' : 'none' );
    15891589                }
    15901590            }
     
    16251625            mfp.types.push(IFRAME_NS);
    16261626
    1627             _mfpOn('BeforeChange', function(e, prevType, newType) {
     1627            _mfpOn( 'BeforeChange', function(e, prevType, newType) {
    16281628                if(prevType !== newType) {
    16291629                    if(prevType === IFRAME_NS) {
     
    16551655                        }
    16561656                    }
    1657                     embedSrc = this.src.replace('%id%', embedSrc );
     1657                    embedSrc = this.src.replace( '%id%', embedSrc );
    16581658                    return false; // break;
    16591659                }
     
    16661666            mfp._parseMarkup(template, dataObj, item);
    16671667
    1668             mfp.updateStatus('ready');
     1668            mfp.updateStatus( 'ready' );
    16691669
    16701670            return template;
     
    16941694    };
    16951695
    1696 $.magnificPopup.registerModule('gallery', {
     1696$.magnificPopup.registerModule( 'gallery', {
    16971697
    16981698    options: {
     
    17131713            var gSt = mfp.st.gallery,
    17141714                ns = '.mfp-gallery',
    1715                 supportsFastClick = Boolean($.fn.mfpFastClick);
     1715                supportsFastClick = Boolean( $.fn.mfpFastClick);
    17161716
    17171717            mfp.direction = true; // true - next, false - prev
     
    17241724
    17251725                if(gSt.navigateByImgClick) {
    1726                     mfp.wrap.on('click'+ns, '.mfp-img', function() {
     1726                    mfp.wrap.on( 'click'+ns, '.mfp-img', function() {
    17271727                        if(mfp.items.length > 1) {
    17281728                            mfp.next();
     
    17321732                }
    17331733
    1734                 _document.on('keydown'+ns, function(e) {
     1734                _document.on( 'keydown'+ns, function(e) {
    17351735                    if (e.keyCode === 37) {
    17361736                        mfp.prev();
     
    17411741            });
    17421742
    1743             _mfpOn('UpdateStatus'+ns, function(e, data) {
     1743            _mfpOn( 'UpdateStatus'+ns, function(e, data) {
    17441744                if(data.text) {
    17451745                    data.text = _replaceCurrTotal(data.text, mfp.currItem.index, mfp.items.length);
     
    17521752            });
    17531753
    1754             _mfpOn('BuildControls' + ns, function() {
     1754            _mfpOn( 'BuildControls' + ns, function() {
    17551755                if(mfp.items.length > 1 && gSt.arrows && !mfp.arrowLeft) {
    17561756                    var markup = gSt.arrowMarkup,
     
    17681768                    // Polyfill for :before and :after (adds elements with classes mfp-a and mfp-b)
    17691769                    if(mfp.isIE7) {
    1770                         _getEl('b', arrowLeft[0], false, true);
    1771                         _getEl('a', arrowLeft[0], false, true);
    1772                         _getEl('b', arrowRight[0], false, true);
    1773                         _getEl('a', arrowRight[0], false, true);
     1770                        _getEl( 'b', arrowLeft[0], false, true);
     1771                        _getEl( 'a', arrowLeft[0], false, true);
     1772                        _getEl( 'b', arrowRight[0], false, true);
     1773                        _getEl( 'a', arrowRight[0], false, true);
    17741774                    }
    17751775
     
    17901790            _mfpOn(CLOSE_EVENT+ns, function() {
    17911791                _document.off(ns);
    1792                 mfp.wrap.off('click'+ns);
     1792                mfp.wrap.off( 'click'+ns);
    17931793           
    17941794                if(mfp.arrowLeft && supportsFastClick) {
     
    18391839            }
    18401840
    1841             _mfpTrigger('LazyLoad', item);
     1841            _mfpTrigger( 'LazyLoad', item);
    18421842
    18431843            if(item.type === 'image') {
    1844                 item.img = $('<img class="mfp-img" />').on('load.mfploader', function() {
     1844                item.img = $( '<img class="mfp-img" />').on( 'load.mfploader', function() {
    18451845                    item.hasSize = true;
    1846                 }).on('error.mfploader', function() {
     1846                }).on( 'error.mfploader', function() {
    18471847                    item.hasSize = true;
    18481848                    item.loadError = true;
    1849                     _mfpTrigger('LazyLoadError', item);
    1850                 }).attr('src', item.src);
     1849                    _mfpTrigger( 'LazyLoadError', item);
     1850                }).attr( 'src', item.src);
    18511851            }
    18521852
     
    18761876
    18771877    if(window.navigator.msPointerEnabled) {
    1878         addEventNames('MSPointer', 'Down', 'Move', 'Up', 'Cancel');
    1879     } else if('ontouchstart' in window) {
    1880         addEventNames('touch', 'start', 'move', 'end', 'cancel');
     1878        addEventNames( 'MSPointer', 'Down', 'Move', 'Up', 'Cancel' );
     1879    } else if( 'ontouchstart' in window) {
     1880        addEventNames( 'touch', 'start', 'move', 'end', 'cancel' );
    18811881    } else {
    18821882        return;
     
    19321932
    19331933                if(ratio > 1) {
    1934                     _mfpOn('ImageHasSize' + '.' + RETINA_NS, function(e, item) {
     1934                    _mfpOn( 'ImageHasSize' + '.' + RETINA_NS, function(e, item) {
    19351935                        item.img.css({
    19361936                            'max-width': item.img[0].naturalWidth / ratio,
     
    19381938                        });
    19391939                    });
    1940                     _mfpOn('ElementParse' + '.' + RETINA_NS, function(e, item) {
     1940                    _mfpOn( 'ElementParse' + '.' + RETINA_NS, function(e, item) {
    19411941                        item.src = st.replaceSrc(item, ratio);
    19421942                    });
     
    19571957 * You may use it outside the Magnific Popup by calling just:
    19581958 *
    1959  * $('.your-el').mfpFastClick(function() {
    1960  *     console.log('Clicked!');
     1959 * $( '.your-el').mfpFastClick(function() {
     1960 *     console.log( 'Clicked!' );
    19611961 * });
    19621962 *
    19631963 * To unbind:
    1964  * $('.your-el').destroyMfpFastClick();
     1964 * $( '.your-el').destroyMfpFastClick();
    19651965 *
    19661966 *
     
    19741974        supportsTouch = 'ontouchstart' in window,
    19751975        unbindTouchMove = function() {
    1976             _window.off('touchmove'+ns+' touchend'+ns);
     1976            _window.off( 'touchmove'+ns+' touchend'+ns);
    19771977        },
    19781978        eName = 'mfpFastClick',
     
    19971997                    numPointers;
    19981998
    1999                 elem.on('touchstart' + ns, function(e) {
     1999                elem.on( 'touchstart' + ns, function(e) {
    20002000                    pointerMoved = false;
    20012001                    numPointers = 1;
     
    20052005                    startY = point.clientY;
    20062006
    2007                     _window.on('touchmove'+ns, function(e) {
     2007                    _window.on( 'touchmove'+ns, function(e) {
    20082008                        point = e.originalEvent ? e.originalEvent.touches : e.touches;
    20092009                        numPointers = point.length;
     
    20142014                            unbindTouchMove();
    20152015                        }
    2016                     }).on('touchend'+ns, function(e) {
     2016                    }).on( 'touchend'+ns, function(e) {
    20172017                        unbindTouchMove();
    20182018                        if(pointerMoved || numPointers > 1) {
     
    20312031            }
    20322032
    2033             elem.on('click' + ns, function() {
     2033            elem.on( 'click' + ns, function() {
    20342034                if(!lock) {
    20352035                    callback();
     
    20402040
    20412041    $.fn.destroyMfpFastClick = function() {
    2042         $(this).off('touchstart' + ns + ' click' + ns);
    2043         if(supportsTouch) _window.off('touchmove'+ns+' touchend'+ns);
     2042        $(this).off( 'touchstart' + ns + ' click' + ns);
     2043        if(supportsTouch) _window.off( 'touchmove'+ns+' touchend'+ns);
    20442044    };
    20452045})();
  • kopa-page-builder/trunk/js/jquery.magnific-popup.min.js

    r1209395 r1428045  
    1 !function(e){var t,n,i,o,r,a,s,l="Close",c="BeforeClose",d="AfterClose",u="BeforeAppend",p="MarkupParse",f="Open",m="Change",g="mfp",h="."+g,v="mfp-ready",C="mfp-removing",y="mfp-prevent-close",w=function(){},b=!!window.jQuery,I=e(window),x=function(e,n){t.ev.on(g+e+h,n)},k=function(t,n,i,o){var r=document.createElement("div");return r.className="mfp-"+t,i&&(r.innerHTML=i),o?n&&n.appendChild(r):(r=e(r),n&&r.appendTo(n)),r},T=function(n,i){t.ev.triggerHandler(g+n,i),t.st.callbacks&&(n=n.charAt(0).toLowerCase()+n.slice(1),t.st.callbacks[n]&&t.st.callbacks[n].apply(t,e.isArray(i)?i:[i]))},E=function(n){return n===s&&t.currTemplate.closeBtn||(t.currTemplate.closeBtn=e(t.st.closeMarkup.replace("%title%",t.st.tClose)),s=n),t.currTemplate.closeBtn},_=function(){e.magnificPopup.instance||(t=new w,t.init(),e.magnificPopup.instance=t)},S=function(){var e=document.createElement("p").style,t=["ms","O","Moz","Webkit"];if(void 0!==e.transition)return!0;for(;t.length;)if(t.pop()+"Transition"in e)return!0;return!1};w.prototype={constructor:w,init:function(){var n=navigator.appVersion;t.isIE7=-1!==n.indexOf("MSIE 7."),t.isIE8=-1!==n.indexOf("MSIE 8."),t.isLowIE=t.isIE7||t.isIE8,t.isAndroid=/android/gi.test(n),t.isIOS=/iphone|ipad|ipod/gi.test(n),t.supportsTransition=S(),t.probablyMobile=t.isAndroid||t.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),o=e(document),t.popupsCache={}},open:function(n){i||(i=e(document.body));var r;if(n.isObj===!1){t.items=n.items.toArray(),t.index=0;var s,l=n.items;for(r=0;r<l.length;r++)if(s=l[r],s.parsed&&(s=s.el[0]),s===n.el[0]){t.index=r;break}}else t.items=e.isArray(n.items)?n.items:[n.items],t.index=n.index||0;if(t.isOpen)return void t.updateItemHTML();t.types=[],a="",t.ev=n.mainEl&&n.mainEl.length?n.mainEl.eq(0):o,n.key?(t.popupsCache[n.key]||(t.popupsCache[n.key]={}),t.currTemplate=t.popupsCache[n.key]):t.currTemplate={},t.st=e.extend(!0,{},e.magnificPopup.defaults,n),t.fixedContentPos="auto"===t.st.fixedContentPos?!t.probablyMobile:t.st.fixedContentPos,t.st.modal&&(t.st.closeOnContentClick=!1,t.st.closeOnBgClick=!1,t.st.showCloseBtn=!1,t.st.enableEscapeKey=!1),t.bgOverlay||(t.bgOverlay=k("bg").on("click"+h,function(){t.close()}),t.wrap=k("wrap").attr("tabindex",-1).on("click"+h,function(e){t._checkIfClose(e.target)&&t.close()}),t.container=k("container",t.wrap)),t.contentContainer=k("content"),t.st.preloader&&(t.preloader=k("preloader",t.container,t.st.tLoading));var c=e.magnificPopup.modules;for(r=0;r<c.length;r++){var d=c[r];d=d.charAt(0).toUpperCase()+d.slice(1),t["init"+d].call(t)}T("BeforeOpen"),t.st.showCloseBtn&&(t.st.closeBtnInside?(x(p,function(e,t,n,i){n.close_replaceWith=E(i.type)}),a+=" mfp-close-btn-in"):t.wrap.append(E())),t.st.alignTop&&(a+=" mfp-align-top"),t.wrap.css(t.fixedContentPos?{overflow:t.st.overflowY,overflowX:"hidden",overflowY:t.st.overflowY}:{top:I.scrollTop(),position:"absolute"}),(t.st.fixedBgPos===!1||"auto"===t.st.fixedBgPos&&!t.fixedContentPos)&&t.bgOverlay.css({height:o.height(),position:"absolute"}),t.st.enableEscapeKey&&o.on("keyup"+h,function(e){27===e.keyCode&&t.close()}),I.on("resize"+h,function(){t.updateSize()}),t.st.closeOnContentClick||(a+=" mfp-auto-cursor"),a&&t.wrap.addClass(a);var u=t.wH=I.height(),m={};if(t.fixedContentPos&&t._hasScrollBar(u)){var g=t._getScrollbarSize();g&&(m.marginRight=g)}t.fixedContentPos&&(t.isIE7?e("body, html").css("overflow","hidden"):m.overflow="hidden");var C=t.st.mainClass;return t.isIE7&&(C+=" mfp-ie7"),C&&t._addClassToMFP(C),t.updateItemHTML(),T("BuildControls"),e("html").css(m),t.bgOverlay.add(t.wrap).prependTo(t.st.prependTo||i),t._lastFocusedEl=document.activeElement,setTimeout(function(){t.content?(t._addClassToMFP(v),t._setFocus()):t.bgOverlay.addClass(v),o.on("focusin"+h,t._onFocusIn)},16),t.isOpen=!0,t.updateSize(u),T(f),n},close:function(){t.isOpen&&(T(c),t.isOpen=!1,t.st.removalDelay&&!t.isLowIE&&t.supportsTransition?(t._addClassToMFP(C),setTimeout(function(){t._close()},t.st.removalDelay)):t._close())},_close:function(){T(l);var n=C+" "+v+" ";if(t.bgOverlay.detach(),t.wrap.detach(),t.container.empty(),t.st.mainClass&&(n+=t.st.mainClass+" "),t._removeClassFromMFP(n),t.fixedContentPos){var i={marginRight:""};t.isIE7?e("body, html").css("overflow",""):i.overflow="",e("html").css(i)}o.off("keyup"+h+" focusin"+h),t.ev.off(h),t.wrap.attr("class","mfp-wrap").removeAttr("style"),t.bgOverlay.attr("class","mfp-bg"),t.container.attr("class","mfp-container"),!t.st.showCloseBtn||t.st.closeBtnInside&&t.currTemplate[t.currItem.type]!==!0||t.currTemplate.closeBtn&&t.currTemplate.closeBtn.detach(),t._lastFocusedEl&&e(t._lastFocusedEl).focus(),t.currItem=null,t.content=null,t.currTemplate=null,t.prevHeight=0,T(d)},updateSize:function(e){if(t.isIOS){var n=document.documentElement.clientWidth/window.innerWidth,i=window.innerHeight*n;t.wrap.css("height",i),t.wH=i}else t.wH=e||I.height();t.fixedContentPos||t.wrap.css("height",t.wH),T("Resize")},updateItemHTML:function(){var n=t.items[t.index];t.contentContainer.detach(),t.content&&t.content.detach(),n.parsed||(n=t.parseEl(t.index));var i=n.type;if(T("BeforeChange",[t.currItem?t.currItem.type:"",i]),t.currItem=n,!t.currTemplate[i]){var o=t.st[i]?t.st[i].markup:!1;T("FirstMarkupParse",o),t.currTemplate[i]=o?e(o):!0}r&&r!==n.type&&t.container.removeClass("mfp-"+r+"-holder");var a=t["get"+i.charAt(0).toUpperCase()+i.slice(1)](n,t.currTemplate[i]);t.appendContent(a,i),n.preloaded=!0,T(m,n),r=n.type,t.container.prepend(t.contentContainer),T("AfterChange")},appendContent:function(e,n){t.content=e,e?t.st.showCloseBtn&&t.st.closeBtnInside&&t.currTemplate[n]===!0?t.content.find(".mfp-close").length||t.content.append(E()):t.content=e:t.content="",T(u),t.container.addClass("mfp-"+n+"-holder"),t.contentContainer.append(t.content)},parseEl:function(n){var i,o=t.items[n];if(o.tagName?o={el:e(o)}:(i=o.type,o={data:o,src:o.src}),o.el){for(var r=t.types,a=0;a<r.length;a++)if(o.el.hasClass("mfp-"+r[a])){i=r[a];break}o.src=o.el.attr("data-mfp-src"),o.src||(o.src=o.el.attr("href"))}return o.type=i||t.st.type||"inline",o.index=n,o.parsed=!0,t.items[n]=o,T("ElementParse",o),t.items[n]},addGroup:function(e,n){var i=function(i){i.mfpEl=this,t._openClick(i,e,n)};n||(n={});var o="click.magnificPopup";n.mainEl=e,n.items?(n.isObj=!0,e.off(o).on(o,i)):(n.isObj=!1,n.delegate?e.off(o).on(o,n.delegate,i):(n.items=e,e.off(o).on(o,i)))},_openClick:function(n,i,o){var r=void 0!==o.midClick?o.midClick:e.magnificPopup.defaults.midClick;if(r||2!==n.which&&!n.ctrlKey&&!n.metaKey){var a=void 0!==o.disableOn?o.disableOn:e.magnificPopup.defaults.disableOn;if(a)if(e.isFunction(a)){if(!a.call(t))return!0}else if(I.width()<a)return!0;n.type&&(n.preventDefault(),t.isOpen&&n.stopPropagation()),o.el=e(n.mfpEl),o.delegate&&(o.items=i.find(o.delegate)),t.open(o)}},updateStatus:function(e,i){if(t.preloader){n!==e&&t.container.removeClass("mfp-s-"+n),i||"loading"!==e||(i=t.st.tLoading);var o={status:e,text:i};T("UpdateStatus",o),e=o.status,i=o.text,t.preloader.html(i),t.preloader.find("a").on("click",function(e){e.stopImmediatePropagation()}),t.container.addClass("mfp-s-"+e),n=e}},_checkIfClose:function(n){if(!e(n).hasClass(y)){var i=t.st.closeOnContentClick,o=t.st.closeOnBgClick;if(i&&o)return!0;if(!t.content||e(n).hasClass("mfp-close")||t.preloader&&n===t.preloader[0])return!0;if(n===t.content[0]||e.contains(t.content[0],n)){if(i)return!0}else if(o&&e.contains(document,n))return!0;return!1}},_addClassToMFP:function(e){t.bgOverlay.addClass(e),t.wrap.addClass(e)},_removeClassFromMFP:function(e){this.bgOverlay.removeClass(e),t.wrap.removeClass(e)},_hasScrollBar:function(e){return(t.isIE7?o.height():document.body.scrollHeight)>(e||I.height())},_setFocus:function(){(t.st.focus?t.content.find(t.st.focus).eq(0):t.wrap).focus()},_onFocusIn:function(n){return n.target===t.wrap[0]||e.contains(t.wrap[0],n.target)?void 0:(t._setFocus(),!1)},_parseMarkup:function(t,n,i){var o;i.data&&(n=e.extend(i.data,n)),T(p,[t,n,i]),e.each(n,function(e,n){if(void 0===n||n===!1)return!0;if(o=e.split("_"),o.length>1){var i=t.find(h+"-"+o[0]);if(i.length>0){var r=o[1];"replaceWith"===r?i[0]!==n[0]&&i.replaceWith(n):"img"===r?i.is("img")?i.attr("src",n):i.replaceWith('<img src="'+n+'" class="'+i.attr("class")+'" />'):i.attr(o[1],n)}}else t.find(h+"-"+e).html(n)})},_getScrollbarSize:function(){if(void 0===t.scrollbarSize){var e=document.createElement("div");e.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(e),t.scrollbarSize=e.offsetWidth-e.clientWidth,document.body.removeChild(e)}return t.scrollbarSize}},e.magnificPopup={instance:null,proto:w.prototype,modules:[],open:function(t,n){return _(),t=t?e.extend(!0,{},t):{},t.isObj=!0,t.index=n||0,this.instance.open(t)},close:function(){return e.magnificPopup.instance&&e.magnificPopup.instance.close()},registerModule:function(t,n){n.options&&(e.magnificPopup.defaults[t]=n.options),e.extend(this.proto,n.proto),this.modules.push(t)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">&times;</button>',tClose:"Close (Esc)",tLoading:"Loading..."}},e.fn.magnificPopup=function(n){_();var i=e(this);if("string"==typeof n)if("open"===n){var o,r=b?i.data("magnificPopup"):i[0].magnificPopup,a=parseInt(arguments[1],10)||0;r.items?o=r.items[a]:(o=i,r.delegate&&(o=o.find(r.delegate)),o=o.eq(a)),t._openClick({mfpEl:o},i,r)}else t.isOpen&&t[n].apply(t,Array.prototype.slice.call(arguments,1));else n=e.extend(!0,{},n),b?i.data("magnificPopup",n):i[0].magnificPopup=n,t.addGroup(i,n);return i};var P,O,z,M="inline",B=function(){z&&(O.after(z.addClass(P)).detach(),z=null)};e.magnificPopup.registerModule(M,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){t.types.push(M),x(l+"."+M,function(){B()})},getInline:function(n,i){if(B(),n.src){var o=t.st.inline,r=e(n.src);if(r.length){var a=r[0].parentNode;a&&a.tagName&&(O||(P=o.hiddenClass,O=k(P),P="mfp-"+P),z=r.after(O).detach().removeClass(P)),t.updateStatus("ready")}else t.updateStatus("error",o.tNotFound),r=e("<div>");return n.inlineElement=r,r}return t.updateStatus("ready"),t._parseMarkup(i,{},n),i}}});var F,H="ajax",L=function(){F&&i.removeClass(F)},A=function(){L(),t.req&&t.req.abort()};e.magnificPopup.registerModule(H,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'<a href="%url%">The content</a> could not be loaded.'},proto:{initAjax:function(){t.types.push(H),F=t.st.ajax.cursor,x(l+"."+H,A),x("BeforeChange."+H,A)},getAjax:function(n){F&&i.addClass(F),t.updateStatus("loading");var o=e.extend({url:n.src,success:function(i,o,r){var a={data:i,xhr:r};T("ParseAjax",a),t.appendContent(e(a.data),H),n.finished=!0,L(),t._setFocus(),setTimeout(function(){t.wrap.addClass(v)},16),t.updateStatus("ready"),T("AjaxContentAdded")},error:function(){L(),n.finished=n.loadError=!0,t.updateStatus("error",t.st.ajax.tError.replace("%url%",n.src))}},t.st.ajax.settings);return t.req=e.ajax(o),""}}});var j,N=function(n){if(n.data&&void 0!==n.data.title)return n.data.title;var i=t.st.image.titleSrc;if(i){if(e.isFunction(i))return i.call(t,n);if(n.el)return n.el.attr(i)||""}return""};e.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var e=t.st.image,n=".image";t.types.push("image"),x(f+n,function(){"image"===t.currItem.type&&e.cursor&&i.addClass(e.cursor)}),x(l+n,function(){e.cursor&&i.removeClass(e.cursor),I.off("resize"+h)}),x("Resize"+n,t.resizeImage),t.isLowIE&&x("AfterChange",t.resizeImage)},resizeImage:function(){var e=t.currItem;if(e&&e.img&&t.st.image.verticalFit){var n=0;t.isLowIE&&(n=parseInt(e.img.css("padding-top"),10)+parseInt(e.img.css("padding-bottom"),10)),e.img.css("max-height",t.wH-n)}},_onImageHasSize:function(e){e.img&&(e.hasSize=!0,j&&clearInterval(j),e.isCheckingImgSize=!1,T("ImageHasSize",e),e.imgHidden&&(t.content&&t.content.removeClass("mfp-loading"),e.imgHidden=!1))},findImageSize:function(e){var n=0,i=e.img[0],o=function(r){j&&clearInterval(j),j=setInterval(function(){return i.naturalWidth>0?void t._onImageHasSize(e):(n>200&&clearInterval(j),n++,void(3===n?o(10):40===n?o(50):100===n&&o(500)))},r)};o(1)},getImage:function(n,i){var o=0,r=function(){n&&(n.img[0].complete?(n.img.off(".mfploader"),n===t.currItem&&(t._onImageHasSize(n),t.updateStatus("ready")),n.hasSize=!0,n.loaded=!0,T("ImageLoadComplete")):(o++,200>o?setTimeout(r,100):a()))},a=function(){n&&(n.img.off(".mfploader"),n===t.currItem&&(t._onImageHasSize(n),t.updateStatus("error",s.tError.replace("%url%",n.src))),n.hasSize=!0,n.loaded=!0,n.loadError=!0)},s=t.st.image,l=i.find(".mfp-img");if(l.length){var c=document.createElement("img");c.className="mfp-img",n.img=e(c).on("load.mfploader",r).on("error.mfploader",a),c.src=n.src,l.is("img")&&(n.img=n.img.clone()),c=n.img[0],c.naturalWidth>0?n.hasSize=!0:c.width||(n.hasSize=!1)}return t._parseMarkup(i,{title:N(n),img_replaceWith:n.img},n),t.resizeImage(),n.hasSize?(j&&clearInterval(j),n.loadError?(i.addClass("mfp-loading"),t.updateStatus("error",s.tError.replace("%url%",n.src))):(i.removeClass("mfp-loading"),t.updateStatus("ready")),i):(t.updateStatus("loading"),n.loading=!0,n.hasSize||(n.imgHidden=!0,i.addClass("mfp-loading"),t.findImageSize(n)),i)}}});var W,R=function(){return void 0===W&&(W=void 0!==document.createElement("p").style.MozTransform),W};e.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(e){return e.is("img")?e:e.find("img")}},proto:{initZoom:function(){var e,n=t.st.zoom,i=".zoom";if(n.enabled&&t.supportsTransition){var o,r,a=n.duration,s=function(e){var t=e.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),i="all "+n.duration/1e3+"s "+n.easing,o={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},r="transition";return o["-webkit-"+r]=o["-moz-"+r]=o["-o-"+r]=o[r]=i,t.css(o),t},d=function(){t.content.css("visibility","visible")};x("BuildControls"+i,function(){if(t._allowZoom()){if(clearTimeout(o),t.content.css("visibility","hidden"),e=t._getItemToZoom(),!e)return void d();r=s(e),r.css(t._getOffset()),t.wrap.append(r),o=setTimeout(function(){r.css(t._getOffset(!0)),o=setTimeout(function(){d(),setTimeout(function(){r.remove(),e=r=null,T("ZoomAnimationEnded")},16)},a)},16)}}),x(c+i,function(){if(t._allowZoom()){if(clearTimeout(o),t.st.removalDelay=a,!e){if(e=t._getItemToZoom(),!e)return;r=s(e)}r.css(t._getOffset(!0)),t.wrap.append(r),t.content.css("visibility","hidden"),setTimeout(function(){r.css(t._getOffset())},16)}}),x(l+i,function(){t._allowZoom()&&(d(),r&&r.remove(),e=null)})}},_allowZoom:function(){return"image"===t.currItem.type},_getItemToZoom:function(){return t.currItem.hasSize?t.currItem.img:!1},_getOffset:function(n){var i;i=n?t.currItem.img:t.st.zoom.opener(t.currItem.el||t.currItem);var o=i.offset(),r=parseInt(i.css("padding-top"),10),a=parseInt(i.css("padding-bottom"),10);o.top-=e(window).scrollTop()-r;var s={width:i.width(),height:(b?i.innerHeight():i[0].offsetHeight)-a-r};return R()?s["-moz-transform"]=s.transform="translate("+o.left+"px,"+o.top+"px)":(s.left=o.left,s.top=o.top),s}}});var Z="iframe",q="//about:blank",D=function(e){if(t.currTemplate[Z]){var n=t.currTemplate[Z].find("iframe");n.length&&(e||(n[0].src=q),t.isIE8&&n.css("display",e?"block":"none"))}};e.magnificPopup.registerModule(Z,{options:{markup:'<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){t.types.push(Z),x("BeforeChange",function(e,t,n){t!==n&&(t===Z?D():n===Z&&D(!0))}),x(l+"."+Z,function(){D()})},getIframe:function(n,i){var o=n.src,r=t.st.iframe;e.each(r.patterns,function(){return o.indexOf(this.index)>-1?(this.id&&(o="string"==typeof this.id?o.substr(o.lastIndexOf(this.id)+this.id.length,o.length):this.id.call(this,o)),o=this.src.replace("%id%",o),!1):void 0});var a={};return r.srcAction&&(a[r.srcAction]=o),t._parseMarkup(i,a,n),t.updateStatus("ready"),i}}});var K=function(e){var n=t.items.length;return e>n-1?e-n:0>e?n+e:e},Y=function(e,t,n){return e.replace(/%curr%/gi,t+1).replace(/%total%/gi,n)};e.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var n=t.st.gallery,i=".mfp-gallery",r=Boolean(e.fn.mfpFastClick);return t.direction=!0,n&&n.enabled?(a+=" mfp-gallery",x(f+i,function(){n.navigateByImgClick&&t.wrap.on("click"+i,".mfp-img",function(){return t.items.length>1?(t.next(),!1):void 0}),o.on("keydown"+i,function(e){37===e.keyCode?t.prev():39===e.keyCode&&t.next()})}),x("UpdateStatus"+i,function(e,n){n.text&&(n.text=Y(n.text,t.currItem.index,t.items.length))}),x(p+i,function(e,i,o,r){var a=t.items.length;o.counter=a>1?Y(n.tCounter,r.index,a):""}),x("BuildControls"+i,function(){if(t.items.length>1&&n.arrows&&!t.arrowLeft){var i=n.arrowMarkup,o=t.arrowLeft=e(i.replace(/%title%/gi,n.tPrev).replace(/%dir%/gi,"left")).addClass(y),a=t.arrowRight=e(i.replace(/%title%/gi,n.tNext).replace(/%dir%/gi,"right")).addClass(y),s=r?"mfpFastClick":"click";o[s](function(){t.prev()}),a[s](function(){t.next()}),t.isIE7&&(k("b",o[0],!1,!0),k("a",o[0],!1,!0),k("b",a[0],!1,!0),k("a",a[0],!1,!0)),t.container.append(o.add(a))}}),x(m+i,function(){t._preloadTimeout&&clearTimeout(t._preloadTimeout),t._preloadTimeout=setTimeout(function(){t.preloadNearbyImages(),t._preloadTimeout=null},16)}),void x(l+i,function(){o.off(i),t.wrap.off("click"+i),t.arrowLeft&&r&&t.arrowLeft.add(t.arrowRight).destroyMfpFastClick(),t.arrowRight=t.arrowLeft=null})):!1},next:function(){t.direction=!0,t.index=K(t.index+1),t.updateItemHTML()},prev:function(){t.direction=!1,t.index=K(t.index-1),t.updateItemHTML()},goTo:function(e){t.direction=e>=t.index,t.index=e,t.updateItemHTML()},preloadNearbyImages:function(){var e,n=t.st.gallery.preload,i=Math.min(n[0],t.items.length),o=Math.min(n[1],t.items.length);for(e=1;e<=(t.direction?o:i);e++)t._preloadItem(t.index+e);for(e=1;e<=(t.direction?i:o);e++)t._preloadItem(t.index-e)},_preloadItem:function(n){if(n=K(n),!t.items[n].preloaded){var i=t.items[n];i.parsed||(i=t.parseEl(n)),T("LazyLoad",i),"image"===i.type&&(i.img=e('<img class="mfp-img" />').on("load.mfploader",function(){i.hasSize=!0}).on("error.mfploader",function(){i.hasSize=!0,i.loadError=!0,T("LazyLoadError",i)}).attr("src",i.src)),i.preloaded=!0}}}});var U="retina";e.magnificPopup.registerModule(U,{options:{replaceSrc:function(e){return e.src.replace(/\.\w+$/,function(e){return"@2x"+e})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var e=t.st.retina,n=e.ratio;n=isNaN(n)?n():n,n>1&&(x("ImageHasSize."+U,function(e,t){t.img.css({"max-width":t.img[0].naturalWidth/n,width:"100%"})}),x("ElementParse."+U,function(t,i){i.src=e.replaceSrc(i,n)}))}}}}),function(){var t=1e3,n="ontouchstart"in window,i=function(){I.off("touchmove"+r+" touchend"+r)},o="mfpFastClick",r="."+o;e.fn.mfpFastClick=function(o){return e(this).each(function(){var a,s=e(this);if(n){var l,c,d,u,p,f;s.on("touchstart"+r,function(e){u=!1,f=1,p=e.originalEvent?e.originalEvent.touches[0]:e.touches[0],c=p.clientX,d=p.clientY,I.on("touchmove"+r,function(e){p=e.originalEvent?e.originalEvent.touches:e.touches,f=p.length,p=p[0],(Math.abs(p.clientX-c)>10||Math.abs(p.clientY-d)>10)&&(u=!0,i())}).on("touchend"+r,function(e){i(),u||f>1||(a=!0,e.preventDefault(),clearTimeout(l),l=setTimeout(function(){a=!1},t),o())})})}s.on("click"+r,function(){a||o()})})},e.fn.destroyMfpFastClick=function(){e(this).off("touchstart"+r+" click"+r),n&&I.off("touchmove"+r+" touchend"+r)}}(),_()}(window.jQuery||window.Zepto);
     1!function(e){var t,n,i,o,r,a,s,l="Close",c="BeforeClose",d="AfterClose",u="BeforeAppend",p="MarkupParse",f="Open",m="Change",g="mfp",h="."+g,v="mfp-ready",C="mfp-removing",y="mfp-prevent-close",w=function() {},b=!!window.jQuery,I=e(window),x=function(e,n){t.ev.on(g+e+h,n)},k=function(t,n,i,o){var r=document.createElement("div");return r.className="mfp-"+t,i&&(r.innerHTML=i),o?n&&n.appendChild(r):(r=e(r),n&&r.appendTo(n)),r},T=function(n,i){t.ev.triggerHandler(g+n,i),t.st.callbacks&&(n=n.charAt(0).toLowerCase()+n.slice(1),t.st.callbacks[n]&&t.st.callbacks[n].apply(t,e.isArray(i)?i:[i]))},E=function(n){return n===s&&t.currTemplate.closeBtn||(t.currTemplate.closeBtn=e(t.st.closeMarkup.replace("%title%",t.st.tClose)),s=n),t.currTemplate.closeBtn},_=function() {e.magnificPopup.instance||(t=new w,t.init(),e.magnificPopup.instance=t)},S=function() {var e=document.createElement("p").style,t=["ms","O","Moz","Webkit"];if(void 0!==e.transition)return!0;for(;t.length;)if(t.pop()+"Transition"in e)return!0;return!1};w.prototype={constructor:w,init:function() {var n=navigator.appVersion;t.isIE7=-1!==n.indexOf("MSIE 7."),t.isIE8=-1!==n.indexOf("MSIE 8."),t.isLowIE=t.isIE7||t.isIE8,t.isAndroid=/android/gi.test(n),t.isIOS=/iphone|ipad|ipod/gi.test(n),t.supportsTransition=S(),t.probablyMobile=t.isAndroid||t.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),o=e(document),t.popupsCache={}},open:function(n){i||(i=e(document.body));var r;if(n.isObj===!1){t.items=n.items.toArray(),t.index=0;var s,l=n.items;for(r=0;r<l.length;r++)if(s=l[r],s.parsed&&(s=s.el[0]),s===n.el[0]){t.index=r;break}}else t.items=e.isArray(n.items)?n.items:[n.items],t.index=n.index||0;if(t.isOpen)return void t.updateItemHTML();t.types=[],a="",t.ev=n.mainEl&&n.mainEl.length?n.mainEl.eq(0):o,n.key?(t.popupsCache[n.key]||(t.popupsCache[n.key]={}),t.currTemplate=t.popupsCache[n.key]):t.currTemplate={},t.st=e.extend(!0,{},e.magnificPopup.defaults,n),t.fixedContentPos="auto"===t.st.fixedContentPos?!t.probablyMobile:t.st.fixedContentPos,t.st.modal&&(t.st.closeOnContentClick=!1,t.st.closeOnBgClick=!1,t.st.showCloseBtn=!1,t.st.enableEscapeKey=!1),t.bgOverlay||(t.bgOverlay=k("bg").on("click"+h,function() {t.close()}),t.wrap=k("wrap").attr("tabindex",-1).on("click"+h,function(e){t._checkIfClose(e.target)&&t.close()}),t.container=k("container",t.wrap)),t.contentContainer=k("content"),t.st.preloader&&(t.preloader=k("preloader",t.container,t.st.tLoading));var c=e.magnificPopup.modules;for(r=0;r<c.length;r++){var d=c[r];d=d.charAt(0).toUpperCase()+d.slice(1),t["init"+d].call(t)}T("BeforeOpen"),t.st.showCloseBtn&&(t.st.closeBtnInside?(x(p,function(e,t,n,i){n.close_replaceWith=E(i.type)}),a+=" mfp-close-btn-in"):t.wrap.append(E())),t.st.alignTop&&(a+=" mfp-align-top"),t.wrap.css(t.fixedContentPos?{overflow:t.st.overflowY,overflowX:"hidden",overflowY:t.st.overflowY}:{top:I.scrollTop(),position:"absolute"}),(t.st.fixedBgPos===!1||"auto"===t.st.fixedBgPos&&!t.fixedContentPos)&&t.bgOverlay.css({height:o.height(),position:"absolute"}),t.st.enableEscapeKey&&o.on("keyup"+h,function(e){27===e.keyCode&&t.close()}),I.on("resize"+h,function() {t.updateSize()}),t.st.closeOnContentClick||(a+=" mfp-auto-cursor"),a&&t.wrap.addClass(a);var u=t.wH=I.height(),m={};if(t.fixedContentPos&&t._hasScrollBar(u)){var g=t._getScrollbarSize();g&&(m.marginRight=g)}t.fixedContentPos&&(t.isIE7?e("body, html").css("overflow","hidden"):m.overflow="hidden");var C=t.st.mainClass;return t.isIE7&&(C+=" mfp-ie7"),C&&t._addClassToMFP(C),t.updateItemHTML(),T("BuildControls"),e("html").css(m),t.bgOverlay.add(t.wrap).prependTo(t.st.prependTo||i),t._lastFocusedEl=document.activeElement,setTimeout(function() {t.content?(t._addClassToMFP(v),t._setFocus()):t.bgOverlay.addClass(v),o.on("focusin"+h,t._onFocusIn)},16),t.isOpen=!0,t.updateSize(u),T(f),n},close:function() {t.isOpen&&(T(c),t.isOpen=!1,t.st.removalDelay&&!t.isLowIE&&t.supportsTransition?(t._addClassToMFP(C),setTimeout(function() {t._close()},t.st.removalDelay)):t._close())},_close:function() {T(l);var n=C+" "+v+" ";if(t.bgOverlay.detach(),t.wrap.detach(),t.container.empty(),t.st.mainClass&&(n+=t.st.mainClass+" "),t._removeClassFromMFP(n),t.fixedContentPos){var i={marginRight:""};t.isIE7?e("body, html").css("overflow",""):i.overflow="",e("html").css(i)}o.off("keyup"+h+" focusin"+h),t.ev.off(h),t.wrap.attr("class","mfp-wrap").removeAttr("style"),t.bgOverlay.attr("class","mfp-bg"),t.container.attr("class","mfp-container"),!t.st.showCloseBtn||t.st.closeBtnInside&&t.currTemplate[t.currItem.type]!==!0||t.currTemplate.closeBtn&&t.currTemplate.closeBtn.detach(),t._lastFocusedEl&&e(t._lastFocusedEl).focus(),t.currItem=null,t.content=null,t.currTemplate=null,t.prevHeight=0,T(d)},updateSize:function(e){if(t.isIOS){var n=document.documentElement.clientWidth/window.innerWidth,i=window.innerHeight*n;t.wrap.css("height",i),t.wH=i}else t.wH=e||I.height();t.fixedContentPos||t.wrap.css("height",t.wH),T("Resize")},updateItemHTML:function() {var n=t.items[t.index];t.contentContainer.detach(),t.content&&t.content.detach(),n.parsed||(n=t.parseEl(t.index));var i=n.type;if(T("BeforeChange",[t.currItem?t.currItem.type:"",i]),t.currItem=n,!t.currTemplate[i]){var o=t.st[i]?t.st[i].markup:!1;T("FirstMarkupParse",o),t.currTemplate[i]=o?e(o):!0}r&&r!==n.type&&t.container.removeClass("mfp-"+r+"-holder");var a=t["get"+i.charAt(0).toUpperCase()+i.slice(1)](n,t.currTemplate[i]);t.appendContent(a,i),n.preloaded=!0,T(m,n),r=n.type,t.container.prepend(t.contentContainer),T("AfterChange")},appendContent:function(e,n){t.content=e,e?t.st.showCloseBtn&&t.st.closeBtnInside&&t.currTemplate[n]===!0?t.content.find(".mfp-close").length||t.content.append(E()):t.content=e:t.content="",T(u),t.container.addClass("mfp-"+n+"-holder"),t.contentContainer.append(t.content)},parseEl:function(n){var i,o=t.items[n];if(o.tagName?o={el:e(o)}:(i=o.type,o={data:o,src:o.src}),o.el){for(var r=t.types,a=0;a<r.length;a++)if(o.el.hasClass("mfp-"+r[a])){i=r[a];break}o.src=o.el.attr("data-mfp-src"),o.src||(o.src=o.el.attr("href"))}return o.type=i||t.st.type||"inline",o.index=n,o.parsed=!0,t.items[n]=o,T("ElementParse",o),t.items[n]},addGroup:function(e,n){var i=function(i){i.mfpEl=this,t._openClick(i,e,n)};n||(n={});var o="click.magnificPopup";n.mainEl=e,n.items?(n.isObj=!0,e.off(o).on(o,i)):(n.isObj=!1,n.delegate?e.off(o).on(o,n.delegate,i):(n.items=e,e.off(o).on(o,i)))},_openClick:function(n,i,o){var r=void 0!==o.midClick?o.midClick:e.magnificPopup.defaults.midClick;if(r||2!==n.which&&!n.ctrlKey&&!n.metaKey){var a=void 0!==o.disableOn?o.disableOn:e.magnificPopup.defaults.disableOn;if(a)if(e.isFunction(a)){if(!a.call(t))return!0}else if(I.width()<a)return!0;n.type&&(n.preventDefault(),t.isOpen&&n.stopPropagation()),o.el=e(n.mfpEl),o.delegate&&(o.items=i.find(o.delegate)),t.open(o)}},updateStatus:function(e,i){if(t.preloader){n!==e&&t.container.removeClass("mfp-s-"+n),i||"loading"!==e||(i=t.st.tLoading);var o={status:e,text:i};T("UpdateStatus",o),e=o.status,i=o.text,t.preloader.html(i),t.preloader.find("a").on("click",function(e){e.stopImmediatePropagation()}),t.container.addClass("mfp-s-"+e),n=e}},_checkIfClose:function(n){if(!e(n).hasClass(y)){var i=t.st.closeOnContentClick,o=t.st.closeOnBgClick;if(i&&o)return!0;if(!t.content||e(n).hasClass("mfp-close")||t.preloader&&n===t.preloader[0])return!0;if(n===t.content[0]||e.contains(t.content[0],n)){if(i)return!0}else if(o&&e.contains(document,n))return!0;return!1}},_addClassToMFP:function(e){t.bgOverlay.addClass(e),t.wrap.addClass(e)},_removeClassFromMFP:function(e){this.bgOverlay.removeClass(e),t.wrap.removeClass(e)},_hasScrollBar:function(e){return(t.isIE7?o.height():document.body.scrollHeight)>(e||I.height())},_setFocus:function() {(t.st.focus?t.content.find(t.st.focus).eq(0):t.wrap).focus()},_onFocusIn:function(n){return n.target===t.wrap[0]||e.contains(t.wrap[0],n.target)?void 0:(t._setFocus(),!1)},_parseMarkup:function(t,n,i){var o;i.data&&(n=e.extend(i.data,n)),T(p,[t,n,i]),e.each(n,function(e,n){if(void 0===n||n===!1)return!0;if(o=e.split("_"),o.length>1){var i=t.find(h+"-"+o[0]);if(i.length>0){var r=o[1];"replaceWith"===r?i[0]!==n[0]&&i.replaceWith(n):"img"===r?i.is("img")?i.attr("src",n):i.replaceWith( '<img src="'+n+'" class="'+i.attr("class")+'" />'):i.attr(o[1],n)}}else t.find(h+"-"+e).html(n)})},_getScrollbarSize:function() {if(void 0===t.scrollbarSize){var e=document.createElement("div");e.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(e),t.scrollbarSize=e.offsetWidth-e.clientWidth,document.body.removeChild(e)}return t.scrollbarSize}},e.magnificPopup={instance:null,proto:w.prototype,modules:[],open:function(t,n){return _(),t=t?e.extend(!0,{},t):{},t.isObj=!0,t.index=n||0,this.instance.open(t)},close:function() {return e.magnificPopup.instance&&e.magnificPopup.instance.close()},registerModule:function(t,n){n.options&&(e.magnificPopup.defaults[t]=n.options),e.extend(this.proto,n.proto),this.modules.push(t)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">&times;</button>',tClose:"Close (Esc)",tLoading:"Loading..."}},e.fn.magnificPopup=function(n){_();var i=e(this);if("string"==typeof n)if("open"===n){var o,r=b?i.data("magnificPopup"):i[0].magnificPopup,a=parseInt(arguments[1],10)||0;r.items?o=r.items[a]:(o=i,r.delegate&&(o=o.find(r.delegate)),o=o.eq(a)),t._openClick({mfpEl:o},i,r)}else t.isOpen&&t[n].apply(t,Array.prototype.slice.call(arguments,1));else n=e.extend(!0,{},n),b?i.data("magnificPopup",n):i[0].magnificPopup=n,t.addGroup(i,n);return i};var P,O,z,M="inline",B=function() {z&&(O.after(z.addClass(P)).detach(),z=null)};e.magnificPopup.registerModule(M,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function() {t.types.push(M),x(l+"."+M,function() {B()})},getInline:function(n,i){if(B(),n.src){var o=t.st.inline,r=e(n.src);if(r.length){var a=r[0].parentNode;a&&a.tagName&&(O||(P=o.hiddenClass,O=k(P),P="mfp-"+P),z=r.after(O).detach().removeClass(P)),t.updateStatus("ready")}else t.updateStatus("error",o.tNotFound),r=e("<div>");return n.inlineElement=r,r}return t.updateStatus("ready"),t._parseMarkup(i,{},n),i}}});var F,H="ajax",L=function() {F&&i.removeClass(F)},A=function() {L(),t.req&&t.req.abort()};e.magnificPopup.registerModule(H,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'<a href="%url%">The content</a> could not be loaded.'},proto:{initAjax:function() {t.types.push(H),F=t.st.ajax.cursor,x(l+"."+H,A),x("BeforeChange."+H,A)},getAjax:function(n){F&&i.addClass(F),t.updateStatus("loading");var o=e.extend({url:n.src,success:function(i,o,r){var a={data:i,xhr:r};T("ParseAjax",a),t.appendContent(e(a.data),H),n.finished=!0,L(),t._setFocus(),setTimeout(function() {t.wrap.addClass(v)},16),t.updateStatus("ready"),T("AjaxContentAdded")},error:function() {L(),n.finished=n.loadError=!0,t.updateStatus("error",t.st.ajax.tError.replace("%url%",n.src))}},t.st.ajax.settings);return t.req=e.ajax(o),""}}});var j,N=function(n){if(n.data&&void 0!==n.data.title)return n.data.title;var i=t.st.image.titleSrc;if(i){if(e.isFunction(i))return i.call(t,n);if(n.el)return n.el.attr(i)||""}return""};e.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function() {var e=t.st.image,n=".image";t.types.push("image"),x(f+n,function() {"image"===t.currItem.type&&e.cursor&&i.addClass(e.cursor)}),x(l+n,function() {e.cursor&&i.removeClass(e.cursor),I.off("resize"+h)}),x("Resize"+n,t.resizeImage),t.isLowIE&&x("AfterChange",t.resizeImage)},resizeImage:function() {var e=t.currItem;if(e&&e.img&&t.st.image.verticalFit){var n=0;t.isLowIE&&(n=parseInt(e.img.css("padding-top"),10)+parseInt(e.img.css("padding-bottom"),10)),e.img.css("max-height",t.wH-n)}},_onImageHasSize:function(e){e.img&&(e.hasSize=!0,j&&clearInterval(j),e.isCheckingImgSize=!1,T("ImageHasSize",e),e.imgHidden&&(t.content&&t.content.removeClass("mfp-loading"),e.imgHidden=!1))},findImageSize:function(e){var n=0,i=e.img[0],o=function(r){j&&clearInterval(j),j=setInterval(function() {return i.naturalWidth>0?void t._onImageHasSize(e):(n>200&&clearInterval(j),n++,void(3===n?o(10):40===n?o(50):100===n&&o(500)))},r)};o(1)},getImage:function(n,i){var o=0,r=function() {n&&(n.img[0].complete?(n.img.off(".mfploader"),n===t.currItem&&(t._onImageHasSize(n),t.updateStatus("ready")),n.hasSize=!0,n.loaded=!0,T("ImageLoadComplete")):(o++,200>o?setTimeout(r,100):a()))},a=function() {n&&(n.img.off(".mfploader"),n===t.currItem&&(t._onImageHasSize(n),t.updateStatus("error",s.tError.replace("%url%",n.src))),n.hasSize=!0,n.loaded=!0,n.loadError=!0)},s=t.st.image,l=i.find(".mfp-img");if(l.length){var c=document.createElement("img");c.className="mfp-img",n.img=e(c).on("load.mfploader",r).on("error.mfploader",a),c.src=n.src,l.is("img")&&(n.img=n.img.clone()),c=n.img[0],c.naturalWidth>0?n.hasSize=!0:c.width||(n.hasSize=!1)}return t._parseMarkup(i,{title:N(n),img_replaceWith:n.img},n),t.resizeImage(),n.hasSize?(j&&clearInterval(j),n.loadError?(i.addClass("mfp-loading"),t.updateStatus("error",s.tError.replace("%url%",n.src))):(i.removeClass("mfp-loading"),t.updateStatus("ready")),i):(t.updateStatus("loading"),n.loading=!0,n.hasSize||(n.imgHidden=!0,i.addClass("mfp-loading"),t.findImageSize(n)),i)}}});var W,R=function() {return void 0===W&&(W=void 0!==document.createElement("p").style.MozTransform),W};e.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(e){return e.is("img")?e:e.find("img")}},proto:{initZoom:function() {var e,n=t.st.zoom,i=".zoom";if(n.enabled&&t.supportsTransition){var o,r,a=n.duration,s=function(e){var t=e.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),i="all "+n.duration/1e3+"s "+n.easing,o={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},r="transition";return o["-webkit-"+r]=o["-moz-"+r]=o["-o-"+r]=o[r]=i,t.css(o),t},d=function() {t.content.css("visibility","visible")};x("BuildControls"+i,function() {if(t._allowZoom()){if(clearTimeout(o),t.content.css("visibility","hidden"),e=t._getItemToZoom(),!e)return void d();r=s(e),r.css(t._getOffset()),t.wrap.append(r),o=setTimeout(function() {r.css(t._getOffset(!0)),o=setTimeout(function() {d(),setTimeout(function() {r.remove(),e=r=null,T("ZoomAnimationEnded")},16)},a)},16)}}),x(c+i,function() {if(t._allowZoom()){if(clearTimeout(o),t.st.removalDelay=a,!e){if(e=t._getItemToZoom(),!e)return;r=s(e)}r.css(t._getOffset(!0)),t.wrap.append(r),t.content.css("visibility","hidden"),setTimeout(function() {r.css(t._getOffset())},16)}}),x(l+i,function() {t._allowZoom()&&(d(),r&&r.remove(),e=null)})}},_allowZoom:function() {return"image"===t.currItem.type},_getItemToZoom:function() {return t.currItem.hasSize?t.currItem.img:!1},_getOffset:function(n){var i;i=n?t.currItem.img:t.st.zoom.opener(t.currItem.el||t.currItem);var o=i.offset(),r=parseInt(i.css("padding-top"),10),a=parseInt(i.css("padding-bottom"),10);o.top-=e(window).scrollTop()-r;var s={width:i.width(),height:(b?i.innerHeight():i[0].offsetHeight)-a-r};return R()?s["-moz-transform"]=s.transform="translate("+o.left+"px,"+o.top+"px)":(s.left=o.left,s.top=o.top),s}}});var Z="iframe",q="//about:blank",D=function(e){if(t.currTemplate[Z]){var n=t.currTemplate[Z].find("iframe");n.length&&(e||(n[0].src=q),t.isIE8&&n.css("display",e?"block":"none"))}};e.magnificPopup.registerModule(Z,{options:{markup:'<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function() {t.types.push(Z),x("BeforeChange",function(e,t,n){t!==n&&(t===Z?D():n===Z&&D(!0))}),x(l+"."+Z,function() {D()})},getIframe:function(n,i){var o=n.src,r=t.st.iframe;e.each(r.patterns,function() {return o.indexOf(this.index)>-1?(this.id&&(o="string"==typeof this.id?o.substr(o.lastIndexOf(this.id)+this.id.length,o.length):this.id.call(this,o)),o=this.src.replace("%id%",o),!1):void 0});var a={};return r.srcAction&&(a[r.srcAction]=o),t._parseMarkup(i,a,n),t.updateStatus("ready"),i}}});var K=function(e){var n=t.items.length;return e>n-1?e-n:0>e?n+e:e},Y=function(e,t,n){return e.replace(/%curr%/gi,t+1).replace(/%total%/gi,n)};e.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function() {var n=t.st.gallery,i=".mfp-gallery",r=Boolean(e.fn.mfpFastClick);return t.direction=!0,n&&n.enabled?(a+=" mfp-gallery",x(f+i,function() {n.navigateByImgClick&&t.wrap.on("click"+i,".mfp-img",function() {return t.items.length>1?(t.next(),!1):void 0}),o.on("keydown"+i,function(e){37===e.keyCode?t.prev():39===e.keyCode&&t.next()})}),x("UpdateStatus"+i,function(e,n){n.text&&(n.text=Y(n.text,t.currItem.index,t.items.length))}),x(p+i,function(e,i,o,r){var a=t.items.length;o.counter=a>1?Y(n.tCounter,r.index,a):""}),x("BuildControls"+i,function() {if(t.items.length>1&&n.arrows&&!t.arrowLeft){var i=n.arrowMarkup,o=t.arrowLeft=e(i.replace(/%title%/gi,n.tPrev).replace(/%dir%/gi,"left")).addClass(y),a=t.arrowRight=e(i.replace(/%title%/gi,n.tNext).replace(/%dir%/gi,"right")).addClass(y),s=r?"mfpFastClick":"click";o[s](function() {t.prev()}),a[s](function() {t.next()}),t.isIE7&&(k("b",o[0],!1,!0),k("a",o[0],!1,!0),k("b",a[0],!1,!0),k("a",a[0],!1,!0)),t.container.append(o.add(a))}}),x(m+i,function() {t._preloadTimeout&&clearTimeout(t._preloadTimeout),t._preloadTimeout=setTimeout(function() {t.preloadNearbyImages(),t._preloadTimeout=null},16)}),void x(l+i,function() {o.off(i),t.wrap.off("click"+i),t.arrowLeft&&r&&t.arrowLeft.add(t.arrowRight).destroyMfpFastClick(),t.arrowRight=t.arrowLeft=null})):!1},next:function() {t.direction=!0,t.index=K(t.index+1),t.updateItemHTML()},prev:function() {t.direction=!1,t.index=K(t.index-1),t.updateItemHTML()},goTo:function(e){t.direction=e>=t.index,t.index=e,t.updateItemHTML()},preloadNearbyImages:function() {var e,n=t.st.gallery.preload,i=Math.min(n[0],t.items.length),o=Math.min(n[1],t.items.length);for(e=1;e<=(t.direction?o:i);e++)t._preloadItem(t.index+e);for(e=1;e<=(t.direction?i:o);e++)t._preloadItem(t.index-e)},_preloadItem:function(n){if(n=K(n),!t.items[n].preloaded){var i=t.items[n];i.parsed||(i=t.parseEl(n)),T("LazyLoad",i),"image"===i.type&&(i.img=e( '<img class="mfp-img" />').on("load.mfploader",function() {i.hasSize=!0}).on("error.mfploader",function() {i.hasSize=!0,i.loadError=!0,T("LazyLoadError",i)}).attr("src",i.src)),i.preloaded=!0}}}});var U="retina";e.magnificPopup.registerModule(U,{options:{replaceSrc:function(e){return e.src.replace(/\.\w+$/,function(e){return"@2x"+e})},ratio:1},proto:{initRetina:function() {if(window.devicePixelRatio>1){var e=t.st.retina,n=e.ratio;n=isNaN(n)?n():n,n>1&&(x("ImageHasSize."+U,function(e,t){t.img.css({"max-width":t.img[0].naturalWidth/n,width:"100%"})}),x("ElementParse."+U,function(t,i){i.src=e.replaceSrc(i,n)}))}}}}),function() {var t=1e3,n="ontouchstart"in window,i=function() {I.off("touchmove"+r+" touchend"+r)},o="mfpFastClick",r="."+o;e.fn.mfpFastClick=function(o){return e(this).each(function() {var a,s=e(this);if(n){var l,c,d,u,p,f;s.on("touchstart"+r,function(e){u=!1,f=1,p=e.originalEvent?e.originalEvent.touches[0]:e.touches[0],c=p.clientX,d=p.clientY,I.on("touchmove"+r,function(e){p=e.originalEvent?e.originalEvent.touches:e.touches,f=p.length,p=p[0],(Math.abs(p.clientX-c)>10||Math.abs(p.clientY-d)>10)&&(u=!0,i())}).on("touchend"+r,function(e){i(),u||f>1||(a=!0,e.preventDefault(),clearTimeout(l),l=setTimeout(function() {a=!1},t),o())})})}s.on("click"+r,function() {a||o()})})},e.fn.destroyMfpFastClick=function() {e(this).off("touchstart"+r+" click"+r),n&&I.off("touchmove"+r+" touchend"+r)}}(),_()}(window.jQuery||window.Zepto);
  • kopa-page-builder/trunk/js/script.coffee

    r1323889 r1428045  
    2020        Kopa_Page_Builder.sticky_header()       
    2121        Kopa_Page_Builder.open_media_center()
    22         jQuery('.kpb-ui-color').wpColorPicker()
     22        jQuery( '.kpb-ui-color').wpColorPicker()
    2323        return
    2424
    2525    load_lightbox_html: () ->
    26         #if jQuery('#kpb-select-layout').val() != 'disable'     
     26        #if jQuery( '#kpb-select-layout').val() != 'disable'       
    2727        jQuery.ajax
    2828            beforeSend: (jqXHR) ->                 
    2929                return
    3030            success: (data, textStatus, jqXHR) ->           
    31                 jQuery('body').append(data)                   
    32                 jQuery('#kpb-metabox-loading-text').remove()
    33                 jQuery('#kpb-wrapper').show()
     31                jQuery( 'body').append(data)                     
     32                jQuery( '#kpb-metabox-loading-text').remove()
     33                jQuery( '#kpb-wrapper').show()
    3434                Kopa_Page_Builder.init_effect()             
    3535                return
     
    4040            data:
    4141                action: 'kpb_load_lightbox_html'
    42                 security: jQuery('#kpb_load_lightbox_html_security').val()                         
    43                 post_id:jQuery('#post_ID').val()                   
     42                security: jQuery( '#kpb_load_lightbox_html_security').val()                         
     43                post_id:jQuery( '#post_ID').val()                   
    4444        return
    4545
    4646    main_form_submit: () ->
    47         if jQuery('form#post').length > 0
    48             jQuery('form#post').on 'submit', () ->
    49                 jQuery('#kpb-button-save-layouts').click()
     47        if jQuery( 'form#post').length > 0
     48            jQuery( 'form#post').on 'submit', () ->
     49                jQuery( '#kpb-button-save-layouts').click()
    5050        return
    5151
    5252    sticky_header: (event) ->
    5353        if KPB.is_sticky_toolbar is '1'
    54             jQuery('#kpb-wrapper-header').waypoint 'sticky',
     54            jQuery( '#kpb-wrapper-header').waypoint 'sticky',
    5555                direction: 'down'
    5656                stuckClass: 'kpb-stuck'
     
    6161    open_customize_layout: (event, obj) ->
    6262        event.preventDefault()     
    63         lightbox = '#kpb-layout-customize-lightbox-' +  jQuery('#kpb-select-layout option:selected').val()
     63        lightbox = '#kpb-layout-customize-lightbox-' +  jQuery( '#kpb-select-layout option:selected').val()
     64
     65        if jQuery(lightbox).length
     66            jQuery.magnificPopup.open
     67                callbacks:
     68                    open: () ->
     69                        jQuery(lightbox).show()
     70                        return
     71                    close: () ->
     72                        jQuery(lightbox).hide()
     73                        return
     74                modal: true
     75                preloader: true
     76                alignTop: true
     77                items:
     78                    src: lightbox
     79                    type: 'inline'
     80
     81        return
     82   
     83    save_layout_customize: (event, obj, post_id) ->
     84        event.preventDefault()
     85        Kopa_Page_Builder.show_overlay_loading()
     86
     87        obj.ajaxSubmit
     88            beforeSubmit: (arr, $form, options) ->             
     89                return
     90            success: (responseText, statusText, xhr, $form) ->                             
     91                Kopa_Page_Builder.hide_overlay_loading()
     92                jQuery( '#kpb-button-save-layouts').click()
     93                return     
     94            data:
     95                post_id: post_id   
     96        return
     97
     98    close_layout_customize: (event) ->
     99        event.preventDefault()
     100        Kopa_Page_Builder.close_widget(event)
     101        return
     102
     103    open_customize: (event, obj, layout, section) ->
     104        event.preventDefault()
     105               
     106        lightbox = '#kpb-customize-lightbox-' + layout + '-' + section;     
    64107
    65108        jQuery.magnificPopup.open
     
    77120                src: lightbox
    78121                type: 'inline'
    79 
    80         return
    81    
    82     save_layout_customize: (event, obj, post_id) ->
     122        return
     123
     124    save_customize: (event, obj, post_id) ->
    83125        event.preventDefault()
    84126        Kopa_Page_Builder.show_overlay_loading()
     
    89131            success: (responseText, statusText, xhr, $form) ->                             
    90132                Kopa_Page_Builder.hide_overlay_loading()
     133                jQuery( '#kpb-button-save-layouts').click()
    91134                return     
    92135            data:
     
    94137        return
    95138
    96     close_layout_customize: (event) ->
     139    close_customize: (event) ->
    97140        event.preventDefault()
    98141        Kopa_Page_Builder.close_widget(event)
    99142        return
    100143
    101     open_customize: (event, obj, layout, section) ->
    102         event.preventDefault()
    103                
    104         lightbox = '#kpb-customize-lightbox-' + layout + '-' + section;     
    105 
     144    open_list_widgets: (event, obj) ->
     145        event.preventDefault()
     146        kpb_current_sidebar = obj.parents '.kpb-area'
     147        lightbox = '#kpb-widgets-lightbox'
    106148        jQuery.magnificPopup.open
    107149            callbacks:
     
    120162        return
    121163
    122     save_customize: (event, obj, post_id) ->
    123         event.preventDefault()
    124         Kopa_Page_Builder.show_overlay_loading()
    125 
    126         obj.ajaxSubmit
    127             beforeSubmit: (arr, $form, options) ->             
    128                 return
    129             success: (responseText, statusText, xhr, $form) ->                             
    130                 Kopa_Page_Builder.hide_overlay_loading()
    131                 return     
    132             data:
    133                 post_id: post_id   
    134         return
    135 
    136     close_customize: (event) ->
    137         event.preventDefault()
    138         Kopa_Page_Builder.close_widget(event)
    139         return
    140 
    141     open_list_widgets: (event, obj) ->
    142         event.preventDefault()
    143         kpb_current_sidebar = obj.parents '.kpb-area'
    144         lightbox = '#kpb-widgets-lightbox'
    145         jQuery.magnificPopup.open
    146             callbacks:
    147                 open: () ->
    148                     jQuery(lightbox).show()
    149                     return
    150                 close: () ->
    151                     jQuery(lightbox).hide()
    152                     return
    153             modal: true
    154             preloader: true
    155             alignTop: true
    156             items:
    157                 src: lightbox
    158                 type: 'inline'
    159         return
    160 
    161164    close_list_widgets: (event) ->
    162165        event.preventDefault()
     
    174177                open: () ->
    175178                    jQuery(lightbox).show()
    176                     jQuery('#kpb-widget-title').text widget_name                                   
    177                     jQuery('#kpb-widget input[name=kpb-widget-class-name]').val class_name                 
    178                     jQuery('#kpb-widget input[name=kpb-widget-name]').val widget_name
    179                     jQuery('#kpb-widget input[name=kpb-widget-action]').val 'add'
    180                     jQuery('#kpb-widget input[name=kpb-widget-id]').val Kopa_Page_Builder.get_random_id 'widget-'
     179                    jQuery( '#kpb-widget-title').text widget_name                                   
     180                    jQuery( '#kpb-widget input[name=kpb-widget-class-name]').val class_name                 
     181                    jQuery( '#kpb-widget input[name=kpb-widget-name]').val widget_name
     182                    jQuery( '#kpb-widget input[name=kpb-widget-action]').val 'add'
     183                    jQuery( '#kpb-widget input[name=kpb-widget-id]').val Kopa_Page_Builder.get_random_id 'widget-'
    181184
    182185                    jQuery.ajax
    183186                        success: (data, textStatus, jqXHR) ->
    184                             jQuery('#kpb-widget .kpb-form-inner').html data
     187                            jQuery( '#kpb-widget .kpb-form-inner').html data
    185188                            Kopa_Page_Builder.open_media_center()
    186                             jQuery('.kpb-ui-color').wpColorPicker()                     
     189                            jQuery( '.kpb-ui-color').wpColorPicker()                       
    187190                            return
    188191                        url: KPB.ajax
     
    192195                        data:
    193196                            action: 'kpb_get_widget_form'
    194                             security: jQuery('#kpb_get_widget_form_security').val()
     197                            security: jQuery( '#kpb_get_widget_form_security').val()
    195198                            class_name: class_name
    196199                    return
     
    215218                open: () ->
    216219                    jQuery(lightbox).show()
    217                     jQuery('#kpb-widget-title').text kpb_current_widget.find('label').text()                           
    218                     jQuery('#kpb-widget input[name=kpb-widget-class-name]').val kpb_current_widget.attr 'data-class'                   
    219                     jQuery('#kpb-widget input[name=kpb-widget-name]').val kpb_current_widget.attr 'data-name'
    220                     jQuery('#kpb-widget input[name=kpb-widget-action]').val 'edit'
    221                     jQuery('#kpb-widget input[name=kpb-widget-id]').val widget_id
     220                    jQuery( '#kpb-widget-title').text kpb_current_widget.find( 'label').text()                         
     221                    jQuery( '#kpb-widget input[name=kpb-widget-class-name]').val kpb_current_widget.attr 'data-class'                   
     222                    jQuery( '#kpb-widget input[name=kpb-widget-name]').val kpb_current_widget.attr 'data-name'
     223                    jQuery( '#kpb-widget input[name=kpb-widget-action]').val 'edit'
     224                    jQuery( '#kpb-widget input[name=kpb-widget-id]').val widget_id
    222225
    223226                    jQuery.ajax
    224227                        success: (data, textStatus, jqXHR) ->
    225                             jQuery('#kpb-widget .kpb-form-inner').html data
     228                            jQuery( '#kpb-widget .kpb-form-inner').html data
    226229                            Kopa_Page_Builder.open_media_center()
    227                             jQuery('.kpb-ui-color').wpColorPicker()
     230                            jQuery( '.kpb-ui-color').wpColorPicker()                                               
    228231                            return
    229232                        url: KPB.ajax
     
    233236                        data:
    234237                            action: 'kpb_get_widget_form'
    235                             security: jQuery('#kpb_get_widget_form_security').val()                         
     238                            security: jQuery( '#kpb_get_widget_form_security').val()                           
    236239                            widget_id: widget_id
    237240                            class_name: kpb_current_widget.attr 'data-class'
    238                             post_id: jQuery('#post_ID').val()                       
     241                            post_id: jQuery( '#post_ID').val()                     
    239242
    240243                    return
     
    260263                    return
    261264                success: (data, textStatus, jqXHR) ->           
    262                     obj.parents('.kpb-widget').remove()
    263                     jQuery('#kpb-button-save-layouts').click()
     265                    obj.parents( '.kpb-widget').remove()
     266                    jQuery( '#kpb-button-save-layouts').click()
    264267                    return
    265268                url: KPB.ajax
     
    269272                data:
    270273                    action: 'kpb_delete_widget'
    271                     security: jQuery('#kpb_delete_widget_security').val()                           
    272                     widget_id: widget_id                   
     274                    security: jQuery( '#kpb_delete_widget_security').val()                         
     275                    widget_id: widget_id
     276                    post_id: jQuery( '#post_ID').val()
    273277        return
    274278
     
    282286            success: (responseText, statusText, xhr, $form) ->
    283287                if responseText
    284                     if 'add' == jQuery('#kpb-widget input[name=kpb-widget-action]').val()
    285                         kpb_current_sidebar.find('.kpb-area-placeholder').append responseText
    286                         jQuery('#kpb-widget input[name=kpb-widget-action]').val 'edit'
     288                    if 'add' == jQuery( '#kpb-widget input[name=kpb-widget-action]').val()
     289                        kpb_current_sidebar.find( '.kpb-area-placeholder').append responseText
     290                        jQuery( '#kpb-widget input[name=kpb-widget-action]').val 'edit'
    287291                    else
    288292                        if kpb_current_widget
    289                             kpb_current_widget.find('label').text responseText                                 
     293                            kpb_current_widget.find( 'label').text responseText                                 
    290294               
    291                 jQuery('#kpb-button-save-layouts').click()
     295                jQuery( '#kpb-button-save-layouts').click()
    292296
    293297                return
     
    297301        event.preventDefault()
    298302        jQuery.magnificPopup.close()
    299         jQuery('#kpb-widget .kpb-form-inner').html '<center class="kpb-loading">' + KPB.i18n.loading + '</center>'
     303        jQuery( '#kpb-widget .kpb-form-inner').html '<center class="kpb-loading">' + KPB.i18n.loading + '</center>'
    300304        Kopa_Page_Builder.hide_overlay_loading()
    301305
    302         jQuery('#kpb-widget-title').text ''
    303         jQuery('#kpb-widget input[name=kpb-widget-class-name]').val ''             
    304         jQuery('#kpb-widget input[name=kpb-widget-action]').val 'add'
    305         jQuery('#kpb-widget input[name=kpb-widget-id]').val ''                 
    306         jQuery('#kpb-widget input[name=kpb-widget-name]').val ''   
     306        jQuery( '#kpb-widget-title').text ''
     307        jQuery( '#kpb-widget input[name=kpb-widget-class-name]').val ''             
     308        jQuery( '#kpb-widget input[name=kpb-widget-action]').val 'add'
     309        jQuery( '#kpb-widget input[name=kpb-widget-id]').val ''                 
     310        jQuery( '#kpb-widget input[name=kpb-widget-name]').val ''   
    307311        return
    308312
     
    310314        event.preventDefault()
    311315
    312         current_layout = jQuery('#kpb-select-layout').find('option:selected').val()     
     316        current_layout = jQuery( '#kpb-select-layout').find( 'option:selected').val()       
    313317
    314318        Kopa_Page_Builder.show_overlay_loading()   
    315319        data =
    316             current_layout: jQuery('#kpb-select-layout').find('option:selected').val()
     320            current_layout: jQuery( '#kpb-select-layout').find( 'option:selected').val()
    317321            layouts: []
    318322
     
    387391            data:
    388392                action: 'kpb_save_grid'
    389                 security: jQuery('#kpb_save_grid_security').val()
     393                security: jQuery( '#kpb_save_grid_security').val()
    390394                data: data
    391                 post_id: jQuery('#post_ID').val()
     395                post_id: jQuery( '#post_ID').val()
    392396        return
    393397
    394398    show_overlay_loading: () ->
    395         #jQuery('#kpb-loading-overlay').show() 
    396         jQuery('#kpb-loading-overlay').stop().animate
     399        #jQuery( '#kpb-loading-overlay').show()
     400        jQuery( '#kpb-loading-overlay').stop().animate
    397401            display: 'block'
    398402            right: '0px'
     
    401405
    402406    hide_overlay_loading: () ->
    403         #jQuery('#kpb-loading-overlay').hide()
    404         jQuery('#kpb-loading-overlay').animate
     407        #jQuery( '#kpb-loading-overlay').hide()
     408        jQuery( '#kpb-loading-overlay').animate
    405409            display: 'none'
    406410            right: '-150px'
     
    411415        event.preventDefault()
    412416       
    413         if obj.attr('data-status') is '0'   
    414             jQuery('.kpb-layout > .kpb-col-left').removeClass('kpb-col-12').addClass('kpb-col-8')
    415             jQuery('.kpb-layout > .kpb-col-right').show()
     417        if obj.attr( 'data-status') is '0' 
     418            jQuery( '.kpb-layout > .kpb-col-left').removeClass( 'kpb-col-12').addClass( 'kpb-col-8')
     419            jQuery( '.kpb-layout > .kpb-col-right').show()
    416420            obj.attr 'data-status', '1'
    417421            obj.text KPB.i18n.hide_preview
    418422        else           
    419             jQuery('.kpb-layout > .kpb-col-left').removeClass('kpb-col-8').addClass('kpb-col-12')
    420             jQuery('.kpb-layout > .kpb-col-right').hide()
     423            jQuery( '.kpb-layout > .kpb-col-left').removeClass( 'kpb-col-8').addClass( 'kpb-col-12')
     424            jQuery( '.kpb-layout > .kpb-col-right').hide()
    421425            obj.attr 'data-status', '0'
    422426            obj.text KPB.i18n.show_preview
     
    429433        event.preventDefault()
    430434       
    431         new_layout = obj.find('option:selected').val()
     435        new_layout = obj.find( 'option:selected').val()
    432436        new_layout_id = '#kpb-layout-' + new_layout;
    433437       
    434         if !jQuery(new_layout_id).hasClass('kpb-active')
    435             jQuery('.kpb-layout.kpb-active').removeClass('kpb-active').addClass('kpb-hidden')
    436             jQuery(new_layout_id).removeClass('kpb-hidden').addClass('kpb-active')
     438        if !jQuery(new_layout_id).hasClass( 'kpb-active')
     439            jQuery( '.kpb-layout.kpb-active').removeClass( 'kpb-active').addClass( 'kpb-hidden')
     440            jQuery(new_layout_id).removeClass( 'kpb-hidden').addClass( 'kpb-active')
    437441       
    438442        return
    439443
    440444    init_sortable: () ->
    441         jQuery('.kpb-area-placeholder').sortable           
     445        jQuery( '.kpb-area-placeholder').sortable           
    442446            forcePlaceholderSize: true
    443447            connectWith: '.kpb-area-placeholder'
     
    449453
    450454    open_media_center: () ->       
    451         jQuery('.kpb-ui-image-outer').on 'click', '.kpb-ui-image-button-upload', (event)->
     455        jQuery( '.kpb-ui-image-outer').on 'click', '.kpb-ui-image-button-upload', (event)->
    452456            event.preventDefault()
    453457
     
    467471
    468472            kpb_media.on 'select', () ->
    469                 attachment = kpb_media.state().get('selection').first().toJSON()
    470                 kpb_media_button_upload.parents('.kpb-ui-image-outer').find('.kpb-ui-image').val attachment.url
    471                 kpb_media_button_upload.parents('.kpb-ui-image-outer').find('.kpb-ui-image-preview').attr 'src', attachment.url
     473                attachment = kpb_media.state().get( 'selection').first().toJSON()
     474                kpb_media_button_upload.parents( '.kpb-ui-image-outer').find( '.kpb-ui-image').val attachment.url
     475                kpb_media_button_upload.parents( '.kpb-ui-image-outer').find( '.kpb-ui-image-preview').attr 'src', attachment.url
    472476                return             
    473477
     
    476480            return 
    477481
    478         jQuery('.kpb-ui-image-outer').on 'click', '.kpb-ui-image-button-reset', (event)->
     482        jQuery( '.kpb-ui-image-outer').on 'click', '.kpb-ui-image-button-reset', (event)->
    479483            event.preventDefault()
    480484            kpb_media_button_reset = jQuery this
    481485
    482             if kpb_media_button_reset.attr('data-reset')
    483                 kpb_media_button_reset.parents('.kpb-ui-image-outer').find('.kpb-ui-image').val kpb_media_button_reset.attr 'data-reset'
    484                 kpb_media_button_reset.parents('.kpb-ui-image-outer').find('.kpb-ui-image-preview').attr 'src', kpb_media_button_reset.attr 'data-reset'
     486            if kpb_media_button_reset.attr( 'data-reset')
     487                kpb_media_button_reset.parents( '.kpb-ui-image-outer').find( '.kpb-ui-image').val kpb_media_button_reset.attr 'data-reset'
     488                kpb_media_button_reset.parents( '.kpb-ui-image-outer').find( '.kpb-ui-image-preview').attr 'src', kpb_media_button_reset.attr 'data-reset'
    485489            else
    486                 kpb_media_button_reset.parents('.kpb-ui-image-outer').find('.kpb-ui-image').val kpb_media_button_reset.attr ''
    487                 kpb_media_button_reset.parents('.kpb-ui-image-outer').find('.kpb-ui-image-preview').attr 'src', kpb_media_button_reset.attr 'data-preview'             
     490                kpb_media_button_reset.parents( '.kpb-ui-image-outer').find( '.kpb-ui-image').val kpb_media_button_reset.attr ''
     491                kpb_media_button_reset.parents( '.kpb-ui-image-outer').find( '.kpb-ui-image-preview').attr 'src', kpb_media_button_reset.attr 'data-preview'               
    488492
    489493            return
     
    492496
    493497    init_section_tab: () ->
    494         tabs = jQuery('.kpb-tab-title > a')
     498        tabs = jQuery( '.kpb-tab-title > a')
    495499        if tabs.length > 0
    496500            tabs.each (index, element) ->
     
    499503                    event.preventDefault()
    500504
    501                     root = tab.parents('.kpb-wrapper-configuration-toggle')
     505                    root = tab.parents( '.kpb-wrapper-configuration-toggle')
    502506                    parent = tab.parent()
    503507                   
    504                     if !parent.hasClass('kpb-tab-title-active')
    505                         root.find('.kpb-tab-title-active').removeClass('kpb-tab-title-active')
    506                         root.find('.kpb-tab-content').slideUp 500
    507 
    508                         parent.addClass('kpb-tab-title-active')
     508                    if !parent.hasClass( 'kpb-tab-title-active')
     509                        root.find( '.kpb-tab-title-active').removeClass( 'kpb-tab-title-active')
     510                        root.find( '.kpb-tab-content').slideUp 500
     511
     512                        parent.addClass( 'kpb-tab-title-active')
    509513                        jQuery(tab.attr 'href').slideDown 500
    510514
     
    516520        event.preventDefault()
    517521       
    518         root = obj.parents('.kpb-wrapper-configuration-toggle')
     522        root = obj.parents( '.kpb-wrapper-configuration-toggle')
    519523        parent = obj.parent()
    520524
    521         if !parent.hasClass('kpb-tab-title-active')
    522             root.find('.kpb-tab-title-active').removeClass('kpb-tab-title-active')
    523             root.find('.kpb-tab-content').slideUp 500
    524 
    525             parent.addClass('kpb-tab-title-active')
     525        if !parent.hasClass( 'kpb-tab-title-active')
     526            root.find( '.kpb-tab-title-active').removeClass( 'kpb-tab-title-active')
     527            root.find( '.kpb-tab-content').slideUp 500
     528
     529            parent.addClass( 'kpb-tab-title-active')
    526530            jQuery(obj.attr 'href').slideDown 500
    527531
  • kopa-page-builder/trunk/js/script.js

    r1323889 r1428045  
    6565    event.preventDefault();
    6666    lightbox = '#kpb-layout-customize-lightbox-' + jQuery('#kpb-select-layout option:selected').val();
     67    if (jQuery(lightbox).length) {
     68      jQuery.magnificPopup.open({
     69        callbacks: {
     70          open: function() {
     71            jQuery(lightbox).show();
     72          },
     73          close: function() {
     74            jQuery(lightbox).hide();
     75          }
     76        },
     77        modal: true,
     78        preloader: true,
     79        alignTop: true,
     80        items: {
     81          src: lightbox,
     82          type: 'inline'
     83        }
     84      });
     85    }
     86  },
     87  save_layout_customize: function(event, obj, post_id) {
     88    event.preventDefault();
     89    Kopa_Page_Builder.show_overlay_loading();
     90    obj.ajaxSubmit({
     91      beforeSubmit: function(arr, $form, options) {},
     92      success: function(responseText, statusText, xhr, $form) {
     93        Kopa_Page_Builder.hide_overlay_loading();
     94        jQuery('#kpb-button-save-layouts').click();
     95      },
     96      data: {
     97        post_id: post_id
     98      }
     99    });
     100  },
     101  close_layout_customize: function(event) {
     102    event.preventDefault();
     103    Kopa_Page_Builder.close_widget(event);
     104  },
     105  open_customize: function(event, obj, layout, section) {
     106    var lightbox;
     107    event.preventDefault();
     108    lightbox = '#kpb-customize-lightbox-' + layout + '-' + section;
    67109    jQuery.magnificPopup.open({
    68110      callbacks: {
     
    83125    });
    84126  },
    85   save_layout_customize: function(event, obj, post_id) {
     127  save_customize: function(event, obj, post_id) {
    86128    event.preventDefault();
    87129    Kopa_Page_Builder.show_overlay_loading();
     
    90132      success: function(responseText, statusText, xhr, $form) {
    91133        Kopa_Page_Builder.hide_overlay_loading();
     134        jQuery('#kpb-button-save-layouts').click();
    92135      },
    93136      data: {
     
    96139    });
    97140  },
    98   close_layout_customize: function(event) {
    99     event.preventDefault();
    100     Kopa_Page_Builder.close_widget(event);
    101   },
    102   open_customize: function(event, obj, layout, section) {
    103     var lightbox;
    104     event.preventDefault();
    105     lightbox = '#kpb-customize-lightbox-' + layout + '-' + section;
    106     jQuery.magnificPopup.open({
    107       callbacks: {
    108         open: function() {
    109           jQuery(lightbox).show();
    110         },
    111         close: function() {
    112           jQuery(lightbox).hide();
    113         }
    114       },
    115       modal: true,
    116       preloader: true,
    117       alignTop: true,
    118       items: {
    119         src: lightbox,
    120         type: 'inline'
    121       }
    122     });
    123   },
    124   save_customize: function(event, obj, post_id) {
    125     event.preventDefault();
    126     Kopa_Page_Builder.show_overlay_loading();
    127     obj.ajaxSubmit({
    128       beforeSubmit: function(arr, $form, options) {},
    129       success: function(responseText, statusText, xhr, $form) {
    130         Kopa_Page_Builder.hide_overlay_loading();
    131       },
    132       data: {
    133         post_id: post_id
    134       }
    135     });
    136   },
    137141  close_customize: function(event) {
    138142    event.preventDefault();
     
    142146    var lightbox;
    143147    event.preventDefault();
    144     kpb_current_sidebar = obj.parents('.kpb-area');
     148    kpb_current_sidebar = obj.parents('.kpb-area' );
    145149    lightbox = '#kpb-widgets-lightbox';
    146150    jQuery.magnificPopup.open({
     
    178182          jQuery('#kpb-widget input[name=kpb-widget-class-name]').val(class_name);
    179183          jQuery('#kpb-widget input[name=kpb-widget-name]').val(widget_name);
    180           jQuery('#kpb-widget input[name=kpb-widget-action]').val('add');
    181           jQuery('#kpb-widget input[name=kpb-widget-id]').val(Kopa_Page_Builder.get_random_id('widget-'));
     184          jQuery('#kpb-widget input[name=kpb-widget-action]').val('add' );
     185          jQuery('#kpb-widget input[name=kpb-widget-id]').val(Kopa_Page_Builder.get_random_id('widget-' ) );
    182186          jQuery.ajax({
    183187            success: function(data, textStatus, jqXHR) {
     
    213217    var lightbox;
    214218    event.preventDefault();
    215     kpb_current_widget = obj.parents('.kpb-widget');
     219    kpb_current_widget = obj.parents('.kpb-widget' );
    216220    lightbox = '#kpb-widget-lightbox';
    217221    jQuery.magnificPopup.open({
     
    220224          jQuery(lightbox).show();
    221225          jQuery('#kpb-widget-title').text(kpb_current_widget.find('label').text());
    222           jQuery('#kpb-widget input[name=kpb-widget-class-name]').val(kpb_current_widget.attr('data-class'));
    223           jQuery('#kpb-widget input[name=kpb-widget-name]').val(kpb_current_widget.attr('data-name'));
    224           jQuery('#kpb-widget input[name=kpb-widget-action]').val('edit');
     226          jQuery('#kpb-widget input[name=kpb-widget-class-name]').val(kpb_current_widget.attr('data-class' ) );
     227          jQuery('#kpb-widget input[name=kpb-widget-name]').val(kpb_current_widget.attr('data-name' ) );
     228          jQuery('#kpb-widget input[name=kpb-widget-action]').val('edit' );
    225229          jQuery('#kpb-widget input[name=kpb-widget-id]').val(widget_id);
    226230          jQuery.ajax({
     
    238242              security: jQuery('#kpb_get_widget_form_security').val(),
    239243              widget_id: widget_id,
    240               class_name: kpb_current_widget.attr('data-class'),
     244              class_name: kpb_current_widget.attr('data-class' ),
    241245              post_id: jQuery('#post_ID').val()
    242246            }
     
    275279          action: 'kpb_delete_widget',
    276280          security: jQuery('#kpb_delete_widget_security').val(),
    277           widget_id: widget_id
     281          widget_id: widget_id,
     282          post_id: jQuery('#post_ID').val()
    278283        }
    279284      });
     
    289294          if ('add' === jQuery('#kpb-widget input[name=kpb-widget-action]').val()) {
    290295            kpb_current_sidebar.find('.kpb-area-placeholder').append(responseText);
    291             jQuery('#kpb-widget input[name=kpb-widget-action]').val('edit');
     296            jQuery('#kpb-widget input[name=kpb-widget-action]').val('edit' );
    292297          } else {
    293298            if (kpb_current_widget) {
     
    303308    event.preventDefault();
    304309    jQuery.magnificPopup.close();
    305     jQuery('#kpb-widget .kpb-form-inner').html('<center class="kpb-loading">' + KPB.i18n.loading + '</center>');
     310    jQuery('#kpb-widget .kpb-form-inner').html('<center class="kpb-loading">' + KPB.i18n.loading + '</center>' );
    306311    Kopa_Page_Builder.hide_overlay_loading();
    307     jQuery('#kpb-widget-title').text('');
    308     jQuery('#kpb-widget input[name=kpb-widget-class-name]').val('');
    309     jQuery('#kpb-widget input[name=kpb-widget-action]').val('add');
    310     jQuery('#kpb-widget input[name=kpb-widget-id]').val('');
    311     jQuery('#kpb-widget input[name=kpb-widget-name]').val('');
     312    jQuery('#kpb-widget-title').text('' );
     313    jQuery('#kpb-widget input[name=kpb-widget-class-name]').val('' );
     314    jQuery('#kpb-widget input[name=kpb-widget-action]').val('add' );
     315    jQuery('#kpb-widget input[name=kpb-widget-id]').val('' );
     316    jQuery('#kpb-widget input[name=kpb-widget-name]').val('' );
    312317  },
    313318  save_layout: function(event, obj) {
     
    320325      layouts: []
    321326    };
    322     layouts = jQuery('.kpb-layout');
     327    layouts = jQuery('.kpb-layout' );
    323328    if (layouts.length > 0) {
    324329      layouts.each(function(l_index, l_element) {
     
    326331        current_layout = jQuery(l_element);
    327332        layout_data = {
    328           name: current_layout.attr('data-layout'),
     333          name: current_layout.attr('data-layout' ),
    329334          sections: []
    330335        };
    331         sections = current_layout.find('.kpb-section');
     336        sections = current_layout.find('.kpb-section' );
    332337        if (sections.length > 0) {
    333338          sections.each(function(s_index, s_element) {
     
    335340            current_section = jQuery(s_element);
    336341            section_data = {
    337               name: current_section.attr('data-section'),
     342              name: current_section.attr('data-section' ),
    338343              areas: []
    339344            };
    340             areas = current_section.find('.kpb-area');
     345            areas = current_section.find('.kpb-area' );
    341346            if (areas.length > 0) {
    342347              areas.each(function(a_index, a_element) {
     
    344349                current_area = jQuery(a_element);
    345350                area_data = {
    346                   name: current_area.attr('data-area'),
     351                  name: current_area.attr('data-area' ),
    347352                  widgets: []
    348353                };
    349                 widgets = current_area.find('.kpb-widget');
     354                widgets = current_area.find('.kpb-widget' );
    350355                if (widgets.length > 0) {
    351356                  widgets.each(function(w_index, w_element) {
     
    353358                    current_widget = jQuery(w_element);
    354359                    widget_data = {
    355                       id: current_widget.attr('id'),
    356                       name: current_widget.attr('data-name'),
     360                      id: current_widget.attr('id' ),
     361                      name: current_widget.attr('data-name' ),
    357362                      class_name: current_widget.attr('data-class')
    358363                    };
     
    407412    event.preventDefault();
    408413    if (obj.attr('data-status') === '0') {
    409       jQuery('.kpb-layout > .kpb-col-left').removeClass('kpb-col-12').addClass('kpb-col-8');
     414      jQuery('.kpb-layout > .kpb-col-left').removeClass('kpb-col-12').addClass('kpb-col-8' );
    410415      jQuery('.kpb-layout > .kpb-col-right').show();
    411       obj.attr('data-status', '1');
     416      obj.attr('data-status', '1' );
    412417      obj.text(KPB.i18n.hide_preview);
    413418    } else {
    414       jQuery('.kpb-layout > .kpb-col-left').removeClass('kpb-col-8').addClass('kpb-col-12');
     419      jQuery('.kpb-layout > .kpb-col-left').removeClass('kpb-col-8').addClass('kpb-col-12' );
    415420      jQuery('.kpb-layout > .kpb-col-right').hide();
    416       obj.attr('data-status', '0');
     421      obj.attr('data-status', '0' );
    417422      obj.text(KPB.i18n.show_preview);
    418423    }
     
    427432    new_layout_id = '#kpb-layout-' + new_layout;
    428433    if (!jQuery(new_layout_id).hasClass('kpb-active')) {
    429       jQuery('.kpb-layout.kpb-active').removeClass('kpb-active').addClass('kpb-hidden');
    430       jQuery(new_layout_id).removeClass('kpb-hidden').addClass('kpb-active');
     434      jQuery('.kpb-layout.kpb-active').removeClass('kpb-active').addClass('kpb-hidden' );
     435      jQuery(new_layout_id).removeClass('kpb-hidden').addClass('kpb-active' );
    431436    }
    432437  },
     
    471476      kpb_media_button_reset = jQuery(this);
    472477      if (kpb_media_button_reset.attr('data-reset')) {
    473         kpb_media_button_reset.parents('.kpb-ui-image-outer').find('.kpb-ui-image').val(kpb_media_button_reset.attr('data-reset'));
    474         kpb_media_button_reset.parents('.kpb-ui-image-outer').find('.kpb-ui-image-preview').attr('src', kpb_media_button_reset.attr('data-reset'));
     478        kpb_media_button_reset.parents('.kpb-ui-image-outer').find('.kpb-ui-image').val(kpb_media_button_reset.attr('data-reset' ) );
     479        kpb_media_button_reset.parents('.kpb-ui-image-outer').find('.kpb-ui-image-preview').attr('src', kpb_media_button_reset.attr('data-reset' ) );
    475480      } else {
    476         kpb_media_button_reset.parents('.kpb-ui-image-outer').find('.kpb-ui-image').val(kpb_media_button_reset.attr(''));
    477         kpb_media_button_reset.parents('.kpb-ui-image-outer').find('.kpb-ui-image-preview').attr('src', kpb_media_button_reset.attr('data-preview'));
     481        kpb_media_button_reset.parents('.kpb-ui-image-outer').find('.kpb-ui-image').val(kpb_media_button_reset.attr('' ) );
     482        kpb_media_button_reset.parents('.kpb-ui-image-outer').find('.kpb-ui-image-preview').attr('src', kpb_media_button_reset.attr('data-preview' ) );
    478483      }
    479484    });
     
    481486  init_section_tab: function() {
    482487    var tabs;
    483     tabs = jQuery('.kpb-tab-title > a');
     488    tabs = jQuery('.kpb-tab-title > a' );
    484489    if (tabs.length > 0) {
    485490      tabs.each(function(index, element) {
     
    489494          var parent, root;
    490495          event.preventDefault();
    491           root = tab.parents('.kpb-wrapper-configuration-toggle');
     496          root = tab.parents('.kpb-wrapper-configuration-toggle' );
    492497          parent = tab.parent();
    493498          if (!parent.hasClass('kpb-tab-title-active')) {
    494             root.find('.kpb-tab-title-active').removeClass('kpb-tab-title-active');
     499            root.find('.kpb-tab-title-active').removeClass('kpb-tab-title-active' );
    495500            root.find('.kpb-tab-content').slideUp(500);
    496             parent.addClass('kpb-tab-title-active');
     501            parent.addClass('kpb-tab-title-active' );
    497502            jQuery(tab.attr('href')).slideDown(500);
    498503          }
     
    504509    var parent, root;
    505510    event.preventDefault();
    506     root = obj.parents('.kpb-wrapper-configuration-toggle');
     511    root = obj.parents('.kpb-wrapper-configuration-toggle' );
    507512    parent = obj.parent();
    508513    if (!parent.hasClass('kpb-tab-title-active')) {
    509       root.find('.kpb-tab-title-active').removeClass('kpb-tab-title-active');
     514      root.find('.kpb-tab-title-active').removeClass('kpb-tab-title-active' );
    510515      root.find('.kpb-tab-content').slideUp(500);
    511       parent.addClass('kpb-tab-title-active');
     516      parent.addClass('kpb-tab-title-active' );
    512517      jQuery(obj.attr('href')).slideDown(500);
    513518    }
  • kopa-page-builder/trunk/js/script.min.js

    r1323889 r1428045  
    1 var Kopa_Page_Builder,kpb_current_sidebar,kpb_current_widget,kpb_media,kpb_media_button_reset,kpb_media_button_upload;jQuery(document).ready(function(){Kopa_Page_Builder.load_lightbox_html()}),jQuery(window).load(function(){}),kpb_current_widget={},kpb_current_sidebar={},kpb_media=!1,kpb_media_button_upload={},kpb_media_button_reset={},Kopa_Page_Builder={init_effect:function(){Kopa_Page_Builder.init_sortable(),Kopa_Page_Builder.init_section_tab(),Kopa_Page_Builder.sticky_header(),Kopa_Page_Builder.open_media_center(),jQuery(".kpb-ui-color").wpColorPicker()},load_lightbox_html:function(){jQuery.ajax({beforeSend:function(){},success:function(e){jQuery("body").append(e),jQuery("#kpb-metabox-loading-text").remove(),jQuery("#kpb-wrapper").show(),Kopa_Page_Builder.init_effect()},url:KPB.ajax,dataType:"html",type:"POST",async:!0,data:{action:"kpb_load_lightbox_html",security:jQuery("#kpb_load_lightbox_html_security").val(),post_id:jQuery("#post_ID").val()}})},main_form_submit:function(){jQuery("form#post").length>0&&jQuery("form#post").on("submit",function(){return jQuery("#kpb-button-save-layouts").click()})},sticky_header:function(){"1"===KPB.is_sticky_toolbar&&jQuery("#kpb-wrapper-header").waypoint("sticky",{direction:"down",stuckClass:"kpb-stuck",wrapper:'<div class="kpb-wrapper-header-sticky" />'})},open_customize_layout:function(e){var t;e.preventDefault(),t="#kpb-layout-customize-lightbox-"+jQuery("#kpb-select-layout option:selected").val(),jQuery.magnificPopup.open({callbacks:{open:function(){jQuery(t).show()},close:function(){jQuery(t).hide()}},modal:!0,preloader:!0,alignTop:!0,items:{src:t,type:"inline"}})},save_layout_customize:function(e,t,a){e.preventDefault(),Kopa_Page_Builder.show_overlay_loading(),t.ajaxSubmit({beforeSubmit:function(){},success:function(){Kopa_Page_Builder.hide_overlay_loading()},data:{post_id:a}})},close_layout_customize:function(e){e.preventDefault(),Kopa_Page_Builder.close_widget(e)},open_customize:function(e,t,a,i){var n;e.preventDefault(),n="#kpb-customize-lightbox-"+a+"-"+i,jQuery.magnificPopup.open({callbacks:{open:function(){jQuery(n).show()},close:function(){jQuery(n).hide()}},modal:!0,preloader:!0,alignTop:!0,items:{src:n,type:"inline"}})},save_customize:function(e,t,a){e.preventDefault(),Kopa_Page_Builder.show_overlay_loading(),t.ajaxSubmit({beforeSubmit:function(){},success:function(){Kopa_Page_Builder.hide_overlay_loading()},data:{post_id:a}})},close_customize:function(e){e.preventDefault(),Kopa_Page_Builder.close_widget(e)},open_list_widgets:function(e,t){var a;e.preventDefault(),kpb_current_sidebar=t.parents(".kpb-area"),a="#kpb-widgets-lightbox",jQuery.magnificPopup.open({callbacks:{open:function(){jQuery(a).show()},close:function(){jQuery(a).hide()}},modal:!0,preloader:!0,alignTop:!0,items:{src:a,type:"inline"}})},close_list_widgets:function(e){e.preventDefault(),jQuery.magnificPopup.close()},add_widget:function(e,t,a,i){var n;e.preventDefault(),Kopa_Page_Builder.close_list_widgets(e),n="#kpb-widget-lightbox",jQuery.magnificPopup.open({callbacks:{open:function(){jQuery(n).show(),jQuery("#kpb-widget-title").text(i),jQuery("#kpb-widget input[name=kpb-widget-class-name]").val(a),jQuery("#kpb-widget input[name=kpb-widget-name]").val(i),jQuery("#kpb-widget input[name=kpb-widget-action]").val("add"),jQuery("#kpb-widget input[name=kpb-widget-id]").val(Kopa_Page_Builder.get_random_id("widget-")),jQuery.ajax({success:function(e){jQuery("#kpb-widget .kpb-form-inner").html(e),Kopa_Page_Builder.open_media_center(),jQuery(".kpb-ui-color").wpColorPicker()},url:KPB.ajax,dataType:"html",type:"POST",async:!0,data:{action:"kpb_get_widget_form",security:jQuery("#kpb_get_widget_form_security").val(),class_name:a}})},close:function(){Kopa_Page_Builder.close_widget(e)}},modal:!0,preloader:!0,alignTop:!0,items:{src:n,type:"inline"}})},edit_widget:function(e,t,a){var i;e.preventDefault(),kpb_current_widget=t.parents(".kpb-widget"),i="#kpb-widget-lightbox",jQuery.magnificPopup.open({callbacks:{open:function(){jQuery(i).show(),jQuery("#kpb-widget-title").text(kpb_current_widget.find("label").text()),jQuery("#kpb-widget input[name=kpb-widget-class-name]").val(kpb_current_widget.attr("data-class")),jQuery("#kpb-widget input[name=kpb-widget-name]").val(kpb_current_widget.attr("data-name")),jQuery("#kpb-widget input[name=kpb-widget-action]").val("edit"),jQuery("#kpb-widget input[name=kpb-widget-id]").val(a),jQuery.ajax({success:function(e){jQuery("#kpb-widget .kpb-form-inner").html(e),Kopa_Page_Builder.open_media_center(),jQuery(".kpb-ui-color").wpColorPicker()},url:KPB.ajax,dataType:"html",type:"POST",async:!0,data:{action:"kpb_get_widget_form",security:jQuery("#kpb_get_widget_form_security").val(),widget_id:a,class_name:kpb_current_widget.attr("data-class"),post_id:jQuery("#post_ID").val()}})},close:function(){Kopa_Page_Builder.close_widget(e)}},modal:!0,preloader:!0,alignTop:!0,items:{src:i,type:"inline"},fixedBgPos:!0})},delete_widget:function(e,t,a){var i;e.preventDefault(),i=confirm(KPB.i18n.are_you_sure_to_remove_this_widget),i&&jQuery.ajax({beforeSend:function(){},success:function(){t.parents(".kpb-widget").remove(),jQuery("#kpb-button-save-layouts").click()},url:KPB.ajax,dataType:"html",type:"POST",async:!0,data:{action:"kpb_delete_widget",security:jQuery("#kpb_delete_widget_security").val(),widget_id:a}})},save_widget:function(e,t){e.preventDefault(),Kopa_Page_Builder.show_overlay_loading(),t.ajaxSubmit({beforeSubmit:function(){},success:function(e){e&&("add"===jQuery("#kpb-widget input[name=kpb-widget-action]").val()?(kpb_current_sidebar.find(".kpb-area-placeholder").append(e),jQuery("#kpb-widget input[name=kpb-widget-action]").val("edit")):kpb_current_widget&&kpb_current_widget.find("label").text(e)),jQuery("#kpb-button-save-layouts").click()}})},close_widget:function(e){e.preventDefault(),jQuery.magnificPopup.close(),jQuery("#kpb-widget .kpb-form-inner").html('<center class="kpb-loading">'+KPB.i18n.loading+"</center>"),Kopa_Page_Builder.hide_overlay_loading(),jQuery("#kpb-widget-title").text(""),jQuery("#kpb-widget input[name=kpb-widget-class-name]").val(""),jQuery("#kpb-widget input[name=kpb-widget-action]").val("add"),jQuery("#kpb-widget input[name=kpb-widget-id]").val(""),jQuery("#kpb-widget input[name=kpb-widget-name]").val("")},save_layout:function(e,t){var a,i,n;e.preventDefault(),a=jQuery("#kpb-select-layout").find("option:selected").val(),Kopa_Page_Builder.show_overlay_loading(),i={current_layout:jQuery("#kpb-select-layout").find("option:selected").val(),layouts:[]},n=jQuery(".kpb-layout"),n.length>0&&n.each(function(e,t){var n,r;a=jQuery(t),n={name:a.attr("data-layout"),sections:[]},r=a.find(".kpb-section"),r.length>0&&r.each(function(e,t){var a,i,r;i=jQuery(t),r={name:i.attr("data-section"),areas:[]},a=i.find(".kpb-area"),a.length>0&&a.each(function(e,t){var a,i,n;i=jQuery(t),a={name:i.attr("data-area"),widgets:[]},n=i.find(".kpb-widget"),n.length>0&&n.each(function(e,t){var i,n;i=jQuery(t),n={id:i.attr("id"),name:i.attr("data-name"),class_name:i.attr("data-class")},a.widgets.push(n)}),r.areas.push(a)}),n.sections.push(r)}),i.layouts.push(n)}),jQuery.ajax({error:function(e,t){console.log(t)},beforeSend:function(){t.text(KPB.i18n.saving)},success:function(){t.text(KPB.i18n.save),Kopa_Page_Builder.hide_overlay_loading()},url:KPB.ajax,dataType:"html",type:"POST",async:!0,data:{action:"kpb_save_grid",security:jQuery("#kpb_save_grid_security").val(),data:i,post_id:jQuery("#post_ID").val()}})},show_overlay_loading:function(){jQuery("#kpb-loading-overlay").stop().animate({display:"block",right:"0px"},500)},hide_overlay_loading:function(){jQuery("#kpb-loading-overlay").animate({display:"none",right:"-150px"},500)},hide_preview:function(e,t){e.preventDefault(),"0"===t.attr("data-status")?(jQuery(".kpb-layout > .kpb-col-left").removeClass("kpb-col-12").addClass("kpb-col-8"),jQuery(".kpb-layout > .kpb-col-right").show(),t.attr("data-status","1"),t.text(KPB.i18n.hide_preview)):(jQuery(".kpb-layout > .kpb-col-left").removeClass("kpb-col-8").addClass("kpb-col-12"),jQuery(".kpb-layout > .kpb-col-right").hide(),t.attr("data-status","0"),t.text(KPB.i18n.show_preview))},get_random_id:function(e){return e+Math.random().toString(36).substr(2)},change_layout:function(e,t){var a,i;e.preventDefault(),a=t.find("option:selected").val(),i="#kpb-layout-"+a,jQuery(i).hasClass("kpb-active")||(jQuery(".kpb-layout.kpb-active").removeClass("kpb-active").addClass("kpb-hidden"),jQuery(i).removeClass("kpb-hidden").addClass("kpb-active"))},init_sortable:function(){jQuery(".kpb-area-placeholder").sortable({forcePlaceholderSize:!0,connectWith:".kpb-area-placeholder",placeholder:"kpb-widget-sortable-placeholder",start:function(e,t){return t.placeholder.height(t.helper.outerHeight()-2)}}).disableSelection()},open_media_center:function(){jQuery(".kpb-ui-image-outer").on("click",".kpb-ui-image-button-upload",function(e){return e.preventDefault(),kpb_media_button_upload=jQuery(this),kpb_media?(kpb_media.open(),void 0):(kpb_media=wp.media.frames.kpb_media=wp.media({title:KPB.i18n.media_center,button:{text:KPB.i18n.choose_image},library:{type:"image"},multiple:!1}),kpb_media.on("select",function(){var e;e=kpb_media.state().get("selection").first().toJSON(),kpb_media_button_upload.parents(".kpb-ui-image-outer").find(".kpb-ui-image").val(e.url),kpb_media_button_upload.parents(".kpb-ui-image-outer").find(".kpb-ui-image-preview").attr("src",e.url)}),kpb_media.open(),void 0)}),jQuery(".kpb-ui-image-outer").on("click",".kpb-ui-image-button-reset",function(e){e.preventDefault(),kpb_media_button_reset=jQuery(this),kpb_media_button_reset.attr("data-reset")?(kpb_media_button_reset.parents(".kpb-ui-image-outer").find(".kpb-ui-image").val(kpb_media_button_reset.attr("data-reset")),kpb_media_button_reset.parents(".kpb-ui-image-outer").find(".kpb-ui-image-preview").attr("src",kpb_media_button_reset.attr("data-reset"))):(kpb_media_button_reset.parents(".kpb-ui-image-outer").find(".kpb-ui-image").val(kpb_media_button_reset.attr("")),kpb_media_button_reset.parents(".kpb-ui-image-outer").find(".kpb-ui-image-preview").attr("src",kpb_media_button_reset.attr("data-preview")))})},init_section_tab:function(){var e;e=jQuery(".kpb-tab-title > a"),e.length>0&&e.each(function(){var e;e=jQuery(this),e.click(function(t){var a,i;t.preventDefault(),i=e.parents(".kpb-wrapper-configuration-toggle"),a=e.parent(),a.hasClass("kpb-tab-title-active")||(i.find(".kpb-tab-title-active").removeClass("kpb-tab-title-active"),i.find(".kpb-tab-content").slideUp(500),a.addClass("kpb-tab-title-active"),jQuery(e.attr("href")).slideDown(500))})})},change_customize_tab:function(e,t){var a,i;e.preventDefault(),i=t.parents(".kpb-wrapper-configuration-toggle"),a=t.parent(),a.hasClass("kpb-tab-title-active")||(i.find(".kpb-tab-title-active").removeClass("kpb-tab-title-active"),i.find(".kpb-tab-content").slideUp(500),a.addClass("kpb-tab-title-active"),jQuery(t.attr("href")).slideDown(500))}};
     1var Kopa_Page_Builder,kpb_current_sidebar,kpb_current_widget,kpb_media,kpb_media_button_reset,kpb_media_button_upload;jQuery(document).ready(function() {Kopa_Page_Builder.load_lightbox_html()}),jQuery(window).load(function() {}),kpb_current_widget={},kpb_current_sidebar={},kpb_media=!1,kpb_media_button_upload={},kpb_media_button_reset={},Kopa_Page_Builder={init_effect:function() {Kopa_Page_Builder.init_sortable(),Kopa_Page_Builder.init_section_tab(),Kopa_Page_Builder.sticky_header(),Kopa_Page_Builder.open_media_center(),jQuery(".kpb-ui-color").wpColorPicker()},load_lightbox_html:function() {jQuery.ajax({beforeSend:function() {},success:function(e){jQuery("body").append(e),jQuery("#kpb-metabox-loading-text").remove(),jQuery("#kpb-wrapper").show(),Kopa_Page_Builder.init_effect()},url:KPB.ajax,dataType:"html",type:"POST",async:!0,data:{action:"kpb_load_lightbox_html",security:jQuery("#kpb_load_lightbox_html_security").val(),post_id:jQuery("#post_ID").val()}})},main_form_submit:function() {jQuery("form#post").length>0&&jQuery("form#post").on("submit",function() {return jQuery("#kpb-button-save-layouts").click()})},sticky_header:function() {"1"===KPB.is_sticky_toolbar&&jQuery("#kpb-wrapper-header").waypoint("sticky",{direction:"down",stuckClass:"kpb-stuck",wrapper:'<div class="kpb-wrapper-header-sticky" />'})},open_customize_layout:function(e){var t;e.preventDefault(),t="#kpb-layout-customize-lightbox-"+jQuery("#kpb-select-layout option:selected").val(),jQuery.magnificPopup.open({callbacks:{open:function() {jQuery(t).show()},close:function() {jQuery(t).hide()}},modal:!0,preloader:!0,alignTop:!0,items:{src:t,type:"inline"}})},save_layout_customize:function(e,t,a){e.preventDefault(),Kopa_Page_Builder.show_overlay_loading(),t.ajaxSubmit({beforeSubmit:function() {},success:function() {Kopa_Page_Builder.hide_overlay_loading(),jQuery("#kpb-button-save-layouts").click()},data:{post_id:a}})},close_layout_customize:function(e){e.preventDefault(),Kopa_Page_Builder.close_widget(e)},open_customize:function(e,t,a,i){var n;e.preventDefault(),n="#kpb-customize-lightbox-"+a+"-"+i,jQuery.magnificPopup.open({callbacks:{open:function() {jQuery(n).show()},close:function() {jQuery(n).hide()}},modal:!0,preloader:!0,alignTop:!0,items:{src:n,type:"inline"}})},save_customize:function(e,t,a){e.preventDefault(),Kopa_Page_Builder.show_overlay_loading(),t.ajaxSubmit({beforeSubmit:function() {},success:function() {Kopa_Page_Builder.hide_overlay_loading(),jQuery("#kpb-button-save-layouts").click()},data:{post_id:a}})},close_customize:function(e){e.preventDefault(),Kopa_Page_Builder.close_widget(e)},open_list_widgets:function(e,t){var a;e.preventDefault(),kpb_current_sidebar=t.parents(".kpb-area"),a="#kpb-widgets-lightbox",jQuery.magnificPopup.open({callbacks:{open:function() {jQuery(a).show()},close:function() {jQuery(a).hide()}},modal:!0,preloader:!0,alignTop:!0,items:{src:a,type:"inline"}})},close_list_widgets:function(e){e.preventDefault(),jQuery.magnificPopup.close()},add_widget:function(e,t,a,i){var n;e.preventDefault(),Kopa_Page_Builder.close_list_widgets(e),n="#kpb-widget-lightbox",jQuery.magnificPopup.open({callbacks:{open:function() {jQuery(n).show(),jQuery("#kpb-widget-title").text(i),jQuery("#kpb-widget input[name=kpb-widget-class-name]").val(a),jQuery("#kpb-widget input[name=kpb-widget-name]").val(i),jQuery("#kpb-widget input[name=kpb-widget-action]").val("add"),jQuery("#kpb-widget input[name=kpb-widget-id]").val(Kopa_Page_Builder.get_random_id("widget-")),jQuery.ajax({success:function(e){jQuery("#kpb-widget .kpb-form-inner").html(e),Kopa_Page_Builder.open_media_center(),jQuery(".kpb-ui-color").wpColorPicker()},url:KPB.ajax,dataType:"html",type:"POST",async:!0,data:{action:"kpb_get_widget_form",security:jQuery("#kpb_get_widget_form_security").val(),class_name:a}})},close:function() {Kopa_Page_Builder.close_widget(e)}},modal:!0,preloader:!0,alignTop:!0,items:{src:n,type:"inline"}})},edit_widget:function(e,t,a){var i;e.preventDefault(),kpb_current_widget=t.parents(".kpb-widget"),i="#kpb-widget-lightbox",jQuery.magnificPopup.open({callbacks:{open:function() {jQuery(i).show(),jQuery("#kpb-widget-title").text(kpb_current_widget.find("label").text()),jQuery("#kpb-widget input[name=kpb-widget-class-name]").val(kpb_current_widget.attr("data-class")),jQuery("#kpb-widget input[name=kpb-widget-name]").val(kpb_current_widget.attr("data-name")),jQuery("#kpb-widget input[name=kpb-widget-action]").val("edit"),jQuery("#kpb-widget input[name=kpb-widget-id]").val(a),jQuery.ajax({success:function(e){jQuery("#kpb-widget .kpb-form-inner").html(e),Kopa_Page_Builder.open_media_center(),jQuery(".kpb-ui-color").wpColorPicker()},url:KPB.ajax,dataType:"html",type:"POST",async:!0,data:{action:"kpb_get_widget_form",security:jQuery("#kpb_get_widget_form_security").val(),widget_id:a,class_name:kpb_current_widget.attr("data-class"),post_id:jQuery("#post_ID").val()}})},close:function() {Kopa_Page_Builder.close_widget(e)}},modal:!0,preloader:!0,alignTop:!0,items:{src:i,type:"inline"},fixedBgPos:!0})},delete_widget:function(e,t,a){var i;e.preventDefault(),i=confirm(KPB.i18n.are_you_sure_to_remove_this_widget),i&&jQuery.ajax({beforeSend:function() {},success:function() {t.parents(".kpb-widget").remove(),jQuery("#kpb-button-save-layouts").click()},url:KPB.ajax,dataType:"html",type:"POST",async:!0,data:{action:"kpb_delete_widget",security:jQuery("#kpb_delete_widget_security").val(),widget_id:a}})},save_widget:function(e,t){e.preventDefault(),Kopa_Page_Builder.show_overlay_loading(),t.ajaxSubmit({beforeSubmit:function() {},success:function(e){e&&("add"===jQuery("#kpb-widget input[name=kpb-widget-action]").val()?(kpb_current_sidebar.find(".kpb-area-placeholder").append(e),jQuery("#kpb-widget input[name=kpb-widget-action]").val("edit")):kpb_current_widget&&kpb_current_widget.find("label").text(e)),jQuery("#kpb-button-save-layouts").click()}})},close_widget:function(e){e.preventDefault(),jQuery.magnificPopup.close(),jQuery("#kpb-widget .kpb-form-inner").html( '<center class="kpb-loading">'+KPB.i18n.loading+"</center>"),Kopa_Page_Builder.hide_overlay_loading(),jQuery("#kpb-widget-title").text(""),jQuery("#kpb-widget input[name=kpb-widget-class-name]").val(""),jQuery("#kpb-widget input[name=kpb-widget-action]").val("add"),jQuery("#kpb-widget input[name=kpb-widget-id]").val(""),jQuery("#kpb-widget input[name=kpb-widget-name]").val("")},save_layout:function(e,t){var a,i,n;e.preventDefault(),a=jQuery("#kpb-select-layout").find("option:selected").val(),Kopa_Page_Builder.show_overlay_loading(),i={current_layout:jQuery("#kpb-select-layout").find("option:selected").val(),layouts:[]},n=jQuery(".kpb-layout"),n.length>0&&n.each(function(e,t){var n,r;a=jQuery(t),n={name:a.attr("data-layout"),sections:[]},r=a.find(".kpb-section"),r.length>0&&r.each(function(e,t){var a,i,r;i=jQuery(t),r={name:i.attr("data-section"),areas:[]},a=i.find(".kpb-area"),a.length>0&&a.each(function(e,t){var a,i,n;i=jQuery(t),a={name:i.attr("data-area"),widgets:[]},n=i.find(".kpb-widget"),n.length>0&&n.each(function(e,t){var i,n;i=jQuery(t),n={id:i.attr("id"),name:i.attr("data-name"),class_name:i.attr("data-class")},a.widgets.push(n)}),r.areas.push(a)}),n.sections.push(r)}),i.layouts.push(n)}),jQuery.ajax({error:function(e,t){console.log(t)},beforeSend:function() {t.text(KPB.i18n.saving)},success:function() {t.text(KPB.i18n.save),Kopa_Page_Builder.hide_overlay_loading()},url:KPB.ajax,dataType:"html",type:"POST",async:!0,data:{action:"kpb_save_grid",security:jQuery("#kpb_save_grid_security").val(),data:i,post_id:jQuery("#post_ID").val()}})},show_overlay_loading:function() {jQuery("#kpb-loading-overlay").stop().animate({display:"block",right:"0px"},500)},hide_overlay_loading:function() {jQuery("#kpb-loading-overlay").animate({display:"none",right:"-150px"},500)},hide_preview:function(e,t){e.preventDefault(),"0"===t.attr("data-status")?(jQuery(".kpb-layout > .kpb-col-left").removeClass("kpb-col-12").addClass("kpb-col-8"),jQuery(".kpb-layout > .kpb-col-right").show(),t.attr("data-status","1"),t.text(KPB.i18n.hide_preview)):(jQuery(".kpb-layout > .kpb-col-left").removeClass("kpb-col-8").addClass("kpb-col-12"),jQuery(".kpb-layout > .kpb-col-right").hide(),t.attr("data-status","0"),t.text(KPB.i18n.show_preview))},get_random_id:function(e){return e+Math.random().toString(36).substr(2)},change_layout:function(e,t){var a,i;e.preventDefault(),a=t.find("option:selected").val(),i="#kpb-layout-"+a,jQuery(i).hasClass("kpb-active")||(jQuery(".kpb-layout.kpb-active").removeClass("kpb-active").addClass("kpb-hidden"),jQuery(i).removeClass("kpb-hidden").addClass("kpb-active"))},init_sortable:function() {jQuery(".kpb-area-placeholder").sortable({forcePlaceholderSize:!0,connectWith:".kpb-area-placeholder",placeholder:"kpb-widget-sortable-placeholder",start:function(e,t){return t.placeholder.height(t.helper.outerHeight()-2)}}).disableSelection()},open_media_center:function() {jQuery(".kpb-ui-image-outer").on("click",".kpb-ui-image-button-upload",function(e){return e.preventDefault(),kpb_media_button_upload=jQuery(this),kpb_media?(kpb_media.open(),void 0):(kpb_media=wp.media.frames.kpb_media=wp.media({title:KPB.i18n.media_center,button:{text:KPB.i18n.choose_image},library:{type:"image"},multiple:!1}),kpb_media.on("select",function() {var e;e=kpb_media.state().get("selection").first().toJSON(),kpb_media_button_upload.parents(".kpb-ui-image-outer").find(".kpb-ui-image").val(e.url),kpb_media_button_upload.parents(".kpb-ui-image-outer").find(".kpb-ui-image-preview").attr("src",e.url)}),kpb_media.open(),void 0)}),jQuery(".kpb-ui-image-outer").on("click",".kpb-ui-image-button-reset",function(e){e.preventDefault(),kpb_media_button_reset=jQuery(this),kpb_media_button_reset.attr("data-reset")?(kpb_media_button_reset.parents(".kpb-ui-image-outer").find(".kpb-ui-image").val(kpb_media_button_reset.attr("data-reset")),kpb_media_button_reset.parents(".kpb-ui-image-outer").find(".kpb-ui-image-preview").attr("src",kpb_media_button_reset.attr("data-reset"))):(kpb_media_button_reset.parents(".kpb-ui-image-outer").find(".kpb-ui-image").val(kpb_media_button_reset.attr("")),kpb_media_button_reset.parents(".kpb-ui-image-outer").find(".kpb-ui-image-preview").attr("src",kpb_media_button_reset.attr("data-preview")))})},init_section_tab:function() {var e;e=jQuery(".kpb-tab-title > a"),e.length>0&&e.each(function() {var e;e=jQuery(this),e.click(function(t){var a,i;t.preventDefault(),i=e.parents(".kpb-wrapper-configuration-toggle"),a=e.parent(),a.hasClass("kpb-tab-title-active")||(i.find(".kpb-tab-title-active").removeClass("kpb-tab-title-active"),i.find(".kpb-tab-content").slideUp(500),a.addClass("kpb-tab-title-active"),jQuery(e.attr("href")).slideDown(500))})})},change_customize_tab:function(e,t){var a,i;e.preventDefault(),i=t.parents(".kpb-wrapper-configuration-toggle"),a=t.parent(),a.hasClass("kpb-tab-title-active")||(i.find(".kpb-tab-title-active").removeClass("kpb-tab-title-active"),i.find(".kpb-tab-content").slideUp(500),a.addClass("kpb-tab-title-active"),jQuery(t.attr("href")).slideDown(500))}};
  • kopa-page-builder/trunk/js/waypoints-sticky.js

    r1209395 r1428045  
    1515      return factory(root.jQuery);
    1616    }
    17   })(window, function($) {
     17  })(window, function( $) {
    1818    var defaults, wrap;
    1919
     
    2323      direction: 'down right'
    2424    };
    25     wrap = function($elements, options) {
     25    wrap = function( $elements, options) {
    2626      var $parent;
    2727
    2828      $elements.wrap(options.wrapper);
    2929      $parent = $elements.parent();
    30       return $parent.data('isWaypointStickyWrapper', true);
     30      return $parent.data( 'isWaypointStickyWrapper', true);
    3131    };
    32     $.waypoints('extendFn', 'sticky', function(opt) {
     32    $.waypoints( 'extendFn', 'sticky', function(opt) {
    3333      var $wrap, options, originalHandler;
    3434
     
    3939        var $sticky, shouldBeStuck;
    4040
    41         $sticky = $(this).children(':first');
     41        $sticky = $(this).children( ':first' );
    4242        shouldBeStuck = options.direction.indexOf(direction) !== -1;
    4343        $sticky.toggleClass(options.stuckClass, shouldBeStuck);
    44         $wrap.height(shouldBeStuck ? $sticky.outerHeight() : '');
     44        $wrap.height(shouldBeStuck ? $sticky.outerHeight() : '' );
    4545        if (originalHandler != null) {
    4646          return originalHandler.call(this, direction);
     
    4848      };
    4949      $wrap.waypoint(options);
    50       return this.data('stuckClass', options.stuckClass);
     50      return this.data( 'stuckClass', options.stuckClass);
    5151    });
    52     return $.waypoints('extendFn', 'unsticky', function() {
     52    return $.waypoints( 'extendFn', 'unsticky', function() {
    5353      var $parent;
    5454
    5555      $parent = this.parent();
    56       if (!$parent.data('isWaypointStickyWrapper')) {
     56      if (!$parent.data( 'isWaypointStickyWrapper')) {
    5757        return this;
    5858      }
    59       $parent.waypoint('destroy');
     59      $parent.waypoint( 'destroy' );
    6060      this.unwrap();
    61       return this.removeClass(this.data('stuckClass'));
     61      return this.removeClass(this.data( 'stuckClass' ) );
    6262    });
    6363  });
  • kopa-page-builder/trunk/js/waypoints-sticky.min.js

    r1209395 r1428045  
    1 (function(){!function(t,n){return"function"==typeof define&&define.amd?define(["jquery","waypoints"],n):n(t.jQuery)}(window,function(t){var n,i;return n={wrapper:'<div class="sticky-wrapper" />',stuckClass:"stuck",direction:"down right"},i=function(t,n){var i;return t.wrap(n.wrapper),i=t.parent(),i.data("isWaypointStickyWrapper",!0)},t.waypoints("extendFn","sticky",function(a){var r,s,e;return s=t.extend({},t.fn.waypoint.defaults,n,a),r=i(this,s),e=s.handler,s.handler=function(n){var i,a;return i=t(this).children(":first"),a=-1!==s.direction.indexOf(n),i.toggleClass(s.stuckClass,a),r.height(a?i.outerHeight():""),null!=e?e.call(this,n):void 0},r.waypoint(s),this.data("stuckClass",s.stuckClass)}),t.waypoints("extendFn","unsticky",function(){var t;return t=this.parent(),t.data("isWaypointStickyWrapper")?(t.waypoint("destroy"),this.unwrap(),this.removeClass(this.data("stuckClass"))):this})})}).call(this);
     1(function() {!function(t,n){return"function"==typeof define&&define.amd?define(["jquery","waypoints"],n):n(t.jQuery)}(window,function(t){var n,i;return n={wrapper:'<div class="sticky-wrapper" />',stuckClass:"stuck",direction:"down right"},i=function(t,n){var i;return t.wrap(n.wrapper),i=t.parent(),i.data("isWaypointStickyWrapper",!0)},t.waypoints("extendFn","sticky",function(a){var r,s,e;return s=t.extend({},t.fn.waypoint.defaults,n,a),r=i(this,s),e=s.handler,s.handler=function(n){var i,a;return i=t(this).children(":first"),a=-1!==s.direction.indexOf(n),i.toggleClass(s.stuckClass,a),r.height(a?i.outerHeight():""),null!=e?e.call(this,n):void 0},r.waypoint(s),this.data("stuckClass",s.stuckClass)}),t.waypoints("extendFn","unsticky",function() {var t;return t=this.parent(),t.data("isWaypointStickyWrapper")?(t.waypoint("destroy"),this.unwrap(),this.removeClass(this.data("stuckClass"))):this})})}).call(this);
  • kopa-page-builder/trunk/js/waypoints.js

    r1209395 r1428045  
    1414  (function(root, factory) {
    1515    if (typeof define === 'function' && define.amd) {
    16       return define('waypoints', ['jquery'], function($) {
    17         return factory($, root);
     16      return define( 'waypoints', ['jquery'], function( $) {
     17        return factory( $, root);
    1818      });
    1919    } else {
    2020      return factory(root.jQuery, root);
    2121    }
    22   })(window, function($, window) {
     22  })(window, function( $, window) {
    2323    var $w, Context, Waypoint, allWaypoints, contextCounter, contextKey, contexts, isTouch, jQMethods, methods, resizeEvent, scrollEvent, waypointCounter, waypointKey, wp, wps;
    2424
     
    3939    wps = 'waypoints';
    4040    Context = (function() {
    41       function Context($element) {
     41      function Context( $element) {
    4242        var _this = this;
    4343
     
    7575            _this.didResize = true;
    7676            resizeHandler = function() {
    77               $[wps]('refresh');
     77              $[wps]( 'refresh' );
    7878              return _this.didResize = false;
    7979            };
     
    102102        };
    103103        if (isTouch && (!axes.vertical.oldScroll || !axes.vertical.newScroll)) {
    104           $[wps]('refresh');
     104          $[wps]( 'refresh' );
    105105        }
    106106        $.each(axes, function(aKey, axis) {
     
    157157            contextOffset: isWin ? 0 : cOffset.top,
    158158            contextScroll: isWin ? 0 : this.oldScroll.y,
    159             contextDimension: isWin ? $[wps]('viewportHeight') : this.$element.height(),
     159            contextDimension: isWin ? $[wps]( 'viewportHeight') : this.$element.height(),
    160160            oldScroll: this.oldScroll.y,
    161161            forward: 'down',
     
    171171            oldOffset = waypoint.offset;
    172172            elementOffset = $.isWindow(waypoint.element) ? 0 : waypoint.$element.offset()[axis.offsetProp];
    173             if ($.isFunction(adjustment)) {
     173            if ( $.isFunction(adjustment)) {
    174174              adjustment = adjustment.apply(waypoint.element);
    175175            } else if (typeof adjustment === 'string') {
    176176              adjustment = parseFloat(adjustment);
    177               if (waypoint.options.offset.indexOf('%') > -1) {
     177              if (waypoint.options.offset.indexOf( '%') > -1) {
    178178                adjustment = Math.ceil(axis.contextDimension * adjustment / 100);
    179179              }
     
    195195
    196196      Context.prototype.checkEmpty = function() {
    197         if ($.isEmptyObject(this.waypoints.horizontal) && $.isEmptyObject(this.waypoints.vertical)) {
    198           this.$element.unbind([resizeEvent, scrollEvent].join(' '));
     197        if ( $.isEmptyObject(this.waypoints.horizontal) && $.isEmptyObject(this.waypoints.vertical)) {
     198          this.$element.unbind([resizeEvent, scrollEvent].join( ' ' ) );
    199199          return delete contexts[this.id];
    200200        }
     
    205205    })();
    206206    Waypoint = (function() {
    207       function Waypoint($element, context, options) {
     207      function Waypoint( $element, context, options) {
    208208        var idList, _ref;
    209209
     
    212212            var contextHeight;
    213213
    214             contextHeight = $[wps]('viewportHeight');
     214            contextHeight = $[wps]( 'viewportHeight' );
    215215            if (!$.isWindow(context.element)) {
    216216              contextHeight = context.$element.height();
     
    299299            context = new Context(contextElement);
    300300          }
    301           return new Waypoint($this, context, options);
    302         });
    303         $[wps]('refresh');
     301          return new Waypoint( $this, context, options);
     302        });
     303        $[wps]( 'refresh' );
    304304        return this;
    305305      },
    306306      disable: function() {
    307         return methods._invoke.call(this, 'disable');
     307        return methods._invoke.call(this, 'disable' );
    308308      },
    309309      enable: function() {
    310         return methods._invoke.call(this, 'enable');
     310        return methods._invoke.call(this, 'enable' );
    311311      },
    312312      destroy: function() {
    313         return methods._invoke.call(this, 'destroy');
     313        return methods._invoke.call(this, 'destroy' );
    314314      },
    315315      prev: function(axis, selector) {
     
    365365      if (methods[method]) {
    366366        return methods[method].apply(this, args);
    367       } else if ($.isFunction(method)) {
     367      } else if ( $.isFunction(method)) {
    368368        return methods.init.apply(this, arguments);
    369       } else if ($.isPlainObject(method)) {
     369      } else if ( $.isPlainObject(method)) {
    370370        return methods.init.apply(this, [null, method]);
    371371      } else if (!method) {
     
    455455      },
    456456      enable: function() {
    457         return jQMethods._invoke('enable');
     457        return jQMethods._invoke( 'enable' );
    458458      },
    459459      disable: function() {
    460         return jQMethods._invoke('disable');
     460        return jQMethods._invoke( 'disable' );
    461461      },
    462462      destroy: function() {
    463         return jQMethods._invoke('destroy');
     463        return jQMethods._invoke( 'destroy' );
    464464      },
    465465      extendFn: function(methodName, f) {
     
    510510      scrollThrottle: 30
    511511    };
    512     return $w.on('load.waypoints', function() {
    513       return $[wps]('refresh');
     512    return $w.on( 'load.waypoints', function() {
     513      return $[wps]( 'refresh' );
    514514    });
    515515  });
  • kopa-page-builder/trunk/js/waypoints.min.js

    r1209395 r1428045  
    1 (function(){var t=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1},e=[].slice;!function(t,e){return"function"==typeof define&&define.amd?define("waypoints",["jquery"],function(n){return e(n,t)}):e(t.jQuery,t)}(window,function(n,r){var o,i,l,s,c,u,a,f,h,d,p,v,y,w,g,m;return o=n(r),f=t.call(r,"ontouchstart")>=0,s={horizontal:{},vertical:{}},c=1,a={},u="waypoints-context-id",p="resize.waypoints",v="scroll.waypoints",y=1,w="waypoints-waypoint-ids",g="waypoint",m="waypoints",i=function(){function t(t){var e=this;this.$element=t,this.element=t[0],this.didResize=!1,this.didScroll=!1,this.id="context"+c++,this.oldScroll={x:t.scrollLeft(),y:t.scrollTop()},this.waypoints={horizontal:{},vertical:{}},this.element[u]=this.id,a[this.id]=this,t.bind(v,function(){var t;return e.didScroll||f?void 0:(e.didScroll=!0,t=function(){return e.doScroll(),e.didScroll=!1},r.setTimeout(t,n[m].settings.scrollThrottle))}),t.bind(p,function(){var t;return e.didResize?void 0:(e.didResize=!0,t=function(){return n[m]("refresh"),e.didResize=!1},r.setTimeout(t,n[m].settings.resizeThrottle))})}return t.prototype.doScroll=function(){var t,e=this;return t={horizontal:{newScroll:this.$element.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.$element.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}},!f||t.vertical.oldScroll&&t.vertical.newScroll||n[m]("refresh"),n.each(t,function(t,r){var o,i,l;return l=[],i=r.newScroll>r.oldScroll,o=i?r.forward:r.backward,n.each(e.waypoints[t],function(t,e){var n,o;return r.oldScroll<(n=e.offset)&&n<=r.newScroll?l.push(e):r.newScroll<(o=e.offset)&&o<=r.oldScroll?l.push(e):void 0}),l.sort(function(t,e){return t.offset-e.offset}),i||l.reverse(),n.each(l,function(t,e){return e.options.continuous||t===l.length-1?e.trigger([o]):void 0})}),this.oldScroll={x:t.horizontal.newScroll,y:t.vertical.newScroll}},t.prototype.refresh=function(){var t,e,r,o=this;return r=n.isWindow(this.element),e=this.$element.offset(),this.doScroll(),t={horizontal:{contextOffset:r?0:e.left,contextScroll:r?0:this.oldScroll.x,contextDimension:this.$element.width(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:r?0:e.top,contextScroll:r?0:this.oldScroll.y,contextDimension:r?n[m]("viewportHeight"):this.$element.height(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}},n.each(t,function(t,e){return n.each(o.waypoints[t],function(t,r){var o,i,l,s,c;return o=r.options.offset,l=r.offset,i=n.isWindow(r.element)?0:r.$element.offset()[e.offsetProp],n.isFunction(o)?o=o.apply(r.element):"string"==typeof o&&(o=parseFloat(o),r.options.offset.indexOf("%")>-1&&(o=Math.ceil(e.contextDimension*o/100))),r.offset=i-e.contextOffset+e.contextScroll-o,r.options.onlyOnScroll&&null!=l||!r.enabled?void 0:null!==l&&l<(s=e.oldScroll)&&s<=r.offset?r.trigger([e.backward]):null!==l&&l>(c=e.oldScroll)&&c>=r.offset?r.trigger([e.forward]):null===l&&e.oldScroll>=r.offset?r.trigger([e.forward]):void 0})})},t.prototype.checkEmpty=function(){return n.isEmptyObject(this.waypoints.horizontal)&&n.isEmptyObject(this.waypoints.vertical)?(this.$element.unbind([p,v].join(" ")),delete a[this.id]):void 0},t}(),l=function(){function t(t,e,r){var o,i;"bottom-in-view"===r.offset&&(r.offset=function(){var t;return t=n[m]("viewportHeight"),n.isWindow(e.element)||(t=e.$element.height()),t-n(this).outerHeight()}),this.$element=t,this.element=t[0],this.axis=r.horizontal?"horizontal":"vertical",this.callback=r.handler,this.context=e,this.enabled=r.enabled,this.id="waypoints"+y++,this.offset=null,this.options=r,e.waypoints[this.axis][this.id]=this,s[this.axis][this.id]=this,o=null!=(i=this.element[w])?i:[],o.push(this.id),this.element[w]=o}return t.prototype.trigger=function(t){return this.enabled?(null!=this.callback&&this.callback.apply(this.element,t),this.options.triggerOnce?this.destroy():void 0):void 0},t.prototype.disable=function(){return this.enabled=!1},t.prototype.enable=function(){return this.context.refresh(),this.enabled=!0},t.prototype.destroy=function(){return delete s[this.axis][this.id],delete this.context.waypoints[this.axis][this.id],this.context.checkEmpty()},t.getWaypointsByElement=function(t){var e,r;return(r=t[w])?(e=n.extend({},s.horizontal,s.vertical),n.map(r,function(t){return e[t]})):[]},t}(),d={init:function(t,e){var r;return e=n.extend({},n.fn[g].defaults,e),null==(r=e.handler)&&(e.handler=t),this.each(function(){var t,r,o,s;return t=n(this),o=null!=(s=e.context)?s:n.fn[g].defaults.context,n.isWindow(o)||(o=t.closest(o)),o=n(o),r=a[o[0][u]],r||(r=new i(o)),new l(t,r,e)}),n[m]("refresh"),this},disable:function(){return d._invoke.call(this,"disable")},enable:function(){return d._invoke.call(this,"enable")},destroy:function(){return d._invoke.call(this,"destroy")},prev:function(t,e){return d._traverse.call(this,t,e,function(t,e,n){return e>0?t.push(n[e-1]):void 0})},next:function(t,e){return d._traverse.call(this,t,e,function(t,e,n){return e<n.length-1?t.push(n[e+1]):void 0})},_traverse:function(t,e,o){var i,l;return null==t&&(t="vertical"),null==e&&(e=r),l=h.aggregate(e),i=[],this.each(function(){var e;return e=n.inArray(this,l[t]),o(i,e,l[t])}),this.pushStack(i)},_invoke:function(t){return this.each(function(){var e;return e=l.getWaypointsByElement(this),n.each(e,function(e,n){return n[t](),!0})}),this}},n.fn[g]=function(){var t,r;return r=arguments[0],t=2<=arguments.length?e.call(arguments,1):[],d[r]?d[r].apply(this,t):n.isFunction(r)?d.init.apply(this,arguments):n.isPlainObject(r)?d.init.apply(this,[null,r]):n.error(r?"The "+r+" method does not exist in jQuery Waypoints.":"jQuery Waypoints needs a callback function or handler option.")},n.fn[g].defaults={context:r,continuous:!0,enabled:!0,horizontal:!1,offset:0,triggerOnce:!1},h={refresh:function(){return n.each(a,function(t,e){return e.refresh()})},viewportHeight:function(){var t;return null!=(t=r.innerHeight)?t:o.height()},aggregate:function(t){var e,r,o;return e=s,t&&(e=null!=(o=a[n(t)[0][u]])?o.waypoints:void 0),e?(r={horizontal:[],vertical:[]},n.each(r,function(t,o){return n.each(e[t],function(t,e){return o.push(e)}),o.sort(function(t,e){return t.offset-e.offset}),r[t]=n.map(o,function(t){return t.element}),r[t]=n.unique(r[t])}),r):[]},above:function(t){return null==t&&(t=r),h._filter(t,"vertical",function(t,e){return e.offset<=t.oldScroll.y})},below:function(t){return null==t&&(t=r),h._filter(t,"vertical",function(t,e){return e.offset>t.oldScroll.y})},left:function(t){return null==t&&(t=r),h._filter(t,"horizontal",function(t,e){return e.offset<=t.oldScroll.x})},right:function(t){return null==t&&(t=r),h._filter(t,"horizontal",function(t,e){return e.offset>t.oldScroll.x})},enable:function(){return h._invoke("enable")},disable:function(){return h._invoke("disable")},destroy:function(){return h._invoke("destroy")},extendFn:function(t,e){return d[t]=e},_invoke:function(t){var e;return e=n.extend({},s.vertical,s.horizontal),n.each(e,function(e,n){return n[t](),!0})},_filter:function(t,e,r){var o,i;return(o=a[n(t)[0][u]])?(i=[],n.each(o.waypoints[e],function(t,e){return r(o,e)?i.push(e):void 0}),i.sort(function(t,e){return t.offset-e.offset}),n.map(i,function(t){return t.element})):[]}},n[m]=function(){var t,n;return n=arguments[0],t=2<=arguments.length?e.call(arguments,1):[],h[n]?h[n].apply(null,t):h.aggregate.call(null,n)},n[m].settings={resizeThrottle:100,scrollThrottle:30},o.on("load.waypoints",function(){return n[m]("refresh")})})}).call(this);
     1(function() {var t=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1},e=[].slice;!function(t,e){return"function"==typeof define&&define.amd?define("waypoints",["jquery"],function(n){return e(n,t)}):e(t.jQuery,t)}(window,function(n,r){var o,i,l,s,c,u,a,f,h,d,p,v,y,w,g,m;return o=n(r),f=t.call(r,"ontouchstart")>=0,s={horizontal:{},vertical:{}},c=1,a={},u="waypoints-context-id",p="resize.waypoints",v="scroll.waypoints",y=1,w="waypoints-waypoint-ids",g="waypoint",m="waypoints",i=function() {function t(t){var e=this;this.$element=t,this.element=t[0],this.didResize=!1,this.didScroll=!1,this.id="context"+c++,this.oldScroll={x:t.scrollLeft(),y:t.scrollTop()},this.waypoints={horizontal:{},vertical:{}},this.element[u]=this.id,a[this.id]=this,t.bind(v,function() {var t;return e.didScroll||f?void 0:(e.didScroll=!0,t=function() {return e.doScroll(),e.didScroll=!1},r.setTimeout(t,n[m].settings.scrollThrottle))}),t.bind(p,function() {var t;return e.didResize?void 0:(e.didResize=!0,t=function() {return n[m]("refresh"),e.didResize=!1},r.setTimeout(t,n[m].settings.resizeThrottle))})}return t.prototype.doScroll=function() {var t,e=this;return t={horizontal:{newScroll:this.$element.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.$element.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}},!f||t.vertical.oldScroll&&t.vertical.newScroll||n[m]("refresh"),n.each(t,function(t,r){var o,i,l;return l=[],i=r.newScroll>r.oldScroll,o=i?r.forward:r.backward,n.each(e.waypoints[t],function(t,e){var n,o;return r.oldScroll<(n=e.offset)&&n<=r.newScroll?l.push(e):r.newScroll<(o=e.offset)&&o<=r.oldScroll?l.push(e):void 0}),l.sort(function(t,e){return t.offset-e.offset}),i||l.reverse(),n.each(l,function(t,e){return e.options.continuous||t===l.length-1?e.trigger([o]):void 0})}),this.oldScroll={x:t.horizontal.newScroll,y:t.vertical.newScroll}},t.prototype.refresh=function() {var t,e,r,o=this;return r=n.isWindow(this.element),e=this.$element.offset(),this.doScroll(),t={horizontal:{contextOffset:r?0:e.left,contextScroll:r?0:this.oldScroll.x,contextDimension:this.$element.width(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:r?0:e.top,contextScroll:r?0:this.oldScroll.y,contextDimension:r?n[m]("viewportHeight"):this.$element.height(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}},n.each(t,function(t,e){return n.each(o.waypoints[t],function(t,r){var o,i,l,s,c;return o=r.options.offset,l=r.offset,i=n.isWindow(r.element)?0:r.$element.offset()[e.offsetProp],n.isFunction(o)?o=o.apply(r.element):"string"==typeof o&&(o=parseFloat(o),r.options.offset.indexOf("%")>-1&&(o=Math.ceil(e.contextDimension*o/100))),r.offset=i-e.contextOffset+e.contextScroll-o,r.options.onlyOnScroll&&null!=l||!r.enabled?void 0:null!==l&&l<(s=e.oldScroll)&&s<=r.offset?r.trigger([e.backward]):null!==l&&l>(c=e.oldScroll)&&c>=r.offset?r.trigger([e.forward]):null===l&&e.oldScroll>=r.offset?r.trigger([e.forward]):void 0})})},t.prototype.checkEmpty=function() {return n.isEmptyObject(this.waypoints.horizontal)&&n.isEmptyObject(this.waypoints.vertical)?(this.$element.unbind([p,v].join(" ")),delete a[this.id]):void 0},t}(),l=function() {function t(t,e,r){var o,i;"bottom-in-view"===r.offset&&(r.offset=function() {var t;return t=n[m]("viewportHeight"),n.isWindow(e.element)||(t=e.$element.height()),t-n(this).outerHeight()}),this.$element=t,this.element=t[0],this.axis=r.horizontal?"horizontal":"vertical",this.callback=r.handler,this.context=e,this.enabled=r.enabled,this.id="waypoints"+y++,this.offset=null,this.options=r,e.waypoints[this.axis][this.id]=this,s[this.axis][this.id]=this,o=null!=(i=this.element[w])?i:[],o.push(this.id),this.element[w]=o}return t.prototype.trigger=function(t){return this.enabled?(null!=this.callback&&this.callback.apply(this.element,t),this.options.triggerOnce?this.destroy():void 0):void 0},t.prototype.disable=function() {return this.enabled=!1},t.prototype.enable=function() {return this.context.refresh(),this.enabled=!0},t.prototype.destroy=function() {return delete s[this.axis][this.id],delete this.context.waypoints[this.axis][this.id],this.context.checkEmpty()},t.getWaypointsByElement=function(t){var e,r;return(r=t[w])?(e=n.extend({},s.horizontal,s.vertical),n.map(r,function(t){return e[t]})):[]},t}(),d={init:function(t,e){var r;return e=n.extend({},n.fn[g].defaults,e),null==(r=e.handler)&&(e.handler=t),this.each(function() {var t,r,o,s;return t=n(this),o=null!=(s=e.context)?s:n.fn[g].defaults.context,n.isWindow(o)||(o=t.closest(o)),o=n(o),r=a[o[0][u]],r||(r=new i(o)),new l(t,r,e)}),n[m]("refresh"),this},disable:function() {return d._invoke.call(this,"disable")},enable:function() {return d._invoke.call(this,"enable")},destroy:function() {return d._invoke.call(this,"destroy")},prev:function(t,e){return d._traverse.call(this,t,e,function(t,e,n){return e>0?t.push(n[e-1]):void 0})},next:function(t,e){return d._traverse.call(this,t,e,function(t,e,n){return e<n.length-1?t.push(n[e+1]):void 0})},_traverse:function(t,e,o){var i,l;return null==t&&(t="vertical"),null==e&&(e=r),l=h.aggregate(e),i=[],this.each(function() {var e;return e=n.inArray(this,l[t]),o(i,e,l[t])}),this.pushStack(i)},_invoke:function(t){return this.each(function() {var e;return e=l.getWaypointsByElement(this),n.each(e,function(e,n){return n[t](),!0})}),this}},n.fn[g]=function() {var t,r;return r=arguments[0],t=2<=arguments.length?e.call(arguments,1):[],d[r]?d[r].apply(this,t):n.isFunction(r)?d.init.apply(this,arguments):n.isPlainObject(r)?d.init.apply(this,[null,r]):n.error(r?"The "+r+" method does not exist in jQuery Waypoints.":"jQuery Waypoints needs a callback function or handler option.")},n.fn[g].defaults={context:r,continuous:!0,enabled:!0,horizontal:!1,offset:0,triggerOnce:!1},h={refresh:function() {return n.each(a,function(t,e){return e.refresh()})},viewportHeight:function() {var t;return null!=(t=r.innerHeight)?t:o.height()},aggregate:function(t){var e,r,o;return e=s,t&&(e=null!=(o=a[n(t)[0][u]])?o.waypoints:void 0),e?(r={horizontal:[],vertical:[]},n.each(r,function(t,o){return n.each(e[t],function(t,e){return o.push(e)}),o.sort(function(t,e){return t.offset-e.offset}),r[t]=n.map(o,function(t){return t.element}),r[t]=n.unique(r[t])}),r):[]},above:function(t){return null==t&&(t=r),h._filter(t,"vertical",function(t,e){return e.offset<=t.oldScroll.y})},below:function(t){return null==t&&(t=r),h._filter(t,"vertical",function(t,e){return e.offset>t.oldScroll.y})},left:function(t){return null==t&&(t=r),h._filter(t,"horizontal",function(t,e){return e.offset<=t.oldScroll.x})},right:function(t){return null==t&&(t=r),h._filter(t,"horizontal",function(t,e){return e.offset>t.oldScroll.x})},enable:function() {return h._invoke("enable")},disable:function() {return h._invoke("disable")},destroy:function() {return h._invoke("destroy")},extendFn:function(t,e){return d[t]=e},_invoke:function(t){var e;return e=n.extend({},s.vertical,s.horizontal),n.each(e,function(e,n){return n[t](),!0})},_filter:function(t,e,r){var o,i;return(o=a[n(t)[0][u]])?(i=[],n.each(o.waypoints[e],function(t,e){return r(o,e)?i.push(e):void 0}),i.sort(function(t,e){return t.offset-e.offset}),n.map(i,function(t){return t.element})):[]}},n[m]=function() {var t,n;return n=arguments[0],t=2<=arguments.length?e.call(arguments,1):[],h[n]?h[n].apply(null,t):h.aggregate.call(null,n)},n[m].settings={resizeThrottle:100,scrollThrottle:30},o.on("load.waypoints",function() {return n[m]("refresh")})})}).call(this);
  • kopa-page-builder/trunk/kopa-page-builder.php

    r1323889 r1428045  
    33Plugin Name: Kopa Page Builder
    44Description: The visual page builder
    5 Version: 1.2
     5Version: 1.3
    66Author: Kopa Theme
    77Author URI: http://kopatheme.com/
     
    1313
    1414Requires at least: 4.1
    15 Tested up to: 4.4.1
     15Tested up to: 4.5.2
    1616Text Domain: kopa-page-builder
    1717Domain Path: /languages/
    1818*/
    1919
    20 define('KPB_IS_DEV', false);
    21 define('KPB_DIR', plugin_dir_url(__FILE__));
    22 define('KPB_PATH', plugin_dir_path(__FILE__));
    23 
    24 add_action('plugins_loaded', array('Kopa_Page_Builder', 'plugins_loaded'));
    25 add_action( 'after_setup_theme', array('Kopa_Page_Builder', 'after_setup_theme'), 20 );
     20define( 'KPB_IS_DEV', true );
     21define( 'KPB_DIR', plugin_dir_url( __FILE__ ) );
     22define( 'KPB_PATH', plugin_dir_path( __FILE__ ) );
     23
     24add_action( 'plugins_loaded', array( 'Kopa_Page_Builder', 'plugins_loaded' ) );
     25add_action( 'after_setup_theme', array( 'Kopa_Page_Builder', 'after_setup_theme' ), 20 );   
    2626
    2727class Kopa_Page_Builder {
    2828
    29     function __construct(){     
    30         add_action('add_meta_boxes', array($this, 'register_meta_boxes'));             
    31         add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts'), 20);
     29    function __construct() {
     30        add_action( 'add_meta_boxes', array( $this, 'register_meta_boxes' ) );             
     31        add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ), 20);
    3232
    3333        #LIGHTBOX       
    34         add_action('admin_footer', array($this, 'print_ajax_security'));
     34        add_action( 'admin_footer', array( $this, 'print_ajax_security' ) );
    3535
    3636        #AJAX
    37         add_action('wp_ajax_kpb_get_widget_form', array($this, 'get_widget_form'));
    38         add_action('wp_ajax_kpb_save_widget', array($this, 'save_widget'));
    39         add_action('wp_ajax_kpb_save_grid', array($this, 'save_grid'));     
    40         add_action('wp_ajax_kpb_delete_widget', array($this, 'delete_widget'));     
    41         add_action('wp_ajax_kpb_save_customize', array($this, 'save_customize'));       
    42         add_action('wp_ajax_kpb_save_layout_customize', array($this, 'save_layout_customize'));                     
    43         add_action('wp_ajax_kpb_load_lightbox_html', array($this, 'load_lightbox_html'));               
     37        add_action( 'wp_ajax_kpb_get_widget_form', array( $this, 'get_widget_form' ) );
     38        add_action( 'wp_ajax_kpb_save_widget', array( $this, 'save_widget' ) );
     39        add_action( 'wp_ajax_kpb_save_grid', array( $this, 'save_grid' ) );     
     40        add_action( 'wp_ajax_kpb_delete_widget', array( $this, 'delete_widget' ) );     
     41        add_action( 'wp_ajax_kpb_save_customize', array( $this, 'save_customize' ) );       
     42        add_action( 'wp_ajax_kpb_save_layout_customize', array( $this, 'save_layout_customize' ) );                     
     43        add_action( 'wp_ajax_kpb_load_lightbox_html', array( $this, 'load_lightbox_html' ) );               
    4444       
    4545        #SHORTCODE
    46         add_shortcode('kpb_home_url', array($this, 'shortcode_home_url')); 
     46        add_shortcode( 'kpb_home_url', array( $this, 'shortcode_home_url' ) ); 
    4747
    4848        #CONFIG
    49         add_filter( 'kopa_theme_options_settings', array($this, 'configuration'), 20, 1);   
    50     }
    51 
    52     public static function after_setup_theme(){
    53         if (!class_exists('Kopa_Framework'))
     49        add_filter( 'kopa_theme_options_settings', array( $this, 'configuration' ), 20, 1);
     50    }
     51
     52    public static function after_setup_theme() {
     53        if (!class_exists( 'Kopa_Framework'))
    5454            return;         
    5555        else   
     
    5757    }
    5858
    59     public function configuration($options){
     59    public function configuration( $options){
    6060        $options[] = array(
    61             'title'   => __('Page builder', 'kopa-page-builder'),
     61            'title'   => esc_html__( 'Page builder', 'kopa-page-builder' ),
    6262            'type'    => 'title',       
    6363            'id'      => 'page-builder'     
    6464        ); 
    65             $options[] = array(
    66                 'title'   => NULL,
    67                 'type'    => 'checkbox',               
    68                 'id'      => 'is-enable-page-builder-use-sticky-toolbar',
    69                 'default' => 1,
    70                 'label'   => __( 'Use sticky toolbar ?', 'kopa-page-builder'),
    71             );
     65        $options[] = array(
     66            'title'   => NULL,
     67            'type'    => 'checkbox',               
     68            'id'      => 'is-enable-page-builder-use-sticky-toolbar',
     69            'default' => 1,
     70            'label'   => esc_html__( 'Use sticky toolbar ?', 'kopa-page-builder' ),
     71        );
    7272
    7373        return $options;
    7474    }
    7575
    76     public static function is_page(){
     76    public static function is_page() {
    7777        global $pagenow, $post;
    7878        $is_page = false;
    7979
    80         if( in_array( $pagenow, array('post.php', 'post-new.php')) ){               
    81             if($post->post_type == 'page'){
     80        if( in_array( $pagenow, array( 'post.php', 'post-new.php')) ){             
     81            if( $post->post_type == 'page'){
    8282                $is_page = true;               
    8383            }
     
    8787    }
    8888
    89     public static function get_meta_key_current_layout(){
    90         return apply_filters('kopa_page_builder_get_meta_key_current_layout','kopa_page_builder_current_layout');
    91     }
    92 
    93     public static function get_meta_key_layout_customize(){
    94         return apply_filters('kopa_page_builder_get_meta_key_layout_customize','kopa_page_builder_layout_customize');
    95     }
    96 
    97     public static function get_meta_key_grid(){
    98         return apply_filters('kopa_page_builder_get_meta_key_grid','kopa_page_builder_data');
    99     }
    100 
    101     public static function get_meta_key_wrapper(){
    102         return apply_filters('kopa_page_builder_get_meta_key_wrapper','kopa_page_builder_wrapper');
    103     }
    104 
    105     public static function get_meta_key_widget_customize(){
    106         return apply_filters('kopa_page_builder_get_meta_key_widget_customize','kopa_page_builder_widget_customize');
    107     }
    108 
    109     public static function get_current_layout($post_id){
    110         return get_post_meta($post_id, self::get_meta_key_current_layout(), true);     
     89    public static function get_meta_key_current_layout() {
     90        return apply_filters( 'kopa_page_builder_get_meta_key_current_layout','kopa_page_builder_current_layout' );
     91    }
     92
     93    public static function get_meta_key_layout_customize() {
     94        return apply_filters( 'kopa_page_builder_get_meta_key_layout_customize','kopa_page_builder_layout_customize' );
     95    }
     96
     97    public static function get_meta_key_grid() {
     98        return apply_filters( 'kopa_page_builder_get_meta_key_grid','kopa_page_builder_data' );
     99    }
     100
     101    public static function get_meta_key_wrapper() {
     102        return apply_filters( 'kopa_page_builder_get_meta_key_wrapper','kopa_page_builder_wrapper' );
     103    }
     104
     105    public static function get_meta_key_widget_customize() {
     106        return apply_filters( 'kopa_page_builder_get_meta_key_widget_customize','kopa_page_builder_widget_customize' );
     107    }
     108
     109    public static function get_registed_layouts() {
     110        return apply_filters( 'kopa_page_builder_get_layouts', array() );
     111    }
     112
     113    public static function get_current_layout( $post_id){
     114        return get_post_meta( $post_id, self::get_meta_key_current_layout(), true);     
    111115    }
    112116
    113     public static function get_current_layout_data($post_id, $current_layout = null){
    114         $current_layout = $current_layout ? $current_layout : self::get_current_layout($post_id);
    115         $meta_key = sprintf('%s-%s', self::get_meta_key_grid(), $current_layout);       
    116 
    117         return get_post_meta($post_id, $meta_key, true);
    118     }
    119 
    120     public static function get_current_wrapper_data($post_id, $current_layout, $current_section){
    121         if(empty($current_layout) || empty($current_section))
     117    public static function get_current_layout_data( $post_id, $current_layout = null){
     118        $current_layout = $current_layout ? $current_layout : self::get_current_layout( $post_id);
     119        $meta_key = sprintf( '%s-%s', self::get_meta_key_grid(), $current_layout);     
     120
     121        return get_post_meta( $post_id, $meta_key, true);
     122    }
     123
     124    public static function get_current_wrapper_data( $post_id, $current_layout, $current_section){
     125        if(empty( $current_layout) || empty( $current_section))
    122126            return false;
    123127       
    124         $meta_key = sprintf('%s-%s-%s', self::get_meta_key_wrapper(), $current_layout, $current_section);   
    125         return get_post_meta($post_id, $meta_key, true);
    126     }
    127 
    128     public static function get_layout_customize_data($post_id, $layout_slug){
    129         if(empty($layout_slug))
     128        $meta_key = sprintf( '%s-%s-%s', self::get_meta_key_wrapper(), $current_layout, $current_section); 
     129        return get_post_meta( $post_id, $meta_key, true);
     130    }
     131
     132    public static function get_layout_customize_data( $post_id, $layout_slug){
     133        if(empty( $layout_slug))
    130134            return false;
    131135
    132         $meta_key = sprintf('%s-%s', self::get_meta_key_layout_customize(), $layout_slug);
    133         return get_post_meta($post_id, $meta_key, true);   
    134     }
    135 
    136     public function get_control($param_args){
     136        $meta_key = sprintf( '%s-%s', self::get_meta_key_layout_customize(), $layout_slug);
     137        return get_post_meta( $post_id, $meta_key, true);   
     138    }
     139
     140    public function get_control( $param_args){
    137141        ?>
    138142        <div class="kpb-control kpb-clearfix">
     
    146150                ?>
    147151                    <div class="kpb-col-3">
    148                         <?php echo esc_attr($param_args['title']);?>
     152                        <?php echo esc_attr( $param_args['title']);?>
    149153                    </div>
    150154                <?php endif; ?>
     
    152156                <div class="<?php echo esc_attr( $right_col_classes ); ?>">
    153157                    <?php
    154                     switch ($param_args['type']) {
     158                    switch ( $param_args['type']) {
    155159                        case 'alert':
    156                             $this->get_field_alert($param_args);
     160                            $this->get_field_alert( $param_args);
    157161                            break;
    158162                        case 'color':
    159                             $this->get_field_color($param_args);
     163                            $this->get_field_color( $param_args);
    160164                            break;
    161165                        case 'image':
    162                             $this->get_field_image($param_args);
     166                            $this->get_field_image( $param_args);
    163167                            break;
    164168                        case 'select':
    165                             $this->get_field_select($param_args);
     169                            $this->get_field_select( $param_args);
    166170                            break;     
    167171                        case 'text':
    168                             $this->get_field_text($param_args);
     172                            $this->get_field_text( $param_args);
    169173                            break;                                                                             
    170174                        case 'number':
    171                             $this->get_field_number($param_args);
     175                            $this->get_field_number( $param_args);
    172176                            break; 
    173177                        case 'checkbox':
    174                             $this->get_field_checkbox($param_args);
     178                            $this->get_field_checkbox( $param_args);   
    175179                            break;
    176180                        case 'radio':
    177                             $this->get_field_radio($param_args);
     181                            $this->get_field_radio( $param_args);
    178182                            break;
    179183                        case 'radio_image':
    180                             $this->get_field_radio_image($param_args);
     184                            $this->get_field_radio_image( $param_args);
    181185                            break;
    182186                        case 'textarea':
    183                             $this->get_field_textarea($param_args);
     187                            $this->get_field_textarea( $param_args);
    184188                            break;
    185189                        case 'icon':
    186                             $this->get_field_icon($param_args);
     190                            $this->get_field_icon( $param_args);
    187191                            break;                                         
    188192                    }
    189                     if(isset($param_args['help']) && !empty($param_args['help'])){
     193                    if(isset( $param_args['help']) && !empty( $param_args['help'])){
    190194                        ?>
    191                         <div class="kpb-ui-help-text"><?php echo stripcslashes($param_args['help']); ?></div>
     195                        <div class="kpb-ui-help-text"><?php echo stripcslashes( $param_args['help']); ?></div>
    192196                        <?php
    193197                    }
     
    199203    }
    200204
    201     public static function plugins_loaded(){
    202         load_plugin_textdomain('kopa-page-builder', false, dirname(plugin_basename(__FILE__)) . '/languages/');
    203     }
    204 
    205     public function admin_enqueue_scripts($hook){
     205    public static function plugins_loaded() {
     206        load_plugin_textdomain( 'kopa-page-builder', false, dirname(plugin_basename(__FILE__)) . '/languages/' );
     207    }
     208
     209    public function admin_enqueue_scripts( $hook){
    206210        if (self::is_page()) {
    207211            $prefix = 'kopa_page_builder_';
    208212            $affix = KPB_IS_DEV ? '' : '.min';         
    209             wp_enqueue_style( 'wp-color-picker');           
     213            wp_enqueue_style( 'wp-color-picker' );         
    210214            wp_enqueue_style( 'jquery-magnific-popup', plugins_url("css/magnific-popup{$affix}.css", __FILE__), NULL, NULL);           
    211215            wp_enqueue_style( $prefix . 'style', plugins_url("css/style{$affix}.css", __FILE__), NULL, NULL);
     
    215219            wp_enqueue_script( 'jquery-ui-sortable' );
    216220            wp_enqueue_script( 'wp-color-picker' );
    217             wp_enqueue_script( 'jquery-magnific-popup', plugins_url("js/jquery.magnific-popup{$affix}.js", __FILE__), array('jquery'), NULL, TRUE);         
    218             wp_enqueue_script( 'jquery-waypoints', plugins_url("js/waypoints{$affix}.js", __FILE__), array('jquery'), NULL, TRUE);
    219             wp_enqueue_script( 'jquery-waypoints-sticky', plugins_url("js/waypoints-sticky{$affix}.js", __FILE__), array('jquery'), NULL, TRUE);                       
    220             wp_enqueue_script( $prefix . 'script', plugins_url("js/script{$affix}.js", __FILE__), array('jquery'), NULL, TRUE);
    221 
    222             wp_enqueue_script('kopa_media_uploader');
    223 
    224             wp_localize_script($prefix . 'script', 'KPB', array(   
    225                 'is_sticky_toolbar' => get_theme_mod('is-enable-page-builder-use-sticky-toolbar', 1),             
    226                 'ajax' => admin_url('admin-ajax.php'),
     221            wp_enqueue_script( 'jquery-magnific-popup', plugins_url("js/jquery.magnific-popup{$affix}.js", __FILE__), array( 'jquery' ), NULL, TRUE);           
     222            wp_enqueue_script( 'jquery-waypoints', plugins_url("js/waypoints{$affix}.js", __FILE__), array( 'jquery' ), NULL, TRUE);
     223            wp_enqueue_script( 'jquery-waypoints-sticky', plugins_url("js/waypoints-sticky{$affix}.js", __FILE__), array( 'jquery' ), NULL, TRUE);                     
     224            wp_enqueue_script( $prefix . 'script', plugins_url("js/script{$affix}.js", __FILE__), array( 'jquery' ), NULL, TRUE);
     225
     226            wp_enqueue_script( 'kopa_media_uploader' );
     227
     228            wp_localize_script( $prefix . 'script', 'KPB', array(   
     229                'is_sticky_toolbar' => get_theme_mod( 'is-enable-page-builder-use-sticky-toolbar', 1),             
     230                'ajax' => admin_url( 'admin-ajax.php' ),
    227231                'i18n' => array(     
    228                     'media_center'                       => __('Media center', 'kopa-page-builder'),
    229                     'choose_image'                       => __('Choose image', 'kopa-page-builder'),
    230                     'loading'                            => __('Loading...', 'kopa-page-builder'),
    231                     'save'                               => __('Save', 'kopa-page-builder'),
    232                     'saving'                             => __('Saving...', 'kopa-page-builder'),
    233                     'hide_preview'                       => __('Hide preview', 'kopa-page-builder'),
    234                     'show_preview'                       => __('Show preview', 'kopa-page-builder'),
    235                     'are_you_sure_to_remove_this_widget' => __('Are you sure to remove this widget ?', 'kopa-page-builder'),                       
     232                    'media_center'                       => esc_html__( 'Media center', 'kopa-page-builder' ),
     233                    'choose_image'                       => esc_html__( 'Choose image', 'kopa-page-builder' ),
     234                    'loading'                            => esc_html__( 'Loading...', 'kopa-page-builder' ),
     235                    'save'                               => esc_html__( 'Save', 'kopa-page-builder' ),
     236                    'saving'                             => esc_html__( 'Saving...', 'kopa-page-builder' ),
     237                    'hide_preview'                       => esc_html__( 'Hide preview', 'kopa-page-builder' ),
     238                    'show_preview'                       => esc_html__( 'Show preview', 'kopa-page-builder' ),
     239                    'are_you_sure_to_remove_this_widget' => esc_html__( 'Are you sure to remove this widget ?', 'kopa-page-builder' ),                     
    236240                )
    237241            ));
     
    239243    }
    240244
    241     public function register_meta_boxes(){
     245    public function register_meta_boxes() {
    242246        add_meta_box(
    243247            'kopa_page_builder_meta_boxes',
    244             __( 'Page Builder', 'kopa-page-builder'),
    245             array($this, 'get_meta_boxes'),
     248            __( 'Page Builder', 'kopa-page-builder' ),
     249            array( $this, 'get_meta_boxes' ),
    246250            'page'
    247251        ); 
    248252    }   
    249253
    250     public function get_meta_boxes(){
     254    public function get_meta_boxes() {
    251255        global $post;
    252256       
    253257        wp_nonce_field( 'kopa_page_builder_meta_boxes', 'kopa_page_builder_meta_boxes_security' );
    254258       
    255         $_layouts = apply_filters('kopa_page_builder_get_layouts', array());
    256         $_areas = apply_filters('kopa_page_builder_get_areas', array());
    257         $_section_fields = apply_filters('kopa_page_builder_get_section_fields', array());
    258 
    259 
    260         $current_layout = self::get_current_layout($post->ID);     
     259        $_layouts = apply_filters( 'kopa_page_builder_get_layouts', array());
     260        $_areas = apply_filters( 'kopa_page_builder_get_areas', array());
     261        $_section_fields = apply_filters( 'kopa_page_builder_get_section_fields', array());
     262
     263
     264        $current_layout = self::get_current_layout( $post->ID);     
    261265        ?>
    262         <p id="kpb-metabox-loading-text"><img src="<?php echo KPB_DIR . '/images/loading.gif'; ?>" width="16px" height="16px">&nbsp;<?php _e('Loading..', 'kopa-page-builder'); ?></p>
     266        <p id="kpb-metabox-loading-text"><img src="<?php echo KPB_DIR . '/images/loading.gif'; ?>" width="16px" height="16px">&nbsp;<?php esc_html_e( 'Loading..', 'kopa-page-builder' ); ?></p>
    263267        <section id="kpb-wrapper" style="display: none;">
    264268            <header id="kpb-wrapper-header" class="kpb-clearfix">                                               
     
    266270                    <?php
    267271                    $_is_first_layout = true;                   
    268                     foreach ($_layouts as $slug => $layout) {
    269                         $_selected = $current_layout ? (($current_layout == $slug) ? 'selected="selected"' : '') : ($_is_first_layout ? 'selected="selected"' : '');
    270                         printf('<option value="%s" %s>%s</option>', $slug, $_selected, $layout['title']);
     272                    foreach ( $_layouts as $slug => $layout) {
     273                        $_selected = $current_layout ? (( $current_layout == $slug) ? 'selected="selected"' : '') : ( $_is_first_layout ? 'selected="selected"' : '' );
     274                        printf( '<option value="%s" %s>%s</option>', $slug, $_selected, $layout['title']);
    271275                        $_is_first_layout = false;
    272276                    }
     
    274278                </select>                                           
    275279
    276                 <a id="kpb-button-save-layouts" href="#" onclick="Kopa_Page_Builder.save_layout(event, jQuery(this));" class="button button-primary button-large kpb-pull-right" data-status='1'><?php _e('Save', 'kopa-page-builder'); ?></a>     
    277 
    278                 <a id="kpb-button-hide-preview" href="#" onclick="Kopa_Page_Builder.hide_preview(event, jQuery(this));" class="button button-link button-large kpb-pull-right"><?php _e('Hide preview', 'kopa-page-builder'); ?></a>
    279 
    280                 <a id="kpb-button-customize-layout" href="#" onclick="Kopa_Page_Builder.open_customize_layout(event, jQuery(this));" class="button button-link button-large kpb-pull-right"><?php _e('Customize', 'kopa-page-builder'); ?></a>
     280                <a id="kpb-button-save-layouts" href="#" onclick="Kopa_Page_Builder.save_layout(event, jQuery(this));" class="button button-primary button-large kpb-pull-right" data-status='1'><?php esc_html_e( 'Save', 'kopa-page-builder' ); ?></a>       
     281
     282                <?php
     283                $is_use_preview = (int) apply_filters( 'kpb_is_use_preview', 1 );
     284                if( $is_use_preview ):
     285                ?>
     286                    <a id="kpb-button-hide-preview" href="#" onclick="Kopa_Page_Builder.hide_preview(event, jQuery(this));" class="button button-link button-large kpb-pull-right" data-status='0'><?php esc_html_e( 'Show preview', 'kopa-page-builder' ); ?></a>
     287                <?php endif; ?>                 
     288
     289                <a id="kpb-button-customize-layout" href="#" onclick="Kopa_Page_Builder.open_customize_layout(event, jQuery(this));" class="button button-link button-large kpb-pull-right"><?php esc_html_e( 'Customize', 'kopa-page-builder' ); ?></a>
    281290            </header>
    282291
     
    284293            $_is_first_layout = true;
    285294            $_layout_index = 0;
    286             foreach ($_layouts as $layout_slug => $layout):                         
    287                 $current_layout_data = self::get_current_layout_data($post->ID, $layout_slug);
     295            foreach ( $_layouts as $layout_slug => $layout):                       
     296                $current_layout_data = self::get_current_layout_data( $post->ID, $layout_slug);
    288297               
    289                 $_classes = array('kpb-layout', 'kpb-row');             
    290                 $_classes[] = $current_layout ? (($current_layout == $layout_slug) ? 'kpb-active' : 'kpb-hidden') : ($_is_first_layout ? 'kpb-active' : 'kpb-hidden');             
     298                $_classes = array( 'kpb-layout', 'kpb-row' );               
     299                $_classes[] = $current_layout ? (( $current_layout == $layout_slug) ? 'kpb-active' : 'kpb-hidden') : ( $_is_first_layout ? 'kpb-active' : 'kpb-hidden' );               
    291300            ?>
    292301
    293             <div id="<?php echo "kpb-layout-{$layout_slug}"; ?>" class="<?php echo implode(' ', $_classes); ?>" data-layout="<?php echo $layout_slug; ?>">
    294                 <?php if(isset($layout['section']) && !empty($layout['section'])): ?>
    295                     <div class="kpb-col-left kpb-col-8">
     302            <div id="<?php echo "kpb-layout-{$layout_slug}"; ?>" class="<?php echo implode( ' ', $_classes); ?>" data-layout="<?php echo $layout_slug; ?>">
     303                <?php if(isset( $layout['section']) && !empty( $layout['section'])): ?>
     304                    <div class="kpb-col-left kpb-col-12">
    296305                        <?php
    297                         if( $sections = isset($layout['section']) && !empty($layout['section']) ? $layout['section'] : false):                         
     306                        if( $sections = isset( $layout['section']) && !empty( $layout['section']) ? $layout['section'] : false):                           
    298307
    299308                            $_is_first_section = true;
    300                             foreach ($sections as $section_slug => $section) :
    301                                 $_section_classes = ($_is_first_section) ? 'kpb-section kpb-first' : 'kpb-section';                             
     309                            foreach ( $sections as $section_slug => $section) :
     310                                $_section_classes = ( $_is_first_section) ? 'kpb-section kpb-first' : 'kpb-section';                               
    302311                            ?>
    303312                                <aside id="<?php echo "kpb-section-{$section_slug}-for-layout{$layout_slug}"; ?>" data-section="<?php echo $section_slug; ?>" class="<?php echo $_section_classes; ?>">
    304313                                    <header class="kpb-section-header kpb-clearfix">
    305                                         <label class="kpb-pull-left"><?php echo esc_attr($section['title']); ?></label>
     314                                        <label class="kpb-pull-left"><?php echo esc_attr( $section['title']); ?></label>
    306315                                       
    307                                         <?php if(!empty($_section_fields)): ?>
     316                                        <?php if(!empty( $_section_fields)): ?>
    308317                                            <a href="#"
    309                                             onclick="Kopa_Page_Builder.open_customize(event, jQuery(this), '<?php echo $layout_slug;?>', '<?php echo $section_slug; ?>');"
     318                                            onclick="Kopa_Page_Builder.open_customize(event, jQuery(this), '<?php echo $layout_slug;?>', '<?php echo $section_slug; ?>' );"
    310319                                            class="kpb-button-customize kpb-pull-right" ></a>       
    311320                                        <?php endif; ?>
     
    315324                                            <?php
    316325                                           
    317                                             if( $areas = isset($section['area']) && !empty($section['area']) ? $section['area'] : false):                           
     326                                            if( $areas = isset( $section['area']) && !empty( $section['area']) ? $section['area'] : false):                         
    318327                                               
    319328                                                $_section_grid = $section['grid'];
    320329
    321330
    322                                                 foreach ($areas as $area_index => $area):
    323                                                     if(is_array($area)):
     331                                                foreach ( $areas as $area_index => $area):
     332                                                    if(is_array( $area)):
    324333                                                        ?>
    325                                                         <div class="<?php printf('kpb-col-%d', (int)$_section_grid[$area_index]); ?>">                                                     
     334                                                        <div class="<?php printf( 'kpb-col-%d', (int)$_section_grid[$area_index]); ?>">                                                     
    326335                                                                <?php
    327336                                                                $sub_grids = $area['grid'];
    328337                                                                $sub_areas = $area['area'];
    329338
    330                                                                 foreach($sub_areas as $sub_area_index => $sub_area){
     339                                                                foreach( $sub_areas as $sub_area_index => $sub_area){
    331340                                                                    $sub_area_class = (0 == $sub_area_index) ? 'kpb-row-sub-area-first' : '';
    332341                                                                    ?>
    333342                                                                    <div class="kpb-row kpb-clearfix kpb-row-sub-area <?php echo $sub_area_class;?>">
    334343                                                                        <?php
    335                                                                         foreach($sub_area as $child_area_area => $child_area):
     344                                                                        foreach( $sub_area as $child_area_area => $child_area):
    336345                                                                            $_area_name    = $_areas[$child_area];
    337                                                                             $_area_classes =  array('kpb-area');
     346                                                                            $_area_classes =  array( 'kpb-area' );
    338347                                                                            ?>
    339                                                                             <div class="<?php printf('kpb-col-%d', (int)$sub_grids[$sub_area_index][$child_area_area]); ?>">
    340                                                                                 <div id="<?php echo "kpb-area-{$child_area}-for-section{$section_slug}"; ?>" data-area="<?php echo $child_area; ?>" class="<?php echo implode(' ', $_area_classes); ?>">
     348                                                                            <div class="<?php printf( 'kpb-col-%d', (int)$sub_grids[$sub_area_index][$child_area_area]); ?>">
     349                                                                                <div id="<?php echo "kpb-area-{$child_area}-for-section{$section_slug}"; ?>" data-area="<?php echo $child_area; ?>" class="<?php echo implode( ' ', $_area_classes); ?>">
    341350                                                                                    <header class="kpb-area-header kpb-clearfix">
    342                                                                                         <label><?php echo esc_attr($_area_name); ?></label>
     351                                                                                        <label><?php echo esc_attr( $_area_name); ?></label>
    343352                                                                                        <br/>
    344353                                                                                        <a href="#"
    345354                                                                                        onclick="Kopa_Page_Builder.open_list_widgets(event, jQuery(this));"
    346                                                                                         class="kpb-button-add-widget"><?php _e('Add widget', 'kopa-page-builder'); ?></a>       
     355                                                                                        class="kpb-button-add-widget"><?php esc_html_e( 'Add widget', 'kopa-page-builder' ); ?></a>     
    347356                                                                                    </header>
    348357
    349358                                                                                    <div class="kpb-area-placeholder">
    350359                                                                                        <?php                                                                                                                       
    351                                                                                             if( isset($current_layout_data[$section_slug][$child_area]) && 
    352                                                                                                 !empty($current_layout_data[$section_slug][$child_area])):                                         
     360                                                                                            if( isset( $current_layout_data[$section_slug][$child_area]) && 
     361                                                                                                !empty( $current_layout_data[$section_slug][$child_area])):                                         
    353362
    354363                                                                                                $widgets = $current_layout_data[$section_slug][$child_area];
    355364                                                                           
    356                                                                                                 foreach ($widgets as $widget_id => $widget):   
    357                                                                                                     $widget_data = get_post_meta($post->ID, $widget_id,true);
    358 
    359                                                                                                     $widget_title = isset($widget_data['widget']['title']) && !empty($widget_data['widget']['title']) ? $widget['name'] . ' : ' . $widget_data['widget']['title'] : $widget['name'];
     365                                                                                                foreach ( $widgets as $widget_id => $widget):   
     366                                                                                                    $widget_data = get_post_meta( $post->ID, $widget_id,true);
     367
     368                                                                                                    $widget_title = isset( $widget_data['widget']['title']) && !empty( $widget_data['widget']['title']) ? $widget['name'] . ' : ' . $widget_data['widget']['title'] : $widget['name'];
    360369                                                                                                                                                                       
    361370                                                                                                    ?>
    362                                                                                                     <aside id="<?php echo esc_attr($widget_id); ?>" class="kpb-widget" data-class="<?php echo esc_attr($widget['class_name']); ?>" data-name="<?php echo esc_attr($widget['name']); ?>">
     371                                                                                                    <aside id="<?php echo esc_attr( $widget_id); ?>" class="kpb-widget" data-class="<?php echo esc_attr( $widget['class_name']); ?>" data-name="<?php echo esc_attr( $widget['name']); ?>">
    363372                                                                                                        <div class="kpb-widget-inner kpb-clearfix">                                         
    364                                                                                                             <label class=""><?php echo esc_attr($widget_title); ?></label> 
     373                                                                                                            <label class=""><?php echo esc_attr( $widget_title); ?></label>
    365374                                                                                                            <br/>   
    366375                                                                                                            <div class="kpb-widget-action kpb-clearfix">                                       
    367                                                                                                                 <a href="#" onclick="Kopa_Page_Builder.edit_widget(event, jQuery(this), '<?php echo esc_attr($widget_id); ?>');" class="kpb-button-edit kpb-pull-left"><?php _e('Edit', 'kopa-page-builder'); ?></a>                                                                                   
    368                                                                                                                 <a href="#" onclick="Kopa_Page_Builder.delete_widget(event, jQuery(this), '<?php echo esc_attr($widget_id); ?>');" class="kpb-button-delete kpb-pull-left"><?php _e('Delete', 'kopa-page-builder'); ?></a>                                                                                 
     376                                                                                                                <a href="#" onclick="Kopa_Page_Builder.edit_widget(event, jQuery(this), '<?php echo esc_attr( $widget_id); ?>' );" class="kpb-button-edit kpb-pull-left"><?php esc_html_e( 'Edit', 'kopa-page-builder' ); ?></a>                                                                                   
     377                                                                                                                <a href="#" onclick="Kopa_Page_Builder.delete_widget(event, jQuery(this), '<?php echo esc_attr( $widget_id); ?>' );" class="kpb-button-delete kpb-pull-left"><?php esc_html_e( 'Delete', 'kopa-page-builder' ); ?></a>                                                                                 
    369378                                                                                                            </div>
    370379                                                                                                        </div>                   
     
    390399                                                    else:
    391400                                                        $_area_name = $_areas[$area];
    392                                                         $_area_classes =  array('kpb-area');
     401                                                        $_area_classes =  array( 'kpb-area' );
    393402                                                        ?>
    394                                                         <div class="<?php printf('kpb-col-%d', (int)$_section_grid[$area_index]); ?>">
    395                                                             <div id="<?php echo "kpb-area-{$area}-for-section{$section_slug}"; ?>" data-area="<?php echo $area; ?>" class="<?php echo implode(' ', $_area_classes); ?>">
     403                                                        <div class="<?php printf( 'kpb-col-%d', (int)$_section_grid[$area_index]); ?>">
     404                                                            <div id="<?php echo "kpb-area-{$area}-for-section{$section_slug}"; ?>" data-area="<?php echo $area; ?>" class="<?php echo implode( ' ', $_area_classes); ?>">
    396405                                                                <header class="kpb-area-header kpb-clearfix">
    397                                                                     <label><?php echo esc_attr($_area_name); ?></label>
     406                                                                    <label><?php echo esc_attr( $_area_name); ?></label>
    398407                                                                    <br/>
    399408                                                                    <a href="#"
    400409                                                                    onclick="Kopa_Page_Builder.open_list_widgets(event, jQuery(this));"
    401                                                                     class="kpb-button-add-widget"><?php _e('Add widget', 'kopa-page-builder'); ?></a>       
     410                                                                    class="kpb-button-add-widget"><?php esc_html_e( 'Add widget', 'kopa-page-builder' ); ?></a>     
    402411                                                                </header>
    403412
    404413                                                                <div class="kpb-area-placeholder">
    405414                                                                    <?php                                                                                                                       
    406                                                                         if( isset($current_layout_data[$section_slug][$area]) && 
    407                                                                             !empty($current_layout_data[$section_slug][$area])):                                           
     415                                                                        if( isset( $current_layout_data[$section_slug][$area]) && 
     416                                                                            !empty( $current_layout_data[$section_slug][$area])):                                           
    408417
    409418                                                                            $widgets = $current_layout_data[$section_slug][$area];
    410419                                                       
    411                                                                             foreach ($widgets as $widget_id => $widget):   
    412                                                                                 $widget_data = get_post_meta($post->ID, $widget_id,true);
    413 
    414                                                                                 $widget_title = isset($widget_data['widget']['title']) && !empty($widget_data['widget']['title']) ? $widget['name'] . ' : ' . $widget_data['widget']['title'] : $widget['name'];
     420                                                                            foreach ( $widgets as $widget_id => $widget):   
     421                                                                                $widget_data = get_post_meta( $post->ID, $widget_id,true);
     422
     423                                                                                $widget_title = isset( $widget_data['widget']['title']) && !empty( $widget_data['widget']['title']) ? $widget['name'] . ' : ' . $widget_data['widget']['title'] : $widget['name'];
    415424                                                                                                                                                   
    416425                                                                                ?>
    417                                                                                 <aside id="<?php echo esc_attr($widget_id); ?>" class="kpb-widget" data-class="<?php echo esc_attr($widget['class_name']); ?>" data-name="<?php echo esc_attr($widget['name']); ?>">
     426                                                                                <aside id="<?php echo esc_attr( $widget_id); ?>" class="kpb-widget" data-class="<?php echo esc_attr( $widget['class_name']); ?>" data-name="<?php echo esc_attr( $widget['name']); ?>">
    418427                                                                                    <div class="kpb-widget-inner kpb-clearfix">                                         
    419                                                                                         <label class=""><?php echo esc_attr($widget_title); ?></label> 
     428                                                                                        <label class=""><?php echo esc_attr( $widget_title); ?></label>
    420429                                                                                        <br/>   
    421430                                                                                        <div class="kpb-widget-action kpb-clearfix">                                       
    422                                                                                             <a href="#" onclick="Kopa_Page_Builder.edit_widget(event, jQuery(this), '<?php echo esc_attr($widget_id); ?>');" class="kpb-button-edit kpb-pull-left"><?php _e('Edit', 'kopa-page-builder'); ?></a>                                                                                   
    423                                                                                             <a href="#" onclick="Kopa_Page_Builder.delete_widget(event, jQuery(this), '<?php echo esc_attr($widget_id); ?>');" class="kpb-button-delete kpb-pull-left"><?php _e('Delete', 'kopa-page-builder'); ?></a>                                                                                 
     431                                                                                            <a href="#" onclick="Kopa_Page_Builder.edit_widget(event, jQuery(this), '<?php echo esc_attr( $widget_id); ?>' );" class="kpb-button-edit kpb-pull-left"><?php esc_html_e( 'Edit', 'kopa-page-builder' ); ?></a>                                                                                   
     432                                                                                            <a href="#" onclick="Kopa_Page_Builder.delete_widget(event, jQuery(this), '<?php echo esc_attr( $widget_id); ?>' );" class="kpb-button-delete kpb-pull-left"><?php esc_html_e( 'Delete', 'kopa-page-builder' ); ?></a>                                                                                 
    424433                                                                                        </div>
    425434                                                                                    </div>                   
     
    450459                <?php endif; ?>
    451460
    452                 <?php if(isset($layout['preview']) && !empty($layout['preview'])): ?>
    453                     <div class="kpb-col-right kpb-col-4">
     461                <?php if(isset( $layout['preview']) && !empty( $layout['preview'])): ?>
     462                    <div class="kpb-col-right kpb-col-4" style="display: none;">
    454463                        <span class="kpb-preview-images"><img src="<?php echo $layout['preview']; ?>"></span>                   
    455464                    </div>
     
    466475    }
    467476
    468     public function print_ajax_security(){
     477    public function print_ajax_security() {
    469478        wp_nonce_field("kpb_get_widget_form", "kpb_get_widget_form_security", FALSE);
    470479        wp_nonce_field("kpb_delete_widget", "kpb_delete_widget_security", FALSE);
     
    473482    }
    474483
    475     public function get_widget_form(){
    476         check_ajax_referer('kpb_get_widget_form', 'security');
    477 
    478         if ($_POST['class_name']) {
     484    public function get_widget_form() {
     485        check_ajax_referer( 'kpb_get_widget_form', 'security' );
     486
     487        if ( $_POST['class_name']) {
    479488            $class_name = $_POST['class_name'];
    480489            $instance = array();
    481490            $customize_data = array();
    482491
    483             if (isset($_POST['widget_id'])) {
    484                 $widget_id = $_POST['widget_id'];
    485 
    486                 $post_id = (int) $_POST['post_id'];
    487                 $data = get_post_meta($post_id, $widget_id, true);
    488 
    489                 $instance = $data['widget'];
    490                 $customize_data = isset($data['customize']) ? $data['customize'] : array();
     492            if (isset( $_POST['widget_id'])) {
     493                $widget_id      = $_POST['widget_id'];
     494               
     495                $post_id        = (int) $_POST['post_id'];
     496                $data           = get_post_meta( $post_id, $widget_id, true);
     497               
     498                $instance      = $data['widget'];
     499                $customize_data = isset( $data['customize']) ? $data['customize'] : array();
    491500            }
    492501
    493502            $widget = new $class_name;
    494             $widget->id_base = rand(0, 9999);
    495             $widget->number = rand(0, 9999);           
    496 
    497             if(isset($widget->kpb_is_private)){
     503            $widget->id_base = rand(0, 9999);
     504            $widget->number = rand(0, 9999);           
     505
     506            if(isset( $widget->kpb_is_private)){
    498507                $widget->kpb_is_private = false;
    499508            }
     
    502511            $customize_key = self::get_meta_key_widget_customize();
    503512           
    504             $customize_fields = apply_filters('kopa_page_builder_get_customize_fields', array());                     
    505 
    506             if(!empty($customize_fields)){
     513            $customize_fields = apply_filters( 'kopa_page_builder_get_customize_fields', array());                     
     514
     515            if(!empty( $customize_fields)){
    507516                ?>
    508517                <section class="kpb-widget-customize kpb-wrapper-configuration">
     
    511520                            <ul class="kpb-clearfix">
    512521                                <li class="kpb-tab-title kpb-tab-title-first kpb-tab-title-active">
    513                                     <a href="<?php echo "#kpb-tab-widget-{$widget->id_base}"; ?>" onclick="Kopa_Page_Builder.change_customize_tab(event, jQuery(this));"><?php _e('Widget', 'kopa-page-builder'); ?></a>
     522                                    <a href="<?php echo "#kpb-tab-widget-{$widget->id_base}"; ?>" onclick="Kopa_Page_Builder.change_customize_tab(event, jQuery(this));"><?php esc_html_e( 'Widget', 'kopa-page-builder' ); ?></a>
    514523                                </li>
    515524
    516525                                <?php                                   
    517                                 foreach ($customize_fields  as $tab_slug => $tab):                                 
     526                                foreach ( $customize_fields  as $tab_slug => $tab):                                 
    518527                                    $tab_id = $tab_slug . '-tab-' . $widget->id_base;
    519528                                    ?>
    520529                                    <li class="kpb-tab-title">
    521                                         <a href="<?php echo "#{$tab_id}"; ?>"  onclick="Kopa_Page_Builder.change_customize_tab(event, jQuery(this));"><?php echo esc_attr($tab['title']); ?></a>
     530                                        <a href="<?php echo "#{$tab_id}"; ?>"  onclick="Kopa_Page_Builder.change_customize_tab(event, jQuery(this));"><?php echo esc_attr( $tab['title']); ?></a>
    522531                                    </li>
    523532                                    <?php   
     
    528537                   
    529538                        <div id="<?php echo "kpb-tab-widget-{$widget->id_base}"; ?>" class="kpb-tab-content">
    530                             <?php $widget->form($instance); ?>
     539                            <?php $widget->form( $instance); ?>
    531540                        </div>
    532541
    533542                        <?php   
    534                         foreach ($customize_fields  as $tab_slug => $tab):     
     543                        foreach ( $customize_fields  as $tab_slug => $tab):     
    535544                            $tab_id = $tab_slug . '-tab-' . $widget->id_base;
    536545                            ?>
    537546                            <div id="<?php echo $tab_id; ?>" class="kpb-tab-content" style="display:none;">
    538547                                <?php
    539                                 foreach ($tab['params'] as $param_key => $param_args):
    540 
    541                                     $param_args['name'] = sprintf('%s[%s][%s]', $customize_key, $tab_slug, $param_key);                                             
    542                                     $param_args['value'] = isset($customize_data[$tab_slug][$param_key]) ? $customize_data[$tab_slug][$param_key] : (isset($param_args['default']) ? $param_args['default'] : null);                                                       
     548                                foreach ( $tab['params'] as $param_key => $param_args):
     549
     550                                    $param_args['name'] = sprintf( '%s[%s][%s]', $customize_key, $tab_slug, $param_key);                                               
     551                                    $param_args['value'] = isset( $customize_data[$tab_slug][$param_key]) ? $customize_data[$tab_slug][$param_key] : (isset( $param_args['default']) ? $param_args['default'] : null);                                                     
    543552                                   
    544                                     $this->get_control($param_args);
     553                                    $this->get_control( $param_args);
    545554
    546555                                endforeach;
     
    553562                <?php
    554563            }else{
    555                 $widget->form($instance);
     564                $widget->form( $instance);
    556565            }
    557566        }
     
    560569    }
    561570
    562     public function load_lightbox_html(){
    563         check_ajax_referer('kpb_load_lightbox_html', 'security');
    564 
    565         if(isset($_POST['post_id'])){
     571    public function load_lightbox_html() {
     572        check_ajax_referer( 'kpb_load_lightbox_html', 'security' );
     573
     574        if(isset( $_POST['post_id'])){
    566575            $post_id = $_POST['post_id'];
    567576
     
    570579
    571580            <div id="kpb-loading-overlay">
    572                 <span><?php _e('Progressing..', 'kopa-page-builder'); ?></span>
     581                <span><?php esc_html_e( 'Progressing..', 'kopa-page-builder' ); ?></span>
    573582            </div>
    574583
     
    576585                <section id="kpb-widgets"> 
    577586                    <header id="kpb-widgets-header" class="kpb-clearfix">
    578                         <label class="kpb-pull-left"><?php _e('Avaiable Widgets', 'kopa-page-builder'); ?></label>
    579                         <a href="#" onclick="Kopa_Page_Builder.close_list_widgets(event);" class="button button-link button-delete kpb-pull-right"><?php _e('Close', 'kopa-page-builder'); ?></a>
     587                        <label class="kpb-pull-left"><?php esc_html_e( 'Avaiable Widgets', 'kopa-page-builder' ); ?></label>
     588                        <a href="#" onclick="Kopa_Page_Builder.close_list_widgets(event);" class="button button-link button-delete kpb-pull-right"><?php esc_html_e( 'Close', 'kopa-page-builder' ); ?></a>
    580589                    </header>   
    581590                    <div class="kpb-widgets-inner">
     
    583592                        $widgets = $wp_widget_factory->widgets;
    584593                       
    585                         $widgets = apply_filters('kpb_get_widgets_list', $widgets);
     594                        $widgets = apply_filters( 'kpb_get_widgets_list', $widgets);
    586595
    587596                        $widgets_inprocess = array();
    588597                        $blocks = array();
    589598
    590                         foreach ($widgets as $class_name => $widget_info){
    591                             if (isset($widget_info->kpb_group) && !empty($widget_info->kpb_group)){
     599                        foreach ( $widgets as $class_name => $widget_info){
     600                            if (isset( $widget_info->kpb_group) && !empty( $widget_info->kpb_group)){
    592601                                $group_slug = $widget_info->kpb_group;
    593602                            }else{
    594                                 if(strpos(strtolower($widget_info->name), 'bbpress')){
     603                                if(strpos(strtolower( $widget_info->name), 'bbpress')){
    595604                                    $group_slug = 'bbpress';
    596                                 }else if (strpos(strtolower($widget_info->name), 'commerce')){
     605                                }else if (strpos(strtolower( $widget_info->name), 'commerce')){
    597606                                    $group_slug = 'product';
    598607                                }else{
     
    602611                             
    603612                           
    604                             if(!isset($blocks[$group_slug])){
    605                                 $blocks[$group_slug]['title'] = $this->str_beautify($group_slug);                           
     613                            if(!isset( $blocks[$group_slug])){
     614                                $blocks[$group_slug]['title'] = $this->str_beautify( $group_slug);                         
    606615                            }
    607616
     
    609618                        }
    610619
    611                         ksort($blocks);
     620                        ksort( $blocks);
    612621
    613622                        ?>
     
    616625                                <nav id="kpb-nav-list-blocks">
    617626                                    <ul class="kpb-clearfix">
    618                                         <?php   
     627                                        <?php
     628                                        ob_start();
    619629                                        $_is_first_tab = true;                                 
    620                                         foreach($blocks as $block_slug => $block_info):
     630                                        foreach( $blocks as $block_slug => $block_info):
    621631                                            $classes = $_is_first_tab ? 'kpb-tab-title kpb-tab-title-first kpb-tab-title-active' : 'kpb-tab-title';
    622632                                            $tab_id = $this->str_uglify("kpb-list-{$block_slug}-blocks");
    623633                                            ?>
    624634                                            <li class="<?php echo $classes;?>">
    625                                                 <a href="<?php echo "#{$tab_id}"; ?>"><?php echo esc_attr($block_info['title']); ?></a>
     635                                                <a href="<?php echo "#{$tab_id}"; ?>"><?php echo esc_attr( $block_info['title']); ?></a>
    626636                                            </li>
    627637                                            <?php   
    628638                                            $_is_first_tab = false;
    629639                                        endforeach;
     640                                        $nav = ob_get_clean();
     641                                        $nav = apply_filters( 'kopa_page_buider_get_block_nav_html', $nav, $blocks );
     642                                        echo wp_kses_post( $nav );
    630643                                        ?>
    631644                                    </ul>
     
    636649                                $_is_first_tab = true;
    637650
    638                                 foreach($blocks as $block_slug => $block_info):
     651                                foreach( $blocks as $block_slug => $block_info):
    639652                                    $blocks_classes = (0 == $index_block) ? 'kpb-tab-content kpb-list-blocks kpb-list-blocks-first kpb-clearfix' : 'kpb-tab-content kpb-list-blocks kpb-clearfix';
    640653                                    $display = $_is_first_tab ? 'block' : 'none';                                       
     
    648661                                            $widgets = $block_info['items'];
    649662                                           
    650                                             ksort($widgets);
    651 
    652                                             foreach ($widgets as $class_name => $widget_info):
    653                                                 if (1 == $index_single || ($index_single % 5 == 0)) {
     663                                            ksort( $widgets);
     664
     665                                            foreach ( $widgets as $class_name => $widget_info):
     666                                                if (1 == $index_single || ( $index_single % 5 == 0)) {
    654667                                                    if(1 == $index_global){
    655668                                                        echo '<div class="kpb-row kpb-first">';
     
    663676                                                        <header class="kpb-clearfix">
    664677                                                            <label class="kpb-pull-left"><?php echo $widget_info->name; ?></label>
    665                                                             <a href="#" onclick="Kopa_Page_Builder.add_widget(event, jQuery(this), '<?php echo $class_name; ?>', '<?php echo $widget_info->name; ?>');" class="kpb-button-use kpb-pull-right"><?php _e('use', 'kopa-page-builder'); ?></a>
     678                                                            <a href="#" onclick="Kopa_Page_Builder.add_widget(event, jQuery(this), '<?php echo $class_name; ?>', '<?php echo $widget_info->name; ?>' );" class="kpb-button-use kpb-pull-right"><?php esc_html_e( 'use', 'kopa-page-builder' ); ?></a>
    666679                                                        </header>   
    667680
     
    672685                                                </aside>
    673686                                                <?php
    674                                                 if (($index_single % 4 == 0) || ($index_global == count($widgets))) {
     687                                                if (( $index_single % 4 == 0) || ( $index_global == count( $widgets))) {
    675688                                                    echo '</div>';
    676689                                                    $index_single = 1;
     
    696709            <div id="kpb-widget-lightbox" style="display: none;">
    697710                <section id="kpb-widget">               
    698                     <form id="kpb-form-widget" name="kpb-form-widget"  method="POST" autocomplete="off" onsubmit="Kopa_Page_Builder.save_widget(event, jQuery(this));" action="<?php echo esc_url(wp_nonce_url(admin_url('admin-ajax.php?action=kpb_save_widget'), 'kpb_save_widget', 'security')); ?>">
     711                    <form id="kpb-form-widget" name="kpb-form-widget"  method="POST" autocomplete="off" onsubmit="Kopa_Page_Builder.save_widget(event, jQuery(this));" action="<?php echo esc_url(wp_nonce_url(admin_url( 'admin-ajax.php?action=kpb_save_widget' ), 'kpb_save_widget', 'security' ) ); ?>">
    699712                        <header id="kpb-widget-header" class="kpb-clearfix">
    700                             <label id="kpb-widget-title" class="kpb-pull-left"><?php _e('Widget Name', 'kopa-page-builder'); ?></label>
    701                             <a href="#" onclick="Kopa_Page_Builder.close_widget(event);" class="button button-link button-delete kpb-pull-right"><?php _e('Close', 'kopa-page-builder'); ?></a>
     713                            <label id="kpb-widget-title" class="kpb-pull-left"><?php esc_html_e( 'Widget Name', 'kopa-page-builder' ); ?></label>
     714                            <a href="#" onclick="Kopa_Page_Builder.close_widget(event);" class="button button-link button-delete kpb-pull-right"><?php esc_html_e( 'Close', 'kopa-page-builder' ); ?></a>
    702715                        </header>
    703716
    704717                        <div class="kpb-form-inner">
    705                             <center class="kpb-loading"><?php _e('Loading...', 'kopa-page-builder'); ?></center>
     718                            <center class="kpb-loading"><?php esc_html_e( 'Loading...', 'kopa-page-builder' ); ?></center>
    706719                        </div>                 
    707720
     
    713726                   
    714727                        <footer id="kpb-widget-footer" class="kpb-clearfix">
    715                             <button type="submit" class="button button-primary kpb-pull-right"><?php _e('Save', 'kopa-page-builder'); ?></button>                   
     728                            <button type="submit" class="button button-primary kpb-pull-right"><?php esc_html_e( 'Save', 'kopa-page-builder' ); ?></button>                 
    716729                        </footer> 
    717730
     
    722735
    723736            <?php     
    724             $_layouts = apply_filters('kopa_page_builder_get_layouts', array());
    725             $_areas = apply_filters('kopa_page_builder_get_areas', array());
    726             $_section_fields = apply_filters('kopa_page_builder_get_section_fields', array()); 
     737            $_layouts = apply_filters( 'kopa_page_builder_get_layouts', array());
     738            $_areas = apply_filters( 'kopa_page_builder_get_areas', array());
     739            $_section_fields = apply_filters( 'kopa_page_builder_get_section_fields', array());
    727740            $meta_key = self::get_meta_key_wrapper();
    728741           
    729             foreach ($_layouts as $layout_slug => $layout) :
    730                 if( $sections = isset($layout['section']) && !empty($layout['section']) ? $layout['section'] : false):                         
    731                     foreach ($sections as $section_slug => $section):   
    732                     $data = self::get_current_wrapper_data($post_id, $layout_slug, $section_slug);
     742            foreach ( $_layouts as $layout_slug => $layout) :
     743                if( $sections = isset( $layout['section']) && !empty( $layout['section']) ? $layout['section'] : false):                           
     744                    foreach ( $sections as $section_slug => $section): 
     745                    $data = self::get_current_wrapper_data( $post_id, $layout_slug, $section_slug);
    733746                    ?>
    734747                    <div id="<?php echo "kpb-customize-lightbox-{$layout_slug}-{$section_slug}"; ?>" class="kpb-customize-lightbox" style="display: none;">             
    735748                        <section class="kpb-customize">
    736                             <form name="<?php echo "kpb-form-customize-layout-{$layout_slug}-section-{$section_slug}" ?>"  method="POST" autocomplete="off" onsubmit="Kopa_Page_Builder.save_customize(event, jQuery(this), <?php echo (int) $post_id;?>);" action="<?php echo esc_url(wp_nonce_url(admin_url('admin-ajax.php?action=kpb_save_customize'), 'kpb_save_customize', 'security')); ?>">
     749                            <form name="<?php echo "kpb-form-customize-layout-{$layout_slug}-section-{$section_slug}" ?>"  method="POST" autocomplete="off" onsubmit="Kopa_Page_Builder.save_customize(event, jQuery(this), <?php echo (int) $post_id;?>);" action="<?php echo esc_url(wp_nonce_url(admin_url( 'admin-ajax.php?action=kpb_save_customize' ), 'kpb_save_customize', 'security' ) ); ?>">
    737750                                <input type="hidden" name="layout" value="<?php echo $layout_slug; ?>" autocomplete="off">
    738751                                <input type="hidden" name="section" value="<?php echo $section_slug; ?>" autocomplete="off">
     
    741754                                    <label class="kpb-section-title kpb-pull-left"><?php echo $section['title']; ?></label>
    742755
    743                                     <a href="#" onclick="Kopa_Page_Builder.close_customize(event);" class="button button-link button-delete kpb-pull-right"><?php _e('Close', 'kopa-page-builder'); ?></a>
    744                                     <button type="submit" class="button button-primary kpb-pull-right"><?php _e('Save', 'kopa-page-builder'); ?></button>                                                               
     756                                    <a href="#" onclick="Kopa_Page_Builder.close_customize(event);" class="button button-link button-delete kpb-pull-right"><?php esc_html_e( 'Close', 'kopa-page-builder' ); ?></a>
     757                                    <button type="submit" class="button button-primary kpb-pull-right"><?php esc_html_e( 'Save', 'kopa-page-builder' ); ?></button>                                                             
    745758                                </header>
    746759
     
    752765                                                    <?php   
    753766                                                    $_is_first_tab = true;                                 
    754                                                     foreach ($_section_fields  as $fields_slug => $fields):
     767                                                    foreach ( $_section_fields  as $fields_slug => $fields):
    755768                                                        $classes = $_is_first_tab ? 'kpb-tab-title kpb-tab-title-first kpb-tab-title-active' : 'kpb-tab-title';
    756769                                                        $tab_id = $section_slug . '-field-' . $fields_slug;
    757770                                                        ?>
    758771                                                        <li class="<?php echo $classes;?>">
    759                                                             <a href="<?php echo "#{$tab_id}"; ?>"><?php echo esc_attr($fields['title']); ?></a>
     772                                                            <a href="<?php echo "#{$tab_id}"; ?>"><?php echo esc_attr( $fields['title']); ?></a>
    760773                                                        </li>
    761774                                                        <?php   
     
    768781                                            <?php   
    769782                                            $_is_first_tab = true;                                 
    770                                             foreach ($_section_fields  as $fields_slug => $fields):
     783                                            foreach ( $_section_fields  as $fields_slug => $fields):
    771784                                                $display = $_is_first_tab ? 'block' : 'none';                                       
    772785                                                $tab_id = $section_slug . '-field-' . $fields_slug;
     
    774787                                                <div id="<?php echo $tab_id; ?>" class="kpb-tab-content" style="display:<?php echo $display;?>;">
    775788                                                    <?php
    776                                                     foreach ($fields['params'] as $param_key => $param_args):
    777 
    778                                                         $param_args['name'] = sprintf('%s-%s-%s[%s][%s]', $meta_key, $layout_slug, $section_slug, $fields_slug, $param_key);                                               
    779                                                         $param_args['value'] = isset($data[$fields_slug][$param_key]) ? $data[$fields_slug][$param_key] : (isset($param_args['default']) ? $param_args['default'] : null);                                                     
     789                                                    foreach ( $fields['params'] as $param_key => $param_args):
     790
     791                                                        $param_args['name'] = sprintf( '%s-%s-%s[%s][%s]', $meta_key, $layout_slug, $section_slug, $fields_slug, $param_key);                                               
     792                                                        $param_args['value'] = isset( $data[$fields_slug][$param_key]) ? $data[$fields_slug][$param_key] : (isset( $param_args['default']) ? $param_args['default'] : null);                                                       
    780793                                                       
    781                                                         $this->get_control($param_args);
     794                                                        $this->get_control( $param_args);
    782795
    783796                                                    endforeach;
     
    798811                endif;
    799812
    800                 if( isset($layout['customize']) && !empty($layout['customize'])){
    801                     $data = self::get_layout_customize_data($post_id, $layout_slug);               
     813                if( isset( $layout['customize']) && !empty( $layout['customize'])){
     814                    $data = self::get_layout_customize_data( $post_id, $layout_slug);               
    802815                    ?>
    803816                    <div id="<?php echo "kpb-layout-customize-lightbox-{$layout_slug}"; ?>" class="kpb-customize-lightbox" style="display: none;">
    804817                        <section class="kpb-customize">
    805                             <form name="<?php echo "kpb-form-customize-layout-{$layout_slug}" ?>"  method="POST" autocomplete="off" onsubmit="Kopa_Page_Builder.save_layout_customize(event, jQuery(this), <?php echo (int) $post_id;?>);" action="<?php echo esc_url(wp_nonce_url(admin_url('admin-ajax.php?action=kpb_save_layout_customize'), 'kpb_save_layout_customize', 'security')); ?>">
     818                            <form name="<?php echo "kpb-form-customize-layout-{$layout_slug}" ?>"  method="POST" autocomplete="off" onsubmit="Kopa_Page_Builder.save_layout_customize(event, jQuery(this), <?php echo (int) $post_id;?>);" action="<?php echo esc_url(wp_nonce_url(admin_url( 'admin-ajax.php?action=kpb_save_layout_customize' ), 'kpb_save_layout_customize', 'security' ) ); ?>">
    806819                                <input type="hidden" name="layout" value="<?php echo $layout_slug; ?>" autocomplete="off">
    807820
    808821                                <header class="kpb-customize-header kpb-clearfix">
    809822                                    <label class="kpb-section-title kpb-pull-left"><?php echo $layout['title']; ?></label>
    810                                     <a href="#" onclick="Kopa_Page_Builder.close_layout_customize(event);" class="button button-link button-delete kpb-pull-right"><?php _e('Close', 'kopa-page-builder'); ?></a>
    811                                     <button type="submit" class="button button-primary kpb-pull-right"><?php _e('Save', 'kopa-page-builder'); ?></button>                                                               
     823                                    <a href="#" onclick="Kopa_Page_Builder.close_layout_customize(event);" class="button button-link button-delete kpb-pull-right"><?php esc_html_e( 'Close', 'kopa-page-builder' ); ?></a>
     824                                    <button type="submit" class="button button-primary kpb-pull-right"><?php esc_html_e( 'Save', 'kopa-page-builder' ); ?></button>                                                             
    812825                                </header>
    813826
     
    819832                                                    <?php   
    820833                                                    $_is_first_tab = true;                                                                             
    821                                                     foreach ($layout['customize']  as $tab_slug => $tab):
     834                                                    foreach ( $layout['customize']  as $tab_slug => $tab):
    822835                                                        $classes = $_is_first_tab ? 'kpb-tab-title kpb-tab-title-first kpb-tab-title-active' : 'kpb-tab-title';
    823836                                                        $tab_id = 'kpb-layout-customize-' . $layout_slug . '-tab-' . $tab_slug;
    824837                                                        ?>
    825838                                                        <li class="<?php echo $classes;?>">
    826                                                             <a href="<?php echo "#{$tab_id}"; ?>"><?php echo esc_attr($tab['title']); ?></a>
     839                                                            <a href="<?php echo "#{$tab_id}"; ?>"><?php echo esc_attr( $tab['title']); ?></a>
    827840                                                        </li>
    828841                                                        <?php   
     
    835848                                            <?php   
    836849                                            $_is_first_tab = true;                                 
    837                                             foreach ($layout['customize']  as $tab_slug => $tab):
     850                                            foreach ( $layout['customize']  as $tab_slug => $tab):
    838851                                                $display = $_is_first_tab ? 'block' : 'none';                                       
    839852                                                $tab_id = 'kpb-layout-customize-' . $layout_slug . '-tab-' . $tab_slug;
     
    841854                                                <div id="<?php echo $tab_id; ?>" class="kpb-tab-content" style="display:<?php echo $display;?>;">
    842855                                                    <?php
    843                                                     foreach ($tab['params'] as $param_key => $param_args):
    844 
    845                                                         $param_args['name'] = sprintf('%s-%s[%s][%s]', self::get_meta_key_layout_customize(), $layout_slug, $tab_slug, $param_key);                                             
    846                                                         $param_args['value'] = isset($data[$tab_slug][$param_key]) ? $data[$tab_slug][$param_key] : (isset($param_args['default']) ? $param_args['default'] : null);                                                       
     856                                                    foreach ( $tab['params'] as $param_key => $param_args):
     857
     858                                                        $param_args['name'] = sprintf( '%s-%s[%s][%s]', self::get_meta_key_layout_customize(), $layout_slug, $tab_slug, $param_key);                                               
     859                                                        $param_args['value'] = isset( $data[$tab_slug][$param_key]) ? $data[$tab_slug][$param_key] : (isset( $param_args['default']) ? $param_args['default'] : null);                                                     
    847860                                                       
    848                                                         $this->get_control($param_args);
     861                                                        $this->get_control( $param_args);
    849862
    850863                                                    endforeach;
     
    870883
    871884    public function save_widget() {
    872         check_ajax_referer('kpb_save_widget', 'security');
    873 
    874         if (!empty($_POST)) {
     885        check_ajax_referer( 'kpb_save_widget', 'security' );
     886
     887        if (!empty( $_POST)) {
    875888            $data = $_POST;
    876889
     
    882895            $customize_key = self::get_meta_key_widget_customize();
    883896
    884             foreach ($data as $key => $value) {
    885                 if ('widget' == substr($key, 0, 6)) {
    886                     $option['widget'] = reset($value);
    887                 } else if ('kpb-widget-class-name' == $key) {
     897            foreach ( $data as $key => $value) {
     898                if ( 'widget' == substr( $key, 0, 6)) {
     899                    $option['widget'] = reset( $value);
     900                } else if ( 'kpb-widget-class-name' == $key) {
    888901                    $option['class_name'] = $value;
    889                 } else if ('kpb-widget-id' == $key) {
     902                } else if ( 'kpb-widget-id' == $key) {
    890903                    $widget_id = $value;
    891                 } else if ('kpb-post-id' == $key) {
     904                } else if ( 'kpb-post-id' == $key) {
    892905                    $post_id = (int) $value;
    893                 } else if ('kpb-widget-name' == $key){
     906                } else if ( 'kpb-widget-name' == $key){
    894907                    $option['name'] = $value;
    895                 } else if($customize_key == $key){
     908                } else if( $customize_key == $key){
    896909                    $option['customize'] = $value;
    897910                }
     
    900913            //VALIDATE DATA
    901914            $obj = new $option['class_name'];
    902             $option['widget'] = $obj->update($option['widget'], array());
    903 
    904             update_post_meta($post_id, $widget_id, $option);
    905 
    906             $widget_title = (isset($option['widget']['title']) && !empty($option['widget']['title']))  ? $option['name'] . ' : ' . $option['widget']['title'] : $option['name'];
     915            $option['widget'] = $obj->update( $option['widget'], array());
     916
     917            update_post_meta( $post_id, $widget_id, $option);
     918
     919            $widget_title = (isset( $option['widget']['title']) && !empty( $option['widget']['title']))  ? $option['name'] . ' : ' . $option['widget']['title'] : $option['name'];
    907920
    908921            ob_start();           
    909             if ('add' == $_POST['kpb-widget-action']):
     922            if ( 'add' == $_POST['kpb-widget-action']):
    910923                ?>
    911                 <aside id="<?php echo esc_attr($widget_id); ?>" class="kpb-widget" data-class="<?php echo esc_attr($option['class_name']); ?>" data-name="<?php echo esc_attr($option['name']); ?>">
     924                <aside id="<?php echo esc_attr( $widget_id); ?>" class="kpb-widget" data-class="<?php echo esc_attr( $option['class_name']); ?>" data-name="<?php echo esc_attr( $option['name']); ?>">
    912925                    <div class="kpb-widget-inner kpb-clearfix">                                         
    913926                        <label class=""><?php echo $widget_title; ?></label>   
    914927                        <div  class="kpb-widget-action kpb-clearfix">                                                                   
    915                             <a href="#" onclick="Kopa_Page_Builder.edit_widget(event, jQuery(this), '<?php echo esc_attr($widget_id); ?>');" class="kpb-button-edit kpb-pull-left"><?php _e('Edit', 'kopa-page-builder'); ?></a>
    916                             <a href="#" onclick="Kopa_Page_Builder.delete_widget(event, jQuery(this), '<?php echo esc_attr($widget_id); ?>');" class="kpb-button-delete kpb-pull-left"><?php _e('Delete', 'kopa-page-builder'); ?></a>
     928                            <a href="#" onclick="Kopa_Page_Builder.edit_widget(event, jQuery(this), '<?php echo esc_attr( $widget_id); ?>' );" class="kpb-button-edit kpb-pull-left"><?php esc_html_e( 'Edit', 'kopa-page-builder' ); ?></a>
     929                            <a href="#" onclick="Kopa_Page_Builder.delete_widget(event, jQuery(this), '<?php echo esc_attr( $widget_id); ?>' );" class="kpb-button-delete kpb-pull-left"><?php esc_html_e( 'Delete', 'kopa-page-builder' ); ?></a>
    917930                        </div>                         
    918931                    </div>                   
     
    928941        }
    929942
    930         do_action( 'kopa_page_builder_after_save_widget' );
     943        do_action( 'kopa_page_builder_after_save_widget', $post_id, $widget_id, $option );
    931944
    932945        exit();
    933946    }
    934947
    935     public function delete_widget(){
    936         check_ajax_referer('kpb_delete_grid', 'security');
    937 
    938          if (isset($_POST['widget_id']) && isset($_POST['post_id'])) {
    939             $post_id = (int) $_POST['post_id'];
    940             $widget_id = $_POST['widget_id'];
    941 
    942             delete_post_meta($post_id, $widget_id);
     948    public function delete_widget() {
     949        check_ajax_referer( 'kpb_delete_widget', 'security' );     
     950
     951        if (isset( $_POST['widget_id']) && isset( $_POST['post_id'])) {
     952            $post_id   = (int) $_POST['post_id'];
     953            $widget_id = $_POST['widget_id'];
     954
     955            delete_post_meta( $post_id, $widget_id);
     956
     957            do_action( 'kopa_page_builder_after_delete_widget', $post_id, $widget_id );
    943958        }
    944959
     
    946961    }
    947962
    948     public function save_grid(){
    949         check_ajax_referer('kpb_save_grid', 'security');
    950 
    951         $post_id = $_POST['post_id'];
    952 
    953         if (!empty($_POST['data'])) {
     963    public function save_grid() {
     964        check_ajax_referer( 'kpb_save_grid', 'security' );
     965       
     966        $post_id      = $_POST['post_id'];     
     967        $layout_id    = '';
     968        $layouts_data = '';
     969
     970        if (!empty( $_POST['data'])) {
    954971            $data = $_POST['data'];           
    955972
    956             $layouts = isset($data['layouts']) && !empty($data['layouts']) ? $data['layouts'] : false;
    957             if($layouts){
    958                 $current_layout = $data['current_layout'];
    959                
    960                 foreach ($layouts as $layout_index => $layout) {               
    961                    
    962                    
    963                     $sections = isset($layout['sections']) && !empty($layout['sections']) ? $layout['sections'] : false;
    964 
    965                     if($sections){             
     973            $layouts = isset( $data['layouts']) && !empty( $data['layouts']) ? $data['layouts'] : false;
     974            if( $layouts){             
     975                $current_layout = $data['current_layout'];
     976                $layout_id      = $current_layout;
     977
     978                foreach ( $layouts as $layout_index => $layout) {               
     979                                       
     980                    $sections = isset( $layout['sections']) && !empty( $layout['sections']) ? $layout['sections'] : false;
     981
     982                    if( $sections){
    966983                        $_sections = array();
    967                         foreach ($sections as $section_index => $section) {                                         
    968                             $areas = isset($section['areas']) && !empty($section['areas']) ? $section['areas'] : false;
    969 
    970                             if($areas){
     984                        foreach ( $sections as $section_index => $section) {                                           
     985                            $areas = isset( $section['areas']) && !empty( $section['areas']) ? $section['areas'] : false;
     986
     987                            if( $areas){
    971988
    972989                                $_areas = array();
    973990
    974                                 foreach ($areas as $area_index => $area) {                             
    975                                     $widgets = isset($area['widgets']) && !empty($area['widgets']) ? $area['widgets'] : false;
    976                                     if($widgets){                                   
     991                                foreach ( $areas as $area_index => $area) {                             
     992                                    $widgets = isset( $area['widgets']) && !empty( $area['widgets']) ? $area['widgets'] : false;
     993                                    if( $widgets){                                 
    977994                                        $_widgets = array();
    978                                         foreach ($widgets as $widget_index => $widget) {                           
     995                                        foreach ( $widgets as $widget_index => $widget) {                           
    979996                                            $_widgets[$widget['id']] = array(                                               
    980                                                 'name' => $widget['name'],
    981                                                 'class_name' => $widget['class_name']
     997                                                'name'      => $widget['name'],
     998                                                'class_name' => $widget['class_name']
    982999                                            );
    9831000                                        }
     
    9901007                        }
    9911008                       
    992                         $_meta_key = sprintf('%s-%s', self::get_meta_key_grid(), $layout['name']);
    993                         update_post_meta($post_id, $_meta_key, $_sections);
     1009                        $_meta_key     = sprintf( '%s-%s', self::get_meta_key_grid(), $layout['name']);
     1010                        $layouts_data[$layout['name']] = $_sections;
     1011                        update_post_meta( $post_id, $_meta_key, $_sections);
    9941012                    }               
    9951013
    9961014                }
    997                 update_post_meta($post_id, self::get_meta_key_current_layout(), $current_layout);               
     1015                update_post_meta( $post_id, self::get_meta_key_current_layout(), $current_layout);             
    9981016            }
    9991017        } else {
    1000             delete_post_meta($post_id, self::get_meta_key_grid());
     1018            delete_post_meta( $post_id, self::get_meta_key_grid());
    10011019        }
    10021020
    1003         do_action( 'kopa_page_buider_after_save_grid' );
     1021        do_action( 'kopa_page_buider_after_save_grid', $post_id, $layout_id, $layouts_data );
    10041022
    10051023        exit();     
    10061024    }
    10071025
    1008     public function save_customize(){
    1009         check_ajax_referer('kpb_save_customize', 'security');
    1010 
    1011         $post_id = (int) $_POST['post_id'];
    1012         $layout = $_POST['layout'];
    1013         $section = $_POST['section'];
    1014 
    1015         $meta_key = sprintf('%s-%s-%s', self::get_meta_key_wrapper(), $layout, $section);   
    1016         $meta_value = array();
    1017 
    1018         $data = $_POST[$meta_key];     
    1019 
    1020         $_section_fields = apply_filters('kopa_page_builder_get_section_fields', array());
    1021 
    1022         foreach ($_section_fields as $tab_slug => $tab) {
    1023 
    1024             foreach ($tab['params'] as $param_key => $param_args){
    1025                 $_value = isset($data[$tab_slug][$param_key]) ? $data[$tab_slug][$param_key] : (isset($param_args['default']) ? $param_args['default'] : null);             
    1026                 $meta_value[$tab_slug][$param_key] = $this->validate_data_meta_boxes($param_args, $_value);
     1026    public function save_customize() {
     1027        check_ajax_referer( 'kpb_save_customize', 'security' );
     1028
     1029        $post_id    = (int) $_POST['post_id'];
     1030        $layout     = $_POST['layout'];
     1031        $section    = $_POST['section'];       
     1032        $meta_key   = sprintf( '%s-%s-%s', self::get_meta_key_wrapper(), $layout, $section);   
     1033        $meta_value = array();     
     1034        $data       = $_POST[$meta_key];       
     1035
     1036        $_section_fields = apply_filters( 'kopa_page_builder_get_section_fields', array());
     1037
     1038        foreach ( $_section_fields as $tab_slug => $tab) {
     1039
     1040            foreach ( $tab['params'] as $param_key => $param_args){
     1041                $_value = isset( $data[$tab_slug][$param_key]) ? $data[$tab_slug][$param_key] : (isset( $param_args['default']) ? $param_args['default'] : null);               
     1042                $meta_value[$tab_slug][$param_key] = $this->validate_data_meta_boxes( $param_args, $_value);
    10271043            }
    10281044
    10291045        }
    10301046       
    1031         update_post_meta($post_id, $meta_key, $meta_value);
    1032 
    1033         do_action('kopa_page_builder_after_save_section_customize');
     1047        update_post_meta( $post_id, $meta_key, $meta_value);   
     1048
     1049        do_action( 'kopa_page_builder_after_save_section_customize', $post_id, $layout, $meta_value, $section);
    10341050
    10351051        exit();     
    10361052    }   
    10371053
    1038     public function save_layout_customize(){
    1039         check_ajax_referer('kpb_save_layout_customize', 'security');
    1040    
    1041 
    1042 
    1043         $post_id = (int) $_POST['post_id'];
    1044         $layout_slug = $_POST['layout'];
    1045 
    1046         $meta_key = sprintf('%s-%s', self::get_meta_key_layout_customize(), $layout_slug); 
    1047         $meta_value = array();
    1048 
    1049         $data = $_POST[$meta_key];
    1050 
    1051         $layouts = apply_filters('kopa_page_builder_get_layouts', array());
     1054    public function save_layout_customize() {
     1055        check_ajax_referer( 'kpb_save_layout_customize', 'security' );
     1056
     1057        $post_id        = (int) $_POST['post_id'];
     1058        $layout_slug    = $_POST['layout'];
     1059        $meta_key       = sprintf( '%s-%s', self::get_meta_key_layout_customize(), $layout_slug);   
     1060        $meta_value     = array();
     1061        $data           = $_POST[$meta_key];
     1062        $layouts        = apply_filters( 'kopa_page_builder_get_layouts', array());
    10521063        $current_layout = $layouts[$layout_slug];
    10531064
    1054         foreach ($current_layout['customize'] as $tab_slug => $tab) {
    1055             foreach ($tab['params'] as $param_key => $param_args){
    1056                 $_value = isset($data[$tab_slug][$param_key]) ? $data[$tab_slug][$param_key] : (isset($param_args['default']) ? $param_args['default'] : null);             
    1057                 $meta_value[$tab_slug][$param_key] = $this->validate_data_meta_boxes($param_args, $_value);
     1065        foreach ( $current_layout['customize'] as $tab_slug => $tab) {
     1066            foreach ( $tab['params'] as $param_key => $param_args){
     1067                $_value = isset( $data[$tab_slug][$param_key]) ? $data[$tab_slug][$param_key] : (isset( $param_args['default']) ? $param_args['default'] : null);               
     1068                $meta_value[$tab_slug][$param_key] = $this->validate_data_meta_boxes( $param_args, $_value);
    10581069            }
    10591070        }
    10601071
    1061         do_action( 'kopa_page_builder_before_save_layout_customize', $post_id, $meta_key, $meta_value);
    1062 
    1063         update_post_meta($post_id, $meta_key, $meta_value);
    1064 
    1065         do_action( 'kopa_page_builder_after_save_layout_customize', $post_id, $meta_key, $meta_value );
     1072        do_action( 'kopa_page_builder_before_save_layout_customize', $post_id, $layout_slug, $meta_value);
     1073
     1074        update_post_meta( $post_id, $meta_key, $meta_value);   
     1075
     1076        do_action( 'kopa_page_builder_after_save_layout_customize', $post_id, $layout_slug, $meta_value );
    10661077
    10671078        exit();
    10681079    }
    10691080
    1070     public function str_beautify($string) {
    1071         return ucwords(str_replace('_', ' ', $string));
     1081    public function str_beautify( $string) {
     1082        return ucwords(str_replace( '_', ' ', $string));
    10721083    }
    10731084
    1074     public function str_uglify($string) {
     1085    public function str_uglify( $string) {
    10751086        $string = preg_replace("/[^a-zA-Z0-9\s]/", '', $string);
    1076         return strtolower(str_replace(' ', '_', $string));
     1087        return strtolower(str_replace( ' ', '_', $string));
    10771088    }
    10781089
    10791090    public function get_field_alert( $params ){
    10801091        $classes = array( 'kpb-ui-alert' );
    1081         if( $params['class'] ){
     1092        if( isset( $params['class'] ) ){
    10821093            $classes = array_merge( $classes, $params['class'] );
    10831094        }
     
    10901101    }
    10911102
    1092     public function get_field_text($params){
     1103    public function get_field_text( $params){
    10931104        ?>
    1094         <input name="<?php echo esc_attr($params['name']); ?>" value="<?php echo esc_attr($params['value']); ?>" type="text" class="kpb-ui-text" autocomplete="off">       
     1105        <input name="<?php echo esc_attr( $params['name']); ?>" value="<?php echo esc_attr( $params['value']); ?>" type="text" class="kpb-ui-text" autocomplete="off">     
    10951106        <?php
    10961107    }
    10971108
    1098     public function get_field_number($params){
     1109    public function get_field_number( $params){
    10991110        ?>
    1100         <input name="<?php echo esc_attr($params['name']); ?>" value="<?php echo esc_attr($params['value']); ?>" type="text" class="kpb-ui-number" autocomplete="off">     
    1101         <?php if($params['affix']): ?>
     1111        <input name="<?php echo esc_attr( $params['name']); ?>" value="<?php echo esc_attr( $params['value']); ?>" type="text" class="kpb-ui-number" autocomplete="off">       
     1112        <?php if( $params['affix']): ?>
    11021113            <i><?php echo $params['affix']; ?></i>
    11031114        <?php endif;?>
     
    11051116    }
    11061117
    1107     public function get_field_color($params){
     1118    public function get_field_color( $params){
    11081119        ?>
    1109         <input name="<?php echo esc_attr($params['name']); ?>" value="<?php echo esc_attr($params['value']); ?>" type="text" class="kpb-ui-color" data-default-color="<?php echo isset($params['default']) ? $params['default'] : ''; ?>" autocomplete="off">
     1120        <input name="<?php echo esc_attr( $params['name']); ?>" value="<?php echo esc_attr( $params['value']); ?>" type="text" class="kpb-ui-color" data-default-color="<?php echo isset( $params['default']) ? $params['default'] : ''; ?>" autocomplete="off">
    11101121        <?php
    11111122    }
    11121123
    1113     public function get_field_checkbox($params){
    1114         $params['value'] = isset($params['value']) ? isset($params['value']) : isset($params['default']) ? $params['value'] : 'false';
     1124    public function get_field_checkbox( $params){
     1125        $params['value'] = isset( $params['value']) ? isset( $params['value']) : isset( $params['default']) ? $params['value'] : 'false';
    11151126        ?>
    1116         <input name="<?php echo esc_attr($params['name']); ?>"
    1117             <?php checked( $params['value'], 'true'); ?>
     1127        <input name="<?php echo esc_attr( $params['name']); ?>"
     1128            <?php checked( $params['value'], 'true' ); ?>
    11181129            value="true"
    11191130            type="checkbox"
     
    11231134    }
    11241135
    1125     public function get_field_radio($params){
    1126         foreach($params['options'] as $value => $title):
    1127             $checked = !empty($params['value']) && ($params['value'] == $value) ? 'checked="checked"' : '';
     1136    public function get_field_radio( $params){
     1137        foreach( $params['options'] as $value => $title):
     1138            $checked = !empty( $params['value']) && ( $params['value'] == $value) ? 'checked="checked"' : '';
    11281139            $id = wp_generate_password(4, false, false) . '-' . $value;
    11291140            ?>
    1130             <label for="<?php echo esc_attr($id);?>">
    1131                 <span><?php echo esc_attr($title); ?></span>
    1132                 <input id="<?php echo esc_attr($id); ?>" name="<?php echo esc_attr($params['name']); ?>" value="<?php echo esc_attr($value); ?>" type="radio" class="kpb-ui-radio" <?php echo $checked; ?> autocomplete="off">     
     1141            <label for="<?php echo esc_attr( $id);?>">
     1142                <span><?php echo esc_attr( $title); ?></span>
     1143                <input id="<?php echo esc_attr( $id); ?>" name="<?php echo esc_attr( $params['name']); ?>" value="<?php echo esc_attr( $value); ?>" type="radio" class="kpb-ui-radio" <?php echo $checked; ?> autocomplete="off">       
    11331144            </label>           
    11341145            <?php
     
    11361147    }
    11371148
    1138     public function get_field_radio_image($params){
    1139         foreach($params['options'] as $value => $title):
    1140             $checked = !empty($params['value']) && ($params['value'] == $value) ? 'checked="checked"' : '';
     1149    public function get_field_radio_image( $params){
     1150        foreach( $params['options'] as $value => $title):
     1151            $checked = !empty( $params['value']) && ( $params['value'] == $value) ? 'checked="checked"' : '';
    11411152            $id = wp_generate_password(4, false, false) . '-' . $value;
    11421153            ?>
    11431154            <div class="radio-image-wrapper">
    1144                 <label for="<?php echo esc_attr($id);?>">
     1155                <label for="<?php echo esc_attr( $id);?>">
    11451156                    <span><?php echo $title; ?></span>
    1146                     <input id="<?php echo esc_attr($id); ?>" name="<?php echo esc_attr($params['name']); ?>" value="<?php echo esc_attr($value); ?>" type="radio" class="kpb-ui-radio" <?php echo $checked; ?> autocomplete="off">
     1157                    <input id="<?php echo esc_attr( $id); ?>" name="<?php echo esc_attr( $params['name']); ?>" value="<?php echo esc_attr( $value); ?>" type="radio" class="kpb-ui-radio" <?php echo $checked; ?> autocomplete="off">
    11471158                </label>
    11481159            </div>
     
    11511162    }
    11521163
    1153     public function get_field_select($params){
     1164    public function get_field_select( $params){
    11541165        ?>
    1155         <select name="<?php echo esc_attr($params['name']); ?>" class="kpb-ui-select" autocomplete=off>
     1166        <select name="<?php echo esc_attr( $params['name']); ?>" class="kpb-ui-select" autocomplete=off>
    11561167            <?php
    1157             foreach($params['options'] as $value => $title):
    1158                 $selected = !empty($params['value']) && ($params['value'] == $value) ? 'selected="selected"' : '';
     1168            foreach( $params['options'] as $value => $title):
     1169                $selected = !empty( $params['value']) && ( $params['value'] == $value) ? 'selected="selected"' : '';
    11591170                ?>
    1160                 <option value="<?php echo $value ?>" <?php echo esc_attr($selected); ?>><?php echo esc_attr($title); ?></option>
     1171                <option value="<?php echo $value ?>" <?php echo esc_attr( $selected); ?>><?php echo esc_attr( $title); ?></option>
    11611172                <?php
    11621173            endforeach;
     
    11661177    }
    11671178
    1168     public function get_field_image($params){
     1179    public function get_field_image( $params){
    11691180        $preview       =  KPB_DIR . 'images/placehold.png';
    1170         $image         = !empty($params['value']) ? do_shortcode($params['value']) : '';
    1171         $image_reset   = (isset($params['default']) && !empty($params['default'])) ? do_shortcode($params['default']) : '';
     1181        $image         = !empty( $params['value']) ? do_shortcode( $params['value']) : '';
     1182        $image_reset   = (isset( $params['default']) && !empty( $params['default'])) ? do_shortcode( $params['default']) : '';
    11721183        $image_preview = $image ? $image : $preview;
    11731184        ?>
    11741185        <div class="kpb-ui-image-outer">
    11751186            <div class="kpb-clearfix">
    1176                 <input name="<?php echo esc_attr($params['name']); ?>" value="<?php echo esc_url($image); ?>" type="text" class="kpb-ui-image kpb-pull-left" autocomplete="off">
    1177                 <a href="#" class="kpb-ui-image-button-upload button button-secondary kpb-pull-left"><?php _e('Upload', 'kopa-page-builder'); ?></a>
    1178                 <a href="#" class="kpb-ui-image-button-reset button button-link button-delete kpb-pull-left" data-preview="<?php echo esc_url($preview); ?>" data-reset="<?php echo esc_url($image_reset); ?>"><?php _e('Reset', 'kopa-page-builder'); ?></a>
     1187                <input name="<?php echo esc_attr( $params['name']); ?>" value="<?php echo esc_url( $image); ?>" type="text" class="kpb-ui-image kpb-pull-left" autocomplete="off">
     1188                <a href="#" class="kpb-ui-image-button-upload button button-secondary kpb-pull-left"><?php esc_html_e( 'Upload', 'kopa-page-builder' ); ?></a>
     1189                <a href="#" class="kpb-ui-image-button-reset button button-link button-delete kpb-pull-left" data-preview="<?php echo esc_url( $preview); ?>" data-reset="<?php echo esc_url( $image_reset); ?>"><?php esc_html_e( 'Reset', 'kopa-page-builder' ); ?></a>
    11791190            </div>   
    11801191            <br/>
    1181             <img src="<?php echo $image_preview;?>" class="kpb-ui-image-preview" data-preview="<?php echo esc_url($preview); ?>">       
     1192            <img src="<?php echo $image_preview;?>" class="kpb-ui-image-preview" data-preview="<?php echo esc_url( $preview); ?>">     
    11821193        </div>
    11831194        <?php
    11841195    }
    11851196
    1186     public function get_field_textarea($params){
    1187         $class = isset($params['class']) && !empty($params['class']) ? $params['class'] : '';
    1188         $rows = isset($params['rows']) && !empty($params['rows']) ? (int) $params['rows'] : 3;     
     1197    public function get_field_textarea( $params){
     1198        $class = isset( $params['class']) && !empty( $params['class']) ? $params['class'] : '';
     1199        $rows = isset( $params['rows']) && !empty( $params['rows']) ? (int) $params['rows'] : 3;       
    11891200        ?>
    1190         <textarea name="<?php echo esc_attr($params['name']); ?>" class="kpb-ui-textarea <?php echo $class;?>" rows="<?php echo $rows; ?>" autocomplete="off"><?php echo htmlspecialchars_decode(stripslashes($params['value'])); ?></textarea>
     1201        <textarea name="<?php echo esc_attr( $params['name']); ?>" class="kpb-ui-textarea <?php echo $class;?>" rows="<?php echo $rows; ?>" autocomplete="off"><?php echo htmlspecialchars_decode(stripslashes( $params['value'])); ?></textarea>
    11911202        <?php
    11921203    }
    11931204
    1194     public function get_field_icon($params){
    1195         $params['options'] = array('' => __('-- select icon --', 'kopa-page-builder'));
     1205    public function get_field_icon( $params){
     1206        $params['options'] = array( '' => esc_html__( '-- select icon --', 'kopa-page-builder' ) );
    11961207        $icons = $this->get_icons();
    1197         foreach ($icons as $icon) {
    1198             $params['options'][$icon] = str_replace('fa fa-', '', $icon);
     1208        foreach ( $icons as $icon) {
     1209            $params['options'][$icon] = str_replace( 'fa fa-', '', $icon);
    11991210        }
    12001211
    1201         $this->get_field_select($params);
     1212        $this->get_field_select( $params);
    12021213    }
    12031214
    1204     public function validate_data_meta_boxes($param_args, $value){
    1205         switch ($param_args['type']) {
     1215    public function validate_data_meta_boxes( $param_args, $value){
     1216        switch ( $param_args['type']) {
    12061217            case 'color':
    1207                 $value = esc_attr($value);
     1218                $value = esc_attr( $value);
    12081219                break;
    12091220            case 'image':
    1210                 if (!empty($value)) {
     1221                if (!empty( $value)) {
    12111222                    $value = str_replace(home_url(), '[kpb_home_url]', $value);
    12121223                }
    12131224                break;
    12141225            case 'select':
    1215                 $value = esc_attr($value);
     1226                $value = esc_attr( $value);
    12161227                break;     
    12171228            case 'text':
    1218                 $value = esc_attr($value);
     1229                $value = esc_attr( $value);
    12191230                break;                                                                             
    12201231            case 'number':
    1221                 if(trim($value) != ''){
    1222                     $value = floatval($value);
     1232                if(trim( $value) != ''){
     1233                    $value = floatval( $value);
    12231234                }               
    12241235                break;
    12251236            case 'textarea':
    1226                 $value = htmlspecialchars_decode(stripslashes($value));
     1237                $value = htmlspecialchars_decode(stripslashes( $value));
    12271238                break;                                                         
    12281239        }
     
    12351246    }
    12361247
    1237     public function get_icons(){
     1248    public function get_icons() {
    12381249        $icons = array(
    12391250            'fa fa-rub',
     
    16931704        );
    16941705
    1695         return apply_filters('kpb_get_icons', $icons);
     1706        return apply_filters( 'kpb_get_icons', $icons);
    16961707    }
    16971708
  • kopa-page-builder/trunk/readme.txt

    r1323889 r1428045  
    11=== Kopa Page Builder ===
    2 Contributors: kopatheme 
     2Contributors: kopatheme,tranthethang
    33Tags: pagebuilder, grid, drag and drop
    44Requires at least: 4.1
    5 Tested up to: 4.4.1
    6 Stable tag: 1.2
     5Tested up to: 4.5.2
     6Stable tag: 1.3
    77
    88== Description ==
     
    2121== Changelog ==
    2222
     231.3
     24[FIX] some js, css
     25
    23261.2
    2427[CHECK] compatiable with wordpress version 4.4.1
     
    3134    - kopa_page_builder_after_save_section_customize
    3235    - kopa_page_builder_after_save_layout_customize
    33 
    3436
    3537
Note: See TracChangeset for help on using the changeset viewer.