Quelques petites notes à propos de l'ajout rapido bourino d'un avertissement mail lors du dépôt d'un ticket dans Tiny Issue.

Les fichiers qui nous intéressent d'éditer/créer sont:

  • l'ajout d'une vue new_ticket.php dans le dossier app/application/views/email
  • l'utilisation de la fonction Mail::send_email dans app/application/controllers/project/issue.php

issue.php

Tout d'abord, pour lire les informations postées par le formulaire de dépots de ticket il faut faire:

echo json_encode($issue);

Le retour ressemble à ça:

"success":true,
"issue":{"attributes":{"created_by":"1","project_id":"2","title":"LE TITRE DE MON TICKET","body":"LE CONTENU DE MON TICKET","assigned_to":"2","updated_at":"2013-03-28 11:38:19","created_at":"2013-03-28 11:38:19","id":56},
"original":{"created_by":"1","project_id":"2","title":"LE TITRE DE MON TICKET","body":"LE CONTENU DE MON TICKET","assigned_to":"2","updated_at":"2013-03-28 11:38:19","created_at":"2013-03-28 11:38:19","id":56},"relationships":[],"exists":true,"includes":[]}}

Pour lire une valeur en particulier, par exemple l'auteur du ticket,  il faut par exemple faire (cela ne renvoie que l'ID de l'utilisateur, il faudra par la suite exécuter une requête à la base pour connaitre son nom):

$issue['issue']->created_by

Ensuite, il faut ajouter:

/*fabrication du contenu du mail avec les valeurs particulières au ticket rédigé et selon 
le modèle de mail new_ticket.php*/

$view = View::make('email.new_ticket', array(
            'contenu' => $issue['issue']->body,
            'titre'=> $issue['issue']->title,
            'auteur' => $issue['issue']->created_by,
            'projet' => $issue['issue']->project_id
        ));
Mail::send_email($view, '', 'nouveau ticket');

A cet endroit là:

public function post_new()
{
	$issue = Project\Issue::create_issue(Input::all(), Project::current());

	if(!$issue['success'])
	{
		return Redirect::to(Project::current()->to('issue/new'))
			->with_input()
			->with_errors($issue['errors'])
			->with('notice-error', __('tinyissue.we_have_some_errors'));
	}

// - ! !!! !! ajouter ici !!!!!!!!!

	return Redirect::to($issue['issue']->to())
		->with('notice', __('tinyissue.issue_has_been_created'));
	}

new_ticket.php

créer un fichier new_ticket.php dans le dossier app/application/views/email il peut prendre la forme suivante (à améliorer):

<p>Une demande d'intervention a été déposé depuis l'adresse <?php echo URL::to(); ?></p>
<p>Le contenu est:</p>
<p><?php echo $contenu; ?> </p>
--------------------------------
<p>l'auteur</p>
<p><?php echo $auteur; ?></p>
--------------------------------
<p>le titre</p>
<p><?php echo $titre; ?></p>
--------------------------------
<p>le projet</p>
<p><?php echo $projet; ?></p>

Bon courage !
  • Il reste à faire:
    • Convertir les ID en nom, adresse, destinataire,  pour mieux rooter les envois d'email
    • Envoyer des mails au dépôt de commentaire, modification de ticket, cloture de ticket, etc, etc

En tout cas, en attendant, ça dépanne !