Statistiques

Compteur d'affichages des articles
1093084

 12-Bouton radio version dynamiqueLogo Joomla 2.5

Nous devons donc créer une nouvelle table pour gérer les différents état d'un livre.

Pour cela nous allons suivre Cas pratiques sur Joomla - Partie 02 en choisissant xxufl_etat comme nom de table. Nous allons faire un peu de ménage dans cette nouvelle table car les nouveaux champs de la table xxufl_livres ne sont pas nécessaire.

Nous supprimons donc les champs :

  1. id_auteur
  2. pret
  3. etat

 Voici la structure de la table :

Structure table etat

 

Je ne vais pas revenir sur la création et modification des répertoires et fichiers à effectuer pour gérer cela dans l'interface. Il faut s'inspirer de l'article Cas pratiques sur Joomla - Partie 03 pour cela.

Une fois cela fait, il faut saisir tous les états de conservation des livres que vous souhaitez. Pour moi cela donne comme contenu de table :

Contenu table Etat

 

Il faut faire correspondre les données de la table avec les boutons radio.

administrator\components\com_livres\models\livre.php

Ajouter à la fin une fonction :

	function getListeetatcomplete()
	{
    	$db = $this->getDbo();
		$query = $db->getQuery(true);
		$query->select(' id, title');
		$query->from('#__etat');
		$db->setQuery($query->__toString());
		$listeetatcomplete = $db->loadObjectList();
		return $listeetatcomplete;
	}

Il faut modifier la fonction save pour intégrer le changement de valeur.

	public function save($data)
	{
		// Alter the title for save as copy

devient

	public function save($data)
	{
		$jinput = JFactory::getApplication()->input;
		$data['etat']=$jinput->get('etat', '', '');
		// Alter the title for save as copy

administrator\components\com_livres\views\livre\view.html.php

La fonction display est :

	public function display($tpl = null)
	{
		// Initialiase variables.
		$this->form		= $this->get('Form');
		$this->item		= $this->get('Item');
		$this->state	= $this->get('State');

		$this->canDo	= LivresHelper::getActions($this->state->get('filter.category_id'));

		// Check for errors.
		if (count($errors = $this->get('Errors'))) {
			JError::raiseError(500, implode("\n", $errors));
			return false;
		}

		$this->addToolbar();
		parent::display($tpl);
	}

devient 

	public function display($tpl = null)
	{
		// Initialiase variables.
		$this->form		= $this->get('Form');
		$this->item		= $this->get('Item');
		$this->state	= $this->get('State');

		$this->canDo	= LivresHelper::getActions($this->state->get('filter.category_id'));

		// Check for errors.
		if (count($errors = $this->get('Errors'))) {
			JError::raiseError(500, implode("\n", $errors));
			return false;
		}
		$listeetatcomplete=$this->get('Listeetatcomplete');
		$this->assignRef('listeetatcomplete',		$listeetatcomplete);
		$this->addToolbar();
		parent::display($tpl);
	}

Nous remplissons une array en nous servant de la fonction getListeetatcomplete.

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

Nous supprimons les 2 lignes ajoutées dans l'article Cas pratiques sur Joomla - Partie 07.

Donc de :

				<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>

nous passons à

				<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>

Puis  juste après :

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

nous rajoutons :

			<div class="clr"></div>
			<table width="100%" border="0" class="admintable">
				<div>
				<?php 
				for ($j=0, $m=count( $this->listeetatcomplete ); $j < $m; $j++) {
					$checked="";
					if ($this->item->etat == $j) {
						$checked="checked";
					}?>
					<td><input type="radio" name="TYPMAId" value="<?php echo $j;?>" <?php echo $checked;?>> 
					<?php echo $this->listeetatcomplete[$j]->title;?></td>
					<?php
				};?>
				</div>
			</table>

Je vous laisse régler à votre guise les problèmes d'affichage.

 

Cela donne :

Fiche livre boutons radio dynamiques

La modification d'état est bien sauvegardé. Choisissons Couverture déchirée et sauvegardons.

Vérification modification