1: <?php
2:
3: namespace Charcoal\Ui;
4:
5: // From 'charcoal-config'
6: use Charcoal\Config\EntityInterface;
7:
8: // From 'charcoal-view'
9: use Charcoal\View\ViewableInterface;
10:
11: /**
12: * Defines a UI Item.
13: *
14: * - Also implements the Entity Interface.
15: * - for `ArrayAccess`, `Serializable` and `JsonSerializable`.
16: * - also add `keys()`, `data()`, `keys`, `delegates` and `separator`) methods.
17: * - Also implements the Viewable Interface.
18: * - add a required `view` dependency. Typically provided from DI container `['view']`.
19: * - also add `template_ident` property.
20: */
21: interface UiItemInterface extends EntityInterface, ViewableInterface
22: {
23: /**
24: * Set the UI item type.
25: *
26: * @param string|null $type The UI item type.
27: * @return UiItemInterface Chainable
28: */
29: public function setType($type);
30:
31: /**
32: * Retrieve the UI item type.
33: *
34: * @return string
35: */
36: public function type();
37:
38: /**
39: * Activates/deactivates the UI item.
40: *
41: * @param boolean $active Activate (TRUE) or deactivate (FALSE) the UI item.
42: * @return UiItemInterface Chainable
43: */
44: public function setActive($active);
45:
46: /**
47: * Determine if the UI item is active.
48: *
49: * @return boolean
50: */
51: public function active();
52:
53: /**
54: * Set the UI item's template.
55: *
56: * Usually, a path to a file containing the template to be rendered.
57: *
58: * @param string $template A template (identifier).
59: * @return UiItemInterface Chainable
60: */
61: public function setTemplate($template);
62:
63: /**
64: * Retrieve the UI item's template.
65: *
66: * @return string
67: */
68: public function template();
69:
70: /**
71: * Set the UI item's title.
72: *
73: * @param mixed $title A title.
74: * @return UiItemInterface Chainable
75: */
76: public function setTitle($title);
77:
78: /**
79: * Retrieve the title.
80: *
81: * @return \Charcoal\Translator\Translation|null
82: */
83: public function title();
84:
85: /**
86: * Set the UI item's sub-title.
87: *
88: * @param mixed $subtitle A sub-title.
89: * @return UiItemInterface Chainable
90: */
91: public function setSubtitle($subtitle);
92:
93: /**
94: * Retrieve the sub-title.
95: *
96: * @return \Charcoal\Translator\Translation|null
97: */
98: public function subtitle();
99:
100: /**
101: * Set the UI item's description.
102: *
103: * @param mixed $description A description.
104: * @return UiItemInterface Chainable
105: */
106: public function setDescription($description);
107:
108: /**
109: * Retrieve the description.
110: *
111: * @return \Charcoal\Translator\Translation|null
112: */
113: public function description();
114:
115: /**
116: * Set notes about the UI item.
117: *
118: * @param mixed $notes Notes.
119: * @return UiItemInterface Chainable
120: */
121: public function setNotes($notes);
122:
123: /**
124: * Retrieve the notes.
125: *
126: * @return \Charcoal\Translator\Translation|null
127: */
128: public function notes();
129:
130: /**
131: * Show/hide the UI item's title.
132: *
133: * @param boolean $show Show (TRUE) or hide (FALSE) the title.
134: * @return UiItemInterface Chainable
135: */
136: public function setShowTitle($show);
137:
138: /**
139: * Determine if the title is to be displayed.
140: *
141: * @return boolean
142: */
143: public function showTitle();
144:
145: /**
146: * Show/hide the UI item's sub-title.
147: *
148: * @param boolean $show Show (TRUE) or hide (FALSE) the sub-title.
149: * @return UiItemInterface Chainable
150: */
151: public function setShowSubtitle($show);
152:
153: /**
154: * Determine if the sub-title is to be displayed.
155: *
156: * @return boolean
157: */
158: public function showSubtitle();
159:
160: /**
161: * Show/hide the UI item's description.
162: *
163: * @param boolean $show Show (TRUE) or hide (FALSE) the description.
164: * @return UiItemInterface Chainable
165: */
166: public function setShowDescription($show);
167:
168: /**
169: * Determine if the description is to be displayed.
170: *
171: * @return boolean
172: */
173: public function showDescription();
174:
175: /**
176: * Show/hide the UI item's notes.
177: *
178: * @param boolean $show Show (TRUE) or hide (FALSE) the notes.
179: * @return UiItemInterface Chainable
180: */
181: public function setShowNotes($show);
182:
183: /**
184: * Determine if the notes is to be displayed.
185: *
186: * @return boolean
187: */
188: public function showNotes();
189:
190: /**
191: * Show/hide the UI item's header.
192: *
193: * @param boolean $show Show (TRUE) or hide (FALSE) the header.
194: * @return UiItemInterface Chainable
195: */
196: public function setShowHeader($show);
197:
198: /**
199: * Determine if the header is to be displayed.
200: *
201: * @return boolean
202: */
203: public function showHeader();
204:
205: /**
206: * Show/hide the UI item's footer.
207: *
208: * @param boolean $show Show (TRUE) or hide (FALSE) the footer.
209: * @return UiItemInterface Chainable
210: */
211: public function setShowFooter($show);
212:
213: /**
214: * Determine if the footer is to be displayed.
215: *
216: * @return boolean
217: */
218: public function showFooter();
219: }
220: