From a9a2478e9e27fc90e60e71e733f456a0a9103143 Mon Sep 17 00:00:00 2001 From: OldHawk Date: Tue, 11 Jul 2017 14:54:26 +0800 Subject: [PATCH] feat(forums): change new topic/reply status --- modules/core/client/app/init.js | 11 +++++- .../forums-view.client.controller.js | 25 ++++++++++-- .../controllers/forums.client.controller.js | 23 ++++++++++- modules/forums/client/less/forum.less | 4 +- .../client/views/index.client.view.html | 2 +- .../client/views/topic.client.view.html | 4 +- .../forums/client/views/view.client.view.html | 2 +- .../controllers/forums.server.controller.js | 39 ++++++++++--------- 8 files changed, 78 insertions(+), 32 deletions(-) diff --git a/modules/core/client/app/init.js b/modules/core/client/app/init.js index 7ec7c761..75d14659 100644 --- a/modules/core/client/app/init.js +++ b/modules/core/client/app/init.js @@ -12,7 +12,8 @@ .config(localStorageModuleConfig) .config(transConfig) .config(markedConfig) - .run(setDefaultLang); + .run(setDefaultLang) + .run(writeLeaveTime); bootstrapConfig.$inject = ['$compileProvider', '$locationProvider', '$httpProvider', '$logProvider']; @@ -51,6 +52,13 @@ $translate.use(user_lang); } + writeLeaveTime.$inject = ['localStorageService', '$window']; + function writeLeaveTime(localStorageService, $window) { + $window.onbeforeunload = function () { + localStorageService.set('last_leave_time', Date.now()); + } + } + markedConfig.$inject = ['markedProvider']; function markedConfig(markedProvider) { markedProvider.setOptions({ @@ -104,4 +112,5 @@ // Then init the app angular.bootstrap(document, [app.applicationModuleName]); } + }(ApplicationConfiguration)); diff --git a/modules/forums/client/controllers/forums-view.client.controller.js b/modules/forums/client/controllers/forums-view.client.controller.js index e4d80ea4..6abf9c67 100644 --- a/modules/forums/client/controllers/forums-view.client.controller.js +++ b/modules/forums/client/controllers/forums-view.client.controller.js @@ -5,11 +5,11 @@ .module('forums') .controller('ForumsViewController', ForumsViewController); - ForumsViewController.$inject = ['$scope', '$state', '$translate', 'Authentication', 'MeanTorrentConfig', 'ForumsService', 'SideOverlay', '$filter', 'NotifycationService', - 'marked', 'ModalConfirmService', '$stateParams', 'TopicsService']; + ForumsViewController.$inject = ['$scope', '$state', '$translate', 'Authentication', 'MeanTorrentConfig', 'ForumsService', 'moment', '$filter', 'NotifycationService', + 'marked', 'localStorageService', '$stateParams', 'TopicsService']; - function ForumsViewController($scope, $state, $translate, Authentication, MeanTorrentConfig, ForumsService, SideOverlay, $filter, NotifycationService, - marked, ModalConfirmService, $stateParams, TopicsService) { + function ForumsViewController($scope, $state, $translate, Authentication, MeanTorrentConfig, ForumsService, moment, $filter, NotifycationService, + marked, localStorageService, $stateParams, TopicsService) { var vm = this; vm.forumsConfig = MeanTorrentConfig.meanTorrentConfig.forumsConfig; vm.user = Authentication.user; @@ -26,6 +26,8 @@ * init */ vm.init = function () { + vm.last_leave_time = localStorageService.get('last_leave_time') || Date.now(); + // get forum info by state params ForumsService.get({ forumId: $stateParams.forumId @@ -79,5 +81,20 @@ } }; + /** + * hasNewReply + * @param t + * @returns {boolean} + */ + vm.hasNewReply = function (t) { + if (t && t.lastReplyAt) { + var t_reply = moment.utc(t.lastReplyAt).valueOf(); + var t_leave = moment.utc(vm.last_leave_time).valueOf(); + + return t_reply > t_leave; + } else { + return false; + } + }; } }()); diff --git a/modules/forums/client/controllers/forums.client.controller.js b/modules/forums/client/controllers/forums.client.controller.js index a5012293..77bc54cf 100644 --- a/modules/forums/client/controllers/forums.client.controller.js +++ b/modules/forums/client/controllers/forums.client.controller.js @@ -5,10 +5,10 @@ .module('forums') .controller('ForumsController', ForumsController); - ForumsController.$inject = ['$scope', '$state', '$translate', 'Authentication', 'MeanTorrentConfig', 'ForumsService', 'SideOverlay', '$filter', 'NotifycationService', + ForumsController.$inject = ['$scope', '$state', '$translate', 'Authentication', 'MeanTorrentConfig', 'ForumsService', 'localStorageService', '$filter', 'NotifycationService', 'marked', 'ModalConfirmService']; - function ForumsController($scope, $state, $translate, Authentication, MeanTorrentConfig, ForumsService, SideOverlay, $filter, NotifycationService, + function ForumsController($scope, $state, $translate, Authentication, MeanTorrentConfig, ForumsService, localStorageService, $filter, NotifycationService, marked, ModalConfirmService) { var vm = this; vm.forumsConfig = MeanTorrentConfig.meanTorrentConfig.forumsConfig; @@ -25,6 +25,9 @@ * init */ vm.init = function () { + vm.last_leave_time = localStorageService.get('last_leave_time') || Date.now(); + + // get forums list ForumsService.query({}, function (items) { console.log(items); vm.forums = items; @@ -42,5 +45,21 @@ } }; + /** + * hasNewReply + * @param t + * @returns {boolean} + */ + vm.hasNewReply = function (t) { + if (t && t.lastReplyAt) { + var t_reply = moment.utc(t.lastReplyAt).valueOf(); + var t_leave = moment.utc(vm.last_leave_time).valueOf(); + + return t_reply > t_leave; + } else { + return false; + } + }; + } }()); diff --git a/modules/forums/client/less/forum.less b/modules/forums/client/less/forum.less index 1b1caf5f..5e6c91fd 100644 --- a/modules/forums/client/less/forum.less +++ b/modules/forums/client/less/forum.less @@ -186,9 +186,9 @@ margin-bottom: 5px; a { font-size: 16px; - font-weight: 500; + font-weight: 400; &:visited { - color: darken(@brand-primary, 20%); + color: #666; } } } diff --git a/modules/forums/client/views/index.client.view.html b/modules/forums/client/views/index.client.view.html index 8af2ce93..b0d5aa7d 100644 --- a/modules/forums/client/views/index.client.view.html +++ b/modules/forums/client/views/index.client.view.html @@ -46,7 +46,7 @@ - +

{{f.name}} diff --git a/modules/forums/client/views/topic.client.view.html b/modules/forums/client/views/topic.client.view.html index da1478c0..87183830 100644 --- a/modules/forums/client/views/topic.client.view.html +++ b/modules/forums/client/views/topic.client.view.html @@ -52,7 +52,7 @@
{{'FORUMS.BTN_POST_NEW_TOPIC' | translate}} + href="#" ng-click="vm.beginPostReply();">{{'FORUMS.BTN_POST_NEW_REPLY' | translate}} {{ vm.topic.readOnly ? 'FORUMS.BTN_UNSET_READONLY' : 'FORUMS.BTN_SET_READONLY' | translate}}
@@ -191,7 +191,7 @@
-
+
diff --git a/modules/forums/client/views/view.client.view.html b/modules/forums/client/views/view.client.view.html index 664d44f2..aec913e5 100644 --- a/modules/forums/client/views/view.client.view.html +++ b/modules/forums/client/views/view.client.view.html @@ -73,7 +73,7 @@ - +