2016-10-25 20:44:26 +00:00
|
|
|
<?php
|
2018-03-28 19:47:04 +00:00
|
|
|
/**
|
|
|
|
* CollabPad special page
|
|
|
|
*
|
|
|
|
* @file
|
|
|
|
* @ingroup Extensions
|
2020-01-08 17:13:04 +00:00
|
|
|
* @copyright 2011-2020 VisualEditor Team and others; see AUTHORS.txt
|
2018-03-28 19:47:04 +00:00
|
|
|
* @license MIT
|
|
|
|
*/
|
|
|
|
|
2022-03-13 01:38:23 +00:00
|
|
|
namespace MediaWiki\Extension\VisualEditor;
|
|
|
|
|
2024-06-10 20:35:51 +00:00
|
|
|
use MediaWiki\SpecialPage\SpecialPage;
|
2023-08-19 04:21:24 +00:00
|
|
|
use MediaWiki\Title\Title;
|
2024-06-10 20:35:51 +00:00
|
|
|
use MediaWiki\User\User;
|
2022-03-13 01:38:23 +00:00
|
|
|
use MediaWiki\Widget\TitleInputWidget;
|
|
|
|
use OOUI\ActionFieldLayout;
|
|
|
|
use OOUI\ButtonWidget;
|
|
|
|
use OOUI\FieldsetLayout;
|
|
|
|
use OOUI\FormLayout;
|
|
|
|
use OOUI\ProgressBarWidget;
|
|
|
|
use OOUI\TextInputWidget;
|
|
|
|
|
2016-10-25 20:44:26 +00:00
|
|
|
class SpecialCollabPad extends SpecialPage {
|
|
|
|
|
2017-12-30 22:29:40 +00:00
|
|
|
public function __construct() {
|
2016-10-25 20:44:26 +00:00
|
|
|
parent::__construct( 'CollabPad' );
|
|
|
|
}
|
|
|
|
|
2018-03-28 19:47:04 +00:00
|
|
|
/**
|
|
|
|
* @inheritDoc
|
|
|
|
*/
|
2016-10-25 20:44:26 +00:00
|
|
|
protected function getGroupName() {
|
|
|
|
return 'wiki';
|
|
|
|
}
|
|
|
|
|
2018-03-28 19:47:04 +00:00
|
|
|
/**
|
|
|
|
* @inheritDoc
|
|
|
|
*/
|
2016-10-25 20:44:26 +00:00
|
|
|
public function userCanExecute( User $user ) {
|
2021-06-03 13:54:40 +00:00
|
|
|
return $this->getConfig()->get( 'VisualEditorRebaserURL' ) &&
|
|
|
|
parent::userCanExecute( $user );
|
2016-10-25 20:44:26 +00:00
|
|
|
}
|
|
|
|
|
2018-03-28 19:47:04 +00:00
|
|
|
/**
|
|
|
|
* @inheritDoc
|
|
|
|
*/
|
2018-01-02 01:00:08 +00:00
|
|
|
public function isListed() {
|
2021-06-03 13:54:40 +00:00
|
|
|
return (bool)$this->getConfig()->get( 'VisualEditorRebaserURL' );
|
2016-10-25 20:44:26 +00:00
|
|
|
}
|
|
|
|
|
2018-03-28 19:47:04 +00:00
|
|
|
/**
|
|
|
|
* @inheritDoc
|
|
|
|
*/
|
2018-05-01 09:29:51 +00:00
|
|
|
public function execute( $subPage ) {
|
2016-10-25 20:44:26 +00:00
|
|
|
$this->setHeaders();
|
|
|
|
$this->checkPermissions();
|
|
|
|
|
|
|
|
$output = $this->getOutput();
|
|
|
|
|
2018-05-01 09:29:51 +00:00
|
|
|
$output->addJsConfigVars( 'collabPadPageName', $subPage );
|
2016-10-25 20:44:26 +00:00
|
|
|
$output->addModuleStyles( 'ext.visualEditor.collabTarget.init.styles' );
|
2018-05-18 09:43:29 +00:00
|
|
|
$output->addModuleStyles( 'oojs-ui.styles.icons-editing-core' );
|
|
|
|
$output->addModuleStyles( 'oojs-ui.styles.icons-content' );
|
|
|
|
|
2016-10-25 20:44:26 +00:00
|
|
|
$output->addModules( 'ext.visualEditor.collabTarget.init' );
|
|
|
|
|
|
|
|
$output->enableOOUI();
|
2017-05-20 19:22:44 +00:00
|
|
|
|
2022-03-13 01:38:23 +00:00
|
|
|
$documentNameFieldset = new FieldsetLayout( [
|
2018-05-18 09:43:29 +00:00
|
|
|
'label' => $this->msg( 'visualeditor-rebase-client-document-create-edit' )->text(),
|
|
|
|
'icon' => 'edit',
|
|
|
|
'items' => [
|
2022-03-13 01:38:23 +00:00
|
|
|
new ActionFieldLayout(
|
|
|
|
new TextInputWidget( [
|
2018-05-18 09:43:29 +00:00
|
|
|
'classes' => [ 've-init-mw-collabTarget-nameInput' ],
|
|
|
|
'placeholder' => $this->msg( 'visualeditor-rebase-client-document-name' )->text(),
|
|
|
|
'autofocus' => true,
|
|
|
|
'infusable' => true
|
|
|
|
] ),
|
2022-03-13 01:38:23 +00:00
|
|
|
new ButtonWidget( [
|
2018-05-18 09:43:29 +00:00
|
|
|
'classes' => [ 've-init-mw-collabTarget-nameButton' ],
|
|
|
|
'label' => $this->msg( 'visualeditor-rebase-client-document-create-edit' )->text(),
|
2018-08-01 19:34:43 +00:00
|
|
|
'flags' => [ 'primary', 'progressive' ],
|
2018-05-18 09:43:29 +00:00
|
|
|
// Only enable once JS has loaded
|
|
|
|
'disabled' => true,
|
|
|
|
'infusable' => true
|
|
|
|
] ),
|
|
|
|
[
|
|
|
|
'align' => 'top',
|
|
|
|
'classes' => [ 've-init-mw-collabTarget-nameField' ],
|
|
|
|
'infusable' => true
|
|
|
|
]
|
|
|
|
)
|
|
|
|
]
|
|
|
|
] );
|
2022-03-13 01:38:23 +00:00
|
|
|
$importFieldset = new FieldsetLayout( [
|
2018-05-18 09:43:29 +00:00
|
|
|
'label' => $this->msg( 'visualeditor-rebase-client-import' )->text(),
|
|
|
|
'icon' => 'download',
|
|
|
|
'items' => [
|
2022-03-13 01:38:23 +00:00
|
|
|
new ActionFieldLayout(
|
|
|
|
new TitleInputWidget( [
|
2018-05-18 09:43:29 +00:00
|
|
|
'classes' => [ 've-init-mw-collabTarget-importInput' ],
|
|
|
|
'placeholder' => $this->msg( 'visualeditor-rebase-client-import-name' )->text(),
|
|
|
|
'infusable' => true,
|
|
|
|
] ),
|
2022-03-13 01:38:23 +00:00
|
|
|
new ButtonWidget( [
|
2018-05-18 09:43:29 +00:00
|
|
|
'classes' => [ 've-init-mw-collabTarget-importButton' ],
|
|
|
|
'label' => $this->msg( 'visualeditor-rebase-client-import' )->text(),
|
2020-07-31 15:10:05 +00:00
|
|
|
'flags' => [ 'progressive' ],
|
2018-05-18 09:43:29 +00:00
|
|
|
// Only enable once JS has loaded
|
|
|
|
'disabled' => true,
|
|
|
|
'infusable' => true
|
|
|
|
] ),
|
|
|
|
[
|
|
|
|
'align' => 'top',
|
|
|
|
'classes' => [ 've-init-mw-collabTarget-importField' ],
|
|
|
|
'infusable' => true
|
|
|
|
]
|
|
|
|
)
|
2017-05-20 19:22:44 +00:00
|
|
|
]
|
2018-05-18 09:43:29 +00:00
|
|
|
] );
|
|
|
|
|
2022-03-13 01:38:23 +00:00
|
|
|
$form = new FormLayout( [
|
2018-05-18 09:43:29 +00:00
|
|
|
'classes' => [ 've-init-mw-collabTarget-form' ],
|
|
|
|
'items' => [
|
|
|
|
$documentNameFieldset,
|
|
|
|
$importFieldset
|
|
|
|
],
|
|
|
|
'infusable' => true
|
|
|
|
] );
|
|
|
|
|
2022-03-13 01:38:23 +00:00
|
|
|
$progressBar = new ProgressBarWidget( [
|
2017-05-20 19:22:44 +00:00
|
|
|
'classes' => [ 've-init-mw-collabTarget-loading' ],
|
|
|
|
'infusable' => true
|
|
|
|
] );
|
|
|
|
|
2018-05-01 09:29:51 +00:00
|
|
|
if ( $subPage ) {
|
|
|
|
$title = Title::newFromText( $subPage );
|
2024-02-17 02:01:13 +00:00
|
|
|
$output->setPageTitleMsg( $this->msg( 'collabpad-doctitle', $title->getPrefixedText() ) );
|
2018-05-18 09:43:29 +00:00
|
|
|
$form->addClasses( [ 'oo-ui-element-hidden' ] );
|
2016-10-25 20:44:26 +00:00
|
|
|
} else {
|
|
|
|
// Scripts only, styles already added above
|
|
|
|
$output->addModules( 'ext.visualEditor.collabTarget' );
|
2017-05-20 19:22:44 +00:00
|
|
|
$progressBar->addClasses( [ 'oo-ui-element-hidden' ] );
|
2016-10-25 20:44:26 +00:00
|
|
|
}
|
2018-05-18 09:43:29 +00:00
|
|
|
$output->addHTML( $progressBar . $form );
|
2016-10-25 20:44:26 +00:00
|
|
|
}
|
|
|
|
}
|