????
| Current Path : /home2/morganrand/www/wp-content/plugins/new-royalslider/classes/ |
| Current File : /home2/morganrand/www/wp-content/plugins/new-royalslider/classes/NewRoyalSliderGallery.php |
<?php
if( !defined('WPINC') ) exit('No direct access permitted');
/**
* RoyalSlider Media Gallery Image select + Custom Slider Edit page
*/
if ( !class_exists( 'NewRoyalSliderGallery' ) ):
class NewRoyalSliderGallery {
function __construct( ) {
require_once('NewRoyalSliderOptions.php');
if( isset($_REQUEST['newrs-a-gallery-enabled']) ) {
add_filter( 'media_upload_tabs', array(&$this, 'remove_unused_tab'), 50, 2);
add_filter( 'media_upload_form_url', array(&$this, 'parse_url'), 16, 2);
add_filter( 'attachment_fields_to_edit', array(&$this, 'add_buttons'), 20, 2 );
}
add_action( 'wp_ajax_newRsCreateNewSlide', array(&$this, 'rs_create_new_slide') );
add_action( 'wp_ajax_newRsCustomMedia', array(&$this, 'rs_get_custom_media') );
add_action( 'wp_ajax_newRsSingleMedia', array(&$this, 'rs_get_single_media') );
add_filter( 'admin_enqueue_scripts', array(&$this, 'rs_admin_enqueue_scripts'), 11, 2);
}
public function parse_url($form_action_url, $type) {
if(isset($_REQUEST['newrs-a-gallery-enabled'])) {
$form_action_url = $form_action_url . "&newrs-a-gallery-enabled=".esc_html($_REQUEST['newrs-a-gallery-enabled']);
echo '<input type="hidden" id="new_royalslider_media_library" val="1" />';
}
return $form_action_url;
}
function rs_admin_enqueue_scripts( $hook ) {
wp_enqueue_script('thickbox');
if( isset($_REQUEST['newrs-a-gallery-enabled']) && $_REQUEST['newrs-a-gallery-enabled'] ) {
wp_register_style( "royalslider-admin", NEW_ROYALSLIDER_PLUGIN_URL . "lib/backend/royalslider-admin.css", array( ), NEW_ROYALSLIDER_WP_VERSION, 'screen' );
wp_enqueue_style( "royalslider-admin" );
wp_register_script( 'new-rs-toJSON', NEW_ROYALSLIDER_PLUGIN_URL . 'lib/backend/toJSON.js', array('jquery'));
wp_enqueue_script( 'new-rs-toJSON' );
wp_register_script( 'new-royalslider-gallery-js', NEW_ROYALSLIDER_PLUGIN_URL . 'lib/backend/royalslider-gallery.js', array('jquery'));
wp_localize_script( 'new-royalslider-gallery-js', 'rsMediaAddVars', array(
'enabled' => true,
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'getImagesNonce' => wp_create_nonce( 'new_royalslider_get_images_ajax_nonce' ),
'getSingleImageNonce' => wp_create_nonce( 'new_royalslider_get_image_ajax_nonce' ),
'add_to_slider' => __('Add to slider', 'new_royalslider'),
'add_all_uploaded_to_slider' => __('Add all uploaded to slider', 'new_royalslider'),
'add' => __('Add all ', 'new_royalslider'),
'images_to_slider' => __(' images to slider', 'new_royalslider'),
'add_to_slider_singular' => __('Add one image to slider', 'new_royalslider'),
'adding' => __('Adding...', 'new_royalslider'),
'added' => __('Added!', 'new_royalslider'),
'isSingle' => isset($_REQUEST['newrs-a-gallery-single']) && $_REQUEST['newrs-a-gallery-single']
));
wp_enqueue_script('new-royalslider-gallery-js');
}
}
function rs_create_new_slide() {
check_ajax_referer('new_royalslider_new_admin_slide_nonce');
echo self::get_admin_slide_item(null);
die();
}
function rs_get_custom_media() {
check_ajax_referer('new_royalslider_get_images_ajax_nonce');
foreach($_POST['attachments'] as $key => $attachment_id) {
$image_post = get_post( $attachment_id );
$slide_data = array(
'image' => array(
'attachment_id' => $attachment_id
),
'title' => $image_post->post_title,
'description' => $image_post->post_excerpt
);
echo self::get_admin_slide_item($slide_data);
}
die();
}
function rs_get_single_media() {
check_ajax_referer('new_royalslider_get_image_ajax_nonce');
foreach($_POST['attachments'] as $key => $attachment_id) {
$image_src = wp_get_attachment_image_src( $attachment_id, 'thumbnail' );
$large_src = wp_get_attachment_image_src( $attachment_id, 'large' );
$image_post = get_post( $attachment_id );
$imagedata = array(
'id' => $attachment_id,
'src' => $image_src[0],
'title' => $image_post->post_title,
'caption' => $image_post->post_excerpt,
'large' => $large_src[0],
'large_width' => $large_src[1],
'large_height'=> $large_src[2]
);
echo json_encode( $imagedata );
}
die();
}
static function get_admin_slide_item($slide_data) {
$image_src = '';
if( isset($slide_data['image']) ) {
$image_data = $slide_data['image'];
if(isset($image_data['attachment_id'])) {
$image_src = wp_get_attachment_image_src( $image_data['attachment_id'], 'thumbnail' );
$image_src = $image_src[0];
}
} else if(isset($slide_data['video']) && isset($slide_data['video']['thumb']) ) {
$image_src = $slide_data['video']['thumb'];
}
if(!$image_src) {
$image_src = NEW_ROYALSLIDER_PLUGIN_URL . 'lib/backend/img/empty150.png';
}
$out = '
<div class="rsSlideItem">
<div class="rsMainThumb" style="background-image: url(\'%s\');" ></div>
<span class="rs-item-action rs-remove-slide" title="%s"></span>
<span class="rs-item-action rs-edit-slide" title="%s"></span>
<span class="rs-item-action rs-duplicate-slide" title="%s"></span>
<div class="rs-tabs">
<div class="rs-tabs-container">
<div class="rs-tabs-wrap">
<div class="rs-image-tab">
%s
</div>
<div class="rs-animated-block-tab"><textarea class="rs-anim-block-textarea" name="slides[animated_blocks]" style="display:none;">%s</textarea></div>
<div class="rs-html-tab">
%s
</div>
</div>
</div>
</div>
</div>
';
return sprintf(
$out,
$image_src,
__('Remove slide', 'new_royalslider'),
__('Edit slide', 'new_royalslider'),
__('Duplicate slide', 'new_royalslider'),
self::getImageTab($slide_data, $image_src),
isset($slide_data['animated_blocks']) ? $slide_data['animated_blocks'] : '',
self::getHTMLTab($slide_data)
);
return $out;
}
static function getHTMLTab($slide_data) {
$out = '';
$out .= '<textarea name="slides[html]">';
if( isset($slide_data['html']) ) {
$out .= $slide_data['html'];
}
$out .= '</textarea>';
return $out;
}
static function getImageTab($slide_data, $image_src) {
$out = '';
$attachment_id = '';
$big_image = '';
$big_image_src = '';
$image_data = '';
if(isset($slide_data['image'])) {
$image_data = $slide_data['image'];
if(isset($slide_data['image']['attachment_id'])) {
$attachment_id = $slide_data['image']['attachment_id'];
$big_image = wp_get_attachment_image_src( $attachment_id, 'large' );
$big_image_src = $big_image[0];
}
}
$add_label = $image_data ? __('Change image', 'new_royalslider') : __('Add image', 'new_royalslider');
$hidden = !$image_data ? 'style="display:none"' : '';
$out .= '<div class="rs-image-change-wrap">
<img src="'.$image_src.'" />
<a class="rs-select-image button button-primary" href="#">'. $add_label .'</a>
<a class="rs-remove-image button" href="#"'.$hidden.'>'. __('Remove image', 'new_royalslider') .'</a>
</div>';
$out .= '<div class="rs-image-inputs-wrap">';
$out .= NewRoyalSliderOptions::get_field_html( array(
'name' => 'title',
'label' => __( 'Title & alt <i class="help-ico"></i>', 'new_royalslider' ),
'desc' => __( 'Title of the slide. Alt tag of image. Caption. (by default).<br/> In Slide Markup Editor use <strong>{{title}}</strong> to get value of this field.', 'new_royalslider' ),
'type' => 'text',
'default' => isset($slide_data['title']) ? $slide_data['title'] : ''
),'slides' );
$out .= NewRoyalSliderOptions::get_field_html( array(
'name' => 'description',
'label' => __( 'Description <i class="help-ico"></i>', 'new_royalslider' ),
'desc' => __( 'Short description of slide, used by some templates (like content slider). <br/>In Slide Markup Editor use <strong>{{description}}</strong>} to get value of this field.', 'new_royalslider' ),
'type' => 'textarea',
'default' => isset($slide_data['description']) ? $slide_data['description'] : ''
),'slides' );
$out .= NewRoyalSliderOptions::get_field_html( array(
'name' => 'link',
'label' => __( 'Link <i class="help-ico"></i>', 'new_royalslider' ),
'desc' => __( 'Links whole slide to URL in this field. <br/><strong>Please note</strong> that full slide link doesn\'t work with auto-height option and overlays video. You can edit Slide Markup to link just specific button or image by wrapping it with "a" HTML tag .<br/>In Slide Markup Editor use <strong>{{link_url}}</strong> to get value of this field.', 'new_royalslider' ),
'type' => 'text',
'default' => isset($slide_data['link']) ? $slide_data['link'] : ''
),'slides' );
$out .= '<div class="rs-video-select">';
if( !isset($slide_data['video']) ) {
$video_data = array(
'url' => '',
'thumb' => '',
'image' => ''
);
} else {
$video_data = $slide_data['video'];
}
$out .= NewRoyalSliderOptions::get_field_html( array(
'name' => 'url',
'label' => __( 'YouTube or Vimeo video URL <i class="help-ico"></i>', 'new_royalslider' ),
'desc' => __( 'Link to YouTube or Vimeo video page. In formats like:<br/>vimeo.com/123123<br/>www.youtube.com/watch?v=7iIld0Z_wlc<br/>youtu.be/7iIld0Z_wlc<br/>In Slide Markup Editor use <strong>{{video_url}}</strong> to get value of this field.', 'new_royalslider' ),
'type' => 'text',
'default' => $video_data['url']
),'slides[video]' );
$out .= NewRoyalSliderOptions::get_field_html( array(
'name' => 'image',
'type' => 'hidden',
'default' => isset($video_data['image']) ? $video_data['image'] : ''
),'slides[video]' );
$out .= NewRoyalSliderOptions::get_field_html( array(
'name' => 'thumb',
'type' => 'hidden',
'default' => isset($video_data['thumb']) ? $video_data['thumb'] : ''
),'slides[video]' );
$out .= '</div>';
$out .= NewRoyalSliderOptions::get_field_html( array(
'name' => 'attachment_id',
'type' => 'hidden',
'default' => $attachment_id
),'slides[image]' );
$out .= NewRoyalSliderOptions::get_field_html( array(
'name' => 'large',
'type' => 'hidden',
'default' => $big_image_src
),'adminarea' );
$out .= NewRoyalSliderOptions::get_field_html( array(
'name' => 'large_gen',
'type' => 'hidden',
'default' => $big_image_src
),'adminarea' );
$out .= NewRoyalSliderOptions::get_field_html( array(
'name' => 'large_width',
'type' => 'hidden',
'default' => $big_image ? $big_image[1] : ''
),'adminarea' );
$out .= NewRoyalSliderOptions::get_field_html( array(
'name' => 'large_height',
'type' => 'hidden',
'default' => $big_image ? $big_image[2] : ''
),'adminarea' );
// allow developers to add instructions or inputs below the form
ob_start();
do_action('new_royalslider_image_tab_after_inputs', $slide_data);
$out .= ob_get_contents();
ob_end_clean();
$out .= '</div>';
return $out;
}
public function add_buttons( $form_fields, $post ) {
if(isset($_REQUEST['newrs-a-gallery-enabled'])) {
$form_fields['post_content']['value'] = '';
$form_fields['post_content']['input'] = 'hidden';
$form_fields['url']['value'] = '';
$form_fields['url']['input'] = 'hidden';
$form_fields['align']['value'] = 'aligncenter';
$form_fields['align']['input'] = 'hidden';
$form_fields['image-size']['value'] = 'thumbnail';
$form_fields['image-size']['input'] = 'hidden';
$label = isset($_REQUEST['newrs-a-gallery-single']) ? __('Select this image', 'new_royalslider') : __('Add to slider', 'new_royalslider');
$form_fields['dsframework_media_box_add_button'] = array(
'label' => '',
'input' => 'html',
'html' => '<button data-attachment-id="'.$post->ID.'" class="primary-button button rs-media-add-btn dsframework-tb-add-image-button" data-attachment-description="" data-attachment-alt-attr="">' . $label . '</button>',
);
}
return $form_fields;
}
public function remove_unused_tab($tabs_to_add) {
if(isset($_REQUEST['newrs-a-gallery-enabled'])) {
$tabs_to_add = array('type' => 'From Computer', 'library' => 'Media Library');
}
return $tabs_to_add;
}
}
endif;