diff --git a/config/env/torrents.js b/config/env/torrents.js index 07f3a759..7c4da23c 100644 --- a/config/env/torrents.js +++ b/config/env/torrents.js @@ -167,8 +167,7 @@ module.exports = { debugAnnounceUser: { debugAll: false, ids: [ - '59227f9095602327ea1d96ba', - '592280c464be9e281a1ec56e' + '59227f9095602327ea1d96ba' ] }, debugClientSideUser: { @@ -334,6 +333,128 @@ module.exports = { ] }, + /** + * @medals + * + * settings of medals wall + * + * @showWorkerUsersListToAll: setting normal user whether can list workers type medal owned users + * @type: medals type + * @cats: medal cats, please add translate string MEDALS_CATS_@cats + * @name: medal name + * @prefix: medal description translate string prefix, such as MEDALS_DESC_@prifix + * @faClass: medal logo background layer icon class with font-awesome + * @iconClass: medal logo top icon class with font-awesome + * + * @hasHeader: setting whether has a header string on medal, if true please add translate string MEDALS_HEADERSTRING_@prefix + * @hasFooter: setting whether has a footer string on medal, if true please add translate string MEDALS_FOOTERSTRING_@prefix + * @passHelp: setting for get this medal need who help + * @score: setting for self help medal by scores number + * @enable: enable status + */ + medals: { + showWorkerUsersListToAll: false, + type: [ + { + cats: 'workers', name: 'root', prefix: 'ROOT', faClass: 'fa fa-shield', iconClass: 'far fa-user-secret', + hasHeader: false, hasFooter: true, passHelp: 'admin', enable: true + }, + { + cats: 'workers', name: 'networkAdmin', prefix: 'NETWORK_ADMIN', faClass: 'fa fa-shield', iconClass: 'far fa-user-graduate', + hasHeader: false, hasFooter: true, passHelp: 'admin', enable: true + }, + { + cats: 'workers', name: 'supportAdmin', prefix: 'SUPPORT_ADMIN', faClass: 'fa fa-shield', iconClass: 'far fa-user-graduate', + hasHeader: false, hasFooter: true, passHelp: 'admin', enable: true + }, + { + cats: 'workers', name: 'forumAdmin', prefix: 'FORUM_ADMIN', faClass: 'fa fa-shield', iconClass: 'far fa-user-graduate', + hasHeader: false, hasFooter: true, passHelp: 'admin', enable: true + }, + { + cats: 'workers', name: 'resourceAdmin', prefix: 'RESOURCE_ADMIN', faClass: 'fa fa-shield', iconClass: 'far fa-user-graduate', + hasHeader: false, hasFooter: true, passHelp: 'admin', enable: true + }, + { + cats: 'workers', name: 'ambassador', prefix: 'AMBASSADOR', faClass: 'fa fa-shield', iconClass: 'far fa-user-tie', + hasHeader: false, hasFooter: true, passHelp: 'admin', enable: true + }, + + { + cats: 'workers', name: 'forumModerators', prefix: 'FORUM_MODERATORS', faClass: 'fa fa-shield', iconClass: 'far fa-address-card', + hasHeader: false, hasFooter: true, passHelp: 'admin', enable: true + }, + { + cats: 'workers', name: 'makerFounder', prefix: 'MAKER_FOUNDER', faClass: 'fa fa-shield', iconClass: 'far fa-user-tag', + hasHeader: false, hasFooter: true, passHelp: 'admin', enable: true + }, + { + cats: 'workers', name: 'uploader', prefix: 'UPLOADER', faClass: 'fa fa-shield', iconClass: 'far fa-user-ninja', + hasHeader: false, hasFooter: true, passHelp: 'admin', enable: true + }, + { + cats: 'workers', name: 'retiree', prefix: 'RETIREE', faClass: 'fa fa-shield', iconClass: 'far fa-wheelchair', + hasHeader: false, hasFooter: true, passHelp: 'admin', enable: true + }, + + { + cats: 'users', name: 'beauty3000', prefix: 'BEAUTY_3000', faClass: 'fa fa-ticket', iconClass: 'far fa-users', + hasHeader: false, hasFooter: true, passHelp: 'admin', enable: true + }, + { + cats: 'users', name: 'roam', prefix: 'ROAM', faClass: 'fa fa-ticket', iconClass: 'far fa-user-astronaut', + hasHeader: false, hasFooter: true, passHelp: 'admin', enable: true + }, + { + cats: 'users', name: 'noExamination', prefix: 'NO_EXAMINATION', faClass: 'fa fa-ticket', iconClass: 'far fa-user-check', + hasHeader: false, hasFooter: true, passHelp: 'admin', enable: true + }, + { + cats: 'users', name: 'slugger', prefix: 'SLUGGER', faClass: 'fa fa-ticket', iconClass: 'far fa-child', + hasHeader: false, hasFooter: true, passHelp: 'admin', enable: true + }, + { + cats: 'users', name: 'elder', prefix: 'ELDER', faClass: 'fa fa-ticket', iconClass: 'far fa-blind', + hasHeader: false, hasFooter: true, passHelp: 'admin', enable: true + }, + + { + cats: 'vip', name: 'foreverVip', prefix: 'FOREVER_VIP', faClass: 'fa fa-bookmark', + hasHeader: true, hasFooter: true, passHelp: 'admin', enable: true + }, + { + cats: 'vip', name: 'yearlyVip', prefix: 'YEARLY_VIP', faClass: 'fa fa-bookmark', + hasHeader: true, hasFooter: true, passHelp: 'sys', enable: true + }, + { + cats: 'vip', name: 'monthlyVip', prefix: 'MONTHLY_VIP', faClass: 'fa fa-bookmark', + hasHeader: true, hasFooter: true, passHelp: 'sys', enable: true + }, + { + cats: 'vip', name: 'guestVip', prefix: 'GUEST_VIP', faClass: 'fa fa-bookmark', + hasHeader: true, hasFooter: true, passHelp: 'admin', enable: true + }, + + { + cats: 'commemorative', name: 'siteBegin', prefix: 'SITE_BEGIN', faClass: 'fa fa-badge', + hasHeader: true, hasFooter: true, passHelp: 'self', score: 1000, enable: true + }, + { + cats: 'commemorative', name: 'forOneYears', prefix: 'FOR_ONE_YEARS', faClass: 'fa fa-badge', + hasHeader: true, hasFooter: true, passHelp: 'self', score: 10000, enable: true + }, + { + cats: 'commemorative', name: 'forTwoYears', prefix: 'FOR_TWO_YEARS', faClass: 'fa fa-badge', + hasHeader: true, hasFooter: true, passHelp: 'self', score: 20000, enable: true + }, + + { + cats: 'events', name: 'eventName', prefix: 'EVENT_NAME', faClass: 'fa fa-hexagon', + hasHeader: true, hasFooter: true, passHelp: 'admin', enable: true + } + ] + }, + /** * @sign * @@ -495,6 +616,7 @@ module.exports = { scoreExchangeInvitation: {name: 'scoreExchangeInvitation', content: 'SCORE_EXCHANGE_INVITATION', value: 0, enable: true}, //value used invite.scoreExchange scoreToRemoveWarning: {name: 'scoreToRemoveWarning', content: 'SCORETO_REMOVE_WARNING', value: 0, enable: true}, //value used hitAndRun.scoreToRemoveWarning + scoreToRequestMedal: {name: 'scoreToRequestMedal', content: 'SCORETO_REQUEST_MEDAL', value: 0, enable: true}, //value used hitAndRun.scoreToRemoveWarning activeIdleAccount: {name: 'activeIdleAccount', content: 'ACTIVE_IDLE_ACCOUNT', value: 0, enable: true}, //value used sign.idle.activeIdleAccountBasicScore dailyCheckIn: { @@ -714,6 +836,8 @@ module.exports = { adminPresentUserInvitations: {name: 'adminPresentUserInvitations', enable: true}, adminRemoveUserHnrWarning: {name: 'adminRemoveUserHnrWarning', enable: true}, adminCreateUserMakerGroup: {name: 'adminCreateUserMakerGroup', enable: true}, + adminAddUserMedal: {name: 'adminAddUserMedal', enable: true}, + adminRemoveUserMedal: {name: 'adminRemoveUserMedal', enable: true}, adminUserDelete: {name: 'adminUserDelete', enable: true}, adminUserEdit: {name: 'adminUserEdit', enable: true}, @@ -768,6 +892,8 @@ module.exports = { adminPresentUserInvitations: {name: 'adminPresentUserInvitations', content: 'ADMIN_PRESENT_USER_INVITATIONS', enable: true}, adminRemoveUserHnrWarning: {name: 'adminRemoveUserHnrWarning', content: 'ADMIN_REMOVE_USER_HNR_WARNING', enable: true}, adminCreateUserMakerGroup: {name: 'adminCreateUserMakerGroup', content: 'ADMIN_CREATE_USER_MAKER_GROUP', enable: true}, + adminAddUserMedal: {name: 'adminAddUserMedal', content: 'ADMIN_ADD_USER_MEDAL', enable: true}, + adminRemoveUserMedal: {name: 'adminRemoveUserMedal', content: 'ADMIN_REMOVE_USER_MEDAL', enable: true}, adminBanUserInviter: {name: 'adminBanUserInviter', content: 'ADMIN_BAN_USER_INVITER', enable: true} } }, @@ -1426,34 +1552,35 @@ module.exports = { * items number in per list page settings * NOTE: you can change these value at anytime if you understand it * - * @topicsPerPage: forum topic list page settings - * @repliesPerPage: forum topic replies list page settings - * @topicsSearchPerPage: forum topic search list page settings - * @torrentsPerPage: torrents list page settings - * @torrentsCommentsPerPage: torrent comments list settings - * @makeGroupTorrentsPerPage: torrent of make group list page settings - * @albumTorrentsPerPage: torrent of album list page settings - * @tracesPerPage: system traces log list page settings - * @adminUserListPerPage: admin manage users list page settings - * @collectionsListPerPage: movie collections list page settings - * @backupFilesListPerPage: system backup files list page settings - * @torrentPeersListPerPage: torrent detail seeder & leecher users list page settings + * @topicsPerPage: forum topic list page settings + * @repliesPerPage: forum topic replies list page settings + * @topicsSearchPerPage: forum topic search list page settings + * @torrentsPerPage: torrents list page settings + * @torrentsCommentsPerPage: torrent comments list settings + * @makeGroupTorrentsPerPage: torrent of make group list page settings + * @albumTorrentsPerPage: torrent of album list page settings + * @tracesPerPage: system traces log list page settings + * @adminUserListPerPage: admin manage users list page settings + * @collectionsListPerPage: movie collections list page settings + * @backupFilesListPerPage: system backup files list page settings + * @torrentPeersListPerPage: torrent detail seeder & leecher users list page settings * @officialInvitationsListPerPage: official invitations list page settings * @userInvitationsListPerPage: users invitations list page settings * @userDataLogsListPerPage: users data history logs list page settings + * @medalUsersListPerPage: medal owned users list page settings * - * @uploaderUserListPerPage: admin management uploader access list page settings - * @messageBoxListPerPage: message box list page settings - * @followListPerPage: users follow list page settings + * @uploaderUserListPerPage: admin management uploader access list page settings + * @messageBoxListPerPage: message box list page settings + * @followListPerPage: users follow list page settings * - * @requestListPerPage: request list page settings - * @requestCommentsPerPage: request comments list settings + * @requestListPerPage: request list page settings + * @requestCommentsPerPage: request comments list settings * * @homeOrderTorrentListPerType: every type of torrent showed in home settings * @homeNewestTorrentListPerType: every type of torrent of newest showed in home settings - * @homeHelpListLimit: help items number of home settings - * @homeNoticeListLimit: notice items number of home settings - * @homeNewTopicListLimit: new topic items number of home settings + * @homeHelpListLimit: help items number of home settings + * @homeNoticeListLimit: notice items number of home settings + * @homeNewTopicListLimit: new topic items number of home settings * @homeNewestTorrentsListLimit: newest torrents items number of home settings * * @examinationUserListPerPage: users item number of examination result page @@ -1478,6 +1605,7 @@ module.exports = { officialInvitationsListPerPage: 20, userInvitationsListPerPage: 10, userDataLogsListPerPage: 20, + medalUsersListPerPage: 60, uploaderUserListPerPage: 20, messageBoxListPerPage: 10, diff --git a/modules/about/client/config/about.client.menus.js b/modules/about/client/config/about.client.menus.js index 3d114343..80b7a781 100644 --- a/modules/about/client/config/about.client.menus.js +++ b/modules/about/client/config/about.client.menus.js @@ -13,7 +13,7 @@ state: 'about', type: 'dropdown', roles: ['*'], - position: 7 + position: 19 }); menuService.addSubMenuItem('topbar', 'about', { diff --git a/modules/about/client/controllers/about.client.controller.js b/modules/about/client/controllers/about.client.controller.js index 8ac7ca33..afde84f6 100644 --- a/modules/about/client/controllers/about.client.controller.js +++ b/modules/about/client/controllers/about.client.controller.js @@ -531,10 +531,10 @@ var ele = $('#' + e.$editor.attr('id') + ' .md-footer'); angular.element(ele).addClass('text-right'); - angular.element(ele[0].childNodes[0]).addClass('btn-width-80'); + angular.element(ele[0].childNodes[0]).addClass('btn-min-width-80'); ele[0].childNodes[0].innerText = $translate.instant('FORUMS.BTN_SAVE'); - var cbtn = angular.element(''); + var cbtn = angular.element(''); cbtn.bind('click', function (evt) { e.setContent(m.desc); e.$options.hideable = true; diff --git a/modules/about/client/views/black.client.view.html b/modules/about/client/views/black.client.view.html index 1218c96f..5a608b86 100644 --- a/modules/about/client/views/black.client.view.html +++ b/modules/about/client/views/black.client.view.html @@ -25,13 +25,13 @@ - + {{$index}} - + {{b.name}} - + {{b.reason | translate}} diff --git a/modules/about/client/views/maker-view.client.view.html b/modules/about/client/views/maker-view.client.view.html index 55a3ff79..9a60167f 100644 --- a/modules/about/client/views/maker-view.client.view.html +++ b/modules/about/client/views/maker-view.client.view.html @@ -64,7 +64,7 @@
- - -
+
- @@ -338,7 +338,7 @@ placeholder="{{ 'STATUS_FIELD.USERNAME' | translate }}" autofocus>
-
diff --git a/modules/albums/client/controllers/album-view.client.controller.js b/modules/albums/client/controllers/album-view.client.controller.js index 0f266cd9..4b3ba387 100644 --- a/modules/albums/client/controllers/album-view.client.controller.js +++ b/modules/albums/client/controllers/album-view.client.controller.js @@ -212,10 +212,10 @@ var ele = $('#' + e.$editor.attr('id') + ' .md-footer'); angular.element(ele).addClass('text-right'); - angular.element(ele[0].childNodes[0]).addClass('btn-width-80'); + angular.element(ele[0].childNodes[0]).addClass('btn-min-width-80'); ele[0].childNodes[0].innerText = $translate.instant('FORUMS.BTN_SAVE'); - var cbtn = angular.element(''); + var cbtn = angular.element(''); cbtn.bind('click', function (evt) { e.setContent(c.overview); e.$options.hideable = true; diff --git a/modules/albums/client/views/album-view.client.view.html b/modules/albums/client/views/album-view.client.view.html index e9a765d5..8c8f98a7 100644 --- a/modules/albums/client/views/album-view.client.view.html +++ b/modules/albums/client/views/album-view.client.view.html @@ -29,16 +29,16 @@
- - -
+
- diff --git a/modules/backup/client/views/backup.client.view.html b/modules/backup/client/views/backup.client.view.html index 7c4602cf..65e609f6 100644 --- a/modules/backup/client/views/backup.client.view.html +++ b/modules/backup/client/views/backup.client.view.html @@ -48,7 +48,7 @@ next-text="{{ 'PAGE_TEXT_NEXT' | translate}}" last-text="{{ 'PAGE_TEXT_LAST' | translate}}">
-
diff --git a/modules/chat/client/config/chat.client.menus.js b/modules/chat/client/config/chat.client.menus.js index 199775c1..21e7a929 100644 --- a/modules/chat/client/config/chat.client.menus.js +++ b/modules/chat/client/config/chat.client.menus.js @@ -13,8 +13,20 @@ title: 'MENU_CHAT', state: 'chat', roles: ['*'], + class: 'sm-hide', target: '_blank', - position: 6 + position: 7 + }); + + //add to more + menuService.addSubMenuItem('topbar', 'more', { + title: 'MENU_CHAT', + state: 'chat', + roles: ['*'], + faIcon: 'fa-comment-alt-dots', + faClass: 'text-mt', + target: '_blank', + position: 2 }); } }()); diff --git a/modules/collections/client/controllers/collections-view.client.controller.js b/modules/collections/client/controllers/collections-view.client.controller.js index 497a72d4..52ec0d74 100644 --- a/modules/collections/client/controllers/collections-view.client.controller.js +++ b/modules/collections/client/controllers/collections-view.client.controller.js @@ -172,10 +172,10 @@ var ele = $('#' + e.$editor.attr('id') + ' .md-footer'); angular.element(ele).addClass('text-right'); - angular.element(ele[0].childNodes[0]).addClass('btn-width-80'); + angular.element(ele[0].childNodes[0]).addClass('btn-min-width-80'); ele[0].childNodes[0].innerText = $translate.instant('FORUMS.BTN_SAVE'); - var cbtn = angular.element(''); + var cbtn = angular.element(''); cbtn.bind('click', function (evt) { e.setContent(c.overview); e.$options.hideable = true; diff --git a/modules/collections/client/views/collection-view.client.view.html b/modules/collections/client/views/collection-view.client.view.html index 3722cf81..d8a5ff05 100644 --- a/modules/collections/client/views/collection-view.client.view.html +++ b/modules/collections/client/views/collection-view.client.view.html @@ -41,16 +41,16 @@
- - -
+
-   +  
diff --git a/modules/collections/server/controllers/collections.server.controller.js b/modules/collections/server/controllers/collections.server.controller.js index c6d50518..b331507f 100644 --- a/modules/collections/server/controllers/collections.server.controller.js +++ b/modules/collections/server/controllers/collections.server.controller.js @@ -65,7 +65,6 @@ exports.collectioninfo = function (req, res) { }); }; - /** * Create an collection */ diff --git a/modules/core/client/app/trans-string-en.js b/modules/core/client/app/trans-string-en.js index 18223062..5d6bc071 100644 --- a/modules/core/client/app/trans-string-en.js +++ b/modules/core/client/app/trans-string-en.js @@ -50,7 +50,9 @@ MENU_ADMIN_TICKETS: 'Support Services Center', MENU_USERS_ADMIN: 'Manage Users', MENU_UPLOAD: 'Upload', + MENU_MEDALS: 'Medals', MENU_FORUMS: 'Forums', + MENU_MORE: 'More', MENU_REQUESTS: 'Requests', MENU_ABOUT: 'About', MENU_ABOUT_MANUAL: 'User Manual', @@ -90,6 +92,7 @@ MENU_MY_INVITE: 'My Invitations', MENU_MY_DATA_CENTER: 'Data center', MENU_ACCOUNT_STATUS: 'Account Status', + MENU_TORRENTS_STATUS: 'Torrents Status', EDIT_PROFILE: 'Edit Profile', EDIT_PROFILE_PIC: 'Edit Profile Picture', EDIT_SIGNATURE: 'Edit Signature Of Forum', @@ -250,6 +253,7 @@ VIP: 'Vip', VIP_DONATE: 'Vip Donate', VIP_RULES: 'Vip Rules', + MEDALS: 'Medals Wall', FORUM: 'Forum', REQUESTS: 'Requests', REQUESTS_MY: 'My Requests', @@ -278,6 +282,7 @@ MESSAGES_BOX: 'Message Box', MESSAGES_SEND: 'Send Message', STATUS_ACCOUNT: 'Account Status', + STATUS_TORRENTS: 'Torrents Status', STATUS_UPLOADED: 'Uploaded', STATUS_SEEDING: 'Seeding', STATUS_LEECHING: 'Leeching', @@ -876,6 +881,7 @@ BUTTON_SELECT_PICTURE: 'Select Picture', BUTTON_USE_THIS_PICTURE: 'Use This Picture', BUTTON_CANCEL: 'Cancel', + BUTTON_CLOSE: 'Close', BUTTON_SAVE: 'Save', BUTTON_SET: 'Set', BUTTON_OK: 'Ok', @@ -975,7 +981,7 @@ }, //user status - STATUS_ACCOUNT: 'Account Status', + STATUS_ACCOUNT: 'My Account Status', STATUS_UPLOADED: 'Uploaded torrents', STATUS_SEEDING: 'Seeding torrents', STATUS_DOWNLOADING: 'Downloading torrents', @@ -1004,6 +1010,7 @@ BTN_VIEW_USER_DATA_CENTER: 'Data Center', BTN_EDIT: 'Edit', BTN_REMOVE: 'Remove', + BTN_ADD_MEDAL: 'Add Medal', PICTURE: 'Profile picture', RESET_DEFAULT_PICTURE: 'Reset to default picture', ADD_VIP_MONTHS: '+ VIP a month', @@ -1227,6 +1234,8 @@ USER_UPLOADED_FLAG: '{{name}} uploaded', USER_DOWNLOADED_FLAG: '{{name}} downloaded', USER_SCORE_LEVEL: '{{name}} score level', + USER_RATIO_FLAG: '{{name}} ratio', + USER_MEDAL_FLAG: '{{name}} medal', //traces ADMIN_TRACES_LIST: 'Traces List', @@ -1472,6 +1481,115 @@ } }, + // medals wall + MEDALS: { + MEDALS_TITLE: 'Medals Wall', + TYPES_COUNT: 'Medals type count', + MEDALS_OPENED_COUNT: 'Medals opened count', + MEDALS_AWARD_COUNT: 'Medals award count', + SELECT_MEDAL_TO_USER: 'Please select a medal transfer to user - {{uname}}', + ADD_SUCCESSFULLY: 'Add medal to user successfully', + ADD_FAILED: 'Add medal to user failed', + REMOVE_SUCCESSFULLY: 'Remove medal to user successfully', + REMOVE_FAILED: 'Remove medal to user failed', + MEDALS_OVERVIEW: 'The medal is the identity of the users identity and contribution to the site. The medal is awarded in three ways: system automatic help, administrator help, and user self help. The self help medal requires the user to self-request according to the corresponding conditions. Different medals have different system treatments, and the site will also hold a variety of events for users of different medal groups from time to time.', + CMD_LIST_USER: 'List users', + CMD_REQUEST: 'Request', + HELP_CONDITION: 'Condition', + OWNED_USERS: 'Owned users', + USERS_IS_LOADING: 'Loading uses, please wait ...', + USERS_IS_EMPTY: 'Has no anybody owned this medal', + REQUEST_CONFIRM_CANCEL: 'Cancel', + REQUEST_CONFIRM_OK: 'OK', + REQUEST_CONFIRM_HEADER_TEXT: 'Request medal', + REQUEST_CONFIRM_BODY_TEXT: 'Are you sure want to request this medal with score {{score}} ?', + REQUEST_SUCCESSFULLY: 'Request medal successfully', + REQUEST_ERROR: 'Request medal failed', + AWARD_AT: 'Award at', + CATS: { + WORKERS: 'Workers medals', + USERS: 'Users medals', + VIP: 'VIP medals', + EVENTS: 'Events medals', + COMMEMORATIVE: 'Commemorative Medals' + }, + PASSHELP: { + SYS: 'System automatic help', + ADMIN: 'Administrator help', + SELF: 'User self help' + }, + DESC: { + ROOT: 'Root Administrator Medal', + NETWORK_ADMIN: 'Network Administrator Medal', + SUPPORT_ADMIN: 'Support Administrator Medal', + FORUM_ADMIN: 'Forums Administrator Medal', + RESOURCE_ADMIN: 'Resources Administrator Medal', + AMBASSADOR: 'Site Ambassador Medal', + FORUM_MODERATORS: 'Forum Moderators Medal', + MAKER_FOUNDER: 'Resource Group Founder Medal', + UPLOADER: 'Resource Uploader Medal', + RETIREE: 'Site Retiree Medal', + + BEAUTY_3000: 'Beauty Children User Medal', + ROAM: 'Roaming Safe User Medal', + NO_EXAMINATION: 'No Examination User Medal', + SLUGGER: 'Site Slugger User Medal', + ELDER: 'Site Elder User Medal', + + FOREVER_VIP: 'Forever VIP Medal', + YEARLY_VIP: 'Yearly VIP Medal', + MONTHLY_VIP: 'Monthly VIP Medal', + GUEST_VIP: 'Guest VIP Medal', + + SITE_BEGIN: 'Site Begin Medal', + FOR_ONE_YEARS: 'Site One Year Medal', + FOR_TWO_YEARS: 'Site Two Years Medal', + + EVENT_NAME: 'Special Event Medal' + }, + FOOTERSTRING: { + ROOT: 'ROOT', + NETWORK_ADMIN: 'NA', + SUPPORT_ADMIN: 'SA', + FORUM_ADMIN: 'FA', + RESOURCE_ADMIN: 'RA', + AMBASSADOR: 'AMB', + FORUM_MODERATORS: 'FM', + MAKER_FOUNDER: 'MGF', + UPLOADER: 'UPER', + RETIREE: 'RET', + + BEAUTY_3000: 'BEAUTY', + ROAM: 'ROAM', + NO_EXAMINATION: 'NOEXAM', + SLUGGER: 'SLUGGER', + ELDER: 'ELDER', + + FOREVER_VIP: 'VIP', + YEARLY_VIP: 'VIP', + MONTHLY_VIP: 'VIP', + GUEST_VIP: 'VIP', + + SITE_BEGIN: 'YEARS', + FOR_ONE_YEARS: 'YEARS', + FOR_TWO_YEARS: 'YEARS', + + EVENT_NAME: '2018' + }, + HEADERSTRING: { + FOREVER_VIP: 'F', + YEARLY_VIP: 'Y', + MONTHLY_VIP: 'M', + GUEST_VIP: 'G', + + SITE_BEGIN: '0', + FOR_ONE_YEARS: '1', + FOR_TWO_YEARS: '2', + + EVENT_NAME: 'EVE' + } + }, + // data center DATA_CENTER: { ITEM_SCORE: 'Score data analysis', @@ -1518,6 +1636,7 @@ REQUEST_ACCEPT_TO: 'Your response of request was accepted {{rid}}', SCORE_EXCHANGE_INVITATION: 'Exchange an invitation', SCORETO_REMOVE_WARNING: 'Remove a H&R warning {{tid}}', + SCORETO_REQUEST_MEDAL: 'Request medal: {{medalDesc | translate}}', ACTIVE_IDLE_ACCOUNT: 'Active account idle status', DAILY_CHECK_IN: 'Daily check in', SEED_TIMED: 'Torrent seeding timed increased score {{tid}}', @@ -1531,7 +1650,7 @@ BAD_REQUEST: 'Bad Request', FORBIDDEN: 'Forbidden', MADE_BAD_REQUEST: 'You made a bad request', - NOT_AUTHORIZED_THIS: 'You are not authorized to access this resource', + NOT_AUTHORIZED_THIS: 'You are not authorized to access this resource, if your session or cookie is expired, please sign in.', NOT_FOUND: 'Not Found', PAGE_NOT_FOUND: 'Page Or Resources Not Found', ACCESS_DENY: 'Your current IP is restricted to access this resource,For more help, please contact our {{sNameDesc | translate}} by Message or Email.' @@ -1833,6 +1952,8 @@ ADMIN_PRESENT_USER_INVITATIONS: '`{{by.displayName}}` present `{{numbers}}` official invitations, expires `{{days}}` days', ADMIN_REMOVE_USER_HNR_WARNING: '`{{by.displayName}}` remove H&R warning, complete id: `{{complete}}`', ADMIN_CREATE_USER_MAKER_GROUP: '`{{by.displayName}}` create user maker group: `-={{name}}=-`', + ADMIN_ADD_USER_MEDAL: '`{{by.displayName}}` add user medal: `{{medalName}}`', + ADMIN_REMOVE_USER_MEDAL: '`{{by.displayName}}` remove user medal: `{{medalName}}`', ADMIN_BAN_USER_INVITER: '`{{by.displayName}}` update account status to: `{{status}}`, reason: invited user [{{uname}}] was banned because [{{reason | translate}}]' }, @@ -1875,7 +1996,9 @@ UPLOAD_ACCESS_DENY: 'System only accepts resources group to upload torrents', READ_TORRENT_FILE_FAILD: 'The torrent file parsing error. Please check your torrent file to check if some of the necessary information is missing', MOVE_TORRENT_FILE_ERROR: 'The torrent file was moved incorrectly. Please do not repeat the submit operation quickly or the uploaded torrent file is missing.', - YOU_ALREADY_CHECK_IN: 'You already checked in today' + YOU_ALREADY_CHECK_IN: 'You already checked in today', + USER_ALREADY_HAS_THIS_MEDAL: 'This user already has this medal', + USER_HAS_NOT_THIS_MEDAL: 'This user has not this medal' }, //server message string, content string support markdown and emoji diff --git a/modules/core/client/app/trans-string-zh-tw.js b/modules/core/client/app/trans-string-zh-tw.js index 4b431b53..ab257175 100644 --- a/modules/core/client/app/trans-string-zh-tw.js +++ b/modules/core/client/app/trans-string-zh-tw.js @@ -50,7 +50,9 @@ MENU_ADMIN_TICKETS: '客戶服務中心', MENU_USERS_ADMIN: '用戶管理', MENU_UPLOAD: '發布', + MENU_MEDALS: '勳章', MENU_FORUMS: '論壇', + MENU_MORE: '更多', MENU_REQUESTS: '求種', MENU_ABOUT: '關於', MENU_ABOUT_MANUAL: '用戶手冊', @@ -90,6 +92,7 @@ MENU_MY_INVITE: '我的邀請', MENU_MY_DATA_CENTER: '數據中心', MENU_ACCOUNT_STATUS: '帳戶狀態', + MENU_TORRENTS_STATUS: '種子狀態', EDIT_PROFILE: '修改個人資訊', EDIT_PROFILE_PIC: '修改個人頭像', EDIT_SIGNATURE: '修改論壇簽名', @@ -250,6 +253,7 @@ VIP: 'Vip', VIP_DONATE: '捐贈VIP', VIP_RULES: 'Vip用戶協議', + MEDALS: '勳章牆', FORUM: '論壇', REQUESTS: '求種', REQUESTS_MY: '我的求種', @@ -278,6 +282,7 @@ MESSAGES_BOX: '站內訊息', MESSAGES_SEND: '傳送訊息', STATUS_ACCOUNT: '帳戶狀態', + STATUS_TORRENTS: '種子狀態', STATUS_UPLOADED: '我的種子', STATUS_SEEDING: '正在做種', STATUS_LEECHING: '正在下載', @@ -876,6 +881,7 @@ BUTTON_SELECT_PICTURE: '選擇圖片', BUTTON_USE_THIS_PICTURE: '應用圖片', BUTTON_CANCEL: '取消', + BUTTON_CLOSE: '關閉', BUTTON_SAVE: '儲存', BUTTON_SET: '設定', BUTTON_OK: '確定', @@ -975,7 +981,7 @@ }, //user status - STATUS_ACCOUNT: '帳戶狀態', + STATUS_ACCOUNT: '我的帳戶狀態', STATUS_UPLOADED: '我上傳的種子', STATUS_SEEDING: '正在做種的種子', STATUS_DOWNLOADING: '正在下載的種子', @@ -1004,6 +1010,7 @@ BTN_VIEW_USER_DATA_CENTER: '數據中心', BTN_EDIT: '編輯', BTN_REMOVE: '刪除', + BTN_ADD_MEDAL: '頒發勳章', PICTURE: '頭像', RESET_DEFAULT_PICTURE: '重置為預設圖片', ADD_VIP_MONTHS: '+ VIP一個月', @@ -1227,6 +1234,8 @@ USER_UPLOADED_FLAG: '{{name}} 的上傳量', USER_DOWNLOADED_FLAG: '{{name}} 的下載量', USER_SCORE_LEVEL: '{{name}} 的積分等級', + USER_RATIO_FLAG: '{{name}} 的分享率', + USER_MEDAL_FLAG: '{{name}} 的勳章總數', //traces ADMIN_TRACES_LIST: '系統日誌', @@ -1472,6 +1481,115 @@ } }, + // medals wall + MEDALS: { + MEDALS_TITLE: '勳章牆', + TYPES_COUNT: '勳章類型', + MEDALS_OPENED_COUNT: '勳章開放數', + MEDALS_AWARD_COUNT: '勳章頒發數', + SELECT_MEDAL_TO_USER: '請選擇要頒發的勳章 - {{uname}}', + ADD_SUCCESSFULLY: '給用戶添加勳章成功', + ADD_FAILED: '給用戶添加勳章失敗', + REMOVE_SUCCESSFULLY: '移除用戶勳章成功', + REMOVE_FAILED: '移除用戶勳章失敗', + MEDALS_OVERVIEW: '勳章是用戶身份及為站點所做的貢獻的標識,勳章頒發分為系統自動頒發、管理員幫助頒發與用戶自助頒發三種,自助頒發的勳章需要用戶自已根據相應的條件自助申領。不同的勳章對應有不同的系統待遇,站點也會不定期的針對不同的勳章群體用戶舉辦豐富多樣的活動,敬請大家期待。', + CMD_LIST_USER: '查看用戶', + CMD_REQUEST: '申請勳章', + HELP_CONDITION: '申請條件', + OWNED_USERS: '擁有用戶', + USERS_IS_LOADING: '正在裝載用戶列表,請稍候...', + USERS_IS_EMPTY: '還沒有任何用戶擁有此勳章', + REQUEST_CONFIRM_CANCEL: '取消', + REQUEST_CONFIRM_OK: '確定', + REQUEST_CONFIRM_HEADER_TEXT: '申請勳章', + REQUEST_CONFIRM_BODY_TEXT: '您確定要使用 {{score}} 積分來申請這枚勳章嗎?', + REQUEST_SUCCESSFULLY: '勳章申請成功', + REQUEST_ERROR: '勳章申請失敗', + AWARD_AT: '授於', + CATS: { + WORKERS: '工作人員類勳章', + USERS: '用戶類勳章', + VIP: 'VIP 類勳章', + EVENTS: '特別事件類勳章', + COMMEMORATIVE: '站點紀念類勳章' + }, + PASSHELP: { + SYS: '系統自動頒發', + ADMIN: '管理員頒發', + SELF: '用戶自助申請' + }, + DESC: { + ROOT: '系統管理員勳章', + NETWORK_ADMIN: '網站管理員勳章', + SUPPORT_ADMIN: '客戶服務管理員勳章', + FORUM_ADMIN: '論壇管理員勳章', + RESOURCE_ADMIN: '資源管理員勳章', + AMBASSADOR: '網站外交大使勳章', + FORUM_MODERATORS: '論壇版主勳章', + MAKER_FOUNDER: '資源發布組組長勳章', + UPLOADER: '資源發布專員勳章', + RETIREE: '網站退休工作人員勳章', + + BEAUTY_3000: '佳麗三千后宮勳章', + ROAM: '雲遊四方保號勳章', + NO_EXAMINATION: '網站免考用戶勳章', + SLUGGER: '網站種子用戶勳章', + ELDER: '網站元老用戶勳章', + + FOREVER_VIP: '終身 VIP 勳章', + YEARLY_VIP: '年度 VIP 勳章', + MONTHLY_VIP: '月度 VIP 勳章', + GUEST_VIP: '來賓 VIP 勳章', + + SITE_BEGIN: '網站開張紀念勳章', + FOR_ONE_YEARS: '網站1週年紀念勳章', + FOR_TWO_YEARS: '網站2週年紀念勳章', + + EVENT_NAME: '特別活動勳章' + }, + FOOTERSTRING: { + ROOT: '站長', + NETWORK_ADMIN: '站長', + SUPPORT_ADMIN: '客服', + FORUM_ADMIN: '論壇', + RESOURCE_ADMIN: '資源', + AMBASSADOR: '使臣', + FORUM_MODERATORS: '版主', + MAKER_FOUNDER: '組長', + UPLOADER: '發布', + RETIREE: '退休', + + BEAUTY_3000: '佳麗', + ROAM: '雲遊', + NO_EXAMINATION: '免考', + SLUGGER: '種子', + ELDER: '元老', + + FOREVER_VIP: 'VIP', + YEARLY_VIP: 'VIP', + MONTHLY_VIP: 'VIP', + GUEST_VIP: 'VIP', + + SITE_BEGIN: '週年', + FOR_ONE_YEARS: '週年', + FOR_TWO_YEARS: '週年', + + EVENT_NAME: '2018' + }, + HEADERSTRING: { + FOREVER_VIP: '終', + YEARLY_VIP: '年', + MONTHLY_VIP: '月', + GUEST_VIP: '賓', + + SITE_BEGIN: '0', + FOR_ONE_YEARS: '1', + FOR_TWO_YEARS: '2', + + EVENT_NAME: '活動' + } + }, + // data center DATA_CENTER: { ITEM_SCORE: '積分數據分析', @@ -1518,6 +1636,7 @@ REQUEST_ACCEPT_TO: '您的響應被求種請求者接受 {{rid}}', SCORE_EXCHANGE_INVITATION: '兌換了一張邀請函', SCORETO_REMOVE_WARNING: '移除了一個 H&R 警告 {{tid}}', + SCORETO_REQUEST_MEDAL: '申請勳章: {{medalDesc | translate}}', ACTIVE_IDLE_ACCOUNT: '重新激活帳戶狀態', DAILY_CHECK_IN: '每日簽到', SEED_TIMED: '做種時間獲得的積分 {{tid}}', @@ -1531,7 +1650,7 @@ BAD_REQUEST: '請求錯誤', FORBIDDEN: '請求禁止', MADE_BAD_REQUEST: '您發起了一個無效的請求', - NOT_AUTHORIZED_THIS: '您無權訪問此資源', + NOT_AUTHORIZED_THIS: '您無權訪問此資源,如果您的 session 或 cookie 已過期,請 重新登錄。', NOT_FOUND: '無法訪問', PAGE_NOT_FOUND: '沒有找到頁面或資源', ACCESS_DENY: '您的當前IP被限制訪問此資源,如需幫助請給{{sNameDesc | translate}}傳送 訊息郵件.' @@ -1833,6 +1952,8 @@ ADMIN_PRESENT_USER_INVITATIONS: '`{{by.displayName}}` 贈送 `{{numbers}}` 個官方邀請函, 有效期 `{{days}}` 天', ADMIN_REMOVE_USER_HNR_WARNING: '`{{by.displayName}}` 移除 H&R 警告, complete id: `{{complete}}`', ADMIN_CREATE_USER_MAKER_GROUP: '`{{by.displayName}}` 創建用戶資源小組: `-={{name}}=-`', + ADMIN_ADD_USER_MEDAL: '`{{by.displayName}}` 添加用戶勳章: `{{medalName}}`', + ADMIN_REMOVE_USER_MEDAL: '`{{by.displayName}}` 移除用戶勳章: `{{medalName}}`', ADMIN_BAN_USER_INVITER: '`{{by.displayName}}` 改變帳戶狀態為: `{{status}}`, 理由: 邀請的用戶[{{uname}}]因為[{{reason | translate}}]被禁止' }, @@ -1875,7 +1996,9 @@ UPLOAD_ACCESS_DENY: '當前系統只接受資源製作小組上傳種子', READ_TORRENT_FILE_FAILD: '種子檔案解析錯誤,請檢查您的種子檔案,看是否缺少某些必要資訊', MOVE_TORRENT_FILE_ERROR: '種子檔案移動錯誤,請不要快速重複進行提交操作或者上傳的種子檔案已丟失', - YOU_ALREADY_CHECK_IN: '您今天已經完成簽到了,不能重復簽到喔!' + YOU_ALREADY_CHECK_IN: '您今天已經完成簽到了,不能重復簽到喔!', + USER_ALREADY_HAS_THIS_MEDAL: '該用戶已經擁有了這枚勳章', + USER_HAS_NOT_THIS_MEDAL: '該用戶還沒有這枚勳章' }, //server message string, content string support markdown and emoji diff --git a/modules/core/client/app/trans-string-zh.js b/modules/core/client/app/trans-string-zh.js index 34d3f991..1e800e6a 100644 --- a/modules/core/client/app/trans-string-zh.js +++ b/modules/core/client/app/trans-string-zh.js @@ -50,7 +50,9 @@ MENU_ADMIN_TICKETS: '客户服务中心', MENU_USERS_ADMIN: '用户管理', MENU_UPLOAD: '发布', + MENU_MEDALS: '勋章', MENU_FORUMS: '论坛', + MENU_MORE: '更多', MENU_REQUESTS: '求种', MENU_ABOUT: '关于', MENU_ABOUT_MANUAL: '用户手册', @@ -90,6 +92,7 @@ MENU_MY_INVITE: '我的邀请', MENU_MY_DATA_CENTER: '数据中心', MENU_ACCOUNT_STATUS: '帐户状态', + MENU_TORRENTS_STATUS: '种子状态', EDIT_PROFILE: '修改个人信息', EDIT_PROFILE_PIC: '修改个人头像', EDIT_SIGNATURE: '修改论坛签名', @@ -250,6 +253,7 @@ VIP: 'Vip', VIP_DONATE: '捐赠VIP', VIP_RULES: 'Vip用户协议', + MEDALS: '勋章墙', FORUM: '论坛', REQUESTS: '求种', REQUESTS_MY: '我的求种', @@ -278,6 +282,7 @@ MESSAGES_BOX: '站内消息', MESSAGES_SEND: '发送消息', STATUS_ACCOUNT: '帐户状态', + STATUS_TORRENTS: '种子状态', STATUS_UPLOADED: '我的种子', STATUS_SEEDING: '正在做种', STATUS_LEECHING: '正在下载', @@ -876,6 +881,7 @@ BUTTON_SELECT_PICTURE: '选择图片', BUTTON_USE_THIS_PICTURE: '应用图片', BUTTON_CANCEL: '取消', + BUTTON_CLOSE: '关闭', BUTTON_SAVE: '保存', BUTTON_SET: '设置', BUTTON_OK: '确定', @@ -975,7 +981,7 @@ }, //user status - STATUS_ACCOUNT: '帐户状态', + STATUS_ACCOUNT: '我的帐户状态', STATUS_UPLOADED: '我上传的种子', STATUS_SEEDING: '正在做种的种子', STATUS_DOWNLOADING: '正在下载的种子', @@ -1004,6 +1010,7 @@ BTN_VIEW_USER_DATA_CENTER: '数据中心', BTN_EDIT: '编辑', BTN_REMOVE: '删除', + BTN_ADD_MEDAL: '颁发勋章', PICTURE: '头像', RESET_DEFAULT_PICTURE: '重置为默认图片', ADD_VIP_MONTHS: '+ VIP一个月', @@ -1227,6 +1234,8 @@ USER_UPLOADED_FLAG: '{{name}} 的上传量', USER_DOWNLOADED_FLAG: '{{name}} 的下载量', USER_SCORE_LEVEL: '{{name}} 的积分等级', + USER_RATIO_FLAG: '{{name}} 的分享率', + USER_MEDAL_FLAG: '{{name}} 的勋章总数', //traces ADMIN_TRACES_LIST: '系统日志', @@ -1472,6 +1481,115 @@ } }, + // medals wall + MEDALS: { + MEDALS_TITLE: '勋章墙', + TYPES_COUNT: '勋章类型', + MEDALS_OPENED_COUNT: '勋章开放数', + MEDALS_AWARD_COUNT: '勋章颁发数', + SELECT_MEDAL_TO_USER: '请选择要颁发的勋章 - {{uname}}', + ADD_SUCCESSFULLY: '给用户添加勋章成功', + ADD_FAILED: '给用户添加勋章失败', + REMOVE_SUCCESSFULLY: '移除用户勋章成功', + REMOVE_FAILED: '移除用户勋章失败', + MEDALS_OVERVIEW: '勋章是用户身份及为站点所做的贡献的标识,勋章颁发分为系统自动颁发、管理员帮助颁发与用户自助颁发三种,自助颁发的勋章需要用户自已根据相应的条件自助申领。不同的勋章对应有不同的系统待遇,站点也会不定期的针对不同的勋章群体用户举办丰富多样的活动,敬请大家期待。', + CMD_LIST_USER: '查看用户', + CMD_REQUEST: '申请勋章', + HELP_CONDITION: '申请条件', + OWNED_USERS: '拥有用户', + USERS_IS_LOADING: '正在装载用户列表,请稍候...', + USERS_IS_EMPTY: '还没有任何用户拥有此勋章', + REQUEST_CONFIRM_CANCEL: '取消', + REQUEST_CONFIRM_OK: '确定', + REQUEST_CONFIRM_HEADER_TEXT: '申请勋章', + REQUEST_CONFIRM_BODY_TEXT: '您确定要使用 {{score}} 积分来申请这枚勋章吗?', + REQUEST_SUCCESSFULLY: '勋章申请成功', + REQUEST_ERROR: '勋章申请失败', + AWARD_AT: '授于', + CATS: { + WORKERS: '工作人员类勋章', + USERS: '用户类勋章', + VIP: 'VIP 类勋章', + EVENTS: '特别事件类勋章', + COMMEMORATIVE: '站点纪念类勋章' + }, + PASSHELP: { + SYS: '系统自动颁发', + ADMIN: '管理员颁发', + SELF: '用户自助申请' + }, + DESC: { + ROOT: '系统管理员勋章', + NETWORK_ADMIN: '网站管理员勋章', + SUPPORT_ADMIN: '客户服务管理员勋章', + FORUM_ADMIN: '论坛管理员勋章', + RESOURCE_ADMIN: '资源管理员勋章', + AMBASSADOR: '网站外交大使勋章', + FORUM_MODERATORS: '论坛版主勋章', + MAKER_FOUNDER: '资源发布组组长勋章', + UPLOADER: '资源发布专员勋章', + RETIREE: '网站退休工作人员勋章', + + BEAUTY_3000: '佳丽三千后宫勋章', + ROAM: '云游四方保号勋章', + NO_EXAMINATION: '网站免考用户勋章', + SLUGGER: '网站种子用户勋章', + ELDER: '网站元老用户勋章', + + FOREVER_VIP: '终身 VIP 勋章', + YEARLY_VIP: '年度 VIP 勋章', + MONTHLY_VIP: '月度 VIP 勋章', + GUEST_VIP: '来宾 VIP 勋章', + + SITE_BEGIN: '网站开张纪念勋章', + FOR_ONE_YEARS: '网站1周年纪念勋章', + FOR_TWO_YEARS: '网站2周年纪念勋章', + + EVENT_NAME: '特别活动勋章' + }, + FOOTERSTRING: { + ROOT: '站长', + NETWORK_ADMIN: '站长', + SUPPORT_ADMIN: '客服', + FORUM_ADMIN: '论坛', + RESOURCE_ADMIN: '资源', + AMBASSADOR: '使臣', + FORUM_MODERATORS: '版主', + MAKER_FOUNDER: '组长', + UPLOADER: '发布', + RETIREE: '退休', + + BEAUTY_3000: '佳丽', + ROAM: '云游', + NO_EXAMINATION: '免考', + SLUGGER: '种子', + ELDER: '元老', + + FOREVER_VIP: 'VIP', + YEARLY_VIP: 'VIP', + MONTHLY_VIP: 'VIP', + GUEST_VIP: 'VIP', + + SITE_BEGIN: '周年', + FOR_ONE_YEARS: '周年', + FOR_TWO_YEARS: '周年', + + EVENT_NAME: '2018' + }, + HEADERSTRING: { + FOREVER_VIP: '终', + YEARLY_VIP: '年', + MONTHLY_VIP: '月', + GUEST_VIP: '宾', + + SITE_BEGIN: '0', + FOR_ONE_YEARS: '1', + FOR_TWO_YEARS: '2', + + EVENT_NAME: '活动' + } + }, + // data center DATA_CENTER: { ITEM_SCORE: '积分数据分析', @@ -1518,6 +1636,7 @@ REQUEST_ACCEPT_TO: '您的响应被求种请求者接受 {{rid}}', SCORE_EXCHANGE_INVITATION: '兑换了一张邀请函', SCORETO_REMOVE_WARNING: '移除了一个 H&R 警告 {{tid}}', + SCORETO_REQUEST_MEDAL: '申请勋章: {{medalDesc | translate}}', ACTIVE_IDLE_ACCOUNT: '重新激活帐户状态', DAILY_CHECK_IN: '每日签到', SEED_TIMED: '做种时间获得的积分 {{tid}}', @@ -1531,7 +1650,7 @@ BAD_REQUEST: '请求错误', FORBIDDEN: '请求禁止', MADE_BAD_REQUEST: '您发起了一个无效的请求', - NOT_AUTHORIZED_THIS: '您无权访问此资源', + NOT_AUTHORIZED_THIS: '您无权访问此资源,如果您的 session 或 cookie 已过期,请 重新登录。', NOT_FOUND: '无法访问', PAGE_NOT_FOUND: '没有找到页面或资源', ACCESS_DENY: '您的当前IP被限制访问此资源,如需帮助请给{{sNameDesc | translate}}发送 消息邮件.' @@ -1833,6 +1952,8 @@ ADMIN_PRESENT_USER_INVITATIONS: '`{{by.displayName}}` 赠送 `{{numbers}}` 个官方邀请函, 有效期 `{{days}}` 天', ADMIN_REMOVE_USER_HNR_WARNING: '`{{by.displayName}}` 移除 H&R 警告, complete id: `{{complete}}`', ADMIN_CREATE_USER_MAKER_GROUP: '`{{by.displayName}}` 创建用户资源小组: `-={{name}}=-`', + ADMIN_ADD_USER_MEDAL: '`{{by.displayName}}` 添加用户勋章: `{{medalName}}`', + ADMIN_REMOVE_USER_MEDAL: '`{{by.displayName}}` 移除用户勋章: `{{medalName}}`', ADMIN_BAN_USER_INVITER: '`{{by.displayName}}` 改变帐户状态为: `{{status}}`, 理由: 邀请的用户[{{uname}}]因为[{{reason | translate}}]被禁止' }, @@ -1875,7 +1996,9 @@ UPLOAD_ACCESS_DENY: '当前系统只接受资源制作小组上传种子', READ_TORRENT_FILE_FAILD: '种子文件解析错误,请检查您的种子文件,看是否缺少某些必要信息', MOVE_TORRENT_FILE_ERROR: '种子文件移动错误,请不要快速重复进行提交操作或者上传的种子文件已丢失', - YOU_ALREADY_CHECK_IN: '您今天已经签过到了,不能重复签到' + YOU_ALREADY_CHECK_IN: '您今天已经签过到了,不能重复签到', + USER_ALREADY_HAS_THIS_MEDAL: '该用户已经拥有了这枚勋章', + USER_HAS_NOT_THIS_MEDAL: '该用户还没有这枚勋章' }, //server message string, content string support markdown and emoji diff --git a/modules/core/client/config/core-admin.client.menus.js b/modules/core/client/config/core-admin.client.menus.js index b59632cd..fa442f11 100644 --- a/modules/core/client/config/core-admin.client.menus.js +++ b/modules/core/client/config/core-admin.client.menus.js @@ -13,7 +13,8 @@ state: 'admin', type: 'dropdown', roles: ['oper', 'admin'], - position: 10, + class: 'menu-left', + position: 20, shouldDotClass: 'header-dot-class-admin' }); } diff --git a/modules/core/client/config/core.client.menus.js b/modules/core/client/config/core.client.menus.js index 6d054d13..f93f99f2 100644 --- a/modules/core/client/config/core.client.menus.js +++ b/modules/core/client/config/core.client.menus.js @@ -8,6 +8,15 @@ menuConfig.$inject = ['menuService']; function menuConfig(menuService) { + menuService.addMenuItem('topbar', { + title: 'MENU_MORE', + state: 'more', + type: 'dropdown', + roles: ['*'], + class: 'sm-show', + position: 15 + }); + menuService.addMenu('account', { roles: ['user'] }); @@ -26,32 +35,32 @@ faClass: 'text-mt' }); - menuService.addSubMenuItem('account', 'settings', { - title: 'EDIT_PROFILE_PIC', - state: 'settings.picture', - faIcon: 'fa-image', - faClass: 'text-mt' - }); - - menuService.addSubMenuItem('account', 'settings', { - title: 'EDIT_SIGNATURE', - state: 'settings.signature', - faIcon: 'fa-sign', - faClass: 'text-mt' - }); - - menuService.addSubMenuItem('account', 'settings', { - title: 'CHANGE_PASSWORD', - state: 'settings.password', - faIcon: 'fa-lock', - faClass: 'text-mt' - }); - - menuService.addSubMenuItem('account', 'settings', { - title: 'RESET_PASSKEY', - state: 'settings.passkey', - faIcon: 'fa-key', - faClass: 'text-mt' - }); + // menuService.addSubMenuItem('account', 'settings', { + // title: 'EDIT_PROFILE_PIC', + // state: 'settings.picture', + // faIcon: 'fa-image', + // faClass: 'text-mt' + // }); + // + // menuService.addSubMenuItem('account', 'settings', { + // title: 'EDIT_SIGNATURE', + // state: 'settings.signature', + // faIcon: 'fa-sign', + // faClass: 'text-mt' + // }); + // + // menuService.addSubMenuItem('account', 'settings', { + // title: 'CHANGE_PASSWORD', + // state: 'settings.password', + // faIcon: 'fa-lock', + // faClass: 'text-mt' + // }); + // + // menuService.addSubMenuItem('account', 'settings', { + // title: 'RESET_PASSKEY', + // state: 'settings.passkey', + // faIcon: 'fa-key', + // faClass: 'text-mt' + // }); } }()); diff --git a/modules/core/client/controllers/header.client.controller.js b/modules/core/client/controllers/header.client.controller.js index a7174b79..9f45eae6 100644 --- a/modules/core/client/controllers/header.client.controller.js +++ b/modules/core/client/controllers/header.client.controller.js @@ -124,23 +124,23 @@ /** * $scope.$watch($('#nav-top-menu').width()) */ - $scope.$watch(function () { - return $('#nav-top-menu').width(); - }, function (newVal, oldVal) { - if (newVal) { - if (window.outerWidth > 767 && window.outerWidth < 992) { //sm screen - if (newVal > 540) { - $('a[ui-sref="chat"]').css('display', 'none'); - } - } else if (window.outerWidth > 991 && window.outerWidth < 1200) { //md screen - if (newVal > 580) { - $('a[ui-sref="chat"]').css('display', 'none'); - } - } else { - $('a[ui-sref="chat"]').css('display', 'block'); - } - } - }); + // $scope.$watch(function () { + // return $('#nav-top-menu').width(); + // }, function (newVal, oldVal) { + // if (newVal) { + // if (window.outerWidth > 767 && window.outerWidth < 992) { //sm screen + // if (newVal > 540) { + // $('a[ui-sref="chat"]').css('display', 'none'); + // } + // } else if (window.outerWidth > 991 && window.outerWidth < 1200) { //md screen + // if (newVal > 580) { + // $('a[ui-sref="chat"]').css('display', 'none'); + // } + // } else { + // $('a[ui-sref="chat"]').css('display', 'block'); + // } + // } + // }); /** * auth-user-changed diff --git a/modules/core/client/directives/up-to-top.client.directive.js b/modules/core/client/directives/up-to-top.client.directive.js index 1ea945c5..19f2c3b7 100644 --- a/modules/core/client/directives/up-to-top.client.directive.js +++ b/modules/core/client/directives/up-to-top.client.directive.js @@ -24,6 +24,7 @@ element.css('bottom', '20px'); element.css('width', '36px'); element.css('height', '36px'); + element.css('z-index', 1); element.css('border-radius', '50%'); element.css('backgroundColor', 'rgba(255, 255, 255, 0.8)'); diff --git a/modules/core/client/less/home.less b/modules/core/client/less/home.less index 5753c9dc..cdb0588a 100644 --- a/modules/core/client/less/home.less +++ b/modules/core/client/less/home.less @@ -15,23 +15,6 @@ } } -.header-dot-class-admin { - display: none; - position: absolute; - width: 10px; - height: 10px; - top: 12px; - right: 25px; - border-radius: 50%; - border: solid 1px #fff; - &.new-torrent { - background-color: @brand-info; - } - &.opened-tickets { - background-color: @brand-danger !important; - } -} - .badge-class-admin-torrents { display: none; } diff --git a/modules/core/client/less/margin.less b/modules/core/client/less/margin.less index 1b429c41..75ce998a 100644 --- a/modules/core/client/less/margin.less +++ b/modules/core/client/less/margin.less @@ -3,98 +3,122 @@ /** margin-top */ -.margin-top-2 { margin-top: 2px; } -.margin-top-5 { margin-top: 5px; } -.margin-top-10 { margin-top: 10px; } -.margin-top-15 { margin-top: 15px; } -.margin-top-20 { margin-top: 20px; } -.margin-top-30 { margin-top: 30px; } -.margin-top-40 { margin-top: 40px; } -.margin-top-50 { margin-top: 50px; } -.margin-top-100 { margin-top: 100px; } +.margin-top-2 { margin-top: 2px !important; } +.margin-top-5 { margin-top: 5px !important; } +.margin-top-10 { margin-top: 10px !important; } +.margin-top-15 { margin-top: 15px !important; } +.margin-top-20 { margin-top: 20px !important; } +.margin-top-30 { margin-top: 30px !important; } +.margin-top-40 { margin-top: 40px !important; } +.margin-top-50 { margin-top: 50px !important; } +.margin-top-100 { margin-top: 100px !important; } /** margin-bottom */ -.margin-bottom-5 { margin-bottom: 5px; } -.margin-bottom-10 { margin-bottom: 10px; } -.margin-bottom-15 { margin-bottom: 15px; } -.margin-bottom-20 { margin-bottom: 20px; } -.margin-bottom-30 { margin-bottom: 30px; } -.margin-bottom-40 { margin-bottom: 40px; } -.margin-bottom-50 { margin-bottom: 50px; } +.margin-bottom-5 { margin-bottom: 5px !important; } +.margin-bottom-10 { margin-bottom: 10px !important; } +.margin-bottom-15 { margin-bottom: 15px !important; } +.margin-bottom-20 { margin-bottom: 20px !important; } +.margin-bottom-30 { margin-bottom: 30px !important; } +.margin-bottom-40 { margin-bottom: 40px !important; } +.margin-bottom-50 { margin-bottom: 50px !important; } /** margin-right */ -.margin-right-10 { margin-right: 10px; } -.margin-right-20 { margin-right: 20px; } -.margin-right-30 { margin-right: 30px; } -.margin-right-40 { margin-right: 40px; } -.margin-right-50 { margin-right: 50px; } +.margin-right-10 { margin-right: 10px !important; } +.margin-right-20 { margin-right: 20px !important; } +.margin-right-30 { margin-right: 30px !important; } +.margin-right-40 { margin-right: 40px !important; } +.margin-right-50 { margin-right: 50px !important; } /** margin-left */ -.margin-left-10 { margin-left: 10px; } -.margin-left-20 { margin-left: 20px; } -.margin-left-30 { margin-left: 30px; } -.margin-left-40 { margin-left: 40px; } -.margin-left-50 { margin-left: 50px; } -.margin-left-80 { margin-left: 80px; } -.margin-left-100 { margin-left: 100px; } +.margin-left-10 { margin-left: 10px !important; } +.margin-left-20 { margin-left: 20px !important; } +.margin-left-30 { margin-left: 30px !important; } +.margin-left-40 { margin-left: 40px !important; } +.margin-left-50 { margin-left: 50px !important; } +.margin-left-80 { margin-left: 80px !important; } +.margin-left-100 { margin-left: 100px !important; } -.margin-left-m-20 { margin-left: -20px; } +.margin-left-m-20 { margin-left: -20px !important; } + +/** + padding-left + */ +.padding-left-5 { padding-left: 5px !important; } +.padding-left-10 { padding-left: 10px !important; } +.padding-left-15 { padding-left: 15px !important; } +.padding-left-20 { padding-left: 20px !important; } +.padding-left-30 { padding-left: 30px !important; } +.padding-left-40 { padding-left: 40px !important; } +.padding-left-50 { padding-left: 50px !important; } +.padding-left-100 { padding-left: 100px !important; } + +/** + padding-right + */ +.padding-right-5 { padding-right: 5px !important; } +.padding-right-10 { padding-right: 10px !important; } +.padding-right-15 { padding-right: 15px !important; } +.padding-right-20 { padding-right: 20px !important; } +.padding-right-30 { padding-right: 30px !important; } +.padding-right-40 { padding-right: 40px !important; } +.padding-right-50 { padding-right: 50px !important; } +.padding-right-100 { padding-right: 100px !important; } /** padding-top */ -.padding-top-5 { padding-top: 5px; } -.padding-top-10 { padding-top: 10px; } -.padding-top-15 { padding-top: 15px; } -.padding-top-20 { padding-top: 20px; } -.padding-top-30 { padding-top: 30px; } -.padding-top-40 { padding-top: 40px; } -.padding-top-50 { padding-top: 50px; } -.padding-top-100 { padding-top: 100px; } +.padding-top-5 { padding-top: 5px !important; } +.padding-top-10 { padding-top: 10px !important; } +.padding-top-15 { padding-top: 15px !important; } +.padding-top-20 { padding-top: 20px !important; } +.padding-top-30 { padding-top: 30px !important; } +.padding-top-40 { padding-top: 40px !important; } +.padding-top-50 { padding-top: 50px !important; } +.padding-top-100 { padding-top: 100px !important; } /** padding-bottom */ -.padding-bottom-5 { padding-bottom: 5px; } -.padding-bottom-10 { padding-bottom: 10px; } -.padding-bottom-15 { padding-bottom: 15px; } -.padding-bottom-20 { padding-bottom: 20px; } -.padding-bottom-30 { padding-bottom: 30px; } -.padding-bottom-40 { padding-bottom: 40px; } -.padding-bottom-50 { padding-bottom: 50px; } +.padding-bottom-5 { padding-bottom: 5px !important; } +.padding-bottom-10 { padding-bottom: 10px !important; } +.padding-bottom-15 { padding-bottom: 15px !important; } +.padding-bottom-20 { padding-bottom: 20px !important; } +.padding-bottom-30 { padding-bottom: 30px !important; } +.padding-bottom-40 { padding-bottom: 40px !important; } +.padding-bottom-50 { padding-bottom: 50px !important; } @media (min-width: @screen-xxs-min) { - .margin-xxs-bottom-0 { margin-bottom: 0; } - .margin-xxs-bottom-10 { margin-bottom: 10px; } - .margin-xxs-bottom-20 { margin-bottom: 20px; } + .margin-xxs-bottom-0 { margin-bottom: 0 !important; } + .margin-xxs-bottom-10 { margin-bottom: 10px !important; } + .margin-xxs-bottom-20 { margin-bottom: 20px !important; } } @media (min-width: @screen-xs-min) { - .margin-xs-bottom-0 { margin-bottom: 0; } - .margin-xs-bottom-10 { margin-bottom: 10px; } - .margin-xs-bottom-20 { margin-bottom: 20px; } + .margin-xs-bottom-0 { margin-bottom: 0 !important; } + .margin-xs-bottom-10 { margin-bottom: 10px !important; } + .margin-xs-bottom-20 { margin-bottom: 20px !important; } } @media (min-width: @screen-sm-min) { - .margin-sm-bottom-0 { margin-bottom: 0; } - .margin-sm-bottom-10 { margin-bottom: 10px; } - .margin-sm-bottom-20 { margin-bottom: 20px; } + .margin-sm-bottom-0 { margin-bottom: 0 !important; } + .margin-sm-bottom-10 { margin-bottom: 10px !important; } + .margin-sm-bottom-20 { margin-bottom: 20px !important; } } @media (min-width: @screen-md-min) { - .margin-md-bottom-0 { margin-bottom: 0; } - .margin-md-bottom-10 { margin-bottom: 10px; } - .margin-md-bottom-20 { margin-bottom: 20px; } + .margin-md-bottom-0 { margin-bottom: 0 !important; } + .margin-md-bottom-10 { margin-bottom: 10px !important; } + .margin-md-bottom-20 { margin-bottom: 20px !important; } } @media (min-width: @screen-lg-min) { - .margin-lg-bottom-0 { margin-bottom: 0; } - .margin-lg-bottom-10 { margin-bottom: 10px; } - .margin-lg-bottom-20 { margin-bottom: 20px; } + .margin-lg-bottom-0 { margin-bottom: 0 !important; } + .margin-lg-bottom-10 { margin-bottom: 10px !important; } + .margin-lg-bottom-20 { margin-bottom: 20px !important; } } diff --git a/modules/core/client/less/media-hide.less b/modules/core/client/less/media-hide.less index 7cfcba51..d85ef3c9 100644 --- a/modules/core/client/less/media-hide.less +++ b/modules/core/client/less/media-hide.less @@ -25,7 +25,7 @@ } .xxs-show .xs-show, .sm-show, .md-show, .lg-show { - display: none; + display: none !important; } @media (max-width: @screen-xs) { diff --git a/modules/core/client/less/mt-size.less b/modules/core/client/less/mt-size.less index 5433589b..8332d038 100644 --- a/modules/core/client/less/mt-size.less +++ b/modules/core/client/less/mt-size.less @@ -1,21 +1,22 @@ @import (reference) "mt-var.less"; -.width-50, .min-width-50, .btn-width-50 { min-width: 50px !important; } -.width-60, .min-width-60, .btn-width-60 { min-width: 60px !important; } -.width-70, .min-width-70, .btn-width-70 { min-width: 70px !important; } -.width-80, .min-width-80, .btn-width-80 { min-width: 80px !important; } -.width-90, .min-width-90, .btn-width-90 { min-width: 90px !important; } -.width-100, .min-width-100, .btn-width-100 { min-width: 100px !important; } -.width-120, .min-width-120, .btn-width-120 { min-width: 120px !important; } -.width-140, .min-width-140, .btn-width-140 { min-width: 140px !important; } -.width-150, .min-width-150, .btn-width-150 { min-width: 150px !important; } -.width-160, .min-width-160, .btn-width-160 { min-width: 160px !important; } -.width-170, .min-width-170, .btn-width-170 { min-width: 170px !important; } -.width-180, .min-width-180, .btn-width-180 { min-width: 180px !important; } -.width-200, .min-width-200, .btn-width-200 { min-width: 200px !important; } -.width-300, .min-width-300 { min-width: 300px !important; } -.width-400, .min-width-400 { min-width: 400px !important; } -.width-500, .min-width-500 { min-width: 500px !important; } +.width-50, .min-width-50, .btn-min-width-50 { min-width: 50px !important; } +.width-60, .min-width-60, .btn-min-width-60 { min-width: 60px !important; } +.width-70, .min-width-70, .btn-min-width-70 { min-width: 70px !important; } +.width-80, .min-width-80, .btn-min-width-80 { min-width: 80px !important; } +.width-90, .min-width-90, .btn-min-width-90 { min-width: 90px !important; } +.width-100, .min-width-100, .btn-min-width-100 { min-width: 100px !important; } +.width-120, .min-width-120, .btn-min-width-120 { min-width: 120px !important; } +.width-140, .min-width-140, .btn-min-width-140 { min-width: 140px !important; } +.width-150, .min-width-150, .btn-min-width-150 { min-width: 150px !important; } +.width-160, .min-width-160, .btn-min-width-160 { min-width: 160px !important; } +.width-170, .min-width-170, .btn-min-width-170 { min-width: 170px !important; } +.width-180, .min-width-180, .btn-min-width-180 { min-width: 180px !important; } +.width-190, .min-width-190, .btn-min-width-190 { min-width: 190px !important; } +.width-200, .min-width-200, .btn-min-width-200 { min-width: 200px !important; } +.width-300, .min-width-300 { min-width: 300px !important; } +.width-400, .min-width-400 { min-width: 400px !important; } +.width-500, .min-width-500 { min-width: 500px !important; } .max-width-10 { max-width: 10px !important; } .max-width-20 { max-width: 20px !important; } @@ -36,6 +37,24 @@ .max-width-400 { max-width: 400px !important; } .max-width-500 { max-width: 500px !important; } +.width-50 { width: 50px !important; } +.width-60 { width: 60px !important; } +.width-70 { width: 70px !important; } +.width-80 { width: 80px !important; } +.width-90 { width: 90px !important; } +.width-100 { width: 100px !important; } +.width-120 { width: 120px !important; } +.width-140 { width: 140px !important; } +.width-150 { width: 150px !important; } +.width-160 { width: 160px !important; } +.width-170 { width: 170px !important; } +.width-180 { width: 180px !important; } +.width-190 { width: 190px !important; } +.width-200 { width: 200px !important; } +.width-300 { width: 300px !important; } +.width-400 { width: 400px !important; } +.width-500 { width: 500px !important; } + @media (min-width: @screen-xxs-min) { .min-xss-width-10 { min-width: 10px !important; } .min-xss-width-20 { min-width: 20px !important; } diff --git a/modules/core/client/less/mt.less b/modules/core/client/less/mt.less index 4cf025fd..919ccc0b 100644 --- a/modules/core/client/less/mt.less +++ b/modules/core/client/less/mt.less @@ -50,22 +50,11 @@ body { cursor: pointer; font-size: 12px; color: @mt-base-color; - text-shadow: 0 0 1px #000,-0 -0 1px #000; - box-shadow: 0 0 5px rgba(0, 0, 0, 0.9); - border-radius: 4px; - background-color: transparent; - margin-top: 16px; - padding: 2px 5px; + margin: 0 5px; white-space: nowrap; overflow: hidden; box-sizing: border-box; - @media (min-width: @screen-md) and (max-width: @screen-md-max) { - width: 120px; - } - @media (min-width: @screen-lg) { - width: 180px; - } - + max-width: 180px; span { display: inline-block; padding-left: 100%; /* show the marquee just outside the paragraph */ @@ -87,23 +76,6 @@ body { } } -.header-red-dot { - position: absolute; - width: 10px; - height: 10px; - top: 12px; - left: 35px; - border-radius: 50%; - border: solid 1px #fff; - - &.bg-msg { - background-color: @btn-info-bg !important; - } - &.bg-hnr { - background-color: @btn-danger-bg; - } -} - .user-header-dropdown-toggle { .img { position: relative; @@ -449,25 +421,6 @@ body { } } -.score-level { - cursor: pointer; - color: #FF6600; - > kbd { - font-size: 12px; - background-color: #FF6600; - } -} - -.score-level-default { - cursor: pointer; - color: #333 !important; - > kbd { - font-size: 12px; - color: #333 !important; - background-color: #eee !important; - } -} - .menu-score { position: absolute; right: 10px; @@ -521,7 +474,7 @@ body { color: @brand-success; background-color: @alert-success-bg; font-size: 12px; - border: solid 1px @brand-success; + border: solid 1px @brand-success; border-radius: 3px; } } @@ -1457,12 +1410,24 @@ body { > a { padding-left: 10px; padding-right: 10px; + .header-red-dot { + left: 30px; + } + .header-dot-class-admin { + right: 16px; + } } } @media (min-width: @screen-md) and (max-width: @screen-md-max) { > a { padding-left: 12px; padding-right: 12px; + .header-red-dot { + left: 32px; + } + .header-dot-class-admin { + right: 18px; + } } } } @@ -1475,6 +1440,48 @@ body { } } } + .menu-left { + .dropdown-menu { + @media (min-width: @screen-sm) and (max-width: @screen-sm-max) { + right: 0; + left: auto; + } + } + } +} + +.header-dot-class-admin { + display: none; + position: absolute; + width: 10px; + height: 10px; + top: 12px; + right: 21px; + border-radius: 50%; + border: solid 1px #fff; + &.new-torrent { + background-color: @brand-info; + } + &.opened-tickets { + background-color: @brand-danger !important; + } +} + +.header-red-dot { + position: absolute; + width: 10px; + height: 10px; + top: 12px; + left: 35px; + border-radius: 50%; + border: solid 1px #fff; + + &.bg-msg { + background-color: @btn-info-bg !important; + } + &.bg-hnr { + background-color: @btn-danger-bg; + } } .torrent-info-tabs { @@ -1821,13 +1828,6 @@ body { color: @mt-base-color; } -.admin-user-info { - hr { - margin-bottom: 15px; - margin-top: 5px; - } -} - .lang-list { margin-top: 5px; padding-left: 5px; @@ -1934,15 +1934,6 @@ body { color: @mt-base-color; } -.curr-score { - color: @mt-base-color; - font-size: 48px; -} - -.score-progress { - margin-bottom: 2px; -} - .mt-title { font-size: 18px; } diff --git a/modules/core/client/services/data-middle.client.service.js b/modules/core/client/services/data-middle.client.service.js new file mode 100644 index 00000000..9ac558c0 --- /dev/null +++ b/modules/core/client/services/data-middle.client.service.js @@ -0,0 +1,26 @@ +(function () { + 'use strict'; + + angular + .module('core') + .factory('MiddleDataServices', MiddleDataServices); + + function MiddleDataServices() { + var middleData = []; + + var service = { + setData: setData, + getData: getData + }; + + return service; + + function setData(dataName, data) { + middleData[dataName] = data; + } + + function getData(dataName) { + return middleData[dataName]; + } + } +}()); diff --git a/modules/core/client/services/safeColors.client.service.js b/modules/core/client/services/safeColors.client.service.js new file mode 100644 index 00000000..290f5b5c --- /dev/null +++ b/modules/core/client/services/safeColors.client.service.js @@ -0,0 +1,58 @@ +(function () { + 'use strict'; + + // Authentication service for user variables + + angular + .module('core') + .factory('SafeColorsServices', SafeColorsServices); + + function SafeColorsServices() { + var colors = [ + '#000000', '#000033', '#000066', '#000099', '#0000CC', '#0000FF', + '#003300', '#003333', '#003366', '#003399', '#0033CC', '#0033FF', + '#006600', '#006633', '#006666', '#006699', '#0066CC', '#0066FF', + '#009900', '#009933', '#009966', '#009999', '#0099CC', '#0099FF', + + '#330000', '#330033', '#330066', '#330099', '#3300CC', '#3300FF', + '#333300', '#333333', '#333366', '#333399', '#3333CC', '#3333FF', + '#336600', '#336633', '#336666', '#336699', '#3366CC', '#3366FF', + '#339900', '#339933', '#339966', '#339999', '#3399CC', '#3399FF', + + '#660000', '#660033', '#660066', '#660099', '#6600CC', '#6600FF', + '#663300', '#663333', '#663366', '#663399', '#6633CC', '#6633FF', + '#666600', '#666633', '#666666', '#666699', '#6666CC', '#6666FF', + '#669900', '#669933', '#669966', '#669999', '#6699CC', '#6699FF', + + '#990000', '#990033', '#990066', '#990099', '#9900CC', '#9900FF', + '#993300', '#993333', '#993366', '#993399', '#9933CC', '#9933FF', + '#996600', '#996633', '#996666', '#996699', '#9966CC', '#9966FF', + '#999900', '#999933', '#999966', '#999999', '#9999CC', '#9999FF', + + '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', + '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', + '#CC6600', '#CC6633', '#CC6666', '#CC6699', '#CC66CC', '#CC66FF', + '#CC9900', '#CC9933', '#CC9966', '#CC9999', '#CC99CC', '#CC99FF', + + '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', + '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', + '#FF6600', '#FF6633', '#FF6666', '#FF6699', '#FF66CC', '#FF66FF', + '#FF9900', '#FF9933', '#FF9966', '#FF9999', '#FF99CC', '#FF99FF' + ]; + + var service = { + getSafeColor: getSafeColor + }; + + return service; + + + /** + * getSafeColor + * @returns {*} + */ + function getSafeColor() { + return colors[Math.floor((Math.random() * 144) + 1)]; + } + } +}()); diff --git a/modules/core/client/views/footer.client.view.html b/modules/core/client/views/footer.client.view.html index 72719495..28539adf 100644 --- a/modules/core/client/views/footer.client.view.html +++ b/modules/core/client/views/footer.client.view.html @@ -61,7 +61,7 @@

