From 5bb0ad52a7c548df24fb9d49ab3f98e5377dbc8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Carlos=20Ra=C3=B1a?= Date: Wed, 20 Oct 2010 20:58:35 +0200 Subject: [PATCH 1/6] improve group navigation --- main/group/group.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/main/group/group.php b/main/group/group.php index 50e47fec88..9a7e53c123 100755 --- a/main/group/group.php +++ b/main/group/group.php @@ -170,6 +170,8 @@ if (api_is_allowed_to_edit(false, true)) { //echo Display::return_icon('csv.gif', get_lang('ExportAsCSV')).''.get_lang('ExportAsCSV').' '; echo Display::return_icon('excel.gif', get_lang('ExportAsXLS')).' '.get_lang('ExportAsXLS').''; //echo ''.Display::return_icon('group_add_big.gif').' '.get_lang('NewGroupCreate').' '; + echo Display::return_icon('members.gif', get_lang('Users')) .''.get_lang('Users').' '; + } $group_cats = GroupManager :: get_categories(); From 684017a37c4b70c66cfec2fe0292f21885704b9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Carlos=20Ra=C3=B1a?= Date: Mon, 25 Oct 2010 20:06:16 +0200 Subject: [PATCH 2/6] Feature #2204 integrate plugin wiris ver 1.14.3. first send: raw plugin --- .../editor/plugins/fckeditor_wiris/VERSION | 1 + .../plugins/fckeditor_wiris/cache/.htaccess | 1 + .../plugins/fckeditor_wiris/cache/info.txt | 1 + .../plugins/fckeditor_wiris/configuration.ini | 34 + .../plugins/fckeditor_wiris/core/cas.gif | Bin 0 -> 24689 bytes .../plugins/fckeditor_wiris/core/cas.js | 231 ++++++ .../plugins/fckeditor_wiris/core/core.js | 713 ++++++++++++++++++ .../plugins/fckeditor_wiris/core/editor.js | 94 +++ .../fckeditor_wiris/core/wiris-cas.gif | Bin 0 -> 350 bytes .../fckeditor_wiris/core/wiris-formula.gif | Bin 0 -> 1082 bytes .../plugins/fckeditor_wiris/fckplugin.js | 334 ++++++++ .../fckeditor_wiris/formulas/.htaccess | 1 + .../plugins/fckeditor_wiris/formulas/info.txt | 1 + .../fckeditor_wiris/integration/cas.php | 94 +++ .../integration/createcasimage.php | 32 + .../integration/createimage.php | 56 ++ .../fckeditor_wiris/integration/editor.php | 72 ++ .../fckeditor_wiris/integration/getmathml.php | 34 + .../fckeditor_wiris/integration/libwiris.php | 93 +++ .../integration/showcasimage.php | 20 + .../fckeditor_wiris/integration/showimage.php | 100 +++ .../fckeditor_wiris/integration/test.php | 150 ++++ 22 files changed, 2062 insertions(+) create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/VERSION create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/cache/.htaccess create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/cache/info.txt create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/configuration.ini create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/core/cas.gif create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/core/cas.js create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/core/core.js create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/core/editor.js create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/core/wiris-cas.gif create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/core/wiris-formula.gif create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/fckplugin.js create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/formulas/.htaccess create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/formulas/info.txt create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/cas.php create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/createcasimage.php create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/createimage.php create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/editor.php create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/getmathml.php create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/libwiris.php create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/showcasimage.php create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/showimage.php create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/test.php diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/VERSION b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/VERSION new file mode 100644 index 0000000000..282f354f41 --- /dev/null +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/VERSION @@ -0,0 +1 @@ +1.14.3 \ No newline at end of file diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/cache/.htaccess b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/cache/.htaccess new file mode 100644 index 0000000000..e01983226f --- /dev/null +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/cache/.htaccess @@ -0,0 +1 @@ +deny from all diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/cache/info.txt b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/cache/info.txt new file mode 100644 index 0000000000..1dcd1f6397 --- /dev/null +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/cache/info.txt @@ -0,0 +1 @@ +This directory is used to save images \ No newline at end of file diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/configuration.ini b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/configuration.ini new file mode 100644 index 0000000000..3450aa8d46 --- /dev/null +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/configuration.ini @@ -0,0 +1,34 @@ +wirisimageservicehost = services.wiris.net +wirisimageserviceport = 80 +wirisimageservicepath = /demo/formula/render +wirisimageserviceversion = 2.0 + +wiristransparency = true +#wirisimagebgcolor = #ffffff +#wirisimagefontsize = 16 +#wirisimageidentcolor = #000000 +#wirisimagenumbercolor = #000000 +#wirisimagesymbolcolor = #000000 +#wirisimageidentmathvariant = italic-sans-serif +#wirisimagenumbermathvariant = sans-serif +#wirisimagefontident = Courier +#wirisimagefontnumber = Dialog +#wirisimagefontranges = font1, font2 +#font1 = x3b1-x3ff;DialogInput,105 +#font2 = x41-x5A;FreeSans + +wirisformulaeditorcodebase = http://services.wiris.net/demo/formula/codebase/ +wirisformulaeditorarchive = wiriseditor.jar +wirisformulaeditorcode = WirisFormulaEditor +wirisformulaeditorlang = en + +wiriscascodebase = http://www.wiris.net/demo/wiris/wiris-codebase +wiriscasarchive = wrs_net_%LANG.jar +wiriscasclass = WirisApplet_net_%LANG +wiriscaslanguages = en, es, fr, it, nl, et, ca, eu, pt, de +CAS_width = 450 +CAS_height = 400 + +wirisproxy = false +wirisproxy_host = +wirisproxy_port = diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/core/cas.gif b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/core/cas.gif new file mode 100644 index 0000000000000000000000000000000000000000..6079fa49875d8e5e3180b5e34aeb4d9f87ddd816 GIT binary patch literal 24689 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 EJKjV5umAu6 literal 0 HcmV?d00001 diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/core/cas.js b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/core/cas.js new file mode 100644 index 0000000000..b9113b8011 --- /dev/null +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/core/cas.js @@ -0,0 +1,231 @@ +var wrs_opener; +var appletObject; +var initialXML = ''; +var closeFunction; + +if (window.opener) { // For popup mode. + wrs_opener = window.opener; + closeFunction = window.close; +} +// FCKeditor integration begin +else { // For iframe mode. + wrs_opener = window.parent; + + while (wrs_opener.InnerDialogLoaded) { + wrs_opener = wrs_opener.parent; + } +} + +if (window.parent.InnerDialogLoaded) { // Iframe mode. + window.parent.InnerDialogLoaded(); + closeFunction = window.parent.Cancel; +} +else if (window.opener.parent.FCKeditorAPI) { // Popup mode. + wrs_opener = window.opener.parent; +} +// FCKeditor integration end + +function getMathmlFromAppletCode(appletCode) { + var optionForm = document.getElementById('optionForm'); + appletObject = wrs_opener.wrs_createObject(appletCode, document); + + optionForm.width.value = parseInt(appletObject.width); + optionForm.height.value = parseInt(appletObject.height); + + var params = appletObject.childNodes; + var mathml = ''; + + for (var i = 0; i < params.length; ++i) { + if (params[i].name == 'xmlinitialtext') { + mathml = params[i].value; + } + else if (params[i].name == 'requestfirstevaluation') { + optionForm.executeonload.checked = (params[i].value == 'true') ? true : false; + } + else if (params[i].name == 'toolbar') { + optionForm.toolbar.checked = (params[i].value == 'floating') ? false : true; + } + else if (params[i].name == 'requestfocus') { + optionForm.focusonload.checked = (params[i].value == 'true') ? true : false; + } + else if (params[i].name == 'level') { + optionForm.level.checked = (params[i].value == 'primary') ? true : false; + } + } + + return mathml; +} + +function createIframePath(params) { + var iframePath = wrs_opener._wrs_conf_CASPath; + iframePath += ((iframePath.indexOf('?') == -1) ? '?' : '&') + 'mode=applet&'; + + for (var i in params) { + iframePath += wrs_opener.wrs_urlencode(i) + '=' + wrs_opener.wrs_urlencode(params[i]); + } + + return iframePath; +} + +function createIframe(params) { + var iframe = document.createElement('iframe'); + iframe.id = 'appletContainerIframe'; + iframe.src = createIframePath(params); + iframe.width = '100%'; + iframe.height = '100%'; + iframe.frameBorder = 0; + + wrs_opener.wrs_addEvent(iframe, 'load', function () { + if (initialXML.length > 0) { + var applet = iframe.contentWindow.document.getElementById('applet'); + + function setAppletMathml() { + // Internet explorer fails on "applet.isActive". It only supports "applet.isActive()". + + try { + if (applet.isActive && applet.isActive()) { + applet.setXML(initialXML); + } + else { + setTimeout(setAppletMathml, 50); + } + } + catch (e) { + if (applet.isActive()) { + applet.setXML(initialXML); + } + else { + setTimeout(setAppletMathml, 50); + } + } + } + + setAppletMathml(); + } + }); + + document.getElementById('appletContainer').appendChild(iframe); +} + +function reloadIframe(params) { + var iframe = document.getElementById('appletContainerIframe'); + var applet = iframe.contentWindow.document.getElementById('applet'); + initialXML = applet.getXML(); + iframe.src = createIframePath(params); +} + +wrs_opener.wrs_addEvent(window, 'load', function () { + // Getting language list object changes its value, the iframe should be refreshed. + + wrs_opener.wrs_addEvent(languageList, 'change', function () { + reloadIframe({ + 'lang': languageList.value + }); + }); + + // Setting iframe language. + + var language; + + if (wrs_opener._wrs_isNewElement) { + language = wrs_opener._wrs_int_language; + } + else { + var appletCode = wrs_opener._wrs_temporalImage.getAttribute(wrs_opener._wrs_conf_CASMathmlAttribute); + initialXML = getMathmlFromAppletCode(wrs_opener.wrs_mathmlDecode(appletCode)); + + var language = ''; + + // We can convert initialXML to an object and get its "lang" value. However, IE does not support this functionability, so we use string parsing. + var languageStart = initialXML.indexOf('lang="'); + + if (languageStart != -1) { + var languageEnd = initialXML.indexOf('"', languageStart + 6); // +6 because 'lang="'.length is 6. + + if (languageEnd != -1) { + language = initialXML.substring(languageStart + 6, languageEnd); + } + } + } + + // Creating the iframe. + + createIframe({ + 'lang': language + }); + + // Selecting the language on the + Calculate on load + Show toolbar + + + Language + + + + + + Height + + Focus on load + Elementary mode + + + + + + + + + + \ No newline at end of file diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/createcasimage.php b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/createcasimage.php new file mode 100644 index 0000000000..2a5239027a --- /dev/null +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/createcasimage.php @@ -0,0 +1,32 @@ + \ No newline at end of file diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/createimage.php b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/createimage.php new file mode 100644 index 0000000000..98982a0d4e --- /dev/null +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/createimage.php @@ -0,0 +1,56 @@ + \ No newline at end of file diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/editor.php b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/editor.php new file mode 100644 index 0000000000..cb727381e8 --- /dev/null +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/editor.php @@ -0,0 +1,72 @@ + + + + + + WIRIS Formula Editor + + + + + + + + + + + +
+ + + + 'wirisformulaeditorlang', + 'identMathvariant' => 'wirisimageidentmathvariant', + 'numberMathvariant' => 'wirisimagenumbermathvariant', + 'fontIdent' => 'wirisimagefontident', + 'fontNumber' => 'wirisimagefontnumber', + 'version' => 'wirisimageserviceversion' + ); + + foreach ($params as $key => $value) { + if (isset($config[$value])) { + echo ''; + } + } + + if (isset($config['wirisimagefontranges'])) { + $fontRanges = explode(',', $config['wirisimagefontranges']); + $fontRangesCount = count($fontRanges); + + for ($i = 0; $i < $fontRangesCount; ++$i) { + $fontRangeName = trim($fontRanges[$i]); + + if (isset($config[$fontRangeName])) { + echo ''; + } + } + } + ?> + +

