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:
parent
54991bce61
commit
3c685aa352
5 changed files with 147 additions and 5 deletions
63
ajax/getlinkedtags.php
Normal file
63
ajax/getlinkedtags.php
Normal 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);
|
||||||
|
?>
|
||||||
|
] }
|
|
@ -79,6 +79,7 @@ $thumbnailsKey = ''; #then artviper.net send you a UserId and a secretKey
|
||||||
$enableCommonTagDescription = true; # enableCommonTagDescription {true, false}
|
$enableCommonTagDescription = true; # enableCommonTagDescription {true, false}
|
||||||
$menuTag = 'menu'; # name of the tag whose subtags will appear into the menu box
|
$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
|
$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 ###
|
### Other ###
|
||||||
$sizeSearchHistory = 10; # number of users' searches that are saved {1..10[Default]..-1[Unlimited]}
|
$sizeSearchHistory = 10; # number of users' searches that are saved {1..10[Default]..-1[Unlimited]}
|
||||||
|
|
17
scuttle.css
17
scuttle.css
|
@ -243,7 +243,7 @@ div#sidebar a {
|
||||||
div#sidebar a:hover {
|
div#sidebar a:hover {
|
||||||
color: #773;
|
color: #773;
|
||||||
}
|
}
|
||||||
div#sidebar div {
|
div#sidebar>div {
|
||||||
background: #FFF url('bg_sidebar.png') bottom repeat-x;
|
background: #FFF url('bg_sidebar.png') bottom repeat-x;
|
||||||
border: 1px solid #CC8;
|
border: 1px solid #CC8;
|
||||||
color: #555;
|
color: #555;
|
||||||
|
@ -282,6 +282,10 @@ div#sidebar ul li {
|
||||||
margin: 0.5em 0;
|
margin: 0.5em 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div#related {
|
||||||
|
padding: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
/* TAGS */
|
/* TAGS */
|
||||||
|
|
||||||
p.commondescription {
|
p.commondescription {
|
||||||
|
@ -312,6 +316,17 @@ p.tags span.selected {
|
||||||
background: #CEC;
|
background: #CEC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.treeTag {
|
||||||
|
color: #999955;
|
||||||
|
}
|
||||||
|
.treeTag:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.treeTag.selected {
|
||||||
|
background: #CEC;
|
||||||
|
}
|
||||||
|
|
||||||
/* PROFILE */
|
/* PROFILE */
|
||||||
|
|
||||||
table.profile th {
|
table.profile th {
|
||||||
|
|
62
templates/sidebar.block.menu2.php
Normal file
62
templates/sidebar.block.menu2.php
Normal 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>
|
||||||
|
→</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>
|
||||||
|
→</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>
|
||||||
|
→</p>
|
||||||
|
<?php endif; ?></div>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
?>
|
|
@ -23,7 +23,7 @@ if(isset($rsschannels)) {
|
||||||
src="<?php echo $GLOBALS['root']; ?>jsScuttle.php"></script>
|
src="<?php echo $GLOBALS['root']; ?>jsScuttle.php"></script>
|
||||||
|
|
||||||
<link rel="stylesheet" type="text/css"
|
<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"
|
<script type="text/javascript"
|
||||||
src="http://ajax.googleapis.com/ajax/libs/dojo/1.2/dojo/dojo.xd.js"
|
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">
|
<script type="text/javascript">
|
||||||
dojo.require("dojo.parser");
|
dojo.require("dojo.parser");
|
||||||
dojo.require("dojo.data.ItemFileReadStore");
|
dojo.require("dojo.data.ItemFileReadStore");
|
||||||
dojo.require("dojox.form.MultiComboBox");
|
dojo.require("dojox.form.MultiComboBox");
|
||||||
|
dojo.require("dijit.Tree");
|
||||||
</script>
|
</script>
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="tundra">
|
<body class="nihilo">
|
||||||
<!-- the tundra class is used by Dojo widgets -->
|
<!-- the class is used by Dojo widgets -->
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
$headerstyle = '';
|
$headerstyle = '';
|
||||||
|
|
Loading…
Reference in a new issue