Joomla.it Forum
Non solo Joomla... => Sviluppo => : mpigio 30 Jul 2012, 12:06:46
-
Ciao a tutti, sto creando un mio componente in Joomla 2.5, ci sono differenze nell'implementare i bottoni publish e custom rispetto alla 1.5?
Vorrei semplicemente aggiungere nella lista dei miei item la possibilità di pubblicare o nascondere direttamente su ogni singolo item o complessivamente con il bottone sulla toolbar. In 1.5 l'avevo fatto qui non mi va.
Lo stesso per un un bottone custom sempre per la toolbar come devo procedere? Nella guida ufficiale della documentazione ho trovato dettagli su questi due task.
Potete aiutarmi? Grazie
-
ci sono differenze nell'implementare i bottoni publish e custom rispetto alla 1.5?
-------------------------------------------
no
M.
-
Allora non capisco dove sbaglio. Potresti darmi un'occhiata al codice?
administrator/components/com_lifemessages/views/lifemessages/tmpl/default.php
...
<form action="index.php" method="post" name="adminForm" id="adminForm">
<input type="hidden" name="option" value="<?=$option?>" />
<input type="hidden" name="task" value="" />
<input type="hidden" name="view" value="<?=$view?>" />
<input type="hidden" name="filter_order" value="<?=$listOrder?>" />
<input type="hidden" name="filter_order_Dir" value="<?=$listDirn?>" />
<input type="hidden" name="boxchecked" value="0" />
<input type="hidden" name="controller" value="lifemessages" />
...
<th>
<?=JHtml::_('grid.sort', 'COM_LIFEMESSAGES_PUBLISHED', 'published', $listDirn, $listOrder); ?>
</th>
...
administrator/components/com_lifemessages/views/lifemessages/view.html.php
<?php
defined('_JEXEC') or die( 'Restricted access' );
jimport('joomla.application.component.view');
jimport( 'joomla.html.pagination' );
class LifeMessagesViewLifeMessages extends JView {
function display($tpl = null) {
JHTML::stylesheet('administrator/components/com_lifemessages/assets/stile.css' );
// Set the toolbar
$this->addToolBar();
$this->pagination = $this->get('Pagination');
$this->items = $this->get('Items');
$this->state = $this->get('State');
parent::display($tpl);
}
protected function addToolBar()
{
JToolBarHelper::title( JText::_( 'COM_LIFEMESSAGES_MESSAGES' ), 'generic.png' );
JToolBarHelper::custom('messages.send', 'sendmessages', '', 'COM_LIFEMESSAGES_SEND', true);
JToolBarHelper::addNewX('message.add');
JToolBarHelper::publishList('messages.publish');
JToolBarHelper::unpublishList('messages.unpublish');
JToolBarHelper::editListX('message.edit');
JToolBarHelper::deleteList( JText::_( 'COM_LIFEMESSAGES_CONFIRM_DELETE' ), 'lifemessages.delete' );
JToolBarHelper::preferences('com_lifemessages', '400');
}
}
administrator/components/com_lifemessages/controllers/lifemessages.php
<?php
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.controlleradmin');
class LifeMessagesControllerLifeMessages extends JControllerAdmin
{
public function __construct($config = array())
{
parent::__construct($config);
$this->registerTask('messages.publish', 'pubblica');
$this->registerTask('messages.send', 'invia');
}
public function getModel($name = 'Message', $prefix = 'LifeMessagesModel')
{
$model = parent::getModel($name, $prefix, array('ignore_request' => true));
return $model;
}
public function pubblica()
{
echo 'I Am in SEND';
$this->display();
}
public function invia()
{
echo 'I Am in SEND';
$this->display();
}
}
Le due funzioni non vengono mai richiamate e non funziona neanche la pubblicazione sul singolo item
-
JToolBarHelper::custom('messages.send'
---------------------------------------------------------
controller-> messages
task-> send
dov'è la task send?
M.
http://forum.joomla.it/index.php/topic,158454.0.html
-
Avendo indicato questo controller (messages) non dovrebbe stare qui?
administrator/components/com_lifemessages/controllers/lifemessages.php
Ho associato la task al metodo invia, cosa mi manca?
Soprattutto sulla pubblicazione, essendo una delle operazioni CRUD perchè non va?
-
Ho trovato un primo errore sul model ma non è risolutivo. In pratica non caricavo l'attributo published dal DB. Ora per star tranquillo ho messo select *...
administrator/components/com_lifemessages/models/lifemessages.php
...
protected function getListQuery()
{
// Create a new query object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select('*');
$query->from('#__lifemessages_messages as messages');
$search = $this->getState('filter.search');
if (!empty($search)) {
$search = $db->Quote('%'.$db->escape($search, true).'%');
$query->where('((messages.message LIKE '.$search.')
OR (messages.receivers LIKE '.$search.'))');
}
$published = $this->getState('filter.published');
if (is_numeric($published)) {
$query->where('published = ' . (int) $published);
}
elseif ($published === '') {
$query->where('(published = 0 OR published = 1)');
}
$query->order($this->getState('list.ordering', 'id').' '.$this->getState('list.direction', 'ASC'));
return $query;
}
...
Ancora non va la pubblicazione da lista sul singolo item o su una lista e la chiamata al bottone custom
Dove altro posso sbattere la testa oltre che sul muro? :)
Grazie!
----------------------
AGGIORNAMENTO:
Trovato anche questo errore nella view della lista:
JToolBarHelper::publishList('lifemessages.publish');
JToolBarHelper::unpublishList('lifemessages.unpublish');
Ho anche visto che mi ordina per tutti i campi della lista ma non per pubblicato come pure non filtra per pubblicato
Mi rimane la pubblicazione sul singola item e il bottone custom
-
Qualcuno può aiutarmi su questi 2 problemi?
Probabilmente il problema sarà su qualche nome sbagliato ma non riesco a trovarlo, come posso debuggare il codice per rintracciare l'errore?
Vi posso allegare tutto il codice di almeno un oggetto o sono troppo invasivo?
Grazie comunque
-
Cliccando sui singoli pubblica/nascodi presenti nella tabella ho notato che l'ultimo elemento della lista non effettua la chiamata al server mentre i precedenti nascondono quello immediatamente successivo. Può essere d'aiuto?
Grazie