summaryrefslogtreecommitdiff
path: root/pearlib/HTML/QuickForm/xbutton.php
blob: bdc0cbf88a0d66b493902974d74f1288ebf6b9b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | PHP Version 4                                                        |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2003 The PHP Group                                |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.0 of the PHP license,       |
// | that is bundled with this package in the file LICENSE, and is        |
// | available at through the world-wide-web at                           |
// | http://www.php.net/license/2_02.txt.                                 |
// | If you did not receive a copy of the PHP license and are unable to   |
// | obtain it through the world-wide-web, please send a note to          |
// | [email protected] so we can mail you a copy immediately.               |
// +----------------------------------------------------------------------+
// | Authors: Alexey Borzov <[email protected]>                                 |
// +----------------------------------------------------------------------+
//
// $Id: xbutton.php,v 1.1 2004/05/18 09:46:46 avb Exp $

require_once 'HTML/QuickForm/element.php';

/**
 * Class for HTML 4.0 <button> element
 * 
 * @author  Alexey Borzov <[email protected]>
 * @since   3.2.3
 * @access  public
 */
class HTML_QuickForm_xbutton extends HTML_QuickForm_element
{
   /**
    * Contents of the <button> tag
    * @var      string
    * @access   private
    */
    var $_content; 

   /**
    * Class constructor
    * 
    * @param    string  Button name
    * @param    string  Button content (HTML to add between <button></button> tags)
    * @param    mixed   Either a typical HTML attribute string or an associative array
    * @access   public
    */
    function HTML_QuickForm_xbutton($elementName = null, $elementContent = null, $attributes = null)
    {
        $this->HTML_QuickForm_element($elementName, null, $attributes);
        $this->setContent($elementContent);
        $this->setPersistantFreeze(false);
        $this->_type = 'xbutton';
    }


    function toHtml()
    {
        return '<button' . $this->getAttributes(true) . '>' . $this->_content . '</button>';
    }


    function getFrozenHtml()
    {
        return $this->toHtml();
    }


    function freeze()
    {
        return false;
    }


    function setName($name)
    {
        $this->updateAttributes(array(
            'name' => $name 
        ));
    }


    function getName()
    {
        return $this->getAttribute('name');
    }


    function setValue($value)
    {
        $this->updateAttributes(array(
            'value' => $value
        ));
    }


    function getValue()
    {
        return $this->getAttribute('value');
    }


   /**
    * Sets the contents of the button element
    *
    * @param    string  Button content (HTML to add between <button></button> tags)
    */
    function setContent($content)
    {
        $this->_content = $content;
    }


    function onQuickFormEvent($event, $arg, &$caller)
    {
        if ('updateValue' != $event) {
            return parent::onQuickFormEvent($event, $arg, $caller);
        } else {
            $value = $this->_findValue($caller->_constantValues);
            if (null === $value) {
                $value = $this->_findValue($caller->_defaultValues);
            }
            if (null !== $value) {
                $this->setValue($value);
            }
        }
        return true;
    }


   /**
    * Returns a 'safe' element's value
    * 
    * The value is only returned if the button's type is "submit" and if this
    * particlular button was clicked
    */
    function exportValue(&$submitValues, $assoc = false)
    {
        if ('submit' == $this->getAttribute('type')) {
            return $this->_prepareValue($this->_findValue($submitValues), $assoc);
        } else {
            return null;
        }
    }
}
?>