[Pieforms-commit] SF.net SVN: pieforms: [141] pieforms-php5/trunk/src/pieform/renderers/ multicolum
Status: Alpha
Brought to you by:
oracleshinoda
From: <ora...@us...> - 2006-12-24 02:32:38
|
Revision: 141 http://svn.sourceforge.net/pieforms/?rev=141&view=rev Author: oracleshinoda Date: 2006-12-23 18:32:29 -0800 (Sat, 23 Dec 2006) Log Message: ----------- Insert empty table cells in gaps to preserve HTML validation. Disable fieldsets from working, they just make a mess. Fixed up the javascript for inserting errors so it actually works Modified Paths: -------------- pieforms-php5/trunk/src/pieform/renderers/multicolumntable.php Modified: pieforms-php5/trunk/src/pieform/renderers/multicolumntable.php =================================================================== --- pieforms-php5/trunk/src/pieform/renderers/multicolumntable.php 2006-12-24 00:25:05 UTC (rev 140) +++ pieforms-php5/trunk/src/pieform/renderers/multicolumntable.php 2006-12-24 02:32:29 UTC (rev 141) @@ -42,15 +42,47 @@ */ function pieform_renderer_multicolumntable(Pieform $form, $builtelement, $rawelement) { global $formrenderermct; - // Used by the messages javascript function - $form->include_plugin('renderer', 'table'); $formrenderermct->add_element($builtelement, $rawelement); $formrenderermct->set_form($form); } function pieform_renderer_multicolumntable_messages_js($id) { - return pieform_renderer_table_messages_js($id); + //return pieform_renderer_table_messages_js($id); + return <<<EOF +function {$id}_set_error (message, element) { + element = '{$id}_' + element; + var parentRow = $(element + '_container').parentNode; + var nextRow = parentRow.nextSibling; + if (!(nextRow && hasElementClass(nextRow, 'errorRow'))) { + var errorRow = TR({'class': 'errorRow'}); + log(parentRow.cells.length); + for (var i = 0; i < parentRow.cells.length; i++) { + var attrs = null; + if (parentRow.cells[i].id) { + attrs = { + 'id': parentRow.cells[i].id.replace(/_container$/, '_error'), + 'class': 'error' + }; + } + appendChildNodes(errorRow, TD(attrs)); + } + insertSiblingNodesAfter($(element + '_container').parentNode, errorRow); + } + + appendChildNodes(element + '_error', message); + addElementClass(element, 'error'); + addElementClass( element + '_container', 'error'); } +function {$id}_remove_all_errors() { + forEach(getElementsByTagAndClassName('TR', 'errorRow', '{$id}'), function(row) { + removeElement(row); + }); + forEach(getElementsByTagAndClassName(null, 'error', '{$id}'), function(item) { + removeElementClass(item, 'error'); + }); +} +EOF; +} function pieform_renderer_multicolumntable_header() { global $formrenderermct; @@ -68,6 +100,9 @@ private $form; function add_element($builtelement, $rawelement) { + if ($rawelement['type'] == 'fieldset') { + throw new PieformException('The multicolumntable renderer does not support fieldsets'); + } if (!array_key_exists($rawelement['title'], $this->elements)) { $this->elements[$rawelement['title']] = array(); $this->elements[$rawelement['title']]['rawelements'] = array(); @@ -83,6 +118,11 @@ } function build() { + // Find out the maximum number of columns + $columns = 0; + foreach ($this->elements as $data) { + $columns = max($columns, count($data['builtelements'])); + } $result = "<table cellspacing=\"0\" border=\"0\"><tbody>\n"; foreach ($this->elements as $title => $data) { $result .= "\t<tr"; @@ -120,6 +160,9 @@ // @todo description... } + for ($i = count($data['builtelements']); $i < $columns; $i++) { + $result .= "\t<td></td>\n\t"; + } $result .= "</tr>\n"; } $result .= "</tbody></table>\n"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |