aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engine/lib/tags.php9
-rw-r--r--mod/blog/views/default/blog/sidebar.php7
-rw-r--r--mod/blog/views/default/blog/sidebar/tagcloud.php31
-rw-r--r--views/default/output/tagcloud.php18
-rw-r--r--views/default/page/elements/tagcloud_block.php57
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);