]> source.dussan.org Git - nextcloud-server.git/commitdiff
Add support of editing bookmarks.
authorGolnaz Nilieh <g382nilieh@gmail.com>
Tue, 13 Sep 2011 11:08:11 +0000 (15:38 +0430)
committerGolnaz Nilieh <g382nilieh@gmail.com>
Tue, 13 Sep 2011 11:10:09 +0000 (15:40 +0430)
apps/bookmarks/ajax/editBookmark.php [new file with mode: 0644]
apps/bookmarks/ajax/updateList.php
apps/bookmarks/js/bookmarks.js
apps/bookmarks/templates/list.php

diff --git a/apps/bookmarks/ajax/editBookmark.php b/apps/bookmarks/ajax/editBookmark.php
new file mode 100644 (file)
index 0000000..1bd2fc0
--- /dev/null
@@ -0,0 +1,82 @@
+<?php
+
+/**
+* ownCloud - bookmarks plugin - edit bookmark script
+*
+* @author Golnaz Nilieh
+* @copyright 2011 Golnaz Nilieh <golnaz.nilieh@gmail.com>
+* 
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+* License as published by the Free Software Foundation; either 
+* version 3 of the License, or any later version.
+* 
+* This library 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+*  
+* You should have received a copy of the GNU Lesser General Public 
+* License along with this library.  If not, see <http://www.gnu.org/licenses/>.
+* 
+*/
+
+//no apps or filesystem
+$RUNTIME_NOSETUPFS=true;
+
+require_once('../../../lib/base.php');
+
+// We send json data
+header( 'Content-Type: application/jsonrequest' );
+
+// Check if we are a user
+if( !OC_User::isLoggedIn()){
+       echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => 'Authentication error' )));
+       exit();
+}
+
+$CONFIG_DBTYPE = OC_Config::getValue( "dbtype", "sqlite" );
+if( $CONFIG_DBTYPE == 'sqlite' or $CONFIG_DBTYPE == 'sqlite3' ){
+       $_ut = "strftime('%s','now')";
+} else {
+       $_ut = "UNIX_TIMESTAMP()";
+}
+
+$bookmark_id = (int)$_GET["id"];
+
+$query = OC_DB::prepare("
+       UPDATE *PREFIX*bookmarks
+       SET url = ?, title =?, description = ?, lastmodified = $_ut
+       WHERE id = $bookmark_id
+       ");
+
+$params=array(
+       htmlspecialchars_decode($_GET["url"]),
+       htmlspecialchars_decode($_GET["title"]),
+       htmlspecialchars_decode($_GET["description"]),
+       );
+$query->execute($params);
+
+# Remove old tags and insert new ones.
+$query = OC_DB::prepare("
+       DELETE FROM *PREFIX*bookmarks_tags
+       WHERE bookmark_id = $bookmark_id
+       ");
+
+$query->execute();
+
+$query = OC_DB::prepare("
+       INSERT INTO *PREFIX*bookmarks_tags
+       (bookmark_id, tag)
+       VALUES (?, ?)
+       ");
+       
+$tags = explode(' ', urldecode($_GET["tags"]));
+foreach ($tags as $tag) {
+       if(empty($tag)) {
+               //avoid saving blankspaces
+               continue;
+       }
+       $params = array($bookmark_id, trim($tag));
+       $query->execute($params);
+}
index ceecc5b7efaa80c12857f93f1181a6614dc5f9b6..67acb2190ca96bbdefa1baebfdd7606063dfdfd0 100644 (file)
@@ -64,7 +64,7 @@ if( $CONFIG_DBTYPE == 'sqlite' or $CONFIG_DBTYPE == 'sqlite3' ){
 }
 
 $query = OC_DB::prepare('
-       SELECT url, title, description, 
+       SELECT id, url, title, description, 
        CASE WHEN *PREFIX*bookmarks.id = *PREFIX*bookmarks_tags.bookmark_id
                        THEN GROUP_CONCAT( tag ' .$_gc_separator. ' )
                        ELSE \' \'
index fe8a266686f8fcffe877b20e6ea81fcc958e6dc2..e26a9a80fb17620fbed13c3cc6b95200ce2e76c8 100644 (file)
@@ -8,7 +8,7 @@ $(document).ready(function() {
                $('.bookmarks_add').slideToggle();
        });
        
-       $('#bookmark_add_submit').click(addBookmark);
+       $('#bookmark_add_submit').click(addOrEditBookmark);
        $(window).scroll(updateOnBottom);
        
        $('#bookmark_add_url').focusout(getMetadata);
@@ -34,12 +34,15 @@ function getBookmarks() {
                        bookmarks_page += 1;
                        $('.bookmark_link').unbind('click', recordClick);
                        $('.bookmark_delete').unbind('click', delBookmark);
+                       $('.bookmark_edit').unbind('click', showBookmark);
        
                        for(var i in bookmarks.data) {
                                updateBookmarksList(bookmarks.data[i]);
                        }
                        $('.bookmark_link').click(recordClick);
                        $('.bookmark_delete').click(delBookmark);
+                       $('.bookmark_edit').click(showBookmark);
+                       
                        bookmarks_loading = false;
                }
        });     
@@ -73,7 +76,12 @@ function changeSorting(sortEl) {
        getBookmarks();
 }
 
-function addBookmark(event) {
+// function addBookmark() {
+// Instead of creating editBookmark() function, Converted the one above to
+// addOrEditBookmark() to make .js file more compact.
+
+function addOrEditBookmark(event) {
+       var id = $('#bookmark_add_id').val();
        var url = encodeEntities($('#bookmark_add_url').val())
        var title = encodeEntities($('#bookmark_add_title').val())
        var description = encodeEntities($('#bookmark_add_description').val())
@@ -81,25 +89,49 @@ function addBookmark(event) {
        var taglist = tags.split(' ')
        var tagshtml = '';
        for ( var i=0, len=taglist.length; i<len; ++i ){
-               tagshtml += '<a class="bookmark_tags" href="?tag=' + encodeURI(taglist[i]) + '">' + taglist[i] + '</a> ';
+               tagshtml += '<a class="bookmark_tag" href="?tag=' + encodeURI(taglist[i]) + '">' + taglist[i] + '</a> ';
        }
-       $.ajax({
-               url: 'ajax/addBookmark.php',
-               data: 'url=' + encodeURI(url) + '&title=' + encodeURI(title) + '&description=' + encodeURI(description) + '&tags=' + encodeURI(tags),
-               success: function(data){ 
-                       $('.bookmarks_add').slideToggle(); 
-                       $('.bookmarks_add').children('p').children('.bookmarks_input').val(''); 
-                       $('.bookmarks_list').prepend(
-                       '<div class="bookmark_single">' +
-                               '<p class="bookmark_title"><a href="' + url + '" target="_new" class="bookmark_link">' + title + '</a></p>' +
-                               '<p class="bookmark_url">' + url + '</p>' +
-                               '<p class="bookmark_description">' + description + '</p>' +
-                               '<p>' + tagshtml + '</p>' +
-                               '<p class="bookmark_actions"><span class="bookmark_delete">Delete</span></p>' +
-                       '</div>'
-                       );
-               }
-       });
+       
+       if (id == 0) {
+               $.ajax({
+                       url: 'ajax/addBookmark.php',
+                       data: 'url=' + encodeURI(url) + '&title=' + encodeURI(title) + '&description=' + encodeURI(description) + '&tags=' + encodeURI(tags),
+                       success: function(data){ 
+                               $('.bookmarks_add').slideToggle(); 
+                               $('.bookmarks_add').children('p').children('.bookmarks_input').val(''); 
+                               $('.bookmarks_list').prepend(
+                               '<div class="bookmark_single">' +
+                                       '<p class="bookmark_title"><a href="' + url + '" target="_new" class="bookmark_link">' + title + '</a></p>' +
+                                       '<p class="bookmark_url">' + url + '</p>' +
+                                       '<p class="bookmark_description">' + description + '</p>' +
+                                       '<p class="bookmark_tags">' + tagshtml + '</p>' +
+                                       '<p class="bookmark_actions"><span class="bookmark_delete">Delete</span></p>' +
+                               '</div>'
+                               );
+                       }
+               });
+       }
+       else {
+               $.ajax({
+                       url: 'ajax/editBookmark.php',
+                       data: 'id=' + id + '&url=' + encodeURI(url) + '&title=' + encodeURI(title) + '&description=' + 
+                               encodeURI(description) + '&tags=' + encodeURI(tags),
+                       success: function(){ 
+                               $('.bookmarks_add').slideToggle(); 
+                               $('.bookmarks_add').children('p').children('.bookmarks_input').val(''); 
+                               var record = $('.bookmark_single[data-id = "' + id + '"]');
+                               record.children('.bookmark_url:first').text(url);
+                               record.children('.bookmark_description:first').text(description);
+                               
+                               var record_title = record.children('.bookmark_title:first').children('a:first');
+                               record_title.attr('href', url);
+                               record_title.text(title);
+                               
+                               record.children('.bookmark_tags:first').html(tagshtml);
+                       }
+               });
+       }
+       
 }
 
 function delBookmark(event) {
@@ -111,22 +143,43 @@ function delBookmark(event) {
        });
 }
 
+function showBookmark(event) {
+       var record = $(this).parent().parent();
+       $('#bookmark_add_id').val(record.attr('data-id'));
+       $('#bookmark_add_url').val(record.children('.bookmark_url:first').text());
+       $('#bookmark_add_title').val(record.children('.bookmark_title:first').text());
+       $('#bookmark_add_description').val(record.children('.bookmark_description:first').text());
+       $('#bookmark_add_tags').val(record.children('.bookmark_tags:first').text());
+       
+       if ($('.bookmarks_add').css('display') == 'none') {
+               $('.bookmarks_add').slideToggle();
+       }
+       $('html, body').animate({
+                       scrollTop: $('.bookmarks_menu').offset().top
+               }, 500);
+
+}
+
+function editBookmark(event) {
+       
+}
+
 function updateBookmarksList(bookmark) {
        var tags = encodeEntities(bookmark.tags).split(' ');
        var taglist = '';
        for ( var i=0, len=tags.length; i<len; ++i ){
-               taglist = taglist + '<a class="bookmark_tags" href="?tag=' + encodeURI(tags[i]) + '">' + tags[i] + '</a> ';
+               taglist = taglist + '<a class="bookmark_tag" href="?tag=' + encodeURI(tags[i]) + '">' + tags[i] + '</a> ';
        }
        if(!hasProtocol(bookmark.url)) {
                bookmark.url = 'http://' + bookmark.url;
        }
        $('.bookmarks_list').append(
-               '<div class="bookmark_single">' +
+               '<div class="bookmark_single" data-id="' + bookmark.id +'" >' +
                        '<p class="bookmark_title"><a href="' + encodeEntities(bookmark.url) + '" target="_new" class="bookmark_link">' + encodeEntities(bookmark.title) + '</a></p>' +
                        '<p class="bookmark_url">' + encodeEntities(bookmark.url) + '</p>' +
                        '<p class="bookmark_description">' + encodeEntities(bookmark.description) + '</p>' +
-                       '<p>' + taglist + '</p>' +
-                       '<p class="bookmark_actions"><span class="bookmark_delete">Delete</span></p>' +
+                       '<p class="bookmark_tags">' + taglist + '</p>' +
+                       '<p class="bookmark_actions"><span class="bookmark_delete">Delete</span>&nbsp;<span class="bookmark_edit">Edit</span></p>' +
                '</div>'
        );
 }
index d4215e82ddb48a0a77a31ed1f46551bbb5c7ae66..2aa5093c82b8a074cc6e6a297da3238c8b124162 100644 (file)
@@ -5,6 +5,7 @@
        <a class="bookmarks_addBml" href="javascript:var url = encodeURIComponent(location.href);window.open('<?php echo OC_Helper::linkTo('bookmarks', 'addBm.php', null, true); ?>?url='+url, 'owncloud-bookmarks');" title="Drag this to your browser bookmarks and click it, when you want to bookmark a webpage.">Add page to ownCloud</a>
 </div>
 <div class="bookmarks_add">
+       <input type="hidden" id="bookmark_add_id" value="0" />
        <p><label class="bookmarks_label">Address</label><input type="text" id="bookmark_add_url" class="bookmarks_input" /></p>
        <p><label class="bookmarks_label">Title</label><input type="text" id="bookmark_add_title" class="bookmarks_input" />
        <img class="loading_meta" src="<?php echo OC_Helper::imagePath('core', 'loading.gif'); ?>" /></p>