- +
diff --git a/modules/core/client/views/header.client.view.html b/modules/core/client/views/header.client.view.html index 6452ad99..0f647701 100644 --- a/modules/core/client/views/header.client.view.html +++ b/modules/core/client/views/header.client.view.html @@ -18,7 +18,7 @@ {{::item.title}} -   +
- +
diff --git a/modules/core/client/views/home.client.view.html b/modules/core/client/views/home.client.view.html index 6f7c735d..1cafb4b0 100644 --- a/modules/core/client/views/home.client.view.html +++ b/modules/core/client/views/home.client.view.html @@ -61,7 +61,7 @@ ng-keydown="vm.onSearchKeyDown($event);" aria-label="search" placeholder="Search"> - '); + var cbtn = angular.element(''); cbtn.bind('click', function (evt) { e.setContent(t.content); e.$options.hideable = true; @@ -372,10 +372,10 @@ var ele = $('#' + e.$editor.attr('id') + ' .md-footer'); angular.element(ele).addClass('text-right'); - angular.element(ele[0].childNodes[0]).addClass('btn-width-80'); + angular.element(ele[0].childNodes[0]).addClass('btn-min-width-80'); ele[0].childNodes[0].innerText = $translate.instant('FORUMS.BTN_SAVE'); - var cbtn = angular.element(''); + var cbtn = angular.element(''); cbtn.bind('click', function (evt) { e.setContent(r.content); e.$options.hideable = true; diff --git a/modules/forums/client/views/admin/configure.client.view.html b/modules/forums/client/views/admin/configure.client.view.html index 362c6c61..110129a5 100644 --- a/modules/forums/client/views/admin/configure.client.view.html +++ b/modules/forums/client/views/admin/configure.client.view.html @@ -1,7 +1,7 @@
- +
@@ -112,17 +112,17 @@
- - -
-
diff --git a/modules/forums/client/views/post.client.view.html b/modules/forums/client/views/post.client.view.html index 70f2bb8f..209b2766 100644 --- a/modules/forums/client/views/post.client.view.html +++ b/modules/forums/client/views/post.client.view.html @@ -59,7 +59,7 @@ {{ 'MARKDOWN_LINK' | translate }}
-
diff --git a/modules/forums/client/views/topic.client.view.html b/modules/forums/client/views/topic.client.view.html index 4a54e482..febce498 100644 --- a/modules/forums/client/views/topic.client.view.html +++ b/modules/forums/client/views/topic.client.view.html @@ -29,9 +29,9 @@
- {{'FORUMS.BTN_POST_NEW_REPLY' | translate}} - {{ vm.topic.readOnly ? 'FORUMS.BTN_UNSET_READONLY' : 'FORUMS.BTN_SET_READONLY' | translate}}
@@ -301,7 +301,7 @@ {{ 'MARKDOWN_LINK' | translate }}
- diff --git a/modules/forums/client/views/view.client.view.html b/modules/forums/client/views/view.client.view.html index 4fe4d812..1a6d5140 100644 --- a/modules/forums/client/views/view.client.view.html +++ b/modules/forums/client/views/view.client.view.html @@ -92,7 +92,7 @@
- {{'FORUMS.BTN_POST_NEW_TOPIC' | translate}}
-
- +
@@ -108,7 +108,7 @@ - +
@@ -123,16 +123,16 @@ info-name> {{'MESSAGES_FIELD.INFO_SEND_AT' | translate}} {{m.createdat | date: 'yyyy-MM-dd HH:mm:ss' }}

