1: <?php
2: /**
3: * Provides the object that contains the status data to output when viewing
4: * MIME parts in IMP.
5: *
6: * Copyright 2011-2012 Horde LLC (http://www.horde.org/)
7: *
8: * See the enclosed file COPYING for license information (GPL). If you
9: * did not receive this file, see http://www.horde.org/licenses/gpl.
10: *
11: * @author Michael Slusarz <slusarz@horde.org>
12: * @category Horde
13: * @license http://www.horde.org/licenses/gpl GPL
14: * @package IMP
15: */
16: class IMP_Mime_Status
17: {
18: /* Action constants. */
19: const ERROR = 1;
20: const SUCCESS = 2;
21: const WARNING = 3;
22:
23: /**
24: * DOM ID to use for the status block.
25: *
26: * @var string
27: */
28: protected $_domid;
29:
30: /**
31: * Icon image HTML.
32: *
33: * @var string
34: */
35: protected $_icon;
36:
37: /**
38: * List of text to output. Each entry will be output on a newline.
39: *
40: * @var array
41: */
42: protected $_text = array();
43:
44: /**
45: * Constructor.
46: *
47: * @param mixed $text See addText().
48: */
49: public function __construct($text = null)
50: {
51: if (!is_null($text)) {
52: $this->addText($text);
53: }
54: }
55:
56: /**
57: * Pre-defined actions.
58: *
59: * @param integer $type The action type.
60: */
61: public function action($type)
62: {
63: switch ($type) {
64: case self::ERROR:
65: $this->icon('alerts/error.png', _("Error"));
66: break;
67:
68: case self::SUCCESS:
69: $this->icon('alerts/success.png', _("Success"));
70: break;
71:
72: case self::WARNING:
73: $this->icon('alerts/warning.png', _("Warning"));
74: break;
75: }
76: }
77:
78:
79: /**
80: * Adds text line(s) to the output.
81: *
82: * @param mixed $text Either a line of text or an array of lines to add.
83: */
84: public function addText($text)
85: {
86: if (!is_array($text)) {
87: $text = array($text);
88: }
89:
90: $this->_text = array_merge($this->_text, $text);
91: }
92:
93: /**
94: * Set the icon to use for the status block (Default: no icon).
95: *
96: * @param string $img The image file.
97: * @param string $alt ALT text to use.
98: */
99: public function icon($img, $alt = null)
100: {
101: $this->_icon = Horde::img($img, $alt);
102: }
103:
104: /**
105: * Set a DOM ID for the status block.
106: *
107: * @param string $id The DOM ID to use.
108: */
109: public function domid($id = null)
110: {
111: $this->_domid = $id;
112: }
113:
114: /**
115: * Output status block HTML.
116: *
117: * @return string The formatted status message HTML.
118: */
119: public function __toString()
120: {
121: $out = '<div><table class="mimeStatusMessageTable"' .
122: (isset($this->_domid) ? (' id="' . $this->_domid . '" ') : '')
123: . '>';
124:
125: /* If no image, simply print out the message. */
126: if (empty($this->_icon)) {
127: foreach ($this->_text as $val) {
128: $out .= '<tr><td>' . $val . '</td></tr>';
129: }
130: } else {
131: $out .= '<tr><td class="mimeStatusIcon">' . $this->_icon . '</td><td><table>';
132: foreach ($this->_text as $val) {
133: $out .= '<tr><td>' . $val . '</td></tr>';
134: }
135: $out .= '</table></td></tr>';
136: }
137:
138: $out .= '</table></div>';
139:
140: return '<div class="mimeStatusMessage">' . $out . '</div>';
141: }
142:
143: }
144: