Mercurial > hg > rr-repo
diff sites/all/modules/semanticviews/semanticviews.theme.inc @ 4:ce11bbd8f642
added modules
author | danieleb <danielebarchiesi@me.com> |
---|---|
date | Thu, 19 Sep 2013 10:38:44 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sites/all/modules/semanticviews/semanticviews.theme.inc Thu Sep 19 10:38:44 2013 +0100 @@ -0,0 +1,135 @@ +<?php +/** + * @file semanticviews.theme.inc + * TODO: Enter file description here. + */ + +/** + * Preprocess theme function to print a single record from a row, with fields + */ +function template_preprocess_semanticviews_view_fields(&$vars) { + $view = $vars['view']; + + // Loop through the fields for this view. + $vars['fields'] = array(); // ensure it's at least an empty array. + foreach ($view->field as $id => $field) { + // render this even if set to exclude so it can be used elsewhere. + $field_output = $view->field[$id]->theme($vars['row']); + $empty = $field_output !== 0 && empty($field_output); + if (empty($field->options['exclude']) && !(($vars['options']['skip_blank'] || $field->options['hide_empty']) && $empty)) { + $object = new stdClass(); + + $object->content = $field_output; + if (isset($view->field[$id]->field_alias) && isset($vars['row']->{$view->field[$id]->field_alias})) { + $object->raw = $vars['row']->{$view->field[$id]->field_alias}; + } + else { + $object->raw = NULL; // make sure it exists to reduce NOTICE + } + + $object->handler = &$view->field[$id]; + + $semantic_html = $vars['options']['semantic_html'][$id]; + + // Field content + $object->element_type = check_plain($semantic_html['element_type']); + $object->attributes = array(); + if ($semantic_html['class']) { + $object->attributes['class'] = $semantic_html['class']; + } + + // Field label + $object->label = check_plain($view->field[$id]->label()); + if (!empty($object->label)) { + $object->label_element_type = check_plain($semantic_html['label_element_type']); + $object->label_attributes = array(); + if ($semantic_html['label_class']) { + $object->label_attributes['class'] = $semantic_html['label_class']; + } + } + + $vars['fields'][$id] = $object; + } + } + +} + +/** + * Display the simple view of rows one after another + */ +function template_preprocess_semanticviews_view_unformatted(&$vars) { + $view = $vars['view']; + + $vars['group_element'] = check_plain($vars['options']['group']['element_type']); + $vars['group_attributes'] = array(); + if ($vars['options']['group']['class']) { + $vars['group_attributes']['class'] = $vars['options']['group']['class']; + } + + $vars['list_element'] = check_plain($vars['options']['list']['element_type']); + $vars['list_attributes'] = array(); + if ($vars['options']['list']['class']) { + $vars['list_attributes']['class'] = $vars['options']['list']['class']; + } + + // TODO: set a default or handle empty value. + $vars['row_element'] = check_plain($vars['options']['row']['element_type']); + $last_every_nth = $vars['options']['row']['last_every_nth']; + + $vars['row_attributes'] = array(); + + // Set up striping class array. + $stripes = array(); + if (trim($vars['options']['row']['striping_classes'])) { + $stripes = explode(' ', trim($vars['options']['row']['striping_classes'])); + } + $striping = count($stripes); + + // Get alias tokens. + $tokens = semanticviews_get_alias_tokens($view); + + foreach ($vars['rows'] as $id => $row) { + // Get token replacements. + $replacements = semanticviews_get_token_replacements($view->result[$id], $tokens); + // Add replacement for the row number. + $replacements['#'] = $id; + + $vars['row_attributes'][$id] = array(); + $classes = array(); + if ($vars['options']['row']['class']) { + $classes[] = strtr($vars['options']['row']['class'], $replacements); + } + if ($vars['options']['row']['first_class']) { + // The FIRST class attribute can be used in two ways. When the "last every + // nth" option is specified, the FIRST attribute is added to the class in + // those intervals. This could be useful for grid designs where the first + // unit in a row needs a zero width margin. + if (($last_every_nth && $id % $last_every_nth == 0) || + // Otherwise when last every nth is not set, the FIRST class is added + // to the first row in the pager set. + (!$last_every_nth && $id == 0)) { + $classes[] = strtr($vars['options']['row']['first_class'], $replacements); + } + } + if ($vars['options']['row']['last_class']) { + // The LAST class attribute can be used in two ways. When the "last every + // nth" option is specified, the LAST attribute is added to the class in + // those intervals. This could be useful for grid designs where the last + // unit in a row needs a zero width margin. + if (($last_every_nth && ($id + 1) % $last_every_nth == 0) || + // Otherwise when last every nth is not set, the LAST class is added + // to the last row in the pager set. + (!$last_every_nth && ($id + 1) == count($vars['rows']))) { + $classes[] = strtr($vars['options']['row']['last_class'], $replacements); + } + } + + if ($striping) { + $classes[] = strtr($stripes[$id % $striping], $replacements); + } + + if (!empty($classes)) { + $vars['row_attributes'][$id]['class'] = implode(' ', $classes); + } + } +}