info:joomla:easycreator

Ceci est une ancienne révision du document !


EasyCreator

http://extensions.joomla.org/extensions/miscellaneous/development/5908

EasyCreator est un formidable outil de développement d'extensions pour Joomla 1.5. Il permet d'accélérer le processus de création de composants, modules, plugins mais également du code de vos templates. Vous pouvez créer un environnement pour votre extension et un package zip installable en quelques clics.

Au départ, vous pouvez vous aider du “magicien” qui vous proposera de sélectionner un composant sur 7 modèles au choix de composants au standard MVC ou encore un module public ou admin, un plugin d'authentification ou de contenu ou utilisateur ainsi qu'une copie des templates d'origine (beez, rhuk milkyway). il s'en suit une personnalisation des informations et votre extension est prête à fonctionner. La structure de base est pleinement opérationnel, vous pouvez déjà tester et ajouter votre code dans le mode bac à sable (sandbox) également inclus dans Easycreator.

La traduction en français est inclus. Pour installer EasyCreator, rien de plus simple : c'est un composant pour Joomla qui s'installe par le menu extensions/intaller.

http://www.joomlafrance.org/telecharger/fileinfo/EasyCreator.html

Voir aussi cet excellent tutoriel: http://christophehagnere.eu/tag/joomla/

CRUD / Note Fred

Au départ, pour les opérations de CRUD*, j'utilisais cake, mais après plein de problèmes d'encodage UTF-8 -isoXXYY, j'ai regardé de plus près comment faire ça avec Joomla! et ce composant EasyCreator, c'est très simple - mais il faut un peu de patience et être au calme, compter 1-2h:

  • créer une table MySQL en suivant le “JoomlaMVCStyle” - soit EN TOUT CAS un champ id auto-incrémental - on peut bidouiller si on a pas, mais ça rend les choses plus compliquées
  • installer EasyCreator
  • suivre le “wizard” pour un MVC 4 admin (il y a un tutoriel correspondant sur le site de joomla)

  • modifier les fichiers créés, d'abord
  • table

puis

  • views

ce serait intéressant d'automatiser tout cela… script à faire! Mais déjà là, montre en main, si la table n'est pas trop compliquée, en moins d'une heure vous avez votre CRUD “Joomla like”…

* CRUD désigne les quatre opérations de base pour la persistance des données, en particulier le stockage d'informations en base de données. Soit : Create, Read (ou Retrieve), Update et Delete (ou Destroy). C'est-à-dire : créer, lire, mettre à jour et supprimer. source: http://fr.wikipedia.org/wiki/CRUD

HowTo

une petite méthode pour faire le CRUD, à améliorer mais c'est un début

  • créer un composant MVC 4 admin, ici com_livres
  • récupérer dans mysql la liste des champs de la table, qui doit s'appeller jos_livres (changer pour le bon nom), le plus simple est de faire un export csv avec nom des champs en 1e ligne
  • s'assurer comme a bien un champ identifiant “id”

exemple:

"id";"auteur";"titre";"support";"localisation";"groupe_carton";"type";"date";"remarques";"owner";"datein";"user_id"

nom des variables

dans (x)emacs:

CTRL-SHIFT-ALT-%
";"
ALT-J

soit (query-replace “\”;\“” “\n” nil)

puis

CTRL-SHIFT-ALT-%
^\(.*\)$
var $\1 = null;
CTRL-SHIFT-ALT-%
^\(.*\)$
\1 LIKE "%'.$filter_search.'%" OR 

garder le résultat et corriger la dernière ligne, eg.

auteur LIKE "%'.$filter_search.'%" OR 
titre LIKE "%'.$filter_search.'%" OR 
support LIKE "%'.$filter_search.'%" OR 
localisation LIKE "%'.$filter_search.'%" OR 
groupe_carton LIKE "%'.$filter_search.'%" OR 
type LIKE "%'.$filter_search.'%" OR 
date LIKE "%'.$filter_search.'%" OR 
remarques LIKE "%'.$filter_search.'%" OR 
owner LIKE "%'.$filter_search.'%" OR 
datein LIKE "%'.$filter_search.'%" OR 
user_id LIKE "%'.$filter_search.'%

placer le résultat des variables supra dans /tables/

ex.

var $auteur = null;
var $titre = null;
var $support = null;
var $localisation = null;
var $groupe_carton = null;
var $type = null;
var $date = null;
var $remarques = null;
var $owner = null;
var $datein = null;
var $user_id = null;

livress

détail un peu plus compliqué, alors détaillé

livres

rien à changer

rien à changer

livress (liste de tous les items)

/views/…/tmpl/default.php

style
<style>
a {
text-decoration: none;
}
a:hover{
color: red;
}
td {
vertical-align: top;
padding-bottom: 3px;
padding-right: 5px;
}
.row0{
background-color: #e5e5e5;
}
.row1{
background-color: #ffffff;
}
.fenetrerecherche {
width: 150px; height: 13px;
padding-bottom: 3px; 
text-align: left;
}
</style>
moteur de recherche et pagination

ajouter après la ligne qui commence par <table

NOTE: attention au target du form, qui doit être de la forme

<form action="index.php?option=com_musiques&controller=musiques" method="post" name="form">

<div id="editcell">
<table>
<!-- search engine begin -->
    <tr>
        <td align="left" width="100%">
            <?php echo JText::_('Filter'); ?>:
            <input type="text" name="filter_search" id="search" value="<?php echo $this->lists['search'];?>" class="text_area" onchange="document.adminForm.submit();" />
            <button onclick="this.form.submit();"><?php echo JText::_('Go'); ?></button>
            <button onclick="document.adminForm. filter_search.value='';this.form.submit();"><?php echo JText::_('Reset'); ?></button>
        </td>

    </tr>
