From 3ef7b27643328861ab47bc1cfd8596bc747b5a09 Mon Sep 17 00:00:00 2001 From: mensonge Date: Mon, 28 Jan 2008 14:55:07 +0000 Subject: new feature: structured tags, add synonym link git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@29 b3834d28-1941-0410-a4f8-b48e95affb8f --- templates/sidebar.block.linked.php | 69 +++++++++++++++++++++++++++++++------- 1 file changed, 56 insertions(+), 13 deletions(-) (limited to 'templates/sidebar.block.linked.php') diff --git a/templates/sidebar.block.linked.php b/templates/sidebar.block.linked.php index 24ca7e6..74516ae 100644 --- a/templates/sidebar.block.linked.php +++ b/templates/sidebar.block.linked.php @@ -3,15 +3,30 @@ $tag2tagservice =& ServiceFactory::getServiceInstance('Tag2TagService'); $userservice =& ServiceFactory::getServiceInstance('UserService'); function displayLinkedTags($tag, $linkType, $uId, $cat_url, $user, $editingMode =false, $precedentTag =null, $level=0, $stopList=array()) { + + if(in_array($tag, $stopList)) { + return array('output' => '', 'stoplist' => $stopList); + } + $tag2tagservice =& ServiceFactory::getServiceInstance('Tag2TagService'); $tagstatservice =& ServiceFactory::getServiceInstance('TagStatService'); $output = ''; $output.= ''; $output.= ''; - $output.= ''. str_repeat(' ', $level*2) .''; + $output.= ''; + $output.= $level == 0?'':''; + $output.= str_repeat(' ', $level*2) .''; + $output.= $level == 1?'':''; //$output.= ' - '. $tagstatservice->getMaxDepth($tag, $linkType, $uId); + $synonymTags = $tag2tagservice->getAllLinkedTags($tag, '=', $uId); + $synonymTags = is_array($synonymTags)?$synonymTags:array($synonymTags); + sort($synonymTags); + foreach($synonymTags as $synonymTag) { + $output.= ", ".$synonymTag; + } + if($editingMode) { $output.= ' ('; $output.= 'add'; @@ -24,16 +39,26 @@ function displayLinkedTags($tag, $linkType, $uId, $cat_url, $user, $editingMode $output.= ''; $output.= ''; - if(!in_array($tag, $stopList)) { - $linkedTags = $tag2tagservice->getLinkedTags($tag, '>', $uId); - $precedentTag = $tag; - $stopList[] = $tag; - $level = $level + 1; - foreach($linkedTags as $linkedTag) { - $output.= displayLinkedTags($linkedTag, $linkType, $uId, $cat_url, $user, $editingMode, $precedentTag, $level, $stopList); - } - } - return $output; + $tags = array($tag); + $tags = array_merge($tags, $synonymTags); + foreach($tags as $tag) { + + if(!in_array($tag, $stopList)) { + $linkedTags = $tag2tagservice->getLinkedTags($tag, '>', $uId); + $precedentTag = $tag; + $stopList[] = $tag; + foreach($linkedTags as $linkedTag) { + $displayLinkedTags = displayLinkedTags($linkedTag, $linkType, $uId, $cat_url, $user, $editingMode, $precedentTag, $level + 1, $stopList); + $output.= $displayLinkedTags['output']; + } + if(is_array($displayLinkedTags['stopList'])) { + $stopList = array_merge($stopList, $displayLinkedTags['stopList']); + $stopList = array_unique($stopList); + } + } + + } + return array('output' => $output, 'stopList' => $stopList); } $logged_on_userid = $userservice->getCurrentUserId(); @@ -59,7 +84,7 @@ if ($currenttag) { if(count($explodedTags) > 0) { $displayLinkedZone = false; foreach($explodedTags as $explodedTag) { - if($tag2tagservice->getLinkedTags($explodedTag, '>', $userid)) { + if($tag2tagservice->getLinkedTags($explodedTag, '>', $userid) || $tag2tagservice->getLinkedTags($explodedTag, '>', $userid, true) || $tag2tagservice->getLinkedTags($explodedTag, '=', $userid)) { $displayLinkedZone = true; break; } @@ -86,8 +111,26 @@ if(count($explodedTags) > 0) { } else { $editingMode = false; } + $stopList = array(); foreach($explodedTags as $explodedTag) { - echo displayLinkedTags($explodedTag, '>', $userid, $cat_url, $user, $editingMode); + if(!in_array($explodedTag, $stopList)) { + // fathers tag + $fatherTags = $tag2tagservice->getLinkedTags($explodedTag, '>', $userid, true); + if(count($fatherTags)>0) { + foreach($fatherTags as $fatherTag) { + echo ''; + echo ''; + echo ''; + } + } + + $displayLinkedTags = displayLinkedTags($explodedTag, '>', $userid, $cat_url, $user, $editingMode, null, 0); + echo $displayLinkedTags['output']; + if(is_array($displayLinkedTags['stopList'])) { + $stopList = array_merge($stopList, $displayLinkedTags['stopList']); + } + } + } ?> -- cgit v1.2.3