mirror of
https://github.com/goharbor/harbor.git
synced 2025-02-16 20:01:35 +01:00
updates of I18n refinement and add confirm dialog when deleting project member.
This commit is contained in:
parent
5bb80bfb5c
commit
58487ed06c
@ -3,7 +3,7 @@ runmode = dev
|
||||
|
||||
[lang]
|
||||
types = en-US|zh-CN
|
||||
names = English|中文
|
||||
names = en-US|zh-CN
|
||||
|
||||
[dev]
|
||||
httpport = 80
|
||||
|
@ -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"), "|")
|
||||
|
||||
|
@ -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;
|
||||
|
@ -7,5 +7,5 @@
|
||||
<a ng-show="vm.userId != vm.currentUserId" href="javascript:void(0);" ng-click="vm.cancelUpdate()" title="Cancel">
|
||||
<span ng-if="vm.editMode" class="glyphicon glyphicon-repeat"></span>
|
||||
</a>
|
||||
<a ng-show="vm.userId != vm.currentUserId && !vm.editMode" href="javascript:void(0);" ng-click="vm.deleteProjectMember({projectId: vm.projectId, userId: vm.userId})" title="Delete"><span class="glyphicon glyphicon-trash"></span></a>
|
||||
<a ng-show="vm.userId != vm.currentUserId && !vm.editMode" href="javascript:void(0);" data-toggle="modal" data-target="#myModal" ng-click="vm.deleteProjectMember()" title="Delete"><span class="glyphicon glyphicon-trash"></span></a>
|
||||
</td>
|
@ -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,
|
||||
|
@ -12,13 +12,14 @@
|
||||
</div>
|
||||
<div class="pane">
|
||||
<add-project-member ng-show="vm.isOpen" is-open="vm.isOpen" project-id="//vm.projectId//" reload='vm.search({projectId: vm.projectId, username: vm.username})'></add-project-member>
|
||||
<modal-dialog title="// 'confirm_to_delete_member_title' | tr //" message="// 'confirm_to_delete_member' | tr //" action="vm.deleteProjectMember()"></modal-dialog>
|
||||
<div class="sub-pane">
|
||||
<table class="table table-pane" >
|
||||
<thead>
|
||||
<th width="30%">// 'username' | tr //</th><th width="40%">// 'role' | tr //</th><th width="30%">// 'operation' | tr //</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="pr in vm.projectMembers" edit-project-member username="pr.username" project-id="vm.projectId" user-id="pr.user_id" current-user-id="vm.user.user_id" role-name="pr.role_name" reload='vm.search({projectId: vm.projectId, username: vm.username})'></tr>
|
||||
<tr ng-repeat="pr in vm.projectMembers" edit-project-member username="pr.username" project-id="vm.projectId" user-id="pr.user_id" delete="vm.deleteMember({projectId: vm.projectId, userId: pr.user_id})" current-user-id="vm.user.user_id" role-name="pr.role_name" reload='vm.search({projectId: vm.projectId, username: vm.username})'></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
@ -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})
|
||||
|
@ -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?'
|
||||
};
|
@ -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': '确认删除当前项目成员吗?'
|
||||
};
|
@ -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);
|
||||
},
|
||||
|
@ -8,9 +8,7 @@
|
||||
<li class="dropdown-submenu">
|
||||
<a tabindex="-1" href="#"><span class="glyphicon glyphicon-globe"></span> //vm.languageName//</a>
|
||||
<ul class="dropdown-menu">
|
||||
{{ range $key, $value := .SupportLanguages }}
|
||||
<li><a href="javascript:void(0);" ng-click="vm.setLanguage('{{ $key }}')">{{ $value.Name }}</a></li>
|
||||
{{ end }}
|
||||
<li ng-repeat="(key, value) in vm.supportLanguages"><a href="javascript:void(0);" ng-click="vm.setLanguage(key)">// value //</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
@ -23,9 +21,7 @@
|
||||
<span class="glyphicon glyphicon-globe"></span> //vm.languageName//
|
||||
</a>
|
||||
<ul class="dropdown-menu multi-level" role="menu" aria-labelledby="dropdownMenu">
|
||||
{{ range $key, $value := .SupportLanguages }}
|
||||
<li><a href="javascript:void(0);" ng-click="vm.setLanguage('{{ $key }}')">{{ $value.Name }}</a></li>
|
||||
{{ end }}
|
||||
<li ng-repeat="(key, value) in vm.supportLanguages"><a href="javascript:void(0);" ng-click="vm.setLanguage(key)">// value //</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
{{ end }}
|
Loading…
Reference in New Issue
Block a user