Statistiques

Compteur d'affichages des articles
1095519

 11-Bouton radio version statiqueLogo Joomla 2.5

Pour voir comment utiliser les boutons radio, nous allons gérer l'état des livres.

  • 0 - Etat inconnu
  • 1 - Etat abîmé
  • 2 - Etat bon
  • 3 - Comme neuf

Pour cela nous allons rajouter un champ Etat dans la table Livres.

 Création champ état

 

Pour la vue liste nous allons réaliser les modifications suivantes :

administrator\components\com_livres\models\livres.php

La fonction __construct est:

	public function __construct($config = array())
	{
		if (empty($config['filter_fields'])) {
			$config['filter_fields'] = array(
				'id', 'a.id',
				'title', 'a.title',
				'alias', 'a.alias',
				'checked_out', 'a.checked_out',
				'checked_out_time', 'a.checked_out_time',
				'catid', 'a.catid', 'category_title',
				'state', 'a.state',
				'access', 'a.access', 'access_level',
				'created', 'a.created',
				'created_by', 'a.created_by',
				'ordering', 'a.ordering',
				'publish_up', 'a.publish_up',
				'publish_down', 'a.publish_down',
				'id_auteur', 'a.id_auteur', 'auteur_title',
				'pret', 'a.pret'
			);
		}

		parent::__construct($config);
	}

devient

	public function __construct($config = array())
	{
		if (empty($config['filter_fields'])) {
			$config['filter_fields'] = array(
				'id', 'a.id',
				'title', 'a.title',
				'alias', 'a.alias',
				'checked_out', 'a.checked_out',
				'checked_out_time', 'a.checked_out_time',
				'catid', 'a.catid', 'category_title',
				'state', 'a.state',
				'access', 'a.access', 'access_level',
				'created', 'a.created',
				'created_by', 'a.created_by',
				'ordering', 'a.ordering',
				'publish_up', 'a.publish_up',
				'publish_down', 'a.publish_down',
				'id_auteur', 'a.id_auteur', 'auteur_title',
				'pret', 'a.pret',
				'etat', 'a.etat'
			);
		}

		parent::__construct($config);
	}

La ligne 140 est :

				'a.parameters, a.custom_fields, a.id_auteur, a.pret'

devient

				'a.parameters, a.custom_fields, a.id_auteur, a.pret, a.etat'

administrator\components\com_livres\views\livres\tmpl\default.php

Les lignes 70 à 75 sont :

				<th width="5%">
					<?php echo JHtml::_('grid.sort', 'COM_LIVRES_PRET_TITLE', 'pret', $listDirn, $listOrder); ?>
				</th>
				<th width="5%">
					<?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?>
				</th>

deviennent les lignes 70 à 78 :

				<th width="5%">
					<?php echo JHtml::_('grid.sort', 'COM_LIVRES_PRET_TITLE', 'pret', $listDirn, $listOrder); ?>
				</th>
				<th width="5%">
					<?php echo JHtml::_('grid.sort', 'COM_LIVRES_ETAT_TITLE', 'etat', $listDirn, $listOrder); ?>
				</th>
				<th width="5%">
					<?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?>
				</th>

Insérer en ligne 146 :

				<td class="center">
					<?php echo JHtml::_('jgrid.published', $item->state, $i, 'livres.', $canChange, 'cb', $item->publish_up, $item->publish_down); ?>
				</td>

pour avoir cela 

				<td class="center">
					<?php echo $this->escape($item->etat); ?>
				</td>
				<td class="center">
					<?php echo JHtml::_('jgrid.published', $item->state, $i, 'livres.', $canChange, 'cb', $item->publish_up, $item->publish_down); ?>
				</td>

Dans le fichier de langue, ajouter la définition suuivante :

COM_LIVRES_ETAT_TITLE="Etat"

Cela donne comme affichage :

 Affichage liste avec Etat

 

Nous allons gérer la fiche d'un livre.

administrator\components\com_livres\models\forms\livre.xml

Ajouter la description de champ suivante :

       <field
           name="etat"
           type="radio"
           label="COM_LIVRES_FIELD_ETAT_LABEL"
           description="COM_LIVRES_FIELD_ETAT_DESC"
           class="inputbox"
           filter="intval"
           size="1"
           default="1"
           >
           <option value="0">
               COM_LIVRES_FIELD_ETAT_INCONNU</option>
           <option value="1">
               COM_LIVRES_FIELD_ETAT_ABIME</option>
           <option value="2">
               COM_LIVRES_FIELD_ETAT_BON</option>
           <option value="3">
               COM_LIVRES_FIELD_ETAT_NEUF</option>
       </field>

administrator\components\com_livres\views\livre\tmpl\edit.php

Modifier les lignes 45 à 48 :

				<li><?php echo $this->form->getLabel('pret'); ?>
				<?php echo $this->form->getInput('pret'); ?></li>
				<li><?php echo $this->form->getLabel('subtitle'); ?>
				<?php echo $this->form->getInput('subtitle'); ?></li>

pour devenir les lignes 45 à 50 :

				<li><?php echo $this->form->getLabel('pret'); ?>
				<?php echo $this->form->getInput('pret'); ?></li>
				<li><?php echo $this->form->getLabel('etat'); ?>
				<?php echo $this->form->getInput('etat'); ?></li>
				<li><?php echo $this->form->getLabel('subtitle'); ?>
				<?php echo $this->form->getInput('subtitle'); ?></li>

Dans le fichier de langue, ajouter les définitions suivantes:

COM_LIVRES_FIELD_ETAT_LABEL="Etat du livre"
COM_LIVRES_FIELD_ETAT_DESC="Choisir un état"
COM_LIVRES_FIELD_ETAT_INCONNU="Inconnu"
COM_LIVRES_FIELD_ETAT_ABIME="Abîmé"
COM_LIVRES_FIELD_ETAT_BON="Bon"
COM_LIVRES_FIELD_ETAT_NEUF="Comme neuf"

Cela nous donne comme affichage :

Fiche d'un livre avec état

 

Si nous choisissons Comme neuf et que nous sauvegardons, l'affichage liste sera :

Affichage liste après modification état

Tout cela c'est bien joli mais les différents sont statiques, il faut entrer dans le code pour rajouter un état et la liste des livres affiche une valeur et non le texte d'un état. Nous allons voir dans le prochain article comment gérer cela avec une nouvelle table.