Forum CMS Made Simple FR

Version complète : intégration action dans admin panel
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.

ceadreak

Bonjour, je poste ici car personne ne m'a répondu dans General ...


Citation :#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#~ Version du CMS : 1.7.0
#~ Version du MLE si existante :
#~ Informations Système :
#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
Bonjour,
Je suis entrain de développer mon premier module qui est un interfaçage avec la plateforme de paiement Liqpay.

Je suis cependant confronté à une difficulté quand je suis dans mon administration et que je veux afficher une interface qui permet à l'utilisateur de créer ses boutons de paiement.

Je m'explique : j'ai un fichier nommé action.add_edit.php (je suis parti du skeleton) qui à comme but d'afficher les boutons existants, de les éditer et/ou d'en créer de nouveaux.
Il génère son propre template avec les différents champs.

J'ai un fichier action.defaultadmin.php dans lequel je crée mon administration et les onglets.
J'ai un premier onglet "general" comme dans le skeleton et un 2eme onglet "Boutons".
Dans mon onglet "Boutons", j'ai une variable smarty appelée {add_edit} qui est censée afficher le template généré par l'action add_edit ...

La est mon soucis ...

Je n'arrive pas a récupérer cette action et l'afficher dans mon onglet correctement.

A tout hasard, j'ai essayé ceci dans mon defaultadmin :
Code :
$smarty->assign('add_edit', require 'action.add_edit.php');
Evidemment, ca ne marche pas, cela m'affiche bien mon template add_edit mais pas dans l'onglet.

Voici mon fichier action.defaultadmin.php
Code :
<?php
if (!isset($gCms)) exit;

if (FALSE == empty($params['active_tab']))
  {
    $tab = $params['active_tab'];
  } else {
  $tab = '';
}

$tab_header = $this->StartTabHeaders() . $this->SetTabHeader('general',$this->Lang('title_general'),('general' == $tab)?true:false);
$this->smarty->assign('start_general_tab',$this->StartTab('general', $params));

$tab_header .= $this->SetTabHeader('buttons',$this->Lang('title_buttons'), ('buttons' == $tab)?true:false);
$this->smarty->assign('start_buttons_tab',$this->StartTab('buttons', $params));
  
$this->smarty->assign('tabs_start',$tab_header.$this->EndTabHeaders().$this->StartTabContent());
$this->smarty->assign('tab_end',$this->EndTab());
$this->smarty->assign('tabs_end',$this->EndTabContent());

$smarty->assign('add_edit', require 'action.add_edit.php');

$smarty->assign_by_ref('mod',$this);

echo $this->ProcessTemplate('adminpanel.tpl');

?>
ainsi que le template qui va avec :
Code :
{$tabs_start}
   {$start_general_tab}
      {$mod->Lang('welcome_text')}
   {$tab_end}
   {$start_buttons_tab}
      {if $start_buttons_tab != ''}
        {$add_edit}
      {/if}
   {$tab_end}
{$tabs_end}
je joins aussi mon fichier action.add_edit.php
Code :
<?php
if (!isset($gCms)) exit;

$db = &$gCms->GetDb();

if (isset($params['button_id'])) {
  $query = 'SELECT button_id, name, description, currency, amount from '.cms_db_prefix() . 'module_liqpay_buttons where button_id = ?';
  $result = $db->Execute($query,array($params['button_id']));

  if ($result !== false) {
    $row = $result->FetchRow();
    $button_id    = $row['button_id'];
    $name         = $row['name'];
    $description  = $row['description'];
    $currency     = $row['currency'];
    $amount       = $row['amount'];
    $new_window   = $row['new_window'];
  } else {
    echo "Database error!";
    exit;
  }
} else {
  $button_id    = -1;
  $name         = '';
  $description  = '';
  $currency     = '';
  $amount       = '';
  $new_window   = '';
}

$currency_array = array('EUR' => 'EUR', 'USD' => 'USD', 'RUR' => 'RUR', 'UAH' => 'UAH');

$smarty->assign('start_form', $this->CreateFormStart($id, 'save_record', $returnid));
$smarty->assign('title_add_edit',$this->Lang('title_add_edit'));
$smarty->assign('input_name',$this->CreateInputText($id,'name',$name));
$smarty->assign('input_description',$this->CreateInputText($id,'description',$desc));
$smarty->assign('input_currency',$this->CreateInputDropdown($id,'currency',$currency_array, $currency));
$smarty->assign('input_amount',$this->CreateInputText($id,'amount',$amount));
$smarty->assign('input_new_window',$this->CreateInputCheckbox($id,'new_window',$new_window));
// pass a hidden key value along with the submit button
$smarty->assign('submit', $this->CreateInputHidden($id,'button_id',$button_id).$this->CreateInputSubmit($id, 'submit', $this->Lang('submit')));
$smarty->assign('end_form', $this->CreateFormEnd());

$smarty->assign_by_ref('mod', $this);

// Display the populated template
echo $this->ProcessTemplate('add_edit.tpl');

?>
et son template :
Code :
<h1>{$mod->Lang('title_add_edit')}</h1>
{$start_form}
<div class="form_row">
  <table>
    <tr>
      <td><span class="field_title">{$mod->Lang('label_input_name')}</span></td>
      <td>{$input_name}</td>
    </tr>
    <tr>
      <td><span class="field_title">{$mod->Lang('label_input_description')}</span></td>
      <td>{$input_description}</td>
    </tr>
    <tr>
      <td><span class="field_title">{$mod->Lang('label_input_currency')}</span></td>
      <td>{$input_currency}</td>
    </tr>
    <tr>
      <td><span class="field_title">{$mod->Lang('label_input_amount')}</span></td>
      <td>{$input_amount}</td>
    </tr>
    <tr>
      <td><span class="field_title">{$mod->Lang('label_input_new_window')}</span></td>
      <td>{$input_new_window}</td>
    </tr>
  </table>
</div>
<div class="form_row">
   <span class="field_title"></span>
   <span class="field_input">{$submit}</span>
</div>
{$end_form}
Voila ...

Si vous pouvez me dire comment afficher ce template dans le tab de mon adminpanel ...


Merci beaucoup Smile
re,

il faut donc supprimer discussion de "Général" ??

ceadreak

Salut,

Beh je sais pas, j'aimerais qu'on me réponde dans l'un ou l'autre mais ca bouge pas beaucoup ... Sad

ceadreak

Personne pour m'expliquer exactement comment fonctionne les tabs de l'adminpannel dans le développement d'un module? ...
essai peut être aussi de créer quinze nouvelles discussions en simultanées. A ce qui parait au dessus de 12 en même temps ca attire les réponses.

je clôture donc ce doublon, merci d'éviter à l'avenir de spammer le forum, si tu n'as pas de réponse c'est peut être bêtement qu'on a rien à te répondre, mais je peux me tromper... quoi que non...