function wfTalkHereAjaxEditor( $page, $section, $returnto ) { global $wgRequest, $wgTitle, $wgOut; $title = Title::newFromText( $page ); if ( !$title ) { return false; } //fake editor environment $args = array( 'wpTalkHere' => '1', 'wpReturnTo' => $returnto, 'action' => 'edit', 'section' => $section ); $wgRequest = new FauxRequest( $args ); $wgTitle = $title; $article = Article::newFromTitle( $title, RequestContext::getMain() ); $editor = new TalkHereEditPage( $article ); //generate form $editor->importFormData( $wgRequest ); $editor->showEditForm(); $response = new AjaxResponse(); $response->addText( $wgOut->getHTML() ); $response->setCacheDuration( false ); //don't cache, because of tokens etc return $response; }
public static function onCustomEditor( $article, $user ) { global $wgRequest, $wgOut; $action = $wgRequest->getVal( 'action' ); $oldid = $wgRequest->getVal( 'oldid' ); $returnto = $wgRequest->getVal( 'wpReturnTo' ); $talkhere = $wgRequest->getVal( 'wpTalkHere' ); if (!$talkhere || $action != 'submit' || !$returnto || $oldid) return true; //go on as normal $to = Title::newFromText($returnto); if (!$to) return true; //go on as normal //use a wrapper to override redirection target $editor = new TalkHereEditPage( $article ); $editor->setReturnTo( $to ); $editor->edit(); $code = $editor->getCode(); if ( $code == EditPage::AS_SUCCESS_NEW_ARTICLE ) { $wgOut->redirect( $to->getFullURL() . '#talkhere' ); } elseif ( $code == EditPage::AS_SUCCESS_UPDATE ) { $wgOut->redirect( $to->getFullURL() . $editor->getAnchor() ); } return false; }