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/>.
/**
* Base class for common support when editing a multiblock subblock.
*
* @package block_multiblock
* @copyright 2019 Peter Spicer <peter.spicer@catalyst-eu.net>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace block_multiblock\form;
use block_multiblock_proxy_edit_form;
/**
* Base class for common support when editing a multiblock subblock.
*
* Note that this extends block_multiblock_proxy_edit_form - this does
* not actually exist. This is an alias to whichever edit_form that the
* subblock would instantiate, so that we can overlay our settings on
* top and not deal with the full set of block settings which won't be
* relevant.
*
* @package block_multiblock
* @copyright 2019 Peter Spicer <peter.spicer@catalyst-eu.net>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class editblock_base extends block_multiblock_proxy_edit_form {
/** @var block_base $block The block class instance that belongs to the block type being edited */
public $block;
/** @var object The page object for the page which contains the block being edited */
public $page;
/** @var object The multiblock object being edited */
public $multiblock;
/**
* Creates the instance-specific editing form.
*
* @param string|moodle_url $actionurl The form action to submit to
* @param block_base $block The block class being edited
* @param object $page The contextually appropriate $PAGE type object of the block being edited
* @param object $multiblock The multiblock object being edited (mostly for its configuration
*/
public function __construct($actionurl, $block, $page, $multiblock = null) {
$this->block = $block->blockinstance;
$this->block->instance->visible = true;
$this->block->instance->region = $this->block->instance->defaultregion;
$this->block->instance->weight = $this->block->instance->defaultweight;
$this->page = $page;
$this->multiblock = $multiblock;
if (!empty($this->block->configdata)) {
$this->block->config = @unserialize(base64_decode($this->block->configdata));
}
parent::__construct($actionurl, $this->block, $this->page);
}
/**
* Provides the save buttons for the edit-block form.
*/
public function add_save_buttons() {
// Now we add the save buttons.
$mform =& $this->_form;
$buttonarray = [];
$buttonarray[] = &$mform->createElement('submit', 'saveandreturn',
get_string('saveandreturntomanage', 'block_multiblock'));
// If the page type indicates we're not on a wildcard page, we can probably* go back there.
// Note: * for some definition of probably.
if (strpos($this->multiblock->instance->pagetypepattern, '*') === false) {
$buttonarray[] = &$mform->createElement('submit', 'saveanddisplay', get_string('savechangesanddisplay'));
}
$buttonarray[] = &$mform->createElement('cancel');
$mform->addGroup($buttonarray, 'buttonar', '', array(' '), false);
$mform->closeHeaderBefore('buttonar');
}
}