CMS Blog
Teamsite category
Ektrons Visual Format Editor version 5.1
Teamsite 6.7.1 Sp1 comes with a new version of Ektrons Visual Format Editor (version 5.1 build 41). This new editor is now also supported on Windows Vista. This update can have a serious impact on your existing content. The problem is that all relative links (in the html of a vf-textbox) are, by default, prefixed with '/iw-cc'. And that will result in a broken link on your website. Catastrophe!
A workaround is presented in the knowledge base (Article 60388 [https://support.interwoven.com/kb/kb_show_article2.asp?ArticleID=60388]) [sick, what a url!] but it is a complex one and one that can be overwritten in any patch or service-pack!
Teamsite's TinyMCE considered very useful, with this hack
I've blogged before on how disappointed I was with Interwoven's implementation of TinyMCE. I now found a way to circumvent the problems with it. This trick (or rather a full-blown hack) will enable you to use all of the configuration-options offered by TinyMCE.
But, WARNING, WARNING, this hack comes with a clear price:
- it comes with no support, not from Interwoven, neither from me.
- future patches can/will be overwrite your changes in dc-editor.js
The hack involves making changes to two files:
Changes to dc-editor.js:
1. Open [iw-home] httpd/webapps/content_center/datacapture/dc_editor.js in an editor
2. Locate the function 'IWTinyMCEEditor.prototype.initialize'
3. Add this code to the bottom of this function:
//custom: custom addition 1
custom_tinymce_additional_configuration(tinymce, editorConfig);
//custom: end of custom addition 1
4. add this code right BELOW this function:
//custom addition 2 (1 line only):
var custom_tinymce_included = true; //to signal that the custom code is include in this file
Changes to custom_config.js:
1. Open [iw-home] httpd/iw/tinymce/config/custom_config.js
2. Add this code to the file (location does not matter, bottom is most appropriate):
//custom: custom code begin
//test to see if our custom code is included in the dc-editor.js file:
if (typeof custom_tinymce_included == 'undefined') {
alert('ERROR: custom-tinymce code is missing from dc_editor.js!!! Please contact your admin.');
}
//the function that does all the hard work and that should be called from dc-editor.js
function custom_tinymce_additional_configuration(tinymce, editorConfig) {
//a hash that sets all the default configuration-values
var defaultConfig = {
/*the key/values as set by interwoven:*/
debug: false, //not sure of the effect of this, use with care!
//mode: "exact", //DO NOT SET THIS
//textarea_trigger: "tinymce", //DO NOT SET THIS
//language: "en", //language pack is managed by the java-code via property; can not be set via custom-config
theme: "advanced",
//init_instance_callback: "parent.getDCFrame().IWTinyMCEEditor.instanceInit", //DO NOT SET THESE
//handle_event_callback: "parent.getDCFrame().IWTinyMCEEditor.handleEvent", //DO NOT SET THESE
plugins : "table,iwlink,iwimg,searchreplace,iespell,paste,contextmenu,zoom,insertdatetime,emotions",
theme_advanced_toolbar_location: "top",
theme_advanced_toolbar_align: "left",
theme_advanced_path_location: "bottom",
/*
theme_advanced_b***ons1 : "whitespace,styleselect,formatselect,fontselect,fontsizeselect,forecolor,|,bold,italic,underline",
theme_advanced_b***ons2 : "bullist,numlist,|,outdent,indent,|,justifyleft,justifycenter,justifyright,justifyfull,|,cut,copy,paste,pasteword,search,|,undo,redo,|,iespell,anchor,link,unlink",
theme_advanced_b***ons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap,|,image,table,help,code",
theme_advanced_styles : "Header 1=header1;Header 2=header2;Header 3=header3",
table_styles : "Header 1=header1;Header 2=header2;Header 3=header3",
table_cell_styles : "Header 1=header1;Header 2=header2;Header 3=header3;Table Cell=tableCel1",
table_row_styles : "Header 1=header1;Header 2=header2;Header 3=header3;Table Row=tableRow1",
*/
//theme_advanced_b***ons1 : b***onRow1, //DO NOT SET THESE
//theme_advanced_b***ons2 : b***onRow2, //DO NOT SET THESE
//theme_advanced_b***ons3 : b***onRow3, //DO NOT SET THESE
//theme_advanced_styles : themeStyles, //DO NOT SET THESE
//table_styles : tableStyles, //DO NOT SET THESE
//table_cell_styles : tableCellStyles, //DO NOT SET THESE
//table_row_styles : tableRowStyles, //DO NOT SET THESE
content_css : "/iw/tinymce/config/custom_content.css",
paste_create_paragraphs : false,
paste_use_dialog : true,
/*the key/values from the 'general' options (see: /iw/tinymce/docs/reference_configuration.html)*/
//ask: //not very useful for templating
//elements: "", //DO NOT SET THIS
doc_language: "en",
directionality : "ltr",
//auto_reset_designmode : true, //not useful for templating
//auto_focus : "mce_editor_2", //not useful for teamplating??
//nowrap: false, //no wrap seems a little buggy....
b***on_tile_map: false, //untested
//auto_resize : true //experimental
//browsers : "msie,gecko" //not useful for templating
//dialog_type : "modal" //not useful for templating
/*the key/values from the 'cleanup/output' options (see: /iw/tinymce/docs/reference_configuration.html)*/
cleanup: true, //untested
//valid_elements : "" //better not to touch, use extended_valid_elements instead
extended_valid_elements: "",
invalid_elements: "",
trim_span_elements:true,
//verify_css_classes : true //not useful for templating
verify_html : true,
preformatted : false,
//encoding : "xml" //not useful/dangerous for templating
auto_cleanup_word : false,
cleanup_on_startup : false,
fix_content_duplication : true,
//inline_styles : true //experimental
convert_newlines_to_brs : false,
force_br_newlines : false,
force_p_newlines : true,
//entities : "" //better leave untouched
entity_encoding : "named",
//remove_linebreaks : false //not useful for templating
/* all other options are skipped here */
/* a dummy to end the hash without a , */
xxxx: 'yyyy'
};
//defaultConfig = {};
//loop over the hash set above
for (var prop in defaultConfig) {
//newvalue: if set in param then use this else use value from hash above
var newValue = editorConfig.getConfigItem(prop) != "" ? editorConfig.getConfigItem(prop) : defaultConfig[prop];
//set the value
tinymce.settings[prop] = newValue;
}
}
//custom: custom code end
Now you can make your custom configuration of TinyMce in the Teamsite way. Fi:
IWTinyMCECustomConfig("config-id", "directionality", "rtl");
Note that this code will give an alert to the end-user if your dc-editor.js is overwritten. Further, in IE6 (oh, not yet IE again!), if you have more then 1 textarea with different configuration-names, not all options work a required.
The above has been tested on Teamsite 6.7.1 (at solaris). Later Service Packs and versions have modified TinyMce implementations.
Good luck with it.
What is new in Teamsite 6.7.2?
If you want to know more about the new Teamsite 6.7.2 version I would recommend the devnet-webcast at: Devnet webcasts (free membership) but in short here is a quick (but disappointing) list:
1. Vista support (what now already?)
2. Teamsite and Livesite are now included in 1 install (which makes it a 1.3GB (!!) download).
3. Templating forms: one can now 'search and replace' in a dcr-form.
4. Livesite now offers 'fixed layouts', meaning that a developer can now better control in what layout area a component can be placed by teh end-user. In my opinion, this is a major 'must have' but I'm unsure if the current implementation really covers all (complex) business-requirements that one can think of in this area.
5. Livesite has better/more support for content targeting based on all sorts of profiles.
This Teamsite release shows the strategic move from Interwoven from a cms vendor to marketing tools vendor. Something that pleases Gartner analysts and that might not be a bad idea if one would have a mature finished cms tool set. :-) That's why I'm quite disappointed with this release.



