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;
+ }
}