94 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /**
 | |
|  * @package     Joomla.Site
 | |
|  * @subpackage  Layout
 | |
|  *
 | |
|  * @copyright   (C) 2015 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\Layout\LayoutHelper;
 | |
| use Joomla\Utilities\ArrayHelper;
 | |
| 
 | |
| extract($displayData);
 | |
| 
 | |
| /**
 | |
|  * Layout variables
 | |
|  * -----------------
 | |
|  * @var   string  $selector  Unique DOM identifier for the modal. CSS id without #
 | |
|  * @var   array   $params    Modal parameters. Default supported parameters:
 | |
|  *                             - title        string   The modal title
 | |
|  *                             - backdrop     mixed    A boolean select if a modal-backdrop element should be included (default = true)
 | |
|  *                                                     The string 'static' includes a backdrop which doesn't close the modal on click.
 | |
|  *                             - keyboard     boolean  Closes the modal when escape key is pressed (default = true)
 | |
|  *                             - closeButton  boolean  Display modal close button (default = true)
 | |
|  *                             - animation    boolean  Fade in from the top of the page (default = true)
 | |
|  *                             - url          string   URL of a resource to be inserted as an <iframe> inside the modal body
 | |
|  *                             - height       string   height of the <iframe> containing the remote resource
 | |
|  *                             - width        string   width of the <iframe> containing the remote resource
 | |
|  *                             - bodyHeight   int      Optional height of the modal body in viewport units (vh)
 | |
|  *                             - modalWidth   int      Optional width of the modal in viewport units (vh)
 | |
|  *                             - footer       string   Optional markup for the modal footer
 | |
|  *                             - modalCss     string   Optional CSS classes of the modal
 | |
|  * @var   string  $body      Markup for the modal body. Appended after the <iframe> if the URL option is set
 | |
|  */
 | |
| 
 | |
| $modalClasses = ['modal'];
 | |
| 
 | |
| if (!isset($params['animation']) || $params['animation']) {
 | |
|     $modalClasses[] = 'fade';
 | |
| }
 | |
| 
 | |
| $modalWidth       = isset($params['modalWidth']) ? round((int) $params['modalWidth'], -1) : '';
 | |
| $modalDialogClass = 'modal-lg';
 | |
| 
 | |
| if ($modalWidth && $modalWidth > 0 && $modalWidth <= 100) {
 | |
|     $modalDialogClass .= ' jviewport-width' . $modalWidth;
 | |
| }
 | |
| 
 | |
| if (!empty($params['modalCss'])) {
 | |
|     $modalDialogClass = $params['modalCss'];
 | |
| }
 | |
| 
 | |
| $modalAttributes = [
 | |
|     'tabindex' => '-1',
 | |
|     'class'    => 'joomla-modal ' . implode(' ', $modalClasses)
 | |
| ];
 | |
| 
 | |
| if (isset($params['backdrop'])) {
 | |
|     $modalAttributes['data-bs-backdrop'] = (is_bool($params['backdrop']) ? ($params['backdrop'] ? 'true' : 'false') : $params['backdrop']);
 | |
| }
 | |
| 
 | |
| if (isset($params['keyboard'])) {
 | |
|     $modalAttributes['data-bs-keyboard'] = (is_bool($params['keyboard']) ? ($params['keyboard'] ? 'true' : 'false') : 'true');
 | |
| }
 | |
| 
 | |
| if (isset($params['url'])) {
 | |
|     $url        = 'data-url="' . $params['url'] . '"';
 | |
|     $iframeHtml = htmlspecialchars(LayoutHelper::render('libraries.html.bootstrap.modal.iframe', $displayData), ENT_COMPAT, 'UTF-8');
 | |
| }
 | |
| ?>
 | |
| <div id="<?php echo $selector; ?>" role="dialog" <?php echo ArrayHelper::toString($modalAttributes); ?> <?php echo $url ?? ''; ?> <?php echo isset($url) ? 'data-iframe="' . trim($iframeHtml) . '"' : ''; ?>>
 | |
|     <div class="modal-dialog <?php echo $modalDialogClass; ?>">
 | |
|         <div class="modal-content">
 | |
|             <?php
 | |
|                 // Header
 | |
|             if (!isset($params['closeButton']) || isset($params['title']) || $params['closeButton']) {
 | |
|                 echo LayoutHelper::render('libraries.html.bootstrap.modal.header', $displayData);
 | |
|             }
 | |
| 
 | |
|                 // Body
 | |
|                 echo LayoutHelper::render('libraries.html.bootstrap.modal.body', $displayData);
 | |
| 
 | |
|                 // Footer
 | |
|             if (isset($params['footer'])) {
 | |
|                 echo LayoutHelper::render('libraries.html.bootstrap.modal.footer', $displayData);
 | |
|             }
 | |
|             ?>
 | |
|         </div>
 | |
|     </div>
 | |
| </div>
 |