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
This commit is contained in:
mensonge 2008-11-20 13:42:03 +00:00
parent 54991bce61
commit 3c685aa352
5 changed files with 147 additions and 5 deletions

63
ajax/getlinkedtags.php Normal file
View file

@ -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);
?>
] }

View file

@ -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]}

View file

@ -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 {

View file

@ -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
}
?>

View file

@ -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 = '';