/** * Handles autoedit Ajax call from #autoedit parser function and from save * and continue button. * * @param String $optionsString the options/data string * @param String $prefillFromExisting String set to 'true' to retain existing form values (unset by save and continue) * @return String */ static function handleAutoEdit( $optionsString = null, $prefillFromExisting = 'true' ) { global $wgParser; $handler = new self( null, 'sfautoedit' ); $handler->isApiQuery( false ); $options = $handler->setOptionsString( $optionsString ); // get oktext (or use default) if ( array_key_exists( 'ok text', $options ) ) { $oktext = $options['ok text']; } else { $oktext = wfMsg( 'sf_autoedit_success' ); } // get errortext (or use default) if ( array_key_exists( 'error text', $options ) ) { $errortext = $options['error text']; } else { $errortext = '$1'; } // process data // result will be true or an error message $result = $handler->storeSemanticData( $prefillFromExisting === 'true' ); // wrap result in ok/error message if ( $result === true ) { $options = $handler->getOptions(); $result = wfMsgReplaceArgs( $oktext, array( $options['target'], $options['form'] ) ); } else { $result->setResponseCode( '400 Bad Request' ); $result = wfMsgReplaceArgs( $errortext, array( $result ) ); } // initialize parser $title = Title::newFromText( 'DummyTitle' ); if ( !StubObject::isRealObject( $wgParser ) ) { $wgParser->_unstub(); } $parseroptions = $wgParser->getOptions(); if ( $parseroptions == null ) { $parseroptions = new ParserOptions(); $wgParser->Options( $parseroptions ); } $parseroptions->enableLimitReport( false ); $result = new AjaxResponse( $wgParser->parse( $result, $title, $parseroptions )->getText() ); $result->setContentType( 'text/html' ); return $result; }