jacodelucia
2/20/2015 - 10:50 AM

WP - custom admin page

WP - custom admin page

<?php require_once("save.php"); ?>
<div class="wrap">
	
		
		<div id="icon-edit" class="icon32 icon32-posts-evenement"><br /></div>
		<h2>Page d'accueil 
			<a class="add-new-h2" href="admin.php?page=blocs_menu">Ajouter une page blocs</a>
			<a class="add-new-h2" href="admin.php?page=magazines_menu">Ajouter une page Magazine</a>
		</h2>
		
		<p></p>
		
		
		<table class="wp-list-table widefat fixed posts" cellspacing="0">
			<thead>
				<tr>
					<th style="" class="manage-column column-cb check-column" id="cb" scope="col">
						<input type="checkbox">
					</th>
					<th style="" class="manage-column column-title sortable desc" id="title" scope="col">
						<a href="#"><span>Titre</span><span class="sorting-indicator"></span></a>
					</th>
					<th style="" class="manage-column column-author sortable desc" id="author" scope="col">
						<a href="#"><span>Type</span><span class="sorting-indicator"></span></a>
					</th>
					<th style="" class="manage-column column-actif sortable asc" >
						<a href="#"><span>État</span><span class="sorting-indicator"></span></a>
					</th>
				</tr>
			</thead>
			
			<tbody id="the-list">
				
				<?php
				$results = get_accueils();
				if(!empty($results)){
					
					foreach($results as $r){
				?>
				<tr class="items">
					<td style="" class="manage-column column-cb check-column" id="cb" scope="col">
						
					</td>
					<td style="" class="post-title page-title column-title" id="title" scope="col">
						<?php if($r->type == 'blocs'){ $modif_page = 'blocs_menu'; } else { $modif_page = 'magazines_menu'; } ?>
						<strong><a href="admin.php?page=<?php echo $modif_page;?>&id=<?php echo $r->id;?>"><span><?php echo $r->titre;?></span><span class="sorting-indicator"></span></a></strong>
						<div class="row-actions">
							<a href="admin.php?page=<?php echo $modif_page;?>&id=<?php echo $r->id;?>">Modifier la page</a> | 
							<a class="submitdelete" href="admin.php?page=accueil_menu&sup=<?php echo $r->id;?>&wpnonce=<?php echo wp_create_nonce("del_accueil_nonce");?>">supprimer</a>
						</div>
					</td>
					<td style="" class="post-title page-title column-title" id="author" scope="col">
						<span><?php echo $r->type;?></span><span class="sorting-indicator"></span>
					</td>
					<td style="" class="post-title page-title column-title">
						<?php 
						if($r->active == 0){
							$actif = '';
							$ouiNon = 'définir comme actif';
							$href = 'admin.php?page=accueil_menu&active='.$r->id.'&wpnonce='.wp_create_nonce("active_accueil_nonce");
						} else {
							$actif = $ouiNon = 'actif';
							$href = '#';
						}
						?>
						<a class="<?php echo $actif;?> setActif" href="<?php echo $href;?>"><span><?php echo $ouiNon;?></span><span class="sorting-indicator"></span></a>
					</td>
				</tr>
				<?php	
					}
				} else {
					echo '<tr class="no-items"><td colspan="4" class="colspanchange">Aucun évènement de trouvé</td></tr>';
				}
				?>
			</tbody>
			
			<tfoot>
				<tr>
					<th style="" class="manage-column column-cb check-column" id="cb" scope="col">
						<input type="checkbox">
					</th>
					<th style="" class="manage-column column-title sortable desc" id="title" scope="col">
						<a href="#"><span>Titre</span><span class="sorting-indicator"></span></a>
					</th>
					<th style="" class="manage-column column-author sortable desc" id="author" scope="col">
						<a href="#"><span>Type</span><span class="sorting-indicator"></span></a>
					</th>
					<th style="" class="manage-column column-date sortable asc" id="date" scope="col">
						<a href="#"><span>État</span><span class="sorting-indicator"></span></a>
					</th>
				</tr>
			</tfoot>
		</table>
		
		
	
	<br class="clear">
</div>

<!--
<label for="upload_image"> 
	<input id="upload_image" size="36" name="upload_image" type="text" /> 
	<input id="upload_image_button" class="button-secondary" value="Ajouter une Image" type="button" /> 
</label>
<div id="imgContener"></div>
-->

