Skip to content

Commit

Permalink
Merge d16972a into 877de50
Browse files Browse the repository at this point in the history
  • Loading branch information
ehamai committed Sep 21, 2018
2 parents 877de50 + d16972a commit e3766ed
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 13 deletions.
2 changes: 2 additions & 0 deletions client/src/app/shared/models/portal-resources.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1175,6 +1175,8 @@
public static privateRepo = 'privateRepo';
public static enterUsername = 'enterUsername';
public static enterPassword = 'enterPassword';
public static containerWriteAccessError = 'containerWriteAccessError';
public static containerReadLockError = 'containerReadLockError';
public static singleContainerTitle = 'singleContainerTitle';
public static singleContainerDescription = 'singleContainerDescription';
public static singleContainerDetailedDescription = 'singleContainerDetailedDescription';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
<div id="container-shield" *ngIf="isLocked"></div>
<form *ngIf="!loading && containerConfigureInfo && containerConfigureInfo.container && containerConfigureInfo.containerForm" [formGroup]="form" id="container-picker">
<nav id="container-tabs" role="tablist" #containerSettingsTabs>
<div *ngFor="let container of containerSettingsManager.containers"
Expand Down Expand Up @@ -47,7 +48,7 @@ <h3>{{container.title}}</h3>
<button *ngIf = "fromMenu"
class="custom-button"
(click)="clickSave()"
[disabled]="isUpdating"
[disabled]="isUpdating || isLocked"
[attr.aria-label]="'save' | translate">

<span *ngIf="!isUpdating">{{'save' | translate}}</span>
Expand All @@ -56,7 +57,7 @@ <h3>{{container.title}}</h3>
<button *ngIf = "fromMenu"
class="custom-button"
(click)="clickDiscard()"
[disabled]="isUpdating"
[disabled]="isUpdating || isLocked"
[attr.aria-label]="'discard' | translate">

<span *ngIf="!isUpdating">{{'discard' | translate}}</span>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,16 @@ $footer-height: 55px;
$spec-card-max-width: 350px;
$center-column-max-width: calc(#{$spec-card-max-width}*4 - 40px);

#container-shield{
position: fixed;
background-color: $translucent-shield-color;
z-index: 10;
bottom: 0px;
top: 0px;
left: 0px;
right: 0px;
}

#container-picker {
padding-bottom: 60px;

Expand Down Expand Up @@ -111,6 +121,10 @@ $center-column-max-width: calc(#{$spec-card-max-width}*4 - 40px);
}

:host-context(#app-root[theme=dark]){
#container-shield{
background-color: $translucent-shield-color-dark;
}

.container{
background-color: lighten($chrome-color-dark, 10%);
box-shadow: $card-box-shadow-hover-dark;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import { PortalService } from '../../shared/services/portal.service';
export interface StatusMessage {
message: string;
level: 'error' | 'success';
}
}

@Component({
selector: 'container-settings',
Expand All @@ -43,6 +43,7 @@ export class ContainerSettingsComponent extends FeatureComponent<TreeViewInfo<Co
public savevButtonDisabled = false;
public discardButtonDisabled = false;
public isUpdating = false;
public isLocked = false;
public fromMenu = false;
public loading = true;
public form: FormGroup;
Expand Down Expand Up @@ -84,37 +85,73 @@ export class ContainerSettingsComponent extends FeatureComponent<TreeViewInfo<Co
})
.do(r => {
if (this.fromMenu) {

const appSettingsResponse: HttpResult<ArmObj<ApplicationSettings>> = r[0];
const siteConfigResponse: HttpResult<ArmObj<SiteConfig>> = r[1];
const publishingCredentialsResponse: HttpResult<ArmObj<PublishingCredentials>> = r[2];

if (appSettingsResponse.isSuccessful
&& siteConfigResponse.isSuccessful
&& publishingCredentialsResponse.isSuccessful) {

this.containerSettingsManager.initializeForConfig(
this.containerConfigureInfo.os,
appSettingsResponse.result.properties,
siteConfigResponse.result.properties,
publishingCredentialsResponse.result.properties);

} else {
let noWritePermission = false;
let hasReadOnlyLock = false;

if (!appSettingsResponse.isSuccessful) {
this._logService.error(LogCategories.containerSettings, errorIds.failedToGetAppSettings, appSettingsResponse.error);
if (appSettingsResponse.error.errorId === errorIds.armErrors.noAccess) {
noWritePermission = true;
} else if (appSettingsResponse.error.errorId === errorIds.armErrors.scopeLocked) {
hasReadOnlyLock = true;
} else {
this._logService.error(LogCategories.containerSettings, errorIds.failedToGetAppSettings, appSettingsResponse.error);
}
}

if (!publishingCredentialsResponse.isSuccessful) {
if (publishingCredentialsResponse.error.errorId === errorIds.armErrors.noAccess) {
noWritePermission = true;
} else if (publishingCredentialsResponse.error.errorId === errorIds.armErrors.scopeLocked) {
hasReadOnlyLock = true;
} else {
this._logService.error(LogCategories.containerSettings, errorIds.failedToGetPublishingCredentials, publishingCredentialsResponse.error);
}
}

if (!siteConfigResponse.isSuccessful) {
this._logService.error(LogCategories.containerSettings, errorIds.failedToGetSiteConfig, siteConfigResponse.error);
}

if (!publishingCredentialsResponse.isSuccessful) {
this._logService.error(LogCategories.containerSettings, errorIds.failedToGetPublishingCredentials, publishingCredentialsResponse.error);
if (noWritePermission) {
this.statusMessage = {
message: this._ts.instant(PortalResources.containerWriteAccessError),
level: 'error',
};
this.isLocked = true;
this.containerSettingsManager.initializeForCreate(this.containerConfigureInfo.os, null);

} else if (hasReadOnlyLock) {
this.statusMessage = {
message: this._ts.instant(PortalResources.containerReadLockError),
level: 'error',
};
this.isLocked = true;
this.containerSettingsManager.initializeForCreate(this.containerConfigureInfo.os, null);

} else {
const error: ErrorEvent = {
errorId: errorIds.failedToGetContainerConfigData,
resourceId: this.containerConfigureInfo.resourceId,
message: this._ts.instant(PortalResources.failedToGetContainerConfigData),
};
this.showComponentError(error);
}

const error: ErrorEvent = {
errorId: errorIds.failedToGetContainerConfigData,
resourceId: this.containerConfigureInfo.resourceId,
message: this._ts.instant(PortalResources.failedToGetContainerConfigData),
};
this.showComponentError(error);
}
} else {
this.containerSettingsManager.initializeForCreate(this.containerConfigureInfo.os, this.containerConfigureInfo.containerFormData);
Expand Down
6 changes: 6 additions & 0 deletions server/Resources/Resources.resx
Original file line number Diff line number Diff line change
Expand Up @@ -3667,6 +3667,12 @@ Set to "External URL" to use an API definition that is hosted elsewhere.</value>
<data name="enterPassword" xml:space="preserve">
<value>enter password</value>
</data>
<data name="containerWriteAccessError" xml:space="preserve">
<value>You must have write access on your app to configure container settings</value>
</data>
<data name="containerReadLockError" xml:space="preserve">
<value>Your container settings cannot be configured unless you remove the read-only lock on your app</value>
</data>
<data name="singleContainerTitle" xml:space="preserve">
<value>Single Container</value>
</data>
Expand Down

0 comments on commit e3766ed

Please sign in to comment.