Tutoriel : Mettre son site en maintenance

Proposez ici vos templates, vos plugins ou demandez en un.
Tous les tutoriels disponibles pour Arfooo Annuaire sont disponible dans cette rubrique

Tutoriel : Mettre son site en maintenance

Messagede Angra-Mainyu » Sam 14 Mai 2011 17:21

Bonsoir, comme promis ou pas,
je vous met mon tutoriel pour mettre une page d'attente "under construction" vers laquelle sera redirigé vos utilisateurs lorsque vous mettez le site en maintenance afin de les avertir.

1- Création d'une nouvelle fonction dans le fichier admin/mainController.php

Voici donc la fonction à rajouter dans ce fichier

Code: Tout sélectionner
function maintenanceAction($active = 0)
{
   $this->autoRender = false;
         
           /*** si vous utilisez une page avec le countdown ( Ready2Launch ) ajouter cette portion de code ***/
   
   /****** create the javascript for use with the countdown ***/
      /**/ $fp = fopen(CODE_ROOT_DIR.'siteUnderConstruction/js/rewritedjsCountdown.js','w+');
      /**/ $jour = date('d');
      /**/ $mois = (int) date('m');
      /**/ $intervalleEnJour = Config::get('timeDayIntervalForMaintenance');
      /**/ $intervalleEnHeure = Config::get('timeHourIntervalForMaintenance');
      /**/ $jour += (int) $intervalleEnJour;
      /**/ $jsScript = 'TargetDate = "'.$mois.'/'.$jour.'/'.date('Y').' '.$intervalleEnHeure.':00:00"';
      /**/ fputs($fp,$jsScript);
      /**/ fclose($fp);
      /*** end of js for countdown ***/
      
      /** modification du htacess **/   
      if(file_exists(CODE_ROOT_DIR.'config/baseHtaccess.txt')) {
$fp = fopen(CODE_ROOT_DIR.'config/baseHtaccess.txt','r');
      while (!feof($fp))
      {
         $data[] = trim(fgets($fp, 512));
      }
fclose($fp);
}
               
         
      if($active === '1')
      {
         $adminIp = str_replace('.','\.',$this->request->getIp()); /* on enregistre votre ip pour l'acces au site **/
              $data[] = 'RewriteCond %{REMOTE_ADDR} !^'.$adminIp;
         $data[] = 'RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC]';
         $data[] = 'RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif|css|js) [NC]';
         $data[] = 'RewriteRule .* '.Config::get('siteRootUrl').'maintenance.html [R=302,L]';
         $this->setting->set('websiteMaintenanceModeEnabled',1);
         Config::set('websiteMaintenanceModeEnabled', 1);
         }
         else
         {
            $this->setting->set('websiteMaintenanceModeEnabled',0);
            Config::set('websiteMaintenanceModeEnabled', 0);
         }

         # HERE IS A GOOD PLACE TO ADD THE OLD SCRIPT REDIRECTION
         $data[] = 'RewriteCond %{REQUEST_FILENAME} !-f';
         $data[] = 'RewriteCond %{REQUEST_FILENAME} !-d';
         $data[] = 'RewriteRule ^(.+)$ index.php';
            
      /* writing the new htaccess file **/
      $File = CODE_ROOT_DIR.".htaccess";
      $fp = fopen($File, 'w');
      foreach($data as $line)
      {
         fwrite($fp, $line."\n");
      }
      fclose($fp);  /*** fin de la création du fichier htacess ***/

   /*** on efface le cache   pour le fichier de configuration **/
    Cacher::getInstance()->clean("tag", array("setting"));
      
        $this->redirect($this->moduleLink()); /** on se redirige vers la page d'acceuil de l'administration **/

   }


Le fichier /config/baseHtaccess.txt devra contenir les règles que vous avez ajouter dans votre htaccess, si vous en avez pas, ce n'est pas grave, vous pouvez créer un fichier vide de ce même non, ou pas en créer.

Dans cette fonction, nous utilisons 3 nouvelles variables qui seront ajouté à la table settings de la base de donnée

* timeDayIntervalForMaintenance qui est le nombre de jours pendant lequel le site sera en maintenance
* timeHourIntervalForMaintenance qui est le nombre d'heure pendant lequel le site sera en maitenance
* websiteMaintenanceModeEnabled qui défini si votre site est en maintenance ou pas.

