Artigo do Trash Joomla no frontend

9

Estou desenvolvendo um pequeno plugin para o Joomla 3.x que adiciona um botão "Artigo da Lixeira" quando você está no Joomlas Frontend. Veja a captura de tela abaixo.

http://imgur.com/NYLGRdY

Agora eu tenho uma chamada AJAX que acontece quando você clica no item da lista.

Aqui está o código:

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

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

E o arquivo PHP auxiliar.

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

Agora estou fazendo experiência profissional e perguntei ao meu mentor como devo mudar o estado do artigo para lixeira. E ele me deu o código dentro da função e me disse que eu deveria modificá-lo de alguma forma, para que o controlador execute uma função de salvar no artigo.

Eu tentei ler essas coisas, mas não parece tão bem documentado. Qualquer ajuda seria muito apreciada, pois não tenho certeza de como devo proceder.

Obrigado.

Patric Gustafsson
fonte

Respostas:

9

Antes de tudo, você precisa passar o ID do artigo com sua solicitação. Então você pode usar a JTableclasse para atualizar o estado:

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();
}
Dmitry Rekun
fonte