}
function showDiffPage() {
- global $wgUser, $wgTitle, $wgOut, $wgContLang, $wgOnlySysopsCanPatrol, $wgUseRCPatrol;
+ global $wgUser, $wgTitle, $wgOut, $wgContLang, $wgOnlySysopsCanPatrol,
+ $wgUseExternalEditor, $wgUseRCPatrol;
$fname = 'DifferenceEngine::showDiffPage';
wfProfileIn( $fname );
+
+ # If external diffs are enabled both globally and for the user,
+ # we'll use the application/x-external-editor interface to call
+ # an external diff tool like kompare, kdiff3, etc.
+ if($wgUseExternalEditor) {
+ global $wgInputEncoding,$wgServer,$wgScript;
+ $wgOut->disable();
+ header ( "Content-type: application/x-external-editor; charset=".$wgInputEncoding );
+ $url1=$wgTitle->getFullURL("action=raw&oldid=".$this->mOldid);
+ $url2=$wgTitle->getFullURL("action=raw&oldid=".$this->mNewid);
+ $control=<<<CONTROL
+[Process]
+Type=Diff text
+Engine=MediaWiki
+Script={$wgServer}{$wgScript}
+
+[File]
+Extension=wiki
+URL=$url1
+
+[File 2]
+Extension=wiki
+URL=$url2
+CONTROL;
+ echo($control);
+ return;
+ }
# mOldid is false if the difference engine is called with a "vague" query for
# a diff between a version V and its previous version V' AND the version V
* @package MediaWiki
*
* Support for external editors to modify both text and files
- * in external application. It works as follows: MediaWiki
+ * 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
$name=$this->mTitle->getText();
$pos=strrpos($name,".")+1;
header ( "Content-type: application/x-external-editor; charset=".$this->mCharset );
- if(!isset($this->mMode)) {
+
+ # $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(!isset($this->mMode)) {
$type="Edit text";
$url=$this->mTitle->getFullURL("action=edit&internaledit=true");
# *.wiki file extension is used by some editors for syntax
$extension="wiki";
} elseif($this->mMode=="file") {
$type="Edit file";
- $url = Image::newFromTitle( $this->mTitle );
- $url = $wgServer . $url->url; # php sucks
-
+ $image = Image::newFromTitle( $this->mTitle );
+ $url = $wgServer . $image->getURL();
$extension=substr($name, $pos);
}
- $control="
+ $control = <<<CONTROL
[Process]
Type=$type
Engine=MediaWiki
[File]
Extension=$extension
-URL=$url";
+URL=$url
+CONTROL;
echo $control;
}
}
<label>$tbr: <input type='text' name=\"wpRows\" value=\"{$this->mRows}\" size='6' /></label>
<label>$tbc: <input type='text' name=\"wpCols\" value=\"{$this->mCols}\" size='6' /></label>
</div> " .
+ $this->getToggle( "editsection" ) .
+ $this->getToggle( "editsectiononrightclick" ) .
+ $this->getToggle( "editondblclick" ) .
$this->getToggle( "editwidth" ) .
$this->getToggle( "showtoolbar" ) .
$this->getToggle( "previewonfirst" ) .
$this->getToggle( "watchdefault" ) .
$this->getToggle( "minordefault" ) .
$this->getToggle( "externaleditor" ) .
+ $this->getToggle( "externaldiff" ) .
"
</fieldset>");
<fieldset><legend>".wfMsg('prefs-rc')."</legend>
<div><label>$rcc: <input type='text' name=\"wpRecent\" value=\"$this->mRecent\" size='6' /></label></div>" .
$this->getToggle( "hideminor" ) . $shownumberswatching .
- $this->getToggle( "usenewrc" ) . $this->getToggle('showupdated', wfMsg('updatedmarker')) .
+ $this->getToggle( "usenewrc" ) .
+ $this->getToggle( "rcusemodstyle" ) .
+ $this->getToggle('showupdated', wfMsg('updatedmarker')) .
"<div><label>$stt: <input type='text' name=\"wpStubs\" value=\"$this->mStubs\" size='6' /></label></div>
</fieldset>
'shownumberswatching' => 1,
'rcusemodstyle' => 1,
'showupdated' => 1,
- 'fancysig' => 0,
- 'externaleditor' => 0,
+ 'fancysig' => 0,
+ 'externaleditor' => 0,
+ 'externaldiff' => 0,
);
/* private */ $wgQuickbarSettingsEn = array(
'rcusemodstyle',
'showupdated',
'fancysig',
- 'externaleditor'
+ 'externaleditor',
+ 'externaldiff',
);
/* private */ $wgBookstoreListEn = array(
'tog-hideminor' => 'Hide minor edits in recent changes',
'tog-usenewrc' => 'Enhanced recent changes (not for all browsers)',
'tog-numberheadings' => 'Auto-number headings',
-'tog-showtoolbar' => 'Show edit toolbar',
+'tog-showtoolbar' => 'Show edit toolbar (JavaScript)',
'tog-editondblclick' => 'Edit pages on double click (JavaScript)',
'tog-editsection' => 'Enable section editing via [edit] links',
'tog-editsectiononrightclick' => 'Enable section editing by right clicking<br /> on section titles (JavaScript)',
'tog-showupdated' => 'Show update marker ',
'tog-fancysig' => 'Raw signatures (without automatic link)',
'tog-externaleditor' => 'Use external editor by default',
+'tog-externaldiff' => 'Use external diff by default',
# dates
'sunday' => 'Sunday',