You need JAVA® to use WIRIS tools.
FREE download from www.java.com

+
+
+ Manual >> + + +
+ + \ No newline at end of file diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/getmathml.php b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/getmathml.php new file mode 100644 index 0000000000..5674d5749d --- /dev/null +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/getmathml.php @@ -0,0 +1,34 @@ + \ No newline at end of file diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/libwiris.php b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/libwiris.php new file mode 100644 index 0000000000..fd328b8b66 --- /dev/null +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/libwiris.php @@ -0,0 +1,93 @@ + 'wirisimagebgcolor', + 'symbolColor' => 'wirisimagesymbolcolor', + 'transparency' => 'wiristransparency', + 'fontSize' => 'wirisimagefontsize', + 'numberColor' => 'wirisimagenumbercolor', + 'identColor' => 'wirisimageidentcolor', + 'identMathvariant' => 'wirisimageidentmathvariant', + 'numberMathvariant' => 'wirisimagenumbermathvariant', + 'fontIdent' => 'wirisimagefontident', + 'fontNumber' => 'wirisimagefontnumber', + 'version' => 'wirisimageserviceversion' +); + +$wrs_xmlFileAttributes = array( + 'bgColor', + 'symbolColor', + 'transparency', + 'fontSize', + 'numberColor', + 'identColor', + 'identMathvariant', + 'numberMathvariant', + 'fontIdent', + 'fontNumber' +); + +function wrs_getAvailableCASLanguages($languageString) { + $availableLanguages = explode(',', $languageString); + + for ($i = count($availableLanguages) - 1; $i >= 0; --$i) { + $availableLanguages[$i] = trim($availableLanguages[$i]); + } + + // At least we should accept an empty language. + + if (!isset($availableLanguages[0])) { + $availableLanguages[] = ''; + } + + return $availableLanguages; +} + +function wrs_loadConfig($file) { + $handle = fopen($file, 'r'); + + if ($handle === false) { + return array(); + } + + $toReturn = array(); + + while (($line = fgets($handle)) !== false) { + $lineWords = explode('=', $line, 2); + + if (isset($lineWords[1])) { + $key = trim($lineWords[0]); + $value = trim($lineWords[1]); + $toReturn[$key] = $value; + } + } + + fclose($handle); + return $toReturn; +} + +function wrs_replaceVariable($value, $variableName, $variableValue) { + return str_replace('%' . $variableName, $variableValue, $value); +} + +function wrs_secureStripslashes($element) { + if (is_array($element)) { + return array_map('wrs_secureStripslashes', $element); + } + + return stripslashes($element); +} + +set_magic_quotes_runtime(0); + +if (get_magic_quotes_gpc() == 1) { + $_REQUEST = array_map('wrs_secureStripslashes', $_REQUEST); + $_GET = array_map('wrs_secureStripslashes', $_GET); + $_POST = array_map('wrs_secureStripslashes', $_POST); +} +?> \ No newline at end of file diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/showcasimage.php b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/showcasimage.php new file mode 100644 index 0000000000..c54734ddf4 --- /dev/null +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/showcasimage.php @@ -0,0 +1,20 @@ + \ No newline at end of file diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/showimage.php b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/showimage.php new file mode 100644 index 0000000000..70b6c96c24 --- /dev/null +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/showimage.php @@ -0,0 +1,100 @@ + $mathml); + + foreach ($wrs_imageConfigProperties as $serverParam => $configKey) { + if (isset($config[$configKey])) { + $properties[$serverParam] = $config[$configKey]; + } + } + + $postdata = http_build_query($fonts, '', '&') . '&' . http_build_query($properties, '', '&'); + + $contextArray = array('http' => + array( + 'method' => 'POST', + 'header' => 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8', + 'content' => $postdata + ) + ); + + if (isset($config['wirisproxy']) && $config['wirisproxy'] == 'true') { + $contextArray['http']['proxy'] = 'tcp://' . $config['wirisproxy_host'] . ':' . $config['wirisproxy_port']; + $contextArray['http']['request_fulluri'] = true; + } + + $context = stream_context_create($contextArray); + + if (($response = file_get_contents('http://' . $config['wirisimageservicehost'] . ':' . $config['wirisimageserviceport'] . $config['wirisimageservicepath'], false, $context)) === false) { + return false; + } + + file_put_contents($imagePath, $response); + return true; + } + + return false; +} + +if (empty($_GET['formula'])) { + echo 'Error: no image name has been sended.'; +} +else { + $formula = rtrim(basename($_GET['formula']), '.png'); + $imagePath = WRS_CACHE_DIRECTORY . '/' . $formula . '.png'; + $config = wrs_loadConfig(WRS_CONFIG_FILE); + + if (is_file($imagePath) || createImage($config, WRS_FORMULA_DIRECTORY . '/' . $formula . '.xml', $imagePath)) { + header('Content-Type: image/png'); + readfile($imagePath); + } + else { + echo 'Error creating the image.'; + } +} +?> \ No newline at end of file diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/test.php b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/test.php new file mode 100644 index 0000000000..561d66cbf7 --- /dev/null +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/test.php @@ -0,0 +1,150 @@ + +OK'; + } + else { + echo 'ERROR'; + } +} +?> + + + Plugin WIRIS test page + + + + + + +

Plugin WIRIS test page

+ +

Loading configuration

+ +

+ +

+ +

Connecting to WIRIS image server

+ +

+ +

+ +

Writing a formula file

+ +

+ +

+ +

Reading a formula file

+ +

+ +

+ +

Writing an image file

+ +

+ +

+ +

Reading an image file

+ +

+ +

+ +

PHP tests

+ +

Checking the existence of PHP functions that Plugin WIRIS uses

+ +

+ Checking for fgets...'; + wrs_assert(function_exists('fgets')); + + echo '
Checking for file_put_contents...'; + wrs_assert(function_exists('file_put_contents')); + + echo '
Checking for fopen...'; + wrs_assert(function_exists('fopen')); + + echo '
Checking for http_build_query...'; + wrs_assert(function_exists('http_build_query')); + + echo '
Checking for is_file...'; + wrs_assert(function_exists('is_file')); + + echo '
Checking for mb_strlen...'; + wrs_assert(function_exists('mb_strlen')); + + echo '
Checking for readfile...'; + wrs_assert(function_exists('readfile')); + ?> +

+ + From 10583e4ec471b7108d5262bfe539c024019c05c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Carlos=20Ra=C3=B1a?= Date: Mon, 25 Oct 2010 20:09:48 +0200 Subject: [PATCH 3/6] Feature #2204 modify fckeditor wiris plugin --- .../plugins/fckeditor_wiris/configuration.ini | 40 +++- .../fckeditor_wiris/integration/cas.php | 186 +++++++++--------- .../integration/createcasimage.php | 62 +++--- .../integration/createimage.php | 110 +++++------ .../fckeditor_wiris/integration/editor.php | 142 ++++++------- .../fckeditor_wiris/integration/libwiris.php | 184 ++++++++--------- 6 files changed, 379 insertions(+), 345 deletions(-) diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/configuration.ini b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/configuration.ini index 3450aa8d46..16508ab535 100644 --- a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/configuration.ini +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/configuration.ini @@ -1,6 +1,8 @@ wirisimageservicehost = services.wiris.net +//wirisimageservicehost = localhost wirisimageserviceport = 80 wirisimageservicepath = /demo/formula/render +//wirisimageservicepath = /chamilo/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/cache wirisimageserviceversion = 2.0 wiristransparency = true @@ -18,17 +20,49 @@ wiristransparency = true #font2 = x41-x5A;FreeSans wirisformulaeditorcodebase = http://services.wiris.net/demo/formula/codebase/ +//wirisformulaeditorcodebase = http://localhost/chamilo/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/ wirisformulaeditorarchive = wiriseditor.jar wirisformulaeditorcode = WirisFormulaEditor wirisformulaeditorlang = en +//////////////////////////////// + wiriscascodebase = http://www.wiris.net/demo/wiris/wiris-codebase +//wiriscascodebase = http://www.juntadeandalucia.es/averroes/wiris/wiris-codebase +//wiriscascodebase = http://herramientas.educa.madrid.org/wiris/wiris-codebase +//wiriscascodebase = http://nea.educastur.princast.es/wiris/wiris-codebase +//wiriscascodebase = http://www.educa.jcyl.es/wiris/wiris-codebase +//wiriscascodebase = http://calculadora.edu365.cat/wiris/wiris-codebase +//wiriscascodebase = http://www.wiris.ee/wiris/wiris-codebase +//wiriscascodebase = http://users.wirisonline.net/applet +//wiriscascodebase = http://wiris.schule.at/wiris-codebase + + wiriscasarchive = wrs_net_%LANG.jar +//wiriscasarchive = wrs_andalucia_es.jar +//wiriscasarchive = wrs_cam_es.jar +//wiriscasarchive = wrs_asturias_es.jar +//wiriscasarchive = wrs_castleon_es.jar +//wiriscasarchive = wrs_edu365_ca.jar +//wiriscasarchive = wrs_estonia_et.jar +//wiriscasarchive = wrs_wnl_nl.jar +//wiriscasarchive = wrs_austria_de_en.jar + + wiriscasclass = WirisApplet_net_%LANG +//wiriscasclass = WirisApplet_andalucia_es +//wiriscasclass = WirisApplet_cam_es +//wiriscasclass = WirisApplet_asturias_es +//wiriscasclass = WirisApplet_castleon_es +//wiriscasclass = WirisApplet_edu365_ca +//wiriscasclass = WirisApplet_estonia_et +//wiriscasclass = WirisApplet_wnl_nl +//wiriscasclass = WirisApplet_austria_de_en + + wiriscaslanguages = en, es, fr, it, nl, et, ca, eu, pt, de CAS_width = 450 CAS_height = 400 - wirisproxy = false -wirisproxy_host = -wirisproxy_port = +wirisproxy_host = +wirisproxy_port = \ No newline at end of file diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/cas.php b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/cas.php index 797355788a..85670bc31a 100644 --- a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/cas.php +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/cas.php @@ -1,94 +1,94 @@ - - - - - - - -

You need JAVA® to use WIRIS tools.
FREE download from www.java.com

-
- - - - - - - - WIRIS CAS - - - - -
- - - - - - - - - - - - - - - - - - - - - - -
Width Calculate on load Show toolbar - Language - - -
Height Focus on load Elementary mode
-
- - - + + + + + + +

You need JAVA® to use WIRIS tools.
FREE download from www.java.com

+
+ + + + + + + + WIRIS CAS + + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
Width Calculate on load Show toolbar + Language + + +
Height Focus on load Elementary mode
+
+ + + \ No newline at end of file diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/createcasimage.php b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/createcasimage.php index 2a5239027a..d58a49fb4e 100644 --- a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/createcasimage.php +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/createcasimage.php @@ -1,32 +1,32 @@ - \ No newline at end of file diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/createimage.php b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/createimage.php index 98982a0d4e..9b9428333b 100644 --- a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/createimage.php +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/createimage.php @@ -1,56 +1,56 @@ - \ No newline at end of file diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/editor.php b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/editor.php index cb727381e8..205c7415d8 100644 --- a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/editor.php +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/editor.php @@ -1,72 +1,72 @@ - - - - - - WIRIS Formula Editor - - - - - - - - - - - -
- - - - 'wirisformulaeditorlang', - 'identMathvariant' => 'wirisimageidentmathvariant', - 'numberMathvariant' => 'wirisimagenumbermathvariant', - 'fontIdent' => 'wirisimagefontident', - 'fontNumber' => 'wirisimagefontnumber', - 'version' => 'wirisimageserviceversion' - ); - - foreach ($params as $key => $value) { - if (isset($config[$value])) { - echo ''; - } - } - - if (isset($config['wirisimagefontranges'])) { - $fontRanges = explode(',', $config['wirisimagefontranges']); - $fontRangesCount = count($fontRanges); - - for ($i = 0; $i < $fontRangesCount; ++$i) { - $fontRangeName = trim($fontRanges[$i]); - - if (isset($config[$fontRangeName])) { - echo ''; - } - } - } - ?> - -

