Your IP : 216.73.216.95


Current Path : /var/test/www/ljmti/wp-content/themes/clevercourse/framework/function/
Upload File :
Current File : /var/test/www/ljmti/wp-content/themes/clevercourse/framework/function/gdlr-page-options.php

<?php
	/*	
	*	Goodlayers Admin Panel
	*	---------------------------------------------------------------------
	*	This file create the class that help you create the controls page builder  
	*	option for custom theme
	*	---------------------------------------------------------------------
	*/	
	
	if( !class_exists('gdlr_page_options') ){
		
		class gdlr_page_options{

			public $setting;
			public $option;
		
			function __construct($setting = array(), $option = array()){
				
				$default_setting = array(
					'post_type' => array('page'),
					'meta_title' => __('Goodlayers Page Option', 'gdlr_translate'),
					'meta_slug' => 'goodlayers-page-option',
					'option_name' => 'post-option',
					'position' => 'side',
					'priority' => 'high',
				);
				
				$this->setting = wp_parse_args($setting, $default_setting);
				$this->option = $option;
				
				// send the hook to create custom meta box
				add_action('add_meta_boxes', array(&$this, 'add_page_option_meta'));

				// add hook to save page options
				add_action('pre_post_update', array(&$this, 'save_page_option'));
			}			
			
			// load the necessary script for the page builder item
			function load_admin_script(){

				add_action('admin_enqueue_scripts', array(&$this, 'enqueue_wp_media') );
			
				// include the sidebar generator style
				wp_enqueue_style('wp-color-picker');
				wp_enqueue_style('gdlr-alert-box', GDLR_PATH . '/framework/stylesheet/gdlr-alert-box.css');	
				wp_enqueue_style('gdlr-page-option', GDLR_PATH . '/framework/stylesheet/gdlr-page-option.css');
				wp_enqueue_style('gdlr-admin-panel-html', GDLR_PATH . '/framework/stylesheet/gdlr-admin-panel-html.css');	
				wp_enqueue_style('gdlr-edit-box', GDLR_PATH . '/framework/stylesheet/gdlr-edit-box.css');				
				wp_enqueue_style('gdlr-date-picker', '//ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css');				

				// include the sidebar generator script
				wp_enqueue_script('wp-color-picker');
				wp_enqueue_script('gdlr-utility', GDLR_PATH . '/framework/javascript/gdlr-utility.js');	
				wp_enqueue_script('gdlr-alert-box', GDLR_PATH . '/framework/javascript/gdlr-alert-box.js');
				wp_enqueue_script('gdlr-page-option', GDLR_PATH . '/framework/javascript/gdlr-page-option.js');
				wp_enqueue_script('gdlr-admin-panel-html', GDLR_PATH . '/framework/javascript/gdlr-admin-panel-html.js');
				wp_enqueue_script('gdlr-edit-box', GDLR_PATH . '/framework/javascript/gdlr-edit-box.js');	
				wp_enqueue_script('gdlr-slider-selection', GDLR_PATH . '/framework/javascript/gdlr-slider-selection.js');					
				wp_enqueue_script('jquery-ui-datepicker');					
			}			
			function enqueue_wp_media(){
				if(function_exists( 'wp_enqueue_media' )){
					wp_enqueue_media();
				}		
			}
			
			// create the page builder meta at the add_meta_boxes hook
			function add_page_option_meta(){
				global $post;
				
				if( in_array($post->post_type, $this->setting['post_type']) ){
					$this->load_admin_script();
				
					foreach( $this->setting['post_type'] as $post_type ){
						add_meta_box(
							$this->setting['meta_slug'],
							$this->setting['meta_title'],
							array(&$this, 'create_page_option_elements'),
							$post_type,
							$this->setting['position'],
							$this->setting['priority']
						);			
					}
				}
				
			}
		
			// start creating the page builder element
			function create_page_option_elements(){
				global $post;

				$option_value = gdlr_decode_preventslashes(get_post_meta( $post->ID, $this->setting['option_name'], true ));
				if( !empty($option_value) ){
					$option_value = json_decode( $option_value, true );					
				}
	
				$option_generator = new gdlr_admin_option_html();
				
				echo '<div class="gdlr-page-option-wrapper position-' . $this->setting['position'] . '" >';
				
				foreach( $this->option as $option_section ){
					echo '<div class="gdlr-page-option">';
					echo '<div class="gdlr-page-option-title">' . $option_section['title'] . '</div>';
					echo '<div class="gdlr-page-option-input-wrapper">';
					
					foreach ( $option_section['options'] as $option_slug => $option ){
						$option['slug'] = $option_slug;
						$option['name'] = '';
						if( !empty($option['custom_field']) ){
							$option['value'] = get_post_meta($post->ID, $option['custom_field'], true);
						}else if( !empty($option_value) && isset($option_value[$option_slug]) ){
							$option['value'] = $option_value[$option_slug];
						}
						
						$option_generator->generate_admin_option( $option );
					}
					
					echo '</div>'; // page-option-input-wrapper
					echo '</div>'; // page-option-title
					
					
				}
				echo '<textarea class="gdlr-input-hidden" name="' . $this->setting['option_name'] . '"></textarea>';
				echo '</div>'; // gdlr-page-option-wrapper
			}
			
			// save page option setting
			function save_page_option( $post_id ){
				if( empty($_POST[$this->setting['option_name']]) || empty($post_id) ) return;
				if( !in_array(get_post_type($post_id), $this->setting['post_type']) ) return; 
				
				if( isset($_POST[$this->setting['option_name']]) ){
					update_post_meta($post_id, $this->setting['option_name'], gdlr_preventslashes($_POST[$this->setting['option_name']]));
				}
				
				$post_option = gdlr_preventslashes(gdlr_stripslashes($_POST['post-option']));
				$post_option = json_decode(gdlr_decode_preventslashes($post_option), true);
				
				// for custom_field attribute
				foreach( $this->option as $option_section ){
					foreach ( $option_section['options'] as $option_slug => $option ){
						if( !empty($option['custom_field']) ){
							update_post_meta($post_id, $option['custom_field'], $post_option[$option_slug]);
						}
					}
				}
				
				// for custom meta filter
				$custom_meta = apply_filters('gdlr_custom_page_option_meta', array(), $post_option);
				if( !empty($custom_meta) ){
					foreach( $custom_meta as $meta ){
						if( !empty($meta['key']) && !empty($meta['value']) ){
							update_post_meta($post_id, $meta['key'], $meta['value']);
						}
					}
				}
			}
	
			// for preview saving
			function add_preview_fields($fields){
			   $fields[$this->setting['option_name']] = $this->setting['option_name'];
			   return $fields;
			}	
			
		}
		
		
	}

?>