Revision 2.0.418


r418 | jschneiderameos | 2009-10-19 17:38:46 +0200 (Lun, 19 oct 2009) | 6 lines

Debug have been made in ajax management, and with sys_event params.

r417 | jschneiderameos | 2009-10-14 16:16:49 +0200 (Mer, 14 oct 2009) | 33 lines

  -> removed calls to console.log()

  -> one can now trigger submits forcing a given rdt as sender by calling majixSubmitXXXX() on it
  -> isNaturalSubmitter(): now also returns true for image submit-buttons
  -> new method trigger(); one may now fire ajx events in client context by calling rdt('rdtname').trigger('eventname')

  -> corrected bug in server event handling
  -> new method majixSubmitSearch(), majixSubmitFull(), majixSubmitClear(), majixSubmitRefresh(), majixSubmitDraft()

  -> now uses tx_ameosformidable->rdt() method

  -> new method isDomEventHandler($sHandler) that tells if a given event handler is built in DOM or custom

  -> (submit) mode may also be search on server events now

  -> corrected a bug when /allowmanualedition=true

  -> forced radio to not be considered as a natural submitter; was breaking js because domNode() returned null as it is a compouned HTML object

  -> new property /pager/avoidPageOneInUrl=boolean, default true; if true, urls generated by the lister will omit the page parameter for the first page
  -> adapted the lister to allow formidable to navigate thru columns as thru childs when using the tx_ameosformidable->rdt() method

r416 | jschneiderameos | 2009-10-08 10:36:33 +0200 (Jeu, 08 oct 2009) | 4 lines

  -> corrected a bug on unique/deleted; thanks to Luc Muller for fixing this

r415 | jschneiderameos | 2009-10-08 10:31:09 +0200 (Jeu, 08 oct 2009) | 24 lines

  -> new property /autordtclass on renderer, default false; if true, rdt will automatically be set with a CSS-class corresponding to it's relative name

  -> new template method cb("codebehindname") that returns the corresponding codebehind object; alias of codeBehind("codebehindname")

  -> method processWithAsCallBack(): corrected the way the new marker is included to the current marker array

  -> homogeneized the way event params are handled, on server and ajax events

  -> new checkpoint after-fetching-formdata
  -> corrected the i18n mecanisms

  -> corrected the _getPath() method

  -> corrected a bug in lister when binding to searchform as a datastream, where absolute rdt names were not working

r414 | jschneiderameos | 2009-10-02 15:03:53 +0200 (Ven, 02 oct 2009) | 4 lines

  -> getThisFormData() now resolves rdt absolute and relative names

r413 | jschneiderameos | 2009-10-02 14:56:23 +0200 (Ven, 02 oct 2009) | 4 lines

  -> getRdtValue_submit_readonly_edition() has been corrected; when submitting a form using datahandler:DB, renderlets contained in boxes were absent from getFormData()

r412 | jschneiderameos | 2009-09-29 15:03:58 +0200 (Mar, 29 sep 2009) | 4 lines

  -> some updates in the way error messages are handled in templates

r411 | jschneiderameos | 2009-09-23 10:27:46 +0200 (Mer, 23 sep 2009) | 4 lines

  -> corrected a bug in method init() resulting in improperly set config in TSFE->config, making realurl non-working in ajax context; thanks to Gary Wong for reporting

r410 | jschneiderameos | 2009-09-22 14:51:27 +0200 (Mar, 22 sep 2009) | 5 lines

  -> prototype.js has been upgraded from 1.6.1 RC3 to 1.6.1

r409 | jschneiderameos | 2009-09-22 10:03:00 +0200 (Mar, 22 sep 2009) | 9 lines

  -> added dummy method getRowNumberForUid($iUid); has to be specialized

  -> now a tree can be set with a value at init time

