web-dev-qa-db-fra.com

Trash Joomla Article dans le frontend

Je développe un petit plugin pour Joomla 3.x qui ajoute un bouton "Article de corbeille" lorsque vous vous trouvez dans Joomlas Frontend. Voir la capture d'écran ci-dessous.

http://imgur.com/NYLGRdY

Maintenant, j'ai cet appel AJAX qui se produit lorsque vous cliquez sur l'élément de la liste.

Voici le code:

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

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

Et l’assistant PHP.

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

Je suis en train de faire une expérience de travail et j'ai demandé à mon mentor comment je devais changer l'état de l'article en vider de son contenu. Et il m'a donné le code à l'intérieur de la fonction et m'a dit que je devrais pouvoir le modifier d'une manière ou d'une autre, de sorte que le contrôleur exécute une fonction de sauvegarde sur l'article.

J'ai essayé et lu sur ce sujet, mais cela ne semble pas très documenté. Toute aide serait grandement appréciée, car je ne savais pas trop comment procéder.

Merci.

9
Patric Gustafsson

Tout d'abord, vous devez transmettre l'ID d'article à votre demande. Ensuite, vous pouvez utiliser JTable class pour mettre à jour l'état:

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