summaryrefslogtreecommitdiffstats
path: root/apps/bookmarks/js/bookmarks.js
blob: 04db8b42a79394617a6cf84fa71cb8035574a797 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
var bookmarks_page = 0;
var bookmarks_loading = false;

$(document).ready(function() {
	$('.bookmarks_addBtn').click(function(event){
		$('.bookmarks_add').slideToggle();
	});
	
	$('#bookmark_add_submit').click(addBookmark);
	$(window).scroll(updateOnBottom);
	
	$('.bookmarks_list').empty();
	getBookmarks();
});

function getBookmarks() {
	if(bookmarks_loading) {
		//have patience :)
		return;
	}
	$.ajax({
		url: 'ajax/updateList.php',
		data: 'tag=' + encodeURI($('#bookmarkFilterTag').val()) + '&page=' + bookmarks_page,
		success: function(bookmarks){
			bookmarks_page += 1;
			$('.bookmark_link').unbind('click', recordClick);
			$('.bookmark_delete').unbind('click', delBookmark);
	
			for(var i in bookmarks.data) {
				updateBookmarksList(bookmarks.data[i]);
			}
			$('.bookmark_link').click(recordClick);
			$('.bookmark_delete').click(delBookmark);
			bookmarks_loading = false;
		}
	});	
}

function addBookmark(event) {
	var url = encodeEntities($('#bookmark_add_url').val())
	var title = encodeEntities($('#bookmark_add_title').val())
	var description = encodeEntities($('#bookmark_add_description').val())
	var tags = encodeEntities($('#bookmark_add_tags').val())
	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> ';
	}
	$.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>'
			);
		}
	});
}

function delBookmark(event) {
	var record = $(this).parent().parent()
	$.ajax({
		url: 'ajax/delBookmark.php',
		data: 'url=' + encodeURI($(this).parent().parent().children('.bookmark_url:first').text()),
		success: function(data){ record.animate({ opacity: 'hide' }, 'fast'); }
	});
}

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> ';
	}
	$('.bookmarks_list').append(
		'<div class="bookmark_single">' +
			'<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>' +
		'</div>'
	);
}

function updateOnBottom() {
	//check wether user is on bottom of the page
	if ($('body').height() <= ($(window).height() + $(window).scrollTop())) {
		getBookmarks();
	}
}

function recordClick(event) {
	$.ajax({
		url: 'ajax/recordClick.php',
		data: 'url=' + encodeURI($(this).attr('href')),
	});	
}

function encodeEntities(s){
	try {
		return $('<div/>').text(s).html();
		
	} catch (ex) {
		return "";
	}
}