mirror of
https://github.com/goharbor/harbor.git
synced 2025-02-01 20:41:22 +01:00
Merge latest codes.
This commit is contained in:
commit
cef202cb54
@ -65,8 +65,12 @@ func TestMain(t *testing.T) {
|
||||
w := httptest.NewRecorder()
|
||||
beego.BeeApp.Handlers.ServeHTTP(w, r)
|
||||
assert.Equal(int(200), w.Code, "'/' httpStatusCode should be 200")
|
||||
<<<<<<< HEAD
|
||||
<<<<<<< HEAD
|
||||
assert.Equal(true, strings.Contains(fmt.Sprintf("%s", w.Body), "<title>page_title_index</title>"), "http respond should have '<title>page_title_index</title>'")
|
||||
=======
|
||||
assert.Equal(true, strings.Contains(fmt.Sprintf("%s", w.Body), "<title>Harbor</title>"), "http respond should have '<title>Harbor</title>'")
|
||||
>>>>>>> upstream/dev
|
||||
=======
|
||||
assert.Equal(true, strings.Contains(fmt.Sprintf("%s", w.Body), "<title>Harbor</title>"), "http respond should have '<title>Harbor</title>'")
|
||||
>>>>>>> upstream/dev
|
||||
|
@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Clarity Seed App</title>
|
||||
<title>Harbor</title>
|
||||
<base href="/">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="icon" type="image/x-icon" href="favicon.ico?v=2">
|
||||
|
@ -7,6 +7,7 @@ import { CookieService } from 'angular2-cookie/core';
|
||||
import { CookieKeyOfAdmiral, HarborQueryParamKey } from './shared/shared.const';
|
||||
import { maintainUrlQueryParmas } from './shared/shared.utils';
|
||||
|
||||
|
||||
export const systemInfoEndpoint = "/api/systeminfo";
|
||||
/**
|
||||
* Declare service to handle the bootstrap options
|
||||
@ -49,6 +50,7 @@ export class AppConfigService {
|
||||
//Catch the error
|
||||
console.error("Failed to load bootstrap options with error: ", error);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public getConfig(): AppConfig {
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { Component, EventEmitter, Output, ViewChild, AfterViewChecked } from '@angular/core';
|
||||
|
||||
import { Response } from '@angular/http';
|
||||
import { NgForm } from '@angular/forms';
|
||||
|
||||
@ -29,6 +30,7 @@ export class CreateProjectComponent implements AfterViewChecked {
|
||||
|
||||
createProjectOpened: boolean;
|
||||
|
||||
|
||||
hasChanged: boolean;
|
||||
|
||||
@Output() create = new EventEmitter<boolean>();
|
||||
|
@ -1,4 +1,4 @@
|
||||
<clr-datagrid (clrDgRefresh)="refresh($event)">
|
||||
<clr-datagrid (clrDgRefresh)="refresh($event)" >
|
||||
<clr-dg-column>{{'PROJECT.NAME' | translate}}</clr-dg-column>
|
||||
<clr-dg-column>{{'PROJECT.PUBLIC_OR_PRIVATE' | translate}}</clr-dg-column>
|
||||
<clr-dg-column>{{'PROJECT.REPO_COUNT'| translate}}</clr-dg-column>
|
||||
@ -19,5 +19,5 @@
|
||||
<clr-dg-footer>
|
||||
{{totalRecordCount || (projects ? projects.length : 0)}} {{'PROJECT.ITEMS' | translate}}
|
||||
<clr-dg-pagination [clrDgPageSize]="pageOffset" [clrDgTotalItems]="totalPage"></clr-dg-pagination>
|
||||
</clr-dg-footer>
|
||||
</clr-datagrid>
|
||||
</clr-dg-footer>
|
||||
</clr-datagrid>
|
||||
|
@ -30,4 +30,28 @@
|
||||
<clr-dg-footer>{{ (members ? members.length : 0) }} {{'MEMBER.ITEMS' | translate}}</clr-dg-footer>
|
||||
</clr-datagrid>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12 col-md-12 datagrid-margin-top">
|
||||
<clr-datagrid>
|
||||
<clr-dg-column>{{'MEMBER.NAME' | translate}}</clr-dg-column>
|
||||
<clr-dg-column>{{'MEMBER.ROLE' | translate}}</clr-dg-column>
|
||||
<clr-dg-column style="width: 12px;" class="datagrid-column-ext"></clr-dg-column>
|
||||
<clr-dg-row *ngFor="let u of members">
|
||||
<clr-dg-cell>{{u.username}}</clr-dg-cell>
|
||||
<clr-dg-cell>
|
||||
{{roleInfo[u.role_id] | translate}}
|
||||
</clr-dg-cell>
|
||||
<clr-dg-cell>
|
||||
<harbor-action-overflow [hidden]="u.user_id === currentUser.user_id" class="habor-action-pos">
|
||||
<a href="javascript:void(0)" class="dropdown-item" (click)="changeRole(u.user_id, 1)">{{'MEMBER.PROJECT_ADMIN' | translate}}</a>
|
||||
<a href="javascript:void(0)" class="dropdown-item" (click)="changeRole(u.user_id, 2)">{{'MEMBER.DEVELOPER' | translate}}</a>
|
||||
<a href="javascript:void(0)" class="dropdown-item" (click)="changeRole(u.user_id, 3)">{{'MEMBER.GUEST' | translate}}</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a href="javascript:void(0)" class="dropdown-item" (click)="deleteMember(u.user_id)">{{'MEMBER.DELETE' | translate}}</a>
|
||||
</harbor-action-overflow>
|
||||
</clr-dg-cell>
|
||||
</clr-dg-row>
|
||||
<clr-dg-footer>{{ (members ? members.length : 0) }} {{'MEMBER.ITEMS' | translate}}</clr-dg-footer>
|
||||
</clr-datagrid>
|
||||
</div>
|
||||
</div>
|
@ -6,11 +6,13 @@ import {
|
||||
CanActivateChild,
|
||||
NavigationExtras
|
||||
} from '@angular/router';
|
||||
|
||||
import { SessionService } from '../../shared/session.service';
|
||||
import { CommonRoutes, AdmiralQueryParamKey } from '../../shared/shared.const';
|
||||
import { AppConfigService } from '../../app-config.service';
|
||||
import { maintainUrlQueryParmas } from '../../shared/shared.utils';
|
||||
|
||||
|
||||
@Injectable()
|
||||
export class AuthCheckGuard implements CanActivate, CanActivateChild {
|
||||
constructor(
|
||||
@ -48,6 +50,7 @@ export class AuthCheckGuard implements CanActivate, CanActivateChild {
|
||||
|
||||
this.router.navigateByUrl(keyRemovedUrl);
|
||||
return resolve(false);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -268,11 +268,7 @@
|
||||
"DELETION_TITLE_TAG": "Confirm Tag Deletion",
|
||||
"DELETION_SUMMARY_TAG": "Do you want to delete tag {{param}}?",
|
||||
"DELETION_TITLE_TAG_DENIED": "Signed Tag can't be deleted",
|
||||
<<<<<<< HEAD:src/ui_ng/src/ng/i18n/lang/en-lang.json
|
||||
"DELETION_SUMMARY_TAG_DENIED": "The tag must be removed from Notary before they can be deleted.",
|
||||
=======
|
||||
"DELETION_SUMMARY_TAG_DENIED": "The tag must be removed from the Notary before it can be deleted.",
|
||||
>>>>>>> upstream/dev:src/ui_ng/src/i18n/lang/en-lang.json
|
||||
"FILTER_FOR_REPOSITORIES": "Filter for repositories",
|
||||
"TAG": "Tag",
|
||||
"SIGNED": "Signed",
|
||||
|
Loading…
Reference in New Issue
Block a user