function theme_widgets_set_view in Widgets 7
Returns HTML for a preview of an widget set.
Parameters
$variables: An associative array containing:
- set: The widget set array being viewed.
Return value
string
1 call to theme_widgets_set_view()
5 theme calls to theme_widgets_set_view()
- theme_widgets_element_view in ./
widgets.module - widgets_block_view in ./
widgets.module - Implements hook_block_view().
- widgets_node_view in ./
widgets.module - Implements hook_node_view().
- widgets_set_form in ./
widgets.admin.inc - Form builder; Edit an widget set name and elements order.
- widgets_tokens in ./
widgets.tokens.inc - Implements hook_tokens().
File
- ./
widgets.module, line 1093 - Exposes global functionality for creating widget sets.
Code
function theme_widgets_set_view($variables) {
drupal_add_css(drupal_get_path('module', 'widgets') . '/widgets.css');
$set = $variables['set'];
$is_preview = widgets_is_preview();
$cid = FALSE;
$process_tokens = TRUE;
$token_data = array(
'set' => $set,
);
if (isset($variables['process_tokens']) && !$variables['process_tokens']) {
$process_tokens = FALSE;
}
else {
if (isset($variables['token_data'])) {
$token_data += $variables['token_data'];
}
}
$is_preview = widgets_is_preview();
if (!$is_preview && isset($set['data']['cache']['scope']) && ($cid = widgets_build_cache_cid($set['name'], $set['data']['cache']['scope'], $token_data))) {
$cache = cache_get($cid, 'cache_widgets');
if ($cache) {
return $cache->data['output'];
}
}
$style = isset($set['data']['style']) ? $set['data']['style'] : '';
$output = '';
$set_pre = '';
$set_post = '';
$set_pre_elements = array();
$set_post_elements = array();
if (is_array($set['elements']) && count($set['elements']) > 0) {
$count = 0;
foreach ($set['elements'] as $weight => $element) {
$template = $element['template'];
$data = isset($element['data']) ? $element['data'] : array();
$token_data['widgets']['element'] = $element;
// replace literal tokens found in template
if ($process_tokens) {
$template = widgets_token_replace($template, $token_data);
}
$template = widgets_replace_fields($template, $data);
if (isset($element['view callback']) && $element['view callback']) {
$template = call_user_func($element['view callback'], $element);
}
// replace tokens from template variables
if ($process_tokens) {
$template = widgets_token_replace($template, $token_data);
}
// if error with tokens, skip widget
if (widgets_get_error($set['name'] . ':' . $element['name']) && !widgets_is_preview()) {
continue;
}
$pre = isset($element['prefix']) ? $element['prefix'] : '';
$post = isset($element['postfix']) ? $element['postfix'] : '';
if ($style) {
$a = explode('-', $style);
if ($a[0] == 'plain') {
if ($a[1] == 'linebreaks' && $count > 0) {
$pre = "\n";
}
else {
if ($a[1] == 'spaces' && $count > 0) {
$pre = " ";
}
}
}
else {
$pre = '<div id="widgets-element-' . $element['name'] . '" class="widgets widgets-element widgets-element-' . $style . ' widgets-style-' . $style . '">';
$post = '</div>';
}
}
$output .= $pre . $template . $post;
if (isset($element['add_js']) && $element['add_js']['data']) {
$element['add_js']['data'] = widgets_replace_fields($element['add_js']['data'], $data);
$scope = $element['add_js']['options']['scope'];
if ($scope == 'header' || $scope == 'footer') {
widgets_add_js_singleton($element['add_js']);
}
elseif ($scope == 'set_pre') {
// check if already added, if not add
if (!isset($set_pre_elements[$element['add_js']['data']])) {
if ($process_tokens) {
$set_pre .= token_replace($element['add_js']['data'], $token_data);
}
$set_pre_elements[$element['add_js']['data']] = 1;
}
}
elseif ($scope == 'set_post') {
// check if already added, if not add
if (!isset($set_post_elements[$element['add_js']['data']])) {
if ($process_tokens) {
$set_post .= token_replace($element['add_js']['data'], $token_data);
}
$set_post_elements[$element['add_js']['data']] = 1;
}
}
}
}
}
//$set_pre = token_replace($set_pre, $token_data);
// $set_post = token_replace($set_post, $token_data);
$pre = '';
$post = '';
if ($style) {
$a = explode('-', $style);
if ($a[0] == 'plain') {
}
else {
$pre = '<div id="widgets-element-' . $set['name'] . '" class="widgets widgets-set widgets-set-' . $style . ' widgets-style-' . $style . '">';
$post = '</div>';
if ($style == 'horizontal') {
$post = '<div class="widgets-clear"></div>' . $post;
}
}
}
$output = $set_pre . $pre . $output . $post . $set_post;
$data = array(
'output' => $output,
);
if (!$is_preview && $cid) {
cache_set($cid, $data, 'cache_widgets');
}
return $output;
}