wiki:0.5/Customization

Customization

Since 0.4, getting started examples are integrated in WYMeditor's package. See the 'examples' directory.

$(jqexpr).wymeditor(options)

This function will be applied to elements matching a jQuery expression jqexpr.

Example: Replaces each textarea having the class wymeditor by a WYMeditor instance:

$("textarea.wymeditor").wymeditor();

Parameters

The function accepts an optional parameter: an array of options.

Example: Initializes WYMeditor HTML content and displays an alert box when ready:

$(".wymeditor").wymeditor({

  //options
  html: "<p>test<\/p>",
  postInit: function() {
    alert('OK');
  }
});

List of options

Check the file jquery.wymeditor.js, function $j.fn.wymeditor for the complete list of options and their default values.

html

Initializes the editor's HTML content.

Example:

  html: "<p>Hello, World!<\/p>"

Note: in Javascript, it's a good habit to escape forward slashes, like this: <\/p>.

basePath

WYMeditor's relative/absolute base path (including the trailing slash), used while loading the iframe and the dialogs.

Example:

  basePath: "/admin/edit/wymeditor/"

This value is automatically guessed by computeBasePath, which looks for the script element loading jquery.wymeditor.js.

skinPath

WYMeditor skin (theme) path, used to load the skin.

Example:

  skinPath: "wymeditor/skins/default/"

This value is automatically guessed, based on the basePath value.

wymPath

WYMeditor main JS file path.

This value is automatically guessed by computeWymPath, which looks for the script element loading jquery.wymeditor.js.

iframeBasePath

WYMeditor iframe base path.

This value is automatically guessed, based on the basePath value.

jQueryPath

jQuery JS file path.

Example:

  jQueryPath: "/js/jquery.js"

This value is automatically guessed by computeJqueryPath, which looks for the script element loading jquery.js.

lang

The language to use with WYMeditor. Default is English (en). Codes are in ISO-639-1 format.
Language packs are stored in the wymeditor/lang directory.

How to use a custom language

Just initialize the option:

$('.wymeditor').wymeditor({ lang: 'pl' });

boxHtml

The editor container's HTML. This option allows you to customize the HTML containing a WYMeditor instance.

logoHtml

The WYMeditor logo HTML. This option allows you to customize the HTML which displays the WYMeditor logo.

If you prefer to hide the WYMeditor logo, use an empty string:

$('.wymeditor').wymeditor({ logoHtml: '' });

In such a case, please consider making a donation to the project.

iframeHtml

The iframe (used for editing) container's HTML.

styles & stylesheet

Allows you to easily configure the editor' styles.
Advantageously replaces editorStyles, dialogStyles and classesItems.

Define the styles using the styles option OR point to an external stylesheet, using the stylesheet option.

Example, using styles:

styles:                                                            
      '/* PARA: Date */                                                    '+
      '.date p{                                                            '+
      '  color: #ccf;                                                      '+
      '  /* background-color: #ff9; border: 2px solid #ee9; */             '+
      '}                                                                   '+
      '                                                                    '+
      '/* PARA: Hidden note */                                             '+
      '.hidden-note p /* p[@class!="important"] */ {                       '+
      '     display: none;                                                 '+
      '    /* color: #999; border: 2px solid #ccc; */                      '+
      '}                                                                   '

Example, using stylesheet:

$('.wymeditor').wymeditor({ stylesheet: 'stylesheet.css' });

Use  this example stylesheet as a reference.

editorStyles

An array of classes, applied on the editor's content, in the form of: {'name': 'value', 'css': 'value'}

Example:

  editorStyles: [
    {'name': '.hidden-note', 'css': 'color: #999; border: 2px solid #ccc;'},
    {'name': '.border', 'css': 'border: 4px solid #ccc;'}
  ]

toolsHtml

The tools panel's HTML.

toolsItemHtml

The tools buttons' HTML template.

toolsItems

An array of tools buttons, inserted in the tools panel, in the form of: {'name': 'value', 'title': 'value', 'css': 'value'}

Example:

  toolsItems: [
    {'name': 'Bold', 'title': 'Strong', 'css': 'wym_tools_strong'}, 
    {'name': 'Italic', 'title': 'Emphasis', 'css': 'wym_tools_emphasis'}
  ]

