299 lines
9.6 KiB
PHP
299 lines
9.6 KiB
PHP
|
<?php
|
||
|
|
||
|
/*
|
||
|
* Goodlayers Gallery Option File
|
||
|
* ---------------------------------------------------------------------
|
||
|
* @version 1.0
|
||
|
* @author Goodlayers
|
||
|
* @link http://goodlayers.com
|
||
|
* @copyright Copyright (c) Goodlayers
|
||
|
* ---------------------------------------------------------------------
|
||
|
* This file create and contains the gallery post_type meta elements
|
||
|
* ---------------------------------------------------------------------
|
||
|
*/
|
||
|
|
||
|
add_action( 'init', 'create_gallery' );
|
||
|
function create_gallery() {
|
||
|
|
||
|
$labels = array(
|
||
|
'name' => __('Gallery', 'gdl_back_office'),
|
||
|
'singular_name' => __('Gallery Item', 'gdl_back_office'),
|
||
|
'add_new' => __('Add New', 'gdl_back_office'),
|
||
|
'add_new_item' => __('Add New Gallery', 'gdl_back_office'),
|
||
|
'edit_item' => __('Edit Gallery', 'gdl_back_office'),
|
||
|
'new_item' => __('New Gallery', 'gdl_back_office'),
|
||
|
'view_item' => '',
|
||
|
'search_items' => __('Search Gallery', 'gdl_back_office'),
|
||
|
'not_found' => __('Nothing found', 'gdl_back_office'),
|
||
|
'not_found_in_trash' => __('Nothing found in Trash', 'gdl_back_office'),
|
||
|
'parent_item_colon' => ''
|
||
|
);
|
||
|
|
||
|
$args = array(
|
||
|
'labels' => $labels,
|
||
|
'public' => true,
|
||
|
'publicly_queryable' => true,
|
||
|
'show_ui' => true,
|
||
|
'query_var' => true,
|
||
|
'rewrite' => true,
|
||
|
'capability_type' => 'post',
|
||
|
'hierarchical' => false,
|
||
|
'menu_position' => 5,
|
||
|
"show_in_nav_menus" => false,
|
||
|
'exclude_from_search' => true,
|
||
|
'supports' => array('title','thumbnail','custom-fields')
|
||
|
);
|
||
|
|
||
|
register_post_type( 'gdl-gallery' , $args);
|
||
|
|
||
|
}
|
||
|
|
||
|
$gallery_meta_box = array(
|
||
|
"Gallery Picker" => array(
|
||
|
'type'=>'gallerypicker',
|
||
|
'title'=> __('SELECT IMAGES', 'gdl_back_office'),
|
||
|
'xml'=>'post-option-gallery-xml',
|
||
|
'name'=>array(
|
||
|
'image'=>'post-option-inside-thumbnail-slider-image',
|
||
|
'title'=>'post-option-inside-thumbnail-slider-title',
|
||
|
'link'=>'post-option-inside-thumbnail-slider-link',
|
||
|
'linktype'=>'post-option-inside-thumbnail-slider-linktype'),
|
||
|
'hr'=>'none'
|
||
|
)
|
||
|
);
|
||
|
|
||
|
add_action('add_meta_boxes', 'add_gallery_option');
|
||
|
function add_gallery_option(){
|
||
|
|
||
|
add_meta_box('gallery-option', __('Gallery Option','gdl_back_office'), 'add_gallery_option_element',
|
||
|
'gdl-gallery', 'normal', 'high');
|
||
|
|
||
|
}
|
||
|
|
||
|
function add_gallery_option_element(){
|
||
|
|
||
|
global $post, $gallery_meta_box;
|
||
|
echo '<div id="gdl-overlay-wrapper">';
|
||
|
|
||
|
?> <div class="gallery-option-meta" id="gallery-option-meta"> <?php
|
||
|
|
||
|
set_nonce();
|
||
|
|
||
|
foreach($gallery_meta_box as $meta_box){
|
||
|
|
||
|
if( $meta_box['type'] == 'gallerypicker' ){
|
||
|
|
||
|
$xml_string = get_post_meta($post->ID, $meta_box['xml'], true);
|
||
|
if( !empty($xml_string) ){
|
||
|
|
||
|
$xml_val = new DOMDocument();
|
||
|
$xml_val->loadXML( $xml_string );
|
||
|
$meta_box['value'] = $xml_val->documentElement;
|
||
|
|
||
|
}
|
||
|
print_gallery_picker($meta_box);
|
||
|
|
||
|
}else{
|
||
|
|
||
|
$meta_box['value'] = get_post_meta($post->ID, $meta_box['name'], true);
|
||
|
print_meta($meta_box);
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
?> </div> <?php
|
||
|
|
||
|
echo '</div>';
|
||
|
|
||
|
}
|
||
|
|
||
|
function save_gallery_option_meta($post_id){
|
||
|
|
||
|
global $gallery_meta_box;
|
||
|
$edit_meta_boxes = $gallery_meta_box;
|
||
|
|
||
|
// save
|
||
|
foreach ($edit_meta_boxes as $edit_meta_box){
|
||
|
|
||
|
// save function for slider
|
||
|
if( $edit_meta_box['type'] == 'gallerypicker' ){
|
||
|
|
||
|
if(isset($_POST[$edit_meta_box['name']['image']])){
|
||
|
|
||
|
$num = sizeof($_POST[$edit_meta_box['name']['image']]) - 1;
|
||
|
|
||
|
}else{
|
||
|
|
||
|
$num = -1;
|
||
|
|
||
|
}
|
||
|
|
||
|
$slider_xml_old = get_post_meta($post_id,$edit_meta_box['xml'],true);
|
||
|
$slider_xml = "<slider-item>";
|
||
|
|
||
|
for($i=0; $i<=$num; $i++){
|
||
|
|
||
|
$slider_xml = $slider_xml. "<slider>";
|
||
|
$image_new = stripslashes($_POST[$edit_meta_box['name']['image']][$i]);
|
||
|
$slider_xml = $slider_xml. create_xml_tag('image',$image_new);
|
||
|
$linktype_new = stripslashes($_POST[$edit_meta_box['name']['linktype']][$i]);
|
||
|
$slider_xml = $slider_xml. create_xml_tag('linktype',$linktype_new);
|
||
|
$link_new = stripslashes(htmlspecialchars($_POST[$edit_meta_box['name']['link']][$i]));
|
||
|
$slider_xml = $slider_xml. create_xml_tag('link',$link_new);
|
||
|
$slider_xml = $slider_xml . "</slider>";
|
||
|
|
||
|
}
|
||
|
|
||
|
$slider_xml = $slider_xml . "</slider-item>";
|
||
|
save_meta_data($post_id, $slider_xml, $slider_xml_old, $edit_meta_box['xml']);
|
||
|
|
||
|
}else{
|
||
|
|
||
|
if(isset($_POST[$edit_meta_box['name']])){
|
||
|
|
||
|
$new_data = stripslashes($_POST[$edit_meta_box['name']]);
|
||
|
|
||
|
}else{
|
||
|
|
||
|
$new_data = '';
|
||
|
|
||
|
}
|
||
|
|
||
|
$old_data = get_post_meta($post_id, $edit_meta_box['name'],true);
|
||
|
save_meta_data($post_id, $new_data, $old_data, $edit_meta_box['name']);
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
// gallerypicker => title, name=>array(num,image,title,caption,link)
|
||
|
function print_gallery_picker($args){
|
||
|
|
||
|
extract($args);
|
||
|
|
||
|
?>
|
||
|
|
||
|
<div class="meta-body image-picker-wrapper">
|
||
|
<div class="meta-input-slider">
|
||
|
<div class="image-picker" id="image-picker">
|
||
|
<input type='hidden' class="slider-num" id="slider-num" name='<?php
|
||
|
|
||
|
echo (isset($name['slider-num']))? $name['slider-num'] . '[]' : '' ;
|
||
|
|
||
|
?>' value=<?php
|
||
|
|
||
|
echo empty($value)? 0: $value->childNodes->length;
|
||
|
|
||
|
?> />
|
||
|
<div class="selected-image" id="selected-image">
|
||
|
<div id="selected-image-none"></div>
|
||
|
<ul>
|
||
|
<li id="default" class="default">
|
||
|
<div class="selected-image-wrapper">
|
||
|
<img src=""/>
|
||
|
<div class="selected-image-element">
|
||
|
<div id="edit-image" class="edit-image"></div>
|
||
|
<div id="unpick-image" class="unpick-image"></div>
|
||
|
<br class="clear">
|
||
|
</div>
|
||
|
</div>
|
||
|
<input type="hidden" class='slider-image-url' id='<?php echo $name['image']; ?>' />
|
||
|
<div id="slider-detail-wrapper" class="slider-detail-wrapper">
|
||
|
<div id="slider-detail" class="slider-detail">
|
||
|
<div class="meta-title meta-detail-title"><?php _e('LINK TYPE', 'gdl_back_office'); ?></div>
|
||
|
<div class="meta-input meta-detail-input">
|
||
|
<div class="combobox">
|
||
|
<select id='<?php echo $name['linktype']; ?>'>
|
||
|
<option>No Link</option>
|
||
|
<option selected>Lightbox</option>
|
||
|
<option>Link to URL</option>
|
||
|
</select>
|
||
|
</div>
|
||
|
<div class="meta-title meta-detail-title ml0 mt5" rel="url"><?php _e('URL PATH', 'gdl_back_office'); ?></div>
|
||
|
<div><input class="mt10" type="text" id='<?php echo $name['link']; ?>' /></div>
|
||
|
</div>
|
||
|
<br class="clear">
|
||
|
<div class="meta-detail-done-wrapper">
|
||
|
<input type="button" id="gdl-detail-edit-done" class="gdl-button" value="Done" /><br class="clear">
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</li>
|
||
|
|
||
|
<?php
|
||
|
|
||
|
if(!empty($value)){
|
||
|
|
||
|
foreach ($value->childNodes as $slider){ ?>
|
||
|
|
||
|
<li class="slider-image-init">
|
||
|
<div class="selected-image-wrapper">
|
||
|
<img src="<?php
|
||
|
|
||
|
$thumb_src_preview = wp_get_attachment_image_src( find_xml_value($slider, 'image'), 'thumbnail');
|
||
|
echo $thumb_src_preview[0];
|
||
|
|
||
|
?>"/>
|
||
|
<div class="selected-image-element">
|
||
|
<div id="edit-image" class="edit-image"></div>
|
||
|
<div id="unpick-image" class="unpick-image"></div>
|
||
|
<br class="clear">
|
||
|
</div>
|
||
|
</div>
|
||
|
<input type="hidden" class='slider-image-url' name='<?php echo $name['image']; ?>[]' id='<?php echo $name['image']; ?>[]' value="<?php echo find_xml_value($slider, 'image'); ?>" />
|
||
|
<div id="slider-detail-wrapper" class="slider-detail-wrapper">
|
||
|
<div id="slider-detail" class="slider-detail">
|
||
|
<div class="meta-title meta-detail-title"><?php _e('LINK TYPE', 'gdl_back_office'); ?></div>
|
||
|
<div class="meta-input meta-detail-input">
|
||
|
<div class="combobox">
|
||
|
<?php $linktype_val = find_xml_value($slider, 'linktype'); ?>
|
||
|
<select name='<?php echo $name['linktype']; ?>[]' id='<?php echo $name['linktype']; ?>' >
|
||
|
<option <?php echo ($linktype_val == 'No Link')? "selected" : ''; ?> >No Link</option>
|
||
|
<option <?php echo ($linktype_val == 'Lightbox')? "selected" : ''; ?>>Lightbox</option>
|
||
|
<option <?php echo ($linktype_val == 'Link to URL')? "selected" : ''; ?>>Link to URL</option>
|
||
|
</select>
|
||
|
</div>
|
||
|
<div class="meta-title meta-detail-title ml0 mt5" rel="url"><?php _e('URL PATH', 'gdl_back_office'); ?></div>
|
||
|
<div><input class="mt10" type="text" name='<?php echo $name['link']; ?>[]' id='<?php echo $name['link']; ?>[]' value="<?php echo find_xml_value($slider, 'link'); ?>" /></div>
|
||
|
</div>
|
||
|
<br class="clear">
|
||
|
<div class="meta-detail-done-wrapper">
|
||
|
<input type="button" id="gdl-detail-edit-done" class="gdl-button" value="Done" /><br class="clear">
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</li>
|
||
|
|
||
|
<?php
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
?>
|
||
|
|
||
|
</ul>
|
||
|
<br class=clear>
|
||
|
<div id="show-media" class="show-media">
|
||
|
<span id="show-media-text"></span>
|
||
|
<div id="show-media-image"></div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="media-image-gallery-wrapper">
|
||
|
<div class="media-image-gallery" id="media-image-gallery">
|
||
|
<?php get_media_image(); ?>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<br class=clear>
|
||
|
</div>
|
||
|
|
||
|
<?php
|
||
|
|
||
|
}
|
||
|
?>
|