Файловый менеджер - Редактировать - /home/harasnat/www/mf/com_config.tar
Назад
tmpl/templates/default_options.php 0000644 00000001742 15062104312 0013424 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\Language\Text; $fieldSets = $this->form->getFieldsets('params'); ?> <legend><?php echo Text::_('COM_CONFIG_TEMPLATE_SETTINGS'); ?></legend> <?php // Search for com_config field set if (!empty($fieldSets['com_config'])) { echo $this->form->renderFieldset('com_config'); } else { // Fall-back to display all in params foreach ($fieldSets as $name => $fieldSet) { $label = !empty($fieldSet->label) ? $fieldSet->label : 'COM_CONFIG_' . $name . '_FIELDSET_LABEL'; if (isset($fieldSet->description) && trim($fieldSet->description)) { echo '<p class="tip">' . $this->escape(Text::_($fieldSet->description)) . '</p>'; } echo $this->form->renderFieldset($name); } } tmpl/templates/default.xml 0000644 00000000726 15062104312 0011663 0 ustar 00 <?xml version="1.0" encoding="UTF-8"?> <metadata> <layout title="COM_CONFIG_TEMPLATES_VIEW_DEFAULT_TITLE" option="COM_CONFIG_TEMPLATES_VIEW_DEFAULT_OPTION"> <help key = "Menu_Item:_Display_Template_Options" /> <message> <![CDATA[COM_CONFIG_TEMPLATES_VIEW_DEFAULT_DESC]]> </message> </layout> <fields name="request"> <fieldset name="request" > <field name="controller" type="hidden" default="" /> </fieldset> </fields> </metadata> tmpl/templates/default.php 0000644 00000003647 15062104312 0011657 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\Factory; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\Router\Route; $user = Factory::getUser(); /** @var Joomla\CMS\WebAsset\WebAssetManager $wa */ $wa = $this->document->getWebAssetManager(); $wa->useScript('keepalive') ->useScript('form.validate') ->useScript('com_config.templates'); ?> <?php if ($this->params->get('show_page_heading')) : ?> <div class="page-header"> <h1> <?php if ($this->escape($this->params->get('page_heading'))) : ?> <?php echo $this->escape($this->params->get('page_heading')); ?> <?php else : ?> <?php echo $this->escape($this->params->get('page_title')); ?> <?php endif; ?> </h1> </div> <?php endif; ?> <form action="<?php echo Route::_('index.php?option=com_config'); ?>" method="post" name="adminForm" id="templates-form" class="form-validate"> <div id="page-site" class="tab-pane active"> <div class="row"> <div class="col-md-12"> <?php echo $this->loadTemplate('options'); ?> </div> </div> </div> <input type="hidden" name="task" value=""> <?php echo HTMLHelper::_('form.token'); ?> <div class="mb-2"> <button type="button" class="btn btn-primary " data-submit-task="templates.apply"> <span class="icon-check text-white" aria-hidden="true"></span> <?php echo Text::_('JSAVE') ?> </button> <button type="button" class="btn btn-danger" data-submit-task="templates.cancel"> <span class="icon-times text-white" aria-hidden="true"></span> <?php echo Text::_('JCANCEL') ?> </button> </div> </form> tmpl/modules/default.php 0000644 00000016753 15062104312 0011333 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2014 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\Factory; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Multilanguage; use Joomla\CMS\Language\Text; use Joomla\CMS\Router\Route; HTMLHelper::_('behavior.combobox'); /** @var Joomla\CMS\WebAsset\WebAssetManager $wa */ $wa = $this->document->getWebAssetManager(); $wa->useScript('keepalive') ->useScript('form.validate') ->useScript('com_config.modules'); $editorText = false; $moduleXml = JPATH_SITE . '/modules/' . $this->item['module'] . '/' . $this->item['module'] . '.xml'; if (is_file($moduleXml)) { $xml = simplexml_load_file($moduleXml); if (isset($xml->customContent)) { $editorText = true; } } // If multi-language site, make language read-only if (Multilanguage::isEnabled()) { $this->form->setFieldAttribute('language', 'readonly', 'true'); } ?> <form action="<?php echo Route::_('index.php?option=com_config'); ?>" method="post" name="adminForm" id="modules-form" class="form-validate"> <div class="row"> <div class="col-md-12"> <legend><?php echo Text::_('COM_CONFIG_MODULES_SETTINGS_TITLE'); ?></legend> <div> <?php echo Text::_('COM_CONFIG_MODULES_MODULE_NAME'); ?> <span class="badge bg-secondary"><?php echo $this->item['title']; ?></span> <?php echo Text::_('COM_CONFIG_MODULES_MODULE_TYPE'); ?> <span class="badge bg-secondary"><?php echo $this->item['module']; ?></span> </div> <hr> <div class="row mb-4"> <div class="col-md-12"> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('title'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('title'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('showtitle'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('showtitle'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('position'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('position'); ?> </div> </div> <hr> <?php if (Factory::getUser()->authorise('core.edit.state', 'com_modules.module.' . $this->item['id'])) : ?> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('published'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('published'); ?> </div> </div> <?php endif ?> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('publish_up'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('publish_up'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('publish_down'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('publish_down'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('access'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('access'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('ordering'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('ordering'); ?> </div> </div> <?php if (Multilanguage::isEnabled()) : ?> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('language'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('language'); ?> </div> </div> <?php endif; ?> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('note'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('note'); ?> </div> </div> <hr> <div id="options"> <?php echo $this->loadTemplate('options'); ?> </div> <?php if ($editorText) : ?> <div class="mt-2" id="custom"> <?php echo $this->form->getInput('content'); ?> </div> <?php endif; ?> </div> <input type="hidden" name="id" value="<?php echo $this->item['id']; ?>"> <input type="hidden" name="return" value="<?php echo Factory::getApplication()->getInput()->get('return', null, 'base64'); ?>"> <input type="hidden" name="task" value=""> <?php echo HTMLHelper::_('form.token'); ?> </div> <div class="mb-2"> <button type="button" class="btn btn-primary" data-submit-task="modules.apply"> <span class="icon-check" aria-hidden="true"></span> <?php echo Text::_('JAPPLY'); ?> </button> <button type="button" class="btn btn-primary" data-submit-task="modules.save"> <span class="icon-check" aria-hidden="true"></span> <?php echo Text::_('JSAVE'); ?> </button> <button type="button" class="btn btn-danger" data-submit-task="modules.cancel"> <span class="icon-times" aria-hidden="true"></span> <?php echo Text::_('JCANCEL'); ?> </button> </div> </div> </div> </form> tmpl/modules/default_options.php 0000644 00000003146 15062104312 0013076 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2014 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Multilanguage; use Joomla\CMS\Language\Text; $fieldSets = $this->form->getFieldsets('params'); echo HTMLHelper::_('bootstrap.startAccordion', 'collapseTypes'); $i = 0; foreach ($fieldSets as $name => $fieldSet) : $label = !empty($fieldSet->label) ? $fieldSet->label : 'COM_MODULES_' . strtoupper($name) . '_FIELDSET_LABEL'; $class = isset($fieldSet->class) && !empty($fieldSet->class) ? $fieldSet->class : ''; if (isset($fieldSet->description) && trim($fieldSet->description)) : echo '<p class="tip">' . $this->escape(Text::_($fieldSet->description)) . '</p>'; endif; ?> <?php echo HTMLHelper::_('bootstrap.addSlide', 'collapseTypes', Text::_($label), 'collapse' . ($i++)); ?> <ul class="nav flex-column"> <?php foreach ($this->form->getFieldset($name) as $field) : ?> <li> <?php // If multi-language site, make menu-type selection read-only ?> <?php if (Multilanguage::isEnabled() && $this->item['module'] === 'mod_menu' && $field->getAttribute('name') === 'menutype') : ?> <?php $field->readonly = true; ?> <?php endif; ?> <?php echo $field->renderField(); ?> </li> <?php endforeach; ?> </ul> <?php echo HTMLHelper::_('bootstrap.endSlide'); ?> <?php endforeach; ?> <?php echo HTMLHelper::_('bootstrap.endAccordion'); ?> tmpl/config/default_metadata.php 0000644 00000001560 15062104312 0012756 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\Language\Text; ?> <fieldset> <legend><?php echo Text::_('COM_CONFIG_METADATA_SETTINGS'); ?></legend> <?php foreach ($this->form->getFieldset('metadata') as $field) : ?> <div class="mb-3"> <?php echo $field->label; ?> <?php echo $field->input; ?> <?php if ($field->description) : ?> <div class="form-text hide-aware-inline-help d-none" id="<?php echo $field->id ?>-desc"> <?php echo Text::_($field->description) ?> </div> <?php endif; ?> </div> <?php endforeach; ?> </fieldset> tmpl/config/default.xml 0000644 00000000716 15062104312 0011131 0 ustar 00 <?xml version="1.0" encoding="UTF-8"?> <metadata> <layout title="COM_CONFIG_CONFIG_VIEW_DEFAULT_TITLE" option="COM_CONFIG_CONFIG_VIEW_DEFAULT_OPTION"> <help key = "Menu_Item:_Site_Configuration_Options" /> <message> <![CDATA[COM_CONFIG_CONFIG_VIEW_DEFAULT_DESC]]> </message> </layout> <fields name="request"> <fieldset name="request"> <field name="controller" type="hidden" default="" /> </fieldset> </fields> </metadata> tmpl/config/default.php 0000644 00000004101 15062104312 0011110 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\Router\Route; /** @var Joomla\CMS\WebAsset\WebAssetManager $wa */ $wa = $this->document->getWebAssetManager(); $wa->useScript('keepalive') ->useScript('form.validate') ->useScript('com_config.config') ->useScript('inlinehelp'); ?> <?php if ($this->params->get('show_page_heading')) : ?> <div class="page-header"> <h1> <?php if ($this->escape($this->params->get('page_heading'))) : ?> <?php echo $this->escape($this->params->get('page_heading')); ?> <?php else : ?> <?php echo $this->escape($this->params->get('page_title')); ?> <?php endif; ?> </h1> </div> <?php endif; ?> <form action="<?php echo Route::_('index.php?option=com_config'); ?>" id="application-form" method="post" name="adminForm" class="form-validate"> <div class="mb-2 d-flex"> <button type="button" class="btn btn-sm btn-outline-info button-inlinehelp ms-auto"> <span class="fa fa-question-circle" aria-hidden="true"></span> <?php echo Text::_('JINLINEHELP') ?> </button> </div> <?php echo $this->loadTemplate('site'); ?> <?php echo $this->loadTemplate('seo'); ?> <?php echo $this->loadTemplate('metadata'); ?> <input type="hidden" name="task" value=""> <?php echo HTMLHelper::_('form.token'); ?> <div class="mb-2"> <button type="button" class="btn btn-primary" data-submit-task="config.apply"> <span class="icon-check" aria-hidden="true"></span> <?php echo Text::_('JSAVE') ?> </button> <button type="button" class="btn btn-danger" data-submit-task="config.cancel"> <span class="icon-times" aria-hidden="true"></span> <?php echo Text::_('JCANCEL') ?> </button> </div> </form> tmpl/config/default_seo.php 0000644 00000001546 15062104312 0011770 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\Language\Text; ?> <fieldset> <legend><?php echo Text::_('COM_CONFIG_SEO_SETTINGS'); ?></legend> <?php foreach ($this->form->getFieldset('seo') as $field) : ?> <div class="mb-3"> <?php echo $field->label; ?> <?php echo $field->input; ?> <?php if ($field->description) : ?> <div class="form-text hide-aware-inline-help d-none" id="<?php echo $field->id ?>-desc"> <?php echo Text::_($field->description) ?> </div> <?php endif; ?> </div> <?php endforeach; ?> </fieldset> tmpl/config/default_site.php 0000644 00000001550 15062104312 0012141 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\Language\Text; ?> <fieldset> <legend><?php echo Text::_('COM_CONFIG_SITE_SETTINGS'); ?></legend> <?php foreach ($this->form->getFieldset('site') as $field) : ?> <div class="mb-3"> <?php echo $field->label; ?> <?php echo $field->input; ?> <?php if ($field->description) : ?> <div class="form-text hide-aware-inline-help d-none" id="<?php echo $field->id ?>-desc"> <?php echo Text::_($field->description) ?> </div> <?php endif; ?> </div> <?php endforeach; ?> </fieldset> src/Controller/ConfigController.php 0000644 00000010546 15062104312 0013440 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2017 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Config\Site\Controller; use Joomla\CMS\Application\CMSApplication; use Joomla\CMS\Client\ClientHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\Controller\BaseController; use Joomla\CMS\MVC\Factory\MVCFactoryInterface; use Joomla\CMS\Router\Route; use Joomla\CMS\Uri\Uri; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Component Controller * * @since 1.5 */ class ConfigController extends BaseController { /** * @param array $config An optional associative array of configuration settings. * Recognized key values include 'name', 'default_task', 'model_path', and * 'view_path' (this list is not meant to be comprehensive). * @param MVCFactoryInterface|null $factory The factory. * @param CMSApplication|null $app The JApplication for the dispatcher * @param \Joomla\CMS\Input\Input|null $input The Input object for the request * * @since 1.6 */ public function __construct($config = [], MVCFactoryInterface $factory = null, $app = null, $input = null) { parent::__construct($config, $factory, $app, $input); $this->registerTask('apply', 'save'); } /** * Method to handle cancel * * @return void * * @since 3.2 */ public function cancel() { // Redirect back to home(base) page $this->setRedirect(Uri::base()); } /** * Method to save global configuration. * * @return boolean True on success. * * @since 3.2 */ public function save() { // Check for request forgeries. $this->checkToken(); // Check if the user is authorized to do this. if (!$this->app->getIdentity()->authorise('core.admin')) { $this->app->enqueueMessage(Text::_('JERROR_ALERTNOAUTHOR')); $this->app->redirect('index.php'); } // Set FTP credentials, if given. ClientHelper::setCredentialsFromRequest('ftp'); $model = $this->getModel(); $form = $model->getForm(); $data = $this->app->getInput()->post->get('jform', [], 'array'); // Validate the posted data. $return = $model->validate($form, $data); // Check for validation errors. if ($return === false) { /* * The validate method enqueued all messages for us, so we just need to redirect back. */ // Save the data in the session. $this->app->setUserState('com_config.config.global.data', $data); // Redirect back to the edit screen. $this->app->redirect(Route::_('index.php?option=com_config&view=config', false)); } // Attempt to save the configuration. $data = $return; // Access backend com_config $saveClass = $this->factory->createController('Application', 'Administrator', [], $this->app, $this->input); // Get a document object $document = $this->app->getDocument(); // Set backend required params $document->setType('json'); // Execute backend controller $return = $saveClass->save(); // Reset params back after requesting from service $document->setType('html'); // Check the return value. if ($return === false) { /* * The save method enqueued all messages for us, so we just need to redirect back. */ // Save the data in the session. $this->app->setUserState('com_config.config.global.data', $data); // Save failed, go back to the screen and display a notice. $this->app->redirect(Route::_('index.php?option=com_config&view=config', false)); } // Redirect back to com_config display $this->app->enqueueMessage(Text::_('COM_CONFIG_SAVE_SUCCESS')); $this->app->redirect(Route::_('index.php?option=com_config&view=config', false)); return true; } } src/Controller/TemplatesController.php 0000644 00000007251 15062104312 0014170 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2017 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Config\Site\Controller; use Joomla\CMS\Application\CMSApplication; use Joomla\CMS\Client\ClientHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\Controller\BaseController; use Joomla\CMS\MVC\Factory\MVCFactoryInterface; use Joomla\CMS\Router\Route; use Joomla\CMS\Uri\Uri; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Component Controller * * @since 1.5 */ class TemplatesController extends BaseController { /** * @param array $config An optional associative array of configuration settings. * Recognized key values include 'name', 'default_task', 'model_path', and * 'view_path' (this list is not meant to be comprehensive). * @param MVCFactoryInterface|null $factory The factory. * @param CMSApplication|null $app The Application for the dispatcher * @param \Joomla\CMS\Input\Input|null $input The Input object for the request * * @since 1.6 */ public function __construct($config = [], MVCFactoryInterface $factory = null, $app = null, $input = null) { parent::__construct($config, $factory, $app, $input); // Apply, Save & New, and Save As copy should be standard on forms. $this->registerTask('apply', 'save'); } /** * Method to handle cancel * * @return void * * @since 3.2 */ public function cancel() { // Redirect back to home(base) page $this->setRedirect(Uri::base()); } /** * Method to save global configuration. * * @return boolean True on success. * * @since 3.2 */ public function save() { // Check for request forgeries. $this->checkToken(); // Check if the user is authorized to do this. if (!$this->app->getIdentity()->authorise('core.admin')) { $this->setRedirect('index.php', Text::_('JERROR_ALERTNOAUTHOR')); return false; } // Set FTP credentials, if given. ClientHelper::setCredentialsFromRequest('ftp'); $app = $this->app; // Access backend com_templates $controllerClass = $app->bootComponent('com_templates') ->getMVCFactory()->createController('Style', 'Administrator', [], $app, $app->getInput()); // Get a document object $document = $app->getDocument(); // Set backend required params $document->setType('json'); $this->input->set('id', $app->getTemplate(true)->id); // Execute backend controller $return = $controllerClass->save(); // Reset params back after requesting from service $document->setType('html'); // Check the return value. if ($return === false) { // Save failed, go back to the screen and display a notice. $this->setMessage(Text::sprintf('JERROR_SAVE_FAILED'), 'error'); $this->setRedirect(Route::_('index.php?option=com_config&view=templates', false)); return false; } // Set the success message. $this->setMessage(Text::_('COM_CONFIG_SAVE_SUCCESS')); // Redirect back to com_config display $this->setRedirect(Route::_('index.php?option=com_config&view=templates', false)); return true; } } src/Controller/ModulesController.php 0000644 00000013047 15062104312 0013642 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2017 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Config\Site\Controller; use Joomla\CMS\Application\AdministratorApplication; use Joomla\CMS\Application\CMSApplication; use Joomla\CMS\Client\ClientHelper; use Joomla\CMS\Factory; use Joomla\CMS\Form\Form; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\Controller\BaseController; use Joomla\CMS\MVC\Factory\MVCFactoryInterface; use Joomla\CMS\Router\Route; use Joomla\CMS\Uri\Uri; use Joomla\Component\Modules\Administrator\Controller\ModuleController; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Component Controller * * @since 1.5 */ class ModulesController extends BaseController { /** * @param array $config An optional associative array of configuration settings. * Recognized key values include 'name', 'default_task', 'model_path', and * 'view_path' (this list is not meant to be comprehensive). * @param MVCFactoryInterface|null $factory The factory. * @param CMSApplication|null $app The Application for the dispatcher * @param \Joomla\CMS\Input\Input|null $input The Input object for the request * * @since 1.6 */ public function __construct($config = [], MVCFactoryInterface $factory = null, $app = null, $input = null) { parent::__construct($config, $factory, $app, $input); $this->registerTask('apply', 'save'); } /** * Method to handle cancel * * @return void * * @since 3.2 */ public function cancel() { // Redirect back to previous page $this->setRedirect($this->getReturnUrl()); } /** * Method to save module editing. * * @return void * * @since 3.2 */ public function save() { // Check for request forgeries. $this->checkToken(); // Check if the user is authorized to do this. $user = $this->app->getIdentity(); if (!$user->authorise('module.edit.frontend', 'com_modules.module.' . $this->input->get('id'))) { $this->app->enqueueMessage(Text::_('JERROR_ALERTNOAUTHOR'), 'error'); $this->app->redirect('index.php'); } // Set FTP credentials, if given. ClientHelper::setCredentialsFromRequest('ftp'); // Get submitted module id $moduleId = '&id=' . $this->input->getInt('id'); // Get returnUri $returnUri = $this->input->post->get('return', null, 'base64'); $redirect = ''; if (!empty($returnUri)) { $redirect = '&return=' . $returnUri; } /** @var AdministratorApplication $app */ $app = Factory::getContainer()->get(AdministratorApplication::class); // Reset Uri cache. Uri::reset(); // Get a document object $document = $this->app->getDocument(); // Load application dependencies. $app->loadLanguage($this->app->getLanguage()); $app->loadDocument($document); $app->loadIdentity($user); /** @var \Joomla\CMS\Dispatcher\ComponentDispatcher $dispatcher */ $dispatcher = $app->bootComponent('com_modules')->getDispatcher($app); /** @var ModuleController $controllerClass */ $controllerClass = $dispatcher->getController('Module'); // Set backend required params $document->setType('json'); // Execute backend controller Form::addFormPath(JPATH_ADMINISTRATOR . '/components/com_modules/forms'); $return = $controllerClass->save(); // Reset params back after requesting from service $document->setType('html'); // Check the return value. if ($return === false) { // Save the data in the session. $data = $this->input->post->get('jform', [], 'array'); $this->app->setUserState('com_config.modules.global.data', $data); // Save failed, go back to the screen and display a notice. $this->app->enqueueMessage(Text::_('JERROR_SAVE_FAILED')); $this->app->redirect(Route::_('index.php?option=com_config&view=modules' . $moduleId . $redirect, false)); } // Redirect back to com_config display $this->app->enqueueMessage(Text::_('COM_CONFIG_MODULES_SAVE_SUCCESS'), 'success'); // Set the redirect based on the task. switch ($this->input->getCmd('task')) { case 'apply': $this->app->redirect(Route::_('index.php?option=com_config&view=modules' . $moduleId . $redirect, false)); break; case 'save': default: $this->setRedirect($this->getReturnUrl()); break; } } /** * Method to get redirect URL after saving or cancel editing a module from frontend * * @return string * * @since 4.4.4 */ private function getReturnUrl(): string { if ($return = $this->input->post->get('return', '', 'BASE64')) { $return = base64_decode(urldecode($return)); // Only redirect to if it is an internal URL if (Uri::isInternal($return)) { return $return; } } return Uri::base(); } } src/Controller/DisplayController.php 0000644 00000001424 15062104312 0013633 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Config\Site\Controller; use Joomla\CMS\MVC\Controller\BaseController; use Joomla\CMS\Uri\Uri; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Component Controller * * @since 1.5 */ class DisplayController extends BaseController { /** * Method to handle cancel * * @return void * * @since 3.2 */ public function cancel() { // Redirect back to home(base) page $this->setRedirect(Uri::base()); } } src/Dispatcher/Dispatcher.php 0000644 00000002645 15062104312 0012221 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2017 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Config\Site\Dispatcher; use Joomla\CMS\Access\Exception\NotAllowed; use Joomla\CMS\Dispatcher\ComponentDispatcher; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * ComponentDispatcher class for com_config * * @since 4.0.0 */ class Dispatcher extends ComponentDispatcher { /** * Method to check component access permission * * @since 4.0.0 * * @return void * * @throws \Exception|NotAllowed */ protected function checkAccess() { parent::checkAccess(); $task = $this->input->getCmd('task', 'display'); $view = $this->input->get('view'); $user = $this->app->getIdentity(); if (substr($task, 0, 8) === 'modules.' || $view === 'modules') { if (!$user->authorise('module.edit.frontend', 'com_modules.module.' . $this->input->get('id'))) { throw new NotAllowed($this->app->getLanguage()->_('JERROR_ALERTNOAUTHOR'), 403); } } elseif (!$user->authorise('core.admin')) { throw new NotAllowed($this->app->getLanguage()->_('JERROR_ALERTNOAUTHOR'), 403); } } } src/Model/FormModel.php 0000644 00000020307 15062104312 0010764 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Config\Site\Model; use Joomla\CMS\Factory; use Joomla\CMS\Form\Form; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\Model\FormModel as BaseForm; use Joomla\CMS\Plugin\PluginHelper; use Joomla\Utilities\ArrayHelper; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Prototype form model. * * @see JForm * @see \Joomla\CMS\Form\FormField * @see \Joomla\CMS\Form\FormRule * @since 3.2 */ abstract class FormModel extends BaseForm { /** * Array of form objects. * * @var array * @since 3.2 */ protected $forms = []; /** * Method to checkin a row. * * @param integer $pk The numeric id of the primary key. * * @return boolean False on failure or error, true otherwise. * * @since 3.2 * @throws \RuntimeException */ public function checkin($pk = null) { // Only attempt to check the row in if it exists. if ($pk) { $user = $this->getCurrentUser(); // Get an instance of the row to checkin. $table = $this->getTable(); if (!$table->load($pk)) { throw new \RuntimeException($table->getError()); } // Check if this is the user has previously checked out the row. if (!is_null($table->checked_out) && $table->checked_out != $user->get('id') && !$user->authorise('core.admin', 'com_checkin')) { throw new \RuntimeException($table->getError()); } // Attempt to check the row in. if (!$table->checkIn($pk)) { throw new \RuntimeException($table->getError()); } } return true; } /** * Method to check-out a row for editing. * * @param integer $pk The numeric id of the primary key. * * @return boolean False on failure or error, true otherwise. * * @since 3.2 */ public function checkout($pk = null) { // Only attempt to check the row in if it exists. if ($pk) { $user = $this->getCurrentUser(); // Get an instance of the row to checkout. $table = $this->getTable(); if (!$table->load($pk)) { throw new \RuntimeException($table->getError()); } // Check if this is the user having previously checked out the row. if (!is_null($table->checked_out) && $table->checked_out != $user->get('id')) { throw new \RuntimeException(Text::_('JLIB_APPLICATION_ERROR_CHECKOUT_USER_MISMATCH')); } // Attempt to check the row out. if (!$table->checkOut($user->get('id'), $pk)) { throw new \RuntimeException($table->getError()); } } return true; } /** * Method to get a form object. * * @param string $name The name of the form. * @param string $source The form source. Can be XML string if file flag is set to false. * @param array $options Optional array of options for the form creation. * @param boolean $clear Optional argument to force load a new form. * @param string $xpath An optional xpath to search for the fields. * * @return mixed JForm object on success, False on error. * * @see JForm * @since 3.2 */ protected function loadForm($name, $source = null, $options = [], $clear = false, $xpath = false) { // Handle the optional arguments. $options['control'] = ArrayHelper::getValue($options, 'control', false); // Create a signature hash. $hash = sha1($source . serialize($options)); // Check if we can use a previously loaded form. if (isset($this->_forms[$hash]) && !$clear) { return $this->_forms[$hash]; } // Register the paths for the form. Form::addFormPath(JPATH_SITE . '/components/com_config/forms'); Form::addFormPath(JPATH_ADMINISTRATOR . '/components/com_config/forms'); try { // Get the form. $form = Form::getInstance($name, $source, $options, false, $xpath); if (isset($options['load_data']) && $options['load_data']) { // Get the data for the form. $data = $this->loadFormData(); } else { $data = []; } // Allow for additional modification of the form, and events to be triggered. // We pass the data because plugins may require it. $this->preprocessForm($form, $data); // Load the data into the form after the plugins have operated. $form->bind($data); } catch (\Exception $e) { Factory::getApplication()->enqueueMessage($e->getMessage()); return false; } // Store the form for later. $this->_forms[$hash] = $form; return $form; } /** * Method to get the data that should be injected in the form. * * @return array The default data is an empty array. * * @since 3.2 */ protected function loadFormData() { return []; } /** * Method to allow derived classes to preprocess the data. * * @param string $context The context identifier. * @param mixed &$data The data to be processed. It gets altered directly. * @param string $group The name of the plugin group to import (defaults to "content"). * * @return void * * @since 3.2 */ protected function preprocessData($context, &$data, $group = 'content') { // Get the dispatcher and load the users plugins. PluginHelper::importPlugin('content'); // Trigger the data preparation event. Factory::getApplication()->triggerEvent('onContentPrepareData', [$context, $data]); } /** * Method to allow derived classes to preprocess the form. * * @param Form $form A Form object. * @param mixed $data The data expected for the form. * @param string $group The name of the plugin group to import (defaults to "content"). * * @return void * * @see \Joomla\CMS\Form\FormField * @since 3.2 * @throws \Exception if there is an error in the form event. */ protected function preprocessForm(Form $form, $data, $group = 'content') { // Import the appropriate plugin group. PluginHelper::importPlugin($group); // Trigger the form preparation event. Factory::getApplication()->triggerEvent('onContentPrepareForm', [$form, $data]); } /** * Method to validate the form data. * * @param Form $form The form to validate against. * @param array $data The data to validate. * @param string $group The name of the field group to validate. * * @return mixed Array of filtered data if valid, false otherwise. * * @see \Joomla\CMS\Form\FormRule * @see JFilterInput * @since 3.2 */ public function validate($form, $data, $group = null) { // Filter and validate the form data. $data = $form->filter($data); $return = $form->validate($data, $group); // Check for an error. if ($return instanceof \Exception) { Factory::getApplication()->enqueueMessage($return->getMessage(), 'error'); return false; } // Check the validation results. if ($return === false) { // Get the validation messages from the form. foreach ($form->getErrors() as $message) { if ($message instanceof \Exception) { $message = $message->getMessage(); } Factory::getApplication()->enqueueMessage($message, 'error'); } return false; } return $data; } } src/Model/TemplatesModel.php 0000644 00000006746 15062104312 0012032 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Config\Site\Model; use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Factory; use Joomla\CMS\Filesystem\Path; use Joomla\CMS\Form\Form; use Joomla\CMS\Language\Text; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Template style model. * * @since 3.2 */ class TemplatesModel extends FormModel { /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @return null * * @since 3.2 */ protected function populateState() { parent::populateState(); $this->setState('params', ComponentHelper::getParams('com_templates')); } /** * Method to get the record form. * * @param array $data An optional array of data for the form to interrogate. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return Form|bool A JForm object on success, false on failure * * @since 3.2 */ public function getForm($data = [], $loadData = true) { try { // Get the form. $form = $this->loadForm('com_config.templates', 'templates', ['load_data' => $loadData]); $data = []; $this->preprocessForm($form, $data); // Load the data into the form $form->bind($data); } catch (\Exception $e) { Factory::getApplication()->enqueueMessage($e->getMessage()); return false; } if (empty($form)) { return false; } return $form; } /** * Method to preprocess the form * * @param Form $form A form object. * @param mixed $data The data expected for the form. * @param string $group Plugin group to load * * @return void * * @since 3.2 * @throws \Exception if there is an error in the form event. */ protected function preprocessForm(Form $form, $data, $group = 'content') { $lang = Factory::getLanguage(); $template = Factory::getApplication()->getTemplate(); // Load the core and/or local language file(s). $lang->load('tpl_' . $template, JPATH_BASE) || $lang->load('tpl_' . $template, JPATH_BASE . '/templates/' . $template); // Look for com_config.xml, which contains fields to display $formFile = Path::clean(JPATH_BASE . '/templates/' . $template . '/com_config.xml'); if (!file_exists($formFile)) { // If com_config.xml not found, fall back to templateDetails.xml $formFile = Path::clean(JPATH_BASE . '/templates/' . $template . '/templateDetails.xml'); } // Get the template form. if (file_exists($formFile) && !$form->loadFile($formFile, false, '//config')) { throw new \Exception(Text::_('JERROR_LOADFILE_FAILED')); } // Attempt to load the xml file. if (!$xml = simplexml_load_file($formFile)) { throw new \Exception(Text::_('JERROR_LOADFILE_FAILED')); } // Trigger the default form events. parent::preprocessForm($form, $data, $group); } } src/Model/ModulesModel.php 0000644 00000017072 15062104312 0011476 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2014 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Config\Site\Model; use Joomla\CMS\Factory; use Joomla\CMS\Filesystem\Path; use Joomla\CMS\Form\Form; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Text; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Config Module model. * * @since 3.2 */ class ModulesModel extends FormModel { /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @return void * * @since 3.2 */ protected function populateState() { $app = Factory::getApplication(); // Load the User state. $pk = $app->getInput()->getInt('id'); $this->setState('module.id', $pk); } /** * Method to get the record form. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return Form A Form object on success, false on failure * * @since 3.2 */ public function getForm($data = [], $loadData = true) { // Get the form. $form = $this->loadForm('com_config.modules', 'modules', ['control' => 'jform', 'load_data' => $loadData]); if (empty($form)) { return false; } return $form; } /** * Method to preprocess the form * * @param Form $form A form object. * @param mixed $data The data expected for the form. * @param string $group The name of the plugin group to import (defaults to "content"). * * @return void * * @since 3.2 * @throws \Exception if there is an error loading the form. */ protected function preprocessForm(Form $form, $data, $group = 'content') { $lang = Factory::getLanguage(); $module = $this->getState()->get('module.name'); $basePath = JPATH_BASE; $formFile = Path::clean($basePath . '/modules/' . $module . '/' . $module . '.xml'); // Load the core and/or local language file(s). $lang->load($module, $basePath) || $lang->load($module, $basePath . '/modules/' . $module); if (file_exists($formFile)) { // Get the module form. if (!$form->loadFile($formFile, false, '//config')) { throw new \Exception(Text::_('JERROR_LOADFILE_FAILED')); } // Attempt to load the xml file. if (!$xml = simplexml_load_file($formFile)) { throw new \Exception(Text::_('JERROR_LOADFILE_FAILED')); } } // Load the default advanced params Form::addFormPath(JPATH_BASE . '/components/com_config/model/form'); $form->loadFile('modules_advanced', false); // Trigger the default form events. parent::preprocessForm($form, $data, $group); } /** * Method to get list of module positions in current template * * @return array * * @since 3.2 */ public function getPositions() { $lang = Factory::getLanguage(); $templateName = Factory::getApplication()->getTemplate(); // Load templateDetails.xml file $path = Path::clean(JPATH_BASE . '/templates/' . $templateName . '/templateDetails.xml'); $currentTemplatePositions = []; if (file_exists($path)) { $xml = simplexml_load_file($path); if (isset($xml->positions[0])) { // Load language files $lang->load('tpl_' . $templateName . '.sys', JPATH_BASE) || $lang->load('tpl_' . $templateName . '.sys', JPATH_BASE . '/templates/' . $templateName); foreach ($xml->positions[0] as $position) { $value = (string) $position; $text = preg_replace('/[^a-zA-Z0-9_\-]/', '_', 'TPL_' . strtoupper($templateName) . '_POSITION_' . strtoupper($value)); // Construct list of positions $currentTemplatePositions[] = self::createOption($value, Text::_($text) . ' [' . $value . ']'); } } } $templateGroups = []; // Add an empty value to be able to deselect a module position $option = self::createOption(); $templateGroups[''] = self::createOptionGroup('', [$option]); $templateGroups[$templateName] = self::createOptionGroup($templateName, $currentTemplatePositions); // Add custom position to options $customGroupText = Text::_('COM_MODULES_CUSTOM_POSITION'); $editPositions = true; $customPositions = self::getActivePositions(0, $editPositions); $templateGroups[$customGroupText] = self::createOptionGroup($customGroupText, $customPositions); return $templateGroups; } /** * Get a list of modules positions * * @param integer $clientId Client ID * @param boolean $editPositions Allow to edit the positions * * @return array A list of positions * * @since 3.6.3 */ public static function getActivePositions($clientId, $editPositions = false) { $db = Factory::getDbo(); $query = $db->getQuery(true) ->select('DISTINCT position') ->from($db->quoteName('#__modules')) ->where($db->quoteName('client_id') . ' = ' . (int) $clientId) ->order($db->quoteName('position')); $db->setQuery($query); try { $positions = $db->loadColumn(); $positions = is_array($positions) ? $positions : []; } catch (\RuntimeException $e) { Factory::getApplication()->enqueueMessage($e->getMessage(), 'error'); return; } // Build the list $options = []; foreach ($positions as $position) { if (!$position && !$editPositions) { $options[] = HTMLHelper::_('select.option', 'none', ':: ' . Text::_('JNONE') . ' ::'); } else { $options[] = HTMLHelper::_('select.option', $position, $position); } } return $options; } /** * Create and return a new Option * * @param string $value The option value [optional] * @param string $text The option text [optional] * * @return object The option as an object (stdClass instance) * * @since 3.6.3 */ private static function createOption($value = '', $text = '') { if (empty($text)) { $text = $value; } $option = new \stdClass(); $option->value = $value; $option->text = $text; return $option; } /** * Create and return a new Option Group * * @param string $label Value and label for group [optional] * @param array $options Array of options to insert into group [optional] * * @return array Return the new group as an array * * @since 3.6.3 */ private static function createOptionGroup($label = '', $options = []) { $group = []; $group['value'] = $label; $group['text'] = $label; $group['items'] = $options; return $group; } } src/Model/ConfigModel.php 0000644 00000002123 15062104312 0011262 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Config\Site\Model; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Model for the global configuration * * @since 3.2 */ class ConfigModel extends FormModel { /** * Method to get a form object. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return mixed A JForm object on success, false on failure * * @since 3.2 */ public function getForm($data = [], $loadData = true) { // Get the form. $form = $this->loadForm('com_config.config', 'config', ['control' => 'jform', 'load_data' => $loadData]); if (empty($form)) { return false; } return $form; } } src/Service/Router.php 0000644 00000002633 15062104312 0010722 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2009 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Config\Site\Service; use Joomla\CMS\Application\SiteApplication; use Joomla\CMS\Component\Router\RouterView; use Joomla\CMS\Component\Router\RouterViewConfiguration; use Joomla\CMS\Component\Router\Rules\MenuRules; use Joomla\CMS\Component\Router\Rules\NomenuRules; use Joomla\CMS\Component\Router\Rules\StandardRules; use Joomla\CMS\Menu\AbstractMenu; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Routing class from com_config * * @since 4.0.0 */ class Router extends RouterView { /** * Config Component router constructor * * @param SiteApplication $app The application object * @param AbstractMenu $menu The menu object to work with */ public function __construct(SiteApplication $app, AbstractMenu $menu) { $this->registerView(new RouterViewConfiguration('config')); $this->registerView(new RouterViewConfiguration('templates')); parent::__construct($app, $menu); $this->attachRule(new MenuRules($this)); $this->attachRule(new StandardRules($this)); $this->attachRule(new NomenuRules($this)); } } src/View/Templates/HtmlView.php 0000644 00000007255 15062104312 0012456 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2017 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Config\Site\View\Templates; use Joomla\CMS\Factory; use Joomla\CMS\Form\Form; use Joomla\CMS\MVC\Factory\MVCFactory; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\Component\Config\Administrator\Controller\RequestController; use Joomla\Component\Templates\Administrator\View\Style\JsonView; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * View to edit a template style. * * @since 3.2 */ class HtmlView extends BaseHtmlView { /** * The data to be displayed in the form * * @var array * * @since 3.2 */ public $item; /** * The form object * * @var Form * * @since 3.2 */ public $form; /** * Is the current user a super administrator? * * @var boolean * * @since 3.2 */ protected $userIsSuperAdmin; /** * The page class suffix * * @var string * * @since 4.0.0 */ protected $pageclass_sfx = ''; /** * The page parameters * * @var \Joomla\Registry\Registry|null * * @since 4.0.0 */ protected $params = null; /** * Method to render the view. * * @return void * * @since 3.2 */ public function display($tpl = null) { $user = $this->getCurrentUser(); $this->userIsSuperAdmin = $user->authorise('core.admin'); $app = Factory::getApplication(); $app->getInput()->set('id', $app->getTemplate(true)->id); /** @var MVCFactory $factory */ $factory = $app->bootComponent('com_templates')->getMVCFactory(); /** @var JsonView $view */ $view = $factory->createView('Style', 'Administrator', 'Json'); $view->setModel($factory->createModel('Style', 'Administrator'), true); $view->setLanguage($app->getLanguage()); $view->document = $this->getDocument(); $json = $view->display(); // Execute backend controller $serviceData = json_decode($json, true); // Access backend com_config $requestController = new RequestController(); // Execute backend controller $configData = json_decode($requestController->getJson(), true); $data = array_merge($configData, $serviceData); /** @var Form $form */ $form = $this->getForm(); if ($form) { $form->bind($data); } $this->form = $form; $this->data = $serviceData; $this->_prepareDocument(); parent::display($tpl); } /** * Prepares the document. * * @return void * * @since 4.0.0 */ protected function _prepareDocument() { $params = Factory::getApplication()->getParams(); // Because the application sets a default page title, we need to get it // right from the menu item itself $this->setDocumentTitle($params->get('page_title', '')); if ($params->get('menu-meta_description')) { $this->getDocument()->setDescription($params->get('menu-meta_description')); } if ($params->get('robots')) { $this->getDocument()->setMetaData('robots', $params->get('robots')); } // Escape strings for HTML output $this->pageclass_sfx = htmlspecialchars($params->get('pageclass_sfx', '')); $this->params = &$params; } } src/View/Modules/HtmlView.php 0000644 00000004677 15062104312 0012135 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2017 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Config\Site\View\Modules; use Joomla\CMS\Factory; use Joomla\CMS\Form\Form; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * View to edit a module. * * @since 3.2 */ class HtmlView extends BaseHtmlView { /** * The module to be rendered * * @var array * * @since 3.2 */ public $item; /** * The form object * * @var Form * * @since 3.2 */ public $form; /** * Execute and display a template script. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void * * @since 3.2 */ public function display($tpl = null) { $lang = Factory::getApplication()->getLanguage(); $lang->load('', JPATH_ADMINISTRATOR, $lang->getTag()); $lang->load('com_modules', JPATH_ADMINISTRATOR, $lang->getTag()); // @todo Move and clean up $module = (new \Joomla\Component\Modules\Administrator\Model\ModuleModel())->getItem(Factory::getApplication()->getInput()->getInt('id')); $moduleData = $module->getProperties(); unset($moduleData['xml']); /** @var \Joomla\Component\Config\Site\Model\ModulesModel $model */ $model = $this->getModel(); // Need to add module name to the state of model $model->getState()->set('module.name', $moduleData['module']); /** @var Form form */ $this->form = $this->get('form'); $this->positions = $this->get('positions'); $this->item = $moduleData; if ($this->form) { $this->form->bind($moduleData); } $this->_prepareDocument(); parent::display($tpl); } /** * Prepares the document. * * @return void * * @since 4.0.0 */ protected function _prepareDocument() { // There is no menu item for this so we have to use the title from the component $this->setDocumentTitle(Text::_('COM_CONFIG_MODULES_SETTINGS_TITLE')); } } src/View/Config/HtmlView.php 0000644 00000005773 15062104312 0011730 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2017 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Config\Site\View\Config; use Joomla\CMS\Factory; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\Component\Config\Administrator\Controller\RequestController; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * View for the global configuration * * @since 3.2 */ class HtmlView extends BaseHtmlView { /** * The form object * * @var \Joomla\CMS\Form\Form * * @since 3.2 */ public $form; /** * The data to be displayed in the form * * @var array * * @since 3.2 */ public $data; /** * Is the current user a super administrator? * * @var boolean * * @since 3.2 */ protected $userIsSuperAdmin; /** * The page class suffix * * @var string * * @since 4.0.0 */ protected $pageclass_sfx = ''; /** * The page parameters * * @var \Joomla\Registry\Registry|null * * @since 4.0.0 */ protected $params = null; /** * Execute and display a template script. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void * * @since 3.2 */ public function display($tpl = null) { $user = $this->getCurrentUser(); $this->userIsSuperAdmin = $user->authorise('core.admin'); // Access backend com_config $requestController = new RequestController(); // Execute backend controller $serviceData = json_decode($requestController->getJson(), true); $form = $this->getForm(); if ($form) { $form->bind($serviceData); } $this->form = $form; $this->data = $serviceData; $this->_prepareDocument(); parent::display($tpl); } /** * Prepares the document. * * @return void * * @since 4.0.0 */ protected function _prepareDocument() { $params = Factory::getApplication()->getParams(); // Because the application sets a default page title, we need to get it // right from the menu item itself $this->setDocumentTitle($params->get('page_title', '')); if ($params->get('menu-meta_description')) { $this->getDocument()->setDescription($params->get('menu-meta_description')); } if ($params->get('robots')) { $this->getDocument()->setMetaData('robots', $params->get('robots')); } // Escape strings for HTML output $this->pageclass_sfx = htmlspecialchars($params->get('pageclass_sfx', '')); $this->params = &$params; } } forms/config.xml 0000644 00000004573 15062104312 0007664 0 ustar 00 <?xml version="1.0" encoding="UTF-8"?> <form> <fieldset name="metadata" label="COM_CONFIG_METADATA_SETTINGS"> <field name="MetaDesc" type="textarea" label="COM_CONFIG_FIELD_METADESC_LABEL" filter="string" cols="60" rows="3" maxlength="160" charcounter="true" /> <field name="MetaRights" type="textarea" label="JFIELD_META_RIGHTS_LABEL" description="JFIELD_META_RIGHTS_DESC" filter="string" cols="60" rows="2" /> </fieldset> <fieldset name="seo" label="CONFIG_SEO_SETTINGS_LABEL"> <field name="sef" type="radio" label="COM_CONFIG_FIELD_SEF_URL_LABEL" description="COM_CONFIG_FIELD_SEF_URL_DESC" default="1" layout="joomla.form.field.radio.switcher" filter="integer" > <option value="0">JNO</option> <option value="1">JYES</option> </field> <field name="sitename_pagetitles" type="list" label="COM_CONFIG_FIELD_SITENAME_PAGETITLES_LABEL" default="0" filter="integer" validate="options" > <option value="2">COM_CONFIG_FIELD_VALUE_AFTER</option> <option value="1">COM_CONFIG_FIELD_VALUE_BEFORE</option> <option value="0">JNO</option> </field> </fieldset> <fieldset name="site" label="CONFIG_SITE_SETTINGS_LABEL"> <field name="sitename" type="text" label="COM_CONFIG_FIELD_SITE_NAME_LABEL" required="true" filter="string" size="50" /> <field name="offline" type="radio" label="COM_CONFIG_FIELD_SITE_OFFLINE_LABEL" default="0" layout="joomla.form.field.radio.switcher" filter="integer" > <option value="0">JNO</option> <option value="1">JYES</option> </field> <field name="access" type="accesslevel" label="COM_CONFIG_FIELD_DEFAULT_ACCESS_LEVEL_LABEL" description="COM_CONFIG_FIELD_DEFAULT_ACCESS_LEVEL_DESC" default="1" filter="UINT" validate="options" /> <field name="list_limit" type="list" label="COM_CONFIG_FIELD_DEFAULT_LIST_LIMIT_LABEL" default="20" filter="integer" validate="options" > <option value="5">J5</option> <option value="10">J10</option> <option value="15">J15</option> <option value="20">J20</option> <option value="25">J25</option> <option value="30">J30</option> <option value="50">J50</option> <option value="100">J100</option> </field> </fieldset> <fieldset> <field name="asset_id" type="hidden" /> </fieldset> </form> forms/templates.xml 0000644 00000001241 15062104312 0010402 0 ustar 00 <?xml version="1.0" encoding="UTF-8"?> <form> <fieldset> <field name="id" type="number" label="JGLOBAL_FIELD_ID_LABEL" default="0" readonly="true" class="readonly" /> <field name="template" type="text" label="COM_TEMPLATES_FIELD_TEMPLATE_LABEL" class="readonly" size="30" readonly="true" /> <field name="client_id" type="hidden" label="COM_TEMPLATES_FIELD_CLIENT_LABEL" class="readonly" default="0" readonly="true" /> <field name="title" type="text" label="COM_TEMPLATES_FIELD_TITLE_LABEL" size="50" required="true" /> <field name="assigned" type="hidden" /> </fieldset> </form> forms/modules_advanced.xml 0000644 00000001512 15062104312 0011702 0 ustar 00 <?xml version="1.0" encoding="UTF-8"?> <form> <fields name="params"> <fieldset name="advanced"> <field name="module_tag" type="moduletag" label="COM_MODULES_FIELD_MODULE_TAG_LABEL" default="div" validate="options" /> <field name="bootstrap_size" type="integer" label="COM_MODULES_FIELD_BOOTSTRAP_SIZE_LABEL" first="0" last="12" step="1" /> <field name="header_tag" type="headertag" label="COM_MODULES_FIELD_HEADER_TAG_LABEL" default="h3" validate="options" /> <field name="header_class" type="textarea" label="COM_MODULES_FIELD_HEADER_CLASS_LABEL" rows="3" validate="CssIdentifier" /> <field name="style" type="chromestyle" label="COM_MODULES_FIELD_MODULE_STYLE_LABEL" /> </fieldset> </fields> </form> forms/modules.xml 0000644 00000004577 15062104312 0010073 0 ustar 00 <?xml version="1.0" encoding="UTF-8"?> <form> <fieldset> <field name="id" type="number" label="JGLOBAL_FIELD_ID_LABEL" default="0" readonly="true" /> <field name="title" type="text" label="JGLOBAL_TITLE" maxlength="100" required="true" size="35" /> <field name="note" type="text" label="COM_MODULES_FIELD_NOTE_LABEL" maxlength="255" size="35" /> <field name="module" type="hidden" label="COM_MODULES_FIELD_MODULE_LABEL" readonly="readonly" size="20" /> <field name="showtitle" type="radio" label="COM_MODULES_FIELD_SHOWTITLE_LABEL" layout="joomla.form.field.radio.switcher" default="1" size="1" > <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="published" type="list" label="JSTATUS" class="form-select-color-state" default="1" size="1" validate="options" > <option value="1">JPUBLISHED</option> <option value="0">JUNPUBLISHED</option> <option value="-2">JTRASHED</option> </field> <field name="publish_up" type="calendar" label="COM_MODULES_FIELD_PUBLISH_UP_LABEL" filter="user_utc" translateformat="true" showtime="true" size="22" /> <field name="publish_down" type="calendar" label="COM_MODULES_FIELD_PUBLISH_DOWN_LABEL" filter="user_utc" translateformat="true" showtime="true" size="22" /> <field name="client_id" type="hidden" label="COM_MODULES_FIELD_CLIENT_ID_LABEL" readonly="true" size="1" /> <field name="position" type="ModulesPositionedit" label="COM_MODULES_FIELD_POSITION_LABEL" addfieldprefix="Joomla\Component\Modules\Administrator\Field" default="" maxlength="50" client="site" /> <field name="access" type="accesslevel" label="JFIELD_ACCESS_LABEL" filter="UINT" validate="options" /> <field name="ordering" type="moduleorder" label="JFIELD_ORDERING_LABEL" /> <field name="content" type="editor" label="COM_MODULES_FIELD_CONTENT_LABEL" buttons="true" filter="JComponentHelper::filterText" hide="readmore,pagebreak" /> <field name="language" type="contentlanguage" label="JFIELD_LANGUAGE_LABEL" > <option value="*">JALL</option> </field> <field name="assignment" type="hidden" /> <field name="assigned" type="hidden" /> </fieldset> </form>
| ver. 1.4 |
Github
|
.
| PHP 8.1.33 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка