1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
<?php
/*
TinyMCE_MW2.php - MediaWiki extension - version 0.1
Bret McMillan <bretm@redhat.com>
Copyright 2008, Red Hat, Inc., All rights reserved.
Rewritten from Joseph Socoloski's original tinymce extension;
moves logic to the tinymce plugin framework
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
*/
if( !defined( 'MEDIAWIKI' ) ) {
die();
}
$wgExtensionCredits['other'][] = array(
"name" => "Next-gen TinyMCE MediaWiki extension",
"author" => "Bret McMillan <bretm@redhat.com>",
"version" => "0.1",
"url" => "http://www.redhat.com/",
"description" => "Easily implement Moxiecode's TinyMCE into MediaWiki using the plugin framework, extends Joseph Socoloski's original work"
);
# REGISTER HOOKS
$wgHooks['ArticleAfterFetchContent'][] = 'wfCheckBeforeEdit';
$wgHooks['EditPage::showEditForm:initial'][] = 'wfTinymceAddScript';
function wfTinymceAddScript ($q) {
global $wgOut, $wgTitle, $wgScriptPath, $wgMyWikiURL;
global $wgTempText, $wgTinymceDir, $wgTinymceTheme, $wgExt_valid_elements, $wgUseTinymce;
$wgTinymceDir = "tinymce";
$ns_allowed = true;
$ns = $wgTitle->getNamespace();
if ($ns_allowed && $wgUseTinymce) {
# use the more modern example straight from moxiecode
$wgOut->addScript("<script language=\"javascript\" type=\"text/javascript\">
function toggleEditor(id) {
if (!tinyMCE.get(id))
tinyMCE.execCommand('mceAddControl', false, id);
else
tinyMCE.execCommand('mceRemoveControl', false, id);
}
</script>");
$wgOut->addScript( "<script language=\"javascript\" type=\"text/javascript\" src=\"$wgScriptPath/extensions/$wgTinymceDir/jscripts/tiny_mce/tiny_mce.js\"></script><script language=\"javascript\" type=\"text/javascript\">tinyMCE.init({
mode : \"textareas\",
theme : \"advanced\",
plugins : \"mediawiki\",
entity_encoding : \"named\",
remove_linebreaks : false,
convert_newlines_to_brs : false,
force_p_newlines : true,
force_br_newlines : false,
inline_styles : true,
convert_fonts_to_spans : true,
apply_source_formatting : false,
document_base_url : \"$wgMyWikiURL\"});</script>" );
#Since editing add the button
$wgOut->addHTML("<p><a href=\"javascript:toggleEditor('wpTextbox1');\" title=\"toggle wysiwyg editor\">Toggle Visual Editor</a></p>");
} else {
$wgOut->addScript("<script language=\"javascript\" type=\"text/javascript\"></script>" );
$wgUseTinymce = true;
}
return true;
}
# Check existing article for any tags we don't want TinyMCE parsing...
function wfCheckBeforeEdit ($q, $text) {
global $wgUseTinymce;
if (preg_match("|<(data.*?)>(.*?)</data>|is", $text, $a)) {
$wgUseTinymce = false;
}
elseif(preg_match("|<(data.*?)>(.*?)</data>|is", $text, $a)) {
$wgUseTinymce = false;}
else{$wgUseTinymce = true;}
return true;
}
?>
|