Back to top

Autore Topic: JToolBarHelper: bottoni publish e custom  (Letto 3760 volte)

Offline mpigio

  • Appassionato
  • ***
  • Post: 240
  • Sesso: Maschio
    • Mostra profilo
JToolBarHelper: bottoni publish e custom
« il: 30 Lug 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

mau_develop

  • Visitatore
Re:JToolBarHelper: bottoni publish e custom
« Risposta #1 il: 30 Lug 2012, 12:34:53 »
ci sono differenze nell'implementare i bottoni publish e custom rispetto alla 1.5?
-------------------------------------------
no

M.

Offline mpigio

  • Appassionato
  • ***
  • Post: 240
  • Sesso: Maschio
    • Mostra profilo
Re:JToolBarHelper: bottoni publish e custom
« Risposta #2 il: 30 Lug 2012, 13:28:47 »
Allora non capisco dove sbaglio. Potresti darmi un'occhiata al codice?


administrator/components/com_lifemessages/views/lifemessages/tmpl/default.php

Codice: [Seleziona]
...
<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

Codice: [Seleziona]
<?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::titleJText::_'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::deleteListJText::_'COM_LIFEMESSAGES_CONFIRM_DELETE' ), 'lifemessages.delete' );
        
JToolBarHelper::preferences('com_lifemessages''400'); 
    }
}

administrator/components/com_lifemessages/controllers/lifemessages.php

Codice: [Seleziona]
<?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

mau_develop

  • Visitatore
Re:JToolBarHelper: bottoni publish e custom
« Risposta #3 il: 30 Lug 2012, 15:44:02 »
JToolBarHelper::custom('messages.send'
---------------------------------------------------------
controller-> messages
task-> send

dov'è la task send?

M.

http://forum.joomla.it/index.php/topic,158454.0.html
« Ultima modifica: 30 Lug 2012, 15:47:58 da mau_develop »

Offline mpigio

  • Appassionato
  • ***
  • Post: 240
  • Sesso: Maschio
    • Mostra profilo
Re:JToolBarHelper: bottoni publish e custom
« Risposta #4 il: 31 Lug 2012, 12:30:16 »
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?


Offline mpigio

  • Appassionato
  • ***
  • Post: 240
  • Sesso: Maschio
    • Mostra profilo
Re:JToolBarHelper: bottoni publish e custom
« Risposta #5 il: 02 Ago 2012, 10:00:21 »
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

Codice: [Seleziona]
...
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
« Ultima modifica: 02 Ago 2012, 13:11:52 da mpigio »

Offline mpigio

  • Appassionato
  • ***
  • Post: 240
  • Sesso: Maschio
    • Mostra profilo
Re:JToolBarHelper: bottoni publish e custom
« Risposta #6 il: 09 Ago 2012, 10:34:21 »
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

Offline mpigio

  • Appassionato
  • ***
  • Post: 240
  • Sesso: Maschio
    • Mostra profilo
Re:JToolBarHelper: bottoni publish e custom
« Risposta #7 il: 31 Ago 2012, 18:32:33 »
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

 



Web Design Bolzano Kreatif