r408 | jschneiderameos | 2009-09-19 22:37:53 +0200 (Sam, 19 sep 2009) | 29 lines

  -> update prototype to version 1.1.1

  -> added method Formidable.includeStylesheet(sUrl); now formidable can also dynamically load cdd files
  -> new method executeCbMethod() that executes a method on the given CodeBehind object

  -> corrected a bug on _getSessionDataHashKey()
  -> new method attachCustomEvents() that standardizes custom js-events attachement to renderlets
  -> new methods synthetizeAjaxEventUserobj() and synthetizeAjaxEventCb(); these methods are used to programatically define an ajax event; used by the lister to generate ajax events on pager and sort headers when ajaxLister="true"

  -> new method synthetizeAjaxEvent()

  -> js codebehinds are now interfaced by a jscb object
  -> javascript cb methods may now receive several parameters dynamically
  -> developer may now execute a cbjs method from PHP (for instance in an ajax event) by executing majixExec($sMethod, [$arg1, $arg2, ..., $argn]) on the cb object

  -> added js-tree renderlet

  -> lister may be completely ajax-driven (pager+sort) by defining ajaxLister="true" on the renderlet

r407 | jschneiderameos | 2009-09-08 12:26:46 +0200 (Mar, 08 sep 2009) | 13 lines

  -> one may now define with-subsections in templates; the purpose of these with-sections is to give access to any data within the template


<!-- ###with codeBehind("cb1").getUserAccount() as currentuser### begin-->

    <p>Hello, {currentuser.username} !</p>

<!-- ###with codeBehind("cb1").getUserAccount() as currentuser### end-->

r406 | jschneiderameos | 2009-09-07 18:41:16 +0200 (Lun, 07 sep 2009) | 5 lines

  -> corrected the way errors were handled when parsed in the template; mecanism now follows renderlet recursivity instead of relying on multipasses renders (quite random and unsafe it was)

r405 | jschneiderameos | 2009-09-07 12:11:31 +0200 (Lun, 07 sep 2009) | 4 lines

  -> debug have been made in the template engine, fixing an issue that happens when a box defining a subpart in the HTML template declared as process=false

r404 | jschneiderameos | 2009-09-04 16:25:50 +0200 (Ven, 04 sep 2009) | 15 lines

  -> new TS property config.tx_ameosformidable.mayLoadScriptaculous = 1; if 0, scriptaculous will not be loaded by Formidable when needed
  -> new TS property injectHeadersInContentAtMarker; if given, Formidable will inject the generated HTML headers (javascript and css) at the position of the given marker, if found in the page content, instead of loadin them in the HEAD

  -> Formidable now subscribes to the contentPostProc-output hook to inject header data at given marker when needed

  -> added method mayLoadScriptaculous() that evaluates the properties /meta/mayLoadScriptaculous in XML config and config.tx_ameosformidable.mayLoadScriptaculous in TS config

Revision 404, we are crossing fingers !

r403 | jschneiderameos | 2009-09-03 17:29:41 +0200 (Jeu, 03 sep 2009) | 4 lines

  -> corrected js bugs for listbox and checksingle in IE when unselecting values

r402 | jschneiderameos | 2009-09-03 17:26:48 +0200 (Jeu, 03 sep 2009) | 12 lines

  -> new methods setVisible() and setInvisible() that handle the visibility of the renderlet
  -> method majixSetErrorStatus() argument is now optional; if none given, error status will be "undetermined"

  -> modified the way userobj and codebehind parameters were stacked when only one parameter is given to ensure back-compat

  -> new methods check() and unCheck()

r401 | jschneiderameos | 2009-09-01 09:47:58 +0200 (Mar, 01 sep 2009) | 20 lines

  -> corrected a bug in the selectorAPI with Firefox 3.5 and Safari 4, when manipulating elements with ID's containing dots or dashes

  -> rdt URL has been deprecated and removed

  -> renderlet:IMAGE can now apply imageConf on images that are hosted on other servers

  -> corrected the layout of the selector by adding default sizes to the structuring table

  -> fixed a bug of double label, thanks to Pawel Bandura for reporting

  -> now displays the percentage of progression by default if no steps are defined
  -> uses default overridable styles to make it visible

