User Tools

Site Tools


opencart:modules

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

opencart:modules [2016/02/02 18:59] – created leoopencart:modules [2016/02/04 15:03] (current) leo
Line 14: Line 14:
 ^ |catalog/language/english/module/nom_module.php| ^ |catalog/language/english/module/nom_module.php|
  
-===modèles basiques=== +=====modèles basiques===== 
-==vue== +====admin==== 
-<code> +===controleur=== 
-<?php echo $header; ?>+<code><?php 
 +class ControllerModuleBasicModule extends Controller {  /* nom module à modifier */ 
 +  /* 
 +  1.  déclaration et assignation $error pour la gestion des erreurs 
 +  2.  fonction par défaut 
 +    2.1.  chargement du fichier de langage 
 +    2.2.  assignements d'après le fichier de langage 
 +    2.3.  chargement du modèle de sauvegarde des données utilisé par les modules 
 +    2.4.  si envoie de données et bonne validation de celles-ci 
 +      2.4.1. sauvegarde des données 
 +      2.4.2. assignement du message de succès $success 
 +      2.4.3. redirection vers la liste des modules 
 +    2.5.  assignement de variables générales 
 +      2.5.1 langage 
 +      2.5.2. positions 
 +      2.5.3. layouts 
 +      2.5.4. boutons 
 +      2.5.5. spécifiques au module 
 +    2.6.  assignement de la variable d'avertissement $warning 
 +    2.7.  assignement de la variable de code erreur $error_code 
 +    2.8.  assignement de la variable $breadcrumbs et construction 
 +    2.9.  assignement des URL 
 +      2.9.1.  URL pour validation 
 +      2.9.2.  URL pour annulation 
 +    2.10. assignation des champs du formulaire depuis POST ou à défaut depuis BDD 
 +    2.11. assignation des champs de paramétrage du module tels que layout, position, status & order, depuis POST ou à défaut depuis BDD 
 +    2.12. chargement du modèle design/layout 
 +    2.13. assignement de la variable $layouts listants les layouts disponibles 
 +    2.14. chargement du template 
 +    2.15. ajout de modules enfant (header/footer) 
 +    2.16. rendu du module 
 +  3. fonction de validation 
 +    3.1.  vérification des permissions 
 +    3.2.  vérification si les champs sont bien renseignés et assignation du code erreur le cas échéant 
 +    3.3.  retour booléen (false si erreur) 
 +  */ 
 + 
 +  /*  1.  déclaration et assignation $error pour la gestion des erreurs */ 
 +  private $error = array(); 
 +  /*  2.  fonction par défaut */ 
 +  public function index() { 
 +  /*  2.1.  chargement du fichier de langage  */ 
 +    $this->language->load('module/basic_module'); /* nom module à modifier */ 
 +    /*  2.2.  assignements du titre du module d'après le fichier de langage */ 
 +    $this->document->setTitle($this->language->get('heading_title')); 
 +    /*  2.3.  chargement du modèle de sauvegarde des données utilisé par les modules */ 
 +    $this->load->model('setting/setting'); 
 +    /*  2.4.  si envoie de données et bonne validation de celles-ci */ 
 +      if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { 
 +      /*  2.4.1. sauvegarde des données */ 
 +        $this->model_setting_setting->editSetting('basic_module', $this->request->post); /* nom module à modifier */ 
 +      /*  2.4.2. assignement du message de succès $success */ 
 +        $this->session->data['success'] = $this->language->get('text_success'); 
 +      /*  2.4.3. redirection vers la liste des modules */ 
 +        $this->redirect($this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL')); 
 +      } 
 +    /*  2.5.  assignement de variables générales */ 
 +      /*  2.5.1 langage */ 
 +      $this->data['heading_title'] = $this->language->get('heading_title'); 
 + 
 +      $this->data['text_enabled'] = $this->language->get('text_enabled'); 
 +      $this->data['text_disabled'] = $this->language->get('text_disabled'); 
 +      /*  2.5.2. positions */ 
 +      $this->data['text_content_top'] = $this->language->get('text_content_top'); 
 +  $this->data['text_content_bottom'] = $this->language->get('text_content_bottom'); 
 +  $this->data['text_column_left'] = $this->language->get('text_column_left'); 
 +  $this->data['text_column_right'] = $this->language->get('text_column_right'); 
 +      /*  2.5.3. layouts */ 
 +      $this->data['entry_layout'] = $this->language->get('entry_layout'); 
 +      $this->data['entry_position'] = $this->language->get('entry_position'); 
 +      $this->data['entry_status'] = $this->language->get('entry_status'); 
 +      $this->data['entry_sort_order'] = $this->language->get('entry_sort_order'); 
 +      /*  2.5.4. boutons */ 
 +      $this->data['button_save'] = $this->language->get('button_save'); 
 +      $this->data['button_cancel'] = $this->language->get('button_cancel'); 
 +      $this->data['button_add_module'] = $this->language->get('button_add_module'); 
 +      $this->data['button_remove'] = $this->language->get('button_remove'); 
 +      /*  2.5.5. spécifiques au module */ 
 +      $this->data['entry_text_field'] = $this->language->get('entry_text_field'); 
 +    /*  2.6.  assignement de la variable d'avertissement $warning */ 
 +    if (isset($this->error['warning'])) { 
 +      $this->data['error_warning'] = $this->error['warning']; 
 +    } else { 
 +      $this->data['error_warning'] = ''; 
 +    } 
 +    /*  2.7.  assignement de la variable de code erreur $error_code */ 
 +    if (isset($this->error['code'])) { 
 +        $this->data['error_code'] = $this->error['code']; 
 +    } else { 
 +        $this->data['error_code'] = ''; 
 +    } 
 +    /*  2.8.  assignement de la variable $breadcrumbs et construction */ 
 +    $this->data['breadcrumbs'] = array(); 
 + 
 +    $this->data['breadcrumbs'][] = array( 
 +        'text'      => $this->language->get('text_home'), 
 +        'href'      => $this->url->link('common/home', 'token=' . $this->session->data['token'], 'SSL'), 
 +        'separator' => false 
 +    ); 
 + 
 +    $this->data['breadcrumbs'][] = array( 
 +        'text'      => $this->language->get('text_module'), 
 +        'href'      => $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL'), 
 +        'separator' => ' :: ' 
 +    ); 
 + 
 +    $this->data['breadcrumbs'][] = array( 
 +        'text'      => $this->language->get('heading_title'), 
 +        'href'      => $this->url->link('module/basic_module', 'token=' . $this->session->data['token'], 'SSL'), /* nom module à modifier */ 
 +        'separator' => ' :: ' 
 +    ); 
 +    /*  2.9.  assignement des URL */ 
 +      /*  2.9.1.  URL pour validation */ 
 +    $this->data['action'] = $this->url->link('module/basic_module', 'token=' . $this->session->data['token'], 'SSL'); /* nom module à modifier */ 
 +      /*  2.9.2.  URL pour annulation */ 
 +    $this->data['cancel'] = $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL'); 
 +    /*  2.10. assignation des champs du formulaire depuis POST ou à défaut depuis BDD */ 
 +    if (isset($this->request->post['basic_module_text_field'])) { /* nom module à modifier */ 
 +        $this->data['basic_module_text_field'] = $this->request->post['basic_module_text_field']; /* nom module à modifier */ 
 +    } else { 
 +        $this->data['basic_module_text_field'] = $this->config->get('basic_module_text_field'); /* nom module à modifier */ 
 +    } 
 +    /*  2.11. assignation des champs de paramétrage du module tels que layout, position, status & order, depuis POST ou à défaut depuis BDD */ 
 +    $this->data['modules'] = array(); 
 + 
 +    if (isset($this->request->post['basic_module_module'])) { /* nom module à modifier */ 
 +        $this->data['modules'] = $this->request->post['basic_module_module']; /* nom module à modifier */ 
 +    } elseif ($this->config->get('basic_module_module')) {  /* nom module à modifier */ 
 +        $this->data['modules'] = $this->config->get('basic_module_module');  /* nom module à modifier */ 
 +    } 
 +    /*  2.12. chargement du modèle design/layout */ 
 +    $this->load->model('design/layout'); 
 +    /*  2.13. assignement de la variable $layouts listants les layouts disponibles */ 
 +    $this->data['layouts'] = $this->model_design_layout->getLayouts(); 
 +    /*  2.14. chargement du template */ 
 +    $this->template = 'module/basic_module.tpl';  /* nom module à modifier */ 
 +    /*  2.15. ajout de modules enfant (header/footer) */ 
 +    $this->children = array( 
 +        'common/header', 
 +        'common/footer' 
 +    ); 
 +    /*  2.16. rendu du module */ 
 +    $this->response->setOutput($this->render()); 
 +  } 
 + 
 +  /* 3. fonction de validation */ 
 +  protected function validate() { 
 +    /* 
 +    3.1.  vérification des permissions 
 +    */ 
 +    if (!$this->user->hasPermission('modify', 'module/basic_module')) { /* nom module à modifier */ 
 +        $this->error['warning'] = $this->language->get('error_permission'); 
 +    } 
 +    /* 
 +    3.2.  vérification si les champs sont bien renseignés et assignation du code erreur le cas échéant 
 +    */ 
 +    if (!$this->request->post['basic_module_text_field']) { /* nom module à modifier */ // ligne 43 du tpl 
 +        $this->error['text_field'] = $this->language->get('error_text_field'); 
 +    } 
 +    /* 
 +    3.3.  retour booléen (false si erreur) 
 +    */ 
 +    if (!$this->error) { 
 +        return true; 
 +    } else { 
 +        return false; 
 +    } 
 +  } 
 + 
 +
 +?> 
 +</code> 
 +===vue=== 
 +<code><?php echo $header; ?>
  
 <div id="content"> <div id="content">
 +
 +<!--
 +  BREADCRUMBS
 +-->
   <div class="breadcrumb">   <div class="breadcrumb">
 +    <?php foreach ($breadcrumbs as $breadcrumb) { ?>
 +      <?php echo $breadcrumb['separator']; ?><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a>
 +    <?php } ?>
 +  </div>
 +
 +<!--
 +  WARNINGS
 +-->
 +  <?php if ($error_warning) { ?>
 +      <div class="warning"><?php echo $error_warning; ?></div>
 +  <?php } ?>
 +
 +<!--
 +  HEADER : titre + boutons sauvegarder et modifier
 +-->
 +  <div class="box">
 +    <div class="heading">
 +      <h1><img src="view/image/module.png" alt="" /> <?php echo $heading_title; ?></h1>
 +      <div class="buttons"><a onclick="$('#form').submit();" class="button"><?php echo $button_save; ?></a><a href="<?php echo $cancel; ?>" class="button"><?php echo $button_cancel; ?></a></div>
 +    </div>
 +  </div>
 +
 +<!--
 +  CONTENU : formulaire
 +-->
 +
 +  <div class="content">
 +    <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form">
 +<!--
 +  champ texte
 +-->
 +<table class="form">
 +  <tr>
 +    <td><span class="required">*</span> <?php echo $entry_text_field; ?></td>
 +    <td><textarea name="basic_module_text_field" cols="40" rows="5"><?php echo $basic_module_text_field; ?></textarea>
 +      <?php if ($error_code) { ?>
 +      <span class="error"><?php echo $error_text_field; ?></span>
 +      <?php } ?></td>
 +  </tr>
 +</table>
 +<!--
 +  Paramètres du module : layout, position, status, ordre
 +-->
 +      <table id="module" class="list">
 +        <thead>
 +          <tr>
 +            <td class="left"><?php echo $entry_layout; ?></td>
 +            <td class="left"><?php echo $entry_position; ?></td>
 +            <td class="left"><?php echo $entry_status; ?></td>
 +            <td class="right"><?php echo $entry_sort_order; ?></td>
 +            <td></td>
 +          </tr>
 +        </thead>
 +        <?php $module_row = 0; ?>
 +        <?php foreach ($modules as $module) { ?>
 +        <tbody id="module-row<?php echo $module_row; ?>">
 +          <tr>
 +            <td class="left"><select name="basic_module_module[<?php echo $module_row; ?>][layout_id]">
 +                <?php foreach ($layouts as $layout) { ?>
 +                <?php if ($layout['layout_id'] == $module['layout_id']) { ?>
 +                <option value="<?php echo $layout['layout_id']; ?>" selected="selected"><?php echo $layout['name']; ?></option>
 +                <?php } else { ?>
 +                <option value="<?php echo $layout['layout_id']; ?>"><?php echo $layout['name']; ?></option>
 +                <?php } ?>
 +                <?php } ?>
 +              </select></td>
 +            <td class="left"><select name="basic_module_module[<?php echo $module_row; ?>][position]">
 +                <?php if ($module['position'] == 'content_top') { ?>
 +                <option value="content_top" selected="selected"><?php echo $text_content_top; ?></option>
 +                <?php } else { ?>
 +                <option value="content_top"><?php echo $text_content_top; ?></option>
 +                <?php } ?>
 +                <?php if ($module['position'] == 'content_bottom') { ?>
 +                <option value="content_bottom" selected="selected"><?php echo $text_content_bottom; ?></option>
 +                <?php } else { ?>
 +                <option value="content_bottom"><?php echo $text_content_bottom; ?></option>
 +                <?php } ?>
 +                <?php if ($module['position'] == 'column_left') { ?>
 +                <option value="column_left" selected="selected"><?php echo $text_column_left; ?></option>
 +                <?php } else { ?>
 +                <option value="column_left"><?php echo $text_column_left; ?></option>
 +                <?php } ?>
 +                <?php if ($module['position'] == 'column_right') { ?>
 +                <option value="column_right" selected="selected"><?php echo $text_column_right; ?></option>
 +                <?php } else { ?>
 +                <option value="column_right"><?php echo $text_column_right; ?></option>
 +                <?php } ?>
 +              </select></td>
 +            <td class="left"><select name="basic_module_module[<?php echo $module_row; ?>][status]">
 +                <?php if ($module['status']) { ?>
 +                <option value="1" selected="selected"><?php echo $text_enabled; ?></option>
 +                <option value="0"><?php echo $text_disabled; ?></option>
 +                <?php } else { ?>
 +                <option value="1"><?php echo $text_enabled; ?></option>
 +                <option value="0" selected="selected"><?php echo $text_disabled; ?></option>
 +                <?php } ?>
 +              </select></td>
 +            <td class="right"><input type="text" name="basic_module_module[<?php echo $module_row; ?>][sort_order]" value="<?php echo $module['sort_order']; ?>" size="3" /></td>
 +            <td class="left"><a onclick="$('#module-row<?php echo $module_row; ?>').remove();" class="button"><?php echo $button_remove; ?></a></td>
 +          </tr>
 +        </tbody>
 +        <?php $module_row++; ?>
 +        <?php } ?>
 +        <tfoot>
 +          <tr>
 +            <td colspan="4"></td>
 +            <td class="left"><a onclick="addModule();" class="button"><?php echo $button_add_module; ?></a></td>
 +          </tr>
 +        </tfoot>
 +      </table>
 +
 +    </form>
   </div>   </div>
 </div> </div>
 +
 +<!--
 +  JAVASCRIPT : gestion des paramètres du module
 +-->
 +<script type="text/javascript">
 +var module_row = <?php echo $module_row; ?>;
 +
 +function addModule() {
 +    html  = '<tbody id="module-row' + module_row + '">';
 +    html += '  <tr>';
 +    html += '    <td class="left"><select name="basic_module_module[' + module_row + '][layout_id]">';
 +    <?php foreach ($layouts as $layout) { ?>
 +    html += '      <option value="<?php echo $layout['layout_id']; ?>"><?php echo addslashes($layout['name']); ?></option>';
 +    <?php } ?>
 +    html += '    </select></td>';
 +    html += '    <td class="left"><select name="basic_module_module[' + module_row + '][position]">';
 +    html += '      <option value="content_top"><?php echo $text_content_top; ?></option>';
 +    html += '      <option value="content_bottom"><?php echo $text_content_bottom; ?></option>';
 +    html += '      <option value="column_left"><?php echo $text_column_left; ?></option>';
 +    html += '      <option value="column_right"><?php echo $text_column_right; ?></option>';
 +    html += '    </select></td>';
 +    html += '    <td class="left"><select name="basic_module_module[' + module_row + '][status]">';
 +    html += '      <option value="1" selected="selected"><?php echo $text_enabled; ?></option>';
 +    html += '      <option value="0"><?php echo $text_disabled; ?></option>';
 +    html += '    </select></td>';
 +    html += '    <td class="right"><input type="text" name="basic_module_module[' + module_row + '][sort_order]" value="" size="3" /></td>';
 +    html += '    <td class="left"><a onclick="$(\'#module-row' + module_row + '\').remove();" class="button"><?php echo $button_remove; ?></a></td>';
 +    html += '  </tr>';
 +    html += '</tbody>';
 +
 +    $('#module tfoot').before(html);
 +
 +    module_row++;
 +}
 +</script>
 <?php echo $footer; ?> <?php echo $footer; ?>
 </code> </code>
-==controleur== +===fichiers de langue=== 
-<code> +<code><?php
-class ControllerModuleNomModule extends Controller { +
-// class ControllerModule<NomModuleCamelCaseSansUnderscores>+
  
-  private $error array()+/*  Minimal elements */ 
-  public function index() { + 
-    // fonction par default +//  Heading 
-  } +$_['heading_title'        "Module basique"// aussi titre du module 
-   +//  Text 
-  protected function validate() { +$_['text_module'        = 'Modules'; 
-    // autre fonction, ici validation +$_['text_success'       = 'Succès de la modification du module basique !'; 
-  } +$_['text_content_top'   = 'Content Top'; 
-   +$_['text_content_bottom'] = 'Content Bottom'; 
-}+$_['text_column_left'   = 'Column Left'; 
 +$_['text_column_right'  = 'Column Right'; 
 +//  Inputs 
 +$_['entry_layout'       = 'Layout :'; 
 +$_['entry_position'     = 'Position :'; 
 +$_['entry_status'       = 'Statut :'; 
 +$_['entry_sort_order'   = 'Ordre de tri:'; 
 +//  Errors 
 +$_['error_permission'   = 'Attention : vous ne disposez pas des permissions nécessaires !'; 
 + 
 +/*  Custom Inputs *
 +//  Text 
 +//  Inputs 
 +$_['entry_text_field'       = 'Champs texte'; 
 +//  Errors 
 +$_['error_text_field'        = 'Attention : remplissage du champs requis !'; 
 +?>
 </code> </code>
-==fichier de langue== 
-<code> 
-<?php 
  
-// titre +<code><?php
-$_['heading_title'            = "titre du module"+
  
-// Élément textuels, labels... +/*  Minimal elements */
-$_['text_element'             = "élément de texte";+
  
-// Inputs +//  Heading 
-$_['entry_element'         = 'titre du champs';+$_['heading_title'        = "Basic module"; // also module's title 
 +//  Text 
 +$_['text_module'        = 'Modules'; 
 +$_['text_success'       = 'Success: You have modified basic module!'; 
 +$_['text_content_top'   = 'Content Top'; 
 +$_['text_content_bottom'] = 'Content Bottom'; 
 +$_['text_column_left'   = 'Column Left'; 
 +$_['text_column_right'  = 'Column Right'; 
 +//  Inputs 
 +$_['entry_layout'       = 'Layout:'; 
 +$_['entry_position'     = 'Position:'; 
 +$_['entry_status'       = 'Status:'; 
 +$_['entry_sort_order'   = 'Sort Order:'; 
 +//  Errors 
 +$_['error_permission'   = 'Warning: You do not have permission to modify basic module!';
  
-// Messages d'erreur +/*  Custom Inputs */ 
-$_['error_element'   = 'Texte d'erreur';+//  Text 
 +//  Inputs 
 +$_['entry_text_field'       = 'Champs texte'; 
 +//  Errors 
 +$_['error_text_field'        = 'Warning: field is required !'
 +?> 
 +</code> 
 +====catalog==== 
 +===controleur=== 
 +<code><? 
 +class ControllerModuleBasicModule extends Controller { /* nom module à modifier */ 
 +  public function index() { 
 +    /* optionnel : fichier de langage 
 +    $this->language->load('module/basic_module')// nom module à modifier 
 +    //  récupération des éléments de langue 
 +    $this->data['element'] = $this->language->get('element'); 
 +    */
  
 +     /* récupération de la valeur enregistrée */
 +    $this->data['value'] = html_entity_decode($this->config->get('basic_module_text_field')); /* nom module à modifier */
 +
 +    /*  chemin de la vue */
 +    $this->template = $this->config->get('config_template') . '/template/module/basic_module.tpl'; /* nom module à modifier */
 +
 +     /* rendu */
 +    $this->render(); // renders the output
 +  }
 +}
 ?> ?>
 </code> </code>
 +===vue===
 +<code><p><?php echo $value ?></p></code>
 +===fichiers de langue (optionnels)===
 +<code><?php
 +// optional language file
 +?></code>
opencart/modules.1454435945.txt.gz · Last modified: 2016/02/02 18:59 by leo