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

Revision: 108309
Author:   jeroendedauw
Date:     2012-01-07 09:08:29 +0000 (Sat, 07 Jan 2012)
Log Message:
-----------
fixed issue occuring when validation failed for a new item. got to love htmlform

Modified Paths:
--------------
    trunk/extensions/EducationProgram/includes/EPCourse.php
    trunk/extensions/EducationProgram/includes/EPOrg.php
    trunk/extensions/EducationProgram/includes/EPTerm.php
    trunk/extensions/EducationProgram/specials/SpecialEPFormPage.php
    trunk/extensions/EducationProgram/specials/SpecialEditInstitution.php

Modified: trunk/extensions/EducationProgram/includes/EPCourse.php
===================================================================
--- trunk/extensions/EducationProgram/includes/EPCourse.php     2012-01-07 
06:13:01 UTC (rev 108308)
+++ trunk/extensions/EducationProgram/includes/EPCourse.php     2012-01-07 
09:08:29 UTC (rev 108309)
@@ -213,7 +213,7 @@
                        'submit'
                ) );
 
-               $out->addHTML( Html::hidden( 'newEditToken', 
$context->getUser()->editToken() ) );
+               $out->addHTML( Html::hidden( 'isnew', 1 ) );
 
                $out->addHTML( '</fieldset></form>' );
                

Modified: trunk/extensions/EducationProgram/includes/EPOrg.php
===================================================================
--- trunk/extensions/EducationProgram/includes/EPOrg.php        2012-01-07 
06:13:01 UTC (rev 108308)
+++ trunk/extensions/EducationProgram/includes/EPOrg.php        2012-01-07 
09:08:29 UTC (rev 108309)
@@ -233,7 +233,7 @@
                        'submit'
                ) );
 
-               $out->addHTML( Html::hidden( 'newEditToken', 
$context->getUser()->editToken() ) );
+               $out->addHTML( Html::hidden( 'isnew', 1 ) );
 
                $out->addHTML( '</fieldset></form>' );
                

Modified: trunk/extensions/EducationProgram/includes/EPTerm.php
===================================================================
--- trunk/extensions/EducationProgram/includes/EPTerm.php       2012-01-07 
06:13:01 UTC (rev 108308)
+++ trunk/extensions/EducationProgram/includes/EPTerm.php       2012-01-07 
09:08:29 UTC (rev 108309)
@@ -229,7 +229,7 @@
                        'submit'
                ) );
 
-               $out->addHTML( Html::hidden( 'newEditToken', 
$context->getUser()->editToken() ) );
+               $out->addHTML( Html::hidden( 'isnew', 1 ) );
                
                $out->addHTML( '</fieldset></form>' );
                

Modified: trunk/extensions/EducationProgram/specials/SpecialEPFormPage.php
===================================================================
--- trunk/extensions/EducationProgram/specials/SpecialEPFormPage.php    
2012-01-07 06:13:01 UTC (rev 108308)
+++ trunk/extensions/EducationProgram/specials/SpecialEPFormPage.php    
2012-01-07 09:08:29 UTC (rev 108309)
@@ -149,7 +149,8 @@
                static $isNew = null;
                
                if ( is_null( $isNew ) ) {
-                       $isNew = $this->getRequest()->wasPosted() && 
$this->getUser()->matchEditToken( $this->getRequest()->getVal( 'newEditToken' ) 
);
+                       $isNew = $this->getRequest()->wasPosted() &&
+                               ( $this->getRequest()->getCheck( 'isnew' ) || 
$this->getRequest()->getCheck( 'wpisnew' ) );
                }
                
                return $isNew;
@@ -163,7 +164,7 @@
        protected function showForm() {
                $form = $this->getForm();
 
-               if ( $this->isNew() ) {
+               if ( $this->getRequest()->wasPosted() && 
$this->getRequest()->getCheck( 'isnew' ) ) {
                        $form->prepareForm();
                        $form->displayForm( Status::newGood() );
                }
@@ -204,8 +205,17 @@
         * @return HTMLForm|null
         */
        protected function getForm() {
-               $form = new HTMLForm( $this->getFormFields(), 
$this->getContext() );
+               $fields = $this->getFormFields();
 
+               if ( $this->isNew() ) {
+                       $fields['isnew'] = array(
+                               'type' => 'hidden',
+                               'default' => 1
+                       );
+               }
+
+               $form = new HTMLForm( $fields, $this->getContext() );
+
                $form->setSubmitCallback( array( $this, 'handleSubmission' ) );
                $form->setSubmitText( wfMsg( 'educationprogram-org-submit' ) );
 
@@ -239,12 +249,14 @@
                $fields = array();
 
                $fields['id'] = array( 'type' => 'hidden' );
-               
+
+               $req = $this->getRequest();
+
                // This sort of sucks as well. Meh, HTMLForm is odd.
-               if ( $this->getRequest()->wasPosted()
-                       && $this->getUser()->matchEditToken( 
$this->getRequest()->getVal( 'wpEditToken' ) ) 
-                       && $this->getRequest()->getCheck( 'wpitem-id' ) ) {
-                       $fields['id']['default'] = $this->getRequest()->getInt( 
'wpitem-id' ); 
+               if ( $req->wasPosted()
+                       && $this->getUser()->matchEditToken( $req->getVal( 
'wpEditToken' ) )
+                       && $req->getCheck( 'wpitem-id' ) ) {
+                       $fields['id']['default'] = $req->getInt( 'wpitem-id' );
                }
                
                return $fields;
@@ -272,7 +284,7 @@
                $mappedFields = array();
 
                foreach ( $fields as $name => $field ) {
-                       if ( $this->isNew() ) {
+                       if ( $this->getRequest()->getCheck( 'isnew' ) ) {
                                // HTML form is being a huge pain in running 
the validation on post,
                                // so just remove it if when not appropriate.
                                unset( $field['validation-callback'] );
@@ -326,7 +338,7 @@
                        $matches = array();
 
                        if ( preg_match( '/item-(.+)/', $name, $matches ) ) {
-                               if ( $matches[1] === 'id' && $value === '' ) {
+                               if ( $matches[1] === 'id' && ( $value === '' || 
$value === '0' ) ) {
                                        $value = null;
                                }
                                

Modified: trunk/extensions/EducationProgram/specials/SpecialEditInstitution.php
===================================================================
--- trunk/extensions/EducationProgram/specials/SpecialEditInstitution.php       
2012-01-07 06:13:01 UTC (rev 108308)
+++ trunk/extensions/EducationProgram/specials/SpecialEditInstitution.php       
2012-01-07 09:08:29 UTC (rev 108309)
@@ -72,7 +72,7 @@
         * @return string|true
         */
        public function countryIsValid( $value, array $alldata = null ) {
-               $countries = array_keys( CountryNames::getNames( 
$this->getLang()->getCode() ) );
+               $countries = array_keys( CountryNames::getNames( 
$this->getLanguage()->getCode() ) );
                
                if ( $this->isNew() ) {
                        array_unshift( $countries, '' );


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

Reply via email to