r400 | jschneiderameos | 2009-08-28 10:38:29 +0200 (Ven, 28 aoû 2009) | 6 lines

  -> Corrected bug in pager links generation

Revision 400, people ! Wohoooo !

r399 | jschneiderameos | 2009-08-27 23:57:33 +0200 (Jeu, 27 aoû 2009) | 1 line

Pursuing template engine debug, please use this revision for tests purposes only

r398 | jschneiderameos | 2009-08-27 19:48:32 +0200 (Jeu, 27 aoû 2009) | 7 lines

  -> corrected a bug in the template engine mecanism
  -> deleted dh_lister, act_mail and rdt_file

Warning: this revision might be unstable and should not be used for other than tests.

r397 | jschneiderameos | 2009-08-27 17:34:12 +0200 (Jeu, 27 aoû 2009) | 8 lines

  -> cache is now enabled by default on ajax event when syncValue is TRUE

  -> corrected a bug of double <label> tag; reported by Pawel Bandura on the newslist, thanks !

r396 | jschneiderameos | 2009-08-27 00:29:13 +0200 (Jeu, 27 aoû 2009) | 1 line

All: template engine now uses preg_replace_callback

r395 | jschneiderameos | 2009-08-26 19:11:59 +0200 (Mer, 26 aoû 2009) | 34 lines

  -> actionlet:MAIL is now deprecated
  -> datahandler:LISTER is now deprecated
  -> cleaned everywhere in the code where direct calls to _callUserObj subsisted; now callRunneable() is used everywhere
  -> codebehinds methods may now receive up to 10 real PHP parameters; if inline parameters are given on the codeBehind reference, they will be append as last arguments
  -> /validator:STANDARD/userobj is deprecated; use /validator:STANDARD/custom instead
  -> /recombine on renderlets is deprecated

  -> _callUserObjMergeItems() has been renamed into _mergeItems()

  -> now datasets know if data has changed, and what changes have been made
  -> new method getCellValue($sCellPath); returns the value of the cell pointed by the given path, within the datastructure
  -> new method somethingHasChanged(); returns TRUE if at least one data cell has changed, false otherwise
  -> new method cellHasChanged($sPath); return TRUE if the cell pointed by the given path has changed within the datastructure, FALSE otherwise
  -> new property $aChangedCellsBefore; array, stores the previous value for cells of data that have changed

  -> new alias method getRawGet() for _getRawGet()
  -> new alias method getRawFile() for _getRawFile()
  -> method setDeepData() now returns the value of the previous data
  -> _callUserObj got rid of all useless and deprecated parameters like $aItems, $oRef, $bAddDots
  -> in TS userobj, the array placed in "params." will systematically passed thru method _addDots()
  -> new method cb($sName); returns the reference to the corresponding codebehind object if found, FALSE otherwise

  -> when js-framework should not be loaded, Formidable now still includes the javascript initialization of it's pathes by calling _includeFormidablePath()

  -> /beforeEdition, /afterEdition, /beforeCreation and /afterCreation codebehinds now take the dataset object as a second argument

r394 | jschneiderameos | 2009-08-25 19:08:43 +0200 (Mar, 25 aoû 2009) | 15 lines

  -> specialized method callRunneable() to implement the currentRdt stack

  -> new method getCurrentRdt() that returns the renderlet that's currently executed, either in codebehind, userobj or ajax contexts
  -> new methods _getRawGet() and _getRawFile(); now POST, GET and FILE vars are available in ajax context
  -> one can now define syncValue="true" on any ajax event to automaticaly update the value that rdt has in PHP memory with the value that rdt has on client screen, before executing the event
  -> if syncValue=true on an ajax event, cache will be disabled by default for this event

  -> _G() is now diverted to tx_ameosformidable::_getRawGet()
  -> _P() is now diverted to tx_ameosformidable::_getRawPost()
  -> _F() is now diverted to tx_ameosformidable::_getRawFile()