Mettez ces 3 valeurs à 0 dans votre base de données pour le début.

Code: Tout sélectionner
$adminIp = str_replace('.','\.',$this->request->getIp()); /* on enregistre votre ip pour l'acces au site **/

pour tester le fonctionnement de la page, commenter cette ligne, car elle permet à cette adresse ip d'accéder au site même si la redirection est active, elle correspond à celui de l'administrateur qui a activé la maintenance.

2/ Modification de la fonction saveAction dans admin/controller/settingController.php
Dans ce fichier,
dans la fonction saveAction()
à la fin de la fonction, ajouter au dessus de
Code: Tout sélectionner
$this->redirect($this->moduleLink());


le code suivant
Code: Tout sélectionner
   if ($this->request->websiteMaintenanceModeEnabled == 1) {
   $this->redirect(AppRouter::getRewrittedUrl("/admin/main/maintenance/".$this->request->websiteMaintenanceModeEnabled));
   exit;
        }


Ainsi, si on active la maitenance via l'onglet et le formulaire de configuration, le traitement est réalisé et on est redirigé vers la page d'acceuil, dans le cas contraire, on a le fonctionnement normal.

3/ Modification du template /admin/templates/arfooo/setting/index.tpl

Dans ce fichier,
au dessus de </form>

ajouter le code
Code: Tout sélectionner

<div class="column_in_table2" id="activeMaintenanceMode">
<table class="table1" cellspacing="1">
<col class="col1-1" /><col class="col2-2" />
<thead>
<h3>
      <span class="first-word"><strong><b>{'settingIndex_h2_activeMaintenanceMode'|lang}</b></strong></span>
   </h3>
</thead>
<tbody>

<tr class="line1">
    <td>{'settingIndex_activeMaintenanceMode_enabled'|lang}: </td>
    <td><input type="radio" name="websiteMaintenanceModeEnabled" value="1" /> {'On'|lang} &nbsp;&nbsp;
    <input type="radio" name="websiteMaintenanceModeEnabled" value="0" /> {'Off'|lang}</td>
</tr>

<tr class="line2">
    <td>{'settingIndex_activeMaintenanceMode_timeToWaitInDay'|lang}: </td>
   <td><input type="text" class="input_text_small" name="timeDayIntervalForMaintenance" value="" /></td>
</tr>
<tr class="line1">
    <td>{'settingIndex_activeMaintenanceMode_timeToWaitInHour'|lang}: </td>
   <td><input type="text" class="input_text_small" name="timeHourIntervalForMaintenance" value="" /></td>
</tr>
</tbody>
</table>

</div>



4- Création des variables de langue dans le fichier /admin/languages/fr.php

Rajouter dans ce fichier, vers la ligne 907
Code: Tout sélectionner
$language['settingIndex_h2_activeMaintenanceMode'] = 'Activer la maintenance du site';
$language['settingIndex_activeMaintenanceMode_enabled'] = 'Mettre le site en maintenance';
$language['settingIndex_activeMaintenanceMode_timeToWaitInDay'] = 'Temps d\'attente en jour, avant la fin de la maintenance';
$language['settingIndex_activeMaintenanceMode_timeToWaitInHour'] = 'Temps d\'attente en heure, avant la fin de la maintenance';

$language['mainIndex_desactiveMaintenanceMode'] = 'Désactiver la maintenance du site';
$language['mainIndex_maintenanceEnabled'] = 'La maitenance du site est active';
$language['mainIndex_activeMaintenanceMode'] = 'Activer la maintenance du site';
$language['mainIndex_maintenanceDisabled'] = 'La maitenance du site est desactive';



5/ Modification dans le fichier /admin/templates/arfooo/main/index.tpl

A l'endroit où cela vous convient,
vous rajouter
Code: Tout sélectionner
   <div class="column_in">
   {if $setting.websiteMaintenanceModeEnabled == "1"}
      {'mainIndex_maintenanceEnabled'|lang}  .::. <a href="{'/admin/main/maintenance/0'|url}" title="{'mainIndex_desactiveMaintenanceMode'|lang}">{'mainIndex_desactiveMaintenanceMode'|lang}</b>
   {else}
      {'mainIndex_maintenanceDisabled'|lang}  .::. <a href="{'/admin/main/maintenance/1'|url}" title="{'mainIndex_activeMaintenanceMode'|lang} ">{'mainIndex_activeMaintenanceMode'|lang}</b>
   {/if}
   </div>

