first commit
This commit is contained in:
47
components/com_wrapper/src/Controller/DisplayController.php
Normal file
47
components/com_wrapper/src/Controller/DisplayController.php
Normal file
@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Site
|
||||
* @subpackage com_wrapper
|
||||
*
|
||||
* @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\Wrapper\Site\Controller;
|
||||
|
||||
use Joomla\CMS\MVC\Controller\BaseController;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Content Component Controller
|
||||
*
|
||||
* @since 1.5
|
||||
*/
|
||||
class DisplayController extends BaseController
|
||||
{
|
||||
/**
|
||||
* Method to display a view.
|
||||
*
|
||||
* @param boolean $cachable If true, the view output will be cached
|
||||
* @param array $urlparams An array of safe URL parameters and their variable types.
|
||||
* @see \Joomla\CMS\Filter\InputFilter::clean() for valid values.
|
||||
*
|
||||
* @return BaseController This object to support chaining.
|
||||
*
|
||||
* @since 1.5
|
||||
*/
|
||||
public function display($cachable = false, $urlparams = [])
|
||||
{
|
||||
$cachable = true;
|
||||
|
||||
// Set the default view name and format from the Request.
|
||||
$vName = $this->input->get('view', 'wrapper');
|
||||
$this->input->set('view', $vName);
|
||||
|
||||
return parent::display($cachable, ['Itemid' => 'INT']);
|
||||
}
|
||||
}
|
||||
57
components/com_wrapper/src/Service/Router.php
Normal file
57
components/com_wrapper/src/Service/Router.php
Normal file
@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Site
|
||||
* @subpackage com_wrapper
|
||||
*
|
||||
* @copyright (C) 2008 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace Joomla\Component\Wrapper\Site\Service;
|
||||
|
||||
use Joomla\CMS\Component\Router\RouterBase;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Routing class from com_wrapper
|
||||
*
|
||||
* @since 3.3
|
||||
*/
|
||||
class Router extends RouterBase
|
||||
{
|
||||
/**
|
||||
* Build the route for the com_wrapper component
|
||||
*
|
||||
* @param array $query An array of URL arguments
|
||||
*
|
||||
* @return array The URL arguments to use to assemble the subsequent URL.
|
||||
*
|
||||
* @since 3.3
|
||||
*/
|
||||
public function build(&$query)
|
||||
{
|
||||
if (isset($query['view'])) {
|
||||
unset($query['view']);
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse the segments of a URL.
|
||||
*
|
||||
* @param array $segments The segments of the URL to parse.
|
||||
*
|
||||
* @return array The URL attributes to be used by the application.
|
||||
*
|
||||
* @since 3.3
|
||||
*/
|
||||
public function parse(&$segments)
|
||||
{
|
||||
return ['view' => 'wrapper'];
|
||||
}
|
||||
}
|
||||
115
components/com_wrapper/src/View/Wrapper/HtmlView.php
Normal file
115
components/com_wrapper/src/View/Wrapper/HtmlView.php
Normal file
@ -0,0 +1,115 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Site
|
||||
* @subpackage com_wrapper
|
||||
*
|
||||
* @copyright (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace Joomla\Component\Wrapper\Site\View\Wrapper;
|
||||
|
||||
use Joomla\CMS\Factory;
|
||||
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
|
||||
use Joomla\CMS\Uri\Uri;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Wrapper view class.
|
||||
*
|
||||
* @since 1.5
|
||||
*/
|
||||
class HtmlView extends BaseHtmlView
|
||||
{
|
||||
/**
|
||||
* 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;
|
||||
|
||||
/**
|
||||
* The page parameters
|
||||
*
|
||||
* @var \stdClass
|
||||
* @since 4.0.0
|
||||
*/
|
||||
protected $wrapper = 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 1.5
|
||||
*/
|
||||
public function display($tpl = null)
|
||||
{
|
||||
$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'));
|
||||
}
|
||||
|
||||
$wrapper = new \stdClass();
|
||||
|
||||
// Auto height control
|
||||
if ($params->def('height_auto')) {
|
||||
$wrapper->load = 'onload="iFrameHeight(this)"';
|
||||
} else {
|
||||
$wrapper->load = '';
|
||||
}
|
||||
|
||||
$url = $params->def('url', '');
|
||||
|
||||
if ($params->def('add_scheme', 1)) {
|
||||
// Adds 'http://' or 'https://' if none is set
|
||||
if (strpos($url, '//') === 0) {
|
||||
// URL without scheme in component. Prepend current scheme.
|
||||
$wrapper->url = Uri::getInstance()->toString(['scheme']) . substr($url, 2);
|
||||
} elseif (strpos($url, '/') === 0) {
|
||||
// Relative URL in component. Use scheme + host + port.
|
||||
$wrapper->url = Uri::getInstance()->toString(['scheme', 'host', 'port']) . $url;
|
||||
} elseif (strpos($url, 'http://') !== 0 && strpos($url, 'https://') !== 0) {
|
||||
// URL doesn't start with either 'http://' or 'https://'. Add current scheme.
|
||||
$wrapper->url = Uri::getInstance()->toString(['scheme']) . $url;
|
||||
} else {
|
||||
// URL starts with either 'http://' or 'https://'. Do not change it.
|
||||
$wrapper->url = $url;
|
||||
}
|
||||
} else {
|
||||
$wrapper->url = $url;
|
||||
}
|
||||
|
||||
// Escape strings for HTML output
|
||||
$this->pageclass_sfx = htmlspecialchars($params->get('pageclass_sfx', ''));
|
||||
$this->params = &$params;
|
||||
$this->wrapper = &$wrapper;
|
||||
|
||||
parent::display($tpl);
|
||||
}
|
||||
}
|
||||
46
components/com_wrapper/tmpl/wrapper/default.php
Normal file
46
components/com_wrapper/tmpl/wrapper/default.php
Normal file
@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Site
|
||||
* @subpackage com_wrapper
|
||||
*
|
||||
* @copyright (C) 2006 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;
|
||||
|
||||
$this->document->getWebAssetManager()
|
||||
->registerAndUseScript('com_wrapper.iframe', 'com_wrapper/iframe-height.min.js', [], ['defer' => true]);
|
||||
|
||||
?>
|
||||
<div class="com-wrapper contentpane">
|
||||
<?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; ?>
|
||||
<iframe <?php echo $this->wrapper->load; ?>
|
||||
id="blockrandom"
|
||||
name="iframe"
|
||||
src="<?php echo $this->escape($this->wrapper->url); ?>"
|
||||
width="<?php echo $this->escape($this->params->get('width')); ?>"
|
||||
height="<?php echo $this->escape($this->params->get('height')); ?>"
|
||||
loading="<?php echo $this->params->get('lazyloading', 'lazy'); ?>"
|
||||
<?php if ($this->escape($this->params->get('page_heading'))) : ?>
|
||||
title="<?php echo $this->escape($this->params->get('page_heading')); ?>"
|
||||
<?php else : ?>
|
||||
title="<?php echo $this->escape($this->params->get('page_title')); ?>"
|
||||
<?php endif; ?>
|
||||
class="com-wrapper__iframe wrapper <?php echo $this->pageclass_sfx; ?>">
|
||||
<?php echo Text::_('COM_WRAPPER_NO_IFRAMES'); ?>
|
||||
</iframe>
|
||||
</div>
|
||||
80
components/com_wrapper/tmpl/wrapper/default.xml
Normal file
80
components/com_wrapper/tmpl/wrapper/default.xml
Normal file
@ -0,0 +1,80 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<metadata>
|
||||
<layout title="COM_WRAPPER_WRAPPER_VIEW_DEFAULT_TITLE" option="COM_WRAPPER_WRAPPER_VIEW_DEFAULT_OPTION">
|
||||
<help
|
||||
key="Menu_Item:_Iframe_Wrapper"
|
||||
/>
|
||||
<message>
|
||||
<![CDATA[COM_WRAPPER_WRAPPER_VIEW_DEFAULT_DESC]]>
|
||||
</message>
|
||||
</layout>
|
||||
|
||||
<!-- Add fields to the parameters object for the layout. -->
|
||||
<fields name="params">
|
||||
<fieldset name="request" label="COM_MENUS_BASIC_FIELDSET_LABEL">
|
||||
|
||||
<field
|
||||
name="url"
|
||||
type="url"
|
||||
label="COM_WRAPPER_FIELD_URL_LABEL"
|
||||
required="true"
|
||||
/>
|
||||
</fieldset>
|
||||
<!-- Add fields to the parameters object for the layout. -->
|
||||
|
||||
<!-- Scroll. -->
|
||||
<fieldset name="basic" label="COM_WRAPPER_FIELD_LABEL_SCROLLBARSPARAMS">
|
||||
<field
|
||||
name="width"
|
||||
type="text"
|
||||
label="JGLOBAL_WIDTH"
|
||||
default="100%"
|
||||
/>
|
||||
|
||||
<field
|
||||
name="height"
|
||||
type="number"
|
||||
label="COM_WRAPPER_FIELD_HEIGHT_LABEL"
|
||||
default="500"
|
||||
/>
|
||||
</fieldset>
|
||||
|
||||
<!-- Advanced options. -->
|
||||
<fieldset name="advanced">
|
||||
<field
|
||||
name="height_auto"
|
||||
type="radio"
|
||||
label="COM_WRAPPER_FIELD_HEIGHTAUTO_LABEL"
|
||||
default="0"
|
||||
layout="joomla.form.field.radio.switcher"
|
||||
>
|
||||
<option value="0">JNO</option>
|
||||
<option value="1">JYES</option>
|
||||
</field>
|
||||
|
||||
<field
|
||||
name="add_scheme"
|
||||
type="radio"
|
||||
label="COM_WRAPPER_FIELD_ADD_LABEL"
|
||||
description="COM_WRAPPER_FIELD_ADD_DESC"
|
||||
layout="joomla.form.field.radio.switcher"
|
||||
default="1"
|
||||
>
|
||||
<option value="0">JNO</option>
|
||||
<option value="1">JYES</option>
|
||||
</field>
|
||||
|
||||
<field
|
||||
name="lazyloading"
|
||||
type="radio"
|
||||
label="COM_WRAPPER_FIELD_LAZYLOADING_LABEL"
|
||||
default="lazy"
|
||||
layout="joomla.form.field.radio.switcher"
|
||||
validate="options"
|
||||
>
|
||||
<option value="eager">JNO</option>
|
||||
<option value="lazy">JYES</option>
|
||||
</field>
|
||||
</fieldset>
|
||||
</fields>
|
||||
</metadata>
|
||||
Reference in New Issue
Block a user