r393 | jschneiderameos | 2009-08-25 10:02:17 +0200 (Mar, 25 aoû 2009) | 4 lines

  -> corrected a bug with readonly rdts with a form in creation mode, where getFormData() returned the post-flag "1" for renderlets that don't have childs

r392 | jschneiderameos | 2009-08-24 17:08:40 +0200 (Lun, 24 aoû 2009) | 7 lines

Now rdt_date has the possibility to handle dates that are not timestamps, bu string litterals.
In response to

To use string litterals, you have to set /convertToTimestamp to false on the renderlet:DATE. The value will be passed and stored using the given /data/dateTime/format

r391 | jschneiderameos | 2009-08-24 14:37:16 +0200 (Lun, 24 aoû 2009) | 5 lines

  -> Corrected a bug in executeAjaxAttachHeaders(), resulting in unusable repaint features

r390 | jschneiderameos | 2009-08-24 11:24:56 +0200 (Lun, 24 aoû 2009) | 25 lines

Applied a patch provided by Oliver Klee, fixing a bug in branch 1 in the template path handling. Oliver says:


if the TYPO3 site is located in a subfolder of the document root, this
leads to the following mayday (the directory "abc" is doubled):

RENDERER TEMPLATE - The given template
with subpart marquer '###REGISTRATION_EDITOR_STEP_1###') returned an
empty string - Check your template

This only occurs on the 1.1 branch of FORMidable, not on the trunk.
Copying the corresponding code from the trunk to the branch solves the

Attached, you find a patch for this (on the 1.1 branch).


r389 | jschneiderameos | 2009-08-24 11:12:32 +0200 (Lun, 24 aoû 2009) | 49 lines

  -> typoscript config.tx_ameosformidable is persisted in ajax context

  -> new property config.tx_ameosformidable.debugSendMail; if set, all mails sent by formidable will be diverted to this address (TYPO3-wide)

  -> new property /hideIfDependancyEmptyOrZero on every renderlet; same as /hideIfDependancyEmpty except that will hide even if the rdt value is 0 (like for radiobuttons, checksingles,
listboxes, ...)
  -> method baseCleanBeforeSession(): two bugs have been corrected in the object tree cleaning process
  -> method unsetRdt(): now also unreferences the current rdt in it's parent's childs collection (if applicable)
  -> method dbridge_globalSubmitable() is now FALSE by default; databridges will now only respond to submits within their childs by default

  -> template methods are now case insensitive, though it's not recommended to rely on this property

  -> new alias method getLLL() for getLLLabel() in template methods
  -> new template method mystring.explode(), returning an array

  -> properties in XML may now be prefixed by TCA: and Formidable will resolve the value using the given path against the TCA array; example: TCA:tt_news/columns/image/config/uploadfolder
  -> new method getTcaVal($sPath), resolving given TCA:... pathes against TCA array
  -> new method reloadCurrentUrl()

  -> new method getName(); returns the class of the object if not specialized in extending classes (like mainrenderlet, ...)

  -> default label class for checksingle is formidable-rdrstd-label-inline
  -> change the way labels are returned in the HTML bag; label is now handled by the default rendering processes

  -> /beforeEdition, /afterEdition, /beforeCreation and /afterCreation now all take the dataset array instead of dataset object as second argument

  -> new property /showlink, default TRUE; if TRUE, the value preview will hold a link to the file
  -> new template channel linklist. containing the formatted lists of links (csv, ul and ol)

  -> checkbox now handle better the label management

  -> submit is now /activeListable=TRUE by default

  -> css z-index of the overlay is now raised to 100000, and modalbox, to 200000

r388 | jschneiderameos | 2009-08-14 11:07:15 +0200 (Ven, 14 aoû 2009) | 10 lines

  -> render() method now takes an optional argument, $bForceReadOnly, boolean, default FALSE; if true, the renderlet will be rendered as readonly
  -> method renderReadOnlyWithForcedValue() now uses render() to execute standard rendering procedures (like javascript inclusion)

  -> corrected method clearFilters() when used with remoteSender / remoteReceiver
  -> added methods getRemoteSenderFormId() and getRemoteSenderAbsName()

