diff --git a/ajax/delTag.php b/ajax/delTag.php new file mode 100644 index 00000000..1ac73c71 --- /dev/null +++ b/ajax/delTag.php @@ -0,0 +1,41 @@ +. +* +*/ + +//no apps or filesystem +$RUNTIME_NOSETUPFS=true; + + + +// Check if we are a user +OCP\JSON::checkLoggedIn(); +OCP\JSON::checkAppEnabled('bookmarks'); + +if(isset($_POST['old_name'])) +{ + OC_Bookmarks_Bookmarks::deleteTag($_POST['old_name']); + OCP\JSON::success(); + exit(); +} + +OC_JSON::error(); +exit(); diff --git a/ajax/renameTag.php b/ajax/renameTag.php new file mode 100644 index 00000000..8aa6abb6 --- /dev/null +++ b/ajax/renameTag.php @@ -0,0 +1,41 @@ +. +* +*/ + +//no apps or filesystem +$RUNTIME_NOSETUPFS=true; + + + +// Check if we are a user +OCP\JSON::checkLoggedIn(); +OCP\JSON::checkAppEnabled('bookmarks'); + +if(isset($_POST['old_name']) && isset($_POST['new_name']) && $_POST['new_name'] != '') +{ + OC_Bookmarks_Bookmarks::renameTag($_POST['old_name'], $_POST['new_name']); + OCP\JSON::success(); + exit(); +} + +OC_JSON::error(); +exit(); diff --git a/css/bookmarks.css b/css/bookmarks.css index 01407327..d4c5e922 100644 --- a/css/bookmarks.css +++ b/css/bookmarks.css @@ -164,11 +164,6 @@ /* background: none repeat scroll 0 0 #DEE7F8; */ } - -#tag_filter { - padding-left: 1em; -} - #leftcontent > ul > li, .leftcontent li { padding: 0.2em; padding-left:1em; @@ -193,6 +188,10 @@ position: relative; } +ul.tagit li.tagit-new { + padding-left: 0em; +} + .tag_list em , .share_list em{ float:right; display:block; @@ -210,6 +209,12 @@ li:hover em { display : none; } background: none repeat scroll 0 0 #F8F8F8; } +#tag_filter .tagit { + margin: 0.3em; +} +#tag_filter ul.tagit > li.tagit-new { + padding:0; +} #tag_filter ul.tagit li.tagit-choice { background: none repeat scroll 0 0 #DEE7F8; padding: 0.2em 18px 0.2em 0.5em; diff --git a/js/bookmarks.js b/js/bookmarks.js index 4d550f5f..1d3156de 100644 --- a/js/bookmarks.js +++ b/js/bookmarks.js @@ -16,7 +16,6 @@ $(document).ready(function() { onTagRemoved: filterTagsChanged }).tagit('option', 'onTagAdded', filterTagsChanged); - getBookmarks(); }); @@ -28,15 +27,16 @@ function addFilterTag(event) { function updateTagsList(tag) { $('.tag_list').append('
  • '+tag['tag']+''+ '

    '+ - ''+ + ''+ ''+ ''+ - ''+ + ''+ ''+ ''+ '

    '+ ''+tag['nbr']+''+ '
  • '); + } function filterTagsChanged() @@ -61,7 +61,11 @@ function getBookmarks() { for(var i in tags.data) { updateTagsList(tags.data[i]); } + $('.tag_list .tag_edit').click(renameTag); + $('.tag_list .tag_delete').click(deleteTag); $('.tag_list a.tag').click(addFilterTag); + + } }); @@ -212,3 +216,51 @@ function hasProtocol(url) { var regexp = /(ftp|http|https|sftp)/; return regexp.test(url); } + +function renameTag(event) { + tag_el = $(this).closest('li'); + tag_el.append(''); + + tag_name = tag_el.find('.tag').hide().text(); + tag_el.find('input').val(tag_name).bind('blur',submitTagName); + +} + +function submitTagName(event) { + tag_el = $(this).closest('li') + new_tag_name = tag_el.find('input').val(); + old_tag_name = tag_el.find('.tag').show().text(); + tag_el.find('input').remove(); + + //submit + $.ajax({ + type: 'POST', + url: OC.filePath('bookmarks', 'ajax', 'renameTag.php'), + data: { old_name: old_tag_name, new_name: new_tag_name}, + success: function(bookmarks){ + if (bookmarks.status =='success') { + filterTagsChanged(); + } + } + }); +} + +function deleteTag(event){ + tag_el = $(this).closest('li'); + var old_tag_name = tag_el.find('.tag').show().text(); + OC.dialogs.confirm(t('bookmarks', 'Are you sure you want to remove this tag fro every entry?'), + t('bookmarks', 'Warning'), function(answer) { + if(answer) { + $.ajax({ + type: 'POST', + url: OC.filePath('bookmarks', 'ajax', 'delTag.php'), + data: { old_name: old_tag_name}, + success: function(bookmarks){ + if (bookmarks.status =='success') { + filterTagsChanged(); + } + } + }); + } + }); +} \ No newline at end of file diff --git a/lib/bookmarks.php b/lib/bookmarks.php index 86ac19a3..59747ea9 100644 --- a/lib/bookmarks.php +++ b/lib/bookmarks.php @@ -121,4 +121,46 @@ class OC_Bookmarks_Bookmarks{ $result = $query->execute(); return true; } + + public static function renameTag($old, $new) + { + $user_id = OCP\USER::getUser(); + + // Update the record + $query = OCP\DB::prepare(" + UPDATE *PREFIX*bookmarks_tags SET + tag = ? + WHERE tag = ? + AND exists( select id from *PREFIX*bookmarks where user_id = ? and bookmark_id = id) + "); + + $params=array( + $new, + $old, + $user_id, + ); + + $result = $query->execute($params); + return true; + } + + public static function deleteTag($old) + { + $user_id = OCP\USER::getUser(); + + // Update the record + $query = OCP\DB::prepare(" + DELETE FROM *PREFIX*bookmarks_tags + WHERE tag = ? + AND exists( select id from *PREFIX*bookmarks where user_id = ? and bookmark_id = id) + "); + + $params=array( + $old, + $user_id, + ); + + $result = $query->execute($params); + return true; + } }