https://www.mediawiki.org/wiki/Special:Code/MediaWiki/114946

Revision: 114946
Author:   foxtrott
Date:     2012-04-17 21:06:32 +0000 (Tue, 17 Apr 2012)
Log Message:
-----------
'keep parameters' for serieslink

Modified Paths:
--------------
    trunk/extensions/SemanticPageSeries/includes/SPSSpecialSeriesEdit.php
    trunk/extensions/SemanticPageSeries/includes/SPSUtils.php

Modified: trunk/extensions/SemanticPageSeries/includes/SPSSpecialSeriesEdit.php
===================================================================
--- trunk/extensions/SemanticPageSeries/includes/SPSSpecialSeriesEdit.php       
2012-04-17 20:32:43 UTC (rev 114945)
+++ trunk/extensions/SemanticPageSeries/includes/SPSSpecialSeriesEdit.php       
2012-04-17 21:06:32 UTC (rev 114946)
@@ -23,7 +23,7 @@
        }
 
        public function execute( $parameters ) {
-               global $wgRequest, $wgOut;
+               global $wgRequest;
 
                $this->setHeaders();
                
@@ -165,7 +165,7 @@
 
        private function evaluateForm( WebRequest &$request ) {
 
-               global $wgOut, $wgUser, $spsgIterators;
+               global $wgUser, $spsgIterators;
 
                $requestValues = $_POST;
 
@@ -180,6 +180,7 @@
                $targetFormName = null;
                $targetFieldName = null;
                $originPageId = null;
+               $keepParameters = false;
 
                foreach ( $iteratorData as $param => $value ) {
 
@@ -197,8 +198,10 @@
                                case 'origin':
                                        $originPageId = $value;
                                        break;
+                               case 'keep_parameters':
+                                       $keepParameters = true;
                                default :
-                                       $iteratorParams[$param] = 
$this->getAndRemoveFromArray( $requestValues, $value );
+                                       $iteratorParams[$param] = 
$this->getAndRemoveFromArray( $requestValues, $value, $keepParameters );
                        }                       
                }
 
@@ -295,6 +298,9 @@
                // targetFormName
                $targetFormName = $request->getVal( 'target_form' );
 
+               // keep parameters?
+               $keepParams = $request->getVal( 'keep_parameters' ) !== null;
+
                if ( is_null( $targetFormName ) ) {
                        throw new SPSException( SPSUtils::buildMessage( 
'spserror-notargetformname' ) );
                }
@@ -321,6 +327,10 @@
                        'origin' => $request->getVal( 'origin' )
                );
 
+               if ($keepParams) {
+                       $params['keep_parameters'] = true;
+               }
+               
                // add the iterator-specific values
                $paramNames = $iterator->getParameterNames();
                $errors = '';
@@ -358,13 +368,15 @@
         * @param type $key
         * @param type $toplevel 
         */
-       private function getAndRemoveFromArray( &$array, $key, $toplevel = true 
) {
+       private function getAndRemoveFromArray( &$array, $key, $keepParameters 
= false, $toplevel = true ) {
 
                $matches = array();
 
                if ( array_key_exists( $key, $array ) ) {
                        $value = $array[$key];
-                       unset( $array[$key] );
+                       if ( !$keepParameters ) {
+                               unset( $array[$key] );
+                       }
                        return $value;
                } elseif ( preg_match( '/^([^\[\]]*)\[([^\[\]]*)\](.*)/', $key, 
$matches ) ) {
 
@@ -381,7 +393,7 @@
                                return null;
                        }
 
-                       $value = $this->getAndRemoveFromArray( $array[$key], 
$matches[2] . $matches[3], false );
+                       $value = $this->getAndRemoveFromArray( $array[$key], 
$matches[2] . $matches[3], $keepParameters, false );
 
                        if ( empty( $array[$key] ) ) {
                                unset( $array[$key] );

Modified: trunk/extensions/SemanticPageSeries/includes/SPSUtils.php
===================================================================
--- trunk/extensions/SemanticPageSeries/includes/SPSUtils.php   2012-04-17 
20:32:43 UTC (rev 114945)
+++ trunk/extensions/SemanticPageSeries/includes/SPSUtils.php   2012-04-17 
21:06:32 UTC (rev 114946)
@@ -44,8 +44,6 @@
         */
        static public function renderSeriesLink( &$parser ) {
                
-               global $wgTitle;
-               
                $params = func_get_args();
                array_shift( $params ); // We don't need the parser.
                
@@ -54,6 +52,8 @@
                        $elements = explode( '=', $value, 2 );
                        if ( $elements[0] === 'target' ){
                                unset($params[$key]);
+                       } elseif ( $elements[0] === 'keep parameters') {
+                               $params[$key] = 'keep parameters=1';
                        }
 
                }


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to