r387 | jschneiderameos | 2009-08-14 09:56:50 +0200 (Ven, 14 aoû 2009) | 4 lines

  -> specialized searchable() to return FALSE

r386 | jschneiderameos | 2009-08-13 19:48:19 +0200 (Jeu, 13 aoû 2009) | 4 lines

Datahandler MM is now enabled by default.

r385 | jschneiderameos | 2009-08-13 19:32:21 +0200 (Jeu, 13 aoû 2009) | 4 lines

Corrected json encoding over ajax. Thanks Oliver Klee and Christoph Hofmann.
Correction in trunk and branch 1

r384 | jschneiderameos | 2009-08-13 19:00:10 +0200 (Jeu, 13 aoû 2009) | 4 lines

Corrected the json encoding/decoding mecanism over AJAX, thanks to Oliver Klee and Christoph Hofmann

r383 | jschneiderameos | 2009-08-13 16:38:17 +0200 (Jeu, 13 aoû 2009) | 3 lines

Applied previous patch provided by Niels in revision 381 to the trunk.

r382 | jschneiderameos | 2009-08-13 16:29:10 +0200 (Jeu, 13 aoû 2009) | 12 lines

Applied a patch provided by Oliver Klee fixing a bug in calendar js in IE

Oliver says:
The date renderlet's datepicker positioning is moved up in IE7 and IE8.
I've attached a patch for the trunk and the 1.1 branch that fixes this

The patch is applied in both branches 1 and 2 (trunk)

Thanks Oliver

r381 | jschneiderameos | 2009-08-13 16:16:37 +0200 (Jeu, 13 aoû 2009) | 20 lines

Applying a patch provided by Niels Pardon

Niels says:
Currently it is possible to define "wrapitem" which is applied to each
non-selected item. Unfortunately it is not possible to individualize
this wrap.

We are using a userobj for creating the data for the checkbox renderlet
which creates an array of arrays with an element "caption" and an
element "value". Let's allow to add another element "wrapitem" which
holds a wrap for this specific item.

So if value contains the UID of the record and caption contains the
title of the record it is possible to e.g. add an "Edit" button via
wrapitem after that checkbox item.

Thanks Niels !

r380 | jschneiderameos | 2009-08-13 16:03:31 +0200 (Jeu, 13 aoû 2009) | 4 lines

scriptaculous has been updated to 1.8.2
prototype has been updated to 1.6.1.RC3

r379 | jschneiderameos | 2009-08-13 15:59:41 +0200 (Jeu, 13 aoû 2009) | 4 lines

Updated scriptaculous from 1.8.1 to 1.8.2

r378 | jschneiderameos | 2009-08-13 14:21:42 +0200 (Jeu, 13 aoû 2009) | 13 lines

  -> lib inclusion mecanism has been improved to correct some bugs appearing when rdt are usied only in lister

  -> corrected bug in default locallang mechanism
  -> corrected bug in empty template markers deletion; now, the marker is not deleted anymore when multiline (useful for javascript declaration in template)

  -> defaultvalue is not used anymore on empty renderlets when edition mode

