web-dev-qa-db-fra.com

Le tri et la commande des composants JDeveloper ne fonctionnent pas (bug et correction)

Pour ceux qui utilisent le (à mon avis excellent) composant JDeveloper sur Joomla 3.6 pour créer des composants personnalisés, j'ai remarqué qu'il y avait un problème avec la disposition du tableau d'admin, vous ne pouvez pas trier les colonnes ni utiliser la fonctionnalité de commande.

1
philip

Voici les correctifs que vous devez faire pour les faire fonctionner

Ouvrir

/administrator/com_yourcomponent/views/yourviewplural/tmpl/default.php

Vous verrez une ligne

$saveOrder = ($listOrder == 'ordering' && isset($this->items[0]->ordering));

Notez qu'il vérifie que listOrder est égal à 'ordering' (nous y reviendrons)

Juste en dessous, changer

$saveOrderingUrl = 'index.php?option=com_yourcomponent&task=yourviewplural.ordering&tmpl=component';

À

$saveOrderingUrl = 'index.php?option=com_yourcomponent&task=yourviewplural.saveOrderAjax&tmpl=component';

Faites défiler la liste jusqu'à atteindre les en-têtes de table.

La première colonne est la colonne de classement, voici où se trouve le prochain bogue. Notez que sa cible de commande est définie sur 'a.ordering' mais notre variable $ saveOrder vérifie si elle est 'en cours de commande'

changement

<?php echo JHtml::_('searchtools.sort', '', 'a.ordering', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING', 'icon-menu-2'); ?>

À

<?php echo JHtml::_('searchtools.sort', '', 'ordering', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING', 'icon-menu-2'); ?>

J'ai trouvé que searchtools.sort et grid.sort ne semblaient pas fonctionner ensemble, alors remplacez toutes les occurrences de grid.sort par searchtools.sort.

Si vous avez une colonne "en vedette", vous devrez apporter une autre modification car vous ne pouvez pas utiliser le titre pour afficher l'icône en vedette. searchtools a cependant un paramètre pour icon.

changement

<?php echo JHtml::_('grid.sort', JText::_('<span class="icon-featured"></span>'), 'a.featured', $listDirn, $listOrder) ?>

À

<?php echo JHtml::_('searchtools.sort', null, 'a.featured', $listDirn, $listOrder, null, null, 'Featured', 'icon-featured') ?>

Enregistrez le fichier, nous en avons terminé avec celui-ci.

Ouvrez /administrator/com_yourcomponent/models/forms/filter_yourviewplural.xml

Faites défiler l'écran jusqu'en bas pour voir le champ de liste avec le nom = "fullordering". Dans la liste des options, recherchez a.ordering ASC et a.ordering DESC et supprimez le fichier a.

c'est-à-dire de

<option value="a.ordering ASC">JGRID_HEADING_ORDERING_ASC</option>
<option value="a.ordering DESC">JGRID_HEADING_ORDERING_DESC</option>

À

<option value="ordering ASC">JGRID_HEADING_ORDERING_ASC</option>
<option value="ordering DESC">JGRID_HEADING_ORDERING_DESC</option>

Enregistrez le fichier. Nous avons terminé, le tri et la commande fonctionnent maintenant comme ils le devraient. J'espère que ça aide quelqu'un.

1
philip