danielebarchiesi@4
|
1 <?php
|
danielebarchiesi@4
|
2 /**
|
danielebarchiesi@4
|
3 * @file semanticviews.theme.inc
|
danielebarchiesi@4
|
4 * TODO: Enter file description here.
|
danielebarchiesi@4
|
5 */
|
danielebarchiesi@4
|
6
|
danielebarchiesi@4
|
7 /**
|
danielebarchiesi@4
|
8 * Preprocess theme function to print a single record from a row, with fields
|
danielebarchiesi@4
|
9 */
|
danielebarchiesi@4
|
10 function template_preprocess_semanticviews_view_fields(&$vars) {
|
danielebarchiesi@4
|
11 $view = $vars['view'];
|
danielebarchiesi@4
|
12
|
danielebarchiesi@4
|
13 // Loop through the fields for this view.
|
danielebarchiesi@4
|
14 $vars['fields'] = array(); // ensure it's at least an empty array.
|
danielebarchiesi@4
|
15 foreach ($view->field as $id => $field) {
|
danielebarchiesi@4
|
16 // render this even if set to exclude so it can be used elsewhere.
|
danielebarchiesi@4
|
17 $field_output = $view->field[$id]->theme($vars['row']);
|
danielebarchiesi@4
|
18 $empty = $field_output !== 0 && empty($field_output);
|
danielebarchiesi@4
|
19 if (empty($field->options['exclude']) && !(($vars['options']['skip_blank'] || $field->options['hide_empty']) && $empty)) {
|
danielebarchiesi@4
|
20 $object = new stdClass();
|
danielebarchiesi@4
|
21
|
danielebarchiesi@4
|
22 $object->content = $field_output;
|
danielebarchiesi@4
|
23 if (isset($view->field[$id]->field_alias) && isset($vars['row']->{$view->field[$id]->field_alias})) {
|
danielebarchiesi@4
|
24 $object->raw = $vars['row']->{$view->field[$id]->field_alias};
|
danielebarchiesi@4
|
25 }
|
danielebarchiesi@4
|
26 else {
|
danielebarchiesi@4
|
27 $object->raw = NULL; // make sure it exists to reduce NOTICE
|
danielebarchiesi@4
|
28 }
|
danielebarchiesi@4
|
29
|
danielebarchiesi@4
|
30 $object->handler = &$view->field[$id];
|
danielebarchiesi@4
|
31
|
danielebarchiesi@4
|
32 $semantic_html = $vars['options']['semantic_html'][$id];
|
danielebarchiesi@4
|
33
|
danielebarchiesi@4
|
34 // Field content
|
danielebarchiesi@4
|
35 $object->element_type = check_plain($semantic_html['element_type']);
|
danielebarchiesi@4
|
36 $object->attributes = array();
|
danielebarchiesi@4
|
37 if ($semantic_html['class']) {
|
danielebarchiesi@4
|
38 $object->attributes['class'] = $semantic_html['class'];
|
danielebarchiesi@4
|
39 }
|
danielebarchiesi@4
|
40
|
danielebarchiesi@4
|
41 // Field label
|
danielebarchiesi@4
|
42 $object->label = check_plain($view->field[$id]->label());
|
danielebarchiesi@4
|
43 if (!empty($object->label)) {
|
danielebarchiesi@4
|
44 $object->label_element_type = check_plain($semantic_html['label_element_type']);
|
danielebarchiesi@4
|
45 $object->label_attributes = array();
|
danielebarchiesi@4
|
46 if ($semantic_html['label_class']) {
|
danielebarchiesi@4
|
47 $object->label_attributes['class'] = $semantic_html['label_class'];
|
danielebarchiesi@4
|
48 }
|
danielebarchiesi@4
|
49 }
|
danielebarchiesi@4
|
50
|
danielebarchiesi@4
|
51 $vars['fields'][$id] = $object;
|
danielebarchiesi@4
|
52 }
|
danielebarchiesi@4
|
53 }
|
danielebarchiesi@4
|
54
|
danielebarchiesi@4
|
55 }
|
danielebarchiesi@4
|
56
|
danielebarchiesi@4
|
57 /**
|
danielebarchiesi@4
|
58 * Display the simple view of rows one after another
|
danielebarchiesi@4
|
59 */
|
danielebarchiesi@4
|
60 function template_preprocess_semanticviews_view_unformatted(&$vars) {
|
danielebarchiesi@4
|
61 $view = $vars['view'];
|
danielebarchiesi@4
|
62
|
danielebarchiesi@4
|
63 $vars['group_element'] = check_plain($vars['options']['group']['element_type']);
|
danielebarchiesi@4
|
64 $vars['group_attributes'] = array();
|
danielebarchiesi@4
|
65 if ($vars['options']['group']['class']) {
|
danielebarchiesi@4
|
66 $vars['group_attributes']['class'] = $vars['options']['group']['class'];
|
danielebarchiesi@4
|
67 }
|
danielebarchiesi@4
|
68
|
danielebarchiesi@4
|
69 $vars['list_element'] = check_plain($vars['options']['list']['element_type']);
|
danielebarchiesi@4
|
70 $vars['list_attributes'] = array();
|
danielebarchiesi@4
|
71 if ($vars['options']['list']['class']) {
|
danielebarchiesi@4
|
72 $vars['list_attributes']['class'] = $vars['options']['list']['class'];
|
danielebarchiesi@4
|
73 }
|
danielebarchiesi@4
|
74
|
danielebarchiesi@4
|
75 // TODO: set a default or handle empty value.
|
danielebarchiesi@4
|
76 $vars['row_element'] = check_plain($vars['options']['row']['element_type']);
|
danielebarchiesi@4
|
77 $last_every_nth = $vars['options']['row']['last_every_nth'];
|
danielebarchiesi@4
|
78
|
danielebarchiesi@4
|
79 $vars['row_attributes'] = array();
|
danielebarchiesi@4
|
80
|
danielebarchiesi@4
|
81 // Set up striping class array.
|
danielebarchiesi@4
|
82 $stripes = array();
|
danielebarchiesi@4
|
83 if (trim($vars['options']['row']['striping_classes'])) {
|
danielebarchiesi@4
|
84 $stripes = explode(' ', trim($vars['options']['row']['striping_classes']));
|
danielebarchiesi@4
|
85 }
|
danielebarchiesi@4
|
86 $striping = count($stripes);
|
danielebarchiesi@4
|
87
|
danielebarchiesi@4
|
88 // Get alias tokens.
|
danielebarchiesi@4
|
89 $tokens = semanticviews_get_alias_tokens($view);
|
danielebarchiesi@4
|
90
|
danielebarchiesi@4
|
91 foreach ($vars['rows'] as $id => $row) {
|
danielebarchiesi@4
|
92 // Get token replacements.
|
danielebarchiesi@4
|
93 $replacements = semanticviews_get_token_replacements($view->result[$id], $tokens);
|
danielebarchiesi@4
|
94 // Add replacement for the row number.
|
danielebarchiesi@4
|
95 $replacements['#'] = $id;
|
danielebarchiesi@4
|
96
|
danielebarchiesi@4
|
97 $vars['row_attributes'][$id] = array();
|
danielebarchiesi@4
|
98 $classes = array();
|
danielebarchiesi@4
|
99 if ($vars['options']['row']['class']) {
|
danielebarchiesi@4
|
100 $classes[] = strtr($vars['options']['row']['class'], $replacements);
|
danielebarchiesi@4
|
101 }
|
danielebarchiesi@4
|
102 if ($vars['options']['row']['first_class']) {
|
danielebarchiesi@4
|
103 // The FIRST class attribute can be used in two ways. When the "last every
|
danielebarchiesi@4
|
104 // nth" option is specified, the FIRST attribute is added to the class in
|
danielebarchiesi@4
|
105 // those intervals. This could be useful for grid designs where the first
|
danielebarchiesi@4
|
106 // unit in a row needs a zero width margin.
|
danielebarchiesi@4
|
107 if (($last_every_nth && $id % $last_every_nth == 0) ||
|
danielebarchiesi@4
|
108 // Otherwise when last every nth is not set, the FIRST class is added
|
danielebarchiesi@4
|
109 // to the first row in the pager set.
|
danielebarchiesi@4
|
110 (!$last_every_nth && $id == 0)) {
|
danielebarchiesi@4
|
111 $classes[] = strtr($vars['options']['row']['first_class'], $replacements);
|
danielebarchiesi@4
|
112 }
|
danielebarchiesi@4
|
113 }
|
danielebarchiesi@4
|
114 if ($vars['options']['row']['last_class']) {
|
danielebarchiesi@4
|
115 // The LAST class attribute can be used in two ways. When the "last every
|
danielebarchiesi@4
|
116 // nth" option is specified, the LAST attribute is added to the class in
|
danielebarchiesi@4
|
117 // those intervals. This could be useful for grid designs where the last
|
danielebarchiesi@4
|
118 // unit in a row needs a zero width margin.
|
danielebarchiesi@4
|
119 if (($last_every_nth && ($id + 1) % $last_every_nth == 0) ||
|
danielebarchiesi@4
|
120 // Otherwise when last every nth is not set, the LAST class is added
|
danielebarchiesi@4
|
121 // to the last row in the pager set.
|
danielebarchiesi@4
|
122 (!$last_every_nth && ($id + 1) == count($vars['rows']))) {
|
danielebarchiesi@4
|
123 $classes[] = strtr($vars['options']['row']['last_class'], $replacements);
|
danielebarchiesi@4
|
124 }
|
danielebarchiesi@4
|
125 }
|
danielebarchiesi@4
|
126
|
danielebarchiesi@4
|
127 if ($striping) {
|
danielebarchiesi@4
|
128 $classes[] = strtr($stripes[$id % $striping], $replacements);
|
danielebarchiesi@4
|
129 }
|
danielebarchiesi@4
|
130
|
danielebarchiesi@4
|
131 if (!empty($classes)) {
|
danielebarchiesi@4
|
132 $vars['row_attributes'][$id]['class'] = implode(' ', $classes);
|
danielebarchiesi@4
|
133 }
|
danielebarchiesi@4
|
134 }
|
danielebarchiesi@4
|
135 }
|