r377 | jschneiderameos | 2009-08-13 12:32:08 +0200 (Jeu, 13 aoû 2009) | 42 lines

  -> corrected bug in method_rteToHtml()
  -> method rdt now checks the type of parameters and breaks if needed
  -> method_strftime() now defines %Y/%m/%d as a default if format is not set
  -> method_strftime() evaluates input timestamp as integer before processing

  -> added new checkpoint end-creation, that triggers at the end of execution when datahandler has created something in DB
  -> added new checkpoint end-edition, that triggers at the end of execution when datahandler has edited something in DB
  -> added alias arrayToRdtItems() on _arrayToRdtItems()

  -> added method mayLoadJsFramework() that checks the values of /meta/loadjsframework and typoscript config.tx_ameosformidable.loadJsFramework, with priority to the xml

  -> now uses /data/datetime/emptystring also in javascript method clearData()

  -> added method isChecked()

  -> added parameter /fallbackToNew, boolean, default false; if true, the dataset will be executed in creation mode automatically if the given key does not exist in DB
  -> added /beforeCreation, runneable
  -> added /afterCreation, runneable
  -> added /beforeEdition, runneable
  -> added /beforeEdition, runneable

  -> better handling of error cases with template path/subpart

  -> dh-db now keeps track of creation or edition in $this->bHasCreated and $this->bHasEdited

  -> allow search with full submit events, to be compatible with no-js browsers

  -> if first page, the lister will no add parameter page=1 in url anymore, to avoid duplicate urls with same content

r376 | jschneiderameos | 2009-07-30 11:15:57 +0200 (Jeu, 30 jul 2009) | 10 lines

  -> corrected the hasSubmitted() method; now able to handle the special case of remote-searchforms rdt that have the same rdt-tree in their searchform as the current form

  -> getSubmitter($sFormId=FALSE) now takes as optional argument the formid to work on; if none given, getSubmitter($sFormId=FALSE) will work on current form

  -> shouldUpdateCriteriasRemoteReceiver() has been improved and it's algorithm is simpler

r375 | jschneiderameos | 2009-07-30 11:02:38 +0200 (Jeu, 30 jul 2009) | 25 lines

  -> new property /labelWrap, string, default |, runnable, that wraps the label text with the given string
  -> now when /hideIfDependancyEmpty is true, the label-tag of a rdt disappears also when needed

  -> new alias hasError() for template method hasErrors()

  -> added new checkpoints "after-validation-ok" and "after-validation-nok", triggered respectively when validation says everything is OK, and when validation says not OK

  -> dates are now human formatted using strftime(); to use gmstrftime() instead, set /data/datetime/gmt to true

  -> new property alias /pid for /pageid
  -> /pageid is now runnable

  -> now better handling of redirections on multi-domain websites

  -> new property /convertFromRte, boolean, default false to process content with parseFunc_RTE if set to true
  -> specialized method getValue() to handle /convertFromRte

r374 | jschneiderameos | 2009-07-22 15:36:21 +0200 (Mer, 22 jul 2009) | 5 lines

  -> corrected the fact that chooser was not setting AMEOSFORMIDABLE_SUBMITTER when submitting, with the result that
datahandler was not able to detect that chooser submitted

r373 | jschneiderameos | 2009-07-22 11:49:09 +0200 (Mer, 22 jul 2009) | 4 lines

  -> /dependsOn on every renderlet may now be defined as an inline methode just as for parameters in majix events; for instance, rdt('my_rdt_name')

r372 | jschneiderameos | 2009-07-22 11:21:38 +0200 (Mer, 22 jul 2009) | 3 lines

Dummy commit, correcting SVN mistake.

r371 | jschneiderameos | 2009-07-22 11:19:25 +0200 (Mer, 22 jul 2009) | 4 lines

  -> scripting methods classes have been renamed to reflect their real purpose.

r370 | jschneiderameos | 2009-07-22 10:11:45 +0200 (Mer, 22 jul 2009) | 4 lines

  -> method majixRepaintDependancies() has been modified to recursively update dependancies on childs of a dependant parent

r369 | jschneiderameos | 2009-07-21 15:17:39 +0200 (Mar, 21 jul 2009) | 11 lines

  -> new method rdt() that grabs the given rdt by it's name (relative or absolute)

  -> searchform keeps in session only descendants that don't have childs

  -> /searchform/use may now be runnable

r368 | jschneiderameos | 2009-07-21 14:35:56 +0200 (Mar, 21 jul 2009) | 4 lines

  -> new parameter, boolean, default false pager/sort/useUnicodeGeometricShapes; if true, unicode characters representing ascending and descending will be added to the sortlinks when needed; credit goes to Hauke Hain for this