123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- <?php
- /**
- * Base code for web installer pages.
- *
- * This program 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 2 of the License, or
- * (at your option) any later version.
- *
- * This program 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 this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Deployment
- */
- /**
- * Abstract class to define pages for the web installer.
- *
- * @ingroup Deployment
- * @since 1.17
- */
- abstract class WebInstallerPage {
- /**
- * The WebInstaller object this WebInstallerPage belongs to.
- *
- * @var WebInstaller
- */
- public $parent;
- /**
- * @return string
- */
- abstract public function execute();
- /**
- * @param WebInstaller $parent
- */
- public function __construct( WebInstaller $parent ) {
- $this->parent = $parent;
- }
- /**
- * Is this a slow-running page in the installer? If so, WebInstaller will
- * set_time_limit(0) before calling execute(). Right now this only applies
- * to Install and Upgrade pages
- *
- * @return bool Always false in this default implementation.
- */
- public function isSlow() {
- return false;
- }
- /**
- * @param string $html
- */
- public function addHTML( $html ) {
- $this->parent->output->addHTML( $html );
- }
- public function startForm() {
- $this->addHTML(
- "<div class=\"config-section\">\n" .
- Html::openElement(
- 'form',
- [
- 'method' => 'post',
- 'action' => $this->parent->getUrl( [ 'page' => $this->getName() ] )
- ]
- ) . "\n"
- );
- }
- /**
- * @param string|bool $continue
- * @param string|bool $back
- */
- public function endForm( $continue = 'continue', $back = 'back' ) {
- $s = "<div class=\"config-submit\">\n";
- $id = $this->getId();
- if ( $id === false ) {
- $s .= Html::hidden( 'lastPage', $this->parent->request->getVal( 'lastPage' ) );
- }
- if ( $continue ) {
- // Fake submit button for enter keypress (T28267)
- // Messages: config-continue, config-restart, config-regenerate
- $s .= Xml::submitButton(
- wfMessage( "config-$continue" )->text(),
- [
- 'name' => "enter-$continue",
- 'style' => 'width:0;border:0;height:0;padding:0'
- ]
- ) . "\n";
- }
- if ( $back ) {
- // Message: config-back
- $s .= Xml::submitButton(
- wfMessage( "config-$back" )->text(),
- [
- 'name' => "submit-$back",
- 'tabindex' => $this->parent->nextTabIndex()
- ]
- ) . "\n";
- }
- if ( $continue ) {
- // Messages: config-continue, config-restart, config-regenerate
- $s .= Xml::submitButton(
- wfMessage( "config-$continue" )->text(),
- [
- 'name' => "submit-$continue",
- 'tabindex' => $this->parent->nextTabIndex(),
- ]
- ) . "\n";
- }
- $s .= "</div></form></div>\n";
- $this->addHTML( $s );
- }
- /**
- * @return string
- */
- public function getName() {
- return str_replace( 'WebInstaller', '', static::class );
- }
- /**
- * @return string
- */
- protected function getId() {
- return array_search( $this->getName(), $this->parent->pageSequence );
- }
- /**
- * @param string $var
- * @param mixed|null $default
- *
- * @return mixed
- */
- public function getVar( $var, $default = null ) {
- return $this->parent->getVar( $var, $default );
- }
- /**
- * @param string $name
- * @param mixed $value
- */
- public function setVar( $name, $value ) {
- $this->parent->setVar( $name, $value );
- }
- /**
- * Get the starting tags of a fieldset.
- *
- * @param string $legend Message name
- *
- * @return string
- */
- protected function getFieldsetStart( $legend ) {
- return "\n<fieldset><legend>" . wfMessage( $legend )->escaped() . "</legend>\n";
- }
- /**
- * Get the end tag of a fieldset.
- *
- * @return string
- */
- protected function getFieldsetEnd() {
- return "</fieldset>\n";
- }
- /**
- * Opens a textarea used to display the progress of a long operation
- */
- protected function startLiveBox() {
- $this->addHTML(
- '<div id="config-spinner" style="display:none;">' .
- '<img src="images/ajax-loader.gif" /></div>' .
- '<script>jQuery( "#config-spinner" ).show();</script>' .
- '<div id="config-live-log">' .
- '<textarea name="LiveLog" rows="10" cols="30" readonly="readonly">'
- );
- $this->parent->output->flush();
- }
- /**
- * Opposite to WebInstallerPage::startLiveBox
- */
- protected function endLiveBox() {
- $this->addHTML( '</textarea></div>
- <script>jQuery( "#config-spinner" ).hide()</script>' );
- $this->parent->output->flush();
- }
- }
|