<!--
<div id="post-body" class="metabox-holder columns-2">
		<div id="post-body-content">
			<div id="normal-sortables" class="meta-box-sortables ui-sortable">
				<div id="meta_lieu" class="postbox ">
					
					<div class="handlediv" title="Cliquer pour inverser."><br /></div>
					<h3 class="hndle"></h3>
					
				</div>
			</div>
		</div>
	</div>
-->
<?php

/*
 *------------------------------
 *   RECUPERATION DES VARIABLES
 *------------------------------
*/

if(!empty($_POST) && current_user_can('delete_posts')){
	
	if (!isset($_POST['accueil_box_noncename']) || !wp_verify_nonce($_POST['accueil_box_noncename'],"accueil_nonce")) die('erreur de sécurité');
	
	$data = array();
	
	if(isset($_POST['post_title'])){
		$title = filter_var($_POST['post_title'], FILTER_SANITIZE_STRING);
		if($title == ''){
			$title = formate_date(date('Y-m-d', time()));
		}
		$data['titre'] = $title;
	}
	
	if(isset($_POST['contenu_accueil_box'])){
		$contenu = stripcslashes($_POST['contenu_accueil_box']);
		$data['contenu'] = str_replace("\t", '', $_POST['contenu_accueil_box']);
		$data['contenu'] = trim($data['contenu']);
		
		$contenu_front = stripcslashes($_POST['contenu_accueil_front']);
		$data['contenu_front'] = str_replace("\t", '', $_POST['contenu_accueil_front']);
		$data['contenu_front'] = trim($data['contenu_front']);
	}
	
	$allowed_types = array("blocs", "magazine");
	$type = $_POST['type'];
	if(!in_array($type, $allowed_types)){
		$type = 'blocs';
	}
	$data['type'] = $type;
	
	/*
	 *--------------------------
	 *   ENREGISTREMENT
	 *--------------------------
	*/
	
	global $wpdb;
	$table = $wpdb->prefix . "_accueil_pages";
	
	if(isset($_GET['id']) && filter_var($_GET['id'], FILTER_VALIDATE_INT) || isset($_POST['id']) && filter_var($_POST['id'], FILTER_VALIDATE_INT)){
		if(isset($_POST['id'])){ $id = filter_var($_POST['id'], FILTER_SANITIZE_NUMBER_INT); }
		if(isset($_GET['id'])){ $id = filter_var($_GET['id'], FILTER_SANITIZE_NUMBER_INT); }
		$wpdb->update( $table, $data, array( 'id' => $id ), array('%s','%s','%s'), array("%d") );
	} else {
		$wpdb->insert($table, $data, array('%s','%s','%s'));
		$id = $wpdb->insert_id;
		//wp_redirect(admin_url('admin.php?page=blocs_menu&id='.$id));
	}
	
}

/*
 *--------------------------
 *   SUPPRESSION
 *--------------------------
*/

if(isset($_GET['sup']) && filter_var($_GET['sup'], FILTER_VALIDATE_INT) && $_GET['page'] == 'accueil_menu'){
	
	global $wpdb;
	$table = $wpdb->prefix . "_accueil_pages";
	
	if (!isset($_GET['wpnonce']) || !wp_verify_nonce($_GET['wpnonce'],"del_accueil_nonce")) die('erreur de sécurité');
	$id = filter_var($_GET['sup'], FILTER_SANITIZE_NUMBER_INT);
	
	$wpdb->query(
		$wpdb->prepare(
			"
	         DELETE FROM $table
			 WHERE id = %d
			",
		        $id 
	        )
	);
}

/*
 *--------------------------
 *   ACTIVATION
 *--------------------------
*/

if(isset($_GET['active']) && filter_var($_GET['active'], FILTER_VALIDATE_INT) && $_GET['page'] == 'accueil_menu'){
	
	global $wpdb;
	$table = $wpdb->prefix . "_accueil_pages";
	
	if (!isset($_GET['wpnonce']) || !wp_verify_nonce($_GET['wpnonce'],"active_accueil_nonce")) die('erreur de sécurité');
	$id = filter_var($_GET['active'], FILTER_SANITIZE_NUMBER_INT);
	
	set_not_active_accueil();
	set_active_accueil($id);
}



<?php 
$data['titre'] = '';
$data['contenu'] = '';
$data['active'] = 0;