You need JAVA® to use WIRIS tools.
FREE download from www.java.com

-
-
- Manual >> - - -
- + + + + + + WIRIS Formula Editor + + + + + + + + + + + +
+ + + + 'wirisformulaeditorlang', + 'identMathvariant' => 'wirisimageidentmathvariant', + 'numberMathvariant' => 'wirisimagenumbermathvariant', + 'fontIdent' => 'wirisimagefontident', + 'fontNumber' => 'wirisimagefontnumber', + 'version' => 'wirisimageserviceversion' + ); + + foreach ($params as $key => $value) { + if (isset($config[$value])) { + echo ''; + } + } + + if (isset($config['wirisimagefontranges'])) { + $fontRanges = explode(',', $config['wirisimagefontranges']); + $fontRangesCount = count($fontRanges); + + for ($i = 0; $i < $fontRangesCount; ++$i) { + $fontRangeName = trim($fontRanges[$i]); + + if (isset($config[$fontRangeName])) { + echo ''; + } + } + } + ?> + +

You need JAVA® to use WIRIS tools.
FREE download from www.java.com

+
+
+ Manual >> + + +
+ \ No newline at end of file diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/libwiris.php b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/libwiris.php index fd328b8b66..95ff1c6bf4 100644 --- a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/libwiris.php +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/libwiris.php @@ -1,93 +1,93 @@ - 'wirisimagebgcolor', - 'symbolColor' => 'wirisimagesymbolcolor', - 'transparency' => 'wiristransparency', - 'fontSize' => 'wirisimagefontsize', - 'numberColor' => 'wirisimagenumbercolor', - 'identColor' => 'wirisimageidentcolor', - 'identMathvariant' => 'wirisimageidentmathvariant', - 'numberMathvariant' => 'wirisimagenumbermathvariant', - 'fontIdent' => 'wirisimagefontident', - 'fontNumber' => 'wirisimagefontnumber', - 'version' => 'wirisimageserviceversion' -); - -$wrs_xmlFileAttributes = array( - 'bgColor', - 'symbolColor', - 'transparency', - 'fontSize', - 'numberColor', - 'identColor', - 'identMathvariant', - 'numberMathvariant', - 'fontIdent', - 'fontNumber' -); - -function wrs_getAvailableCASLanguages($languageString) { - $availableLanguages = explode(',', $languageString); - - for ($i = count($availableLanguages) - 1; $i >= 0; --$i) { - $availableLanguages[$i] = trim($availableLanguages[$i]); - } - - // At least we should accept an empty language. - - if (!isset($availableLanguages[0])) { - $availableLanguages[] = ''; - } - - return $availableLanguages; -} - -function wrs_loadConfig($file) { - $handle = fopen($file, 'r'); - - if ($handle === false) { - return array(); - } - - $toReturn = array(); - - while (($line = fgets($handle)) !== false) { - $lineWords = explode('=', $line, 2); - - if (isset($lineWords[1])) { - $key = trim($lineWords[0]); - $value = trim($lineWords[1]); - $toReturn[$key] = $value; - } - } - - fclose($handle); - return $toReturn; -} - -function wrs_replaceVariable($value, $variableName, $variableValue) { - return str_replace('%' . $variableName, $variableValue, $value); -} - -function wrs_secureStripslashes($element) { - if (is_array($element)) { - return array_map('wrs_secureStripslashes', $element); - } - - return stripslashes($element); -} - -set_magic_quotes_runtime(0); - -if (get_magic_quotes_gpc() == 1) { - $_REQUEST = array_map('wrs_secureStripslashes', $_REQUEST); - $_GET = array_map('wrs_secureStripslashes', $_GET); - $_POST = array_map('wrs_secureStripslashes', $_POST); -} + 'wirisimagebgcolor', + 'symbolColor' => 'wirisimagesymbolcolor', + 'transparency' => 'wiristransparency', + 'fontSize' => 'wirisimagefontsize', + 'numberColor' => 'wirisimagenumbercolor', + 'identColor' => 'wirisimageidentcolor', + 'identMathvariant' => 'wirisimageidentmathvariant', + 'numberMathvariant' => 'wirisimagenumbermathvariant', + 'fontIdent' => 'wirisimagefontident', + 'fontNumber' => 'wirisimagefontnumber', + 'version' => 'wirisimageserviceversion' +); + +$wrs_xmlFileAttributes = array( + 'bgColor', + 'symbolColor', + 'transparency', + 'fontSize', + 'numberColor', + 'identColor', + 'identMathvariant', + 'numberMathvariant', + 'fontIdent', + 'fontNumber' +); + +function wrs_getAvailableCASLanguages($languageString) { + $availableLanguages = explode(',', $languageString); + + for ($i = count($availableLanguages) - 1; $i >= 0; --$i) { + $availableLanguages[$i] = trim($availableLanguages[$i]); + } + + // At least we should accept an empty language. + + if (!isset($availableLanguages[0])) { + $availableLanguages[] = ''; + } + + return $availableLanguages; +} + +function wrs_loadConfig($file) { + $handle = fopen($file, 'r'); + + if ($handle === false) { + return array(); + } + + $toReturn = array(); + + while (($line = fgets($handle)) !== false) { + $lineWords = explode('=', $line, 2); + + if (isset($lineWords[1])) { + $key = trim($lineWords[0]); + $value = trim($lineWords[1]); + $toReturn[$key] = $value; + } + } + + fclose($handle); + return $toReturn; +} + +function wrs_replaceVariable($value, $variableName, $variableValue) { + return str_replace('%' . $variableName, $variableValue, $value); +} + +function wrs_secureStripslashes($element) { + if (is_array($element)) { + return array_map('wrs_secureStripslashes', $element); + } + + return stripslashes($element); +} + +set_magic_quotes_runtime(0); + +if (get_magic_quotes_gpc() == 1) { + $_REQUEST = array_map('wrs_secureStripslashes', $_REQUEST); + $_GET = array_map('wrs_secureStripslashes', $_GET); + $_POST = array_map('wrs_secureStripslashes', $_POST); +} ?> \ No newline at end of file From 4db2c3086d5ad0b8187ecc84e479a156f2372e80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Carlos=20Ra=C3=B1a?= Date: Mon, 25 Oct 2010 20:11:00 +0200 Subject: [PATCH 4/6] Feature #2204 add some index an delete test files --- .../plugins/fckeditor_wiris/cache/index.html | 8 + .../plugins/fckeditor_wiris/cache/info.txt | 1 - .../plugins/fckeditor_wiris/core/index.html | 8 + .../fckeditor_wiris/formulas/index.html | 8 + .../plugins/fckeditor_wiris/formulas/info.txt | 1 - .../editor/plugins/fckeditor_wiris/index.html | 8 + .../fckeditor_wiris/integration/index.html | 8 + .../fckeditor_wiris/integration/test.php | 150 ------------------ 8 files changed, 40 insertions(+), 152 deletions(-) create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/cache/index.html delete mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/cache/info.txt create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/core/index.html create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/formulas/index.html delete mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/formulas/info.txt create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/index.html create mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/index.html delete mode 100644 main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/test.php diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/cache/index.html b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/cache/index.html new file mode 100644 index 0000000000..8e464d8ce3 --- /dev/null +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/cache/index.html @@ -0,0 +1,8 @@ + + + + + +
+ + \ No newline at end of file diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/cache/info.txt b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/cache/info.txt deleted file mode 100644 index 1dcd1f6397..0000000000 --- a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/cache/info.txt +++ /dev/null @@ -1 +0,0 @@ -This directory is used to save images \ No newline at end of file diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/core/index.html b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/core/index.html new file mode 100644 index 0000000000..8e464d8ce3 --- /dev/null +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/core/index.html @@ -0,0 +1,8 @@ + + + + + +
+ + \ No newline at end of file diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/formulas/index.html b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/formulas/index.html new file mode 100644 index 0000000000..8e464d8ce3 --- /dev/null +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/formulas/index.html @@ -0,0 +1,8 @@ + + + + + +
+ + \ No newline at end of file diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/formulas/info.txt b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/formulas/info.txt deleted file mode 100644 index 38c0c4e0cd..0000000000 --- a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/formulas/info.txt +++ /dev/null @@ -1 +0,0 @@ -This directory is used to save mathml \ No newline at end of file diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/index.html b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/index.html new file mode 100644 index 0000000000..8e464d8ce3 --- /dev/null +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/index.html @@ -0,0 +1,8 @@ + + + + + +
+ + \ No newline at end of file diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/index.html b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/index.html new file mode 100644 index 0000000000..8e464d8ce3 --- /dev/null +++ b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/index.html @@ -0,0 +1,8 @@ + + + + + +
+ + \ No newline at end of file diff --git a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/test.php b/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/test.php deleted file mode 100644 index 561d66cbf7..0000000000 --- a/main/inc/lib/fckeditor/editor/plugins/fckeditor_wiris/integration/test.php +++ /dev/null @@ -1,150 +0,0 @@ - -OK'; - } - else { - echo 'ERROR'; - } -} -?> - - - Plugin WIRIS test page - - - - - - -

Plugin WIRIS test page

- -

Loading configuration

- -

- -

- -

Connecting to WIRIS image server

- -

- -

- -

Writing a formula file

- -

- -

- -

Reading a formula file

- -

- -

- -

Writing an image file

- -

- -

- -

Reading an image file

- -

- -

- -

PHP tests

- -

Checking the existence of PHP functions that Plugin WIRIS uses

- -

- Checking for fgets...'; - wrs_assert(function_exists('fgets')); - - echo '
Checking for file_put_contents...'; - wrs_assert(function_exists('file_put_contents')); - - echo '
Checking for fopen...'; - wrs_assert(function_exists('fopen')); - - echo '
Checking for http_build_query...'; - wrs_assert(function_exists('http_build_query')); - - echo '
Checking for is_file...'; - wrs_assert(function_exists('is_file')); - - echo '
Checking for mb_strlen...'; - wrs_assert(function_exists('mb_strlen')); - - echo '
Checking for readfile...'; - wrs_assert(function_exists('readfile')); - ?> -

- - From 0d77dabc3e61788e81313c782d797dab9cf2d3a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Carlos=20Ra=C3=B1a?= Date: Mon, 25 Oct 2010 20:12:36 +0200 Subject: [PATCH 5/6] Feature #2204 conditional load wiris plugin into documents and wiki --- main/inc/lib/fckeditor/myconfig.php | 11 +++++++++-- main/inc/lib/fckeditor/toolbars/default/documents.php | 2 +- .../fckeditor/toolbars/default/documents_student.php | 2 +- main/inc/lib/fckeditor/toolbars/default/wiki.php | 2 +- .../lib/fckeditor/toolbars/default/wiki_student.php | 2 +- 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/main/inc/lib/fckeditor/myconfig.php b/main/inc/lib/fckeditor/myconfig.php index 51efd79ec8..86fa26ef79 100755 --- a/main/inc/lib/fckeditor/myconfig.php +++ b/main/inc/lib/fckeditor/myconfig.php @@ -47,8 +47,7 @@ * 5-th level (the lowest priority) * Configuration settings from myconfig.js. This file is "as is" in the original source, modifying it is not recommended. */ - - + /* * Toolbar definitions. */ @@ -182,6 +181,14 @@ if ((api_get_setting('math_asciimathML') == 'true')) { $config['LoadPlugin'][] = 'asciimath'; } +// WIRIS: plugin for inserting mathematical formulas +// You may try it in the "Documents" and "Wiki" tools. +// Users' computers need java installed + +if ((api_get_setting('enabled_wiris') == 'true')) { + $config['LoadPlugin'][] = 'fckeditor_wiris'; +} + // wikilink : Adds a dialog for inserting wiki-formatted links. $config['LoadPlugin'][] = 'wikilink'; diff --git a/main/inc/lib/fckeditor/toolbars/default/documents.php b/main/inc/lib/fckeditor/toolbars/default/documents.php index 3de704a8c6..ccd71b58c4 100755 --- a/main/inc/lib/fckeditor/toolbars/default/documents.php +++ b/main/inc/lib/fckeditor/toolbars/default/documents.php @@ -11,7 +11,7 @@ $config['ToolbarSets']['Normal'] = array( array('Save','FitWindow','PasteWord','-','Undo','Redo'), array('Link','Unlink','Anchor','Glossary'), - array('Image','flvPlayer','Flash','EmbedMovies','YouTube','MP3','mimetex','asciimath'), + array('Image','flvPlayer','Flash','EmbedMovies','YouTube','MP3','mimetex','asciimath','fckeditor_wiris_openFormulaEditor','fckeditor_wiris_openCAS'), array('Table','SpecialChar'), array('Outdent','Indent','-','TextColor','BGColor','-','OrderedList','UnorderedList','-','Source'), '/', diff --git a/main/inc/lib/fckeditor/toolbars/default/documents_student.php b/main/inc/lib/fckeditor/toolbars/default/documents_student.php index f64911c824..dc9b8fb5c9 100755 --- a/main/inc/lib/fckeditor/toolbars/default/documents_student.php +++ b/main/inc/lib/fckeditor/toolbars/default/documents_student.php @@ -11,7 +11,7 @@ $config['ToolbarSets']['Normal'] = array( array('Save','FitWindow','PasteWord','-','Undo','Redo'), array('Link','Unlink','Anchor'), - array('Image','flvPlayer','Flash','EmbedMovies','YouTube','MP3','mimetex','asciimath'), + array('Image','flvPlayer','Flash','EmbedMovies','YouTube','MP3','mimetex','asciimath','fckeditor_wiris_openFormulaEditor','fckeditor_wiris_openCAS'), array('Table','SpecialChar'), array('Outdent','Indent','-','TextColor','BGColor','-','OrderedList','UnorderedList'), '/', diff --git a/main/inc/lib/fckeditor/toolbars/default/wiki.php b/main/inc/lib/fckeditor/toolbars/default/wiki.php index 9275b625b2..697f5deb3c 100755 --- a/main/inc/lib/fckeditor/toolbars/default/wiki.php +++ b/main/inc/lib/fckeditor/toolbars/default/wiki.php @@ -11,7 +11,7 @@ $config['ToolbarSets']['Normal'] = array( array('FitWindow','Save','NewPage','Templates','PageBreak','Preview','-','PasteText','-','Undo','Redo','-','SelectAll','-','Find'), array('Wikilink','Link','Unlink','Anchor'), - array('Image','flvPlayer','Flash','EmbedMovies','YouTube','MP3','mimetex','asciimath'), + array('Image','flvPlayer','Flash','EmbedMovies','YouTube','MP3','mimetex','asciimath','fckeditor_wiris_openFormulaEditor','fckeditor_wiris_openCAS'), array('Table','Rule','Smiley','SpecialChar','googlemaps'), array('FontFormat','FontName','FontSize'), array('Bold','Italic','Underline'), diff --git a/main/inc/lib/fckeditor/toolbars/default/wiki_student.php b/main/inc/lib/fckeditor/toolbars/default/wiki_student.php index 43235e8f02..5700c36e40 100755 --- a/main/inc/lib/fckeditor/toolbars/default/wiki_student.php +++ b/main/inc/lib/fckeditor/toolbars/default/wiki_student.php @@ -11,7 +11,7 @@ $config['ToolbarSets']['Normal'] = array( array('FitWindow','Save','NewPage','PageBreak','Preview','-','PasteText','-','Undo','Redo','-','SelectAll','-','Find'), array('Wikilink','Link','Unlink','Anchor'), - array('Image','flvPlayer','Flash','EmbedMovies','YouTube','MP3','mimetex','asciimath'), + array('Image','flvPlayer','Flash','EmbedMovies','YouTube','MP3','mimetex','asciimath','fckeditor_wiris_openFormulaEditor','fckeditor_wiris_openCAS'), array('Table','Rule','Smiley','SpecialChar','googlemaps'), array('FontFormat','FontName','FontSize'), array('Bold','Italic','Underline'), From f6d39c2d8e3729f73e95ee81e4f2ef799d8572bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Carlos=20Ra=C3=B1a?= Date: Mon, 25 Oct 2010 20:30:06 +0200 Subject: [PATCH 6/6] Feature #2204 admin setting for wiris plugin. Disabled by default --- main/install/db_main.sql | 8 ++++++-- main/install/migrate-db-1.8.7-1.8.8-pre.sql | 5 +++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/main/install/db_main.sql b/main/install/db_main.sql index 54d420cc0a..b000680621 100755 --- a/main/install/db_main.sql +++ b/main/install/db_main.sql @@ -765,7 +765,8 @@ VALUES ('show_link_bug_notification', NULL, 'radio', 'Platform', 'true', 'ShowLinkBugNotificationTitle', 'ShowLinkBugNotificationComment', NULL, NULL, 0), ('course_validation', NULL, 'radio', 'Platform', 'false', 'EnableCourseValidation', 'EnableCourseValidationComment', NULL, NULL, 1), ('course_validation_terms_and_conditions_url', NULL, 'textfield', 'Platform', '', 'CourseValidationTermsAndConditionsLink', 'CourseValidationTermsAndConditionsLinkComment', NULL, NULL, 1), -('chamilo_database_version', NULL, 'textfield', NULL, '1.8.8.12378', 'DokeosDatabaseVersion', '', NULL, NULL, 0); +('chamilo_database_version', NULL, 'textfield', NULL, '1.8.8.12378', 'DokeosDatabaseVersion', '', NULL, NULL, 0), +('enabled_wiris',NULL,'radio','Editor','false','EnabledWirisTitle','EnabledWirisComment',NULL,NULL, 0); UNLOCK TABLES; @@ -983,7 +984,10 @@ VALUES ('show_link_bug_notification', 'true', 'Yes'), ('show_link_bug_notification', 'false', 'No'), ('course_validation', 'true', 'Yes'), -('course_validation', 'false', 'No'); +('course_validation', 'false', 'No'), +('enabled_wiris','true','Yes'), +('enabled_wiris','false','No') +; UNLOCK TABLES; diff --git a/main/install/migrate-db-1.8.7-1.8.8-pre.sql b/main/install/migrate-db-1.8.7-1.8.8-pre.sql index a39c28561b..463a69ec7b 100755 --- a/main/install/migrate-db-1.8.7-1.8.8-pre.sql +++ b/main/install/migrate-db-1.8.7-1.8.8-pre.sql @@ -41,6 +41,11 @@ INSERT INTO settings_options (variable, value, display_text) VALUES ('course_val INSERT INTO settings_options (variable, value, display_text) VALUES ('course_validation', 'false', 'No'); INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_validation_terms_and_conditions_url', NULL, 'textfield', 'Platform', '', 'CourseValidationTermsAndConditionsLink', 'CourseValidationTermsAndConditionsLinkComment', NULL, NULL, 1); UPDATE settings_current SET selected_value='1' WHERE variable='advanced_filemanager'; + +INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('enabled_wiris',NULL,'radio','Editor','false','EnabledWirisTitle','EnabledWirisComment',NULL,NULL, 0); +INSERT INTO settings_options (variable, value, display_text) VALUES ('enabled_wiris', 'true', 'Yes'); +INSERT INTO settings_options (variable, value, display_text) VALUES ('enabled_wiris', 'false', 'No'); + -- xxSTATSxx ALTER TABLE track_e_exercices ADD COLUMN orig_lp_item_view_id INT NOT NULL DEFAULT 0;