]> source.dussan.org Git - nextcloud-server.git/commitdiff
Make bookmarks sortable by clicks
authorArthur Schiwon <blizzz@arthur-schiwon.de>
Thu, 25 Aug 2011 10:55:13 +0000 (12:55 +0200)
committerArthur Schiwon <blizzz@arthur-schiwon.de>
Thu, 25 Aug 2011 10:55:13 +0000 (12:55 +0200)
apps/bookmarks/ajax/updateList.php
apps/bookmarks/css/bookmarks.css
apps/bookmarks/js/bookmarks.js
apps/bookmarks/templates/list.php

index 9290757d0b18029331ec4b69822710043a74459b..61983cc0f5bac2c7be98d39cec910babb85dac06 100644 (file)
@@ -50,6 +50,13 @@ if($filterTag){
 $offset = isset($_GET['page']) ? intval($_GET['page']) * 10 : 0;
 $params[] = $offset;
 
+$sort = isset($_GET['sort']) ? ($_GET['sort']) : 'bookmarks_sorting_recent';
+if($sort == 'bookmarks_sorting_clicks') {
+       $sqlSort = 'clickcount DESC';
+} else {
+       $sqlSort = 'id DESC';
+}
+
 if( $CONFIG_DBTYPE == 'sqlite' or $CONFIG_DBTYPE == 'sqlite3' ){
        $_gc_separator = ', \' \'';
 } else {
@@ -72,7 +79,7 @@ $query = OC_DB::prepare('
                AND *PREFIX*bookmarks.user_id = ?
        GROUP BY url
        '.$sqlFilterTag.'
-       ORDER BY *PREFIX*bookmarks.id DESC 
+       ORDER BY *PREFIX*bookmarks.'.$sqlSort.' 
        LIMIT ?,  10');
        
 $bookmarks = $query->execute($params)->fetchAll();
index 0fa4a3b6b2d15a0fb0f7665e3c01b64b63d67bb4..96559172448b9a8da9d41eb66587a13b3beed23f 100644 (file)
        text-decoration: underline;
 }
 
+.bookmarks_sorting {
+       float: left;
+       margin-left: 2em;
+}
+
+.bookmarks_sorting li {
+       padding: 1ex 1em;
+       border: 1px solid gray;
+       -moz-border-radius:1em; -webkit-border-radius:1em; border-radius:1em;
+}
+
+.bookmarks_sorting_active {
+       font-weight: bold;
+}
+
 .bookmarks_add {
        display: none;
 }
@@ -64,4 +79,8 @@
 
 .bookmark_tags {
        color: #ff3333;
-}
\ No newline at end of file
+}
+
+.clear {
+       clear:both;
+}
index ad3aefde204cca322a38620409bc8cd2c6ffc548..93b21c3243ebcf0ed86f5ea904b3d4975f6c52bb 100644 (file)
@@ -1,6 +1,8 @@
 var bookmarks_page = 0;
 var bookmarks_loading = false;
 
+var bookmarks_sorting = 'bookmarks_sorting_recent';
+
 $(document).ready(function() {
        $('.bookmarks_addBtn').click(function(event){
                $('.bookmarks_add').slideToggle();
@@ -10,6 +12,9 @@ $(document).ready(function() {
        $(window).scroll(updateOnBottom);
        
        $('#bookmark_add_url').focusout(getMetadata);
+       $('.' + bookmarks_sorting).addClass('bookmarks_sorting_active');
+       
+       $('.bookmarks_sorting li').click(function(event){changeSorting(this)});
        
        $('.bookmarks_list').empty();
        getBookmarks();
@@ -20,9 +25,10 @@ function getBookmarks() {
                //have patience :)
                return;
        }
+       
        $.ajax({
                url: 'ajax/updateList.php',
-               data: 'tag=' + encodeURI($('#bookmarkFilterTag').val()) + '&page=' + bookmarks_page,
+               data: 'tag=' + encodeURI($('#bookmarkFilterTag').val()) + '&page=' + bookmarks_page + '&sort=' + bookmarks_sorting,
                success: function(bookmarks){
                        bookmarks_page += 1;
                        $('.bookmark_link').unbind('click', recordClick);
@@ -50,6 +56,17 @@ function getMetadata() {
        });
 }
 
+function changeSorting(sortEl) {
+       $('.' + bookmarks_sorting).removeClass('bookmarks_sorting_active');
+       bookmarks_sorting = sortEl.className;
+       $('.' + bookmarks_sorting).addClass('bookmarks_sorting_active');
+       
+       $('.bookmarks_list').empty();
+       bookmarks_page = 0;
+       bookmarks_loading = false;
+       getBookmarks();
+}
+
 function addBookmark(event) {
        var url = encodeEntities($('#bookmark_add_url').val())
        var title = encodeEntities($('#bookmark_add_title').val())
index 203b48e1cb6807b53769f4697392a04031bebe5c..a2c89b310a2950b7b9d06a59e0bafdb6acd54cb6 100644 (file)
        <p><label class="bookmarks_label"> </label><label class="bookmarks_hint">Hint: Use space to separate tags.</label></p>
        <p><label class="bookmarks_label"></label><input type="submit" id="bookmark_add_submit" /></p>
 </div>
+<div class="bookmarks_sorting pager">
+       <ul>
+               <li class="bookmarks_sorting_recent">Recent Bookmarks</li>
+               <li class="bookmarks_sorting_clicks">Most clicks</li>
+       </ul>
+</div>
+<div class="clear"></div>
 <div class="bookmarks_list">
        <noscript>
        JavaScript is needed to display your Bookmarks