[ Index ]
 

Code source de Kupu-1.3.5

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/doc/ -> JSAPI.txt (source)

   1  ==================
   2  Kupu API reference
   3  ==================
   4  
   5  Kupu can be customized in several ways: controls can be customized or
   6  hidden using CSS, elements can be modified using TAL (modifying the
   7  macro) and more advanced customization can be done by extending (or
   8  modifying, although this is usually not advised) the JavaScript,
   9  either in the macro or in seperate .js files. This document will give
  10  a short description of how to use and extend the Kupu JavaScripts and
  11  a reference of the public Kupu API.
  12  
  13  
  14  How to use Kupu
  15  ===============
  16  
  17  The KupuEditor and KupuUI objects
  18  ---------------------------------
  19  
  20  Generally the body tag of the document will contain a call to the
  21  initKupu function. This is the glue code of Kupu, here's where all the
  22  objects get instantiated and tied together to form the
  23  application. When doing large customizations, this function will
  24  usually be overwritten or extended. The default implementation takes 1
  25  argument (the id of the iframe it will control) and return a reference
  26  to the core object, KupuEditor.
  27  
  28      kupu = initKupu("kupu-editorframe");
  29  
  30  The KupuEditor object (in this case called 'kupu') will be the object
  31  with which you can control the iframe, the UI and
  32  tools. Customizations should generally not involve extending the
  33  KupuEditor object, but rather by plugging in new tools. Usage is quite
  34  straightforward, for a reference of the public methods see below.
  35  
  36  The UI object holds event handlers for the toolbar buttons. This is a
  37  core Kupu object and should generally be left untouched. The event
  38  handlers, although the preferred method of attaching events is dynamic
  39  from inside the objects rather then from HTML, should be attached to
  40  the buttons from the template (this made the code a lot cleaner, it
  41  might change in future versions though). Therefore a reference to the
  42  UI object must be retrieved from the KupuEditor object using the
  43  getTool method:
  44  
  45      kupuui = kupu.getTool('ui');
  46  
  47  Note that the reason why this method is called getTool is that the UI
  48  is essentially treated as a tool, an Kupu plugin (more about those 
  49  later). The string 'ui' is the id by which the object is registered 
  50  in initKupu. Usually the ui object and the button bindings can just 
  51  be copied from the kupu.html file (if you don't use ZPT macros in the 
  52  kupumacros.html file).
  53  
  54  Tools and extending Kupu
  55  ------------------------
  56  
  57  Tools are extensions of Kupu. A tool can be seen as a plugin in the
  58  Kupu editor, providing additional functionality. Tools will usually be
  59  the objects that will be extended or overridden.
  60  
  61  A tool should usually subclass KupuTool and will usually override the
  62  'initialize' method (which will be called when the tool is registered to
  63  the KupuEditor object) and the updateState method (which will be
  64  called on click and certain keyup events on the iframe so that the
  65  state of the tool (e.g. add or edit mode) can be controlled. Events on
  66  elements should generally be bound to the methods from inside the
  67  tools.
  68  
  69  The initialize method will be called with a single argument, a
  70  reference to the editor object. The method should at least store that
  71  reference on this. Note that if you don't override the method, the
  72  KupuObject class provides a default implementation that does exactly
  73  that. The updateState method will be called with 2 arguments, the
  74  first is a reference to the current selected element and the second
  75  the event object.  If the tool doesn't want to react to state changes,
  76  it doesn't have to override the method: the superclass will provide a
  77  dummy implementation.
  78  
  79  Usually a tool will be created and registered inside initKupu,
  80  although it can also be done from an external document or the HTML. An
  81  object is registered to the KupuEditor object as such:
  82  
  83      var myTool = new MyTool();
  84      kupu.registerTool('my-tool', myTool);
  85  
  86  As shown above, the getTool method of the KupuEditor object can be
  87  used to retrieve a reference to the tool later on (so there's no need
  88  to store a reference in the global namespace or anything).
  89  
  90  For a nice, small example of a tool, see the PathTool in the
  91  kupubasetools.js file. 
  92  
  93  ToolBoxes and larger Tools
  94  --------------------------
  95  
  96  Most tools will both harbour functionality and stuff like event handlers 
  97  and references to HTML elements. To make sure the tool can be used in as
  98  much different situations as possible, it is advised to split it up in 2
  99  pieces, one for the logic and one for the UI-related methods and 
 100  attributes.
 101  The standard way for doing this is using a subclass of KupuTool for the
 102  tool and a subclass of KupuToolBox for the UI-part, and register the ToolBox
 103  to the Tool using the registerToolBox method. It is not mandatory to use
 104  this baseclass, not even to use registerToolBox, but it should be sufficient.
 105  
 106  For a more complex (and useful) example of a Tool combined with a ToolBox 
 107  see the LinkTool.
 108  
 109  Public API
 110  ==========
 111  
 112  Helper functions (kupuhelpers.js)
 113  ---------------------------------
 114  
 115  Methods on KupuObject (kupueditor.js)
 116  -------------------------------------
 117  
 118      registerTool(id, tool) 
 119          - register a tool
 120  
 121      getTool(id)
 122          - return a previously registered tool
 123  
 124      registerFilter(filter)
 125          - register a ContentFilter
 126  
 127      updateState(event)
 128          - trigger the updateState machinery
 129  
 130      saveDocument()
 131          - save the document
 132  
 133      prepareForm(form[, fieldid)
 134          - add a hidden field to form with the id fieldid (defaults
 135              to 'kupu'), should be called before the form is subbmited
 136              to make the Kupu content get sent to the server using POST.
 137  
 138      execCommand(command[, param])
 139          - perform an execCommand on the editor iframe
 140  
 141      getSelectedNode()
 142          - returns the currently selected node
 143  
 144      getNearestParentOfType(node, type)
 145          - returns the nearest parent of node (or node itself) of 
 146              element type
 147              
 148      getDocument()
 149          - returns the document object
 150  
 151      getInnerDocument()
 152          - returns the iframe.contentWindow.document
 153  
 154      insertNodeAtSelection(node)
 155          - insert a new node on the cursor location
 156  
 157      logMessage(message, severity)
 158          - log a message with the logger, message is the message to log and
 159              severity is an integer that can be 0 (default) for debug messages,
 160              1 for warnings and 2 for errors (different loggers can be plugged
 161              into Kupu, but a severity of 2 will usually make the logger raise
 162              an exception).
 163  
 164      getBrowserName()
 165          - return the name of the client browser, will return IE, Mozilla
 166              or raise an exception if the client uses a non-supported one.
 167  
 168      getXMLBody(transform)
 169          - transform is a Sarissa node.
 170            Returns the body tag (or body tags if more than one) as text.
 171  
 172      getHTMLBody()
 173          - returns the body node as text (including <body> tag). Will return all
 174            body nodes if there are multiple bodies.
 175  
 176      setHTMLBody(text)
 177          - sets the contents of the body to the specified HTML text
 178            (which should not include a body tag). If there are multiple
 179            bodies they are all replaced.
 180  
 181  Methods on tools (kupubasetools.js)
 182  -----------------------------------
 183  
 184      KupuTool - the baseclass for tools
 185  
 186          initialize(editor)
 187              - initialize the tool
 188  
 189          updateState(selectedNode, event)
 190              - update the state of the tool if required
 191  
 192          registerToolBox(id, toolbox)
 193              - register a ui object (ToolBox)
 194  
 195      KupuToolBox - the baseclass for toolboxes (view elements of tools)
 196  
 197          initialize(tool, editor)
 198              - initialize the toolbox
 199  
 200          updateState(selNode, event)
 201              - update the state of the UI according to the iframe's state
 202  
 203  Tool implementations (depending on the complexity of the tool a tool either
 204      exists of a single Tool class, or of a Tool and a ToolBox class, the 
 205      ToolBox classes will only harbour event handlers and such so will
 206      therefore not be documented):
 207  
 208      KupuUI - the toolbar, only contains event handlers and generic button
 209          handlers
 210  
 211          basicButtonHandler(action)
 212              - handle a basic action like Bold or Italic
 213  
 214          saveButtonHandler()
 215  
 216          saveAndExitButtonHandler()
 217  
 218          cutButtonHandler()
 219  
 220          copyButtonHandler()
 221  
 222          pasteButtonHandler()
 223              - basic button handlers for a specific action
 224  
 225          setTextStyle(style)
 226              - set the style of the current text block
 227  
 228      ColorchooserTool - the color picker (part of the toolbar)
 229  
 230          openFgColorChooser()
 231              - open the colorchooser to pick a foreground color
 232  
 233          openHlColorChooser()
 234              - open the colorchooser to pick a background color
 235  
 236          chooseColor()
 237              - event handler for a click inside the colorchooser
 238  
 239          show()
 240              - show the colorchooser
 241  
 242          hide()
 243              - hide the colorchooser
 244  
 245          createColorChooser(table)
 246              - create the colorchooser and inside the table
 247  
 248      PropertyTool - set the title and metadata of a document
 249  
 250          updateProperties()
 251              - set the properties on the document from the form data
 252  
 253      LinkTool - add and edit hyperlinks
 254  
 255          createLink(url, type, name, target, title)
 256              - create a link around the current selection
 257  
 258          deleteLink()
 259              - delete the current link, if any
 260  
 261      ImageTool - add and edit images
 262  
 263          createImage(url, alttext, imgclass)
 264              - create an image
 265  
 266          setImageClass(imgclass)
 267              - set the class of the selected image
 268  
 269      TableTool - add and edit tables
 270  
 271          addPlainTable() 
 272              - add a table with default settings
 273  
 274          createTable(rows, cols, makeHeader, tableclass)
 275              - create a table
 276  
 277          addTableRow()
 278              - add a row underneath the current selected one
 279  
 280          delTableRow()
 281              - delete the current table row
 282  
 283          addTableColumn()
 284              - add a column to the right of the current one
 285  
 286          delTableColumn()
 287              - delete the current table column
 288  
 289          setColumnAlign()
 290              - set the alignment of the current column according to the form
 291                data
 292  
 293          setTableClass()
 294              - set the table class according to the form data
 295  
 296      ListTool - manage lists (part of the toolbar)
 297  
 298          addUnorderedList()
 299              - add an unordered list
 300  
 301          addOrderedList()
 302              - add an ordered list
 303  
 304          setUnorderedListStyle()
 305              - set the style of the nearest unordered list parent according to
 306                the form data
 307  
 308          setOrderedListStyle()
 309              - set the style of the nearest ordered list parent according to
 310                the form data
 311  
 312      ShowPathTool - show the path to the current node in the status bar
 313  
 314          no methods besides updateState()
 315  
 316  Additional helper functions, objects and methods:
 317  -------------------------------------------------
 318  
 319      addEventHandler(element, event, method, context)
 320          - bind <method> to <event> on <element>, using <context> as context
 321              ('this' inside the method body).
 322  
 323      removeEventHandler(element, event, method)
 324          - remove binding of <method> for <event> from <element>
 325  
 326      selectSelectItem(select, item)
 327          - select item <item> from HTML optionlist <select>
 328  
 329      loadDictFromXML(document, islandid)
 330          - load configuration values from an XML chunk
 331  
 332      Logger objects:
 333  
 334          When the KupuEditor gets initialized, it expects a logging
 335          object with one method (log(message, severity)) to be passed
 336          along as an argument. Two loggers are defined: 1 called
 337          DebugLogger that will alert all messages and 1 called
 338          PlainLogger that should be instantiated with the ids of the
 339          element in which debug messages will be shown and the maximum
 340          number of messages as arguments, that will show all debug
 341          messages and warnings to the debug window and will raise an
 342          exception for all errors.
 343  
 344      ContextFixer:
 345          
 346          A helper class to fix the contexts in methods when called in a
 347          specific way (usually when used as an event handler). In some
 348          cases the 'this' variable inside functions can change, this
 349          class helps in resetting it to the object on which the method
 350          is defined (and actually it can help in setting a different
 351          context as well, although this will not generally be
 352          advised). For more information see the source.
 353  
 354      Timer:
 355          
 356          A herlper class to overcome a problem with
 357          window.setTimeout(), this has the problems that it isn't
 358          usable to call object methods without very nasty complications
 359          and that it doesn't allow usage of variable references as
 360          arguments (both because the argument that is executed is a
 361          string that will be evalled in global context). For more
 362          information see the source.
 363  
 364      Array.prototype.contains(element):
 365  
 366          - a helper method added to the prototype of Array that will
 367            return true if element is in the array, false if it isn't.
 368  
 369      String.prototype.strip(string):
 370  
 371          - a helper method added to the prototype of String that strips
 372            all outer whitespace. The original string is not affected; a
 373            new instance of String is returned.


Généré le : Sun Feb 25 15:30:41 2007 par Balluche grâce à PHPXref 0.7