diff --git a/content/plugins/ldc-messages/ldc-messages.php b/content/plugins/ldc-messages/ldc-messages.php new file mode 100644 index 00000000..4dc76b7b --- /dev/null +++ b/content/plugins/ldc-messages/ldc-messages.php @@ -0,0 +1,100 @@ +get_results("SELECT *, wp_messages.id AS msg_id FROM wp_messages, wp_messages_types WHERE wp_messages.type_id = wp_messages_types.id ORDER BY date DESC", OBJECT); +} + +function init() +{ + $page = '
'; + $page .= '

Gestion des messages - LDC

'; + + // Tableau + $page .= ""; + + $page .= ""; + + $page .= ""; + $page .= ""; + $page .= ""; + $page .= ""; + $page .= ""; + $page .= ""; + $page .= ""; + $page .= ""; + $page .= ""; + + $page .= ""; + + $messages = getMessages(); + foreach ($messages as $message){ + $page .= ""; + + $page .= ""; + + $page .= ""; + + if ($message->status === '0'){ + $page .= ""; + }else{ + $page .= ""; + } + + $page .= ""; + $page .= ""; + $page .= ""; + $page .= ""; + + if ($message->response_date !== NULL){ + $page .= ""; + }else{ + $page .= ""; + } + + if ($message->status === '0'){ + $page .= ""; + }else{ + $page .= ""; + } + + $page .= ""; + } + + $page .= "
#DateStatutNomPrénomEmailTypeDate de réponse
$message->ref". date('d/m/Y H:i', strtotime($message->date)) ."

À traiter

Traité

$message->lastname$message->firstname$message->email$message->name". date('d/m/Y H:i', strtotime($message->response_date)) ."-RépondreAfficher
"; + + $page .= ""; + + $page .= '
'; + + echo $page; +} diff --git a/content/plugins/ldc-messages/script.js b/content/plugins/ldc-messages/script.js new file mode 100644 index 00000000..4525d1f0 --- /dev/null +++ b/content/plugins/ldc-messages/script.js @@ -0,0 +1,80 @@ +let $j = jQuery.noConflict(); + +$j(function(){ + + let currentMsg; + let currentMsgRef; + + $j('body').on('click', '.answer-msg', function(e){ + e.preventDefault(); + + currentMsg = $j(this).data('id'); + currentMsgRef = $j(this).data('ref'); + + $j.post( + ajaxurl, + { + 'action': 'getReponseForMsg', + 'id' : currentMsg, + }, + function(response){ + $j('#reponse-msg').empty().html(response); + $j.fancybox.open({ + src : '#reponse-msg', + type : 'inline', + afterClose: function (){ + window.location.reload(); + }, + closeBtn: true + }); + } + ); + + }); + + $j('body').on('click', '.show-msg', function(e){ + e.preventDefault(); + + currentMsg = $j(this).data('id'); + + $j.post( + ajaxurl, + { + 'action': 'getMsg', + 'id' : currentMsg, + }, + function(response){ + $j('#reponse-msg').empty().html(response); + $j.fancybox.open({ + src : '#reponse-msg', + type : 'inline', + afterClose: function (){ + window.location.reload(); + }, + closeBtn: true + }); + } + ); + + }); + + $j('body').on('click', '.send-answer', function(e){ + e.preventDefault(); + let email = $j('#emailTosend').val(); + let message = $j('#msgTosend').val(); + $j.post( + ajaxurl, + { + 'action': 'sendReponse', + 'email' : email, + 'message' : message, + 'id' : currentMsg, + 'ref': currentMsgRef + }, + function(response){ + $j('#reponse-msg').empty().html(response); + } + ); + }) + +}); diff --git a/content/plugins/ldc-messages/style.css b/content/plugins/ldc-messages/style.css new file mode 100644 index 00000000..1b42adc2 --- /dev/null +++ b/content/plugins/ldc-messages/style.css @@ -0,0 +1,40 @@ +.ldc_messages_table { + border-collapse: collapse; + width: 90%; + margin: 30px auto 0 auto; + background-color: white; +} + +.ldc_messages_table, .ldc_messages_table th, .ldc_messages_table td { + border: 1px solid; +} + +.ldc_messages_table th, .ldc_messages_table td { + padding: 15px; + text-align: center; +} + +.ldc_messages_table th { + font-weight: bold; +} + +.ldc_messages_red { + color: red; +} + +.ldc_messages_green { + color: green; +} + +#reponse-msg { + width:700px; +} + +#reponse-msg p{ + margin:0; +} + +#reponse-msg textarea { + width:100%; + height:250px; +} diff --git a/content/themes/ldc/contacts/6249_eleveurs.php b/content/themes/ldc/contacts/6249_eleveurs.php new file mode 100644 index 00000000..9245d888 --- /dev/null +++ b/content/themes/ldc/contacts/6249_eleveurs.php @@ -0,0 +1,167 @@ +

+
+
+ Retour au choix de contact +
+
+
+
+
Vous êtes éleveur de volailles ou souhaitez le devenir, et nous rejoindre ?
Décrivez-nous votre projet le plus précisément possible afin que nous puissions orienter votre demande vers l'interlocuteur adéquat.
+
+
+
Nom *
+ +
+
+
Prénom *
+ +
+
+
+
+
Téléphone *
+ +
+
+
Adresse Email *
+ +
+
+
+
+
Type d'élevage souhaité * (choix multiple)
+ + + + + +
+
+ +
+
+
Zone géographique de votre projet *
+
+
Liste déroulante de départements
+
+ + + + +
+
+
+
+ +
+
Votre projet *
+ +
+ +
+ +
+
+ + +
+ +
* Champs obligatoires
+
+ +
+ +
[recaptcha]
+
+ + + +
+
+ +
+
+
+
+
+
+
+ + diff --git a/content/themes/ldc/functions.php b/content/themes/ldc/functions.php index 76cb442b..2d7376c1 100644 --- a/content/themes/ldc/functions.php +++ b/content/themes/ldc/functions.php @@ -409,120 +409,92 @@ function catLink($cat_id) { ///////////////////// POC : REPONDRE AUX CONTACTS DIRECTEMENT DEPUIS L'ADMINISTRATION ////////////////////// -// ---- CPT Message -function wp_cpt_messages() { - $labels = array( - 'name' => _x( 'Message', 'Post Type General Name'), - 'singular_name' => _x( 'Message', 'Post Type Singular Name'), - 'menu_name' => __( 'Messages'), - 'all_items' => __( 'Tous les Messages'), - 'view_item' => __( 'Voir les Messages'), - 'add_new_item' => __( 'Ajouter un Message'), - 'add_new' => __( 'Ajouter'), - 'edit_item' => __( 'Editer le Message'), - 'update_item' => __( 'Modifier le Message'), - 'search_items' => __( 'Rechercher un Message'), - 'not_found' => __( 'Non trouvée'), - 'not_found_in_trash' => __( 'Non trouvée dans la corbeille'), - ); - - $args = array( - 'label' => __( 'Message'), - 'labels' => $labels, - 'supports' => array( 'title', 'editor', 'thumbnail'), - 'hierarchical' => true, - 'public' => true, - 'has_archive' => true, - 'taxonomies' => array('type'), - 'rewrite' => array( 'slug' => 'type/%gamme%'), - 'map_meta_cap' => true, - 'menu_icon' => 'dashicons-email-alt' - ); - - register_post_type( 'message', $args ); +// Contact Ajax +function getMessageType($postID){ + switch ($postID){ + case 6249: + return 1; + break; + } } -add_action( 'init', 'wp_cpt_messages', 0 ); -// ---- Taxo : Type de message -function taxo_type_message() { - $args = array( - 'label' => __( 'Type' ), - 'hierarchical' => true, - 'rewrite' => array( 'slug' => 'type', 'with_front' => false ), - 'show_ui' => true, - 'show_in_quick_edit' => false, - 'show_admin_column' => true, - ); - register_taxonomy( 'type', 'message', $args ); +function sendNotification($postID, $ref) { + switch ($postID){ + case 6249: + $email = ['vincent.bridier@ldc.fr']; + break; + } + wp_mail($email, "Vous avez un message à traiter sur le site LDC", "$ref"); } -add_action( 'init', 'taxo_type_message'); -// Ajout de la possibilité d'ordonner la colonne par type -function add_message_sortable_columns( $cols ) { - $cols[ 'taxonomy-type' ] = 'taxonomy-type'; - return $cols; +function generateRandomString($length = 10) { + $characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; + $charactersLength = strlen($characters); + $randomString = ''; + for ($i = 0; $i < $length; $i++) { + $randomString .= $characters[rand(0, $charactersLength - 1)]; + } + return $randomString; } -add_filter( 'manage_edit-message_sortable_columns', 'add_message_sortable_columns' ); -//Ajout du selecteur permettant de filtrer par type -function filter_message_by_taxonomies( $post_type, $which ) { +add_action( 'wp_ajax_ContactAjx', 'ContactAjx'); +add_action( 'wp_ajax_nopriv_ContactAjx', 'ContactAjx'); +function ContactAjx() { + global $wpdb; - // Apply this only on a specific post type - if ( 'message' !== $post_type ) - return; + // TODO : Validation Recaptcha with toekn + // TODO : Test variables required + //check_ajax_referer( 'ajax-security-nonce', 'security' ); - // A list of taxonomy slugs to filter by - $taxonomies = array( 'type'); + $postID = sanitize_text_field($_POST['id']); + $firstname = sanitize_text_field($_POST['firstname']); + $lastname = sanitize_text_field($_POST['lastname']); + $email = sanitize_email($_POST['email']); + $content = ""; - foreach ( $taxonomies as $taxonomy_slug ) { + foreach ($_POST as $key => $item){ + if ($key === 'firstname' || $key === 'lastname' || $key === 'email' || $key === 'action' || $key === 'id' || $key === 'token') + continue; - // Retrieve taxonomy data - $taxonomy_obj = get_taxonomy( $taxonomy_slug ); - $taxonomy_name = $taxonomy_obj->labels->name; + if (is_array($item)){ + $content .= ucfirst($key) . " :\n\r"; + foreach ($item as $v){ + $content .= "- $v \n\r"; + } + }else{ + $content .= ucfirst($key) . " : " . $item . "\n\r"; + } + } - // Retrieve taxonomy terms - $terms = get_terms( $taxonomy_slug ); + $ref = date('ymd') . '-' . generateRandomString(4); - // Display filter HTML - echo "'; - } + $wpdb->insert( + 'wp_messages', + [ + 'ref' => $ref, + 'firstname' => $firstname, + 'lastname' => $lastname, + 'email' => $email, + 'content' => $content, + 'status' => 0, + 'date' => date('Y-m-d H:i:s'), + 'type_id' => getMessageType($postID) + ], [ + '%s', + '%s', + '%s', + '%s', + '%s', + '%d', + '%s', + '%d' + ] + ); + sendNotification($postID, $ref); + + die(); } -add_action( 'restrict_manage_posts', 'filter_message_by_taxonomies' , 10, 2); - - -// Ajout colonne de réponse -function custom_message_columns_title($columns) { - $columns['repondre'] = 'Répondre'; - unset($columns['date']); - return $columns; -} -add_filter('manage_edit-message_columns', 'custom_message_columns_title'); - - -// Ajout contenu dans colonne de réponse -function custom_message_columns_content($column) { - global $post; - switch ($column) { - case 'repondre' : - echo('Répondre au message'); - break; - } - } - - add_action('manage_message_posts_custom_column', 'custom_message_columns_content'); - // Ajout script spécifique sur l'admin message function my_enqueue($hook) { @@ -546,6 +518,33 @@ function my_enqueue($hook) { } add_action('admin_enqueue_scripts', 'my_enqueue'); +add_action( 'wp_ajax_getMsg', 'getMsg' ); +add_action( 'wp_ajax_nopriv_getMsg', 'getMsg' ); + +function getMsg(){ + global $wpdb; + + $msg_id = $_POST['id']; + + $msg = $wpdb->get_row("SELECT * FROM wp_messages, wp_messages_types WHERE wp_messages.type_id = wp_messages_types.id AND wp_messages.id = $msg_id LIMIT 1", OBJECT); + + if ($msg === NULL) + die('

Message inconnu

'); + + $html = "
"; + $html .= "

Message du consommateur :

"; + $html .= "

Nom Prénom : ".$msg->lastname." ".$msg->firstname."

"; + $html .= "

E-mail : ".$msg->email."

"; + $html .= "

".nl2br($msg->content)."

"; + $html .= "

Réponse :

"; + $html .= "

".nl2br($msg->response)."

"; + $html .= "
"; + + echo($html); + + die(); +} + //Ajax pour ouvrir la page de réponse add_action( 'wp_ajax_getReponseForMsg', 'getReponseForMsg' ); add_action( 'wp_ajax_nopriv_getReponseForMsg', 'getReponseForMsg' ); @@ -553,31 +552,21 @@ add_action( 'wp_ajax_nopriv_getReponseForMsg', 'getReponseForMsg' ); function getReponseForMsg(){ global $wpdb; - $postid = $_POST['id']; - // TODO : Add civilité - $civilite = get_field('field_5e57a09acdacf', $postid); - $nom = get_field('field_5e57a087cdacd', $postid); - $prenom = get_field('field_5e57a095cdace', $postid); - $adresse = get_field('field_5e57a0a9cdad0', $postid); - $codepostal = get_field('field_5e57a0afcdad1', $postid); - $ville = get_field('field_5e57a0b8cdad2', $postid); - $email = get_field('field_5e57a0becdad3', $postid); - $telephone = get_field('field_5e57a0c3cdad4', $postid); - $message = get_field('field_5e57a0d9cdad5', $postid); + $msg_id = $_POST['id']; + + $msg = $wpdb->get_row("SELECT * FROM wp_messages, wp_messages_types WHERE wp_messages.type_id = wp_messages_types.id AND wp_messages.id = $msg_id LIMIT 1", OBJECT); + + if ($msg === NULL) + die('

Message inconnu

'); $html = "
"; $html .= "

Message du consommateur :

"; - $html .= "

Nom Prénom : ".$nom." ".$prenom."

"; - $html .= "

E-mail : ".$email."

"; - $html .= "

Adresse : ".$adresse."

"; - $html .= "

Code Postal : ".$codepostal."

"; - $html .= "

Ville : ".$ville."

"; - $html .= "

Téléphone : ".$telephone."

"; - $html .= "

Message envoyé :

"; - $html .= "

".$message."

"; + $html .= "

Nom Prénom : ".$msg->lastname." ".$msg->firstname."

"; + $html .= "

E-mail : ".$msg->email."

"; + $html .= "

".nl2br($msg->content)."

"; $html .= "

Votre Réponse :

"; - $html .= ""; - $html .= ""; + $html .= ""; + $html .= ""; $html .= ""; $html .= "
"; @@ -586,6 +575,20 @@ function getReponseForMsg(){ die(); } +// Function to change email address +function wpb_sender_email( $original_email_address ) { + return 'nepasrepondre@ldc.fr'; +} + +// Function to change sender name +function wpb_sender_name( $original_email_from ) { + return 'Groupe LDC'; +} + +// Hooking up our functions to WordPress filters +add_filter( 'wp_mail_from', 'wpb_sender_email' ); +add_filter( 'wp_mail_from_name', 'wpb_sender_name' ); + //Ajax d'envoi de la réponse add_action( 'wp_ajax_sendReponse', 'sendReponse' ); add_action( 'wp_ajax_nopriv_sendReponse', 'sendReponse' ); @@ -595,8 +598,25 @@ function sendReponse(){ $email = $_POST['email']; $message = $_POST['message']; + $msg_id = $_POST['id']; + $ref = $_POST['ref']; - wp_mail($email, "Réponse à votre message sur le site LDC", $message, ''); + $message = "REF: $ref

" . nl2br($message); + + wp_mail($email, "Réponse à votre message sur le site LDC", $message); + + $wpdb->update( + 'wp_messages', + [ + 'response' => $message, + 'response_date' => date('Y-m-d H:i:s'), + 'status' => 1, + ], ['id' => $msg_id], [ + '%s', + '%s', + '%d', + ] + ); $html = "

Message Envoyé !

"; diff --git a/content/themes/ldc/page-contacts-2.php b/content/themes/ldc/page-contacts-2.php index 75088dff..60a3947e 100644 --- a/content/themes/ldc/page-contacts-2.php +++ b/content/themes/ldc/page-contacts-2.php @@ -37,129 +37,6 @@ get_header(); - ID === 6249): ?> -

-
-
- Retour au choix de contact -
-
-
-
-
Vous êtes éleveur de volailles ou souhaitez le devenir, et nous rejoindre ?
Décrivez-nous votre projet le plus précisément possible afin que nous puissions orienter votre demande vers l'interlocuteur adéquat.
-
-
-
Nom *
- -
-
-
Prénom *
- -
-
-
-
-
Téléphone *
- -
-
-
Adresse Email *
- -
-
-
-
-
Type d'élevage souhaité * (choix multiple)
- - - - - -
-
- -
-
-
Zone géographique de votre projet *
-
-
Liste déroulante de départements
-
- - - - -
-
-
-
- -
-
Votre projet *
- -
- -
- -
-
- - -
- -
* Champs obligatoires
-
- -
-
[recaptcha]
-
- -
Un ou plusieurs champs contiennent une erreur. Veuillez vérifier et essayer à nouveau.
- -
-
- -
-
-
-
-
-
-
- + ID === 6249) : require_once('contacts/6249_eleveurs.php'); endif ?> -