web/wp-content/plugins/pik-slider/pik-slider.php
author Anthony Ly <anthonyly.com@gmail.com>
Mon, 17 Dec 2012 18:20:32 -0800
changeset 200 06ff584323c3
parent 196 5e8dcbe22c24
child 202 83193a9a9b4e
permissions -rw-r--r--
ajout slides part 1

<?php
/*
Plugin Name: Pikslider
Plugin URI: http://iri.centrepompidou.fr/
Description: Carousel slideshow pour la home du site de l'Iri, taille d'une image 568x300
Version: 0.1
Author: Anthony Ly
Author URI: http://anthonyly.com
*/

add_action('init', 'pikslider_init');
add_action('add_meta_boxes','pikslider_metaboxes');
add_action('save_post','pikslider_savepost', 10, 2);
add_action('manage_edit-slide_columns', 'pikslider_columnfilter');
add_action('manage_posts_custom_column', 'pikslider_column');

/**
* Initialise le carousel
**/
function pikslider_init(){

	$labels = array(
		'name'=>'Slide',
		'singular_name'=>'Slide',
		'add_new'=>'Ajouter une slide',
		'add_new_item'=>'Ajouter une slide',
		'edit_item'=>'Editer unde slide',
		'new_item'=>'Nouveau',
		'view_item'=>'Voir la slide',
		'search_items'=>'Rechercher une slide',
		'not_found'=>'Aucun slide',
		'not_found_in_trash'=>'Aucune slide dans la corbeille',
		'parent_item_colon'=>'',
		'menu_name'=>'Slides'
	);

	register_post_type('slide', array(
		'public' => true,
		'publicly_queryable'=>false,
		'labels'	=> $labels,
		'capability_type'=>'post',
		'supports'=>array('title','editor', 'thumbnail')
	));

	add_image_size('slider',568,300,true);
}
	
function pikslider_columnfilter($columns){
	$thumb = array('thumbnail'=>'Image');
	$columns = 
		array_slice($columns,0,1) +
		$thumb +
		array_slice($columns,1,null);
	return $columns;
}

function pikslider_column($column){
	global $post;
	if($column == 'thumbnail'){
		edit_post_link(get_the_post_thumbnail($post->ID),'','');
	}
}

/**
* Permet de gérer les métaboxes
**/
function pikslider_metaboxes(){

	add_meta_box('pikslider','Lien','pikslider_metaboxe','slide','normal','high');
}

function pikslider_metaboxe($object){
	wp_nonce_field('pikslider','pikslider_nonce');
	?>
	<div class="meta-box-item-title">
		<h4>Lien du slide</h4>
	</div>
	<div class="meta-box-item-content">
		<input type="text" name="pikslider_link" style="width:100%" value="<?php echo esc_attr(get_post_meta($object->ID, '_link', true)); ?>" />
	</div>
	<?php
}

function pikslider_savepost($post_id, $post){

	if(!isset($_POST['pikslider_link']) || !wp_verify_nonce($_POST['pikslider_nonce'],'pikslider')){
		return $post_id;
	}

	$type = get_post_type_object($post->post_type);
	if(!current_user_can($type->cap->edit_post)){
		return $post_id;
	}

	update_post_meta($post_id,'_link',$_POST['pikslider_link']);
}


/**
* Permet d'afficher le carousel
**/
function pikslider_show(){
	//import du javascript
	wp_enqueue_script(
		'caroufredsel', 
		plugins_url().'/pik-slider/js/jquery.carouFredSel-6.1.0-packed.js',
		array('jquery'), 
		'6.1.0', 
		true 
	);
	wp_enqueue_style(
		'pikslider_style', 
		plugins_url().'/pik-slider/css/pikslider-style.css',
		null, 
		'1.0', 
		'screen' 
	);
	
	add_action('wp_footer','pikslider_script',30);
	// HTML
	$slides = new WP_query('post_type=slide&posts_per_page=100');
	?>
	<div id="pikslider">
       	<ul>
	<?php

	while($slides->have_posts()){
		$slides->the_post();
		global $post;
		//détection de la langue
		if (class_exists('xili_language')) {
			$current_lang = the_cur_lang_dir();
			if (get_cur_language($post->ID)!=$current_lang['lang']){continue;}
		}
		?>
		<li><a href="<?php echo get_post_meta($post->ID, '_link', true); ?>">
            <?php the_post_thumbnail('slider'); ?>
            <div class="pikslider-content">
                <h2><?php echo the_title(); ?></h2>
                <?php echo the_content(); ?>
            </div>
        </a></li>
		<?php
	}
	?>
		</ul>
        <a id="pikslider-prev" href="#"></a>
        <a id="pikslider-next" href="#"></a>
    </div>
    <?php
}

function pikslider_script(){
	?>
	<script type="text/javascript">
		(function($){
			$('#pikslider ul').carouFredSel({
				prev: '#pikslider-prev',
    			next: '#pikslider-next',
    			auto : { pauseOnHover: "resume"},
                scroll: 1000  
			});
			$('#pikslider .caroufredsel_wrapper').css("margin",0);
		})(jQuery);
	</script>
	<?php
}