if(!empty($_POST)){ 
	if (!isset($_POST['accueil_box_noncename']) || !wp_verify_nonce($_POST['accueil_box_noncename'],"accueil_nonce")) die('erreur de sécurité');
	require_once('save.php');
}

if(isset($_GET['id']) && filter_var($_GET['id'], FILTER_VALIDATE_INT)){
	$id = filter_var($_GET['id'], FILTER_SANITIZE_NUMBER_INT);
	global $wpdb;
	$data = get_accueil($id);
	if(empty($data)){
		die('<h2>Ce post n\'existe pas !!</h2>');
	}
}
?>

<div class="wrap">
	
	<div id="icon-edit" class="icon32 icon32-posts-evenement"><br /></div>
	
	<h2>Ajouter une page blocs</h2>
	
	<p></p>
	
<form id="accueil" method="post" action="">
	<?php echo '<input type="hidden" name="accueil_box_noncename" value="' . wp_create_nonce("accueil_nonce") . '" />';?>
	<?php if(isset($id)){ echo '<input type="hidden" name="id" value="'.$id.'" />'; } ?>
	
	<input type="hidden" name="type" value="blocs" />
	<div id="poststuff">
		
		<div id="titlediv">
			<div id="titlewrap">
				<label for="title" id="title-prompt-text" style="" class="hide-if-no-js">Saisissez le titre ici</label>
				<input type="text" autocomplete="off" id="title" value="<?php echo $data['titre'];?>" tabindex="1" size="30" name="post_title">
			</div>
		</div>
		
		<p>
			<a id="ajoutSingleBlocAccueil" class="button" href="#">Ajouter un bloc Simlpe</a>
			<a id="ajoutDoubleBlocAccueil" class="button" href="#">Ajouter un bloc Double</a>
			<a id="ajoutDoubleBlocLogoAccueil" class="button" href="#">Ajouter un bloc LOGO</a>
			
			<textarea class="hidden" id="contenu_accueil_front" name="contenu_accueil_front"><?php echo stripslashes($data['contenu_front']);?></textarea>
			<textarea id="contenu_accueil_box" name="contenu_accueil_box"><?php echo stripslashes($data['contenu']);?></textarea>
			<input type="submit" id="saveBlocAccueil" class="button-primary right" href="#" value="Enregistrer">
			
			<div class="clear"></div>
		</p>
</form>
		
		<p></p>
		
		<div id="post-body" class="metabox-holder columns-2">
			<div id="post-body-content">
				<div id="normal-sortables" class="meta-box-sortables ui-sortable">
					<div id="meta_lieu" class="postbox ">
						
						<h3 class="hndle">Blocs</h3>
						<div class="inside noMargin">
							<div class="custom blocsSortable">
								
								<?php 
									if($data['contenu'] == ''){
										include('blocs_template.php');
									} else {
										echo stripslashes($data['contenu']);
									}
								?>
								
							</div>
						</div>
					</div>
				</div>
			</div>
			
			<div id="postbox-container-1" class="postbox-container">
				<div id="side-sortables" class="meta-box-sortables ui-sortable">
					<div class="postbox " id="formatdiv">
						<h3 class="hndle"><span>Contenu</span></h3>
						<div class="inside">
							<div id="post-formats-select">
								
								<form id="saveAccueilForm" method="post" action="">
									
									<div id="form_back_accueil">
										<div class="formBox box-form-1" data-id="1">
											<p>
												Titre : <input id="titre_accueil_input" class="titre_accueil_input" data-id="1" style="width:98%" type="text" name="box[1][titre]" />
											</p>
											
												<?php wp_editor('','test',array(
														'media_buttons' => false,'textarea_rows' => 8,'tabindex' => 4,'teeny' => false,
														'tinymce' => array(
													        'theme_advanced_buttons1' => 'bold, italic, link, NextGEN',
													        'theme_advanced_buttons2' => '',
													        'force_br_newlines' => true,
													        'force_p_newlines' => false,
													        'forced_root_block' => ''
													        ),
													   )
												);
												?>
											
											<p><a href="#" class="button" id="updateText">Mettre à jour</a></p>
											
											<div class="separateur"></div>
											
											<p>
												Couleur de fond : 
												<div data-bg="bg-blanc" class="setBg bg-blanc"></div>
												<div data-bg="bg-bleu" class="setBg bg-bleu"></div>
												<div data-bg="bg-rose" class="setBg bg-rose"></div>
												<div data-bg="bg-jaune" class="setBg bg-jaune"></div>
												<div data-bg="bg-ciel" class="setBg bg-ciel"></div>
												<div data-bg="bg-orange" class="setBg bg-orange"></div>
												<div data-bg="bg-vert" class="setBg bg-vert"></div>
												<div data-bg="bg-rouge" class="setBg bg-rouge"></div>
											</p>
											
											<p>
												Couleur de texte : 
												<div data-txt="txt-blanc" class="setTxt txt-blanc"></div>
												<div data-txt="txt-noir" class="setTxt txt-noir bg-noir"></div>
											</p>
											
											<div class="separateur"></div>
											
											<p>
												<label for="upload_image"> 
													<input class="upload_image image-1" size="36" data-id="1" name="box[1][image]" type="hidden" /> 
													<input id="upload_image_bloc" class="upload_image_bloc button-secondary" data-id="1" value="Ajouter une Image" type="button" />
													<input id="delete_image_button" class="delete_image_button button" data-id="1" value="Retirer l'Image" type="button" />
												</label>
												<div id="imgContener" class="imgContener image-1"></div>
											</p>
										</div>
										
									</div>
								</form>
							</div>
						</div>
					</div>
				</div>
			</div>
		</div>
	</div>
	<br class="clear">
