Файловый менеджер - Редактировать - /home/lmsyaran/public_html/joomla5/administrator/components/com_fabrik/controllers/form.raw.php
Назад
<?php /** * Raw Form controller class. * * @package Joomla.Administrator * @subpackage Fabrik * @copyright Copyright (C) 2005-2020 Media A-Team, Inc. - All rights reserved. * @license GNU/GPL http://www.gnu.org/copyleft/gpl.html * @since 1.6 */ // No direct access defined('_JEXEC') or die('Restricted access'); use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\Controller\FormController; use Joomla\CMS\Session\Session; use Joomla\CMS\Factory; jimport('joomla.application.component.controllerform'); /** * Raw Form controller class. * * @package Joomla.Administrator * @subpackage Fabrik * @since 3.0 */ class FabrikAdminControllerForm extends FormController { /** * The prefix to use with controller messages. * * @var string */ protected $text_prefix = 'COM_FABRIK_FORM'; /** * Is in J content plugin * * @var bool */ public $isMambot = false; /** * Set up inline edit view * * @return void */ public function inlineedit() { $model = Factory::getApplication()->bootComponent('com_fabrik')->getMVCFactory()->createModel('FormInlineEdit', 'FabrikFEModel'); $model->render(); } /** * Save a form's page to the session table * * @return null */ public function savepage() { $input = $this->input; $model = $this->getModel('Formsession', 'FabrikFEModel'); $formModel = $this->getModel('Form', 'FabrikFEModel'); $formModel->setId($input->getInt('formid')); $model->savePage($formModel); } /** * Handle saving posted form data from the admin pages * * @return void */ public function process() { $app = Factory::getApplication(); $input = $app->input; $viewName = $input->get('view', 'form'); // For now lets route this to the html view. $view = $this->getView($viewName, 'html'); if ($model = Factory::getApplication()->bootComponent('com_fabrik')->getMVCFactory()->createModel('Form', 'FabrikFEModel')) { $view->setModel($model, true); } $model->setId($input->get('formid', 0)); $this->isMambot = $input->get('_isMambot', 0); $model->getForm(); $model->rowId = $input->get('rowid', '', 'string'); // Check for request forgeries if ($model->spoofCheck()) { Session::checkToken() or die('Invalid Token'); } $validated = $model->validate(); if (!$validated) { // If its in a module with ajax or in a package or inline edit if ($input->get('fabrik_ajax')) { if ($input->getInt('elid', 0) !== 0) { // Inline edit $eMsgs = array(); $errs = $model->getErrors(); // Only raise errors for fields that are present in the inline edit plugin $toValidate = array_keys($input->get('toValidate', array(), 'array')); foreach ($errs as $errorKey => $e) { if (in_array($errorKey, $toValidate) && count($e[0]) > 0) { array_walk_recursive($e, array('FabrikString', 'forHtml')); $eMsgs[] = count($e[0]) === 1 ? '<li>' . $e[0][0] . '</li>' : '<ul><li>' . implode('</li><li>', $e[0]) . '</ul>'; } } if (!empty($eMsgs)) { $eMsgs = '<ul>' . implode('</li><li>', $eMsgs) . '</ul>'; header('HTTP/1.1 500 ' . Text::_('COM_FABRIK_FAILED_VALIDATION') . $eMsgs); jexit(); } else { $validated = true; } } else { echo $model->getJsonErrors(); } if (!$validated) { return; } } if (!$validated) { if ($this->isMambot) { $referrer = filter_var(FArrayHelper::getValue($_SERVER, 'HTTP_REFERER', ''), FILTER_SANITIZE_URL); $input->post->set('fabrik_referrer', $referrer); /** * $$$ hugh - testing way of preserving form values after validation fails with form plugin * might as well use the 'savepage' mechanism, as it's already there! */ $this->savepage(); $this->makeRedirect($model, ''); } else { $view->display(); } return; } } // Reset errors as validate() now returns ok validations as empty arrays $model->errors = array(); $model->process(); // Check if any plugin has created a new validation error if ($model->hasErrors()) { FabrikWorker::getPluginManager()->runPlugins('onError', $model); $view->display(); return; } $listModel = $model->getListModel(); $tid = $listModel->getTable()->id; $res = $model->getRedirectURL(true, $this->isMambot); $this->baseRedirect = $res['baseRedirect']; $url = $res['url']; $msg = $model->getRedirectMessage($model); if ($input->getInt('elid', 0) !== 0) { // Inline edit show the edited element $inlineModel = $this->getModel('forminlineedit', 'FabrikFEModel'); $inlineModel->setFormModel($model); echo $inlineModel->showResults(); return; } if ($input->getInt('packageId', 0) !== 0) { $rowId = $input->getString('rowid', '', 'string'); echo json_encode(array('msg' => $msg, 'rowid' => $rowId)); return; } // @todo -should get handed off to the json view to do this if ($input->getInt('fabrik_ajax') == 1) { // $$$ hugh - adding some options for what to do with redirect when in content plugin // Should probably do this elsewhere, but for now ... $redirect_opts = array( 'msg' => $msg, 'url' => $url, 'baseRedirect' => $this->baseRedirect, 'rowid' => $input->get('rowid', '', 'string'), 'suppressMsg' => !$model->showSuccessMsg() ); if (!$this->baseRedirect && $this->isMambot) { $session = Factory::getSession(); $context = $model->getRedirectContext(); $redirect_opts['redirect_how'] = $session->get($context . 'redirect_content_how', 'popup'); $redirect_opts['width'] = (int) $session->get($context . 'redirect_content_popup_width', '300'); $redirect_opts['height'] = (int) $session->get($context . 'redirect_content_popup_height', '300'); $redirect_opts['x_offset'] = (int) $session->get($context . 'redirect_content_popup_x_offset', '0'); $redirect_opts['y_offset'] = (int) $session->get($context . 'redirect_content_popup_y_offset', '0'); $redirect_opts['title'] = $session->get($context . 'redirect_content_popup_title', ''); $redirect_opts['reset_form'] = $session->get($context . 'redirect_content_reset_form', '1') == '1'; } elseif (!$this->baseRedirect && !$this->isMambot) { /** * $$$ hugh - I think this case only happens when we're a popup form from a list * in which case I don't think "popup" is realy a valid option. Anyway, need to set something, * so for now just do the same as we do for isMambot, but default redirect_how to 'samepage' */ $session = Factory::getSession(); $context = $model->getRedirectContext(); $redirect_opts['redirect_how'] = $session->get($context . 'redirect_content_how', 'samepage'); $redirect_opts['width'] = (int) $session->get($context . 'redirect_content_popup_width', '300'); $redirect_opts['height'] = (int) $session->get($context . 'redirect_content_popup_height', '300'); $redirect_opts['x_offset'] = (int) $session->get($context . 'redirect_content_popup_x_offset', '0'); $redirect_opts['y_offset'] = (int) $session->get($context . 'redirect_content_popup_y_offset', '0'); $redirect_opts['title'] = $session->get($context . 'redirect_content_popup_title', ''); $redirect_opts['reset_form'] = $session->get($context . 'redirect_content_reset_form', '1') == '1'; } elseif ($this->isMambot) { // $$$ hugh - special case to allow custom code to specify that // the form should not be cleared after a failed AJAX submit $session = Factory::getSession(); $context = 'com_fabrik.form.' . $model->get('id') . '.redirect.'; $redirect_opts['reset_form'] = $session->get($context . 'redirect_content_reset_form', '1') == '1'; } // Let form.js handle the redirect logic echo json_encode($redirect_opts); // Stop require.js being added to output exit; } if ($input->get('format') == 'raw') { $url = 'index.php?option=com_fabrik&task=list.view&format=raw&listid=' . $tid; $this->setRedirect($url, $msg); } else { $this->setRedirect($url, $msg); } } /** * Generic function to redirect * * @param object $model Form model * @param string $msg Optional redirect message * * @deprecated - since 3.0.6 not used * @return null */ protected function makeRedirect($model, $msg = null) { $app = Factory::getApplication(); $input = $app->input; if (is_null($msg)) { $msg = Text::_('COM_FABRIK_RECORD_ADDED_UPDATED'); } if (array_key_exists('apply', $model->formData)) { $page = 'index.php?option=com_fabrik&task=form.view&formid=' . $input->getInt('formid') . '&listid=' . $input->getInt('listid') . '&rowid=' . $input->getString('rowid', '', 'string'); } else { $page = 'index.php?option=com_fabrik&task=list.view&cid[]=' . $model->getlistModel()->getTable()->id; } $this->setRedirect($page, $msg); } /** * Validate via ajax * * @return null */ public function ajax_validate() { $app = Factory::getApplication(); $input = $app->input; $model = $this->getModel('form', 'FabrikFEModel'); $model->setId($input->getInt('formid', 0)); $model->getForm(); $model->setRowId($input->get('rowid', '', 'string')); $model->validate(); $data = array('modified' => $model->modifiedValidationData); // Validating entire group when navigating form pages $data['errors'] = $model->errors; echo json_encode($data); } }
| ver. 1.4 |
Github
|
.
| PHP 8.1.33 | Генерация страницы: 0.1 |
proxy
|
phpinfo
|
Настройка