danielebarchiesi@4
|
1 <?php
|
danielebarchiesi@4
|
2 /**
|
danielebarchiesi@4
|
3 * @file
|
danielebarchiesi@4
|
4 * Contains the default style plugin.
|
danielebarchiesi@4
|
5 */
|
danielebarchiesi@4
|
6
|
danielebarchiesi@4
|
7 /**
|
danielebarchiesi@4
|
8 * Default style plugin to render rows one after another with no decorations.
|
danielebarchiesi@4
|
9 *
|
danielebarchiesi@4
|
10 * @ingroup views_style_plugins
|
danielebarchiesi@4
|
11 */
|
danielebarchiesi@4
|
12 class semanticviews_plugin_style_default extends views_plugin_style {
|
danielebarchiesi@4
|
13 /**
|
danielebarchiesi@4
|
14 * Set default options
|
danielebarchiesi@4
|
15 */
|
danielebarchiesi@4
|
16 function options(&$options) {
|
danielebarchiesi@4
|
17 parent::options($options);
|
danielebarchiesi@4
|
18 }
|
danielebarchiesi@4
|
19
|
danielebarchiesi@4
|
20 /**
|
danielebarchiesi@4
|
21 * Set default options
|
danielebarchiesi@4
|
22 */
|
danielebarchiesi@4
|
23 function option_definition() {
|
danielebarchiesi@4
|
24 $options = parent::option_definition();
|
danielebarchiesi@4
|
25
|
danielebarchiesi@4
|
26 // Group option definition.
|
danielebarchiesi@4
|
27 $options['group'] = array(
|
danielebarchiesi@4
|
28 'contains' => array(
|
danielebarchiesi@4
|
29 'element_type' => array('default' => 'h3'),
|
danielebarchiesi@4
|
30 'class' => array('default' => 'title'),
|
danielebarchiesi@4
|
31 ),
|
danielebarchiesi@4
|
32 );
|
danielebarchiesi@4
|
33
|
danielebarchiesi@4
|
34 // List option definition.
|
danielebarchiesi@4
|
35 $options['list'] = array(
|
danielebarchiesi@4
|
36 'contains' => array(
|
danielebarchiesi@4
|
37 'element_type' => array('default' => ''),
|
danielebarchiesi@4
|
38 'class' => array('default' => ''),
|
danielebarchiesi@4
|
39 ),
|
danielebarchiesi@4
|
40 );
|
danielebarchiesi@4
|
41
|
danielebarchiesi@4
|
42 // Row option definition.
|
danielebarchiesi@4
|
43 $options['row'] = array(
|
danielebarchiesi@4
|
44 'contains' => array(
|
danielebarchiesi@4
|
45 'element_type' => array('default' => 'div'),
|
danielebarchiesi@4
|
46 'class' => array('default' => ''),
|
danielebarchiesi@4
|
47 'first_class' => array('default' => 'first'),
|
danielebarchiesi@4
|
48 'last_class' => array('default' => 'last'),
|
danielebarchiesi@4
|
49 'last_every_nth' => array('default' => '0'),
|
danielebarchiesi@4
|
50 'striping_classes' => array('default' => 'odd even'),
|
danielebarchiesi@4
|
51 ),
|
danielebarchiesi@4
|
52 );
|
danielebarchiesi@4
|
53
|
danielebarchiesi@4
|
54 return $options;
|
danielebarchiesi@4
|
55 }
|
danielebarchiesi@4
|
56
|
danielebarchiesi@4
|
57 /**
|
danielebarchiesi@4
|
58 * Render the given style.
|
danielebarchiesi@4
|
59 */
|
danielebarchiesi@4
|
60 function options_form(&$form, &$form_state) {
|
danielebarchiesi@4
|
61 parent::options_form($form, $form_state);
|
danielebarchiesi@4
|
62
|
danielebarchiesi@4
|
63 // Group options.
|
danielebarchiesi@4
|
64 $form['group'] = array(
|
danielebarchiesi@4
|
65 '#type' => 'fieldset',
|
danielebarchiesi@4
|
66 '#title' => t('Grouping title'),
|
danielebarchiesi@4
|
67 '#description' => t('If using groups, the view will insert the grouping’s title field.'),
|
danielebarchiesi@4
|
68 '#attributes' => array(
|
danielebarchiesi@4
|
69 'class' => 'clear-block',
|
danielebarchiesi@4
|
70 ),
|
danielebarchiesi@4
|
71 );
|
danielebarchiesi@4
|
72 $form['group']['element_type'] = array(
|
danielebarchiesi@4
|
73 '#prefix' => '<div class="views-left-30">',
|
danielebarchiesi@4
|
74 '#suffix' => '</div>',
|
danielebarchiesi@4
|
75 '#title' => t('Element'),
|
danielebarchiesi@4
|
76 '#type' => 'textfield',
|
danielebarchiesi@4
|
77 '#size' => '10',
|
danielebarchiesi@4
|
78 '#default_value' => $this->options['group']['element_type'],
|
danielebarchiesi@4
|
79 );
|
danielebarchiesi@4
|
80 $form['group']['class'] = array(
|
danielebarchiesi@4
|
81 '#prefix' => '<div class="views-right-70">',
|
danielebarchiesi@4
|
82 '#suffix' => '</div>',
|
danielebarchiesi@4
|
83 '#title' => t('Class attribute'),
|
danielebarchiesi@4
|
84 '#type' => 'textfield',
|
danielebarchiesi@4
|
85 '#size' => '30',
|
danielebarchiesi@4
|
86 '#default_value' => $this->options['group']['class'],
|
danielebarchiesi@4
|
87 );
|
danielebarchiesi@4
|
88
|
danielebarchiesi@4
|
89 // List options.
|
danielebarchiesi@4
|
90 $form['list'] = array(
|
danielebarchiesi@4
|
91 '#type' => 'fieldset',
|
danielebarchiesi@4
|
92 '#title' => t('List'),
|
danielebarchiesi@4
|
93 '#description' => t('If the output should be a HTML list, select the element and class attribute. The row element should also be set to %li.', array('%li' => 'li')),
|
danielebarchiesi@4
|
94 '#attributes' => array(
|
danielebarchiesi@4
|
95 'class' => 'clear-block',
|
danielebarchiesi@4
|
96 ),
|
danielebarchiesi@4
|
97 );
|
danielebarchiesi@4
|
98 $form['list']['element_type'] = array(
|
danielebarchiesi@4
|
99 '#prefix' => '<div class="views-left-30">',
|
danielebarchiesi@4
|
100 '#suffix' => '</div>',
|
danielebarchiesi@4
|
101 '#type' => 'radios',
|
danielebarchiesi@4
|
102 '#title' => t('List type'),
|
danielebarchiesi@4
|
103 '#options' => array(
|
danielebarchiesi@4
|
104 '' => t('None'),
|
danielebarchiesi@4
|
105 'ul' => t('Unordered list'),
|
danielebarchiesi@4
|
106 'ol' => t('Ordered list'),
|
danielebarchiesi@4
|
107 'dl' => t('Definition list'),
|
danielebarchiesi@4
|
108 ),
|
danielebarchiesi@4
|
109 '#default_value' => $this->options['list']['element_type'],
|
danielebarchiesi@4
|
110 );
|
danielebarchiesi@4
|
111 $form['list']['class'] = array(
|
danielebarchiesi@4
|
112 '#prefix' => '<div class="views-right-70">',
|
danielebarchiesi@4
|
113 '#suffix' => '</div>',
|
danielebarchiesi@4
|
114 '#title' => t('Class attribute'),
|
danielebarchiesi@4
|
115 '#type' => 'textfield',
|
danielebarchiesi@4
|
116 '#size' => '30',
|
danielebarchiesi@4
|
117 '#default_value' => $this->options['list']['class'],
|
danielebarchiesi@4
|
118 );
|
danielebarchiesi@4
|
119
|
danielebarchiesi@4
|
120 // Row options.
|
danielebarchiesi@4
|
121 $form['row'] = array(
|
danielebarchiesi@4
|
122 '#type' => 'fieldset',
|
danielebarchiesi@4
|
123 '#title' => t('Row'),
|
danielebarchiesi@4
|
124 '#attributes' => array(
|
danielebarchiesi@4
|
125 'class' => 'clear-block',
|
danielebarchiesi@4
|
126 ),
|
danielebarchiesi@4
|
127 );
|
danielebarchiesi@4
|
128 $form['row']['element_type'] = array(
|
danielebarchiesi@4
|
129 '#prefix' => '<div class="clear-block"><div class="views-left-30">',
|
danielebarchiesi@4
|
130 '#suffix' => '</div>',
|
danielebarchiesi@4
|
131 '#title' => t('Element'),
|
danielebarchiesi@4
|
132 '#type' => 'textfield',
|
danielebarchiesi@4
|
133 '#size' => '10',
|
danielebarchiesi@4
|
134 '#default_value' => $this->options['row']['element_type'],
|
danielebarchiesi@4
|
135 );
|
danielebarchiesi@4
|
136 $form['row']['class'] = array(
|
danielebarchiesi@4
|
137 '#prefix' => '<div class="views-right-70">',
|
danielebarchiesi@4
|
138 '#suffix' => '</div></div>',
|
danielebarchiesi@4
|
139 '#title' => t('Class attribute'),
|
danielebarchiesi@4
|
140 '#type' => 'textfield',
|
danielebarchiesi@4
|
141 '#size' => '30',
|
danielebarchiesi@4
|
142 '#default_value' => $this->options['row']['class'],
|
danielebarchiesi@4
|
143 '#description' => t('Insert a %hash where you want row enumeration.', array('%hash' => '#')),
|
danielebarchiesi@4
|
144 );
|
danielebarchiesi@4
|
145
|
danielebarchiesi@4
|
146 // First and last class options.
|
danielebarchiesi@4
|
147 $form['row']['first_last'] = array(
|
danielebarchiesi@4
|
148 '#type' => 'fieldset',
|
danielebarchiesi@4
|
149 '#title' => t('First and last classes'),
|
danielebarchiesi@4
|
150 // The #parents attribute must be set to avoid another array layer around
|
danielebarchiesi@4
|
151 // the group of FIRST/LAST class attribute options.
|
danielebarchiesi@4
|
152 '#parents' => array('style_options', 'row'),
|
danielebarchiesi@4
|
153 '#description' => t('If the %last_every_nth option is empty or zero, the %first_class and %last_class are added once to only the first and last rows in the pager set. If this option is greater than 1, these classes are added to every n<sup>th</sup> row, which may be useful for grid layouts where the initial and final unit’s lateral margins must be 0.', array(
|
danielebarchiesi@4
|
154 '%last_every_nth' => 'FIRST/LAST every nth',
|
danielebarchiesi@4
|
155 '%first_class' => 'FIRST class attribute',
|
danielebarchiesi@4
|
156 '%last_class' => 'LAST class attribute',
|
danielebarchiesi@4
|
157 )
|
danielebarchiesi@4
|
158 ),
|
danielebarchiesi@4
|
159 '#attributes' => array(
|
danielebarchiesi@4
|
160 'class' => 'clear-block',
|
danielebarchiesi@4
|
161 ),
|
danielebarchiesi@4
|
162 );
|
danielebarchiesi@4
|
163 $form['row']['first_last']['last_every_nth'] = array(
|
danielebarchiesi@4
|
164 '#type' => 'textfield',
|
danielebarchiesi@4
|
165 '#size' => '10',
|
danielebarchiesi@4
|
166 '#title' => t('FIRST/LAST every n<sup>th</sup>'),
|
danielebarchiesi@4
|
167 '#default_value' => $this->options['row']['last_every_nth'],
|
danielebarchiesi@4
|
168 );
|
danielebarchiesi@4
|
169 $form['row']['first_last']['first_class'] = array(
|
danielebarchiesi@4
|
170 '#prefix' => '<div class="views-left-50">',
|
danielebarchiesi@4
|
171 '#suffix' => '</div>',
|
danielebarchiesi@4
|
172 '#title' => t('FIRST class attribute'),
|
danielebarchiesi@4
|
173 '#type' => 'textfield',
|
danielebarchiesi@4
|
174 '#size' => '30',
|
danielebarchiesi@4
|
175 '#default_value' => $this->options['row']['first_class'],
|
danielebarchiesi@4
|
176 );
|
danielebarchiesi@4
|
177 $form['row']['first_last']['last_class'] = array(
|
danielebarchiesi@4
|
178 '#prefix' => '<div class="views-right-50">',
|
danielebarchiesi@4
|
179 '#suffix' => '</div>',
|
danielebarchiesi@4
|
180 '#title' => t('LAST class attribute'),
|
danielebarchiesi@4
|
181 '#type' => 'textfield',
|
danielebarchiesi@4
|
182 '#size' => '30',
|
danielebarchiesi@4
|
183 '#default_value' => $this->options['row']['last_class'],
|
danielebarchiesi@4
|
184 );
|
danielebarchiesi@4
|
185
|
danielebarchiesi@4
|
186 // Striping class options.
|
danielebarchiesi@4
|
187 $form['row']['striping_classes'] = array(
|
danielebarchiesi@4
|
188 '#title' => t('Striping class attributes'),
|
danielebarchiesi@4
|
189 '#type' => 'textfield',
|
danielebarchiesi@4
|
190 '#size' => '30',
|
danielebarchiesi@4
|
191 '#default_value' => $this->options['row']['striping_classes'],
|
danielebarchiesi@4
|
192 '#description' => t('One striping class attribute is applied to each row. Separate multiple attributes with a space.'),
|
danielebarchiesi@4
|
193 );
|
danielebarchiesi@4
|
194
|
danielebarchiesi@4
|
195 // Get a list of the available fields for token replacement.
|
danielebarchiesi@4
|
196 $options = array();
|
danielebarchiesi@4
|
197 foreach ($this->view->display_handler->get_handlers('field') as $field => $handler) {
|
danielebarchiesi@4
|
198 $options[t('Fields')]["[$field]"] = $handler->ui_name();
|
danielebarchiesi@4
|
199 }
|
danielebarchiesi@4
|
200
|
danielebarchiesi@4
|
201 // Default text.
|
danielebarchiesi@4
|
202 $output = t('<p>Add additional fields to this display in order to get any available replacement patterns.</p>');
|
danielebarchiesi@4
|
203 // We have some options, so make a list.
|
danielebarchiesi@4
|
204 if (!empty($options)) {
|
danielebarchiesi@4
|
205 $output = t('<p>The following replacement patterns are available for this display. Use the pattern shown on the left to display the value indicated on the right.</p>');
|
danielebarchiesi@4
|
206 foreach (array_keys($options) as $type) {
|
danielebarchiesi@4
|
207 if (!empty($options[$type])) {
|
danielebarchiesi@4
|
208 $items = array();
|
danielebarchiesi@4
|
209 foreach ($options[$type] as $key => $value) {
|
danielebarchiesi@4
|
210 $items[] = $key . ' == ' . $value;
|
danielebarchiesi@4
|
211 }
|
danielebarchiesi@4
|
212 $output .= theme('item_list', $items, $type);
|
danielebarchiesi@4
|
213 }
|
danielebarchiesi@4
|
214 }
|
danielebarchiesi@4
|
215 }
|
danielebarchiesi@4
|
216
|
danielebarchiesi@4
|
217 $form['row']['alter'] = array(
|
danielebarchiesi@4
|
218 '#type' => 'markup',
|
danielebarchiesi@4
|
219 '#value' => '<fieldset id="views-tokens-help"><legend>' . t('Replacement patterns') . '</legend>' . $output . '</fieldset>',
|
danielebarchiesi@4
|
220 );
|
danielebarchiesi@4
|
221 }
|
danielebarchiesi@4
|
222
|
danielebarchiesi@4
|
223 /**
|
danielebarchiesi@4
|
224 * Validate the options form.
|
danielebarchiesi@4
|
225 */
|
danielebarchiesi@4
|
226 function options_validate(&$form, &$form_state) {
|
danielebarchiesi@4
|
227 parent::options_validate($form, $form_state);
|
danielebarchiesi@4
|
228 // TODO: validate that the elements and classes are valid HTML. This is not
|
danielebarchiesi@4
|
229 // a substitute for output filtering.
|
danielebarchiesi@4
|
230 }
|
danielebarchiesi@4
|
231 }
|