</div>

<div id="BoxDoubleExemple">
	<div class="blocsContener">
		<a class="remove"> supprimer </a>
		<div data-id="num" class="homeBox demi box-num bg-blanc txt-noir">
			<h3></h3>
			<div class="contentBox"></div>
		</div>
		<div data-id="num2" class="homeBox demi box-num2 bg-blanc txt-noir">
			<h3></h3>
			<div class="contentBox"></div>
		</div>
		<div class="clear"></div>
	</div>
</div>

<div id="BoxDoubleLogoExemple" class="hidden">
	<div class="blocsContener" id="logoBox">
		<a class="remove"> supprimer </a>
		<div data-id="num" class="homeBox demi box-num bg-blanc txt-noir">
			<div id="logoBoxContener"></div>
			<div class="contentBox"></div>
		</div>
		<div data-id="num2" class="homeBox demi box-num2 bg-blanc txt-noir">
			<h3></h3>
			<div class="contentBox"></div>
		</div>
		<div class="clear"></div>
	</div>
</div>

<div id="BoxSimpleExemple">
	<div class="blocsContener">
		<a class="remove"> supprimer </a>
		<div data-id="num" class="homeBox full box-num bg-blanc txt-noir">
			<h3></h3>
			<div class="contentBox"></div>
		</div>
		<div class="clear"></div>
	</div>
</div>

<div id="contenuFrontFilter" class="hidden"></div>
<?php
// CREATION DE LA TABLE DANS LA BDD

if(isset($_GET['page']) && $_GET['page'] == 'accueil_menu'){
	/*
	 *--------------------------
	 *   CREATION DE LA TABLE
	 *--------------------------
	*/
	
	$table_name = $wpdb->prefix . "_accueil_pages";
	
	if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) {
		global $wpdb;
		
		$sql = 
		"CREATE TABLE `comediedereims`.`$table_name` (
			`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
			`titre` VARCHAR( 255 ) NOT NULL ,
			`contenu` LONGTEXT NOT NULL ,
			`contenu_front` LONGTEXT NOT NULL ,
			`type` VARCHAR( 8 ) NOT NULL ,
			`active` INT( 1 ) NOT NULL
		) ENGINE = InnoDB;";
		
		require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
		dbDelta($sql);
	}
}

add_action('admin_menu', 'register_accueil_menu_page');

// add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position );
// add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function );


function register_accueil_menu_page() {
    add_menu_page('Accueil', 'Accueil Reims', 'delete_posts', 'accueil_menu', 'accueil_admin_view', '', 3);
    add_submenu_page('accueil_menu', 'Ajouter une page blocs', 'Ajouter une page blocs', 'delete_posts', 'blocs_menu', 'ajout_accueil' );
    add_submenu_page('accueil_menu', 'Ajouter une page magazines', 'Ajouter une page magazines', 'delete_posts', 'magazines_menu', 'manage_magazine' );
}

function accueil_admin_view(){
	require_once('view.php');
}

function ajout_accueil(){
	require_once('ajout_view.php');
}

function manage_magazine(){
	require_once('ajout_magazine_view.php');
}

function manage_alerte(){
	require_once('ajout_alerte_view.php');
}