diff options
author | Tim Almdal <tnalmdal@shaw.ca> | 2009-05-06 14:45:44 +0000 |
---|---|---|
committer | Tim Almdal <tnalmdal@shaw.ca> | 2009-05-06 14:45:44 +0000 |
commit | 2991831c035a944712f2d906fbb4d99c7e93e02f (patch) | |
tree | a6dad5b470716ece7abc7a4f9455c590eea971b5 /core | |
parent | 890b716c8f6693e92858a02120007d38dbdab774 (diff) |
Fix for ticket #72
Diffstat (limited to 'core')
-rw-r--r-- | core/libraries/MY_Forge.php | 5 | ||||
-rw-r--r-- | core/tests/DrawForm_Test.php | 84 | ||||
-rw-r--r-- | core/views/form.html.php | 17 |
3 files changed, 100 insertions, 6 deletions
diff --git a/core/libraries/MY_Forge.php b/core/libraries/MY_Forge.php index 877fe62c..b302c8ef 100644 --- a/core/libraries/MY_Forge.php +++ b/core/libraries/MY_Forge.php @@ -24,14 +24,13 @@ class Forge extends Forge_Core { */ public function __construct($action=null, $title='', $method=null, $attr=array()) { parent::__construct($action, $title, $method, $attr); - $this->input("csrf")->type("hidden")->value(""); + $this->hidden("csrf")->value(""); } - /** * Use our own template */ public function render($template="form.html", $custom=false) { - $this->inputs["csrf"]->value(access::csrf_token()); + $this->hidden["csrf"]->value(access::csrf_token()); return parent::render($template, $custom); } diff --git a/core/tests/DrawForm_Test.php b/core/tests/DrawForm_Test.php new file mode 100644 index 00000000..68efbc4c --- /dev/null +++ b/core/tests/DrawForm_Test.php @@ -0,0 +1,84 @@ +<?php defined("SYSPATH") or die("No direct script access."); +/** + * Gallery - a web based photo album viewer and editor + * Copyright (C) 2000-2008 Bharat Mediratta + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. + */ +class DrawForm_Test extends Unit_Test_Case { + function no_group_test() { + $form = new Forge("test/controller", "", "post", array("id" => "gTestGroupForm")); + $form->input("title")->label(t("Title")); + $form->textarea("description")->label(t("Text Area")); + $form->submit("")->value(t("Submit")); + $rendered = $form->__toString(); + + $expected = "<form action=\"http://./index.php/test/controller\" method=\"post\" " . + "id=\"gTestGroupForm\">\n" . + "<input type=\"hidden\" name=\"csrf\" value=\"" . access::csrf_token() . "\" />\n" . + " <ul>\n" . + " <li>\n" . + " <label for=\"title\" >Title</label>\n" . + " <input type=\"text\" id=\"title\" name=\"title\" value=\"\" " . + "class=\"textbox\" />\n" . + " </li>\n" . + " <li>\n" . + " <label for=\"description\" >Text Area</label>\n" . + " <textarea id=\"description\" name=\"description\" " . + "class=\"textarea\" ></textarea>\n" . + " </li>\n" . + " <li>\n" . + " <input type=\"submit\" value=\"Submit\" class=\"submit\" />\n" . + " </li>\n" . + " </ul>\n" . + "</form>\n"; + $this->assert_same($expected, $rendered); + } + + function group_test() { + $form = new Forge("test/controller", "", "post", array("id" => "gTestGroupForm")); + $group = $form->group("test_group")->label(t("Test Group")); + $group->input("title")->label(t("Title")); + $group->textarea("description")->label(t("Text Area")); + $group->submit("")->value(t("Submit")); + $rendered = $form->__toString(); + + $expected = "<form action=\"http://./index.php/test/controller\" method=\"post\" " . + "id=\"gTestGroupForm\">\n" . + "<input type=\"hidden\" name=\"csrf\" value=\"" . access::csrf_token() . "\" />\n" . + " <fieldset>\n" . + " <legend>Test Group</legend>\n" . + " <ul>\n" . + " <li>\n" . + " <label for=\"title\" >Title</label>\n" . + " <input type=\"text\" id=\"title\" name=\"title\" value=\"\" " . + "class=\"textbox\" />\n" . + " </li>\n" . + " <li>\n" . + " <label for=\"description\" >Text Area</label>\n" . + " <textarea id=\"description\" name=\"description\" " . + "class=\"textarea\" ></textarea>\n" . + " </li>\n" . + " <li>\n" . + " <input type=\"submit\" value=\"Submit\" class=\"submit\" />\n" . + " </li>\n" . + " </ul>\n" . + " </fieldset>\n" . + "</form>\n"; + $this->assert_same($expected, $rendered); + } + +} + diff --git a/core/views/form.html.php b/core/views/form.html.php index 8c0e31e0..ec2a56a9 100644 --- a/core/views/form.html.php +++ b/core/views/form.html.php @@ -14,11 +14,19 @@ if (!function_exists("DrawForm")) { function DrawForm($inputs, $level=1) { $error_messages = array(); $prefix = str_repeat(" ", $level); + $haveGroup = false; + // On the first level, make sure we have a group if not add the <ul> tag now + if ($level == 1) { + foreach ($inputs as $input) { + $haveGroup |= $input->type == 'group'; + } + if (!$haveGroup) { + print "$prefix<ul>\n"; + } + } foreach ($inputs as $input) { - if ($input->type == 'hidden') { - print $input->render(); - } else if ($input->type == 'group') { + if ($input->type == 'group') { print "$prefix<fieldset>\n"; print "$prefix <legend>{$input->label}</legend>\n"; print "$prefix <ul>\n"; @@ -56,6 +64,9 @@ if (!function_exists("DrawForm")) { print "$prefix</li>\n"; } } + if ($level == 1 && !$haveGroup) { + print "$prefix</ul>\n"; + } } } DrawForm($inputs); |