forked from wikimedia/mediawiki-extensions-ForcePreview
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathForcePreview.php
More file actions
81 lines (71 loc) · 2.22 KB
/
ForcePreview.php
File metadata and controls
81 lines (71 loc) · 2.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
/**
* ForcePreview extension -- forces unprivileged users to preview before saving
*
* @file
* @ingroup Extensions
* @author Ryan Schmidt
* @license MIT
* @link https://www.mediawiki.org/wiki/Extension:ForcePreview Documentation
*/
use MediaWiki\MediaWikiServices;
class ForcePreview {
public static function onEditPageBeforeEditButtons( $editpage, &$buttons, &$tabindex ) {
$user = $editpage->getContext()->getUser();
$isInitialLoad = !$editpage->preview && empty( $editpage->save );
if (
!$user->isAllowed( 'forcepreviewexempt' ) &&
$isInitialLoad &&
isset( $buttons['preview'] )
) {
$buttons['save']->setDisabled( true );
$buttons['save']->setLabel( wfMessage( 'forcepreview', $buttons['save']->getLabel() )->text() );
$buttons['save']->setFlags( [ 'primary' => false ] );
$buttons['preview']->setFlags( [ 'primary' => true, 'progressive' => true ] );
}
return true;
}
public static function onBeforePageDisplay( &$out, &$skin ) {
$user = $out->getUser();
$request = $out->getRequest();
$services = MediaWikiServices::getInstance();
if ( method_exists( $services, 'getUserOptionsLookup' ) ) {
// MW 1.35+
if (
$user->isAllowed( 'forcepreviewexempt' )
|| !$services->getUserOptionsLookup()->getBoolOption( $user, 'uselivepreview' )
|| !in_array( $request->getVal( 'action' ), [ 'edit', 'submit' ] )
) {
return true;
}
} else {
if (
$user->isAllowed( 'forcepreviewexempt' )
|| !$services->getUserOptionsLookup()->getBoolOption( $user, 'uselivepreview' )
|| !in_array( $request->getVal( 'action' ), [ 'edit', 'submit' ] )
) {
return true;
}
}
$title = $out->getTitle();
if ( class_exists( 'MediaWiki\Permissions\PermissionManager' ) ) {
if ( !$services
->getPermissionManager()
->userCan( 'edit', $user, $title )
) {
return true;
}
} else {
if ( !$title->userCan( 'edit' ) ) {
return true;
}
}
$out->addModules( 'ext.ForcePreview.livePreview' );
return true;
}
public static function onResourceLoaderGetConfigVars( &$vars ) {
$config = MediaWikiServices::getInstance()->getMainConfig();
$vars['wgEditSubmitButtonLabelPublish'] = $config->get( 'EditSubmitButtonLabelPublish' );
return true;
}
}