diff --git a/ajax/updateList.php b/ajax/updateList.php index b3b26ad3..6f4cd7d0 100644 --- a/ajax/updateList.php +++ b/ajax/updateList.php @@ -25,21 +25,28 @@ // Check if we are a user OCP\JSON::checkLoggedIn(); OCP\JSON::checkAppEnabled('bookmarks'); +require_once(OC_App::getAppPath('bookmarks').'/bookmarksHelper.php'); +$req_type= isset($_GET['type']) ? $_GET['type'] : 'bookmark'; -//Filter for tag? -$filterTag = isset($_POST['tag']) ? htmlspecialchars_decode($_POST['tag']) : ''; -$filterTag = explode(',',$filterTag); -if($filterTag[0] =='') unset($filterTag[0]); -$offset = isset($_POST['page']) ? intval($_POST['page']) * 10 : 0; +if($req_type == 'rel_tags') { + $tags = analyzeTagRequest(isset($_POST['tag']) ? $_POST['tag'] : ''); + $qtags = OC_Bookmarks_Bookmarks::findTags($tags); + OCP\JSON::success(array('data' => $qtags)); -$sort = isset($_POST['sort']) ? ($_POST['sort']) : 'bookmarks_sorting_recent'; -if($sort == 'bookmarks_sorting_clicks') { - $sqlSortColumn = 'clickcount'; -} else { - $sqlSortColumn = 'id'; } +else { // type == bookmark + $filterTag = analyzeTagRequest(isset($_POST['tag']) ? $_POST['tag'] : ''); -$bookmarks = OC_Bookmarks_Bookmarks::findBookmarks($offset, $sqlSortColumn, $filterTag, true); + $offset = isset($_POST['page']) ? intval($_POST['page']) * 10 : 0; -OCP\JSON::success(array('data' => $bookmarks)); + $sort = isset($_POST['sort']) ? ($_POST['sort']) : 'bookmarks_sorting_recent'; + if($sort == 'bookmarks_sorting_clicks') { + $sqlSortColumn = 'clickcount'; + } else { + $sqlSortColumn = 'id'; + } + $bookmarks = OC_Bookmarks_Bookmarks::findBookmarks($offset, $sqlSortColumn, $filterTag, true); + OCP\JSON::success(array('data' => $bookmarks)); + +} diff --git a/bookmarksHelper.php b/bookmarksHelper.php index f4038e38..6e91a4ed 100644 --- a/bookmarksHelper.php +++ b/bookmarksHelper.php @@ -70,6 +70,16 @@ function getURLMetadata($url) { return $metadata; } +function analyzeTagRequest($line) { + $tags = explode(',',$line); + $filterTag = array(); + foreach($tags as $tag){ + if(trim($tag) != '') + $filterTag[] = trim($tag); + } + return $filterTag; +} + function addBookmark($url, $title, $tags='', $description='', $is_public=false) { $CONFIG_DBTYPE = OCP\Config::getSystemValue( "dbtype", "sqlite" ); if( $CONFIG_DBTYPE == 'sqlite' or $CONFIG_DBTYPE == 'sqlite3' ){ diff --git a/js/bookmarks.js b/js/bookmarks.js index a90f97dc..42d1b0e6 100644 --- a/js/bookmarks.js +++ b/js/bookmarks.js @@ -12,17 +12,43 @@ $(document).ready(function() { $('.bookmarks_list').scroll(updateOnBottom).empty().width($('#rightcontent').width()); getBookmarks(); }); - +function updateTagsList(tag) { + $('.tag_list').append('
  • '+tag['tag']+''+ + '

    '+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + '

    '+ + ''+tag['nbr']+''+ + '
  • '); +} function getBookmarks() { if(bookmarks_loading) { //have patience :) return; } - + $('#bookmarkFilterTag').val($('#tag_filter input').val()); + + //Update Rel Tags $.ajax({ type: 'POST', - url: OC.filePath('bookmarks', 'ajax', 'updateList.php'), - data: 'tag=' + encodeURIComponent($('#bookmarkFilterTag').val()) + '&page=' + bookmarks_page + '&sort=' + bookmarks_sorting, + url: OC.filePath('bookmarks', 'ajax', 'updateList.php') + '&type=rel_tags', + data: {tag: $('#bookmarkFilterTag').val(), page:bookmarks_page, sort:bookmarks_sorting }, + success: function(tags){ + $('.tag_list').empty(); + for(var i in tags.data) { + updateTagsList(tags.data[i]); + } + } + }); + + $.ajax({ + type: 'POST', + url: OC.filePath('bookmarks', 'ajax', 'updateList.php') + '&type=bookmark', + data: {tag: $('#bookmarkFilterTag').val(), page:bookmarks_page, sort:bookmarks_sorting }, success: function(bookmarks){ if (bookmarks.data.length) { bookmarks_page += 1; diff --git a/lib/bookmarks.php b/lib/bookmarks.php index d3a5b59c..86ac19a3 100644 --- a/lib/bookmarks.php +++ b/lib/bookmarks.php @@ -62,7 +62,7 @@ class OC_Bookmarks_Bookmarks{ * @return void */ public static function findBookmarks($offset, $sqlSortColumn, $filter, $filterTagOnly){ - $CONFIG_DBTYPE = OCP\Config::getSystemValue( 'dbtype', 'sqlite' ); + //$CONFIG_DBTYPE = OCP\Config::getSystemValue( 'dbtype', 'sqlite' ); $limit = 10; $params=array(OCP\USER::getUser()); //@TODO replace GROUP_CONCAT for postgresql diff --git a/templates/list.php b/templates/list.php index 352887bb..a9f2d0a0 100644 --- a/templates/list.php +++ b/templates/list.php @@ -13,24 +13,11 @@

    - + go