[Pieforms-commit] SF.net SVN: pieforms: [174] pieforms-php5/trunk/src/pieform.php
Status: Alpha
Brought to you by:
oracleshinoda
From: <ora...@us...> - 2007-02-04 22:39:59
|
Revision: 174 http://svn.sourceforge.net/pieforms/?rev=174&view=rev Author: oracleshinoda Date: 2007-02-04 14:39:59 -0800 (Sun, 04 Feb 2007) Log Message: ----------- Fixed the form submission support under safari, by hiding the iframe instead of removing it. Try to normalise the names of the elements if possible (although this does not check inside fieldsets and needs some work) Modified Paths: -------------- pieforms-php5/trunk/src/pieform.php Modified: pieforms-php5/trunk/src/pieform.php =================================================================== --- pieforms-php5/trunk/src/pieform.php 2007-02-04 22:38:38 UTC (rev 173) +++ pieforms-php5/trunk/src/pieform.php 2007-02-04 22:39:59 UTC (rev 174) @@ -325,6 +325,22 @@ throw new PieformException('Forms must have a list of elements'); } + // Rename all the keys to have nice compliant names + // @todo: + // - This isn't done for elements inside fieldsets + // - There's no easy way for other things do do all this preprocessing if they + // need. It should be a method so that other things (like multirecord) + // can use it. + $elements = array(); + foreach ($this->data['elements'] as $name => $element) { + $newname = preg_replace('/[^a-zA-Z0-9_]/', '_', $name); + if (isset($elements[$name])) { + throw new PieformException('Element "' . $name . '" has a dangerous name that interferes with another element'); + } + $elements[$newname] = $element; + } + $this->data['elements'] = $elements; + // Remove elements to ignore foreach ($this->data['elements'] as $name => $element) { if (isset($element['type']) && $element['type'] == 'fieldset') { @@ -867,6 +883,12 @@ return $result; } + /** + * Builds the javascript for submitting the form. Note that the iframe is + * not hidden with display: none, as safari/konqueror/ns6 ignore things with + * display: none. Positioning it absolute and 'hidden' has the same effect + * without the breakage. + */ private function submit_js() { $strprocessingform = get_string('processingform'); @@ -885,9 +907,9 @@ if (!iframe) { iframe = createDOM('iframe', { 'name': '{$this->name}_iframe', - 'id' : '{$this->name}_iframe' + 'id' : '{$this->name}_iframe', + 'style': 'position: absolute; visibility: hidden;' }); - hideElement(iframe); insertSiblingNodesAfter($('{$this->name}'), iframe); window.pieformHandler_{$this->name} = function(data) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |