diff options
-rw-r--r-- | engine/lib/tags.php | 9 | ||||
-rw-r--r-- | mod/blog/views/default/blog/sidebar.php | 7 | ||||
-rw-r--r-- | mod/blog/views/default/blog/sidebar/tagcloud.php | 31 | ||||
-rw-r--r-- | views/default/output/tagcloud.php | 18 | ||||
-rw-r--r-- | views/default/page/elements/tagcloud_block.php | 57 |
5 files changed, 69 insertions, 53 deletions
diff --git a/engine/lib/tags.php b/engine/lib/tags.php index 32d48eff2..1116d63f3 100644 --- a/engine/lib/tags.php +++ b/engine/lib/tags.php @@ -269,10 +269,11 @@ function elgg_view_tagcloud(array $options = array()) { } $tag_data = elgg_get_tags($options); - return elgg_view("output/tagcloud", array('value' => $tag_data, - 'type' => $type, - 'subtype' => $subtype)); - + return elgg_view("output/tagcloud", array( + 'value' => $tag_data, + 'type' => $type, + 'subtype' => $subtype, + )); } /** diff --git a/mod/blog/views/default/blog/sidebar.php b/mod/blog/views/default/blog/sidebar.php index 4eb5cf443..b7dfaa2e1 100644 --- a/mod/blog/views/default/blog/sidebar.php +++ b/mod/blog/views/default/blog/sidebar.php @@ -19,4 +19,9 @@ if ($vars['page'] == 'all') { echo elgg_view('blog/sidebar/archives', $vars); -echo elgg_view('blog/sidebar/tagcloud', $vars); +if ($vars['page'] != 'friends') { + echo elgg_view('page/elements/tagcloud_block', array( + 'subtypes' => 'blog', + 'owner_guid' => elgg_get_page_owner_guid(), + )); +} diff --git a/mod/blog/views/default/blog/sidebar/tagcloud.php b/mod/blog/views/default/blog/sidebar/tagcloud.php deleted file mode 100644 index 70c454390..000000000 --- a/mod/blog/views/default/blog/sidebar/tagcloud.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php -/** - * Blog tag cloud - */ - -$loggedin_user = elgg_get_logged_in_user_entity(); -$page_owner = elgg_get_page_owner_entity(); - -if ($page_owner && $vars['page'] != 'friends') { - - // friends page lists all tags; mine lists owner's - $owner_guid = ($vars['page'] == 'friends') ? '' : $page_owner->getGUID(); - $options = array( - 'type' => 'object', - 'subtype' => 'blog', - 'owner_guid' => $owner_guid, - 'threshold' => 0, - 'limit' => 50, - 'tag_name' => 'tags', - ); - echo elgg_view_tagcloud($options); -} else { - $options = array( - 'type' => 'object', - 'subtype' => 'blog', - 'threshold' => 0, - 'limit' => 50, - 'tag_name' => 'tags', - ); - echo elgg_view_tagcloud($options); -} diff --git a/views/default/output/tagcloud.php b/views/default/output/tagcloud.php index 3bc04a3fb..22b6cf49d 100644 --- a/views/default/output/tagcloud.php +++ b/views/default/output/tagcloud.php @@ -12,8 +12,6 @@ * @uses $vars['subtype'] Entity subtype */ -$context = elgg_get_context(); - if (!empty($vars['subtype'])) { $subtype = "&entity_subtype=" . urlencode($vars['subtype']); } else { @@ -53,22 +51,8 @@ if (!empty($vars['tagcloud']) && is_array($vars['tagcloud'])) { $url = elgg_format_url($url); $cloud .= "<a href=\"$url\" style=\"font-size: $size%\" title=\"".addslashes($tag->tag)." ($tag->total)\">" . htmlspecialchars($tag->tag, ENT_QUOTES, 'UTF-8') . "</a>"; } - - if ($context != 'tags') { - $cloud .= '<p class="small">'; - $cloud .= elgg_view_icon('tag'); - $cloud .= elgg_view('output/url', array( - 'href' => 'tags', - 'text' => elgg_echo('tagcloud:allsitetags'), - )); - $cloud .= '</p>'; - } $cloud .= elgg_view('tagcloud/extend'); - if ($context != 'tags') { - echo elgg_view_module('aside', elgg_echo('tagcloud'), $cloud, array('class' => 'elgg-tagcloud')); - } else { - echo "<div class=\"elgg-tagcloud\">$cloud</div>"; - } + echo "<div class=\"elgg-tagcloud\">$cloud</div>"; } diff --git a/views/default/page/elements/tagcloud_block.php b/views/default/page/elements/tagcloud_block.php new file mode 100644 index 000000000..8b67c9e37 --- /dev/null +++ b/views/default/page/elements/tagcloud_block.php @@ -0,0 +1,57 @@ +<?php +/** + * Display content-based tags + * + * Generally used in a sidebar. Does not work with groups currently. + * + * @uses $vars['subtypes'] Object subtype string or array of subtypes + * @uses $vars['owner_guid'] The owner of the content being tagged + * @uses $vars['limit'] The maxinum number of tags to display + */ + +$owner_guid = elgg_extract('owner_guid', $vars, ELGG_ENTITIES_ANY_VALUE); +if (!$owner_guid) { + $owner_guid = ELGG_ENTITIES_ANY_VALUE; +} + +$owner_entity = get_entity($owner_guid); +if ($owner_entity && elgg_instanceof($owner_entity, 'group')) { + // not supporting groups so return + return true; +} + +$options = array( + 'type' => 'object', + 'subtype' => elgg_extract('subtypes', $vars, ELGG_ENTITIES_ANY_VALUE), + 'owner_guid' => $owner_guid, + 'threshold' => 0, + 'limit' => elgg_extract('limit', $vars, 50), + 'tag_name' => 'tags', +); + +$title = elgg_echo('tagcloud'); +if (is_array($options['subtype']) && count($options['subtype']) > 1) { + // we cannot provide links to tagged objects with multiple types + $tag_data = elgg_get_tags($options); + $cloud = elgg_view("output/tagcloud", array( + 'value' => $tag_data, + 'type' => $type, + )); +} else { + $cloud = elgg_view_tagcloud($options); +} +if (!$cloud) { + return true; +} + +// add a link to all site tags +$cloud .= '<p class="small">'; +$cloud .= elgg_view_icon('tag'); +$cloud .= elgg_view('output/url', array( + 'href' => 'tags', + 'text' => elgg_echo('tagcloud:allsitetags'), +)); +$cloud .= '</p>'; + + +echo elgg_view_module('aside', $title, $cloud); |