Trash Joomla Artikel im Frontend

9

Ich entwickle ein kleines Plugin für Joomla 3.x, das eine Schaltfläche "Papierkorbartikel" hinzufügt, wenn Sie sich im Joomlas Frontend befinden. Siehe Screenshot unten.

http://imgur.com/NYLGRdY

Jetzt habe ich diesen AJAX-Aufruf, der auftritt, wenn Sie auf das Listenelement klicken.

Hier ist der Code:

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

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

Und die Helfer-PHP-Datei.

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

Ich mache gerade Berufserfahrung und habe meinen Mentor gefragt, wie ich den Artikelstatus in "Müll" ändern soll. Und er gab mir den Code innerhalb der Funktion und sagte mir, dass ich ihn auf irgendeine Weise ändern sollte, damit der Controller eine Speicherfunktion für den Artikel ausführt.

Ich habe versucht, dieses Zeug zu lesen, aber es scheint nicht so gut dokumentiert zu sein. Jede Hilfe wäre sehr dankbar, da ich nicht ganz sicher bin, wie ich vorgehen soll.

Vielen Dank.

Patric Gustafsson
quelle

Antworten:

9

Zunächst müssen Sie die Artikel-ID mit Ihrer Anfrage übergeben. Dann können Sie JTableclass verwenden, um den Status zu aktualisieren:

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
quelle