Extension:WclEditor/wclEditor.php
From MediaWiki.org
<?php /* This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ /* * wclEditor - The text editor for Mediawiki * Copyright (C) 2006 Shtriter Anrew * * Licensed under the terms of the GNU Lesser General Public License: * http://www.opensource.org/licenses/lgpl-license.php * * For further information visit: * http://meta.wikimedia.org/wiki/wclEditor * * File Name: wclEditor.php * This is the integration file for MediaWiki. * * It defines the FCKeditor class that can be used to create editor * instances in PHP pages on server side and integrates it in MW. * * File Author: * Shtriter Andrew (Shtriter@gmail.com) * Based on: * FCKeditor integration file for PHP. (fckeditor.php in tarball) * http://prdownloads.sourceforge.net/fckeditor/FCKeditor_2.3b.tar.gz?download * Frederico Caldeira Knabben (fredck@fckeditor.net) * Marcus Bointon <coolbru@users.sourceforge.net>) * and * * FCKeditor integration file for MediaWiki. * http://meta.wikimedia.org/wiki/FCKeditor/extension * Frederico Caldeira Knabben (fredck@fckeditor.net) * */ ////////////////////////////////////////////////// // MediaWiki integration // ////////////////////////////////////////////////// if( !defined( 'MEDIAWIKI' ) ) { die(); } $wgExtensionCredits['other'][] = array( "name" => "wclEditor extension", "author" => "Shriter Andrew", "version" => "wclEditor/mw-extension July 2006", "url" => "http://meta.wikimedia.org/wiki/wclEditor", "description" => "integrating the wclEditor" ); # REGISTER HOOKS $wgHooks['EditPage::showEditForm:initial'][] = 'wfFCKeditorAddFCKScript'; function wfFCKeditorAddFCKScript ($q) { global $wgOut, $wgScriptPath, $wgWCLeditorDir; $wgOut->addScript(<<<Script <script type="text/javascript">alert('If you want to use wclEditor,\n' + 'replace the script call with your fckeditor.js (See wclEditor.php, line 85)') </script> //my own example: ($wgWCLeditorDir = '/extensions/wclEditor' in LocalSettings) //<script type="text/javascript" src="$wgWCLeditorDir/FCKeditor/fckeditor.js"></script> //you can also try to use online FCKeditor (not test - only suggestion) //<script type="text/javascript" src="http://www.fckeditor/FCKeditor/fckeditor.js"></script> //Import InstaView <script type="text/javascript" src="http://en.wikipedia.org/w/index.php?title=User:Pilaf/InstaView/Devel&action=raw&ctype=text/javascript&dontcountme=s"></script>' //Import Wikificator <script type="text/javascript" src="http://meta.wikipedia.org/w/index.php?title=Wikificator/Wikificator.js&action=raw&ctype=text/javascript&dontcountme=s"></script>' /*//If you what to test outputs or debug wclEditor - include JS Diff too: <script type="text/javascript" src="http://en.wikipedia.org/ww/index.php?title=User:Cacycle/diff.js&action=raw&ctype=text/javascript&dontcountme=s"></script>' */ <script type="text/javascript"> //var oFCKeditor; function onLoadFCK() { //alert('FCKeditor') var textarea = $('wpTextbox1'); var newtbox = document.createElement('textarea') newtbox.id="wclEditor"; var div = document.createElement('div'); div.id = "wclEditor___Div"; div.style.display = "none"; div.appendChild( newtbox ); textarea.parentNode.insertBefore( div , textarea.nextSibling ); var oFCKeditor = new FCKeditor('wclEditor') ; oFCKeditor.ReplaceTextarea() ; oFCKeditor._InsertHtmlBefore( '<input type ="checkbox" name="Toggle_wclEditor" ' + 'onClick="Toggle( this.checked )" id="Toggle_wclEditor" /> ' + '<label for="Toggle_wclEditor">Use wclEditor:</label>' , $('wpSummary').nextSibling ); } function $(aID) { return (document.getElementById) ? document.getElementById(aID) : (document.layers) ? document.layers[aID] : document.all[aID]; } function Toggle( useEditor ) { //alert(useEditor); var toolbar, textarea; if (useEditor) { convertedWikiText = InstaView.convert($('wpTextbox1').value); var oFCKeditor = FCKeditorAPI.GetInstance('wclEditor') ; //alert( oFCKeditor ); oFCKeditor.SetHTML( convertedWikiText ); //$('wclEditor').value = convertedWikiText; //alert( convertedWikiText ); } else { var oFCKeditor = FCKeditorAPI.GetInstance('wclEditor'); var Text = oFCKeditor.GetXHTML( ); //alert('Before process:\\n"'+Text+'"'); Text = Process( Text ) ; //alert('After process:\\n"'+Text+'"'); $('wpTextbox1').value = Text ; } if (toolbar = $('toolbar')) toolbar.style.display = useEditor ? 'none' : 'block' ; if (textarea = $('wpTextbox1')) textarea.style.display = useEditor ? 'none' : 'inline' ; if (editor = $('wclEditor___Div')) editor.style.display = useEditor ? 'block' : 'none' ; //if (!useEditor) $('Wikificator').click(); //alert('Done'); } addOnloadHook(onLoadFCK); </script> Script ); /* // If you want to test the results of converts or debug wclEditor just uncomment this $wgOut->addHTML(<<<Html <input onclick="InstaView.dump('wpTextbox1', 'InstaViewDump')" value="InstaView" style="font-style: italic;" type="button"> <input onclick="Html2Wiki(document.getElementById('wpTextbox1').value)" value="Html2Wiki" style="font-weight: bold;" type="button"> Diff Wi & IV <span style="border: 2px solid navy; margin: 5px 0pt; padding: 5px;"> <input onclick=" var Textbox = InstaView.el('wpTextbox1'); InstaView.el('InstaViewDump').innerHTML = StringDiff( Textbox.value , InstaView.convert( Textbox.value ) );" value="diff( wiki, html )" style="font-style: italic; font-weight: bold;" type="button"> <input onclick=" var Textbox = InstaView.el('wpTextbox1'); InstaView.el('InstaViewDump').innerHTML = StringDiff( Textbox.value, Process( InstaView.convert( Textbox.value ) ))" value="diff( wiki, Wi(IV(t)))" style="font-style: italic; font-weight: bold;" type="button"> </span> Html ); */ } ?>