- + {{m._readers.length}} - + {{'MESSAGE_TYPE_' + m.type.toUpperCase() | translate}} - + @@ -144,7 +144,7 @@
- +
diff --git a/modules/messages/client/views/box.client.view.html b/modules/messages/client/views/box.client.view.html index df80a3b3..32a1f07b 100644 --- a/modules/messages/client/views/box.client.view.html +++ b/modules/messages/client/views/box.client.view.html @@ -70,7 +70,7 @@ - + @@ -122,7 +122,7 @@ next-text="{{ 'PAGE_TEXT_NEXT' | translate}}" last-text="{{ 'PAGE_TEXT_LAST' | translate}}">
- @@ -190,11 +190,11 @@ emoji-dropup>
- - + - diff --git a/modules/messages/client/views/send.client.view.html b/modules/messages/client/views/send.client.view.html index 612f5b88..89330051 100644 --- a/modules/messages/client/views/send.client.view.html +++ b/modules/messages/client/views/send.client.view.html @@ -61,7 +61,7 @@
- +
diff --git a/modules/requests/client/controllers/requests-view.client.controller.js b/modules/requests/client/controllers/requests-view.client.controller.js index ba51ab90..ffefd60c 100644 --- a/modules/requests/client/controllers/requests-view.client.controller.js +++ b/modules/requests/client/controllers/requests-view.client.controller.js @@ -245,10 +245,10 @@ var ele = $('#' + e.$editor.attr('id') + ' .md-footer'); angular.element(ele).addClass('text-right'); - angular.element(ele[0].childNodes[0]).addClass('btn-width-80'); + angular.element(ele[0].childNodes[0]).addClass('btn-min-width-80'); ele[0].childNodes[0].innerText = $translate.instant('FORUMS.BTN_SAVE'); - var cbtn = angular.element(''); + var cbtn = angular.element(''); cbtn.bind('click', function (evt) { e.setContent(m.desc); e.$options.hideable = true; diff --git a/modules/requests/client/views/requests-add.client.view.html b/modules/requests/client/views/requests-add.client.view.html index 118d8f5b..d869b719 100644 --- a/modules/requests/client/views/requests-add.client.view.html +++ b/modules/requests/client/views/requests-add.client.view.html @@ -3,20 +3,20 @@
- {{'REQUESTS.NAV_LIST' | translate}} - {{'REQUESTS.NAV_ADD' | translate}}
- {{'REQUESTS.NAV_MY' | translate}} - {{'REQUESTS.NAV_RES' | translate}} diff --git a/modules/requests/client/views/requests-list.client.view.html b/modules/requests/client/views/requests-list.client.view.html index d36e1313..b10809eb 100644 --- a/modules/requests/client/views/requests-list.client.view.html +++ b/modules/requests/client/views/requests-list.client.view.html @@ -3,20 +3,20 @@
- {{'REQUESTS.NAV_LIST' | translate}} - {{'REQUESTS.NAV_ADD' | translate}}
- {{'REQUESTS.NAV_MY' | translate}} - {{'REQUESTS.NAV_RES' | translate}} diff --git a/modules/requests/client/views/requests-my.client.view.html b/modules/requests/client/views/requests-my.client.view.html index 5cb2f292..84e01a93 100644 --- a/modules/requests/client/views/requests-my.client.view.html +++ b/modules/requests/client/views/requests-my.client.view.html @@ -3,20 +3,20 @@
- {{'REQUESTS.NAV_LIST' | translate}} - {{'REQUESTS.NAV_ADD' | translate}}
- {{'REQUESTS.NAV_MY' | translate}} - {{'REQUESTS.NAV_RES' | translate}} diff --git a/modules/requests/client/views/requests-res.client.view.html b/modules/requests/client/views/requests-res.client.view.html index 8a0dd535..97fd5ab5 100644 --- a/modules/requests/client/views/requests-res.client.view.html +++ b/modules/requests/client/views/requests-res.client.view.html @@ -3,20 +3,20 @@
- {{'REQUESTS.NAV_LIST' | translate}} - {{'REQUESTS.NAV_ADD' | translate}}
- {{'REQUESTS.NAV_MY' | translate}} - {{'REQUESTS.NAV_RES' | translate}} diff --git a/modules/requests/client/views/requests-view.client.view.html b/modules/requests/client/views/requests-view.client.view.html index d12cb12f..2989cd8f 100644 --- a/modules/requests/client/views/requests-view.client.view.html +++ b/modules/requests/client/views/requests-view.client.view.html @@ -3,20 +3,20 @@
- {{'MENU_TORRENTS_SUB.'+vm.request.type.toUpperCase() | translate}} - + {{'MENU_TORRENTS_SUB.'+vm.request.type.toUpperCase() | translate}} + {{vm.request.createdAt | life }}
Finished
- {{vm.request.rewards}} - + {{vm.request.rewards}} + {{vm.request.torrents.length}} - + {{vm.request.comments.length}} - + @@ -108,22 +108,22 @@
+ class="btn btn-success btn-min-width-100"> {{ 'DO_UPLOAD' | translate}} -
- - {{ 'REQUESTS.BTN_COMMENT' | translate}} @@ -304,7 +304,7 @@
-
diff --git a/modules/systems/client/views/commands.client.view.html b/modules/systems/client/views/commands.client.view.html index 1848480a..9b981b3b 100644 --- a/modules/systems/client/views/commands.client.view.html +++ b/modules/systems/client/views/commands.client.view.html @@ -6,7 +6,7 @@
  • -
    {{item.replies ? item.replies.length : 0}} - {{item.createdAt | life}} - + {{item.createdAt | life}} + {{item.updatedAt | life}} @@ -56,7 +56,7 @@ {{item.status}} - + diff --git a/modules/tickets/client/views/admin/support-message.client.view.html b/modules/tickets/client/views/admin/support-message.client.view.html index f0188968..cb48068d 100644 --- a/modules/tickets/client/views/admin/support-message.client.view.html +++ b/modules/tickets/client/views/admin/support-message.client.view.html @@ -35,7 +35,7 @@ - + @@ -45,8 +45,8 @@
{{item._replies ? item._replies.length : 0}} - {{item.createdAt | date:'MM-dd HH:mm'}} - + {{item.createdAt | date:'MM-dd HH:mm'}} + {{item.updatedAt | date:'MM-dd HH:mm'}} @@ -59,7 +59,7 @@ {{item.status}} - + {{'SUPPORT.LINK_HANDLE' | translate}} diff --git a/modules/tickets/client/views/admin/support-view-message.client.view.html b/modules/tickets/client/views/admin/support-view-message.client.view.html index 61f151e0..367c31ec 100644 --- a/modules/tickets/client/views/admin/support-view-message.client.view.html +++ b/modules/tickets/client/views/admin/support-view-message.client.view.html @@ -42,9 +42,9 @@ ng-bind-html="vm.getTicketContent(vm.ticket)">
@@ -130,7 +130,7 @@ {{ 'MARKDOWN_LINK' | translate }}
-
diff --git a/modules/torrents/client/controllers/torrent-info.client.controller.js b/modules/torrents/client/controllers/torrent-info.client.controller.js index a5d0fd68..6652b606 100644 --- a/modules/torrents/client/controllers/torrent-info.client.controller.js +++ b/modules/torrents/client/controllers/torrent-info.client.controller.js @@ -1544,10 +1544,10 @@ var ele = $('#' + e.$editor.attr('id') + ' .md-footer'); angular.element(ele).addClass('text-right'); - angular.element(ele[0].childNodes[0]).addClass('btn-width-80'); + angular.element(ele[0].childNodes[0]).addClass('btn-min-width-80'); ele[0].childNodes[0].innerText = $translate.instant('FORUMS.BTN_SAVE'); - var cbtn = angular.element(''); + var cbtn = angular.element(''); cbtn.bind('click', function (evt) { e.setContent(r.resource_detail_info.overview); e.$options.hideable = true; diff --git a/modules/torrents/client/templates/modal-confirm.client.view.html b/modules/torrents/client/templates/modal-confirm.client.view.html index 2007e2be..6b9ced60 100644 --- a/modules/torrents/client/templates/modal-confirm.client.view.html +++ b/modules/torrents/client/templates/modal-confirm.client.view.html @@ -36,10 +36,10 @@
\ No newline at end of file diff --git a/modules/torrents/client/views/admin/uploader-list.client.view.html b/modules/torrents/client/views/admin/uploader-list.client.view.html index 83846f90..7cd1efa7 100644 --- a/modules/torrents/client/views/admin/uploader-list.client.view.html +++ b/modules/torrents/client/views/admin/uploader-list.client.view.html @@ -25,22 +25,22 @@ - + - + - + {{m.members.length}} - + {{m.torrent_count}} - + {{vm.TGI.getVoteTitle()}} {{m.vote_average | number : 1}} / {{m.vote_count}} {{ 'TMDB_FIELDS.VOTE_UNIT' | translate}} - + diff --git a/modules/torrents/client/views/uploads-torrents.client.view.html b/modules/torrents/client/views/uploads-torrents.client.view.html index 7a60b4dd..e1045d11 100644 --- a/modules/torrents/client/views/uploads-torrents.client.view.html +++ b/modules/torrents/client/views/uploads-torrents.client.view.html @@ -177,11 +177,11 @@
- - +
@@ -522,7 +522,7 @@ ng-model="vm.inputedEpisodes" ng-disabled="vm.inputedEpisodesOK" required>
- +
- +
diff --git a/modules/torrents/client/views/view-torrent.client.view.html b/modules/torrents/client/views/view-torrent.client.view.html index 5772c848..ae70a220 100644 --- a/modules/torrents/client/views/view-torrent.client.view.html +++ b/modules/torrents/client/views/view-torrent.client.view.html @@ -242,7 +242,7 @@ ng-click="vm.beginSaveScreenshots()"> {{'SAVE_THIS_SCREENSHOTS' | translate}} -
- - - @@ -471,7 +471,7 @@
- +
{{ 'RESOURCESTAGS.'+item.name+'.SELF' | translate}}:
@@ -507,10 +507,10 @@
- -
@@ -563,11 +563,11 @@
- - +
@@ -607,11 +607,11 @@
- - +
@@ -649,11 +649,11 @@
- - +
@@ -698,11 +698,11 @@
- - +
@@ -884,7 +884,7 @@ ng-click="vm.updateTorrentNfo()"> {{'SAVE_THIS_MEDIA_INFO' | translate}} - @@ -1007,7 +1007,7 @@ ng-click="vm.beginSaveScreenshots()"> {{'SAVE_THIS_SCREENSHOTS' | translate}} - '); + var cbtn = angular.element(''); cbtn.bind('click', function (evt) { e.setContent(vm.user.signature || $translate.instant('MAKER_NULL')); e.$options.hideable = true; diff --git a/modules/users/client/controllers/status/status.client.controller.js b/modules/users/client/controllers/status/status.client.controller.js index 69034dbc..6f329089 100644 --- a/modules/users/client/controllers/status/status.client.controller.js +++ b/modules/users/client/controllers/status/status.client.controller.js @@ -6,10 +6,10 @@ .controller('StatusController', StatusController); StatusController.$inject = ['$scope', '$state', '$timeout', '$translate', 'Authentication', 'UsersService', 'ScoreLevelService', 'MeanTorrentConfig', 'ModalConfirmService', - 'NotifycationService', 'moment']; + 'NotifycationService', 'moment', 'localStorageService', 'MedalsService', 'MedalsInfoServices']; function StatusController($scope, $state, $timeout, $translate, Authentication, UsersService, ScoreLevelService, MeanTorrentConfig, ModalConfirmService, - NotifycationService, moment) { + NotifycationService, moment, localStorageService, MedalsService, MedalsInfoServices) { var vm = this; vm.user = Authentication.user; vm.scoreLevelData = ScoreLevelService.getScoreLevelJson(vm.user.score); @@ -17,6 +17,25 @@ vm.signConfig = MeanTorrentConfig.meanTorrentConfig.sign; vm.hnrConfig = MeanTorrentConfig.meanTorrentConfig.hitAndRun; + /** + * initTopBackground + */ + vm.initTopBackground = function () { + var url = localStorageService.get('body_background_image') || vm.homeConfig.bodyBackgroundImage; + $('.backdrop').css('backgroundImage', 'url("' + url + '")'); + }; + + /** + * getMyMedals + */ + vm.getMyMedals = function () { + MedalsService.query({ + userId: vm.user._id + }, function (medals) { + vm.userMedals = MedalsInfoServices.mergeMedalsProperty(medals); + }); + }; + /** * unIdle */ diff --git a/modules/users/client/controllers/userinfo/userinfo.client.controller.js b/modules/users/client/controllers/userinfo/userinfo.client.controller.js index 749a0eea..58db4e1c 100644 --- a/modules/users/client/controllers/userinfo/userinfo.client.controller.js +++ b/modules/users/client/controllers/userinfo/userinfo.client.controller.js @@ -6,10 +6,10 @@ .controller('UserInfoController', UserInfoController); UserInfoController.$inject = ['$scope', '$rootScope', '$state', 'Authentication', 'userResolve', 'ScoreLevelService', '$timeout', 'MeanTorrentConfig', 'UsersService', - 'DebugConsoleService', 'NotifycationService']; + 'DebugConsoleService', 'NotifycationService', 'localStorageService', 'MedalsService', 'MedalsInfoServices']; function UserInfoController($scope, $rootScope, $state, Authentication, user, ScoreLevelService, $timeout, MeanTorrentConfig, UsersService, - mtDebug, NotifycationService) { + mtDebug, NotifycationService, localStorageService, MedalsService, MedalsInfoServices) { var vm = this; vm.authentication = Authentication; @@ -20,9 +20,18 @@ vm.isContextUserSelf = isContextUserSelf; vm.scoreLevelData = ScoreLevelService.getScoreLevelJson(vm.user.score); vm.hnrConfig = MeanTorrentConfig.meanTorrentConfig.hitAndRun; + vm.homeConfig = MeanTorrentConfig.meanTorrentConfig.home; mtDebug.info(user); + /** + * initTopBackground + */ + vm.initTopBackground = function () { + var url = localStorageService.get('body_background_image') || vm.homeConfig.bodyBackgroundImage; + $('.backdrop').css('backgroundImage', 'url("' + url + '")'); + }; + /** * messageTo */ @@ -90,5 +99,16 @@ NotifycationService.showErrorNotify(response.data.message, 'UNFOLLOW_ERROR'); } }; + + /** + * getUserMedals + */ + vm.getUserMedals = function () { + MedalsService.query({ + userId: vm.user._id + }, function (medals) { + vm.userMedals = MedalsInfoServices.mergeMedalsProperty(medals); + }); + }; } }()); diff --git a/modules/users/client/directives/medal-flag.client.directive.js b/modules/users/client/directives/medal-flag.client.directive.js new file mode 100644 index 00000000..ae032c7c --- /dev/null +++ b/modules/users/client/directives/medal-flag.client.directive.js @@ -0,0 +1,36 @@ +(function () { + 'use strict'; + + angular.module('users') + .directive('medalFlag', medalFlag); + + medalFlag.$inject = ['$compile', '$translate', '$filter']; + + function medalFlag($compile, $translate, $filter) { + var directive = { + restrict: 'A', + link: link + }; + + return directive; + + function link(scope, element, attrs) { + scope.$watch(attrs.medalFlag, function (s) { + if (s) { + var user = s; + var number = attrs.medalCount; + var title = $translate.instant('USER_MEDAL_FLAG', {name: user.displayName}); + var cls = attrs.medalFlagClass; + + var ele = angular.element(' ' + number + ''); + + ele.addClass(cls ? cls : ''); + ele.attr('title', title); + + element.append(ele); + $compile(element.contents())(scope); + } + }); + } + } +}()); diff --git a/modules/users/client/directives/ratio-flag.client.directive.js b/modules/users/client/directives/ratio-flag.client.directive.js new file mode 100644 index 00000000..2bf561e2 --- /dev/null +++ b/modules/users/client/directives/ratio-flag.client.directive.js @@ -0,0 +1,35 @@ +(function () { + 'use strict'; + + angular.module('users') + .directive('ratioFlag', ratioFlag); + + ratioFlag.$inject = ['$compile', '$translate', '$filter']; + + function ratioFlag($compile, $translate, $filter) { + var directive = { + restrict: 'A', + link: link + }; + + return directive; + + function link(scope, element, attrs) { + scope.$watch(attrs.ratioFlag, function (s) { + if (s) { + var user = s; + var title = $translate.instant('USER_RATIO_FLAG', {name: user.displayName}); + var cls = attrs.ratioFlagClass; + + var ele = angular.element(' ' + $filter('ratio')(user.ratio, 2) + ''); + + ele.addClass(cls ? cls : ''); + ele.attr('title', title); + + element.append(ele); + $compile(element.contents())(scope); + } + }); + } + } +}()); diff --git a/modules/users/client/less/score.less b/modules/users/client/less/score.less new file mode 100644 index 00000000..546a9f98 --- /dev/null +++ b/modules/users/client/less/score.less @@ -0,0 +1,42 @@ +@import (reference) "../../../core/client/less/mt-var.less"; + +.score-top { + color: #999; + text-shadow: 0 0 0.1em #000,-0 -0 0.1em #000; + .score-title { + color: #f5f5f5; + } +} + +.score-progress { + height: 30px; + margin-bottom: 2px; + .progress-bar { + line-height: 30px; + } +} + +.score-level-default { + cursor: pointer; + color: #333 !important; + > kbd { + font-size: 12px; + color: #333 !important; + background-color: #eee !important; + } +} + +.score-level { + cursor: pointer; + color: #FF6600; + text-shadow: none; + > kbd { + font-size: 12px; + background-color: #FF6600; + } +} + +.curr-score { + color: @mt-base-color; + font-size: 48px; +} diff --git a/modules/users/client/less/user.less b/modules/users/client/less/user.less index b03ad2de..69b9497f 100644 --- a/modules/users/client/less/user.less +++ b/modules/users/client/less/user.less @@ -5,27 +5,6 @@ border-bottom: solid 1px #eee; } -.userinfo-header { - margin-bottom: 0; - .userinfo-col { - display: table; - span { - display: table-cell; - vertical-align: middle; - } - .userinfo-btn { - @media (max-width: @screen-xxs-max) { - display: table-row; - float: none !important; - line-height: 4; - .btn:not(:first-child) { - margin-left: 5px; - } - } - } - } -} - .mt-xxs-break-before { @media (max-width: @screen-xxs-max) { display: table-row !important; @@ -39,10 +18,13 @@ resize: vertical; } } + .user-history { height: 150px; - line-height: 1; overflow-y: scroll; + p { + margin-bottom: 0; + } } .curr-score-info { @@ -57,3 +39,69 @@ line-height: 1.8; } } + +.medals-user-top { + .user-avatar { + float: left; + img { + width: 60px; + height: 60px; + } + } + .user-data { + margin-left: 70px; + color: #999; + text-shadow: 0 0 0.1em #000,-0 -0 0.1em #000; + .user-name { + margin-left: 10px; + color: #efefef; + text-shadow: 0 0 0.1em #000,-0 -0 0.1em #000; + &:hover { + color: @brand-primary; + text-decoration: none; + } + } + .user-vip, .user-level { + margin-left: 10px; + } + .user-up-down { + font-size: 12px; + margin-left: 10px; + .torrent-up { + color: #33CC00; + } + .torrent-down { + color: #FF3300; + } + .up-data, .down-data { + color: lighten(@gray-base, 60%); + } + } + .user-medals-count { + margin-left: 10px; + font-size: 12px; + .user-medal-flag { + .medal-data { + color: #999; + } + } + } + .user-ratio { + margin-left: 10px; + font-size: 12px; + .user-ratio-flag { + .ratio-data { + color: #999; + } + } + } + } + .user-medals-list { + text-align: center; + padding: 10px; + border-top: solid 2px #2a2a2a; + .medal { + display: inline; + } + } +} diff --git a/modules/users/client/views/admin/view-user.client.view.html b/modules/users/client/views/admin/view-user.client.view.html index f51f6dad..3a2b74ea 100644 --- a/modules/users/client/views/admin/view-user.client.view.html +++ b/modules/users/client/views/admin/view-user.client.view.html @@ -1,17 +1,62 @@ -
-