2011-08-15 22:05:07 +02:00
|
|
|
var bookmarks_page = 0;
|
|
|
|
var bookmarks_loading = false;
|
|
|
|
|
2011-08-25 12:55:13 +02:00
|
|
|
var bookmarks_sorting = 'bookmarks_sorting_recent';
|
|
|
|
|
2012-04-15 15:53:30 +02:00
|
|
|
$(document).ready(function() {
|
2011-09-13 13:08:11 +02:00
|
|
|
$('#bookmark_add_submit').click(addOrEditBookmark);
|
2012-03-01 20:46:34 +01:00
|
|
|
$(window).resize(function () {
|
|
|
|
fillWindow($('.bookmarks_list'));
|
|
|
|
});
|
|
|
|
$(window).resize();
|
2012-06-27 16:32:04 +02:00
|
|
|
$('.bookmarks_list').scroll(updateOnBottom).empty().width($('#rightcontent').width());
|
2012-06-28 11:40:42 +02:00
|
|
|
$('#tag_filter input').tagit({
|
|
|
|
allowSpaces: true,
|
|
|
|
availableTags: fullTags,
|
|
|
|
onTagRemoved: filterTagsChanged
|
|
|
|
}).tagit('option', 'onTagAdded', filterTagsChanged);
|
|
|
|
|
|
|
|
|
2011-08-15 22:05:07 +02:00
|
|
|
getBookmarks();
|
|
|
|
});
|
2012-06-28 11:40:42 +02:00
|
|
|
|
|
|
|
function addFilterTag(event)
|
|
|
|
{
|
|
|
|
event.preventDefault();
|
|
|
|
$('#tag_filter input').tagit('createTag', $(this).text());
|
|
|
|
}
|
|
|
|
|
2012-06-28 00:43:11 +02:00
|
|
|
function updateTagsList(tag) {
|
|
|
|
$('.tag_list').append('<li><a href="" class="tag">'+tag['tag']+'</a>'+
|
|
|
|
'<p class="tags_actions">'+
|
|
|
|
'<span class="bookmark_edit">'+
|
|
|
|
'<img class="svg" src="'+OC.imagePath('core', 'actions/rename')+'" title="Edit">'+
|
|
|
|
'</span>'+
|
|
|
|
'<span class="bookmark_delete">'+
|
|
|
|
'<img class="svg" src="'+OC.imagePath('core', 'actions/delete')+'" title="Delete">'+
|
|
|
|
'</span>'+
|
|
|
|
'</p>'+
|
|
|
|
'<em>'+tag['nbr']+'</em>'+
|
|
|
|
'</li>');
|
|
|
|
}
|
2012-06-28 11:40:42 +02:00
|
|
|
|
|
|
|
function filterTagsChanged()
|
|
|
|
{
|
|
|
|
$('#bookmarkFilterTag').val($('#tag_filter input:hidden').val());
|
|
|
|
bookmarks_page = 0;
|
|
|
|
$('.bookmarks_list').empty();
|
|
|
|
getBookmarks();
|
|
|
|
}
|
2011-08-15 22:05:07 +02:00
|
|
|
function getBookmarks() {
|
|
|
|
if(bookmarks_loading) {
|
|
|
|
//have patience :)
|
|
|
|
return;
|
2012-06-28 11:40:42 +02:00
|
|
|
}
|
2012-06-28 00:43:11 +02:00
|
|
|
//Update Rel Tags
|
|
|
|
$.ajax({
|
|
|
|
type: 'POST',
|
|
|
|
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]);
|
|
|
|
}
|
2012-06-28 11:40:42 +02:00
|
|
|
$('.tag_list a.tag').click(addFilterTag);
|
2012-06-28 00:43:11 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2011-08-15 22:05:07 +02:00
|
|
|
$.ajax({
|
2012-06-27 16:32:04 +02:00
|
|
|
type: 'POST',
|
2012-06-28 00:43:11 +02:00
|
|
|
url: OC.filePath('bookmarks', 'ajax', 'updateList.php') + '&type=bookmark',
|
|
|
|
data: {tag: $('#bookmarkFilterTag').val(), page:bookmarks_page, sort:bookmarks_sorting },
|
2011-08-15 22:05:07 +02:00
|
|
|
success: function(bookmarks){
|
2012-03-01 20:46:34 +01:00
|
|
|
if (bookmarks.data.length) {
|
|
|
|
bookmarks_page += 1;
|
|
|
|
}
|
2011-08-15 22:05:07 +02:00
|
|
|
$('.bookmark_link').unbind('click', recordClick);
|
|
|
|
$('.bookmark_delete').unbind('click', delBookmark);
|
2011-09-13 13:08:11 +02:00
|
|
|
$('.bookmark_edit').unbind('click', showBookmark);
|
2012-04-15 15:53:30 +02:00
|
|
|
|
2011-08-15 22:05:07 +02:00
|
|
|
for(var i in bookmarks.data) {
|
|
|
|
updateBookmarksList(bookmarks.data[i]);
|
2012-02-21 22:31:35 +01:00
|
|
|
$("#firstrun").hide();
|
2011-08-15 22:05:07 +02:00
|
|
|
}
|
2012-02-22 23:58:38 +01:00
|
|
|
if($('.bookmarks_list').is(':empty')) {
|
|
|
|
$("#firstrun").show();
|
|
|
|
}
|
2011-10-08 13:54:45 +02:00
|
|
|
|
2011-08-15 22:05:07 +02:00
|
|
|
$('.bookmark_link').click(recordClick);
|
|
|
|
$('.bookmark_delete').click(delBookmark);
|
2011-09-13 13:08:11 +02:00
|
|
|
$('.bookmark_edit').click(showBookmark);
|
2012-04-15 15:53:30 +02:00
|
|
|
|
2011-08-15 22:05:07 +02:00
|
|
|
bookmarks_loading = false;
|
2012-03-01 20:46:34 +01:00
|
|
|
if (bookmarks.data.length) {
|
|
|
|
updateOnBottom()
|
|
|
|
}
|
2011-08-15 22:05:07 +02:00
|
|
|
}
|
2012-04-15 15:53:30 +02:00
|
|
|
});
|
2011-08-15 22:05:07 +02:00
|
|
|
}
|
|
|
|
|
2011-09-13 13:08:11 +02:00
|
|
|
// 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();
|
2011-10-08 13:54:45 +02:00
|
|
|
var url = encodeEntities($('#bookmark_add_url').val());
|
|
|
|
var title = encodeEntities($('#bookmark_add_title').val());
|
|
|
|
var tags = encodeEntities($('#bookmark_add_tags').val());
|
2012-02-21 22:31:35 +01:00
|
|
|
$("#firstrun").hide();
|
2012-05-13 22:58:18 +02:00
|
|
|
if($.trim(url) == '') {
|
|
|
|
OC.dialogs.alert('A valid bookmark url must be provided', 'Error creating bookmark');
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if($.trim(title) == '') {
|
|
|
|
OC.dialogs.alert('A valid bookmark title must be provided', 'Error creating bookmark');
|
|
|
|
return false;
|
|
|
|
}
|
2011-09-13 13:08:11 +02:00
|
|
|
if (id == 0) {
|
|
|
|
$.ajax({
|
2012-06-10 23:38:26 +02:00
|
|
|
type: 'POST',
|
2012-04-25 21:20:06 +02:00
|
|
|
url: OC.filePath('bookmarks', 'ajax', 'addBookmark.php'),
|
2012-04-15 15:53:30 +02:00
|
|
|
data: 'url=' + encodeURIComponent(url) + '&title=' + encodeURIComponent(title) + '&tags=' + encodeURIComponent(tags),
|
|
|
|
success: function(response){
|
|
|
|
$('.bookmarks_input').val('');
|
2012-02-22 16:04:17 +01:00
|
|
|
$('.bookmarks_list').empty();
|
|
|
|
bookmarks_page = 0;
|
|
|
|
getBookmarks();
|
2011-09-13 13:08:11 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
$.ajax({
|
2012-06-10 23:38:26 +02:00
|
|
|
type: 'POST',
|
2012-04-25 21:20:06 +02:00
|
|
|
url: OC.filePath('bookmarks', 'ajax', 'editBookmark.php'),
|
2012-04-15 15:53:30 +02:00
|
|
|
data: 'id=' + id + '&url=' + encodeURIComponent(url) + '&title=' + encodeURIComponent(title) + '&tags=' + encodeURIComponent(tags),
|
|
|
|
success: function(){
|
2012-02-22 23:22:17 +01:00
|
|
|
$('.bookmarks_input').val('');
|
2011-09-13 13:40:52 +02:00
|
|
|
$('#bookmark_add_id').val('0');
|
2012-02-22 16:04:17 +01:00
|
|
|
$('.bookmarks_list').empty();
|
|
|
|
bookmarks_page = 0;
|
|
|
|
getBookmarks();
|
2011-09-13 13:08:11 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2012-04-15 15:53:30 +02:00
|
|
|
|
2011-08-15 22:05:07 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
function delBookmark(event) {
|
2011-10-08 13:54:45 +02:00
|
|
|
var record = $(this).parent().parent();
|
2011-08-15 22:05:07 +02:00
|
|
|
$.ajax({
|
2012-06-10 23:38:26 +02:00
|
|
|
type: 'POST',
|
2012-04-25 21:20:06 +02:00
|
|
|
url: OC.filePath('bookmarks', 'ajax', 'delBookmark.php'),
|
2012-05-03 17:29:08 +02:00
|
|
|
data: 'id=' + record.data('id'),
|
2012-02-22 23:28:36 +01:00
|
|
|
success: function(data){
|
2012-05-03 17:29:08 +02:00
|
|
|
if (data.status == 'success') {
|
|
|
|
record.remove();
|
|
|
|
if($('.bookmarks_list').is(':empty')) {
|
|
|
|
$("#firstrun").show();
|
|
|
|
}
|
2012-02-22 23:28:36 +01:00
|
|
|
}
|
|
|
|
}
|
2011-08-15 22:05:07 +02:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2011-09-13 13:08:11 +02:00
|
|
|
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_tags').val(record.children('.bookmark_tags:first').text());
|
2012-04-15 15:53:30 +02:00
|
|
|
|
2011-09-13 13:08:11 +02:00
|
|
|
if ($('.bookmarks_add').css('display') == 'none') {
|
|
|
|
$('.bookmarks_add').slideToggle();
|
|
|
|
}
|
|
|
|
}
|
2012-05-14 03:10:07 +02:00
|
|
|
|
2012-05-08 18:22:35 +02:00
|
|
|
function replaceQueryString(url,param,value) {
|
|
|
|
var re = new RegExp("([?|&])" + param + "=.*?(&|$)","i");
|
|
|
|
if (url.match(re))
|
|
|
|
return url.replace(re,'$1' + param + "=" + value + '$2');
|
|
|
|
else
|
|
|
|
return url + '&' + param + "=" + value;
|
|
|
|
}
|
2011-09-13 13:08:11 +02:00
|
|
|
|
2011-08-15 22:05:07 +02:00
|
|
|
function updateBookmarksList(bookmark) {
|
2012-06-27 14:14:45 +02:00
|
|
|
var tags = bookmark.tags;
|
2011-08-19 13:48:08 +02:00
|
|
|
var taglist = '';
|
2011-08-15 22:05:07 +02:00
|
|
|
for ( var i=0, len=tags.length; i<len; ++i ){
|
2012-02-01 22:02:06 +01:00
|
|
|
if(tags[i] != '')
|
2012-06-27 14:14:45 +02:00
|
|
|
taglist = taglist + '<a class="bookmark_tag" href="'+replaceQueryString( String(window.location), 'tag', encodeURIComponent(tags[i])) + '">' + encodeEntities(tags[i]) + '</a> ';
|
2011-08-15 22:05:07 +02:00
|
|
|
}
|
2011-08-25 13:23:52 +02:00
|
|
|
if(!hasProtocol(bookmark.url)) {
|
|
|
|
bookmark.url = 'http://' + bookmark.url;
|
|
|
|
}
|
2012-02-22 16:04:17 +01:00
|
|
|
if(bookmark.title == '') bookmark.title = bookmark.url;
|
2011-08-15 22:05:07 +02:00
|
|
|
$('.bookmarks_list').append(
|
2011-09-13 13:08:11 +02:00
|
|
|
'<div class="bookmark_single" data-id="' + bookmark.id +'" >' +
|
2012-02-16 21:01:13 +01:00
|
|
|
'<p class="bookmark_actions">' +
|
|
|
|
'<span class="bookmark_edit">' +
|
|
|
|
'<img class="svg" src="'+OC.imagePath('core', 'actions/rename')+'" title="Edit">' +
|
|
|
|
'</span>' +
|
2012-02-23 20:35:48 +01:00
|
|
|
'<span class="bookmark_delete">' +
|
|
|
|
'<img class="svg" src="'+OC.imagePath('core', 'actions/delete')+'" title="Delete">' +
|
|
|
|
'</span> ' +
|
2012-02-16 21:01:13 +01:00
|
|
|
'</p>' +
|
|
|
|
'<p class="bookmark_title">'+
|
|
|
|
'<a href="' + encodeEntities(bookmark.url) + '" target="_blank" class="bookmark_link">' + encodeEntities(bookmark.title) + '</a>' +
|
|
|
|
'</p>' +
|
2012-03-23 16:58:48 +01:00
|
|
|
'<p class="bookmark_url"><a href="' + encodeEntities(bookmark.url) + '" target="_blank" class="bookmark_link">' + encodeEntities(bookmark.url) + '</a></p>' +
|
2011-08-19 13:48:08 +02:00
|
|
|
'</div>'
|
2011-08-15 22:05:07 +02:00
|
|
|
);
|
2012-02-01 22:02:06 +01:00
|
|
|
if(taglist != '') {
|
|
|
|
$('div[data-id="'+ bookmark.id +'"]').append('<p class="bookmark_tags">' + taglist + '</p>');
|
|
|
|
}
|
2011-08-15 22:05:07 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
function updateOnBottom() {
|
|
|
|
//check wether user is on bottom of the page
|
2012-03-01 20:46:34 +01:00
|
|
|
var top = $('.bookmarks_list>:last-child').position().top;
|
|
|
|
var height = $('.bookmarks_list').height();
|
|
|
|
// use a bit of margin to begin loading before we are really at the
|
|
|
|
// bottom
|
|
|
|
if (top < height * 1.2) {
|
2012-06-28 11:40:42 +02:00
|
|
|
// getBookmarks();
|
2011-08-15 22:05:07 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function recordClick(event) {
|
|
|
|
$.ajax({
|
2012-06-10 23:38:26 +02:00
|
|
|
type: 'POST',
|
2012-04-25 21:20:06 +02:00
|
|
|
url: OC.filePath('bookmarks', 'ajax', 'recordClick.php'),
|
2012-04-15 15:53:30 +02:00
|
|
|
data: 'url=' + encodeURIComponent($(this).attr('href')),
|
|
|
|
});
|
2011-08-15 22:05:07 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
function encodeEntities(s){
|
|
|
|
try {
|
2011-08-19 13:48:08 +02:00
|
|
|
return $('<div/>').text(s).html();
|
2011-08-15 22:05:07 +02:00
|
|
|
} catch (ex) {
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
}
|
2011-08-25 13:23:52 +02:00
|
|
|
|
|
|
|
function hasProtocol(url) {
|
|
|
|
var regexp = /(ftp|http|https|sftp)/;
|
|
|
|
return regexp.test(url);
|
|
|
|
}
|