示例#1
0
 /**
  * Prepare an xml file content holding
  * a standard record for returning result
  * of an ajax request
  *
  * @param JView $view the view handling the request
  */
 public static function prepareAjaxResponse($view)
 {
     // use Joomla wml object
     jimport('joomla.utilities.simplexml');
     // create a root node
     $xml = new JSimpleXMLElement('item', array('id' => 'shajax-response'));
     // add children : status, message, message code, task
     $status =& $xml->addChild('status');
     $message =& $xml->addChild('message');
     $messagecode =& $xml->addChild('messagecode');
     $taskexecuted =& $xml->addChild('taskexecuted');
     // set default values
     $status->setData('_');
     $message->setData('_');
     $messagecode->setData('_');
     $taskexecuted->setData('_');
     // set their respective values
     $vErrors = $view->getErrors();
     if (empty($vErrors)) {
         // retrieve messagecode and task
         if (empty($view->messagecode)) {
             $view->assign('messagecode', 'COM_SH404SEF_OPERATION_COMPLETED');
         }
         if (empty($view->taskexecuted)) {
             $view->assign('taskexecuted', '');
         }
         // either a success or a redirect
         if (empty($view->redirectTo)) {
             // no error
             $status->setData('success');
             $msg = empty($view->message) ? JText16::_('COM_SH404SEF_OPERATION_COMPLETED') : $view->message;
             $message->setData('<ul>' . $msg . '</ul>');
             $messagecode->setData($view->messagecode);
         } else {
             $status->setData('redirect');
             $glue = strpos($view->redirectTo, '?') === false ? '?' : '&';
             $message->setData($view->redirectTo . $glue . 'sh404sefMsg=' . $view->messagecode);
         }
         $taskexecuted->setData($view->taskexecuted);
     } else {
         $status->setData('failure');
         $messageTxt = '';
         foreach ($vErrors as $error) {
             $messageTxt .= '<li>' . $error . '</li>';
         }
         $message->setData('<ul>' . $messageTxt . '</ul>');
     }
     // output resulting text, no need for a layout file I think
     $output = '<?xml version="1.0" encoding="UTF-8" ?>' . "\n";
     $output .= $xml->toString();
     return $output;
 }