<!-- search engine end -->
<!-- pagination begin -->
    <tr>
      <td colspan="9">
      <?php 
      #getPagination();
      jimport('joomla.html.pagination');
        // Get data from the model
        $items =& $this->get('Data');      
        $pagination =& $this->get('Pagination');
         // push data into the template
        $this->assignRef('items', $items);     
        $this->assignRef('pagination', $pagination);
        echo $this->pagination->getListFooter(); 
        ?></td>
    </tr>
<!-- pagination end -->
</table>

libellé des colonnes

CTRL-SHIFT-ALT-%

^\(.*\)$

<th>
 <?php echo JText::_( '\1' ); ?>
</th>

copier-coller le résultat et corriger la dernière ligne, résultat

contenu des colonnes

changer:

         <td>
            <?php echo $row->id; ?>
         </td>
         <td>
            <?php echo $checked; ?>
         </td>
         <td>
            <a href="<?php echo $link; ?>"><?php echo $row->greeting; ?></a>
         </td>

pour

         <td>
            <a href="<?php echo $link; ?>"><?php echo $row->id; ?></a>
         </td>
         <td>
            <?php echo $checked; ?>
         </td>

ajouter après

CTRL-SHIFT-ALT-%

^\(.*\)$

<td>
  <?php echo $row->\1; ?>
</td>

si vous voulez cacher des colonnes à l'affichage liste, faites-le! (mais gardez bien id)

résultat

livres (vue d'un item)

/views/…/tmpl/form.php

CTRL-SHIFT-ALT-%

^\(.*\)$

<tr>
   <td width="100" align="right" class="key">
<label for="\1">
   <?php echo JText::_( '\1' ); ?>:
</label>
   </td>
   <td>
<input class="text_area" type="text" name="\1" id="\1" size="32" maxlength="250" value="<?php echo $this->livres->\1;?>" />
   </td>
</tr>

si vous devez faire des textarea, changer à la main, ex.

         <td>
            <input class="text_area" type="text" name="D_RAPPEL" id="D_RAPPEL" size="32" maxlength="250" value="<?php echo $this->adresses->D_RAPPEL;?>" />
         </td>

résultat

FIXME

copier le module administrator/component/… dans la racine /component

cd module mv admin.module.php module.php

rm -fR *.xml *.xml* CHANGELOG* *install*

views/musiquess/view.html.php

delete

		JToolBarHelper::title(   JText::_( 'musiques Manager' ), 'generic.png' );
		JToolBarHelper::deleteList();
		JToolBarHelper::editListX();
		JToolBarHelper::addNewX();

	/**
	 * musiquess view display method
	 * @return void
	 **/
	function display($tpl = null)
	{
		// Get data from the model
		$items		= & $this->get( 'Data');

		$this->assignRef('items',		$items);

		parent::display($tpl);
	}

views/musiquess/tmpl/default.php

delete

			<th width="5">
				<?php echo JText::_( 'ID' ); ?>
			</th>
			<th width="20">
				<input type="checkbox" name="toggle" value="" onclick="checkAll(<?php echo count( $this->items ); ?>);" />
			</th>	

....

			<td>
				<?php echo $row->id; ?>
			</td>
			<td>
				<?php echo $checked; ?>
			</td>

changer

<input type="text" name="filter_search" id="search" value="
<?php echo $this->lists['search'];?>" class="text_area" 
onchange="document.adminForm.submit();" />

pour

<input type="text" name="filter_search" id="search" value=""
 size="10" onchange="document.adminForm.submit();" style="width: 150px; height: 20px; text-align: left" />

views/musiques/view.html.php

effacer

		JToolBarHelper::title(  'musiques: <small><small>[ ' . $text.' ]</small></small>' );
		JToolBarHelper::save();
		if ($isNew)  {
			JToolBarHelper::cancel();
		} else {
			// for existing items the button is renamed `close`
			JToolBarHelper::cancel( 'cancel', JText::_('Close') );
		}

views/musiques/tmpl/form.php

effacer

<form action="index.php" method="post" name="adminForm" id="adminForm">
...
<input type="hidden" name="option" value="com_musiques" />
<input type="hidden" name="id" value="<?php echo $this->musiques->id; ?>" />
<input type="hidden" name="task" value="" />
<input type="hidden" name="controller" value="musiques" />
</form>


changer partout

note: si quelqu'un m'écrit l'ereg pour emacs, je veux bien!

<input class="text_area" type="text" name="genre" id="genre" size="32" maxlength="250" value="<?php echo $this->musiques->genre;?>" />
->
<?php echo $this->musiques->genre;?>

ajouter à la fin

<br><a href=“index.php?option=com_musiques”>Retour</a>

Dates

Pour ajouter un calendrier javascript (js calendar) pour un champ date, rien de plus simple:

  • au début du fichier
//to display a js calendar
    JHTML::_('behavior.calendar');

puis dans le formulaire d'édition / d'ajout (normalement views/nomtablesingulier/tmpl/form.php):

<input class="inputbox" type="text" name="date" id="date" 
size="25" maxlength="19" value="<?php echo $this->livres->date;?>" />
<input name="reset" type="reset" class="button" 
onclick="return showCalendar('date', '%Y-%m-%d %H:%M');" value="..." />
  • info/joomla/easycreator.1455525348.txt.gz
  • Dernière modification : 2016/02/15 09:35
  • de radeff