Index: extensions/SemanticForms/includes/SF_FormPrinter.php =================================================================== --- extensions/SemanticForms/includes/SF_FormPrinter.php (original) +++ extensions/SemanticForms/includes/SF_FormPrinter.php (patched version) @@ -161,6 +161,14 @@ global $sfgAdderButtons; // initialize some variables + /*op-patch|KK|2009-11-04|FCKeditor|use separate variable for FCK Options|start*/ + /*op-patch|KK|2009-11-04|FCKeditor|use separate variable for FCK Options|doc|http://dmwiki.ontoprise.com:8888/dmwiki/index.php/Use_rows_parameter_for_FCK_editor_window_height_in_SF*/ + $fck_options = array(); + /*op-patch|KK|2009-11-04|FCKeditor|use separate variable for FCK Options|end*/ + /*op-patch|DH|2009-04-22|"WYSIWYG" in info tag|start*/ + /*op-patch|DH|2009-04-22|"WYSIWYG" in info tag|doc|http://dmwiki.ontoprise.com:8888/dmwiki/index.php/WYSIWYG_in_info_tag*/ + $show_FCKEditor = false; + /*op-patch|DH|2009-04-22|"WYSIWYG" in info tag|end*/ $sfgTabIndex = 1; $sfgFieldNum = 1; $source_page_matches_this_form = false; @@ -707,9 +715,19 @@ $new_text = SFFormUtils::hiddenFieldHTML( 'free_text', '!free_text!' ); } else { if ( ! array_key_exists( 'rows', $field_args ) ) - $field_args['rows'] = 5; - if ( ! array_key_exists( 'cols', $field_args ) ) - $field_args['cols'] = 80; + /*op-patch|KK|2009-11-04|FCKeditor|use rows parameter for editor window height|start*/ + /*op-patch|KK|2009-11-04|FCKeditor|use rows parameter for editor window height|doc|http://dmwiki.ontoprise.com:8888/dmwiki/index.php/Use_rows_parameter_for_FCK_editor_window_height_in_SF*/ + $fck_options['rows'] = 5; + else + $fck_options['rows'] = $field_args['rows']; + /*op-patch|KK|2009-11-04|FCKeditor|use rows parameter for editor window height|end*/ + if (! array_key_exists('cols', $field_args)) + /*op-patch|KK|2009-11-04|FCKeditor|use cols parameter for editor window width|start*/ + /*op-patch|KK|2009-11-04|FCKeditor|use rows parameter for editor window width|doc|http://dmwiki.ontoprise.com:8888/dmwiki/index.php/Use_rows_parameter_for_FCK_editor_window_height_in_SF*/ + $fck_options['cols'] = 80; + else + $fck_options['cols'] = $field_args['cols']; + /*op-patch|KK|2009-11-04|FCKeditor|use cols parameter for editor window width|end*/ $sfgTabIndex++; $sfgFieldNum++; if ( $cur_value == '' ) { @@ -1053,7 +1071,12 @@ foreach ( array_slice( $tag_components, 1 ) as $component ) { $sub_components = explode( '=', $component, 2 ); $tag = $sub_components[0]; - if ( $tag == 'create title' || $tag == 'add title' ) { + /*op-patch|DH|2009-26-08|SF|free text in includeonly tags and rest in noinclude tags|end*/ + /*op-patch|DH|2009-04-22|"WYSIWYG" in info tag|start*/ + if (($tag == 'WYSIWYG') && (strpos($existing_page_content, '__NORICHEDITOR__') === false)) { + $show_FCKEditor = true; + } elseif ( $tag == 'create title' || $tag == 'add title' ) { + /*op-patch|DH|2009-04-22|"WYSIWYG" in info tag|end*/ // handle this only if we're adding a page if ( ! $this->mPageTitle->exists() ) { $form_page_title = $sub_components[1]; @@ -1206,7 +1229,9 @@ } // if the FCKeditor extension is installed, use that for the free text input global $wgFCKEditorDir; - if ( $wgFCKEditorDir && strpos( $existing_page_content, '__NORICHEDITOR__' ) === false ) { + /*op-patch|DH|2009-04-22|"WYSIWYG" in info tag|start*/ + if ( $wgFCKEditorDir && strpos( $existing_page_content, '__NORICHEDITOR__' ) === false && $show_FCKEditor) { + /*op-patch|DH|2009-04-22|"WYSIWYG" in info tag|end*/ $showFCKEditor = SFFormUtils::getShowFCKEditor(); if ( !$form_submitted && ( $showFCKEditor & RTE_VISIBLE ) ) { $free_text = SFFormUtils::prepareTextForFCK( $free_text ); @@ -1250,7 +1275,11 @@ // add Javascript code for form-wide use $javascript_text = ""; if ( $free_text_was_included && $showFCKEditor > 0 ) { - $javascript_text .= SFFormUtils::mainFCKJavascript( $showFCKEditor ); + /*op-patch|SR|2009-06-04|FCKeditor|use rows parameter for editor window height|start*/ + /*op-patch|SR|2009-06-04|FCKeditor|use rows parameter for editor window height|doc|http://dmwiki.ontoprise.com:8888/dmwiki/index.php/Use_rows_parameter_for_FCK_editor_window_height_in_SF*/ + $rowParam = isset( $fck_options['rows'] ) && $fck_options['rows'] > 0 ? $fck_options['rows'] : 5; + $javascript_text .= SFFormUtils::mainFCKJavascript( $showFCKEditor, $rowParam ); + /*op-patch|SR|2009-06-04|FCKeditor|use rows parameter for editor window height|end*/ if ( $showFCKEditor & ( RTE_TOGGLE_LINK | RTE_POPUP ) ) { $javascript_text .= SFFormUTils::FCKToggleJavascript(); } Index: extensions/SemanticForms/includes/SF_FormUtils.php =================================================================== --- extensions/SemanticForms/includes/SF_FormUtils.php (original) +++ extensions/SemanticForms/includes/SF_FormUtils.php (patched version) @@ -342,19 +348,32 @@ static function prepareTextForFCK( $text ) { global $wgTitle; - - $options = new FCKeditorParserOptions(); + /*op-patch|SR|2010-12-06|CKeditor|check for FCK or CK|start*/ + if (class_exists('FCKeditor')) { + $classParser = 'FCKeditorParser'; + $classParserOptions = 'FCKeditorParserOptions'; + } + else if (class_exists('CKEditor')) { + $classParser = 'CKeditorParser'; + $classParserOptions = 'CKeditorParserOptions'; + } + $options = new $classParserOptions(); $options->setTidy( true ); - $parser = new FCKeditorParser(); + $parser = new $classParser(); + /*op-patch|SR|2010-12-06|CKeditor|check for FCK or CK|end*/ $parser->setOutputType( OT_HTML ); $text = $parser->parse( $text, $wgTitle, $options )->getText(); return $text; } - static function mainFCKJavascript( $showFCKEditor ) { + static function mainFCKJavascript( $showFCKEditor, $rowsHeight= 5 ) { global $wgUser, $wgScriptPath, $wgFCKEditorExtDir, $wgFCKEditorDir, $wgFCKEditorToolbarSet, $wgFCKEditorHeight; global $wgHooks, $wgExtensionFunctions; + /*op-patch|SR|2009-06-04|FCKeditor|use rows parameter for editor window height|start*/ + /*op-patch|SR|2009-06-04|FCKeditor|use rows parameter for editor window height|doc|http://dmwiki.ontoprise.com:8888/dmwiki/index.php/Use_rows_parameter_for_FCK_editor_window_height_in_SF*/ + $FCKEditorHeight = ($wgFCKEditorHeight < 300) ? 300 : $wgFCKEditorHeight; + /*op-patch|SR|2009-06-04|FCKeditor|use rows parameter for editor window height|end*/ $newWinMsg = wfMsg( 'rich_editor_new_window' ); $javascript_text = ' var showFCKEditor = ' . $showFCKEditor . '; @@ -386,7 +405,10 @@ if ( substr( $wgFCKEditorDir, -1 ) != '/' ) { $wgFCKEditorDir .= '/'; } - + /*op-patch|SR|2010-12-06|CKeditor|check for FCK or CK|start*/ + $RichEditor = class_exists('CKEditor') ? 'cke' : 'fck'; + if ($RichEditor == 'fck') { + /*op-patch|SR|2010-12-06|CKeditor|check for FCK or CK|end*/ $javascript_text .= <<<END var oFCKeditor = new FCKeditor( "free_text" ); @@ -399,6 +421,17 @@ oFCKeditor.ToolbarSet = "$wgFCKEditorToolbarSet"; oFCKeditor.ready = true; +END; + } else { + $javascript_text .= <<<END +var wgCKeditorInstance = null; //CKEDITOR.replace( 'free_text' ); +var wgCKeditorCurrentMode = "wysiwyg"; +CKEDITOR.ready=true; + +END; + + } + $javascript_text .= <<<END //IE hack to call func from popup function FCK_sajax(func_name, args, target) { sajax_request_type = 'POST' ; @@ -408,7 +441,36 @@ } ); } +/*op-patch|SR|2009-06-04|FCKeditor|use rows parameter for editor window height|start*/ +// if the rows attribute was defined in the form, use fontsize to calculate the editor window height +function getfontsize(el) { + var x = document.getElementById(el); + if (x.currentStyle) { + // IE + var y = x.currentStyle['lineheight']; + } else if (window.getComputedStyle) { + // FF, Opera + var y = document.defaultView.getComputedStyle(x,null).getPropertyValue('line-height'); + } + return y; +} +function getWindowHeight4editor() { + var fsize = getfontsize('free_text'); + // if value was not determined, return default val from $wgFCKEditorHeight + if (!fsize) return $FCKEditorHeight; + if (fsize.indexOf('px') == -1) // we didn't get pixels + // arbitary value, don't hassle with caluclating + return $FCKEditorHeight; + var px = parseFloat(fsize.replace(/\w{2}$/, '')); + // the text in the edit window is slightly larger than the determined value + px = px * 1.25; + return Math.round (px * $rowsHeight); +} +/*op-patch|SR|2009-06-04|FCKeditor|use rows parameter for editor window height|end*/ +END; + if ($RichEditor == 'fck') { + $javascript_text .= <<<END function onLoadFCKeditor() { if (!(showFCKEditor & RTE_VISIBLE)) @@ -418,14 +480,15 @@ if ( realTextarea ) { // Create the editor instance and replace the textarea. - var height = $wgFCKEditorHeight; - if (height == 0) { - // the original onLoadFCKEditor() has a bunch of - // browser-based calculations here, but let's just - // keep it simple - height = 300; - } + /*op-patch|SR|2009-06-04|FCKeditor|use rows parameter for editor window height|start*/ + var height = getWindowHeight4editor(); + // apply caluclations of height from the FCKEditor function itself + // Add the height to the offset of the toolbar. + height += 50; + // Add a small space to be left in the bottom. + height += 20 ; oFCKeditor.Height = height; + /*op-patch|SR|2009-06-04|FCKeditor|use rows parameter for editor window height|end*/ oFCKeditor.ReplaceTextarea() ; FCKeditorInsertTags = function (tagOpen, tagClose, sampleText, oDoc) @@ -606,11 +669,15 @@ addOnloadHook( initEditor ); END; + } else { // ckeditor + $javascript_text .= CKeditor_MediaWiki::InitializeScripts('free_text', $newWinMsg); + } return $javascript_text; } static function FCKToggleJavascript() { // add toggle link and handler + if ( class_exists('FCKeditor') ) { $javascript_text = <<<END function ToggleFCKEditor(mode, objId) @@ -716,6 +783,9 @@ } END; + } else { // ckeditor + $javascript_text = CKeditor_MediaWiki::ToggleScript(); + } return $javascript_text; } Index: extensions/SemanticForms/includes/SF_Utils.php =================================================================== --- extensions/SemanticForms/includes/SF_Utils.php (revision 9578) +++ extensions/SemanticForms/includes/SF_Utils.php (working copy) @@ -245,7 +245,11 @@ $scripts[] = "$sfgScriptPath/libs/SF_autogrow.js"; if ( $wgFCKEditorDir ) - $scripts[] = "$wgScriptPath/$wgFCKEditorDir/fckeditor.js"; + /*op-patch|SR|2010-12-06|CKeditor|check for FCK or CK|start*/ + $scripts[] = class_exists('CKEditor') + ? "$wgScriptPath/$wgFCKEditorDir/ckeditor.js" + : "$wgScriptPath/$wgFCKEditorDir/fckeditor.js"; + /*op-patch|SR|2010-12-06|CKeditor|check for FCK or CK|end*/ $scripts[] = "$sfgScriptPath/libs/SemanticForms.js"; global $wgOut;