aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormensonge <mensonge@b3834d28-1941-0410-a4f8-b48e95affb8f>2008-11-20 13:42:03 +0000
committermensonge <mensonge@b3834d28-1941-0410-a4f8-b48e95affb8f>2008-11-20 13:42:03 +0000
commit3c685aa352587b752af61c6e80b1645ca3830316 (patch)
tree1e0782ec1ba91c8bdf5706cb20d702fa261f9be2
parent54991bce619b2840452594e8a78004b7389445ed (diff)
downloadsemanticscuttle-3c685aa352587b752af61c6e80b1645ca3830316.tar.gz
semanticscuttle-3c685aa352587b752af61c6e80b1645ca3830316.tar.bz2
New feature: Dynamic tree of tags using Dojo toolkit (used by a menu2 sidebar box) [Config file modified: ]
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@165 b3834d28-1941-0410-a4f8-b48e95affb8f
-rw-r--r--ajax/getlinkedtags.php63
-rw-r--r--config.inc.php.example1
-rw-r--r--scuttle.css17
-rw-r--r--templates/sidebar.block.menu2.php62
-rw-r--r--templates/top.inc.php9
5 files changed, 147 insertions, 5 deletions
diff --git a/ajax/getlinkedtags.php b/ajax/getlinkedtags.php
new file mode 100644
index 0000000..fa8f2d0
--- /dev/null
+++ b/ajax/getlinkedtags.php
@@ -0,0 +1,63 @@
+<?php
+/***************************************************************************
+ Copyright (C) 2004 - 2006 Scuttle project
+ http://sourceforge.net/projects/scuttle/
+ http://scuttle.org/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ ***************************************************************************/
+
+/* Return a json file with list of linked tags */
+
+require_once('../header.inc.php');
+
+$b2tservice =& ServiceFactory::getServiceInstance('Bookmark2TagService');
+$bookmarkservice =& ServiceFactory::getServiceInstance('TagService');
+$userservice =& ServiceFactory::getServiceInstance('UserService');
+$tagstatservice =& ServiceFactory::getServiceInstance('TagStatService');
+
+$tag = $_GET['tag'];
+$uId = $_GET['uId'];
+
+if ($userservice->isLoggedOn()) {
+ $loggedon = true;
+ $currentUser = $userservice->getCurrentUser();
+ $currentUserID = $userservice->getCurrentUserId();
+}
+
+function displayTag($tag, $uId) {
+ $tag2tagservice =& ServiceFactory::getServiceInstance('Tag2TagService');
+ $output = '{ id:'.rand().', name:\''.$tag.'\'';
+
+ $linkedTags = $tag2tagservice->getLinkedTags($tag, '>', $uId);
+ if(count($linkedTags) > 0) {
+ $output.= ', children: [';
+ foreach($linkedTags as $linkedTag) {
+ $output.= displayTag($linkedTag, $uId);
+ }
+ $output.= "]";
+ }
+
+ $output.= '},';
+ return $output;
+}
+
+?>
+
+{ label: 'name', identifier: 'id', items: [
+<?php
+echo displayTag($tag, $uId);
+?>
+] }
diff --git a/config.inc.php.example b/config.inc.php.example
index 9966286..47e314e 100644
--- a/config.inc.php.example
+++ b/config.inc.php.example
@@ -79,6 +79,7 @@ $thumbnailsKey = ''; #then artviper.net send you a UserId and a secretKey
$enableCommonTagDescription = true; # enableCommonTagDescription {true, false}
$menuTag = 'menu'; # name of the tag whose subtags will appear into the menu box
$maxSizeMenuBlock = 7; # maximum number of items (tags) appearing into menu box
+$menu2Tags = array('example', 'of', 'menu', 'tags'); # list of tags used by menu2 sidebar box (void list = hidden menu2 box)
### Other ###
$sizeSearchHistory = 10; # number of users' searches that are saved {1..10[Default]..-1[Unlimited]}
diff --git a/scuttle.css b/scuttle.css
index f148a68..7295987 100644
--- a/scuttle.css
+++ b/scuttle.css
@@ -243,7 +243,7 @@ div#sidebar a {
div#sidebar a:hover {
color: #773;
}
-div#sidebar div {
+div#sidebar>div {
background: #FFF url('bg_sidebar.png') bottom repeat-x;
border: 1px solid #CC8;
color: #555;
@@ -282,6 +282,10 @@ div#sidebar ul li {
margin: 0.5em 0;
}
+div#related {
+ padding: 0.5em;
+}
+
/* TAGS */
p.commondescription {
@@ -312,6 +316,17 @@ p.tags span.selected {
background: #CEC;
}
+.treeTag {
+ color: #999955;
+}
+.treeTag:hover {
+ cursor: pointer;
+ text-decoration: underline;
+}
+.treeTag.selected {
+ background: #CEC;
+}
+
/* PROFILE */
table.profile th {
diff --git a/templates/sidebar.block.menu2.php b/templates/sidebar.block.menu2.php
new file mode 100644
index 0000000..9b660fa
--- /dev/null
+++ b/templates/sidebar.block.menu2.php
@@ -0,0 +1,62 @@
+<?php
+$tag2tagservice =& ServiceFactory::getServiceInstance('Tag2TagService');
+$userservice =& ServiceFactory::getServiceInstance('UserService');
+
+require_once('sidebar.linkedtags.inc.php');
+
+/* Manage input */
+$userid = isset($userid)?$userid:0;
+$user = isset($user)?$user:null;
+
+
+$logged_on_userid = $userservice->getCurrentUserId();
+if ($logged_on_userid === false) {
+ $logged_on_userid = NULL;
+}
+
+if(!isset($user)) {
+ $cat_url = createURL('tags', '%2$s');
+}
+
+$menu2Tags = $GLOBALS['menu2Tags'];
+if (sizeOf($menu2Tags) > 0) {
+ ?>
+
+<h2><?php echo '<span>'.T_('Menu Tags').'</span> ';?></h2>
+
+
+<div id="related"><?php
+foreach($menu2Tags as $menu2Tag) {
+
+ echo '<div dojoType="dojo.data.ItemFileReadStore" url="http://127.0.0.6/SemanticScuttle/trunk/ajax/getlinkedtags.php?tag='.$menu2Tag.'" jsid="linkedTagStore" ></div>';
+ echo '<div dojoType="dijit.Tree" store="linkedTagStore" labelAttr="name" >';
+ echo '<script type="dojo/method" event="onClick" args="item">';
+ $returnUrl = sprintf($cat_url, filter($user, 'url'), filter('', 'url'));
+ echo 'window.location = "'.$returnUrl.'"+item.name';
+ echo '</script>';
+ echo '<script type="dojo/method" event="getLabelClass" args="item">';
+ echo 'return \'treeTag\';';
+ echo '</script>';
+ echo '</div>';
+}
+?> <!-- /table--> <?php $cUser = $userservice->getUser($userid); ?> <?php if($userid>0): ?>
+<?php if($userid==$logged_on_userid): ?>
+<p style="text-align: right"><a
+ href="<?php echo createURL('alltags', $cUser['username']); ?>"
+ title="<?php echo T_('See all your tags')?>"><?php echo T_('all your tags'); ?></a>
+&rarr;</p>
+<?php else: ?>
+<p style="text-align: right"><a
+ href="<?php echo createURL('alltags', $cUser['username']); ?>"
+ title="<?php echo T_('See all tags from this user')?>"><?php echo T_('all tags from this user'); ?></a>
+&rarr;</p>
+<?php endif; ?> <?php else : ?>
+<p style="text-align: right"><a
+ href="<?php echo createURL('populartags', $cUser['username']); ?>"
+ title="<?php echo T_('See popular tags')?>"><?php echo T_('Popular Tags'); ?></a>
+&rarr;</p>
+<?php endif; ?></div>
+
+<?php
+}
+?>
diff --git a/templates/top.inc.php b/templates/top.inc.php
index dca9036..88a949a 100644
--- a/templates/top.inc.php
+++ b/templates/top.inc.php
@@ -23,7 +23,7 @@ if(isset($rsschannels)) {
src="<?php echo $GLOBALS['root']; ?>jsScuttle.php"></script>
<link rel="stylesheet" type="text/css"
- href="http://ajax.googleapis.com/ajax/libs/dojo/1.2/dijit/themes/tundra/tundra.css">
+ href="http://ajax.googleapis.com/ajax/libs/dojo/1.2/dijit/themes/nihilo/nihilo.css">
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/dojo/1.2/dojo/dojo.xd.js"
@@ -32,14 +32,15 @@ if(isset($rsschannels)) {
<script type="text/javascript">
dojo.require("dojo.parser");
dojo.require("dojo.data.ItemFileReadStore");
-dojo.require("dojox.form.MultiComboBox");
+dojo.require("dojox.form.MultiComboBox");
+dojo.require("dijit.Tree");
</script>
<?php endif ?>
</head>
-<body class="tundra">
-<!-- the tundra class is used by Dojo widgets -->
+<body class="nihilo">
+<!-- the class is used by Dojo widgets -->
<?php
$headerstyle = '';