AutorÃa | Ultima modificación | Ver Log |
<?php// This file is part of Moodle - http://moodle.org///// Moodle is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// Moodle is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>.namespace core\output\actions;use core\exception\coding_exception;use moodle_url;/*** Component action for a popup window.** @copyright 2009 Nicolas Connault* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later* @since Moodle 2.0* @package core* @category output*/class popup_action extends component_action {/*** @var string The JS function to call for the popup*/public $jsfunction = 'openpopup';/*** @var array An array of parameters that will be passed to the openpopup JS function*/public $params = ['height' => 400,'width' => 500,'top' => 0,'left' => 0,'menubar' => false,'location' => false,'scrollbars' => true,'resizable' => true,'toolbar' => true,'status' => true,'directories' => false,'fullscreen' => false,'dependent' => true,];/*** Constructor** @param string $event DOM event* @param moodle_url|string $url A moodle_url object, required if no jsfunction is given* @param string $name The JS function to call for the popup (default 'popup')* @param array $params An array of popup parameters*/public function __construct($event, $url, $name = 'popup', $params = []) {global $CFG;$url = new moodle_url($url);if ($name) {$checkname = $name;if (($checkname = preg_replace("/\s/", '_', $checkname)) != $name) {throw new coding_exception("The {$name} of a popup window shouldn't contain spaces - string modified. {$name} changed to {$checkname}",);$name = $checkname;}} else {$name = 'popup';}foreach ($this->params as $var => $val) {if (array_key_exists($var, $params)) {$this->params[$var] = $params[$var];}}$attributes = ['url' => $url->out(false), 'name' => $name, 'options' => $this->get_js_options($params)];if (!empty($params['fullscreen'])) {$attributes['fullscreen'] = 1;}parent::__construct($event, $this->jsfunction, $attributes);}/*** Returns a string of concatenated option->value pairs used by JS to call the popup window,* based on this object's variables** @return string String of option->value pairs for JS popup function.*/public function get_js_options() {$jsoptions = '';foreach ($this->params as $var => $val) {if (is_string($val) || is_int($val)) {$jsoptions .= "$var=$val,";} else if (is_bool($val)) {$jsoptions .= ($val) ? "$var," : "$var=0,";}}$jsoptions = substr($jsoptions, 0, strlen($jsoptions) - 1);return $jsoptions;}}// Alias this class to the old name.// This file will be autoloaded by the legacyclasses autoload system.// In future all uses of this class will be corrected and the legacy references will be removed.class_alias(popup_action::class, \popup_action::class);