ti-enxame.com

Artigo do Trash Joomla no frontend

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 essa 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 auxiliar PHP.

<?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.

9
Patric Gustafsson

Antes de tudo, você precisa passar o ID do artigo com sua solicitação. Então você pode usar a classe JTable 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();
}
9
Dmitry Rekun