1: <?php
2: /**
3: * PHP version 5
4: * @package generalDriver
5: * @author Christian Schiffler <c.schiffler@cyberspectrum.de>
6: * @author Stefan Heimes <stefan_heimes@hotmail.com>
7: * @author Tristan Lins <tristan.lins@bit3.de>
8: * @copyright The MetaModels team.
9: * @license LGPL.
10: * @filesource
11: */
12:
13: namespace DcGeneral\DataDefinition\Definition\View;
14:
15: /**
16: * Interface ListingConfigInterface.
17: *
18: * This interface describes a property.
19: *
20: * @package DcGeneral\DataDefinition\Definition\View
21: */
22: interface ListingConfigInterface
23: {
24: /**
25: * Do not group.
26: */
27: const GROUP_NONE = 'none';
28:
29: /**
30: * Group by characters, the max char count depend on the mode length
31: * (which is 1 by default for char grouping).
32: */
33: const GROUP_CHAR = 'char';
34:
35: /**
36: * Group by digits, the max digit count depend on the mode length
37: * (which is infinity by default for digit grouping)..
38: */
39: const GROUP_DIGIT = 'digit';
40:
41: /**
42: * Sort by day from datetime property.
43: */
44: const GROUP_DAY = 'day';
45:
46: /**
47: * Sort by week day from datetime property.
48: */
49: const GROUP_WEEKDAY = 'weekday';
50:
51: /**
52: * Sort by week of the year from datetime property.
53: */
54: const GROUP_WEEK = 'week';
55:
56: /**
57: * Sort by month from datetime property.
58: */
59: const GROUP_MONTH = 'month';
60:
61: /**
62: * Sort by year from datetime property.
63: */
64: const GROUP_YEAR = 'year';
65:
66: /**
67: * Sort ascending.
68: */
69: const SORT_ASC = 'asc';
70:
71: /**
72: * Sort descending.
73: */
74: const SORT_DESC = 'desc';
75:
76: /**
77: * Shuffle all records instead of sorting.
78: */
79: const SORT_RANDOM = 'random';
80:
81: /**
82: * Set the grouping mode.
83: *
84: * @param string $value The new mode.
85: *
86: * @return ListingConfigInterface
87: */
88: public function setGroupingMode($value);
89:
90: /**
91: * Return the grouping mode.
92: *
93: * @return string
94: */
95: public function getGroupingMode();
96:
97: /**
98: * Set the grouping length.
99: *
100: * @param int $value The new value.
101: *
102: * @return ListingConfigInterface
103: */
104: public function setGroupingLength($value);
105:
106: /**
107: * The grouping length is used for char or digit grouping.
108: *
109: * It defines how many chars or digits should be respected when group mode is GROUP_CHAR.
110: *
111: * @return int
112: */
113: public function getGroupingLength();
114:
115: /**
116: * Set the list sorting mode.
117: *
118: * @param string $value The new value.
119: *
120: * @return ListingConfigInterface
121: */
122: public function setSortingMode($value);
123:
124: /**
125: * Return the list sorting mode.
126: *
127: * This sorting is applied after grouping and could also be called "in-group sorting".
128: *
129: * @return string
130: */
131: public function getSortingMode();
132:
133: /**
134: * Set the default sorting fields.
135: *
136: * @param array $value The sorting fields to use.
137: *
138: * @return ListingConfigInterface
139: */
140: public function setDefaultSortingFields($value);
141:
142: /**
143: * Get the default sorting fields which are used if the user does not define a sorting.
144: *
145: * @return array
146: */
147: public function getDefaultSortingFields();
148:
149: /**
150: * Set the list of parent's model property names.
151: *
152: * @param array $value The property names to use.
153: *
154: * @return ListingConfigInterface
155: */
156: public function setHeaderPropertyNames($value);
157:
158: /**
159: * Return a list of parent's model property names, which are shown above the item list.
160: *
161: * @return array
162: */
163: public function getHeaderPropertyNames();
164:
165: /**
166: * Set the icon path to the root item's icon.
167: *
168: * @param string $value The path to the icon.
169: *
170: * @return ListingConfigInterface
171: */
172: public function setRootIcon($value);
173:
174: /**
175: * Return the icon path to the root item's icon.
176: *
177: * @return string
178: */
179: public function getRootIcon();
180:
181: /**
182: * Set the css classes that should be added to the items container.
183: *
184: * @param string $value The CSS class to use.
185: *
186: * @return ListingConfigInterface
187: */
188: public function setItemCssClass($value);
189:
190: /**
191: * Return css classes that should be added to the items container.
192: *
193: * @return string
194: */
195: public function getItemCssClass();
196:
197: /**
198: * Set the label formatter.
199: *
200: * @param string $providerName The name of the data provider.
201: *
202: * @param ModelFormatterConfigInterface $value The model formatter to use.
203: *
204: * @return ListingConfigInterface
205: */
206: public function setLabelFormatter($providerName, $value);
207:
208: /**
209: * Determine if the label formatter is present for a certain data provider.
210: *
211: * @param string $providerName The name of the data provider.
212: *
213: * @return bool
214: */
215: public function hasLabelFormatter($providerName);
216:
217: /**
218: * Return the label formatter for a certain data provider.
219: *
220: * @param string $providerName The name of the data provider.
221: *
222: * @return ModelFormatterConfigInterface
223: */
224: public function getLabelFormatter($providerName);
225:
226: /**
227: * Set if the listing shall be in table columns.
228: *
229: * @param bool $value The flag.
230: *
231: * @return ListingConfigInterface
232: */
233: public function setShowColumns($value);
234:
235: /**
236: * Get if the listing shall be in table columns.
237: *
238: * @return bool
239: */
240: public function getShowColumns();
241: }
242: