diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index 09ff8ea0a39..c582d293796 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -5284,6 +5284,7 @@ $wgDefaultUserOptions = [ 'minordefault' => 0, 'newpageshidepatrolled' => 0, 'nickname' => '', + 'pst-cssjs' => 1, 'norollbackdiff' => 0, 'numberheadings' => 0, 'previewonfirst' => 0, diff --git a/includes/content/CssContent.php b/includes/content/CssContent.php index 2d3047373bf..f0985526ef7 100644 --- a/includes/content/CssContent.php +++ b/includes/content/CssContent.php @@ -62,7 +62,13 @@ class CssContent extends TextContent { * @see TextContent::preSaveTransform */ public function preSaveTransform( Title $title, User $user, ParserOptions $popts ) { - // @todo Make pre-save transformation optional for script pages + // @todo Make pre-save transformation optional for script pages (T34858) + + if ( !$user->getBoolOption( 'pst-cssjs' ) ) { + // Allow bot users to disable the pre-save transform for CSS/JS (T236828). + $popts = clone $popts; + $popts->setPreSaveTransform( false ); + } $text = $this->getText(); $pst = MediaWikiServices::getInstance()->getParser() diff --git a/includes/content/JavaScriptContent.php b/includes/content/JavaScriptContent.php index 8ff1d2cdf00..35807046ff1 100644 --- a/includes/content/JavaScriptContent.php +++ b/includes/content/JavaScriptContent.php @@ -60,8 +60,13 @@ class JavaScriptContent extends TextContent { * @return JavaScriptContent */ public function preSaveTransform( Title $title, User $user, ParserOptions $popts ) { - // @todo Make pre-save transformation optional for script pages - // See T34858 + // @todo Make pre-save transformation optional for script pages (T34858) + + if ( !$user->getBoolOption( 'pst-cssjs' ) ) { + // Allow bot users to disable the pre-save transform for CSS/JS (T236828). + $popts = clone $popts; + $popts->setPreSaveTransform( false ); + } $text = $this->getText(); $pst = MediaWikiServices::getInstance()->getParser() diff --git a/includes/preferences/DefaultPreferencesFactory.php b/includes/preferences/DefaultPreferencesFactory.php index 1c32f70f8ae..169794a4953 100644 --- a/includes/preferences/DefaultPreferencesFactory.php +++ b/includes/preferences/DefaultPreferencesFactory.php @@ -1117,6 +1117,9 @@ class DefaultPreferencesFactory implements PreferencesFactory { 'label-message' => 'tog-hideminor', 'section' => 'rc/changesrc', ]; + $defaultPreferences['pst-cssjs'] = [ + 'type' => 'api', + ]; $defaultPreferences['rcfilters-rc-collapsed'] = [ 'type' => 'api', ];