<?php
/*
Fichier : TEMPLATEPATH. '/inc/admin/arborescence.inc.php'
Objet : Création de l'arborescence des pages

Description spécifique : 

*/

// Création du walker permettant d'afficher l'arborescence par un hook de wp_list_pages()
class Walker_Page_Arbo extends Walker_Page {

    function start_el(&$output, $page, $depth = 0, $args = Array(), $current_page = 0) {
               
                if($depth) :
                        $indent = str_repeat("\t", $depth);
                else :
                        $indent = '';
                endif;
               
                /** Création des liens personnalisés dans le walker */
                $link_in = '<a target="_blank" class="page-item-link" title="Voir cette page sur le site (nouvelle fenêtre)" href="' . get_permalink($page->ID) . '">';
                // Si la page n'est pas virtuelle, on affiche le lien modifier
				if (get_post_meta($page->ID, 'pagesvirtuelles', true) =='') {
                $link_out = '</a> | <small>Dernière modification par '.get_the_author_meta('user_nicename' ,$page->post_author).', le '.date('d/m/Y à H\hi', strtotime($page->post_date)).'</small> | <a href="'.get_bloginfo('wpurl').'/wp-admin/post.php?post='.$page->ID.'&action=edit" title="Modifier cette page">Modifier</a>';
				} else {				
					// sinon, on n'affiche pas de lien modifier
					$link_out = '</a> | <small>Dernière modification par '.get_the_author_meta('user_nicename' ,$page->post_author).', le '.date('d/m/Y à H\hi', strtotime($page->post_date)).'</small> | <div class="dashicons dashicons-lock"></div>';
				}
                $link = $link_in.apply_filters('the_title', $page->post_title, $page->ID).$link_out;
               
                extract($args, EXTR_SKIP);
               
                /** CSS des liens */
                $css_class = array('page_item', 'page-item-'.$page->ID);
                if(!empty($current_page)) :
               
                        $_current_page = get_page($current_page);
                        _get_post_ancestors($_current_page);
                       
                        if(isset($_current_page->ancestors) && in_array($page->ID, (array) $_current_page->ancestors)) :
                                $css_class[] = 'current_page_ancestor';
                        endif;
                       
                        if($page->ID == $current_page) :
                                $css_class[] = 'current_page_item';
                        elseif($_current_page && $page->ID == $_current_page->post_parent) :
                                $css_class[] = 'current_page_parent';
                        endif;
                       
                elseif($page->ID == get_option('page_for_posts')) :
                        $css_class[] = 'current_page_parent';
                endif;
               
                $css_class = implode(' ', apply_filters( 'page_css_class', $css_class, $page, $depth, $args, $current_page));
               
                $output .= $indent . '<li class="' . $css_class . '">' . $link;
               
                if(!empty($show_date)) :
                       
                        if('modified' == $show_date) :
                                $time = $page->post_modified;
                        else :
                                $time = $page->post_date;
                        endif;
 
                        $output .= ' '.mysql2date($date_format, $time);
                       
                endif;
               
        }
 
}

// Enregistrement du panel d'option
add_action('admin_menu', 'A111_Arborescence');
function A111_Arborescence() {
	add_pages_page('Arborescence du site', 'Arborescence du site', 'read', 'webco-arborescence', 'A111_Arborescence_Dashboard');
}

function A111_Arborescence_Dashboard() {
	// AJout jQuery, CSS, HTML, Scripts
	echo '
		<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
		<style>
			.arbo-ul {
				height: 100%;
				margin-left: 30px;
			}
			.arbo-ul li .page-item-link {
				background: url('.get_bloginfo('template_url').'/inc/admin/images/page-arbo.png) no-repeat top left;
				padding-left: 25px; 
				display: inline-block;
			}
			.arbo-ul li.page_item { 
				display: block;
				margin: 0;
				padding: 5px 0;
				position: relative;
			}
			.wrap-arbo ul.children { 
				margin: 0;
				padding: 0 0 0 30px; 
			}
			.arbo-ul ul.children li { 
				margin: 0;
				display: block;
			}
			
			.children-levier {
				position: relative;
				top: 2px;
			}
			.icon-levier {
				opacity: 0.5;
			}
			.children-levier {
				opacity: 0.5;
				float: left;
				left: -5px;
			}
			.children-levier:hover, .children-levier:focus, .children-levier:active {
				opacity: 1;
			}
		</style>'
	;
	
	echo '<div class="wrap wrap-arbo">';
	echo '
		<div id="icon-edit-pages" class="icon32"></div>
		<h2>Arborescence du site</h2>
		<p>Toutes les pages publiées sur le site apparaissent dans cette arborescence.</p>
		<p>Cliquez sur le titre de la page pour la visualiser sur le site (cela ouvre une nouvelle fenêtre). <br />Cliquez sur modifier pour vous rendre sur l\'interface d\'édition.</p>
		<p><a class="arbo-deplier button-secondary" href="#" title="">Tout déplier</a> <a class="arbo-replier button-secondary" href="#" title="">Tout replier</a></p>
	';

	echo '<ul class="arbo-ul">';
	$walker = new Walker_Page_Arbo();
	wp_list_pages( array( 'title_li' => '', 'walker' => $walker ) );
	echo '</ul>';

	echo '</div>';
	echo '
		<script>
			$(".wrap-arbo li").has("ul").prepend(\'<a href="#" class="children-levier"><img src="'. get_bloginfo('template_url') .'/inc/admin/images/page-arbo-arrow.gif" alt="Déplier les pages filles de cette page" title="Déplier les pages filles de cette page" /></a>\');
			$(".wrap-arbo li").has("ul").css("left", "-10px");
			$(".wrap-arbo .children").hide();
			$(".arbo-replier").hide();
			$(".wrap-arbo .children-levier").click(function() {
				$(this).parent("li").children(".children:first").slideToggle("slow");
				return false;
			});
			$(".arbo-deplier").click(function() {
				$(".wrap-arbo .children").hide();
				$(".wrap-arbo .children").slideToggle("slow");
				$(this).hide();
				$(".arbo-replier").show();
				return false;
			});
			$(".arbo-replier").click(function() {
				$(".wrap-arbo .children").slideToggle("slow");
				$(this).hide();
				$(".arbo-deplier").show();
				return false;
			});
		</script>
	';
}
?>