diff options
author | Carlo Landmeter <clandmeter@gmail.com> | 2011-05-10 13:24:51 +0200 |
---|---|---|
committer | Carlo Landmeter <clandmeter@gmail.com> | 2011-05-10 13:24:51 +0200 |
commit | 06cbba3a765a8052a116336df0baff43bc55494c (patch) | |
tree | 799ec672cd9eb50776ee07889d23dfdb9759c8b4 /apk_browser.module | |
parent | cbaac4bb495c61994434be49d0c754b81fe20edc (diff) | |
download | apk_browser-06cbba3a765a8052a116336df0baff43bc55494c.tar.bz2 apk_browser-06cbba3a765a8052a116336df0baff43bc55494c.tar.xz |
added reverse depends block and make blocks collapsible
Diffstat (limited to 'apk_browser.module')
-rw-r--r-- | apk_browser.module | 99 |
1 files changed, 76 insertions, 23 deletions
diff --git a/apk_browser.module b/apk_browser.module index d05e294..39b4e49 100644 --- a/apk_browser.module +++ b/apk_browser.module @@ -582,7 +582,7 @@ function apk_browser_preprocess_node(&$vars) { } } -function apk_browser_origin_table() { +function apk_browser_origin_list() { //Get a loaded object from a router item. $node = menu_get_object(); //Some older packages are missing origin field. @@ -601,7 +601,7 @@ function apk_browser_origin_table() { ':arch' => $node->taxonomy_apk_arch['und']['0']['tid'], ':repo' => $node->taxonomy_apk_repo['und']['0']['tid'] ) - )->fetchCol(); + )->fetchCol(); if ($rows) { foreach ($rows as $key => $row) { $link = l($row, 'apk/' . @@ -609,36 +609,89 @@ function apk_browser_origin_table() { $node->taxonomy_apk_arch['und']['0']['taxonomy_term']->name . '/' . $row ); - $list['items'][]['data'] = $link; + $list['items'][]['data'] = $link; } - $table['attributes']['id'] = 'same-origin'; return theme('item_list', $list); } } return FALSE; } +function apk_browser_reverse_depends() { + $node = menu_get_object(); + $rows = db_query(" + SELECT node.title + FROM {node} + LEFT JOIN {field_data_apk_depends} as deps ON (node.nid = deps.entity_id) + LEFT JOIN {field_data_taxonomy_apk_arch} as arch ON (node.nid = arch.entity_id) + LEFT JOIN {field_data_taxonomy_apk_repo} as repo ON (node.nid = repo.entity_id) + WHERE deps.apk_depends_value = :deps + AND arch.taxonomy_apk_arch_tid = :arch + AND repo.taxonomy_apk_repo_tid = :repo + AND node.status = '1' + ", array( + ':deps' => $node->title, + ':arch' => $node->taxonomy_apk_arch['und']['0']['tid'], + ':repo' => $node->taxonomy_apk_repo['und']['0']['tid'] + ) + )->fetchCol(); + if ($rows) { + foreach ($rows as $key => $row) { + $link = l($row, 'apk/' . + $node->taxonomy_apk_repo['und']['0']['taxonomy_term']->name . '/' . + $node->taxonomy_apk_arch['und']['0']['taxonomy_term']->name . '/' . + $row + ); + $list['items'][]['data'] = $link; + } + return theme('item_list', $list); + } else { + return FALSE; + } +} + function apk_browser_block_info() { - $blocks['apk_browser_origin'] = array( - 'info' => t('Packages with same origin'), - 'visibility' => BLOCK_VISIBILITY_LISTED, - // This block should only display on pages starting with apk. - 'pages' => 'apk/*' - ); - return $blocks; + $blocks['apk_browser_origin'] = array( + 'info' => t('Packages with same origin'), + 'visibility' => BLOCK_VISIBILITY_LISTED, + // This block should only display on pages starting with apk. + 'pages' => 'apk/*' + ); + $blocks['apk_browser_reverse_depends'] = array( + 'info' => t('Package reverse dependicies'), + 'visibility' => BLOCK_VISIBILITY_LISTED, + 'pages' => 'apk/*' + ); + return $blocks; } function apk_browser_block_view($delta = '') { - //The $delta parameter tells us which block is being requested. - switch ($delta) { - case 'apk_browser_origin': - // Title of the block - $block['subject'] = t('Same origin'); - // content of the block - $table = apk_browser_origin_table(); - $block['content'] = ($table) ? $table : FALSE; - break; - } - //return FALSE will disable the block from display - return ($block['content']) ? $block : FALSE; + $js = 'jQuery(document).ready(function() { + jQuery(".block-apk-browser .block-content").hide(); + jQuery(".block-apk-browser .block-title").click(function() + { jQuery(this).next(".block-apk-browser .block-content").slideToggle(500); + return FALSE; + }); + });'; + //The $delta parameter tells us which block is being requested. + switch ($delta) { + case 'apk_browser_origin': + $origin = apk_browser_origin_list(); + if ($origin) { + $block['subject'] = t('Same origin'); + $block['content'] = $origin; + } + break; + case 'apk_browser_reverse_depends': + $revdep = apk_browser_reverse_depends(); + if ($revdep) { + $block['subject'] = t('Reverse dependecies'); + $block['content'] = $revdep; + } + } + // If one of the functions above returns true, we add collapse script + if (($origin) || ($revdep)) { + drupal_add_js($js, 'inline'); + } + return ($block['content']) ? $block : FALSE; } |