From 58487ed06c86f9e76b162fd41101f30501190379 Mon Sep 17 00:00:00 2001 From: kunw Date: Mon, 20 Jun 2016 16:05:14 +0800 Subject: [PATCH] updates of I18n refinement and add confirm dialog when deleting project member. --- Deploy/templates/ui/app.conf | 2 +- controllers/base.go | 31 ++++++------------ .../optional-menu/optional-menu.directive.js | 5 +-- .../edit-project-member.directive.html | 2 +- .../edit-project-member.directive.js | 11 +++---- .../list-project-member.directive.html | 3 +- .../list-project-member.directive.js | 32 +++++++++++++++++-- .../js/services/i18n/locale_messages_en-US.js | 4 ++- .../js/services/i18n/locale_messages_zh-CN.js | 4 ++- .../js/services/i18n/services.i18n.js | 5 ++- views/optional-menu.htm | 8 ++--- 11 files changed, 62 insertions(+), 45 deletions(-) diff --git a/Deploy/templates/ui/app.conf b/Deploy/templates/ui/app.conf index 6d8f157284..70dddbc89a 100644 --- a/Deploy/templates/ui/app.conf +++ b/Deploy/templates/ui/app.conf @@ -3,7 +3,7 @@ runmode = dev [lang] types = en-US|zh-CN -names = English|中文 +names = en-US|zh-CN [dev] httpport = 80 diff --git a/controllers/base.go b/controllers/base.go index e8b67f908a..48ea2b5523 100644 --- a/controllers/base.go +++ b/controllers/base.go @@ -35,6 +35,7 @@ const ( ) var supportLanguages map[string]langType +var mappingLangNames map[string]string // Prepare extracts the language information from request and populate data for rendering templates. func (b *BaseController) Prepare() { @@ -49,35 +50,22 @@ func (b *BaseController) Prepare() { } } - if _, exist := supportLanguages[lang]; exist == false { //Check if support the request language. - lang = defaultLang //Set default language if not supported. - } - sessionLang := b.GetSession("lang") if sessionLang != nil { b.SetSession("Lang", lang) lang = sessionLang.(string) } + if _, exist := supportLanguages[lang]; !exist { //Check if support the request language. + lang = defaultLang //Set default language if not supported. + } + curLang := langType{ Lang: lang, } - restLangs := make([]*langType, 0, len(langTypes)-1) - for _, v := range langTypes { - if lang != v.Lang { - restLangs = append(restLangs, v) - } else { - curLang.Name = v.Name - } - } - // Set language properties. - b.Lang = lang b.Data["Lang"] = curLang.Lang - b.Data["CurLang"] = curLang.Name - b.Data["RestLangs"] = restLangs - b.Data["SupportLanguages"] = supportLanguages authMode := strings.ToLower(os.Getenv("AUTH_MODE")) if authMode == "" { @@ -143,10 +131,11 @@ func (cc *CommonController) LogOut() { // SwitchLanguage User can swith to prefered language func (cc *CommonController) SwitchLanguage() { lang := cc.GetString("lang") - if _, exist := supportLanguages[lang]; exist { - cc.SetSession("lang", lang) - cc.Data["Lang"] = lang + if _, exist := supportLanguages[lang]; !exist { + lang = defaultLang } + cc.SetSession("lang", lang) + cc.Data["Lang"] = lang cc.Redirect(cc.Ctx.Request.Header.Get("Referer"), http.StatusFound) } @@ -184,8 +173,6 @@ func init() { } } - beego.AddFuncMap("i18n", i18n.Tr) - langs := strings.Split(beego.AppConfig.String("lang::types"), "|") names := strings.Split(beego.AppConfig.String("lang::names"), "|") diff --git a/static/resources/js/components/optional-menu/optional-menu.directive.js b/static/resources/js/components/optional-menu/optional-menu.directive.js index 309973d653..c477ee15fe 100644 --- a/static/resources/js/components/optional-menu/optional-menu.directive.js +++ b/static/resources/js/components/optional-menu/optional-menu.directive.js @@ -14,8 +14,9 @@ vm.currentLanguage = I18nService().getCurrentLanguage(); vm.languageName = I18nService().getLanguageName(vm.currentLanguage); - console.log('current language:' + I18nService().getCurrentLanguage()); - + console.log('current language:' + vm.languageName); + + vm.supportLanguages = I18nService().getSupportLanguages(); vm.user = currentUser.get(); vm.setLanguage = setLanguage; vm.logOut = logOut; diff --git a/static/resources/js/components/project-member/edit-project-member.directive.html b/static/resources/js/components/project-member/edit-project-member.directive.html index 5f5d7c9399..867c90b84d 100644 --- a/static/resources/js/components/project-member/edit-project-member.directive.html +++ b/static/resources/js/components/project-member/edit-project-member.directive.html @@ -7,5 +7,5 @@ - + \ No newline at end of file diff --git a/static/resources/js/components/project-member/edit-project-member.directive.js b/static/resources/js/components/project-member/edit-project-member.directive.js index 5c6cfb642b..6e15afb470 100644 --- a/static/resources/js/components/project-member/edit-project-member.directive.js +++ b/static/resources/js/components/project-member/edit-project-member.directive.js @@ -6,9 +6,9 @@ .module('harbor.project.member') .directive('editProjectMember', editProjectMember); - EditProjectMemberController.$inject = ['$scope', 'roles', 'getRole','EditProjectMemberService', 'DeleteProjectMemberService']; + EditProjectMemberController.$inject = ['$scope', 'roles', 'getRole','EditProjectMemberService']; - function EditProjectMemberController($scope, roles, getRole, EditProjectMemberService, DeleteProjectMemberService) { + function EditProjectMemberController($scope, roles, getRole, EditProjectMemberService) { var vm = this; vm.roles = roles(); @@ -37,10 +37,8 @@ } } - function deleteProjectMember(e) { - DeleteProjectMemberService(e.projectId, e.userId) - .success(editProjectMemberComplete) - .error(editProjectMemberFailed); + function deleteProjectMember() { + vm.delete(); } function editProjectMemberComplete(data, status, headers) { @@ -71,6 +69,7 @@ 'currentUserId': '=', 'roleName': '=', 'projectId': '=', + 'delete': '&', 'reload': '&' }, 'controller': EditProjectMemberController, diff --git a/static/resources/js/components/project-member/list-project-member.directive.html b/static/resources/js/components/project-member/list-project-member.directive.html index aed82f6312..8a1be3f397 100644 --- a/static/resources/js/components/project-member/list-project-member.directive.html +++ b/static/resources/js/components/project-member/list-project-member.directive.html @@ -12,13 +12,14 @@
+
- +
// 'username' | tr //// 'role' | tr //// 'operation' | tr //
diff --git a/static/resources/js/components/project-member/list-project-member.directive.js b/static/resources/js/components/project-member/list-project-member.directive.js index e0d6d79b1d..caa47a36d5 100644 --- a/static/resources/js/components/project-member/list-project-member.directive.js +++ b/static/resources/js/components/project-member/list-project-member.directive.js @@ -6,17 +6,19 @@ .module('harbor.project.member') .directive('listProjectMember', listProjectMember); - ListProjectMemberController.$inject = ['$scope', 'ListProjectMemberService', 'getParameterByName', '$location', 'currentUser']; + ListProjectMemberController.$inject = ['$scope', 'ListProjectMemberService', 'DeleteProjectMemberService', 'getParameterByName', '$location', 'currentUser']; - function ListProjectMemberController($scope, ListProjectMemberService, getParameterByName, $location, currentUser) { + function ListProjectMemberController($scope, ListProjectMemberService, DeleteProjectMemberService, getParameterByName, $location, currentUser) { var vm = this; vm.isOpen = false; vm.search = search; vm.addProjectMember = addProjectMember; + vm.deleteProjectMember = deleteProjectMember; + vm.deleteMember = deleteMember vm.retrieve = retrieve; vm.username = ''; - + vm.projectId = getParameterByName('project_id', $location.absUrl()); vm.retrieve(); @@ -38,6 +40,30 @@ vm.isOpen = true; } } + + function deleteProjectMember() { + DeleteProjectMemberService(vm.selectedProjectId, vm.selectedUserId) + .success(deleteProjectMemberSuccess) + .error(deleteProjectMemberFailed); + } + + function deleteMember(e) { + vm.selectedProjectId = e.projectId; + vm.selectedUserId = e.userId; + + vm.modalTitle = 'Delete project member'; + vm.modalMessage = 'Are you sure to delete the current member?'; + + } + + function deleteProjectMemberSuccess(data, status) { + console.log('Successful delete project member complete.'); + vm.retrieve(); + } + + function deleteProjectMemberFailed(e) { + console.log('Failed to edit project member:' + e); + } function retrieve() { ListProjectMemberService(vm.projectId, {'username': vm.username}) diff --git a/static/resources/js/services/i18n/locale_messages_en-US.js b/static/resources/js/services/i18n/locale_messages_en-US.js index 9ee8e3d2cb..7247cb06d1 100644 --- a/static/resources/js/services/i18n/locale_messages_en-US.js +++ b/static/resources/js/services/i18n/locale_messages_en-US.js @@ -128,5 +128,7 @@ var locale_messages = { 'to_harbor': ' to Harbor!', 'continue' : 'Continue', 'no_projects_add_new_project': 'No projects, add new project now.', - 'no_repositories': 'No repositories found, please use "docker push" to upload images.' + 'no_repositories': 'No repositories found, please use "docker push" to upload images.', + 'confirm_to_delete_member_title': 'Delete project member', + 'confirm_to_delete_member': 'Are you sure to delete the current project member?' }; \ No newline at end of file diff --git a/static/resources/js/services/i18n/locale_messages_zh-CN.js b/static/resources/js/services/i18n/locale_messages_zh-CN.js index 4f4150aa5a..3d3a27871f 100644 --- a/static/resources/js/services/i18n/locale_messages_zh-CN.js +++ b/static/resources/js/services/i18n/locale_messages_zh-CN.js @@ -126,5 +126,7 @@ var locale_messages = { 'to_harbor': ' 使用Harbor!', 'continue' : '继续', 'no_projects_add_new_project': '当前没有项目,请新增项目。', - 'no_repositories': '未发现镜像,请用"docker push"命令上传镜像。' + 'no_repositories': '未发现镜像,请用"docker push"命令上传镜像。', + 'confirm_to_delete_member_title': '删除项目成员', + 'confirm_to_delete_member': '确认删除当前项目成员吗?' }; \ No newline at end of file diff --git a/static/resources/js/services/i18n/services.i18n.js b/static/resources/js/services/i18n/services.i18n.js index 10ff7ebd58..8a2f64bf2f 100644 --- a/static/resources/js/services/i18n/services.i18n.js +++ b/static/resources/js/services/i18n/services.i18n.js @@ -18,7 +18,7 @@ }; var isSupportLanguage = function(language) { for (var i in supportLanguages) { - if(language === i) { + if(language === String(i)) { return true; } } @@ -47,6 +47,9 @@ } return supportLanguages[language]; }, + 'getSupportLanguages': function() { + return supportLanguages; + }, 'unset': function(){ $cookies.put('language', defaultLanguage, cookieOptions); }, diff --git a/views/optional-menu.htm b/views/optional-menu.htm index e7bb51f436..f09e214241 100644 --- a/views/optional-menu.htm +++ b/views/optional-menu.htm @@ -8,9 +8,7 @@
  • @@ -23,9 +21,7 @@ //vm.languageName//
    {{ end }} \ No newline at end of file