When the 'title' hidden field contains the subpage, the 'target'
input field is never taken into account since the subpage always
takes precedence in ChangesListSpecialPage->setup()
I75cfb2b56a4da6357e6117b3f34f3178bfb2c90c introduced
SpecialRecentChangesLinked->getPageTitle which overrides
SpecialPage->getPageTitle to include the subpage by default.
This helped with redirecting to the right page when parsing
a saved query on the server but changed the behavior everywhere
that function was used in the context of RCL. That includes
SpecialRecentChanges.php:545 where the option form is built.
Bug: T183437
Change-Id: Id39d1887719ecb6900b25fefbb133dff9c4d0456
public function execute( $subpage ) {
$this->rcSubpage = $subpage;
public function execute( $subpage ) {
$this->rcSubpage = $subpage;
- $this->considerActionsForDefaultSavedQuery();
+ $this->considerActionsForDefaultSavedQuery( $subpage );
$opts = $this->getOptions();
try {
$opts = $this->getOptions();
try {
* Check whether or not the page should load defaults, and if so, whether
* a default saved query is relevant to be redirected to. If it is relevant,
* redirect properly with all necessary query parameters.
* Check whether or not the page should load defaults, and if so, whether
* a default saved query is relevant to be redirected to. If it is relevant,
* redirect properly with all necessary query parameters.
+ *
+ * @param string $subpage
- protected function considerActionsForDefaultSavedQuery() {
+ protected function considerActionsForDefaultSavedQuery( $subpage ) {
if ( !$this->isStructuredFilterUiEnabled() || $this->including() ) {
return;
}
if ( !$this->isStructuredFilterUiEnabled() || $this->including() ) {
return;
}
// but are still valid and requested in the URL
$query = array_merge( $this->getRequest()->getValues(), $query );
unset( $query[ 'title' ] );
// but are still valid and requested in the URL
$query = array_merge( $this->getRequest()->getValues(), $query );
unset( $query[ 'title' ] );
- $this->getOutput()->redirect( $this->getPageTitle()->getCanonicalURL( $query ) );
+ $this->getOutput()->redirect( $this->getPageTitle( $subpage )->getCanonicalURL( $query ) );
} else {
// There's a default, but the version is not 2, and the server can't
// actually recognize the query itself. This happens if it is before
} else {
// There's a default, but the version is not 2, and the server can't
// actually recognize the query itself. This happens if it is before
/** @var bool|Title */
protected $rclTargetTitle;
/** @var bool|Title */
protected $rclTargetTitle;
- protected $rclTarget;
-
function __construct() {
parent::__construct( 'Recentchangeslinked' );
}
function __construct() {
parent::__construct( 'Recentchangeslinked' );
}
public function parseParameters( $par, FormOptions $opts ) {
$opts['target'] = $par;
public function parseParameters( $par, FormOptions $opts ) {
$opts['target'] = $par;
- $this->rclTarget = $par;
return $this->prefixSearchString( $search, $limit, $offset );
}
return $this->prefixSearchString( $search, $limit, $offset );
}
- /**
- * Get a self-referential title object
- * with consideration to the given subpage.
- *
- * @param string|bool $subpage
- * @return Title
- * @since 1.23
- */
- public function getPageTitle( $subpage = false ) {
- $subpage = $subpage ? $subpage : $this->rclTarget;
-
- return parent::getPageTitle( $subpage );
- }
-
protected function outputNoResults() {
if ( $this->getTargetTitle() === false ) {
$this->getOutput()->addHTML(
protected function outputNoResults() {
if ( $this->getTargetTitle() === false ) {
$this->getOutput()->addHTML(