Voila, au niveau des modifications, nous avons le nécessaire.

Pour la page de maitenance,
je vous propose de télécharger un fichier zip contenant deux templates que j'ai trouvé sur le net.
Ce sera à vous de les modifier pour votre site, ou utiliser un autre template.
Un template utilise la partie javascript pour le countdown, et non le second.

http://www.webmestre-annuaire.com/share/freeLaunchPage.zip
http://www.webmestre-annuaire.com/share/Ready2Launch.zip

Le contenu des fichiers zip sont à mettre à la racine de votre annuaire.

Merci pour vos retours,
j'ai adapté le tutoriel en l'écrivant donc testeurs bien venu.
Pensez à faire votre sauvegarde auparant et de vider votre dossier /compiled/

Un aperçu de ce que cela donne sur mon annuaire, utilisant un autre template, que l'on trouve aussi gratuitement ( mais voulais pas le partager celui la :twisted: )

Bah voila, heure du repas...
Angra-Mainyu
 
Messages: 455
Inscription: Dim 14 Sep 2008 23:37


Re: Tutoriel : Mettre son site en maintenance

Messagede enligne » Dim 22 Mai 2011 18:49

Voila un super Tutorial :D

C'est une fonction très utile pour celui qui a l'habitude de faire des modifications de fond dans son annuaire ...
ou simplement un changement de serveur par exemple ^^

il s'intègre très bien a arfooo avec toute les informations que tu viens de donner avec détail ...
j'ai trouvé pour ma part ta page maintenance sur le net :p

pour ma part, je vais voir à intégrer cette fonction dans l'admin ...
pour l'instant, c'est manuel, je modifie juste mon htaccess de base et redirige toutes les pages vers le dossier maintenance !

PS : Pour l'instant, tu as oublié de mettre ton site en maintenance ;)

MERCI pour ce tuto et les autres que tu fais et partages avec la communauté Arfooo :D
Dernière édition par enligne le Lun 23 Mai 2011 11:06, édité 1 fois.
Avatar de l’utilisateur
enligne
 
Messages: 178
Inscription: Lun 3 Jan 2011 17:24

Re: Tutoriel : Mettre son site en maintenance

Messagede Angra-Mainyu » Lun 23 Mai 2011 01:20

Salut,
en fait, cette fois çi, j'ai désactivé la maintenance.
J'ai fait des modifications au niveau des langues, et j'attends des retours d'erreurs par email s'il y en a.
Comme tout m'est remonté, ça me permet de corriger ce que je ne vois pas ou que j'ai oublié. :D

Merci pour ton retour.
++
Angra-Mainyu
 
Messages: 455
Inscription: Dim 14 Sep 2008 23:37

Re: Tutoriel : Mettre son site en maintenance

Messagede Bodyboard » Lun 9 Avr 2012 14:55

Salut,
Je remonte ce topic car c'est une fonction qui manque cruellement je trouve au script Arfooo.

Merci Angra-Mainyu de partager ce Hack avec nous.
Malheureusement, après avoir tenté de le mettre en place sur mon annuaire je dois me rendre à l'évidence, ça ne fonctionne pas chez moi :cry:

J'ai tenté de trouver d'où vient mon problème mais rien à faire je suis vraiment trop mauvais :oops:

J'ai d'abord cette erreur sur l'index de l'administration
Code: Tout sélectionner
(8) Undefined index: websiteMaintenanceModeEnabled   c_1_main_index_tpl.php   line 141     9-4-12   15:20

FrontController->dispatch() # line   20, file: /home/annuaire/www/annuaire/index.php

Controller->render() # line  225, file: /home/annuaire/www/annuaire/core/FrontController.php

TemplateLiteView->render(Object:Admin_MainController) # line  167, file: /home/annuaire/www/annuaire/core/Controller.php

