__context ) ) ); if ( ! $template ) { $template = jet_woo_widgets()->get_template( $this->get_name() . '/global/' . $name . '.php' ); } return $template; } /** * Get front-end template * @param [type] $name [description] * @return [type] [description] */ public function __get_render_template( $name = null ) { return jet_woo_widgets()->get_template( $this->get_name() . '/render/' . $name . '.php' ); } /** * Get editor template * @param [type] $name [description] * @return [type] [description] */ public function __get_edit_template( $name = null ) { return jet_woo_widgets()->get_template( $this->get_name() . '/edit/' . $name . '.php' ); } /** * Get global looped template for settings * Required only to process repeater settings. * * @param string $name Base template name. * @param string $setting Repeater setting that provide data for template. * @return void */ public function __get_global_looped_template( $name = null, $setting = null ) { $templates = array( 'start' => $this->__get_global_template( $name . '-loop-start' ), 'loop' => $this->__get_global_template( $name . '-loop-item' ), 'end' => $this->__get_global_template( $name . '-loop-end' ), ); call_user_func( array( $this, sprintf( '__get_%s_looped_template', $this->__context ) ), $templates, $setting ); } /** * Get render mode looped template * * @param array $templates [description] * @param [type] $setting [description] * @return [type] [description] */ public function __get_render_looped_template( $templates = array(), $setting = null ) { $loop = $this->get_settings( $setting ); if ( empty( $loop ) ) { return; } if ( ! empty( $templates['start'] ) ) { include $templates['start']; } foreach ( $loop as $item ) { $this->__processed_item = $item; if ( ! empty( $templates['start'] ) ) { include $templates['loop']; } $this->__processed_index++; } $this->__processed_item = false; $this->__processed_index = 0; if ( ! empty( $templates['end'] ) ) { include $templates['end']; } } /** * Get edit mode looped template * * @param array $templates [description] * @param [type] $setting [description] * @return [type] [description] */ public function __get_edit_looped_template( $templates = array(), $setting = null ) { ?> <# if ( settings. ) { #> <# _.each( settings., function( item ) { #> <# } ); #> <# } #> __context ) ), $keys, $format ); } /** * Loop edit item * * @param [type] $keys [description] * @param string $format [description] * @param boolean $nested_key [description] * @return [type] [description] */ public function __edit_loop_item( $keys = array(), $format = '%s' ) { $settings = $keys[0]; if ( isset( $keys[1] ) ) { $settings .= '.' . $keys[1]; } ob_start(); echo '<# if ( item.' . esc_attr( $settings ) . ' ) { #>'; printf( $format, '{{{ item.' . esc_attr( $settings ) . ' }}}' ); echo '<# } #>'; return ob_get_clean(); } /** * Loop render item * * @param string $format [description] * @param [type] $key [description] * @param boolean $nested_key [description] * @return [type] [description] */ public function __render_loop_item( $keys = array(), $format = '%s' ) { $item = $this->__processed_item; $key = $keys[0]; $nested_key = isset( $keys[1] ) ? $keys[1] : false; if ( empty( $item ) || ! isset( $item[ $key ] ) ) { return false; } if ( false === $nested_key || ! is_array( $item[ $key ] ) ) { $value = $item[ $key ]; } else { $value = isset( $item[ $key ][ $nested_key ] ) ? $item[ $key ][ $nested_key ] : false; } if ( ! empty( $value ) ) { return sprintf( $format, $value ); } } /** * Include global template if any of passed settings is defined * * @param [type] $name [description] * @param [type] $settings [description] * @return [type] [description] */ public function __glob_inc_if( $name = null, $settings = array() ) { $template = $this->__get_global_template( $name ); call_user_func( array( $this, sprintf( '__%s_inc_if', $this->__context ) ), $template, $settings ); } /** * Include render template if any of passed setting is not empty * * @param [type] $file [description] * @param [type] $settings [description] * @return [type] [description] */ public function __render_inc_if( $file = null, $settings = array() ) { foreach ( $settings as $setting ) { $val = $this->get_settings( $setting ); if ( ! empty( $val ) ) { include $file; return; } } } /** * Include render template if any of passed setting is not empty * * @param [type] $file [description] * @param [type] $settings [description] * @return [type] [description] */ public function __edit_inc_if( $file = null, $settings = array() ) { $condition = null; $sep = null; foreach ( $settings as $setting ) { $condition .= $sep . 'settings.' . $setting; $sep = ' || '; } ?> <# if ( ) { #> <# } #> ', $this->get_name() ); } /** * Close standard wrapper * * @return void */ public function __close_wrap() { echo ''; } /** * Print HTML markup if passed setting not empty. * * @param string $setting Passed setting. * @param string $format Required markup. * @param array $args Additional variables to pass into format string. * @param bool $echo Echo or return. * @return string|void */ public function __html( $setting = null, $format = '%s' ) { call_user_func( array( $this, sprintf( '__%s_html', $this->__context ) ), $setting, $format ); } /** * Returns HTML markup if passed setting not empty. * * @param string $setting Passed setting. * @param string $format Required markup. * @param array $args Additional variables to pass into format string. * @param bool $echo Echo or return. * @return string|void */ public function __get_html( $setting = null, $format = '%s' ) { ob_start(); $this->__html( $setting, $format ); return ob_get_clean(); } /** * Print HTML template * * @param [type] $setting [description] * @param [type] $format [description] * @return [type] [description] */ public function __render_html( $setting = null, $format = '%s' ) { if ( is_array( $setting ) ) { $key = $setting[1]; $setting = $setting[0]; } $val = $this->get_settings( $setting ); if ( ! is_array( $val ) && '0' === $val ) { printf( $format, $val ); } if ( is_array( $val ) && empty( $val[ $key ] ) ) { return ''; } if ( ! is_array( $val ) && empty( $val ) ) { return ''; } if ( is_array( $val ) ) { printf( $format, $val[ $key ] ); } else { printf( $format, $val ); } } /** * Print underscore template * * @param [type] $setting [description] * @param [type] $format [description] * @return [type] [description] */ public function __edit_html( $setting = null, $format = '%s' ) { if ( is_array( $setting ) ) { $setting = $setting[0] . '.' . $setting[1]; } echo '<# if ( settings.' . esc_attr( $setting ) . ' ) { #>'; printf( $format, '{{{ settings.' . esc_attr( $setting ) . ' }}}' ); echo '<# } #>'; } }