diff --git a/database/db.js b/database/db.js index 5c571f3..bc773a2 100644 --- a/database/db.js +++ b/database/db.js @@ -307,7 +307,7 @@ db.register = function(user) { }; db.insertDefaultBookmarks = function(userId) { - var tags_name = ["常用", "未分类"]; + var tags_name = ["常用", "未分类", "收藏"]; db.addTags(userId, tags_name) .then((insertId) => { @@ -315,27 +315,27 @@ db.insertDefaultBookmarks = function(userId) { title: "谷歌", description: "要翻墙的搜索网站", url: "https://www.google.com.hk/", - public: "1" + public: "0" }, { title: "百度", description: "A:百度一下你会死啊?B:会!", url: "https://www.baidu.com/", - public: "1" + public: "0" }, { title: "微博", description: "随时随地发现新鲜事", url: "http://weibo.com/", - public: "1" + public: "0" }, { title: "天猫", description: "上天猫,就够了!", url: "https://www.tmall.com/", - public: "1" + public: "0" }, { title: "优酷", description: "视频网站", url: "http://www.youku.com/", - public: "1" + public: "0" }]; var tags = [insertId]; diff --git a/public/images/favorite-hover.png b/public/images/favorite-hover.png new file mode 100644 index 0000000..e52ab8a Binary files /dev/null and b/public/images/favorite-hover.png differ diff --git a/public/images/favorite.png b/public/images/favorite.png new file mode 100644 index 0000000..c914aab Binary files /dev/null and b/public/images/favorite.png differ diff --git a/public/scripts/controllers/edit-controller.js b/public/scripts/controllers/edit-controller.js index fb36ac9..e068326 100644 --- a/public/scripts/controllers/edit-controller.js +++ b/public/scripts/controllers/edit-controller.js @@ -94,7 +94,10 @@ app.controller('editCtr', ['$scope', '$state', '$timeout', 'bookmarkService', 'p toastr.error('检撤到您的书签链接非法,是否忘记加http或者https了?建议直接从打开浏览器地址栏复制出来直接粘贴到输入框。', "错误"); return; } - + if (selectedTags.length < 1) { + toastr.error('您至少要选择一个分类!如果暂时没想到放到哪个分类,可以先选择未分类', "错误"); + return; + } if ($scope.add) { bookmarkService.addBookmark(params) .then((data) => { diff --git a/public/scripts/controllers/search-controller.js b/public/scripts/controllers/search-controller.js index 19ef82e..969d414 100644 --- a/public/scripts/controllers/search-controller.js +++ b/public/scripts/controllers/search-controller.js @@ -114,6 +114,29 @@ app.controller('searchCtr', ['$scope', '$state', '$stateParams', '$filter', '$wi pubSubService.publish('TagCtr.storeBookmark', b); } + $scope.favoriteBookmark = function(b) { + var bookmark = {} + bookmark.description = ''; + bookmark.title = b.title; + bookmark.url = b.url; + bookmark.public = 1; + bookmark.click_count = 1; + + bookmarkService.favoriteBookmark(bookmark) + .then((data) => { + pubSubService.publish('EditCtr.inserBookmarsSuccess', data); + if (data.title) { + toastr.success('[ ' + data.title + ' ] 收藏成功,将自动重新更新书签!', "提示"); + } else { + toastr.error('[ ' + bookmark.title + ' ] 收藏失败', "提示"); + } + }) + .catch((err) => { + console.log('favoriteBookmark err', err); + toastr.error('[ ' + bookmark.title + ' ] 收藏失败' + JSON.stringify(err), "提示"); + }); + } + $scope.copy = function(id, url) { var clipboard = new Clipboard('#searchurl' + id, { text: function() { diff --git a/public/scripts/services/bookmark-service.js b/public/scripts/services/bookmark-service.js index aca1d75..b642709 100644 --- a/public/scripts/services/bookmark-service.js +++ b/public/scripts/services/bookmark-service.js @@ -177,6 +177,19 @@ app.factory('bookmarkService', ['$http', '$q', function($http, $q) { }); return def.promise; }, + favoriteBookmark: function(params) { + var def = $q.defer(); + $http.post('/api/favoriteBookmark/', { + params: params + }) + .success(function(data) { + def.resolve(data); + }) + .error(function(data) { + def.reject('favorite error'); + }); + return def.promise; + }, updateBookmark: function(params) { var def = $q.defer(); $http.post('/api/updateBookmark/', { diff --git a/public/views/search.html b/public/views/search.html index e421fb6..927d6b9 100644 --- a/public/views/search.html +++ b/public/views/search.html @@ -136,7 +136,7 @@ - {{ bookmark.url }} + {{ bookmark.url }} {{ bookmark.click_count }} {{ bookmark.created_at }} @@ -153,6 +153,9 @@ + + + diff --git a/routes/api.js b/routes/api.js index 7947be2..91bb40f 100644 --- a/routes/api.js +++ b/routes/api.js @@ -463,7 +463,6 @@ api.get('/searchBookmarks', function(req, res) { }) sendData.totalItems = totalItems; sendData.bookmarks = data; - console.log(JSON.stringify(sendData)) res.json(sendData); }) .catch((err) => console.log('bookmarks table or card err', err)) @@ -475,7 +474,30 @@ api.get('/tags', function(req, res) { return; } db.getTags(req.session.user.id) - .then((tags) => res.json(tags)) + .then((tags) => { + // 每获取一次标签,就检查一下系统默认的两个分类是不是存在 + var defaultTags = []; + var find1 = false; + var find2 = false; + tags.forEach((tag) => { + if (tag.name == "未分类") { + find1 = true; + } + if (tag.name == "收藏") { + find2 = true; + } + }) + if (!find1) { + defaultTags.push("未分类") + } + if (!find2) { + defaultTags.push("收藏") + } + if (defaultTags.length > 0) { + db.addTags(req.session.user.id, defaultTags) + } + res.json(tags); + }) .catch((err) => console.log('tags', err)); }); @@ -631,6 +653,50 @@ api.post('/addBookmark', function(req, res) { .catch((err) => console.log('addBookmark err', err)); // oops! }); +api.post('/favoriteBookmark', function(req, res) { + console.log('hello favoriteBookmark', JSON.stringify(req.body)); + if (!req.session.user) { + res.send(401); + return; + } + var bookmark = req.body.params; + var userId = req.session.user.id; + var bookmarkId = -1; + var ret = {}; + + db.addBookmark(userId, bookmark) // 插入书签 + .then((bookmark_id) => { + db.delBookmarkTags(bookmark_id); // 不管3721,先删掉旧的分类 + bookmarkId = bookmark_id; + return bookmark_id; + }) // 将之前所有的书签分类信息删掉 + .then((bookmark_id) => db.getTags(userId)) // 插入分类 + .then((tags) => { + var tagFavorite = []; + tags.forEach((tag) => { + if (tag.name == '收藏') { + tagFavorite.push(tag.id); + } + }) + if (tagFavorite.length >= 1) { + return db.addTagsBookmarks(tagFavorite, bookmarkId) + } else { + db.addTags(req.session.user.id, ['收藏']) + return Promise.reject("没有收藏的分类"); + } + }) + .then(() => db.getBookmark(bookmarkId)) // 获取书签信息,返回去 + .then((bookmark) => { + ret = bookmark; + return db.getBookmarkTags(bookmarkId); + }) + .then((bookmarkTags) => { + ret.tags = bookmarkTags; + res.json(ret) + }) + .catch((err) => console.log('addBookmark err', err)); // oops! +}); + api.post('/addTags', function(req, res) { console.log('hello addTags', JSON.stringify(req.query), JSON.stringify(req.body)); if (!req.session.user) {