Template_Lite->fetch("main/index.tpl") # line   77, file: /home/annuaire/www/annuaire/views/TemplateLiteView.php

Template_Lite->_fetch_compile("main/index.tpl", null) # line  360, file: /home/annuaire/www/annuaire/components/template_lite/class.template.php

include("/home/annuaire/www/annuaire/compiled/admin/arfooo_template...") # line  482, file: /home/annuaire/www/annuaire/components/template_lite/class.template.php


Et sur la page configurations de l'admin j'ai bien ceci:
Code: Tout sélectionner
Activer la maintenance du site
Mettre le site en maintenance:    Oui    Non
Temps d'attente en jour, avant la fin de la maintenance:    
Temps d'attente en heure, avant la fin de la maintenance:    

Mais je pense que ce n'est pas enregistré sur la Base de données

J'ai pas trop compris non plus quoi faire du fichier "baseHtaccess.txt", qu'est ce que je met dedans ?

J'aurais donc besoins d'un peu d'aide parce que là je sèche complet :?
Bodyboard
 
Messages: 93
Inscription: Mer 4 Mar 2009 10:14
Localisation: Toulouse

Re: Tutoriel : Mettre son site en maintenance

Messagede Bodyboard » Lun 9 Avr 2012 16:01

Bon j'ai résolu les deux premiers problèmes (index admin et page configuration), juste une erreur lors de la création des tables dans ma BDD :P

Mais du coup j'en ai deux autres... :cry:

Le premier:
Sur la page configuration de l'annuaire, après avoir mis le site en maintenance et validé, je suis mal redirigé et j'ai une erreur 404.
Pareil quand sur l'index de l'admin je clique sur "désactiver la maintenance"...

Le deuxième:
Mon annuaire ne se met pas en maintenance...

Je pense que c'est peut-être dû au fichier .htaccess et/ou baseHtaccess.txt
Bodyboard
 
Messages: 93
Inscription: Mer 4 Mar 2009 10:14
Localisation: Toulouse

Re: Tutoriel : Mettre son site en maintenance

Messagede Bodyboard » Ven 29 Juin 2012 17:01

Up!
C'est dommage, cette fonction pourrait être utile à pas mal de monde :(
Bodyboard
 
Messages: 93
Inscription: Mer 4 Mar 2009 10:14
Localisation: Toulouse

Re: Tutoriel : Mettre son site en maintenance

Messagede Bodyboard » Sam 17 Aoû 2013 13:28

Un gros up mais c'est pour dire que cette modification fonctionne enfin chez moi !!

En fait j'avais deux erreurs:
- A l'étape 1, le chemin du fichier n'est pas "admin/mainController.php" mais plutôt "admin/controllers/MainController.php"

- Dans ce fichier j'avais mal "fermé" ma fonction, d'où le fait que ça ne fonctionne pas non plus. J'ai donc copié le code entre deux fonctions déjà présente.

Et maintenant Hô miracle :roll: tout fonctionne.

Il ne me reste plus qu'a créer une page maintenance pour finir :)
Dernière édition par Bodyboard le Lun 19 Aoû 2013 11:28, édité 1 fois.
Bodyboard
 
Messages: 93
Inscription: Mer 4 Mar 2009 10:14
Localisation: Toulouse

Re: Tutoriel : Mettre son site en maintenance

Messagede Grafidiz » Lun 19 Aoû 2013 07:34

Bravo Bodyboard et merci de partager ton expérience ... ;)
Templates Arfooo Premium
http://www.grafidiz.com
Grafidiz
 
Messages: 304
Inscription: Ven 1 Mai 2009 17:28

Re: Tutoriel : Mettre son site en maintenance

Messagede enligne » Lun 19 Aoû 2013 11:03

Merci Bodyboard pour ton retour sur cette fonctionnalité qui peut servir ...
Avatar de l’utilisateur
enligne
 
Messages: 178
Inscription: Lun 3 Jan 2011 17:24


Retourner vers Templates, plugins et tutoriels

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

 
Copyright © arfooo.com  2007 - 2011  -  Tous droits réservés  -  Partenaires de confiance
Sites du groupe: petites annonces gratuites   voyance en direct - tirage tarot   Consultant en référencement
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group | phpBB SEO Traduction par: phpBB-fr.com
cron