*/ /** * Support for external editors to modify both text and files * in external applications. It works as follows: MediaWiki * sends a meta-file with the MIME type 'application/x-external-editor' * to the client. The user has to associate that MIME type with * a helper application (a reference implementation in Perl * can be found in extensions/ee), which will launch the editor, * and save the modified data back to the server. * */ class ExternalEdit { /** * Title to perform the edit on * @var Title */ private $title; /** * Mode of editing * @var String */ private $mode; /** * Constructor * @param $title Title object we're performing the edit on * @param $mode String What mode we're using. Only 'file' has any effect */ public function __construct( $title, $mode ) { $this->title = $title; $this->mode = $mode; } /** * Output the information for the external editor */ public function edit() { global $wgOut, $wgScript, $wgScriptPath, $wgCanonicalServer, $wgLang; $wgOut->disable(); header( 'Content-type: application/x-external-editor; charset=utf-8' ); header( 'Cache-control: no-cache' ); # $type can be "Edit text", "Edit file" or "Diff text" at the moment # See the protocol specifications at [[m:Help:External editors/Tech]] for # details. if( $this->mode == "file" ) { $type = "Edit file"; $image = wfLocalFile( $this->title ); $url = $image->getCanonicalURL(); $extension = $image->getExtension(); } else { $type = "Edit text"; $url = $this->title->getCanonicalURL( array( 'action' => 'edit', 'internaledit' => 'true' ) ); # *.wiki file extension is used by some editors for syntax # highlighting, so we follow that convention $extension = "wiki"; } $special = $wgLang->getNsText( NS_SPECIAL ); $control = <<