Пример #1
0
 /**
  * MODULE : Édition d'une news */
 public function edit()
 {
     // Erreur 404
     if (!$this->getData([$this->getUrl(0), $this->getUrl(2)])) {
         return false;
     } elseif ($this->getPost('submit')) {
         // Modifie la clef de la news si le titre a été modifié
         $key = $this->getPost('title') ? $this->getPost('title', helper::URL) : $this->getUrl(2);
         // Sauvegarde la date de création de la news
         $date = $this->getData([$this->getUrl(0), $this->getUrl(2), 'date']);
         // Si la clef à changée
         if ($key !== $this->getUrl(2)) {
             // Incrémente la nouvelle clef de la news pour éviter les doublons
             $key = helper::increment($key, $this->getData($this->getUrl(0)));
             // Supprime l'ancienne news
             $this->removeData([$this->getUrl(0), $this->getUrl(2)]);
         }
         // Modifie la news ou en crée une nouvelle si la clef a changée
         $this->setData([$this->getUrl(0), $key, ['title' => $this->getPost('title', helper::STRING), 'date' => $date, 'content' => $this->getPost('content')]]);
         // Enregistre les données
         $this->saveData();
         // Notification de modification
         $this->setNotification('News modifiée avec succès !');
         // Redirige vers l'édition de la nouvelle news si la clef à changée ou sinon vers l'ancienne
         helper::redirect('module/' . $this->getUrl(0) . '/edit/' . $key);
     }
     // Contenu de la page
     self::$content = template::openForm() . template::openRow() . template::text('title', ['label' => 'Titre de la news', 'value' => $this->getData([$this->getUrl(0), $this->getUrl(2), 'title']), 'required' => 'required']) . template::newRow() . template::textarea('content', ['class' => 'editor', 'value' => $this->getData([$this->getUrl(0), $this->getUrl(2), 'content'])]) . template::newRow() . template::button('back', ['value' => 'Retour', 'href' => helper::baseUrl() . 'module/' . $this->getUrl(0), 'col' => 2]) . template::submit('submit', ['col' => 2, 'offset' => 8]) . template::closeRow();
     template::closeForm();
 }
Пример #2
0
 /** MODULE : Configuration de la redirection*/
 public function index()
 {
     // Traitement du formulaire
     if ($this->getPost('submit')) {
         // Modifie l'URL de redirection
         $this->setData([$this->getUrl(0), 'url', $this->getPost('url', helper::URL)]);
         // Enregistre les données
         $this->saveData();
         // Notification de succès
         $this->setNotification('URL de redirection enregistrée avec succès !');
         // Redirige vers l'URL courante
         helper::redirect($this->getUrl());
     }
     // Contenu de la page
     self::$content = template::openForm() . template::openRow() . template::text('url', ['label' => 'URL de redirection', 'value' => $this->getData([$this->getUrl(0), 'url'])]) . template::newRow() . template::button('back', ['value' => 'Retour', 'href' => helper::baseUrl() . 'edit/' . $this->getUrl(0), 'col' => 2]) . template::submit('submit', ['col' => 2, 'offset' => 8]) . template::closeRow() . template::closeForm();
 }
Пример #3
0
 /** MODULE : Aperçu des données saisies */
 public function data()
 {
     // Liste données saisies
     if ($this->getData([$this->getUrl(0), 'data'])) {
         // Crée une pagination (retourne la première news et dernière news de la page et la liste des pages
         $pagination = helper::pagination($this->getData([$this->getUrl(0), 'data']), $this->getUrl());
         // Inverse l'ordre du tableau pour afficher les données en ordre décroissant
         $inputs = array_reverse($this->getData([$this->getUrl(0), 'data']));
         // Check si l'id du premier résultat est paire
         $firstPair = $pagination['first'] % 2 === 0;
         // Crée l'affichage des données en fonction de la pagination
         for ($i = $pagination['first']; $i < $pagination['last']; $i++) {
             // Ouvre la row ouverte à chaque id paire/impaire (dépend du premier résultat)
             if ($firstPair and $i % 2 === 0 or !$firstPair and $i % 2 === 1) {
                 self::$content .= template::openRow();
             }
             // Formatage des données
             $content = '';
             foreach ($inputs[$i] as $input => $value) {
                 $content .= $input . ' : ' . $value . '<br>';
             }
             self::$content .= template::background($content, ['col' => 6]);
             // Ferme la row ouverte à chaque id paire/impaire (dépend du premier résultat) ou pour le dernier champ
             if ($firstPair and $i % 2 === 1 or !$firstPair and $i % 2 === 0 or !isset($inputs[$i + 1])) {
                 self::$content .= template::closeRow();
             }
         }
         // Ajoute la liste des pages en dessous des news
         self::$content .= $pagination['pages'];
     }
     // Contenu de la page
     self::$content = template::title('Données saisies') . self::$content . template::openRow() . template::button('back', ['value' => 'Retour', 'href' => helper::baseUrl() . 'module/' . $this->getUrl(0), 'col' => 2]) . template::closeRow();
 }
Пример #4
0
 /**
  * Crée un système de pagination (retourne un tableau contenant les informations sur la pagination (first, last, pages))
  * @param  array  $array Tableau de donnée à utiliser
  * @param  string $url   URL à utiliser, la dernière partie doit correspondre au numéro de page, par défaut utiliser $this->getUrl()
  * @return array
  */
 public static function pagination($array, $url)
 {
     // Scinde l'url
     $url = explode('/', $url);
     // Url de pagination
     $urlPagination = is_numeric(end($url)) ? array_pop($url) : 1;
     // Url de la page courante
     $urlCurrent = implode('/', $url);
     // Nombre d'éléments à afficher
     $nbElements = count($array);
     // Nombre de page
     $nbPage = ceil($nbElements / 10);
     // Page courante
     $currentPage = is_numeric($urlPagination) ? (int) $urlPagination : 1;
     // Premier élément de la page
     $firstElement = ($currentPage - 1) * 10;
     // Dernier élément de la page
     $lastElement = $firstElement + 10;
     $lastElement = $lastElement > $nbElements ? $nbElements : $lastElement;
     // Mise en forme de la liste des pages
     $pages = false;
     for ($i = 1; $i <= $nbPage; $i++) {
         $disabled = $i === $currentPage ? ' class="disabled"' : false;
         $pages .= '<a href="' . helper::baseUrl() . $urlCurrent . '/' . $i . '"' . $disabled . '>' . $i . '</a>';
     }
     // Retourne un tableau contenant les informations sur la pagination
     return ['first' => $firstElement, 'last' => $lastElement, 'pages' => '<div class="pagination">' . $pages . '</div>'];
 }