Overview
Comment: | Implement reminder delete and editing |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | dev |
Files: | files | file ages | folders |
SHA1: |
81ac5a6d4518c2ccb49844bc4da8cc9a |
User & Date: | bohwaz on 2020-11-04 23:59:17 |
Other Links: | branch diff | manifest | tags |
Context
2020-11-04
| ||
23:59 | Fix tabs and some details check-in: a95325c3ba user: bohwaz tags: dev | |
23:59 | Implement reminder delete and editing check-in: 81ac5a6d45 user: bohwaz tags: dev | |
03:02 | Implement reminders list and creation check-in: 84a61ff723 user: bohwaz tags: dev, 1.0.0-alpha4 | |
Changes
Modified src/include/lib/Garradin/Entities/Services/Reminder.php from [89de1d7680] to [fc3cff70bf].
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php namespace Garradin\Entities\Services; use Garradin\Entity; use Garradin\ValidationException; use Garradin\Config; class Reminder extends Entity { const TABLE = 'services_reminders'; protected $id; protected $id_service; | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php namespace Garradin\Entities\Services; use Garradin\Entity; use Garradin\ValidationException; use Garradin\Config; use KD2\DB\EntityManager; class Reminder extends Entity { const TABLE = 'services_reminders'; protected $id; protected $id_service; |
︙ | ︙ | |||
42 43 44 45 46 47 48 | public function importForm(array $source = null) { if (null === $source) { $source = $_POST; } | > | | | | 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | public function importForm(array $source = null) { if (null === $source) { $source = $_POST; } if (isset($source['delay_type'])) { if (1 == $source['delay_type'] && !empty($source['delay_before'])) { $source['delay'] = (int)$source['delay_before'] * -1; } elseif (2 == $source['delay_type'] && !empty($source['delay_after'])) { $source['delay'] = (int)$source['delay_after']; } else { $source['delay'] = 0; } } parent::importForm($source); } } |
Modified src/templates/services/reminders/_form.tpl from [53fb1d3948] to [cf129dd53f].
1 2 3 4 5 6 7 8 9 10 11 | {form_errors} <form method="post" action="{$self_url}"> <fieldset> <legend>{$legend}</legend> <dl> {input type="select" name="id_service" options=$services_list label="Activité associée au rappel" required=1 source=$reminder} {input type="text" name="subject" required=1 source=$reminder default=$default_subject label="Sujet du message envoyé"} <dt><label for="f_delay_type_0">Délai d'envoi</label> <b title="(Champ obligatoire)">obligatoire</b></dt> | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | {form_errors} <form method="post" action="{$self_url}"> <fieldset> <legend>{$legend}</legend> <dl> {input type="select" name="id_service" options=$services_list label="Activité associée au rappel" required=1 source=$reminder} {input type="text" name="subject" required=1 source=$reminder default=$default_subject label="Sujet du message envoyé"} <dt><label for="f_delay_type_0">Délai d'envoi</label> <b title="(Champ obligatoire)">obligatoire</b></dt> {input type="radio" name="delay_type" value=0 default=$delay_type label="Le jour de l'expiration de l'activité"} <dd> {input type="radio" name="delay_type" value=1 default=$delay_type} {input type="number" name="delay_before" min=1 max=999 default=$delay_before size=4} <label for="f_delay_1">jours <strong>avant</strong> expiration</label> </dd> <dd> {input type="radio" name="delay_type" value=2 default=$delay_type} {input type="number" name="delay_after" min=1 max=999 size=4 default=$delay_after} <label for="f_delay_2">jours <strong>après</strong> expiration</label> </dd> {input type="textarea" name="body" required=1 source=$reminder default=$default_body label="Texte du message envoyé" help="Pour inclure dans le contenu du mail le nom du membre, utilisez #IDENTITE, pour inclure le délai de l'envoi utilisez #NB_JOURS." cols="90" rows="15"} </dl> </fieldset> <p class="submit"> |
︙ | ︙ |
Modified src/templates/services/reminders/delete.tpl from [d5093f6979] to [93a3e36f8e].
|
| | < < < < < < < | < < | < | < | < < < < < < < < < < < < < < < < < | < < < < < < | 1 2 3 4 5 6 7 8 9 10 | {include file="admin/_head.tpl" title="Supprimer un rappel automatique" current="membres/services"} {include file="services/_nav.tpl" current="reminders"} {include file="common/delete_form.tpl" legend="Supprimer ce rappel automatique ?" warning="Êtes-vous sûr de vouloir supprimer le rappel « %s » ?"|args:$reminder.subject alert="Attention, cela supprimera également l'historique des emails envoyés par ce rappel."} {include file="admin/_foot.tpl"} |
Modified src/templates/services/reminders/edit.tpl from [aa631019ac] to [a097265048].
|
| | < < < < < < < | < < < < | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 1 2 3 4 5 6 7 | {include file="admin/_head.tpl" title="Modifier un rappel automatique" current="membres/services" js=1} {include file="services/_nav.tpl" current="reminders"} {include file="services/reminders/_form.tpl" legend="Modifier un rappel automatique" default_subject=null default_body=null} {include file="admin/_foot.tpl"} |
Modified src/templates/services/reminders/index.tpl from [aff55240a6] to [9d94f0415d].
︙ | ︙ | |||
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | {if abs($reminder.delay) > 1}jours{else}jour{/if} {if $reminder.delay > 0}après{else}avant{/if} expiration {/if} </td> <th><a href="details.php?id={$reminder.id}">{$reminder.subject}</a></th> <td class="actions"> {linkbutton shape="edit" label="Modifier" href="services/reminders/edit.php?id=%d"|args:$reminder.id} {linkbutton shape="delete" label="Supprimer" href="services/reminders/delete.php?id=%d"|args:$reminder.id} </td> </tr> {/foreach} </tbody> </table> {/if} | > | > | 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | {if abs($reminder.delay) > 1}jours{else}jour{/if} {if $reminder.delay > 0}après{else}avant{/if} expiration {/if} </td> <th><a href="details.php?id={$reminder.id}">{$reminder.subject}</a></th> <td class="actions"> {linkbutton shape="mail" label="Liste des rappels envoyés" href="services/reminders/details.php?id=%d"|args:$reminder.id} {linkbutton shape="edit" label="Modifier" href="services/reminders/edit.php?id=%d"|args:$reminder.id} {linkbutton shape="delete" label="Supprimer" href="services/reminders/delete.php?id=%d"|args:$reminder.id} </td> </tr> {/foreach} </tbody> </table> {/if} {include file="services/reminders/_form.tpl" legend="Ajouter un rappel automatique" reminder=null delay_type=0 delay_before=15 delay_after=5} {include file="admin/_foot.tpl"} |
Modified src/www/admin/services/reminders/delete.php from [91fa0c34f6] to [6e29e0f367].
1 2 3 | <?php namespace Garradin; | | | < | < | < > | | < | | < | | | < > | | | < < < < < | < | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?php namespace Garradin; use Garradin\Entities\Services\Reminder; use Garradin\Services\Reminders; use Garradin\Services\Services; require_once __DIR__ . '/../_inc.php'; $session->requireAccess('membres', Membres::DROIT_ADMIN); $reminder = Reminders::get((int) qg('id')); if (!$reminder) { throw new UserException("Ce rappel n'existe pas"); } $csrf_key = 'reminder_delete_' . $reminder->id(); $form->runIf('delete', function () use ($reminder) { $reminder->delete(); }, $csrf_key, ADMIN_URL . 'services/reminders/'); $tpl->assign(compact('reminder', 'csrf_key')); $tpl->display('services/reminders/delete.tpl'); |
Modified src/www/admin/services/reminders/edit.php from [dfb1636402] to [30e7c419dc].
1 2 3 | <?php namespace Garradin; | > > > > | < < < < | < < < | < | < > | > > > | < < | < < < < | < < | < | | < > > > | | < < > | | | < < < | < < | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | <?php namespace Garradin; use Garradin\Entities\Services\Reminder; use Garradin\Services\Reminders; use Garradin\Services\Services; require_once __DIR__ . '/../_inc.php'; $session->requireAccess('membres', Membres::DROIT_ADMIN); $reminder = Reminders::get((int) qg('id')); if (!$reminder) { throw new UserException("Ce rappel n'existe pas"); } $csrf_key = 'reminder_edit_' . $reminder->id(); $form->runIf('save', function () use ($reminder) { $reminder->importForm(); $reminder->save(); }, $csrf_key, ADMIN_URL . 'services/reminders/'); $delay_before = $delay_after = ''; if ($reminder->delay < 0) { $delay_type = 1; $delay_before = abs($reminder->delay); } elseif ($reminder->delay > 0) { $delay_type = 2; $delay_after = abs($reminder->delay); } else { $delay_type = 0; } $services_list = Services::listAssoc(); $tpl->assign(compact('delay_type', 'delay_before', 'delay_after', 'reminder', 'csrf_key', 'services_list')); $tpl->display('services/reminders/edit.tpl'); |
Modified src/www/admin/services/reminders/index.php from [60b511225c] to [1c48a48184].
1 2 3 4 5 6 7 | <?php namespace Garradin; use Garradin\Entities\Services\Reminder; use Garradin\Services\Reminders; use Garradin\Services\Services; | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?php namespace Garradin; use Garradin\Entities\Services\Reminder; use Garradin\Services\Reminders; use Garradin\Services\Services; require_once __DIR__ . '/../_inc.php'; $session->requireAccess('membres', Membres::DROIT_ADMIN); $csrf_key = 'reminder_add'; $form->runIf('save', function () { $reminder = new Reminder; $reminder->importForm(); $reminder->save(); }, $csrf_key, Utils::getSelfURL()); $list = Reminders::list(); $services_list = Services::listAssoc(); $default_subject = '[#NOM_ASSO] Échéance de cotisation'; $default_body = "Bonjour #IDENTITE,\n\nVotre cotisation arrive à échéance dans #NB_JOURS jours.\n\n" . "Merci de nous contacter pour renouveler votre cotisation.\n\nCordialement.\n\n" . "--\n#NOM_ASSO\n#ADRESSE_ASSO\nE-Mail : #EMAIL_ASSO\nSite web : #SITE_ASSO"; $tpl->assign(compact('csrf_key', 'list', 'services_list', 'default_subject', 'default_body')); $tpl->display('services/reminders/index.tpl'); |