Bugs, i18n (#658)

* Go to waiting for Cattle (rancher/rancher#4783)

* Save vs Create

* Stacks, disk size input

* Fix broken translations
This commit is contained in:
Vincent Fiduccia 2016-05-13 16:22:36 -07:00
parent 58f95c1d75
commit b6ac83f26a
24 changed files with 183 additions and 137 deletions

View File

@ -6,6 +6,7 @@ var TLS_PORT = 636;
export default Ember.Controller.extend({ export default Ember.Controller.extend({
access: Ember.inject.service(), access: Ember.inject.service(),
settings: Ember.inject.service(),
confirmDisable: false, confirmDisable: false,
errors: null, errors: null,
@ -15,7 +16,7 @@ export default Ember.Controller.extend({
error: null, error: null,
originalModel: null, originalModel: null,
providerName: 'Active Directory', providerName: 'ldap.providerName.ad',
addUserInput: '', addUserInput: '',
addOrgInput: '', addOrgInput: '',

View File

@ -1,6 +1,6 @@
import ActiveDirectory from 'ui/admin-tab/auth/activedirectory/controller'; import ActiveDirectory from 'ui/admin-tab/auth/activedirectory/controller';
export default ActiveDirectory.extend({ export default ActiveDirectory.extend({
providerName: 'OpenLDAP', providerName: 'ldap.providerName.openldap',
isOpenLdap: true, isOpenLdap: true,
}); });

View File

@ -3,6 +3,19 @@ import Ember from 'ember';
export default Ember.Route.extend({ export default Ember.Route.extend({
projects: Ember.inject.service(), projects: Ember.inject.service(),
beforeModel() {
this._super(...arguments);
let project = this.get('projects.current');
let auth = this.modelFor('authenticated');
// Check for waiting only if cattle, because other orchestrations have system services menus that link here
if ( !project.get('kubernetes') && !project.get('swarm') && !project.get('mesos') )
{
return project.checkForWaiting(auth.get('hosts'),auth.get('machines'));
}
},
model: function() { model: function() {
var store = this.get('store'); var store = this.get('store');
return Ember.RSVP.all([ return Ember.RSVP.all([

View File

@ -0,0 +1,31 @@
import Ember from 'ember';
export default Ember.Component.extend({
driverChoices: null,
disk: null,
gigs: null,
tagName: 'tr',
actions: {
remove() {
this.sendAction('remove');
},
setSize(gigs) {
this.set('gigs', gigs);
}
},
didInitAttrs() {
if ( this.get('disk.size') ) {
this.set('gigs', parseInt(this.get('disk.size',10)));
} else {
this.set('gigs', 10);
}
},
gigsChanged: function() {
this.set('disk.size', this.get('gigs')+'g');
}.observes('gigs'),
});

View File

@ -0,0 +1,39 @@
<td>
{{#if disk.root}}
{{t 'formDisks.name.rootDisk'}}
{{else}}
{{input class="form-control input-sm" type="text" value=disk.name placeholder=(t 'formDisks.name.placeholder')}}
{{/if}}
</td>
<td>&nbsp;</td>
<td>
<div class="row">
{{#if disk.root}}
<span class="text-muted">{{t 'formDisks.size.rootDisk'}}</span>
{{else}}
<div class="col-sm-6 col-md-8 r-pt10">{{input-slider initialValue=gigs changed=(action "setSize") valueMin=10 valueMax=500 step=10}}</div>
<div class="col-sm-6 col-md-4 r-pl0 r-pr0">
<div class="input-group input-sm r-p0">
{{input type="text" value=gigs classNames="form-control r-pr0"}}
<div class="input-group-addon">GB</div>
</div>
</div>
{{/if}}
</div>
</td>
<td>&nbsp;</td>
<td>
{{new-select
classNames="form-control"
content=driverChoices
value=disk.driver
}}
</td>
<td class="text-right">
<button class="btn btn-primary btn-sm" {{action "remove"}}><i class="icon icon-minus"/><span class="sr-only">{{t 'generic.remove'}}</span></button>
</td>

View File

@ -23,5 +23,5 @@
}} }}
</section> </section>
{{save-cancel save="save" cancel="cancel"}} {{save-cancel editing=editing save="save" cancel="cancel"}}
{{/liquid-if}} {{/liquid-if}}

View File

@ -79,5 +79,5 @@
</div> </div>
</section> </section>
{{save-cancel save="save" cancel="cancel"}} {{save-cancel editing=editing save="save" cancel="cancel"}}
{{/liquid-if}} {{/liquid-if}}

View File

@ -21,5 +21,5 @@
{{form-container-links initialLinks=model.instanceLinks instance=model.instance allHosts=model.allHosts editing=true changed=(action "setLinks")}} {{form-container-links initialLinks=model.instanceLinks instance=model.instance allHosts=model.allHosts editing=true changed=(action "setLinks")}}
</section> </section>
{{save-cancel save="save" cancel="cancel"}} {{save-cancel editing=editing save="save" cancel="cancel"}}
{{/liquid-if}} {{/liquid-if}}

View File

@ -21,4 +21,4 @@
</div> </div>
</section> </section>
{{save-cancel save="save" cancel="cancel"}} {{save-cancel editing=editing save="save" cancel="cancel"}}

View File

@ -13,4 +13,4 @@
}} }}
</section> </section>
{{save-cancel save="save" cancel="cancel"}} {{save-cancel editing=editing save="save" cancel="cancel"}}

View File

@ -44,4 +44,4 @@
</div> </div>
</section> </section>
{{save-cancel save="save" cancel="cancel"}} {{save-cancel editing=editing save="save" cancel="cancel"}}

View File

@ -41,4 +41,4 @@
</div> </div>
</section> </section>
{{save-cancel save="save" cancel="cancel"}} {{save-cancel editing=editing save="save" cancel="cancel"}}

View File

@ -29,5 +29,5 @@
</section> </section>
{{top-errors errors=errors}} {{top-errors errors=errors}}
{{save-cancel save="save" cancel="cancel"}} {{save-cancel editing=editing save="save" cancel="cancel"}}
{{/liquid-if}} {{/liquid-if}}

View File

@ -71,15 +71,11 @@ export default Ember.Component.extend({
this.get('instance.disks').pushObject({ this.get('instance.disks').pushObject({
name: '', name: '',
root: false, root: false,
size: 40, size: '40g',
driver: this.get('availableDrivers').objectAt(0) driver: this.get('availableDrivers').objectAt(0)
}); });
}, },
setDiskSize(disk,size) {
Ember.set(disk, 'size', size+'g');
},
removeDisk(obj) { removeDisk(obj) {
this.get('instance.disks').removeObject(obj); this.get('instance.disks').removeObject(obj);
}, },

View File

@ -14,42 +14,7 @@
<th width="50"></th> <th width="50"></th>
</tr> </tr>
{{#each disksArray as |disk|}} {{#each disksArray as |disk|}}
<tr> {{disk-row disk=disk driverChoices=driverChoices remove=(action "removeDisk" disk)}}
<td>
{{#if disk.root}}
{{t 'formDisks.name.rootDisk'}}
{{else}}
{{input class="form-control input-sm" type="text" value=disk.name placeholder=(t 'formDisks.name.placeholder')}}
{{/if}}
</td>
<td>&nbsp;</td>
<td>
<div class="row">
{{#if disk.root}}
<span class="text-muted">{{t 'formDisks.size.rootDisk'}}</span>
{{else}}
<div class="col-xs-8 col-sm-9">{{input-slider initialValue=disk.size changed=(action "setDiskSize" disk) valueMin=10 valueMax=500 step=10}}</div>
<div class="col-xs-4 col-sm-3">{{str-replace disk.size match="g" with=" GB"}}</div>
{{/if}}
</div>
</td>
<td>&nbsp;</td>
<td>
{{new-select
classNames="form-control"
content=driverChoices
value=disk.driver
}}
</td>
<td class="text-right">
<button class="btn btn-primary btn-sm" {{action "removeDisk" disk}}><i class="icon icon-minus"/><span class="sr-only">{{t 'generic.remove'}}</span></button>
</td>
</tr>
{{/each}} {{/each}}
</table> </table>
{{/if}} {{/if}}

View File

@ -9,7 +9,7 @@
{{#if showAdd}} {{#if showAdd}}
<li class="hand"><a {{action "add"}}><i class="icon icon-plus"/> {{t 'newContainer.addSidekickContainer'}}</a></li> <li class="hand"><a {{action "add"}}><i class="icon icon-plus"/> {{t 'newContainer.addSidekickContainer'}}</a></li>
{{#if hasVm}} {{#if hasVm}}
<li class="hand"><a {{action "add" true}}><i class="icon icon-plus"/> {{t 'newContainer.addSidekickVM'}}</a></li> <li class="hand"><a {{action "add" true}}><i class="icon icon-plus"/> {{t 'newContainer.addSidekickVm'}}</a></li>
{{/if}} {{/if}}
{{/if}} {{/if}}
</ul> </ul>

View File

@ -1,6 +1,6 @@
<label class="r-mr20 hand"> <label class="r-mr20 hand">
{{radio-button selection=value value=true}} {{t 'schemaComponent.inputBoolean.y'}} {{radio-button selection=value value=true}} {{t 'schema.inputBoolean.y'}}
</label> </label>
<label class="hand"> <label class="hand">
{{radio-button selection=value value=false}} {{t 'schemaComponent.inputBoolean.n'}} {{radio-button selection=value value=false}} {{t 'schema.inputBoolean.n'}}
</label> </label>

View File

@ -54,7 +54,7 @@
{{#link-to "service.new" (query-params environmentId=model.id) classNames="btn btn-default btn-sm"}}{{t 'stackSection.add.service'}}{{/link-to}} {{#link-to "service.new" (query-params environmentId=model.id) classNames="btn btn-default btn-sm"}}{{t 'stackSection.add.service'}}{{/link-to}}
<button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown" aria-expanded="true"> <button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown" aria-expanded="true">
<i class="icon icon-fw icon-chevron-down"></i> <i class="icon icon-fw icon-chevron-down"></i>
<span class="sr-only">{{t 'stackSection.add.toggle'}}</span> <span class="sr-only">{{t 'nav.srToggleDropdown'}}</span>
</button> </button>
<ul class="dropdown-menu dropdown-menu-right" role="menu"> <ul class="dropdown-menu dropdown-menu-right" role="menu">
<li>{{#link-to "service.new-balancer" (query-params environmentId=model.id)}}{{t 'stackSection.add.loadBalancer'}}{{/link-to}}</li> <li>{{#link-to "service.new-balancer" (query-params environmentId=model.id)}}{{t 'stackSection.add.loadBalancer'}}{{/link-to}}</li>
@ -114,7 +114,7 @@
</tbody> </tbody>
</table> </table>
{{else}} {{else}}
<div class="text-muted text-center r-p10">{{t 'viewEditProject.showEdit.none'}}</div> <div class="text-muted text-center r-p10">{{t 'stackSection.none'}}</div>
{{/if}} {{/if}}
</div> </div>
{{/liquid-if}} {{/liquid-if}}

View File

@ -13,7 +13,7 @@
</div> </div>
<div class="footer-actions"> <div class="footer-actions">
<div class="console-status text-muted">{{status}}</div>
<button {{action "ctrlAltDelete"}} class="btn btn-default" disabled={{ctrlAltDeleteDisabled}}>{{t 'vmConsole.footerActions.buttonSend'}}</button> <button {{action "ctrlAltDelete"}} class="btn btn-default" disabled={{ctrlAltDeleteDisabled}}>{{t 'vmConsole.footerActions.buttonSend'}}</button>
<button {{action "cancel"}} class="btn btn-primary">{{t 'vmConsole.footerActions.buttonCancel'}}</button> <button {{action "cancel"}} class="btn btn-primary">{{t 'vmConsole.footerActions.buttonCancel'}}</button>
<div class="console-status text-muted">{{status}}</div>
</div> </div>

View File

@ -214,6 +214,7 @@ UL.list-lines {
margin : 20px 0; margin : 20px 0;
padding-bottom : 20px; padding-bottom : 20px;
text-align : center; text-align : center;
position : relative;
} }
.well { .well {

View File

@ -7,6 +7,7 @@
} }
.console-status { .console-status {
float: left; position: absolute;
top: 0;
margin: 10px 20px 10px 0; margin: 10px 20px 10px 0;
} }

View File

@ -1,64 +1,64 @@
<section class="well"> <section class="well">
<h2>{{t 'openLdap.configuredIndication.header.providerName' providerName=providerName}} {{#if access.enabled}}<b>{{t 'openLdap.configuredIndication.header.enabled'}}</b>{{else}}<b class="text-warning">{{t 'openLdap.configuredIndication.header.disabled'}}</b>{{/if}}</h2> <h2>{{t 'ldap.configuredIndication.header.providerName' providerName=(t providerName)}} {{#if access.enabled}}<b>{{t 'ldap.configuredIndication.header.enabled'}}</b>{{else}}<b class="text-warning">{{t 'ldap.configuredIndication.header.disabled'}}</b>{{/if}}</h2>
<div> <div>
{{#if access.enabled}} {{#if access.enabled}}
{{t 'openLdap.configuredIndication.header.subtext.enabled' {{t 'ldap.configuredIndication.header.subtext.enabled'
appName=settings.appName appName=settings.appName
providerName=providerName}} providerName=(t providerName)}}
{{else}} {{else}}
{{t 'openLdap.configuredIndication.header.subtext.disabled' appName=settings.appName}} {{t 'ldap.configuredIndication.header.subtext.disabled' appName=settings.appName}}
{{/if}} {{/if}}
</div> </div>
</section> </section>
{{#if access.enabled}} {{#if access.enabled}}
<section class="well"> <section class="well">
<h4>{{t 'openLdap.accessEnabled.header'}}</h4> <h4>{{t 'ldap.accessEnabled.header'}}</h4>
<hr/> <hr/>
<p class="help-block">{{t 'openLdap.accessEnabled.subtext'}}</p> <p class="help-block">{{t 'ldap.accessEnabled.subtext'}}</p>
<div class="row"> <div class="row">
<div class="col-md-4"> <div class="col-md-4">
<h4>{{t 'openLdap.accessEnabled.general.header'}}</h4> <h4>{{t 'ldap.accessEnabled.general.header'}}</h4>
<div><b>{{t 'openLdap.accessEnabled.general.server'}} </b> <span class="text-muted">{{model.server}}:{{model.port}}</span></div> <div><b>{{t 'ldap.accessEnabled.general.server'}} </b> <span class="text-muted">{{model.server}}:{{model.port}}</span></div>
<div><b>{{t 'openLdap.accessEnabled.general.tls'}} </b> <span class="text-muted">{{if model.tls "Yes" "No"}}</span></div> <div><b>{{t 'ldap.accessEnabled.general.tls'}} </b> <span class="text-muted">{{if model.tls "Yes" "No"}}</span></div>
<div><b>{{t 'openLdap.accessEnabled.general.serviceAccount'}} </b> <span class="text-muted">{{model.serviceAccountUsername}}</span></div> <div><b>{{t 'ldap.accessEnabled.general.serviceAccount'}} </b> <span class="text-muted">{{model.serviceAccountUsername}}</span></div>
<div><b>{{t 'openLdap.accessEnabled.general.searchBase'}} </b> <span class="text-muted">{{model.domain}}</span></div> <div><b>{{t 'ldap.accessEnabled.general.searchBase'}} </b> <span class="text-muted">{{model.domain}}</span></div>
<div><b>{{t 'openLdap.accessEnabled.general.defaultDomain'}} </b> <span class="text-muted">{{model.loginDomain}}</span></div> <div><b>{{t 'ldap.accessEnabled.general.defaultDomain'}} </b> <span class="text-muted">{{model.loginDomain}}</span></div>
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<h4>{{t 'openLdap.accessEnabled.users.header'}}</h4> <h4>{{t 'ldap.accessEnabled.users.header'}}</h4>
<div><b>{{t 'openLdap.accessEnabled.users.objectClass'}} </b> <span class="text-muted">{{model.userObjectClass}}</span></div> <div><b>{{t 'ldap.accessEnabled.users.objectClass'}} </b> <span class="text-muted">{{model.userObjectClass}}</span></div>
<div><b>{{t 'openLdap.accessEnabled.users.login'}} </b> <span class="text-muted">{{model.userLoginField}}</span></div> <div><b>{{t 'ldap.accessEnabled.users.login'}} </b> <span class="text-muted">{{model.userLoginField}}</span></div>
<div><b>{{t 'openLdap.accessEnabled.users.name'}} </b> <span class="text-muted">{{model.userNameField}}</span></div> <div><b>{{t 'ldap.accessEnabled.users.name'}} </b> <span class="text-muted">{{model.userNameField}}</span></div>
<div><b>{{t 'openLdap.accessEnabled.users.search'}} </b> <span class="text-muted">{{model.userSearchField}}</span></div> <div><b>{{t 'ldap.accessEnabled.users.search'}} </b> <span class="text-muted">{{model.userSearchField}}</span></div>
<div><b>{{t 'openLdap.accessEnabled.users.enabled'}} </b> <span class="text-muted">{{model.userEnabledAttribute}}</span></div> <div><b>{{t 'ldap.accessEnabled.users.enabled'}} </b> <span class="text-muted">{{model.userEnabledAttribute}}</span></div>
<div><b>{{t 'openLdap.accessEnabled.users.disabledBitMask'}} </b> <span class="text-muted">{{model.userDisabledBitMask}}</span></div> <div><b>{{t 'ldap.accessEnabled.users.disabledBitMask'}} </b> <span class="text-muted">{{model.userDisabledBitMask}}</span></div>
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<h4>{{t 'openLdap.accessEnabled.group.header'}}</h4> <h4>{{t 'ldap.accessEnabled.group.header'}}</h4>
<div><b>{{t 'openLdap.accessEnabled.group.objectClass'}} </b> <span class="text-muted">{{model.groupObjectClass}}</span></div> <div><b>{{t 'ldap.accessEnabled.group.objectClass'}} </b> <span class="text-muted">{{model.groupObjectClass}}</span></div>
<div><b>{{t 'openLdap.accessEnabled.group.name'}} </b> <span class="text-muted">{{model.groupNameField}}</span></div> <div><b>{{t 'ldap.accessEnabled.group.name'}} </b> <span class="text-muted">{{model.groupNameField}}</span></div>
<div><b>{{t 'openLdap.accessEnabled.group.search'}} </b> <span class="text-muted">{{model.groupSearchField}}</span></div> <div><b>{{t 'ldap.accessEnabled.group.search'}} </b> <span class="text-muted">{{model.groupSearchField}}</span></div>
</div> </div>
</div> </div>
</section> </section>
<section class="well"> <section class="well">
<h4>{{format-html-message 'openLdap.accessEnabled.disable.header'}}</h4> <h4>{{format-html-message 'ldap.accessEnabled.disable.header'}}</h4>
<hr/> <hr/>
<p> <p>
{{format-html-message 'openLdap.accessEnabled.disable.warning' appName=settings.appName}} {{format-html-message 'ldap.accessEnabled.disable.warning' appName=settings.appName}}
</p> </p>
{{#if confirmDisable}} {{#if confirmDisable}}
<button class="btn btn-danger" {{action "disable"}}> <button class="btn btn-danger" {{action "disable"}}>
<i class="icon icon-alert"></i> {{t 'openLdap.accessEnabled.disable.confirmDisable.post'}} <i class="icon icon-alert"></i> {{t 'ldap.accessEnabled.disable.confirmDisable.post'}}
</button> </button>
{{else}} {{else}}
<button class="btn btn-danger" {{action "promptDisable"}}> <button class="btn btn-danger" {{action "promptDisable"}}>
<i class="icon icon-umbrella"></i> {{t 'openLdap.accessEnabled.disable.confirmDisable.pre'}} <i class="icon icon-umbrella"></i> {{t 'ldap.accessEnabled.disable.confirmDisable.pre'}}
</button> </button>
{{/if}} {{/if}}
@ -68,23 +68,23 @@
{{#unless access.enabled}} {{#unless access.enabled}}
<section class="well"> <section class="well">
<h4></h4> <h4></h4>
<h4>{{t 'openLdap.accessConfig.header' providerName=providerName}}</h4> <h4>{{t 'ldap.accessConfig.header' providerName=(t providerName)}}</h4>
<hr/> <hr/>
<p class="help-block">{{format-html-message 'openLdap.accessConfig.subtext1' providerName=providerName}}</p> <p class="help-block">{{format-html-message 'ldap.accessConfig.subtext1' providerName=(t providerName)}}</p>
<div class="row"> <div class="row">
<div class="col-md-6"> <div class="col-md-6">
<div class="form-group"> <div class="form-group">
<label>{{t 'openLdap.accessConfig.hostName.labelText'}}</label> <label>{{t 'ldap.accessConfig.hostName.labelText'}}</label>
{{input type="text" value=model.server classNames="form-control"}} {{input type="text" value=model.server classNames="form-control"}}
</div> </div>
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
<div class="form-group"> <div class="form-group">
<label>{{t 'openLdap.accessConfig.port.labelText'}}</label> <label>{{t 'ldap.accessConfig.port.labelText'}}</label>
<div class="input-group"> <div class="input-group">
{{input type="text" value=model.port type="number" min=1 max=65535 classNames="form-control"}} {{input type="text" value=model.port type="number" min=1 max=65535 classNames="form-control"}}
<span class="input-group-addon"> <span class="input-group-addon">
<label>{{t 'openLdap.accessConfig.port.checkbox'}} {{input type="checkbox" checked=model.tls}}</label> <label>{{t 'ldap.accessConfig.port.checkbox'}} {{input type="checkbox" checked=model.tls}}</label>
</span> </span>
</div> </div>
</div> </div>
@ -95,17 +95,17 @@
</div> </div>
</div> </div>
<p class="help-block">{{t 'openLdap.accessConfig.subtext2' appName=settings.appName}}</p> <p class="help-block">{{t 'ldap.accessConfig.subtext2' appName=settings.appName}}</p>
<div class="row"> <div class="row">
<div class="col-md-6"> <div class="col-md-6">
<div class="form-group"> <div class="form-group">
<label>{{t 'openLdap.accessConfig.serviceUsername.labelText'}}</label> <label>{{t 'ldap.accessConfig.serviceUsername.labelText'}}</label>
{{input type="text" value=model.serviceAccountUsername classNames="form-control"}} {{input type="text" value=model.serviceAccountUsername classNames="form-control"}}
</div> </div>
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
<div class="form-group"> <div class="form-group">
<label>{{t 'openLdap.accessConfig.servicePassword.labelText'}}</label> <label>{{t 'ldap.accessConfig.servicePassword.labelText'}}</label>
{{input type="password" value=model.serviceAccountPassword classNames="form-control"}} {{input type="password" value=model.serviceAccountPassword classNames="form-control"}}
</div> </div>
</div> </div>
@ -114,17 +114,17 @@
<div class="row"> <div class="row">
<div class="col-md-6"> <div class="col-md-6">
<div class="form-group"> <div class="form-group">
<p class="help-block">{{t 'openLdap.accessConfig.searchBase.helpText'}}</p> <p class="help-block">{{t 'ldap.accessConfig.searchBase.helpText'}}</p>
<label>{{t 'openLdap.accessConfig.searchBase.labelText'}}</label> <label>{{t 'ldap.accessConfig.searchBase.labelText'}}</label>
{{input type="text" value=model.domain classNames="form-control" placeholder=(t 'openLdap.accessConfig.searchBase.placeholder')}} {{input type="text" value=model.domain classNames="form-control" placeholder=(t 'ldap.accessConfig.searchBase.placeholder')}}
</div> </div>
</div> </div>
{{#unless isOpenLdap}} {{#unless isOpenLdap}}
<div class="col-md-6"> <div class="col-md-6">
<p class="help-block">{{t 'openLdap.accessConfig.defaultDomain.helpText'}}</p> <p class="help-block">{{t 'ldap.accessConfig.defaultDomain.helpText'}}</p>
<div class="form-group"> <div class="form-group">
<label>{{t 'openLdap.accessConfig.defaultDomain.labelText'}}</label> <label>{{t 'ldap.accessConfig.defaultDomain.labelText'}}</label>
{{input type="text" value=model.loginDomain classNames="form-control" placeholder=(t 'openLdap.accessConfig.defaultDomain.placeholder')}} {{input type="text" value=model.loginDomain classNames="form-control" placeholder=(t 'ldap.accessConfig.defaultDomain.placeholder')}}
</div> </div>
</div> </div>
{{/unless}} {{/unless}}
@ -132,49 +132,49 @@
</section> </section>
<section class="well"> <section class="well">
<h4>{{t 'openLdap.customizeSchema.header'}}</h4> <h4>{{t 'ldap.customizeSchema.header'}}</h4>
<hr/> <hr/>
<p class="help-block">{{t 'openLdap.customizeSchema.helpText'}}</p> <p class="help-block">{{t 'ldap.customizeSchema.helpText'}}</p>
<div class="row"> <div class="row">
<div class="col-md-6"> <div class="col-md-6">
<h4>{{t 'openLdap.customizeSchema.users.header'}}</h4> <h4>{{t 'ldap.customizeSchema.users.header'}}</h4>
<div class="form-group"> <div class="form-group">
<label>{{t 'openLdap.customizeSchema.users.objectClass.labelText'}}</label> <label>{{t 'ldap.customizeSchema.users.objectClass.labelText'}}</label>
{{input type="text" value=model.userObjectClass type="text" classNames="form-control"}} {{input type="text" value=model.userObjectClass type="text" classNames="form-control"}}
</div> </div>
<div class="form-group"> <div class="form-group">
<label>{{t 'openLdap.customizeSchema.users.login.labelText'}}</label> <label>{{t 'ldap.customizeSchema.users.login.labelText'}}</label>
{{input type="text" value=model.userLoginField type="text" classNames="form-control"}} {{input type="text" value=model.userLoginField type="text" classNames="form-control"}}
</div> </div>
<div class="form-group"> <div class="form-group">
<label>{{t 'openLdap.customizeSchema.users.name.labelText'}}</label> <label>{{t 'ldap.customizeSchema.users.name.labelText'}}</label>
{{input type="text" value=model.userNameField type="text" classNames="form-control"}} {{input type="text" value=model.userNameField type="text" classNames="form-control"}}
</div> </div>
<div class="form-group"> <div class="form-group">
<label>{{t 'openLdap.customizeSchema.users.search.labelText'}}</label> <label>{{t 'ldap.customizeSchema.users.search.labelText'}}</label>
{{input type="text" value=model.userSearchField type="text" classNames="form-control"}} {{input type="text" value=model.userSearchField type="text" classNames="form-control"}}
</div> </div>
<div class="form-group"> <div class="form-group">
<label>{{t 'openLdap.customizeSchema.users.status.labelText'}}</label> <label>{{t 'ldap.customizeSchema.users.status.labelText'}}</label>
{{input type="text" value=model.userEnabledAttribute type="text" classNames="form-control"}} {{input type="text" value=model.userEnabledAttribute type="text" classNames="form-control"}}
</div> </div>
<div class="form-group"> <div class="form-group">
<label>{{t 'openLdap.customizeSchema.users.disabledBitMask.labelText'}}</label> <label>{{t 'ldap.customizeSchema.users.disabledBitMask.labelText'}}</label>
{{input type="text" value=model.userDisabledBitMask type="number" min=1 classNames="form-control"}} {{input type="text" value=model.userDisabledBitMask type="number" min=1 classNames="form-control"}}
</div> </div>
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
<h4>{{t 'openLdap.customizeSchema.groups.header'}}</h4> <h4>{{t 'ldap.customizeSchema.groups.header'}}</h4>
<div class="form-group"> <div class="form-group">
<label>{{t 'openLdap.customizeSchema.groups.objectClass.labelText'}}</label> <label>{{t 'ldap.customizeSchema.groups.objectClass.labelText'}}</label>
{{input type="text" value=model.groupObjectClass type="text" classNames="form-control"}} {{input type="text" value=model.groupObjectClass type="text" classNames="form-control"}}
</div> </div>
<div class="form-group"> <div class="form-group">
<label>{{t 'openLdap.customizeSchema.groups.name.labelText'}}</label> <label>{{t 'ldap.customizeSchema.groups.name.labelText'}}</label>
{{input type="text" value=model.groupNameField type="text" classNames="form-control"}} {{input type="text" value=model.groupNameField type="text" classNames="form-control"}}
</div> </div>
<div class="form-group"> <div class="form-group">
<label>{{t 'openLdap.customizeSchema.groups.search.labelText'}}</label> <label>{{t 'ldap.customizeSchema.groups.search.labelText'}}</label>
{{input type="text" value=model.groupSearchField type="text" classNames="form-control"}} {{input type="text" value=model.groupSearchField type="text" classNames="form-control"}}
</div> </div>
</div> </div>
@ -182,21 +182,21 @@
</section> </section>
<section class="well"> <section class="well">
<h4>{{t 'openLdap.testAuth.header'}}</h4> <h4>{{t 'ldap.testAuth.header'}}</h4>
<hr/> <hr/>
<p class="help-block">{{t 'openLdap.testAuth.helpText' providerName=providerName}}</p> <p class="help-block">{{t 'ldap.testAuth.helpText' providerName=(t providerName)}}</p>
{{top-errors errors=errors}} {{top-errors errors=errors}}
<div class="row"> <div class="row">
<div class="col-md-4"> <div class="col-md-4">
<div class="form-group"> <div class="form-group">
<label>{{t 'openLdap.testAuth.userName.labelText'}}</label> <label>{{t 'ldap.testAuth.userName.labelText'}}</label>
{{input type="text" value=username classNames="form-control"}} {{input type="text" value=username classNames="form-control"}}
</div> </div>
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<div class="form-group"> <div class="form-group">
<label>{{t 'openLdap.testAuth.password.labelText'}}</label> <label>{{t 'ldap.testAuth.password.labelText'}}</label>
{{input type="password" value=password classNames="form-control"}} {{input type="password" value=password classNames="form-control"}}
</div> </div>
</div> </div>
@ -205,9 +205,9 @@
<label>&nbsp;</label> <label>&nbsp;</label>
<button disabled={{createDisabled}} class="btn btn-primary" style="display: block;" {{action "test"}}> <button disabled={{createDisabled}} class="btn btn-primary" style="display: block;" {{action "test"}}>
{{#if testing}} {{#if testing}}
<i class="icon icon-spinner icon-spin"></i> {{t 'openLdap.testAuth.authenticate.post'}} <i class="icon icon-spinner icon-spin"></i> {{t 'ldap.testAuth.authenticate.post'}}
{{else}} {{else}}
{{t 'openLdap.testAuth.authenticate.pre'}} {{t 'ldap.testAuth.authenticate.pre'}}
{{/if}} {{/if}}
</button> </button>
</div> </div>

View File

@ -168,7 +168,7 @@ const navTree = [
id: 'cattle', id: 'cattle',
localizedLabel: 'nav.cattle.tab', localizedLabel: 'nav.cattle.tab',
route: 'environments', route: 'environments',
queryParams: {which: 'all'}, queryParams: {which: 'user'},
ctx: [getProjectId], ctx: [getProjectId],
moreCurrentWhen: ['authenticated.project.waiting'], moreCurrentWhen: ['authenticated.project.waiting'],
condition: function() { return this.get('hasProject') && !this.get('hasKubernetes') && !this.get('hasSwarm') && !this.get('hasMesos'); }, condition: function() { return this.get('hasProject') && !this.get('hasKubernetes') && !this.get('hasSwarm') && !this.get('hasMesos'); },

View File

@ -816,7 +816,7 @@ settingsPage:
stacksPage: stacksPage:
header: header:
all: All Stacks all: All Stacks
user: Stacks user: User Stacks
system: System Stacks system: System Stacks
actionButton: Add Stack actionButton: Add Stack
sort: sort:
@ -977,7 +977,10 @@ hostPartial:
addOptions: addOptions:
labels: Labels labels: Labels
openLdap: ldap:
providerName:
openldap: OpenLDAP
ad: Active Directory
configuredIndication: configuredIndication:
header: header:
providerName: "{providerName} is" providerName: "{providerName} is"
@ -2078,8 +2081,13 @@ projectRow:
none: No description none: No description
schema: schema:
inputBoolean:
y: "True"
n: "False"
inputCertificate: inputCertificate:
prompt: Choose a Certificate... prompt: Choose a Certificate...
inputEnum:
option: Choose an option...
inputService: inputService:
prompt: Choose a Service... prompt: Choose a Service...
@ -2095,13 +2103,6 @@ schedulingRuleRow:
haveA: have a haveA: have a
of: of of: of
schemaComponent:
inputBoolean:
y: True
n: False
inputEnum:
option: Choose an option...
sidekickAddtlInfo: sidekickAddtlInfo:
info: Info info: Info
image: Image image: Image
@ -2114,7 +2115,6 @@ sidekickAddtlInfo:
stackSection: stackSection:
outputs: Outputs outputs: Outputs
toggle: Toggle Dropdown
description: Description description: Description
none: No Services none: No Services
container: | container: |
@ -2204,13 +2204,12 @@ viewEditProject:
vmConsole: vmConsole:
header: "console:" header: "Console:"
protip: "ProTip: Hold the {alternateLabel} key when opening shell access to launch a new window." protip: "ProTip: Hold the {alternateLabel} key when opening shell access to launch a new window."
canvas: Canvas not supported. canvas: Canvas not supported.
footerActions:
footeractions: buttonSend: Send Ctrl-Alt-Delete
buttonsend: Send Ctrl-Alt-Delete buttonCancel: Close
buttoncancel: Close
volumeRow: volumeRow:
activeMounts: activeMounts:
@ -2272,9 +2271,9 @@ nav:
web: Mesos UI web: Mesos UI
system: System system: System
cattle: cattle:
tab: Applications tab: Stacks
all: All all: All
user: Stacks user: User
system: System system: System
catalog: catalog:
tab: Catalog tab: Catalog