Default value:

  toolsItems: [
    {'name': 'Bold', 'title': 'Strong', 'css': 'wym_tools_strong'}, 
    {'name': 'Italic', 'title': 'Emphasis', 'css': 'wym_tools_emphasis'},
    {'name': 'Superscript', 'title': 'Superscript', 'css': 'wym_tools_superscript'},
    {'name': 'Subscript', 'title': 'Subscript', 'css': 'wym_tools_subscript'},
    {'name': 'InsertOrderedList', 'title': 'Ordered_List', 'css': 'wym_tools_ordered_list'},
    {'name': 'InsertUnorderedList', 'title': 'Unordered_List', 'css': 'wym_tools_unordered_list'},
    {'name': 'Indent', 'title': 'Indent', 'css': 'wym_tools_indent'},
    {'name': 'Outdent', 'title': 'Outdent', 'css': 'wym_tools_outdent'},
    {'name': 'Undo', 'title': 'Undo', 'css': 'wym_tools_undo'},
    {'name': 'Redo', 'title': 'Redo', 'css': 'wym_tools_redo'},
    {'name': 'CreateLink', 'title': 'Link', 'css': 'wym_tools_link'},
    {'name': 'Unlink', 'title': 'Unlink', 'css': 'wym_tools_unlink'},
    {'name': 'InsertImage', 'title': 'Image', 'css': 'wym_tools_image'},
    {'name': 'InsertTable', 'title': 'Table', 'css': 'wym_tools_table'},
    {'name': 'Paste', 'title': 'Paste_From_Word', 'css': 'wym_tools_paste'},
    {'name': 'ToggleHtml', 'title': 'HTML', 'css': 'wym_tools_html'},
    {'name': 'Preview', 'title': 'Preview', 'css': 'wym_tools_preview'}
  ]

containersHtml

The containers panel's HTML.

containersItemHtml

The containers buttons' HTML template.

containersItems

An array of containers buttons, inserted in the containers panel, in the form of: {'name': 'value', 'title': 'value', 'css': 'value'}

Example:

  containersItems: [
    {'name': 'P', 'title': 'Paragraph', 'css': 'wym_containers_p'},
    {'name': 'H1', 'title': 'Heading_1', 'css': 'wym_containers_h1'}
  ]

classesHtml

The classes panel's HTML.

classesItemHtml

The classes buttons' HTML template.

classesItems

An array of classes buttons, inserted in the classes panel, in the form of: {'name': 'value', 'title': 'value', 'expr': 'value'}, where expr is a jQuery expression.

Example:

  classesItems: [
    {'name': 'date', 'title': 'PARA: Date', 'expr': 'p'},
    {'name': 'hidden-note', 'title': 'PARA: Hidden note', 'expr': 'p[@class!="important"]'}
  ]

In this example, the class 'date' can be applied on paragraphs, while the class 'hidden-note' can be applied on paragraphs without the class 'important'.

statusHtml

The status bar's HTML.

htmlHtml

The HTML box's HTML.

Selectors

WYMeditor uses jQuery to select elements of the interface. You'll need these options if you e.g. customize the panels' HTML.

  • boxSelector
  • toolsSelector
  • toolsListSelector
  • containersSelector
  • classesSelector
  • htmlSelector
  • iframeSelector
  • statusSelector
  • toolSelector
  • containerSelector
  • classSelector
  • htmlValSelector
  • hrefSelector
  • srcSelector
  • titleSelector
  • altSelector
  • textSelector
  • rowsSelector
  • colsSelector
  • captionSelector
  • submitSelector
  • cancelSelector
  • previewSelector
  • dialogLinkSelector
  • dialogImageSelector
  • dialogTableSelector
  • dialogPasteSelector
  • dialogPreviewSelector
  • updateSelector

Example:

  classesSelector: ".wym_classes"

updateSelector & updateEvent

Allows you to update the value of the element replaced by WYMeditor (typically a textarea) by the editor's content while e.g. clicking on a button in your page.
updateSelector is a jQuery expression, updateEvent is a  jQuery event.

Example:

  updateSelector: ".my-submit-button",
  updateEvent:    "click"

dialogFeatures

The dialogs' features.

Example:

  dialogFeatures: "menubar=no,titlebar=no,toolbar=no,resizable=no,width=560,height=300,top=0,left=0"

dialogHtml

The dialogs' HTML template.

dialogLinkHtml

The link dialog's HTML template.

dialogImageHtml

The image dialog's HTML template.

dialogTableHtml

The table dialog's HTML template.

dialogPasteHtml

The 'Paste from Word' dialog's HTML template.

dialogPreviewHtml

The preview dialog's HTML template.

dialogStyles

An array of classes, applied to the dialogs, in the form of: {'name': 'value', 'css': 'value'}

skin

The skin you want to use.

Example:

skin: 'custom'

stringDelimiterLeft & stringDelimiterRight

WYMeditor uses a simple function to replace strings delimited by these two strings for e.g. the l10n system.

preInit(wym)

A custom function which will be executed once, before WYMeditor's initialization.

Parameters:

  • wym: the WYMeditor instance

preBind(wym)

A custom function which will be executed once, before binding handlers on events (e.g. buttons click).

Parameters:

  • wym: the WYMeditor instance

postInit(wym)

A custom function which will be executed once, when WYMeditor is ready.

Parameters:

  • wym: the WYMeditor instance

Example:

  postInit: function(wym) {
    //activate the 'tidy' plugin, which cleans up the HTML
    //'wym' is the WYMeditor instance
    var wymtidy = wym.tidy();
    wymtidy.init();
  }

preInitDialog(wym,wdw)

A custom function which will be executed before a dialog's initialization.

Parameters:

  • wym: the WYMeditor instance
  • wdw: the dialog's window object

postInitDialog(wym,wdw)

A custom function which will be executed when a dialog is ready.

Parameters:

  • wym: the WYMeditor instance
  • wdw: the dialog's window object