it-swarm.it

Trash Joomla Articolo in frontend

Sto sviluppando un piccolo plugin per Joomla 3.x che aggiunge un pulsante "Trash article" quando sei in Joomlas Frontend. Vedi screenshot di seguito.

http://imgur.com/NYLGRdY

Ora ho questo AJAX che si verifica quando si fa clic sull'elemento dell'elenco.

Ecco il codice:

request = {
          "option" : "com_ajax",
          "plugin" : "deletearticle"
          "data"   : "test",
          "format" : "raw"  
};

$.ajax({
       type : "POST",
       data : request,
       success: function (response) {
           $("p:first").html("Data: " + response)
      } 
});

E l'helper PHP.

<?php 
 jimport('joomla.plugin.plugin');
 class plgAjaxDeletearticle extends JPlugin
 {
    function onAjaxDeletearticle()
    {
        $controller = JControllerLegacy::getInstance('Content');
        $controller->execute(JFactory::getApplication()->input->get('task'));
    }
 }

Sto facendo un'esperienza di lavoro e ho chiesto al mio mentore come avrei dovuto cambiare lo stato dell'articolo in Cestino. E mi ha dato il codice all'interno della funzione e mi ha detto che avrei dovuto essere in grado di modificarlo in qualche modo, in modo che il controller eseguisse una funzione di salvataggio sull'articolo.

Ho provato a leggere queste cose, ma non sembra essere così ben documentato. Qualsiasi aiuto sarebbe molto apprezzato in quanto non sono del tutto sicuro di come procedere.

Grazie.

9

Prima di tutto devi passare l'ID articolo con la tua richiesta. Quindi puoi utilizzare la classe JTable per aggiornare lo stato:

public function onAjaxDeletearticle()
{
    // Get id from the request
    $id = JFactory::getApplication()->input->getInt('data');

    // Get the new instance of #__content table
    $table = JTable::getInstance('content');

    // Load the article data by id
    $table->load($id);

    // Set the state to 'trashed'
    $table->state = -2;

    // Store the article
    $table->store();
}
9
Dmitry Rekun