Yaron Koren has uploaded a new change for review. https://gerrit.wikimedia.org/r/193108
Change subject: Fix for sfEditFormPreloadText hook - now runs only for new pages ...................................................................... Fix for sfEditFormPreloadText hook - now runs only for new pages It used to run only for *existing* pages, which was bad. Also made syntax improvements to some of the comments. Change-Id: I1e728d5515c5f9fe2af391379653641b6371fcb8 --- M includes/SF_AutoeditAPI.php 1 file changed, 36 insertions(+), 22 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/SemanticForms refs/changes/08/193108/1 diff --git a/includes/SF_AutoeditAPI.php b/includes/SF_AutoeditAPI.php index 3cfac3c..b9a9d79 100644 --- a/includes/SF_AutoeditAPI.php +++ b/includes/SF_AutoeditAPI.php @@ -55,7 +55,6 @@ /** * Returns the options array - * @return array */ function getOptions() { return $this->mOptions; @@ -827,13 +826,20 @@ } } - // allow extensions to set/change the preload text - wfRunHooks( 'sfEditFormPreloadText', array( &$preloadContent, $targetTitle, $formTitle ) ); + // Allow extensions to set/change the preload text, for new + // pages. + if ( !$pageExists ) { + wfRunHooks( 'sfEditFormPreloadText', array( &$preloadContent, $targetTitle, $formTitle ) ); + } - // flag to keep track of formHTML runs + // Flag to keep track of formHTML() runs. $formHtmlHasRun = false; if ( $preloadContent !== '' ) { + + // @HACK - we need to set this for the preload to take + // effect in the form. + $pageExists = true; // Spoof $wgRequest for SFFormPrinter::formHTML(). if ( isset( $_SESSION ) ) { @@ -841,17 +847,18 @@ } else { $wgRequest = new FauxRequest( $this->mOptions, true ); } - // call SFFormPrinter::formHTML to get at the form html of the existing page + // Call SFFormPrinter::formHTML() to get at the form + // HTML of the existing page. list ( $formHTML, $formJS, $targetContent, $form_page_title, $generatedTargetNameFormula ) = $sfgFormPrinter->formHTML( $formContent, $isFormSubmitted, $pageExists, $formArticleId, $preloadContent, $targetName, $targetNameFormula ); - // parse the data to be preloaded from the form html of the - // existing page + // Parse the data to be preloaded from the form HTML of + // the existing page. $data = $this->parseDataFromHTMLFrag( $formHTML ); - // and merge/overwrite it with the new data + // ...and merge/overwrite it with the new data. $this->mOptions = SFUtils::array_merge_recursive_distinct( $data, $this->mOptions ); } @@ -876,7 +883,7 @@ list ( $formHTML, $formJS, $targetContent, $generatedFormName, $generatedTargetNameFormula ) = $sfgFormPrinter->formHTML( $formContent, $isFormSubmitted, $pageExists, $formArticleId, $preloadContent, $targetName, $targetNameFormula ); - // restore original request + // Restore original request. $wgRequest = $oldRequest; if ( $generatedFormName !== '' ) { @@ -889,11 +896,11 @@ if ( $isFormSubmitted ) { - // if the target page was not specified, see if something was generated - // from the target name formula + // If the target page was not specified, see if + // something was generated from the target name formula. if ( $this->mOptions['target'] === '' ) { - // if no name was generated, we can not save => give up + // If no name was generated, we cannot save => give up if ( $generatedTargetNameFormula === '' ) { throw new MWException( wfMessage( 'sf_autoedit_notargetspecified' )->parse() ); } @@ -906,7 +913,7 @@ $editor = $this->setupEditPage( $targetContent ); - // perform the requested action + // Perform the requested action. if ( $this->mAction === self::ACTION_PREVIEW ) { $this->doPreview( $editor ); } else if ( $this->mAction === self::ACTION_DIFF ) { @@ -987,9 +994,9 @@ $options = $select->getElementsByTagName( 'option' ); - // if the current $select is a radio button select (i.e. not multiple) - // set the first option to selected as default. This may be overwritten - // in the loop below + // If the current $select is a radio button select + // (i.e. not multiple) set the first option to selected + // as default. This may be overwritten in the loop below. if ( $options->length > 0 && (!$select->hasAttribute( 'multiple' ) ) ) { self::addToArray( $data, $name, $options->item( 0 )->getAttribute( 'value' ) ); } @@ -1047,12 +1054,15 @@ return $data; } - // This function recursively inserts the value into a tree. - // $array is root - // $key identifies path to position in tree. - // Format: 1stLevelName[2ndLevel][3rdLevel][...], i.e. normal array notation - // $value: the value to insert - // $toplevel: if this is a toplevel value. + /** + * This function recursively inserts the value into a tree. + * + * @param $array is root + * @param $key identifies path to position in tree. + * Format: 1stLevelName[2ndLevel][3rdLevel][...], i.e. normal array notation + * @param $value: the value to insert + * @param $toplevel: if this is a toplevel value. + */ public static function addToArray( &$array, $key, $value, $toplevel = true ) { $matches = array( ); @@ -1116,6 +1126,7 @@ * value) or (parameter name) => (array with PARAM_* constants as keys) * Don't call this function directly: use getFinalParams() to allow * hooks to modify parameters as needed. + * * @return array or false */ function getAllowedParams() { @@ -1131,6 +1142,7 @@ * Returns an array of parameter descriptions. * Don't call this functon directly: use getFinalParamDescription() to * allow hooks to modify descriptions as needed. + * * @return array or false */ function getParamDescription() { @@ -1144,6 +1156,7 @@ /** * Returns the description string for this module + * * @return mixed string or array of strings */ function getDescription() { @@ -1160,6 +1173,7 @@ /** * Returns usage examples for this module. + * * @return mixed string or array of strings */ protected function getExamples() { -- To view, visit https://gerrit.wikimedia.org/r/193108 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1e728d5515c5f9fe2af391379653641b6371fcb8 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/SemanticForms Gerrit-Branch: master Gerrit-Owner: Yaron Koren <yaro...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits