History of FckeditorPackage
Version 13
FckeditorPackage
A WYSIWYG Editor Integrated into Bitweaver
FCKeditorPackage
Integrated into bitweaver comes FCKeditor, a WYSIWYG editor from fckeditor.net. (See also TinyMCE package.)
Features
- Multiple Browser Support Including:
- IE 5.5+ (Windows)
- Firefox 1.0+
- Mozilla 1.3+
- Netscape 7+.
- XHTML 1.0 Output
- CSS Support: For easier integration with a theme.
- Font formatting: type, size, color, style, bold, italic, etc
- Text formatting: alignment, indentation, bullets list, etc
- Cut, Paste and Paste as Plain Text, Undo and Redo
- Paste from Word cleanup with auto detection
- Link and anchors support
- Table creation and editing (add, delete rows, etc) - one of the best systems in the market.
- Table cells editing (size, colors, etc)
- Right click context menus support
- Support for Toolbar Customization
- Skins
- Spell Checker Integration
- Automatic browser detection and customization
- Full Page Mode
- Easy to Use
- Source Code View
NOTE: FCKeditor is currently NOT compatible with the Ajax Comments feature in LibertyPackage.
Toolbars
Bitweaver includes the ability to use one of several toolbars with FCKeditor easily. It is also possible to customize the toolbar by editing the fckeditor/jscripts/fckconfig.js file to specify your own and then adding it to fckeditor/admin/admin_fckeditor_inc.php.Skins
Bitweaver includes the ability to skin the interface with one of the three default skins. It is also possible to create your own skin. You will have to add it to the fckeditor/admin/admin_fckeditor_inc.php file to add it to the administration interface.Your own plugins for FCKeditor
If you want to write your own plugin for FCKeditor, here are two good tutorials to get you started:- Creating & Installing a Plugin in FCKeditor (How-to from FCKeditor's Wiki at fckeditor.net)
- Creating a Non-dialog Based Plugin (Step-by-step guide in FCKeditor's forum at sourceforge.net)
bitweaver's Plugins for FCKeditor
Split
The Split plugin gives you a button that will insert a split tag: ...split... into your content. This is good for blog posts and articles where you want to easily define a read more section. Now your users don't need to know how to use ...split... they can just click the "Insert Split" button, which includes a hover tool tip letting you know it is for adding a Read More section. To enable Split in your FCKeditor, open the file fckconfig.js and uncomment the following line:/fckeditor/jscripts/fckconfig.js
<?php
FCKConfig.Plugins.Add( 'split' ) ;
?>
Now you need to add Split to your toolbar list, for example like:
/fckeditor/jscripts/fckconfig.js
<?php
FCKConfig.ToolbarSets["Basic"] = [
['Source'],['Bold','Italic','-','OrderedList','UnorderedList','-','Link','Unlink','-','Split']
] ;
?>
Attachment
The Attachment plugin integrates bitweaver's native LibertyAttachments features into the FCKeditor. Note that the current state of the Attachment plugin only supports previewing of images, and does not yet create attachment associations between content and uploaded files. Like the attachment tab in most liberty content packages this FCK plugin will let you upload files via Ajax to associate with your user account. You can also get a list of all attachments your user has ever uploaded. From the resulting list it is a single click to insert attachment code into your text. The FCK plugin will also preview the attachment image in the FCK editing interface. To enable Attachment in your FCKeditor you need to edit fckconfig.js and FCKeditor's header_inc.tpl:/fckeditor/jscripts/fckconfig.js
<?php
// add or uncomment:
FCKConfig.Plugins.Add( 'attachment' ) ;
?>
Now you need to add Attachment to your toolbar list, for example like:
/fckeditor/jscripts/fckconfig.js
<?php
FCKConfig.ToolbarSets["Basic"] = [
['Source'],['Bold','Italic','-','OrderedList','UnorderedList','-','Link','Unlink','-','Attachment']
] ;
?>
Finally, include a number of the MochiKit Javascript library files:
/fckeditor/templates/header_inc.tpl
<?php
{if $gBitSystem->isPackageActive('fckeditor') }
<script src="../util/javascript/libs/MochiKit/Base.js" type="text/javascript"></script>
<script src="../util/javascript/libs/MochiKit/Iter.js" type="text/javascript"></script>
<script src="../util/javascript/libs/MochiKit/Async.js" type="text/javascript"></script>
... rest of header code
{/if}
?>
Image Browser Fix
To get the Resources Browser (Image > Browse Server) working so you can upload files, flash, images and media, first change 'asp' to 'php' in fckconfig.js:/fckeditor/jscripts/editor/fckconfig.js
<?php
// original:
// var _FileBrowserLanguage = 'asp' ;
// var _QuickUploadLanguage = 'asp' ;
// change to:
var _FileBrowserLanguage = 'php' ;
var _QuickUploadLanguage = 'php' ;
?>
Now create new directories in your storage directory:
new directories
<?php
/storage/Image/
/storage/Media/
/storage/Flash/
/storage/File/
?>
Now edit the config.php of FCKeditor's Filemanager:
/fckeditor/jscripts/editor/filemanager/browser/default/connectors/php/config.php
<?php
// original:
// $Config['Enabled'] = false;
// change to:
$Config['Enabled'] = true;
// original:
// $Config['UserFilesPath'] = "/UserFiles/";
// change to:
// your storage directory or any other directory that you want your media to be stored in.
$Config['UserFilesPath'] = "/bitweaver/storage/";
?>
Make sure apache can write to the directories you created above:
command line
<?php
chmod -R 777 storage/
?>
Now point your browser to fckconfig.js (http://localhost/bitweaver/fckeditor/jscripts/fckconfig.js) and hit reload to makes sure that your changes are present in your browser.
Custom configuration files
By setting up your FCKeditor with a custom fckconfig.js, updates become less problematic, and playing around with different settings becomes easier:
<?php
1. copy /fckeditor/templates/header_inc.tpl to your theme folder:
2. /themes/styles/mytheme/fckeditor/header_inc.tpl
3. find a line like:
4. var oFCKeditor = something ;
5. write this underneath:
6. oFCKeditor.Config["CustomConfigurationsPath"] = {$smarty.const.THEMES_PKG_URL}styles/mytheme/fckeditor/fckconfig.js";
7. you might also want this next extra line for ultra-fine-control over the toolbar:
8. oFCKeditor.ToolbarSet = "finetunedtoolbar";
?>
Now, of course, create the file fckconfig.js in the path mentioned above. Copy desired variables from their documentation pages. Now if the FCKeditor package is updated, your settings are not lost. FCKeditor's own fckconfig.js stays where it is, the settings of both files are considered automatically. To take it even one step further, externalize the XML file that holds FCK's styles. Copy the file fckstyles.xml from /fckeditor/jscripts/fckstyles.xml to your custom theme. Now you can control what FCK's style drop down looks like to the user. For example, your fckconfig.js file might look like this:
<?php
FCKConfig.Plugins.Add( 'attachment' ) ;
FCKConfig.BodyClass = 'fck';
FCKConfig.EditorAreaCSS = '/themes/styles/mystyle/mystyle.css';
FCKConfig.ForceStrongEm = true;
FCKConfig.StylesXmlPath = '/themes/styles/mystyle/fckeditor/fckstyles.xml';
FCKConfig.ToolbarSets["finetunedtoolbar"] = [
['Source','Style','PasteText','RemoveFormat','Undo','Redo','Bold','Italic','OrderedList','UnorderedList','Outdent','Indent'],
['Link','Unlink','Table','SpecialChar','FitWindow','Attachment']
];
// for UTF-8 + Text Diff uncomment these 4 lines:
// FCKConfig.ProcessHTMLEntities = false;
// FCKConfig.IncludeLatinEntities = false;
// FCKConfig.IncludeGreekEntities = false;
// FCKConfig.ProcessNumericEntities = false;
?>
How to use a real Text_Diff (and UTF-8)
If you're using the HTML format and also sometimes the WYSIWYG editor and still want to compare different versions of a Wiki page efficiently, you want Text_Diff, the PEAR package that should be installed on your system. There are only 2 problems. First, to make Text_Diff work in a UTF-8 (e.g., non English) environment, you need to stop FCKeditor from processing special characters, otherwise Text_Diff will always find that Motörhead is something else than Motörhead. For that, the last 4 variables in that code sample above need to be uncommented. Next, in /wiki/templates/page_history.tpl around line 40:/wiki/templates/page_history.tpl
<?php
{*
// original:
// {$diffdata}
// change to:
*}
{$diffdata|html_entity_decode}
?>
Both can be desirable, but the latter version renders HTML, so that Text_Diff'ing might not result in an exact view of all characters that have actually changed, but in a nicy-fied view of what content has actually changed:
before (normal plain text diff) | after (html enhanced diff) |
How to prevent the FCKifying of certain textareas
There are quite a few textareas that should not be FCKified even if the editor is supposed to be available in general. Examples would be the textarea to add trackback URLs to a blog posting and many of the kernel's textareas. To prevent the editor to hook on to your textareas, don't use bitweaver's "textarea" Smarty-plugin, but normal plain HTML:somepackage/templates/some.tpl
<?php
{*
// instead of:
// {textarea id="someid" rows=6 help="somehelpnote"}{/textarea}
// write:
*}
<textarea id="someid" rows=6 help="somehelpnote"></textarea>
?>