]> gitweb.fluxo.info Git - semanticscuttle.git/commitdiff
New feature: Dynamic tree of tags using Dojo toolkit (used by a menu2 sidebar box...
authormensonge <mensonge@b3834d28-1941-0410-a4f8-b48e95affb8f>
Thu, 20 Nov 2008 13:42:03 +0000 (13:42 +0000)
committermensonge <mensonge@b3834d28-1941-0410-a4f8-b48e95affb8f>
Thu, 20 Nov 2008 13:42:03 +0000 (13:42 +0000)
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@165 b3834d28-1941-0410-a4f8-b48e95affb8f

ajax/getlinkedtags.php [new file with mode: 0644]
config.inc.php.example
scuttle.css
templates/sidebar.block.menu2.php [new file with mode: 0644]
templates/top.inc.php

diff --git a/ajax/getlinkedtags.php b/ajax/getlinkedtags.php
new file mode 100644 (file)
index 0000000..fa8f2d0
--- /dev/null
@@ -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);
+?>
+] }
index 9966286e86a0f050a5e80d38d73b2e9b4ecced4c..47e314ef07bdc81646f12a0a840429dd9b95c181 100644 (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]}
index f148a68569a4ea728a924166ab969a7457f31e1b..729598774e3d235919f7b3eec34831467ee28564 100644 (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 {
diff --git a/templates/sidebar.block.menu2.php b/templates/sidebar.block.menu2.php
new file mode 100644 (file)
index 0000000..9b660fa
--- /dev/null
@@ -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
+}
+?>
index dca90367722cfe309d07d1c0f214fd629845f48a..88a949a0445ca71c388214eb84bc9c607f799972 100644 (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 = '';