From 7d2bc871ba497eb5627d4bd84bb7265283d38471 Mon Sep 17 00:00:00 2001 From: Carlo Landmeter Date: Wed, 27 Apr 2011 17:10:04 +0200 Subject: move package table logic to module instead of theme --- apk_browser.module | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 77 insertions(+), 6 deletions(-) diff --git a/apk_browser.module b/apk_browser.module index f33f606..70e37ab 100644 --- a/apk_browser.module +++ b/apk_browser.module @@ -489,17 +489,88 @@ function apk_browser_commit_url($commit) { } $href = str_replace('%commit%', $commit, variable_get('apk_import_commit_url', '')); $attributes = empty($title) ? array() : array('title' => check_plain($title), 'class' => 'with-tooltip'); + //if we get title from query we add tooltip js script + if ($title) { + $path = drupal_get_path('module', 'apk_browser'); + drupal_add_js($path . '/tooltip/tooltip.js'); + drupal_add_js('jQuery().ready(function(){jQuery(".with-tooltip").simpletooltip();});', 'inline'); + } return l($commit, $href, array('attributes' => $attributes)); } +//format the fields into a table +function apk_browser_package_table($vars) { + $empty = '

' . t('None') . '

'; + //prepare depends fields + $depends = ''; + if (!empty($vars['apk_depends'])) { + foreach ($vars['apk_depends'] as $dep) { + $value = trim($dep['value'], '!'); + $value = preg_split("/[<>=]/", $value); + $depends .= '

' . l($dep['value'], 'apk/' . + $vars['taxonomy_apk_repo']['0']['taxonomy_term']->name . '/' . + $vars['taxonomy_apk_arch']['0']['taxonomy_term']->name . '/' . + $value[0], array()) . '

'; + } + } else { + $depends = $empty; + } + //prepare install if fields + $installif = ''; + if (!empty($vars['apk_install_if'])) { + foreach ($vars['apk_install_if'] as $iif) { + $value = trim($iif['value'], '!'); + $value = preg_split("/[<>=]/", $value); + $installif .= '

' . l($iif['value'], 'apk/' . + $vars['taxonomy_apk_repo']['0']['taxonomy_term']->name . '/' . + $vars['taxonomy_apk_arch']['0']['taxonomy_term']->name . '/' . + $value[0], array()) . '

'; + } + } + //prepare origin link + if (!empty($vars['apk_origin'])) { + $value = trim($vars['apk_origin'][0]['value'], '!'); + $value = preg_split("/[<>=]/", $value); + $origin = l($vars['apk_origin'][0]['safe_value'], 'apk/' . + $vars['taxonomy_apk_repo']['0']['taxonomy_term']->name . '/' . + $vars['taxonomy_apk_arch']['0']['taxonomy_term']->name . '/' . + $vars['apk_origin'][0]['value'] + ); + } else { + $origin = $empty; + } + //prepare all fields + $fields[t('Package')] = $vars['title']; + $fields[t('Version')] = $vars['apk_version'][0]['safe_value']; + $fields[t('Architecture')] = $vars['taxonomy_apk_arch'][0]['taxonomy_term']->name; + $fields[t('Repository')] = $vars['taxonomy_apk_repo'][0]['taxonomy_term']->name; + $fields[t('Project')] = l('URL', $vars['apk_url'][0]['safe_value']); + $fields[t('Description')] = $vars['apk_description'][0]['safe_value']; + $fields[t('License')] = $vars['apk_license'][0]['safe_value']; + $fields[t('Maintainer')] = empty($vars['apk_maintainer']) ? $empty : $vars['apk_maintainer'][0]['safe_value']; + $fields[t('Build date')] = empty($vars['apk_build_time']) ? $empty : date('r', $vars['apk_build_time'][0]['safe_value']); + $fields[t('Commit')] = empty($vars['apk_commit']) ? $empty : apk_browser_commit_url($vars['apk_commit']['0']['value']); + //only show origin if its different then itself + if ($vars['apk_origin'][0]['value'] != $vars['title']) { + $fields[t('Origin')] = $origin; + } + //to prevent misunderstanding only display when needed. + $fields[t('Depends')] = $depends; + if (!empty($installif)) { + $fields[t('Install if')] = $installif; + } + //setup array for theme function + foreach ($fields as $header => $cell) { + $table['rows'][]['data'] = array(array('data' => $header, 'header' => 'header'), $cell); + } + //render the table + return theme('table', $table); +} + +//create template variable with package table function apk_browser_preprocess_node(&$vars) { if ($vars['node']->type == 'apk') { - if (isset($vars['apk_commit']['0']['value'])) { - $vars['commit_url'] = apk_browser_commit_url($vars['apk_commit']['0']['value']); - } - $path = drupal_get_path('module', 'apk_browser'); - drupal_add_js($path . '/tooltip/tooltip.js'); - drupal_add_js('jQuery().ready(function(){jQuery(".with-tooltip").simpletooltip();});', 'inline'); + $vars['apk_table'] = apk_browser_package_table($vars); } } -- cgit v1.2.3