From cb1d41054b26c46c75f746a7d8e5bc28f32664f0 Mon Sep 17 00:00:00 2001 From: Christian Weiske Date: Fri, 1 Oct 2010 18:21:33 +0200 Subject: make adminlinkedtags (menu2Tags) finally work with jquery --- www/ajax/getadminlinkedtags.php | 62 ++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 32 deletions(-) (limited to 'www/ajax') diff --git a/www/ajax/getadminlinkedtags.php b/www/ajax/getadminlinkedtags.php index 6646c50..a08045a 100644 --- a/www/ajax/getadminlinkedtags.php +++ b/www/ajax/getadminlinkedtags.php @@ -21,44 +21,42 @@ /* Return a json file with list of linked tags */ $httpContentType = 'application/json'; +$httpContentType='text/plain'; require_once '../www-header.php'; -/* Service creation: only useful services are created */ -$b2tservice =SemanticScuttle_Service_Factory::get('Bookmark2Tag'); -$bookmarkservice =SemanticScuttle_Service_Factory::get('Tag'); -$tagstatservice =SemanticScuttle_Service_Factory::get('TagStat'); +$tag = isset($_GET['tag']) ? trim($_GET['tag']) : ''; -/* Managing all possible inputs */ -isset($_GET['tag']) ? define('GET_TAG', $_GET['tag']): define('GET_TAG', ''); -isset($_GET['uId']) ? define('GET_UID', $_GET['uId']): define('GET_UID', ''); +function assembleTagData($tag, SemanticScuttle_Service_Tag2Tag $t2t) +{ + if ($tag == '') { + $linkedTags = $GLOBALS['menu2Tags']; + } else { + $linkedTags = $t2t->getAdminLinkedTags($tag, '>'); + } + $tagData = array(); + foreach ($linkedTags as $tag) { + $tagData[] = createTagArray($tag); + } -function displayTag($tag, $uId) { - $uId = ($uId==0)?NULL:$uId; // if user is nobody, NULL allows to look for every public tags - - $tag2tagservice =SemanticScuttle_Service_Factory::get('Tag2Tag'); - $output = '{ id:'.rand().', name:\''.$tag.'\''; - - $linkedTags = $tag2tagservice->getAdminLinkedTags($tag, '>'); - if(count($linkedTags) > 0) { - $output.= ', children: ['; - foreach($linkedTags as $linkedTag) { - $output.= displayTag($linkedTag, $uId); - } - $output = substr($output, 0, -1); // remove final comma avoiding IE6 Dojo bug - $output.= "]"; - } + return $tagData; +} - $output.= '},'; - return $output; +function createTagArray($tag) +{ + return array( + 'data' => $tag, + 'attr' => array('rel' => $tag), + //'children' => array('foo', 'bar'), + 'state' => 'closed' + ); } -?> -{ label: 'name', identifier: 'id', items: [ - -] } +$tagData = assembleTagData( + $tag, + SemanticScuttle_Service_Factory::get('Tag2Tag') +); +//$json = substr($json, 0, -1); // remove final comma avoiding IE6 Dojo bug +echo json_encode($tagData); +?> \ No newline at end of file -- cgit v1.2.3-54-g00ecf From bd92516e6fac1970770fbddec612f3d8da30fb3f Mon Sep 17 00:00:00 2001 From: Christian Weiske Date: Fri, 1 Oct 2010 21:34:11 +0200 Subject: make the admin tag menu behave correctly now and show only arrows on nodes that have children --- www/ajax/getadminlinkedtags.php | 63 +++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 30 deletions(-) (limited to 'www/ajax') diff --git a/www/ajax/getadminlinkedtags.php b/www/ajax/getadminlinkedtags.php index a08045a..5581c43 100644 --- a/www/ajax/getadminlinkedtags.php +++ b/www/ajax/getadminlinkedtags.php @@ -1,31 +1,27 @@ + * @author Christian Weiske + * @author Eric Dane + * @license GPL http://www.gnu.org/licenses/gpl.html + * @link http://sourceforge.net/projects/semanticscuttle + */ + $httpContentType = 'application/json'; -$httpContentType='text/plain'; require_once '../www-header.php'; -$tag = isset($_GET['tag']) ? trim($_GET['tag']) : ''; - function assembleTagData($tag, SemanticScuttle_Service_Tag2Tag $t2t) { if ($tag == '') { @@ -36,27 +32,34 @@ function assembleTagData($tag, SemanticScuttle_Service_Tag2Tag $t2t) $tagData = array(); foreach ($linkedTags as $tag) { - $tagData[] = createTagArray($tag); + //FIXME: the hasChildren code is nasty, because it causes too many + // queries onto the database + $hasChildren = 0 < count($t2t->getAdminLinkedTags($tag, '>')); + $tagData[] = createTagArray($tag, $hasChildren); } return $tagData; } -function createTagArray($tag) +function createTagArray($tag, $hasChildren = true) { - return array( + $ar = array( 'data' => $tag, 'attr' => array('rel' => $tag), - //'children' => array('foo', 'bar'), - 'state' => 'closed' ); + if ($hasChildren) { + //jstree needs that to show the arrows + $ar['state'] = 'closed'; + } + + return $ar; } +$tag = isset($_GET['tag']) ? trim($_GET['tag']) : ''; $tagData = assembleTagData( $tag, SemanticScuttle_Service_Factory::get('Tag2Tag') ); -//$json = substr($json, 0, -1); // remove final comma avoiding IE6 Dojo bug echo json_encode($tagData); ?> \ No newline at end of file -- cgit v1.2.3-54-g00ecf From b812deefa1ab85c542c13dc97432ca2fe90958f1 Mon Sep 17 00:00:00 2001 From: Christian Weiske Date: Thu, 7 Oct 2010 18:59:27 +0200 Subject: give admin tags a link href :) --- src/SemanticScuttle/constants.php | 4 +++- www/ajax/getadminlinkedtags.php | 21 +++++++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) (limited to 'www/ajax') diff --git a/src/SemanticScuttle/constants.php b/src/SemanticScuttle/constants.php index 95c4384..aebc059 100644 --- a/src/SemanticScuttle/constants.php +++ b/src/SemanticScuttle/constants.php @@ -17,7 +17,9 @@ if (!isset($GLOBALS['root'])) { $rootTmp = '/'; foreach ($pieces as $piece) { //we eliminate possible sscuttle subfolders (like gsearch for example) - if ($piece != '' && !strstr($piece, '.php') && $piece != 'gsearch') { + if ($piece != '' && !strstr($piece, '.php') + && $piece != 'gsearch' && $piece != 'ajax' + ) { $rootTmp .= $piece .'/'; } } diff --git a/www/ajax/getadminlinkedtags.php b/www/ajax/getadminlinkedtags.php index 5581c43..1004f29 100644 --- a/www/ajax/getadminlinkedtags.php +++ b/www/ajax/getadminlinkedtags.php @@ -41,11 +41,28 @@ function assembleTagData($tag, SemanticScuttle_Service_Tag2Tag $t2t) return $tagData; } +/** + * Creates an jsTree json array for the given tag + * + * @param string $tag Tag name + * @param boolean $hasChildren If the tag has subtags (children) or not + * + * @return array Array to be sent back to the browser as json + */ function createTagArray($tag, $hasChildren = true) { $ar = array( - 'data' => $tag, - 'attr' => array('rel' => $tag), + 'data' => array( + // attributes + 'title' => $tag, + 'attr' => array( + 'href' => createUrl('tags', $tag) + ) + ), + //
  • attributes + 'attr' => array( + 'rel' => $tag,//needed for identifying the tag in html + ), ); if ($hasChildren) { //jstree needs that to show the arrows -- cgit v1.2.3-54-g00ecf From 22e46a9b45810bae480aea72b16680d715a57ff4 Mon Sep 17 00:00:00 2001 From: Christian Weiske Date: Sat, 9 Oct 2010 10:20:14 +0200 Subject: make linkedtags sidebar tree menu work with jquery/jstree now --- data/templates/sidebar.block.linked.php | 131 ++++++++--------------- www/ajax/getadminlinkedtags.php | 16 ++- www/ajax/getlinkedtags.php | 179 +++++++++++++++++++++++--------- 3 files changed, 187 insertions(+), 139 deletions(-) (limited to 'www/ajax') diff --git a/data/templates/sidebar.block.linked.php b/data/templates/sidebar.block.linked.php index 9e91f93..db0d087 100644 --- a/data/templates/sidebar.block.linked.php +++ b/data/templates/sidebar.block.linked.php @@ -1,4 +1,11 @@ getCurrentUserId(); -if ($logged_on_userid === false) { - $logged_on_userid = NULL; -} - -$explodedTags = array(); -if (strlen($currenttag)>0) { - $explodedTags = explode('+', $currenttag); -} else { - if($summarizeLinkedTags == true) { - $orphewTags = $tag2tagservice->getOrphewTags('>', $userid, 4, "nb"); - } else { - $orphewTags = $tag2tagservice->getOrphewTags('>', $userid); - } - - foreach($orphewTags as $orphewTag) { - $explodedTags[] = $orphewTag['tag']; - } -} - +$editingMode = $logged_on_userid !== false; ?> - +

    +
    \ No newline at end of file diff --git a/www/ajax/getadminlinkedtags.php b/www/ajax/getadminlinkedtags.php index 1004f29..5f939a6 100644 --- a/www/ajax/getadminlinkedtags.php +++ b/www/ajax/getadminlinkedtags.php @@ -22,7 +22,16 @@ $httpContentType = 'application/json'; require_once '../www-header.php'; -function assembleTagData($tag, SemanticScuttle_Service_Tag2Tag $t2t) +/** + * Creates and returns an array of tags for the jsTree ajax loader. + * If the tag is empty, the configured menu2 (admin) main tags are used. + * + * @param string $tag Tag name to fetch subtags for + * @param SemanticScuttle_Service_Tag2Tag $t2t Tag relation service + * + * @return array Array of tag data suitable for the jsTree ajax loader + */ +function assembleAdminTagData($tag, SemanticScuttle_Service_Tag2Tag $t2t) { if ($tag == '') { $linkedTags = $GLOBALS['menu2Tags']; @@ -45,7 +54,8 @@ function assembleTagData($tag, SemanticScuttle_Service_Tag2Tag $t2t) * Creates an jsTree json array for the given tag * * @param string $tag Tag name - * @param boolean $hasChildren If the tag has subtags (children) or not + * @param boolean $hasChildren If the tag has subtags (children) or not. + * If unsure, set it to "true". * * @return array Array to be sent back to the browser as json */ @@ -74,7 +84,7 @@ function createTagArray($tag, $hasChildren = true) $tag = isset($_GET['tag']) ? trim($_GET['tag']) : ''; -$tagData = assembleTagData( +$tagData = assembleAdminTagData( $tag, SemanticScuttle_Service_Factory::get('Tag2Tag') ); diff --git a/www/ajax/getlinkedtags.php b/www/ajax/getlinkedtags.php index f412998..307ee26 100644 --- a/www/ajax/getlinkedtags.php +++ b/www/ajax/getlinkedtags.php @@ -1,64 +1,143 @@ + * @author Christian Weiske + * @author Eric Dane + * @license GPL http://www.gnu.org/licenses/gpl.html + * @link http://sourceforge.net/projects/semanticscuttle + */ +$httpContentType = 'application/json'; +#$httpContentType = 'text/plain'; +require_once '../www-header.php'; - 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. +$tag = isset($_GET['tag']) ? $_GET['tag'] : null; +$uId = isset($_GET['uId']) ? (int)$_GET['uId'] : 0; +$loadParentTags = isset($_GET['parent']) ? (bool)$_GET['parent'] : false; - 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. +$tags = explode(' ', trim($tag)); +if (count($tags) == 1 && $tags[0] == '') { + //no tags + $tags = array(); +} - 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 */ -$httpContentType = 'application/json'; -require_once '../www-header.php'; +function assembleLinkedTagData( + $tags, $uId, $loadParentTags, SemanticScuttle_Service_Tag2Tag $t2t +) { + $tagData = array(); -/* Service creation: only useful services are created */ -$b2tservice =SemanticScuttle_Service_Factory::get('Bookmark2Tag'); -$bookmarkservice =SemanticScuttle_Service_Factory::get('Tag'); -$tagstatservice =SemanticScuttle_Service_Factory::get('TagStat'); + if (count($tags) == 0) { + //no tags given -> show the 4 most used top-level tags + $orphewTags = $t2t->getOrphewTags('>', $uId, 4, 'nb'); + #$orphewTags = $t2t->getOrphewTags('>', $uId); + foreach ($orphewTags as $orphewTag) { + $tags[] = $orphewTag['tag']; + } + $loadParentTags = true; + } -/* Managing all possible inputs */ -isset($_GET['tag']) ? define('GET_TAG', $_GET['tag']): define('GET_TAG', ''); -isset($_GET['uId']) ? define('GET_UID', $_GET['uId']): define('GET_UID', ''); + if ($loadParentTags) { + //find parent tags + append the selected tags as children afterwards + foreach ($tags as $tag) { + $parentTags = $t2t->getLinkedTags($tag, '>', $uId, true); + if (count($parentTags) > 0) { + foreach ($parentTags as $parentTag) { + $ta = createTagArray( + $parentTag, true, true, true + ); + //FIXME: find out if there are subtags + $tac = createTagArray($tag, true); + $ta['children'][] = $tac; + $tagData[] = $ta; + } + } else { + //no parent tags -> display it normally + //FIXME: find out if there are subtags + $tagData[] = createTagArray($tag, true); + } + } + } else { + //just find the linked tags + foreach ($tags as $tag) { + $linkedTags = $t2t->getLinkedTags($tag, '>', $uId); + foreach ($linkedTags as $linkedTag) { + //FIXME: find out if there are subtags + $tagData[] = createTagArray($linkedTag, true); + } + } + } + return $tagData; +} -function displayTag($tag, $uId) { - $uId = ($uId==0)?NULL:$uId; // if user is nobody, NULL allows to look for every public tags - - $tag2tagservice =SemanticScuttle_Service_Factory::get('Tag2Tag'); - $output = '{ id:'.rand().', name:\''.$tag.'\''; +/** + * Creates an jsTree json array for the given tag + * + * @param string $tag Tag name + * @param boolean $hasChildren If the tag has subtags (children) or not. + * If unsure, set it to "true". + * @param boolean $isOpen If the tag has children: Is the tree node open + * or closed? + * @param boolean $autoParent If the tag is an automatically generated parent tag + * + * @return array Array to be sent back to the browser as json + */ +function createTagArray($tag, $hasChildren = true, $isOpen = false, $autoParent = false) +{ + if ($autoParent) { + $title = '(' . $tag . ')'; + } else { + $title = $tag; + } - $linkedTags = $tag2tagservice->getLinkedTags($tag, '>', $uId); - if(count($linkedTags) > 0) { - $output.= ', children: ['; - foreach($linkedTags as $linkedTag) { - $output.= displayTag($linkedTag, $uId); - } - $output = substr($output, 0, -1); // remove final comma avoiding IE6 Dojo bug - $output.= "]"; - } + $ar = array( + 'data' => array( + // attributes + 'title' => $title, + 'attr' => array( + 'href' => createUrl('tags', $tag) + ) + ), + //
  • attributes + 'attr' => array( + 'rel' => $tag,//needed for identifying the tag in html + ), + ); + if ($hasChildren) { + //jstree needs that to show the arrows + $ar['state'] = $isOpen ? 'open' : 'closed'; + } + if ($autoParent) { + //FIXME: use css class + $ar['data']['attr']['style'] = 'color: #AAA'; + } - $output.= '},'; - return $output; + return $ar; } -?> -{ label: 'name', identifier: 'id', items: [ - -] } +$tagData = assembleLinkedTagData( + $tags, 0/*$uId*/, $loadParentTags, + SemanticScuttle_Service_Factory::get('Tag2Tag') +); +echo json_encode($tagData); +?> \ No newline at end of file -- cgit v1.2.3-54-g00ecf From 6bf4e76495b03ccec29fb4d9262ac871dd10a221 Mon Sep 17 00:00:00 2001 From: Christian Weiske Date: Sat, 9 Oct 2010 13:03:55 +0200 Subject: make add/del tag nav links work again --- data/templates/sidebar.block.linked.php | 3 ++- www/ajax/getlinkedtags.php | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'www/ajax') diff --git a/data/templates/sidebar.block.linked.php b/data/templates/sidebar.block.linked.php index 54e9260..ac864dc 100644 --- a/data/templates/sidebar.block.linked.php +++ b/data/templates/sidebar.block.linked.php @@ -30,10 +30,11 @@ if ($editingMode) { echo '

    '; } ?> +