it-swarm.com.de

RS-Formular löschen mit Nachricht

Ich verwende RS Forms Pro und kann eine Liste der übermittelten Formulare über einen Menülink anzeigen. Ich kann anzeigen , bearbeiten und lade die Formulare von dieser Seite herunter. Ich habe seitdem hinzugefügt löschen Funktionalität, die wie erwartet funktioniert. Ich folgte dem ausgezeichneten Führer hier

Was ich jetzt versuche, ist wahrscheinlich ziemlich einfach, aber ich kann es nicht herausfinden.

Wenn Sie auf die Schaltfläche "Löschen" klicken, wird das Formular gelöscht und die Seite wird aktualisiert. Ich möchte jedoch eine Nachricht anzeigen (vermutlich innerhalb der Systemnachricht div), die lautet (so etwas wie)

erfolgreich gelöscht

Die Löschfunktion funktioniert, ich werde jedoch meinen Code als Referenz einfügen.

Das auf der Formularanzeige aufgerufene Skript sieht wie folgt aus (dies wird in der RS ​​Form-Konfiguration festgelegt):

// First we have to check the "action" parameter from the URL
$action = JRequest::getWord('action');
if ($action == "delete") {

// If it returns true it will continue running the script 
  $id_value = JRequest::getInt('id');
  $formId_value = JRequest::getInt('formId');

// For security reasons we verify if the user has the right to edit submissions using RSFormProHelper
  if ($id_value && $formId_value && RSFormProHelper::canEdit($formId_value,$id_value)){

// If user has enough permission rights, run the query
    $db = JFactory::getDbo();
    $db->setQuery("DELETE FROM #__rsform_submission_values WHERE `SubmissionId`='". $id_value."'");
    $db->execute();
    $db->setQuery("DELETE FROM #__rsform_submissions WHERE `SubmissionId`='". $id_value."'");
    $db->execute();

// Redirect the user back to Manage directories 
    $itemId_value = JRequest::getInt('Itemid');
    $mainframe->redirect(JRoute::_('index.php?option=com_rsform&view=directory&Itemid='.$itemId_value, false));
  }

// If the user does not have permission to edit, he will be prompted with the language override created earlier:
  else
    $formLayout = JText::_('RSFP_DELETE_ERROR');
}

Der Code für meinen Löschknopf lautet wie folgt (Überschreibung von com_rsform);

<a href="<?php echo JRoute::_('index.php?option=com_rsform&formId='.$this->params->get('formId').'&action=delete&id='.$item->SubmissionId);?>">delete</a>

Wenn ich die Seitenquelle ansehe, sehe ich den leeren Div über meinem Formular, wo die Systemnachricht vermutlich hingehen würde?

<div id="system-message-container"></div>

Ich verstehe, dass dies mit RS Forms zusammenhängt, möchte jedoch verstehen, wie ich bei erfolgreichem Löschen einen Wert an die Systemnachricht div weitergebe.

Vorschläge sind willkommen.

2
jonboy

Mit der Funktion enqueueMessage können Sie eine Meldung im Systemausgabebereich anzeigen.

In dem von Ihnen angegebenen Code sehen Sie Folgendes:

$mainframe->redirect(JRoute::_('index.php?option=com_rsform&view=directory&Itemid='.$itemId_value, false));

Ersetzen Sie es durch Folgendes:

$mainframe->redirect(JRoute::_('index.php?option=com_rsform&view=directory&Itemid='.$itemId_value, false), 'successfully deleted', 'success');

Zur besseren Übersicht:

$url  = 'index.php?option=com_rsform&view=directory&Itemid='.$itemId_value;
$msg  = 'successfully deleted';
$type = 'success';
$mainframe->redirect(JRoute::_($url, false), $msg, $type);

pdate:

Entschuldigung, es stellt sich heraus, dass das Übergeben einer Nachricht in der Weiterleitungsfunktion veraltet ist. Stattdessen sollte enqueueMessage vor der Umleitung verwendet werden, wie folgt:

$url  = 'index.php?option=com_rsform&view=directory&Itemid='.$itemId_value;
$msg  = 'successfully deleted';
$type = 'success';
$mainframe->enqueueMessage($msg, $type);
$mainframe->redirect(JRoute::_($url, false));
2
Lodder