summaryrefslogtreecommitdiffstats
path: root/src/usr/local/www/classes/Form/Section.class.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/local/www/classes/Form/Section.class.php')
-rw-r--r--src/usr/local/www/classes/Form/Section.class.php82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/usr/local/www/classes/Form/Section.class.php b/src/usr/local/www/classes/Form/Section.class.php
new file mode 100644
index 0000000..b1dfb22
--- /dev/null
+++ b/src/usr/local/www/classes/Form/Section.class.php
@@ -0,0 +1,82 @@
+<?php
+/*
+ Section.class.php
+
+ Copyright (C) 2015 Sjon Hortensius
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
+class Form_Section extends Form_Element
+{
+ protected $_tagName = 'div';
+ protected $_attributes = array(
+ 'class' => array(
+ 'panel' => true,
+ 'panel-default' => true,
+ ),
+ );
+ protected $_title;
+ protected $_groups = array();
+
+ public function __construct($title)
+ {
+ $this->_title = $title;
+ }
+
+ public function add(Form_Group $group)
+ {
+ array_push($this->_groups, $group);
+ $group->_setParent($this);
+
+ return $group;
+ }
+
+ // Shortcut, adds a group for the specified input
+ public function addInput(Form_Input $input)
+ {
+ $group = new Form_Group($input->getTitle());
+ $group->add($input);
+
+ $this->add($group);
+
+ return $input;
+ }
+
+ public function __toString()
+ {
+ $element = parent::__toString();
+ $title = htmlspecialchars(gettext($this->_title));
+ $body = implode('', $this->_groups);
+
+ return <<<EOT
+ {$element}
+ <div class="panel-heading">
+ <h2 class="panel-title">{$title}</h2>
+ </div>
+ <div class="panel-body">
+ {$body}
+ </div>
+ </div>
+EOT;
+ }
+} \ No newline at end of file
OpenPOWER on IntegriCloud