Advertisement
Guest User

Untitled

a guest
Jun 11th, 2012
311
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.31 KB | None | 0 0
  1. //Initialisation
  2. function mes_metaboxes()
  3. {
  4.   add_meta_box( 'things', 'choses à faire', 'things_to_do', 'post', 'normal', 'default' );
  5. }
  6. add_action('add_meta_boxes','mes_metaboxes');
  7.  
  8. // Fonction de construction de la metabox
  9. function things_to_do( $post )
  10. {
  11.   global $wpdb;
  12.   //taches
  13.   $to_do = get_post_meta( $post->ID,'_descr_chose', true );
  14.     // Eviter d'avoir une chaine vide au lieu d'un array vide et faire peter le foreach
  15.   $to_do = is_array( $to_do ) ? array_filter( $to_do ) : array();
  16.   //duree
  17.   $duree_chose = array_filter( get_post_meta( $post->ID,'_duree_chose', true ) );
  18.   $duree_chose = is_array( $duree_chose ) ? array_filter( $duree_chose ) : array();
  19.   // nonce  
  20.   wp_nonce_field( 'update-taches_'.$post->ID, '_wpnonce_update_taches' );
  21.  
  22.   //boucle
  23.   echo '<div id="all_things">';
  24.   // Je vérifie que le nombre d'entrées des choses soit égal à celui des durées
  25.   if( count( $to_do )>0 && count( $to_do )==count( $duree_chose ) ):
  26.     foreach( $to_do as $k => $t ){
  27.     $duree_c = $duree_chose[$k];
  28.     ?>
  29.     <div class="item-chose"><label for="">Description : </label><input type="text" class="description_des_choses" name="descr_chose[]" id="" style="width:50%" value="<?php echo $t; ?>" /> <label for="">Durée allouée : </label><input type="text" class="duree_des_choses" name="duree_chose[]" id="" style="width:56px;" value="<?php echo $duree_c; ?>" />h <a class="suppr-chose button-secondary hide-if-no-js" href="javascript:void(0);">supprimer</a><span class="hide-if-js"><em>Pour supprimer, videz les contenus.</em></span></div>
  30.     <?php
  31.     }
  32.   endif; ?>
  33.   <div class="item-chose hide-if-js"><label for="">Description : </label><input type="text" class="description_des_choses" name="descr_chose[]" id="" style="width:50%"/> <label for="">Durée allouée : </label><input type="text" class="duree_des_choses" name="duree_chose[]" id="" style="width:56px;" />h <a class="suppr-chose button-secondary hide-if-no-js" href="javascript:void(0);">supprimer</a><span class="hide-if-js"><em>Pour supprimer, videz les contenus.</em></span></div>
  34.   <?php
  35.   echo '</div>';
  36.   ?>
  37.  
  38.   <!-- lien ajout -->
  39.   <p>
  40.   <a id="ajout-chose" class="button-primary hide-if-no-js" href="javascript:void(0);" style="margin-top:10px;position:relative;">Ajouter une tâche</a>
  41.   <span class="hide-if-js">Pour ajouter une nouvelle entrée, sauvegardez l'article.<br /><em>JAVASCRIPT désactivé, vous aurez une meilleure ergonomie avec le javascript activé.</em></span>
  42.   </p>
  43.  
  44.   <!-- script-->
  45.   <script>
  46.   jQuery(document).ready(function($){
  47.     //suppression champ
  48.     $('.suppr-chose').live('click',function(){
  49.         $(this).parent().remove();
  50.     });
  51.  
  52.     //ajout champ
  53.     $('#ajout-chose').on('click',function(){
  54.       $('.item-chose:last').clone().appendTo('#all_things');
  55.       $('.item-chose:last input').val('');
  56.     });
  57.   });
  58.   </script>
  59. <?php
  60. }
  61.  
  62. // Sauvegarde
  63. function ma_sauvegarde()
  64. {
  65.    if( ( !defined( 'DOING_AJAX' ) || !DOING_AJAX )
  66.         && isset( $_POST['descr_chose'], $_POST['descr_chose'], $_POST['ID'] ) ):
  67.     check_admin_referer( 'update-taches_'.$_POST['ID'],'_wpnonce_update_taches' );
  68.     update_post_meta( $_POST['ID'], '_descr_chose', $_POST['descr_chose'] );
  69.     update_post_meta( $_POST['ID'], '_duree_chose', $_POST['duree_chose'] );
  70.   endif;
  71. }
  72. add_action('save_post','ma_sauvegarde', 10, 0 );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement