summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Almdal <tnalmdal@shaw.ca>2009-05-06 14:45:44 +0000
committerTim Almdal <tnalmdal@shaw.ca>2009-05-06 14:45:44 +0000
commit2991831c035a944712f2d906fbb4d99c7e93e02f (patch)
treea6dad5b470716ece7abc7a4f9455c590eea971b5
parent890b716c8f6693e92858a02120007d38dbdab774 (diff)
Fix for ticket #72
-rw-r--r--core/libraries/MY_Forge.php5
-rw-r--r--core/tests/DrawForm_Test.php84
-rw-r--r--core/views/form.html.php17
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);