Integrate(整合) MediaWiki & FCKeditor

裝好了MediaWiki,可是卻發現MediaWiki的編輯器真是一點都不人性化,要記得一些程式標籤寫的文章才能夠比較有變化。但是,平常誰會去記?當然,最好能夠改成WYSIWYG的編輯軟體最好,首選當然是免費的FCKeditor啦!

我裝的是mediawiki-1.11.0加上mediawiki_fckeditor_ext_N,以下的內容出自Mediawiki+FCKeditor這個網站的一篇FCKeditor integration guide,版權是屬於Mediawiki+FCKeditor,我只是重點式的把它翻譯成中文而已,原文連結為
http://mediawiki.fckeditor.net/index.php?title=FCKeditor_integration_guide。

首先先下載Mediawiki的延伸套件Download FCKeditor extension,解壓縮到mediawiki的extense資料夾裡。
請確認解壓縮出來的FCKeditor裡是不是還有fckeditor這個資料夾,FCKediotr包含了mediawiki的extense,而fckediotr則包含了Rich Text Editor本身。未來如果要升級FCKeditor的版本,只要對fckeditor裡的做升級即可。
接著,在mediawiki的
LocalSettings.php的最底下增加一行:
r
equire_once $IP . "/extensions/FCKeditor/FCKeditor.php";

補丁:

以下將盡其所能的秀出mediawiki源碼的部份,目前只有兩個檔案需要處理以便整合至mediawiki(其中一個是可選的)。(測試版本MediaWiki 1.10.1和MediaWiki 1.11.0)

includes/EditPage.php (必須的)

以下的修改是為了讓"顯示預覽"的功能正常。

getPreviewText()
---
修改前
global $wgOut, $wgUser, $wgTitle, $wgParser;
修改後
global $wgOut, $wgUser, $wgTitle, $wgParser, $wgRequest;
---
---
修改前
wfProfileIn( $fname );
if ( $this->mTriedSave && !$this->mTokenOk ) {
修改後
wfProfileIn( $fname );

if ($wgUser->getOption( 'showtoolbar' ) && !$wgUser->getOption( 'riched_disable' ) && !$this->previewOnOpen() ) {
$oldTextBox1 = $this->textbox1;
$this->importFormData( $wgRequest );
}

if ( $this->mTriedSave && !$this->mTokenOk ) {
---
---
修改前
wfProfileOut( $fname );
return $previewhead . $previewHTML;

修改後
if ($wgUser->getOption( 'showtoolbar' ) && !$wgUser->getOption( 'riched_disable' ) && !$this->previewOnOpen() ) {
$this->textbox1 = $oldTextBox1;
}

wfProfileOut( $fname );
return $previewhead . $previewHTML;
---
includes/Parser.php (必須的)
這個修改為使其正確的轉換文本。
doBlockLevels()

修改前
$output .= $this->closeParagraph().'<pre>';
修改後
$output .= $this->closeParagraph().'<pre class="_fck_mw_lspace">';

includes/SpecialPreferences.php (可選的)
這裡的修改是在"我的參數設置"裡新增一個"Rich Editor"選項,用來控制是否使用FCKeditor。如果沒有此修改,FCKeditor的啟用與否將全部列在"雜項"裡。
mainPrefsForm()
修改前
global $wgLivePreview;
$wgOut->addHTML( '<fieldset><legend>' . wfMsg( 'textboxsize' ) . '</legend>
<div>' .
wfInputLabel( wfMsg( 'rows' ), 'wpRows', 'wpRows', 3, $this->mRows ) .
' ' .
wfInputLabel( wfMsg( 'columns' ), 'wpCols', 'wpCols', 3, $this->mCols ) .
"</div>" .
$this->getToggles( array(
'editsection',
'editsectiononrightclick',
'editondblclick',
'editwidth',
'showtoolbar',
'previewonfirst',
'previewontop',
'minordefault',
'externaleditor',
'externaldiff',
$wgLivePreview ? 'uselivepreview' : false,
'forceeditsummary',
) ) . '</fieldset>'
);

修改後
global $wgLivePreview;
$wgOut->addHTML( '<fieldset><legend>' . wfMsg( 'textboxsize' ) . '</legend>
<div>' .
wfInputLabel( wfMsg( 'rows' ), 'wpRows', 'wpRows', 3, $this->mRows ) .
' ' .
wfInputLabel( wfMsg( 'columns' ), 'wpCols', 'wpCols', 3, $this->mCols ) .
"</div>" .
$this->getToggles( array(
'editsection',
'editsectiononrightclick',
'editondblclick',
'editwidth',
'showtoolbar',
'riched_disable', //add new tab (Rich Editor)
'previewonfirst',
'previewontop',
'minordefault',
'externaleditor',
'externaldiff',
$wgLivePreview ? 'uselivepreview' : false,
'forceeditsummary',
) ) . '</fieldset>'
);

# FCKeditor
# load FCKeditor settings into separate tab
if (!$wgUser->getOption( 'riched_disable' )) {
$wgOut->addHTML( '<fieldset><legend>' . wfMsg( 'textrichditor' ) . '</legend>' .
$this->getToggles( FCKeditor::$nsToggles ) . '</fieldset>'
);
}
修改完了就可以去試試看啦!
後記:不知道有沒有可以批次(大量)新增帳號的extense?
0 Responses