keycloak-uncached
Changes
admin-ui/src/main/resources/META-INF/resources/admin/partials/application-credentials.html 123(+58 -65)
admin-ui/src/main/resources/META-INF/resources/admin/partials/application-installation.html 45(+20 -25)
admin-ui/src/main/resources/META-INF/resources/admin/partials/application-role-detail.html 267(+131 -136)
admin-ui/src/main/resources/META-INF/resources/admin/partials/application-role-list.html 145(+70 -75)
admin-ui/src/main/resources/META-INF/resources/admin/partials/application-scope-mappings.html 181(+92 -89)
admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-credentials.html 115(+57 -58)
admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-installation.html 36(+12 -24)
admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-scope-mappings.html 169(+82 -87)
Details
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/js/app.js b/admin-ui/src/main/resources/META-INF/resources/admin/js/app.js
index 68bc319..7c675c0 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/js/app.js
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/js/app.js
@@ -792,14 +792,9 @@ module.directive('kcNavigation', function ($compile, Notifications) {
attrs.kcSocial = false;
}
}
- /*
- controller: function($scope){
- $scope.kcSocial = $scope.kcSocial || false;
- } */
}
});
-
/*
* Used to select the element (invoke $(elem).select()) on specified action list.
* Usages kc-select-action="click mouseover"
@@ -871,4 +866,92 @@ module.filter('capitalize', function() {
return function(input) {
return input.substring(0, 1).toUpperCase() + input.substring(1);
}
+});
+
+
+/*
+ * TODO - create directive for form controlls
+ * Would be used like this:
+ * <kc-form-control kc-changed="changed" kc-create="createRealm" kc-action-cancel="cancel" kc-action-delete="remove"></kc-form-control>
+ */
+
+module.directive('kcFormControl', function () {
+ return {
+ scope: {
+ kcCreate: "=",
+ kcChanged: "=",
+ kcActionCancel: "&",
+ kcActionRemove: "&"
+ },
+ restrict: 'E',
+ replace: true,
+ templateUrl: "templates/kc-form-control-buttons.html"
+ }
+});
+
+module.directive('kcButtonSave', function ($compile, Notifications) {
+ return {
+ restrict: 'A',
+ replace: true,
+ link: function ($scope, elem, attr, ctrl) {
+ elem.addClass("btn btn-primary btn-lg");
+ elem.attr("type","submit");
+ elem.bind('click', function() {
+ $scope.$apply(function() {
+ var form = elem.closest('form');
+ if (form && form.attr('name')) {
+ if ($scope[form.attr('name')].$valid) {
+ form.find('.ng-valid').removeClass('error');
+ $scope['save']();
+ } else {
+ Notifications.error("Missing or invalid field(s). Please verify the fields in red.")
+ form.find('.ng-invalid').addClass('error');
+ form.find('.ng-valid').removeClass('error');
+ }
+ }
+ });
+ })
+ }
+ }
+});
+
+module.directive('kcButtonDelete', function() {
+ return {
+ restrict: 'A',
+ compile: function(element, attrs){
+ element.addClass("btn btn-danger btn-lg");
+ element.attr("type","submit");
+ }
+ }
+});
+
+module.directive('kcButtonReset', function ($compile, Notifications) {
+ return {
+ restrict: 'A',
+ link: function ($scope, elem, attr, ctrl) {
+ elem.addClass("btn btn-default btn-lg");
+ elem.attr("type","submit");
+ elem.bind('click', function() {
+ $scope.$apply(function() {
+ var form = elem.closest('form');
+ if (form && form.attr('name')) {
+ form.find('.ng-valid').removeClass('error');
+ form.find('.ng-invalid').removeClass('error');
+ $scope['reset']();
+ }
+ })
+ })
+ }
+ }
+});
+
+module.directive('kcButtonCancel', function ($compile, Notifications) {
+ return {
+ restrict: 'A',
+ replace: true,
+ compile: function(element, attrs){
+ element.addClass("btn btn-default btn-lg");
+ element.attr("type","submit");
+ }
+ }
});
\ No newline at end of file
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-credentials.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-credentials.html
index 59de7a6..d511b54 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-credentials.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-credentials.html
@@ -1,67 +1,60 @@
-<div id="wrapper" class="container">
- <div class="row">
- <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
- <div id="content-area" class="col-md-9" role="main">
- <div class="top-nav">
- <ul class="rcue-tabs">
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li>
- <li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li>
- </ul>
- </div>
- <div id="content">
- <ol class="breadcrumb" data-ng-hide="create">
- <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
- <li class="active">Credentials</li>
- </ol>
- <h2 data-ng-hide="create"><span>{{application.name}}</span> Credentials</h2>
- <form name="credentialForm" novalidate >
- <fieldset data-ng-show="passwordRequired">
- <legend uncollapsed><span class="text">Change Password</span></legend>
- <div class="form-group">
- <label for="password">New Password</label>
- <div class="controls">
- <input type="password" id="password" name="password" data-ng-model="password" autofocus
- required>
- </div>
- </div>
- <div class="form-group">
- <label class="two-lines" for="password">New Password Confirmation</label>
- <div class="controls">
- <input type="password" id="confirmPassword" name="confirmPassword" data-ng-model="confirmPassword"
- required>
- </div>
- </div>
- <div class="form-actions">
- <button type="submit" data-ng-click="changePassword()" class="primary" ng-show="password != null">Save
- </button>
- </div>
- </fieldset>
- <fieldset data-ng-show="totpRequired">
- <legend uncollapsed><span class="text">Change TOTP Key</span></legend>
- <div class="form-group">
- <label for="totp">New Key</label>
- <div class="controls">
- <input type="text" id="totp" name="totp" data-ng-model="totp" autofocus
- required>
- <button type="submit" data-ng-click="generateTotp()">Generate
- </button>
- </div>
- </div>
- <div class="form-actions">
- <label></label>
- <button type="submit" data-ng-click="changeTotp()" class="primary" ng-show="totp != null">Save
- </button>
- </div>
- </fieldset>
- </form>
- </div>
- </div>
- <div id="container-right-bg"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div id="content-area" class="col-md-9" role="main">
+ <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li>
+ <li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li>
+ </ul>
+ <div id="content">
+ <ol class="breadcrumb" data-ng-hide="create">
+ <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
+ <li class="active">Credentials</li>
+ </ol>
+ <h2 data-ng-hide="create"><span>{{application.name}}</span> Credentials</h2>
+ <form class="form-horizontal" name="credentialForm" novalidate >
+ <fieldset data-ng-show="passwordRequired">
+ <legend uncollapsed><span class="text">Change Password</span></legend>
+ <div class="form-group">
+ <label class="col-sm-2 control-label" for="password">New Password</label>
+ <div class="col-sm-4">
+ <input class="form-control" type="password" id="password" name="password" data-ng-model="password" autofocus
+ required>
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-sm-2 control-label" for="password">New Password Confirmation</label>
+ <div class="col-sm-4">
+ <input class="form-control" type="password" id="confirmPassword" name="confirmPassword" data-ng-model="confirmPassword"
+ required>
+ </div>
+ </div>
+ <div class="form-actions">
+ <button type="submit" data-ng-click="changePassword()" class="btn btn-primary btn-lg" ng-show="password != null">Save
+ </button>
+ </div>
+ </fieldset>
+ <fieldset data-ng-show="totpRequired">
+ <legend uncollapsed><span class="text">Change TOTP Key</span></legend>
+ <div class="form-group">
+ <label class="col-sm-2 control-label" for="totp">New Key</label>
+ <div class="col-sm-4">
+ <input class="form-control" type="text" id="totp" name="totp" data-ng-model="totp" autofocus
+ required>
+ <button class="btn btn-primary" type="submit" data-ng-click="generateTotp()">Generate
+ </button>
+ </div>
+ </div>
+ <div class="form-actions">
+ <label class="col-sm-2 control-label"></label>
+ <button type="submit" data-ng-click="changeTotp()" class="btn btn-primary btn-lg" ng-show="totp != null">Save
+ </button>
+ </div>
+ </fieldset>
+ </form>
</div>
</div>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-detail.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-detail.html
index b8ea144..214f873 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-detail.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-detail.html
@@ -1,118 +1,102 @@
-<div id="wrapper" class="container">
- <div class="row">
- <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
- <div id="content-area" class="col-md-9" role="main">
- <div class="top-nav" data-ng-show="!create">
- <ul class="rcue-tabs">
- <li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li>
- </ul>
- </div>
- <div class="top-nav" data-ng-show="create">
- <ul class="rcue-tabs">
- <li></li>
- </ul>
- </div>
- <div id="content">
- <ol class="breadcrumb" data-ng-show="create">
- <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
- <li class="active">Add Application</li>
- </ol>
- <h2 class="pull-left" data-ng-show="create"><span>{{realm.realm}}</span> Add Application</h2>
- <p class="subtitle" data-ng-show="create"><span class="required">*</span> Required fields</p>
- <ol class="breadcrumb" data-ng-hide="create">
- <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
- <li class="active">Settings</li>
- </ol>
- <h2 data-ng-hide="create"><span>{{application.name}}</span> Settings</h2>
- <form name="applicationForm" novalidate>
- <fieldset class="border-top">
- <div class="form-group">
- <label for="name">Name <span class="required" data-ng-show="create">*</span></label>
- <div class="controls">
- <input type="text" id="name" name="name" data-ng-model="application.name" autofocus
- required>
- </div>
- </div>
-
- <div class="form-group clearfix block">
- <label for="enabled" class="control-label">Enabled</label>
- <input ng-model="application.enabled" name="enabled" id="enabled" onoffswitch />
- </div>
- <div class="form-group">
- <label for="baseUrl" class="control-label">Base URL</label>
-
- <div class="controls">
- <input class="input-small" type="text" name="baseUrl" id="baseUrl"
- data-ng-model="application.baseUrl">
- </div>
- </div>
- <div class="form-group">
- <label for="adminUrl" class="control-label">Admin URL</label>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div id="content-area" class="col-md-9" role="main">
+ <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
+ <li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li>
+ </ul>
+ <div id="content">
+ <ol class="breadcrumb" data-ng-show="create">
+ <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
+ <li class="active">Add Application</li>
+ </ol>
+ <h2 data-ng-show="create"><span>{{realm.realm}}</span> Add Application</h2>
+ <p class="subtitle" data-ng-show="create"><span class="required">*</span> Required fields</p>
+ <ol class="breadcrumb" data-ng-hide="create">
+ <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
+ <li class="active">Settings</li>
+ </ol>
+ <h2 data-ng-hide="create"><span>{{application.name}}</span> Settings</h2>
+ <form class="form-horizontal" name="applicationForm" novalidate>
+ <fieldset class="border-top">
+ <div class="form-group">
+ <label class="col-sm-2 control-label" for="name">Name <span class="required" data-ng-show="create">*</span></label>
+ <div class="col-sm-4">
+ <input class="form-control" type="text" id="name" name="name" data-ng-model="application.name" autofocus required>
+ </div>
+ </div>
- <div class="controls">
- <input class="input-small" type="text" name="adminUrl" id="adminUrl"
- data-ng-model="application.adminUrl">
- </div>
- </div>
- <div class="form-group">
- <label for="newWebOrigin" class="control-label">Web Origin</label>
- <div class="controls">
- <div ng-repeat="webOrigin in application.webOrigins" class="item-deletable">
- <input class="input-small" type="text" data-ng-class="{'input-below':!$first}"
- name="webOrigin" id="webOrigin" data-ng-model="webOrigin" readonly />
- <button type="button" data-ng-click="deleteWebOrigin($index)" class="btn-delete">
- Delete</button>
- </div>
- <input class="input-small" type="text" name="newWebOrigin" id="newWebOrigin"
- placeholder="New Web Origin..." data-ng-model="newWebOrigin"
- data-ng-class="{'input-below':application.webOrigins.length}" />
- <button data-ng-click="addWebOrigin()" ng-show="newWebOrigin.length > 0">Add</button>
- </div>
- </div>
- <div class="form-group">
- <label for="newRedirectUri" class="control-label">Redirect URI</label>
- <div class="controls">
- <div ng-repeat="redirectUri in application.redirectUris" class="item-deletable">
- <input class="input-small" type="text" data-ng-class="{'input-below':!$first}"
- name="redirectUri" id="redirectUri" data-ng-model="redirectUri" readonly />
- <button type="button" data-ng-click="deleteRedirectUri($index)" class="btn-delete">
- Delete</button>
- </div>
- <input class="input-small" type="text" name="newRedirectUri" id="newRedirectUri"
- placeholder="New Redirect URI..." data-ng-model="newRedirectUri"
- data-ng-class="{'input-below':application.redirectUris.length}" />
- <button data-ng-click="addRedirectUri()" ng-show="newRedirectUri.length > 0">Add</button>
- </div>
+ <div class="form-group clearfix block">
+ <label class="col-sm-2 control-label" for="enabled">Enabled</label>
+ <div class="col-sm-4">
+ <input ng-model="application.enabled" name="enabled" id="enabled" onoffswitch />
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-sm-2 control-label" for="baseUrl">Base URL</label>
+ <div class="col-sm-4">
+ <input class="form-control" type="text" name="baseUrl" id="baseUrl"
+ data-ng-model="application.baseUrl">
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-sm-2 control-label" for="adminUrl">Admin URL</label>
+ <div class="col-sm-4">
+ <input class="form-control" type="text" name="adminUrl" id="adminUrl"
+ data-ng-model="application.adminUrl">
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-sm-2 control-label" for="newWebOrigin">Web Origin</label>
+ <div class="col-sm-4">
+ <div ng-repeat="webOrigin in application.webOrigins" class="item-deletable">
+ <input class="form-control kc-button-control"
+ type="text" data-ng-class="{'input-below':!$first}"
+ name="webOrigin" id="webOrigin"
+ data-ng-model="webOrigin" readonly/>
+ <button class="btn btn-danger"
+ type="button" data-ng-click="deleteWebOrigin($index)">Delete</button>
</div>
- </fieldset>
- <div class="form-actions" data-ng-show="create">
- <button type="submit" kc-save data-ng-show="changed" class="primary">Save
- </button>
- <button type="submit" data-ng-click="cancel()">Cancel
- </button>
+ <input class="form-control kc-button-control"
+ type="text" name="newWebOrigin" id="newWebOrigin"
+ placeholder="New Web Origin..." data-ng-model="newWebOrigin"
+ data-ng-class="{'input-below':application.webOrigins.length}"/>
+ <button class="btn btn-primary"
+ data-ng-click="addWebOrigin()" ng-show="newWebOrigin.length > 0">Add</button>
</div>
-
- <div class="form-actions" data-ng-show="!create">
- <button type="submit" kc-save class="primary" data-ng-show="changed">Save
- </button>
- <button type="submit" kc-reset data-ng-show="changed">Clear changes
- </button>
- <button type="submit" data-ng-click="remove()" class="destructive" data-ng-hide="changed">
- Delete
- </button>
+ </div>
+ <div class="form-group">
+ <label class="col-sm-2 control-label" for="newRedirectUri">Redirect URI</label>
+ <div class="col-sm-4">
+ <div ng-repeat="redirectUri in application.redirectUris" class="item-deletable">
+ <input class="form-control" type="text" data-ng-class="{'input-below':!$first}"
+ name="redirectUri" id="redirectUri" data-ng-model="redirectUri" readonly />
+ <button type="button" data-ng-click="deleteRedirectUri($index)" class="btn-delete">
+ Delete</button>
+ </div>
+ <input class="form-control" type="text" name="newRedirectUri" id="newRedirectUri"
+ placeholder="New Redirect URI..." data-ng-model="newRedirectUri"
+ data-ng-class="{'input-below':application.redirectUris.length}" />
+ <button class="btn btn-primary" data-ng-click="addRedirectUri()" ng-show="newRedirectUri.length > 0">Add</button>
</div>
+ </div>
+ </fieldset>
- </form>
+ <div class="pull-right form-actions" data-ng-show="createRealm">
+ <button kc-cancel data-ng-click="cancel()">Cancel</button>
+ <button kc-save data-ng-show="changed">Save</button>
+ </div>
+ <div class="pull-right form-actions" data-ng-show="!createRealm">
+ <button kc-reset data-ng-show="changed">Clear changes</button>
+ <button kc-save data-ng-show="changed">Save</button>
+ <button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button>
</div>
- </div>
- <div id="container-right-bg"></div>
+ </form>
</div>
</div>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-installation.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-installation.html
index 88064bb..77d8dcd 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-installation.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-installation.html
@@ -1,27 +1,22 @@
-<div id="wrapper" class="container">
- <div class="row">
- <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
- <div id="content-area" class="col-md-9" role="main">
- <div class="top-nav" data-ng-show="!create">
- <ul class="rcue-tabs">
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li>
- <li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li>
- </ul>
- </div>
- <div class="top-nav" data-ng-show="create">
- <ul class="rcue-tabs">
- <li></li>
- </ul>
- </div>
- <div id="content">
- <a class="button primary" href="{{download}}" download="keycloak.json" type="submit">Download</a></br>
- <textarea style="width: 100%;" rows="20" onclick="this.select()">{{installation | json}}</textarea>
- </div>
- </div>
- <div id="container-right-bg"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div id="content-area" class="col-md-9" role="main">
+
+ <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li>
+ <li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li>
+ </ul>
+
+ <div class="top-nav" data-ng-show="create">
+ <ul class="rcue-tabs">
+ <li></li>
+ </ul>
+ </div>
+ <div id="content">
+ <a class="button primary" href="{{download}}" download="keycloak.json" type="submit">Download</a></br>
+ <textarea style="width: 100%;" rows="20" onclick="this.select()">{{installation | json}}</textarea>
</div>
</div>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-list.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-list.html
index 6c8b378..8a7a509 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-list.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-list.html
@@ -1,71 +1,64 @@
-<div id="wrapper" class="container">
- <div class="row">
- <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
- <div id="content-area" class="col-md-9" role="main">
- <div class="top-nav">
- <ul class="rcue-tabs">
- <li></li>
- </ul>
- </div>
- <div id="content">
- <ol class="breadcrumb">
- <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
- <li class="active">Applications</li>
- </ol>
- <h2><span>{{realm.realm}}</span> Applications</h2>
- <div class="feedback info inline" data-ng-show="!applications || applications.length == 0">
- <p><strong>You have not configured applications.</strong> <a class="button" href="#/create/application/{{realm.realm}}">Add Application</a></p>
- </div>
- <table data-ng-hide="applications.length == 0">
- <thead>
- <tr>
- <th class="rcue-table-actions" colspan="3">
- <div class="search-comp clearfix">
- <input type="text" placeholder="Search..." class="search" data-ng-model="search.name"
- onkeyup="if(event.keyCode == 13){$(this).next('button').click();}">
- <button class="icon-search" tooltip-placement="right"
- tooltip="Search by application name.">
- Icon: search
- </button>
- </div>
- <div class="actions">
- <a class="button" href="#/create/application/{{realm.realm}}">Add Application</a>
- </div>
- </th>
- </tr>
- <tr data-ng-show="applications.length > 0">
- <th>Application Name</th>
- <th>Enabled</th>
- <th>Base URL</th>
- </tr>
- </thead>
- <tfoot data-ng-show="applications && applications.length > 5"> <!-- todo -->
- <tr>
- <td colspan="3">
- <div class="table-nav">
- <a href="#" class="first disabled">First page</a><a href="#" class="prev disabled">Previous
- page</a><span><strong>1-8</strong> of <strong>10</strong></span><a href="#"
- class="next">Next
- page</a><a href="#" class="last">Last page</a>
- </div>
- </td>
- </tr>
- </tfoot>
- <tbody>
- <tr ng-repeat="app in applications | filter:search">
- <td><a href="#/realms/{{realm.realm}}/applications/{{app.name}}">{{app.name}}</a></td>
- <td>{{app.enabled}}</td>
- <td ng-class="{'text-muted': !app.baseUrl}">
- <a href="{{app.baseUrl}}" data-ng-show="app.baseUrl">{{app.baseUrl}}</a>
- <span data-ng-hide="app.baseUrl">Not defined</span>
- </tr>
- </tbody>
- </table>
- <div class="feedback warning inline" data-ng-show="search && applications.length == 0">
- <p><strong>Your search returned no results.</strong><br>Try modifying the query and try again.</p>
- </div>
- </div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div id="content-area" class="col-md-9" role="main">
+ <ul class="nav nav-tabs nav-tabs-pf">
+ <li class="active"><a href="">Application List</a></li>
+ </ul>
+ <div id="content">
+ <ol class="breadcrumb">
+ <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
+ <li class="active">Applications</li>
+ </ol>
+ <h2><span>{{realm.realm}}</span> Applications</h2>
+ <div class="feedback info inline" data-ng-show="!applications || applications.length == 0">
+ <p><strong>You have not configured applications.</strong> <a class="button" href="#/create/application/{{realm.realm}}">Add Application</a></p>
+ </div>
+ <table class="table" data-ng-hide="applications.length == 0">
+ <thead>
+ <tr>
+ <th class="kc-table-actions" colspan="3">
+ <div class="search-comp clearfix">
+ <input type="text" placeholder="Search..." class="form-control search" data-ng-model="search.name"
+ onkeyup="if(event.keyCode == 13){$(this).next('button').click();}">
+ <button type="submit" class="kc-icon-search" tooltip-placement="right"
+ tooltip="Search by application name.">
+ Icon: search
+ </button>
+ </div>
+ <div class="pull-right">
+ <a class="kc-button" href="#/create/application/{{realm.realm}}">Add Application</a>
+ </div>
+ </th>
+ </tr>
+ <tr data-ng-show="applications.length > 0">
+ <th>Application Name</th>
+ <th>Enabled</th>
+ <th>Base URL</th>
+ </tr>
+ </thead>
+ <tfoot data-ng-show="applications && applications.length > 5"> <!-- todo -->
+ <tr>
+ <td colspan="3">
+ <div class="table-nav">
+ <a href="#" class="first disabled">First page</a><a href="#" class="prev disabled">Previous
+ page</a><span><strong>1-8</strong> of <strong>10</strong></span><a href="#"
+ class="next">Next
+ page</a><a href="#" class="last">Last page</a>
+ </div>
+ </td>
+ </tr>
+ </tfoot>
+ <tbody>
+ <tr ng-repeat="app in applications | filter:search">
+ <td><a href="#/realms/{{realm.realm}}/applications/{{app.name}}">{{app.name}}</a></td>
+ <td>{{app.enabled}}</td>
+ <td ng-class="{'text-muted': !app.baseUrl}">
+ <a href="{{app.baseUrl}}" data-ng-show="app.baseUrl">{{app.baseUrl}}</a>
+ <span data-ng-hide="app.baseUrl">Not defined</span>
+ </tr>
+ </tbody>
+ </table>
+ <div class="feedback warning inline" data-ng-show="search && applications.length == 0">
+ <p><strong>Your search returned no results.</strong><br>Try modifying the query and try again.</p>
</div>
- <div id="container-right-bg"></div>
</div>
</div>
\ No newline at end of file
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-role-detail.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-role-detail.html
index e8bd13d..e9a7642 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-role-detail.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-role-detail.html
@@ -1,149 +1,144 @@
-<div id="wrapper" class="container">
- <div class="row">
- <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
- <div id="content-area" class="col-md-9" role="main">
- <div class="top-nav">
- <ul class="rcue-tabs">
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li>
- <li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li>
- </ul>
- </div>
- <div id="content">
- <ol class="breadcrumb" data-ng-show="create">
- <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
- <li class="active">Add role</li>
- </ol>
- <h2 class="pull-left" data-ng-show="create"><span>{{application.name}}</span> Add Role</h2>
- <p class="subtitle" data-ng-show="create"><span class="required">*</span> Required fields</p>
-
- <ol class="breadcrumb" data-ng-hide="create">
- <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
- <li class="active">{{role.name}}</li>
- </ol>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div id="content-area" class="col-md-9" role="main">
+ <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li>
+ <li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li>
+ </ul>
- <h2 class="pull-left" data-ng-hide="create"><span>{{application.name}}</span> {{role.name}}</h2>
- <form name="realmForm" novalidate>
- <fieldset class="border-top">
- <div class="form-group">
- <label for="name">Role name <span class="required" data-ng-show="create">*</span></label>
+ <div id="content">
+ <ol class="breadcrumb" data-ng-show="create">
+ <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
+ <li class="active">Add role</li>
+ </ol>
+ <h2 class="pull-left" data-ng-show="create"><span>{{application.name}}</span> Add Role</h2>
+ <p class="subtitle" data-ng-show="create"><span class="required">*</span> Required fields</p>
- <div class="controls">
- <input type="text" id="name" name="name" data-ng-model="role.name" autofocus
- required data-ng-readonly="!create">
- </div>
- </div>
- <div class="form-group">
- <label for="description">Description </label>
+ <ol class="breadcrumb" data-ng-hide="create">
+ <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
+ <li class="active">{{role.name}}</li>
+ </ol>
+
+ <h2 data-ng-hide="create"><span>{{application.name}}</span> {{role.name}}</h2>
+ <form class="form-horizontal" name="realmForm" novalidate>
+ <fieldset class="border-top">
+ <div class="form-group">
+ <label class="col-sm-2 control-label" for="name">Role name <span class="required" data-ng-show="create">*</span></label>
+
+ <div class="col-sm-4">
+ <input type="text" id="name" name="name" data-ng-model="role.name" autofocus
+ required data-ng-readonly="!create">
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-sm-2 control-label" for="description">Description </label>
+
+ <div class="col-sm-4">
+ <textarea rows="5" cols="50" id="description" name="description" data-ng-model="role.description"></textarea>
+ <!-- Replaced by the textarea above <input type="text" id="description" name="description" data-ng-model="role.description" autofocus
+ required> -->
+ </div>
+ </div>
+ <div class="form-group clearfix block">
+ <label class="col-sm-2 control-label" for="compositeSwitch" class="control-label">Composite Roles</label>
+ <div class="col-sm-4">
+ <input ng-model="compositeSwitch" name="compositeSwitch" id="compositeSwitch" ng-disabled="compositeSwitchDisabled" onoffswitch />
+ </div>
+ </div>
+ </fieldset>
+
+ <div class="pull-right form-actions" data-ng-show="create">
+ <button kc-cancel data-ng-click="cancel()">Cancel</button>
+ <button kc-save data-ng-show="changed">Save</button>
+ </div>
+ <div class="pull-right form-actions" data-ng-show="!create">
+ <button kc-reset data-ng-show="changed">Clear changes</button>
+ <button kc-save data-ng-show="changed">Save</button>
+ <button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button>
+ </div>
- <div class="controls">
- <textarea rows="5" cols="50" id="description" name="description" data-ng-model="role.description"></textarea>
-
-<!-- Replaced by the textarea above <input type="text" id="description" name="description" data-ng-model="role.description" autofocus
- required> -->
- </div>
+ <fieldset data-ng-show="!create && (compositeSwitch || role.composite)">
+ <legend collapsed><span class="text">Composite Realm Roles</span> </legend>
+ <div class="form-group">
+ <div class="controls changing-selectors">
+ <div class="select-title">
+ <label class="control-label" for="available">Available Roles</label>
+ <select id="available" class="form-control" multiple size="5"
+ ng-multiple="true"
+ ng-model="selectedRealmRoles"
+ ng-options="r.name for r in realmRoles">
+ </select>
+ </div>
+ <div class="middle-buttons kc-vertical">
+ <button class="kc-button" type="submit" ng-click="addRealmRole()" tooltip="Move right" tooltip-placement="right">
+ <span class="kc-icon-arrow-right">Move right</span>
+ </button>
+ <button class="kc-button" type="submit" ng-click="deleteRealmRole()" tooltip="Move left" tooltip-placement="right">
+ <span class="kc-icon-arrow-left">Move left</span>
+ </button>
</div>
- <div class="form-group clearfix block">
- <label for="compositeSwitch" class="control-label">Composite Roles</label>
- <input ng-model="compositeSwitch" name="compositeSwitch" id="compositeSwitch" ng-disabled="compositeSwitchDisabled" onoffswitch />
+ <div class="select-title">
+ <label class="control-label" for="assigned">Assigned Roles</label>
+ <select id="assigned" class="form-control" multiple size=5
+ ng-multiple="true"
+ ng-model="selectedRealmMappings"
+ ng-options="r.name for r in realmMappings">
+ </select>
</div>
- </fieldset>
- <div class="form-actions" data-ng-show="create">
- <button type="submit" kc-save class="primary" data-ng-show="changed">Save
- </button>
- <button type="submit" data-ng-click="cancel()" data-ng-click="cancel()"
- data-ng-show="changed">Cancel
- </button>
</div>
+ </div>
+ </fieldset>
- <div class="form-actions" data-ng-show="!create">
- <button type="submit" kc-save class="primary" data-ng-show="changed">Save
- </button>
- <button type="submit" kc-reset data-ng-show="changed">Clear changes
- </button>
- <button type="submit" data-ng-click="remove()" class="destructive" data-ng-hide="changed">
- Delete
- </button>
+ <fieldset ng-show="applications.length > 0 && !create && (compositeSwitch || role.composite)">
+ <legend collapsed><span class="text">Composite Application Roles</span> </legend>
+ <div class="form-group input-select">
+ <label class="control-label" for="applications">Application</label>
+ <div class="input-group">
+ <div class="select-kc">
+ <select id="applications" name="applications" ng-change="changeApplication()" ng-model="compositeApp" ng-options="a.name for a in applications">
+ <option value="" selected> Select an Application...</option>
+ </select>
+ </div>
</div>
- <fieldset data-ng-show="!create && (compositeSwitch || role.composite)">
- <legend collapsed><span class="text">Composite Realm Roles</span> </legend>
- <div class="form-group">
- <div class="controls changing-selectors">
- <div class="select-title">
- <label for="available">Available Roles</label>
- <select id="available" class="form-control" multiple size="5"
- ng-multiple="true"
- ng-model="selectedRealmRoles"
- ng-options="r.name for r in realmRoles">
- </select>
- </div>
- <div class="middle-buttons">
- <button type="submit" ng-click="addRealmRole()" tooltip="Move right" tooltip-placement="right"><span class="icon-arrow-right">Move right</span></button>
- <button type="submit" ng-click="deleteRealmRole()" tooltip="Move left" tooltip-placement="right"><span class="icon-arrow-left">Move left</span></button>
- </div>
- <div class="select-title">
- <label for="assigned">Assigned Roles</label>
- <select id="assigned" class="form-control" multiple size=5
- ng-multiple="true"
- ng-model="selectedRealmMappings"
- ng-options="r.name for r in realmMappings">
- </select>
- </div>
- </div>
+ </div>
+ <div class="form-group" ng-show="compositeApp">
+ <div class="controls changing-selectors application">
+ <div class="select-title">
+ <label class="control-label" for="available-app">Available Roles</label>
+ <select id="available-app" class="form-control" multiple size="5"
+ ng-multiple="true"
+ ng-model="selectedApplicationRoles"
+ ng-options="r.name for r in applicationRoles">
+ </select>
</div>
- </fieldset>
-
- <fieldset ng-show="applications.length > 0 && !create && (compositeSwitch || role.composite)">
- <legend collapsed><span class="text">Composite Application Roles</span> </legend>
- <div class="form-group input-select">
- <label for="applications">Application</label>
- <div class="input-group">
- <div class="select-kc">
- <select id="applications" name="applications" ng-change="changeApplication()" ng-model="compositeApp" ng-options="a.name for a in applications">
- <option value="" selected> Select an Application...</option>
- </select>
- </div>
- </div>
+ <div class="middle-buttons kc-vertical">
+ <button class="kc-button" type="submit" ng-click="addApplicationRole()" tooltip="Move right" tooltip-placement="right">
+ <span class="kc-icon-arrow-right">Move right</span>
+ </button>
+ <button class="kc-button" type="submit" ng-click="deleteApplicationRole()" tooltip="Move left" tooltip-placement="right">
+ <span class="kc-icon-arrow-left">Move left</span>
+ </button>
</div>
- <div class="form-group" ng-show="compositeApp">
- <div class="controls changing-selectors application">
- <div class="select-title">
- <label for="available-app">Available Roles</label>
- <select id="available-app" class="form-control" multiple size="5"
- ng-multiple="true"
- ng-model="selectedApplicationRoles"
- ng-options="r.name for r in applicationRoles">
- </select>
- </div>
- <div class="middle-buttons">
- <button type="submit" ng-click="addApplicationRole()" tooltip="Move right" tooltip-placement="right"><span class="icon-arrow-right">Move right</span></button>
- <button type="submit" ng-click="deleteApplicationRole()" tooltip="Move left" tooltip-placement="right"><span class="icon-arrow-left">Move left</span></button>
- </div>
- <div class="select-title">
- <label for="assigned-app">Assigned Roles</label>
- <select id="assigned-app" class="form-control" multiple size=5
- ng-multiple="true"
- ng-model="selectedApplicationMappings"
- ng-options="r.name for r in applicationMappings">
- </select>
- </div>
- </div>
+ <div class="select-title">
+ <label class="control-label" for="assigned-app">Assigned Roles</label>
+ <select id="assigned-app" class="form-control" multiple size=5
+ ng-multiple="true"
+ ng-model="selectedApplicationMappings"
+ ng-options="r.name for r in applicationMappings">
+ </select>
</div>
- </fieldset>
-
-
- </form>
- </div>
- </div>
- <div id="container-right-bg"></div>
+ </div>
+ </div>
+ </fieldset>
+ </form>
</div>
</div>
\ No newline at end of file
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-role-list.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-role-list.html
index 1e09376..634f5b8 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-role-list.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-role-list.html
@@ -1,78 +1,73 @@
-<div id="wrapper" class="container">
- <div class="row">
- <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
- <div id="content-area" class="col-md-9" role="main">
- <div class="top-nav">
- <ul class="rcue-tabs">
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li>
- <li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li>
- </ul>
- </div>
- <div id="content">
- <ol class="breadcrumb" data-ng-hide="create">
- <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
- <li class="active">Roles</li>
- </ol>
- <h2><span>{{application.name}}</span> Roles</h2>
- <div class="feedback info inline" data-ng-show="!roles || roles.length == 0">
- <p><strong>You have not configured application roles.</strong> <a class="button" href="#/create/role/{{realm.realm}}/applications/{{application.name}}">Add Role</a></p>
- </div>
- <table data-ng-hide="!roles || roles.length == 0">
- <caption data-ng-show="roles && roles.length > 0" class="hidden">Table of realm roles</caption>
- <thead>
- <tr>
- <th class="rcue-table-actions" colspan="3">
- <div class="actions">
- <a class="button" href="#/create/role/{{realm.realm}}/applications/{{application.name}}">Add Role</a>
- <!-- <button class="remove disabled">Remove</button> -->
- </div>
- </th>
- </tr>
- <tr data-ng-show="roles && roles.length > 5">
- <th class="rcue-table-actions" colspan="3">
- <div class="search-comp clearfix">
- <input type="text" placeholder="Search..." class="search">
- <button class="icon-search" tooltip-placement="right"
- tooltip="Search by role name.">
- Icon: search
- </button>
- </div>
- </th>
- </tr>
- <tr>
- <th>Role Name</th>
- <th>Composite</th>
- <th>Description</th>
- </tr>
- </thead>
- <tfoot data-ng-show="roles && roles.length > 5"> <!-- todo -->
- <tr>
- <td colspan="3">
- <div class="table-nav">
- <a href="#" class="first disabled">First page</a><a href="#" class="prev disabled">Previous
- page</a><span><strong>1-8</strong> of <strong>10</strong></span><a href="#"
- class="next">Next
- page</a><a href="#" class="last">Last page</a>
- </div>
- </td>
- </tr>
- </tfoot>
- <tbody>
- <tr ng-repeat="role in roles">
- <td><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles/{{role.name}}">{{role.name}}</a></td>
- <td>{{role.composite}}</td>
- <td>{{role.description}}</td>
- </tr>
- </tbody>
- </table>
- </div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div id="content-area" class="col-md-9" role="main">
+
+ <ul class="nav nav-tabs nav-tabs-pf">
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li>
+ <li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li>
+ </ul>
+
+ <div id="content">
+ <ol class="breadcrumb" data-ng-hide="create">
+ <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
+ <li class="active">Roles</li>
+ </ol>
+ <h2><span>{{application.name}}</span> Roles</h2>
+ <div class="feedback info inline" data-ng-show="!roles || roles.length == 0">
+ <p><strong>You have not configured application roles.</strong> <a class="button" href="#/create/role/{{realm.realm}}/applications/{{application.name}}">Add Role</a></p>
</div>
- <div id="container-right-bg"></div>
+ <table class="table" data-ng-hide="!roles || roles.length == 0">
+ <caption data-ng-show="roles && roles.length > 0" class="hidden">Table of realm roles</caption>
+ <thead>
+ <tr>
+ <th class="kc-table-actions" colspan="3">
+ <div class="pull-right">
+ <a class="kc-button" href="#/create/role/{{realm.realm}}/applications/{{application.name}}">Add Role</a>
+ <!-- <button class="remove disabled">Remove</button> -->
+ </div>
+ </th>
+ </tr>
+ <tr data-ng-show="roles && roles.length > 5">
+ <th class="kc-table-actions" colspan="3">
+ <div class="search-comp clearfix">
+ <input type="text" placeholder="Search..." class="search">
+ <button class="icon-search" tooltip-placement="right"
+ tooltip="Search by role name.">
+ Icon: search
+ </button>
+ </div>
+ </th>
+ </tr>
+ <tr>
+ <th>Role Name</th>
+ <th>Composite</th>
+ <th>Description</th>
+ </tr>
+ </thead>
+ <tfoot data-ng-show="roles && roles.length > 5"> <!-- todo -->
+ <tr>
+ <td colspan="3">
+ <div class="table-nav">
+ <a href="#" class="first disabled">First page</a><a href="#" class="prev disabled">Previous
+ page</a><span><strong>1-8</strong> of <strong>10</strong></span><a href="#"
+ class="next">Next
+ page</a><a href="#" class="last">Last page</a>
+ </div>
+ </td>
+ </tr>
+ </tfoot>
+ <tbody>
+ <tr ng-repeat="role in roles">
+ <td><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles/{{role.name}}">{{role.name}}</a></td>
+ <td>{{role.composite}}</td>
+ <td>{{role.description}}</td>
+ </tr>
+ </tbody>
+ </table>
</div>
</div>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-scope-mappings.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-scope-mappings.html
index 827a028..d70359e 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-scope-mappings.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-scope-mappings.html
@@ -1,95 +1,98 @@
-<div id="wrapper" class="container">
- <div class="row">
- <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
- <div id="content-area" class="col-md-9" role="main">
- <div class="top-nav">
- <ul class="rcue-tabs">
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li>
- <li><a href="#">Installation</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
- <li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li>
- </ul>
- </div>
- <div id="content">
- <ol class="breadcrumb" data-ng-hide="create">
- <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
- <li class="active">Scope</li>
- </ol>
- <h2 class="pull-left"><span>{{application.name}}</span> Scope Mappings</h2>
- <p class="subtitle"></p>
- <form name="realmForm" novalidate>
- <fieldset>
- <legend uncollapsed><span class="text">Realm Roles</span></legend>
- <div class="form-group">
- <div class="controls changing-selectors">
- <div class="select-title">
- <label for="available">Available Roles</label>
- <select id="available" class="form-control" multiple size="5"
- ng-multiple="true"
- ng-model="selectedRealmRoles"
- ng-options="r.name for r in realmRoles">
- </select>
- </div>
- <div class="middle-buttons">
- <button type="submit" ng-click="addRealmRole()" tooltip="Move right" tooltip-placement="right"><span class="icon-arrow-right">Move right</span></button>
- <button type="submit" ng-click="deleteRealmRole()" tooltip="Move left" tooltip-placement="right"><span class="icon-arrow-left">Move left</span></button>
- </div>
- <div class="select-title">
- <label for="assigned">Assigned Roles</label>
- <select id="assigned" class="form-control" multiple size=5
- ng-multiple="true"
- ng-model="selectedRealmMappings"
- ng-options="r.name for r in realmMappings">
- </select>
- </div>
- </div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div id="content-area" class="col-md-9" role="main">
+
+ <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li>
+ <li><a href="#">Installation</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
+ <li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li>
+ </ul>
+
+ <div id="content">
+ <ol class="breadcrumb" data-ng-hide="create">
+ <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
+ <li class="active">Scope</li>
+ </ol>
+ <h2><span>{{application.name}}</span> Scope Mappings</h2>
+ <p class="subtitle"></p>
+ <form class="form-horizontal" name="realmForm" novalidate>
+ <fieldset>
+ <legend uncollapsed><span class="text">Realm Roles</span></legend>
+ <div class="form-group">
+ <div class="controls changing-selectors">
+ <div class="select-title">
+ <label for="available">Available Roles</label>
+ <select id="available" class="form-control" multiple size="5"
+ ng-multiple="true"
+ ng-model="selectedRealmRoles"
+ ng-options="r.name for r in realmRoles">
+ </select>
+ </div>
+ <div class="middle-buttons kc-vertical">
+ <button class="kc-button" type="submit" ng-click="addRealmRole()" tooltip="Move right" tooltip-placement="right">
+ <span class="kc-icon-arrow-right">Move right</span>
+ </button>
+ <button class="kc-button" type="submit" ng-click="deleteRealmRole()" tooltip="Move left" tooltip-placement="right">
+ <span class="kc-icon-arrow-left">Move left</span>
+ </button>
</div>
- </fieldset>
+ <div class="select-title">
+ <label for="assigned">Assigned Roles</label>
+ <select id="assigned" class="form-control" multiple size=5
+ ng-multiple="true"
+ ng-model="selectedRealmMappings"
+ ng-options="r.name for r in realmMappings">
+ </select>
+ </div>
+ </div>
+ </div>
+ </fieldset>
- <fieldset ng-show="applications.length > 0">
- <legend collapsed><span class="text">Application Roles</span> </legend>
- <div class="form-group input-select">
- <label for="applications">Application</label>
- <div class="input-group">
- <div class="select-kc">
- <select id="applications" name="applications" ng-change="changeApplication()" ng-model="targetApp" ng-options="a.name for a in (applications|remove:application:'id')">
- <option value="" selected> Select an Application </option>
- </select>
- </div>
- </div>
+ <fieldset ng-show="applications.length > 0">
+ <legend collapsed><span class="text">Application Roles</span> </legend>
+ <div class="form-group input-select">
+ <label for="applications">Application</label>
+ <div class="input-group">
+ <div class="select-kc">
+ <select id="applications" name="applications" ng-change="changeApplication()" ng-model="targetApp" ng-options="a.name for a in (applications|remove:application:'id')">
+ <option value="" selected> Select an Application </option>
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="form-group" ng-show="targetApp">
+ <div class="controls changing-selectors application">
+ <div class="select-title">
+ <label for="app-available">Available Roles</label>
+ <select id="app-available" class="form-control" multiple size="5"
+ ng-multiple="true"
+ ng-model="selectedApplicationRoles"
+ ng-options="r.name for r in applicationRoles">
+ </select>
+ </div>
+ <div class="middle-buttons kc-vertical">
+ <button class="kc-button" type="submit" ng-click="addApplicationRole()" tooltip="Move right" tooltip-placement="right">
+ <span class="kc-icon-arrow-right">Move right</span>
+ </button>
+ <button class="kc-button" type="submit" ng-click="deleteApplicationRole()" tooltip="Move left" tooltip-placement="right">
+ <span class="kc-icon-arrow-left">Move left</span>
+ </button>
</div>
- <div class="form-group" ng-show="targetApp">
- <div class="controls changing-selectors application">
- <div class="select-title">
- <label for="app-available">Available Roles</label>
- <select id="app-available" class="form-control" multiple size="5"
- ng-multiple="true"
- ng-model="selectedApplicationRoles"
- ng-options="r.name for r in applicationRoles">
- </select>
- </div>
- <div class="middle-buttons">
- <button type="submit" ng-click="addApplicationRole()" tooltip="Move right" tooltip-placement="right"><span class="icon-arrow-right">Move right</span></button>
- <button type="submit" ng-click="deleteApplicationRole()" tooltip="Move left" tooltip-placement="right"><span class="icon-arrow-left">Move left</span></button>
- </div>
- <div class="select-title">
- <label for="app-assigned">Assigned Roles</label>
- <select id="app-assigned" class="form-control" multiple size=5
- ng-multiple="true"
- ng-model="selectedApplicationMappings"
- ng-options="r.name for r in applicationMappings">
- </select>
- </div>
- </div>
+ <div class="select-title">
+ <label for="app-assigned">Assigned Roles</label>
+ <select id="app-assigned" class="form-control" multiple size=5
+ ng-multiple="true"
+ ng-model="selectedApplicationMappings"
+ ng-options="r.name for r in applicationMappings">
+ </select>
</div>
- </fieldset>
- </form>
- </div>
- </div>
- <div id="container-right-bg"></div>
+ </div>
+ </div>
+ </fieldset>
+ </form>
</div>
</div>
\ No newline at end of file
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-sessions.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-sessions.html
index b00d13c..5f110be 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-sessions.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-sessions.html
@@ -1,27 +1,22 @@
-<div id="wrapper" class="container">
- <div class="row">
- <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
- <div id="content-area" class="col-md-9" role="main">
- <div class="top-nav">
- <ul class="rcue-tabs">
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li>
- <li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li>
- </ul>
- </div>
- <div id="content">
- <ol class="breadcrumb" data-ng-hide="create">
- <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
- <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
- <li class="active">Sessions</li>
- </ol>
- <h2 data-ng-hide="create"><span>{{application.name}}</span> Sessions (Placeholder Page)</h2>
- </div>
- </div>
- <div id="container-right-bg"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div id="content-area" class="col-md-9" role="main">
+
+ <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">Settings</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/credentials">Credentials</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/installation">Installation</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/scope-mappings">Scope</a></li>
+ <li class="active"><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/sessions">Sessions</a></li>
+ </ul>
+
+ <div id="content">
+ <ol class="breadcrumb" data-ng-hide="create">
+ <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications">Applications</a></li>
+ <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}">{{application.name}}</a></li>
+ <li class="active">Sessions</li>
+ </ol>
+ <h2 data-ng-hide="create"><span>{{application.name}}</span> Sessions (Placeholder Page)</h2>
</div>
</div>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-credentials.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-credentials.html
index 8676a8c..8c2f0bb 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-credentials.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-credentials.html
@@ -1,61 +1,60 @@
-<div class="row">
- <div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
- <div id="content-area" class="col-sm-9" role="main">
- <ul class="nav nav-tabs nav-tabs-pf">
- <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}">Settings</a></li>
- <li class="active"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/credentials">Credentials</a></li>
- <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/scope-mappings">Scope</a></li>
- <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/installation">Installation</a></li>
- </ul>
+<div class="bs-sidebar col-sm-3" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div id="content-area" class="col-sm-9" role="main">
+ <ul class="nav nav-tabs nav-tabs-pf">
+ <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}">Settings</a></li>
+ <li class="active"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/credentials">Credentials</a></li>
+ <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/scope-mappings">Scope</a></li>
+ <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/installation">Installation</a></li>
+ </ul>
- <div id="content">
- <ol class="breadcrumb" data-ng-hide="create">
- <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
- <li><a href="#/realms/{{realm.realm}}/oauth-clients">OAuth Clients</a></li>
- <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}">{{oauth.name}}</a></li>
- <li class="active">Credentials</li>
- </ol>
- <h2 data-ng-hide="create"><span>{{oauth.name}}</span> Credentials</h2>
- <form name="credentialForm" novalidate >
- <fieldset data-ng-show="passwordRequired">
- <legend uncollapsed><span class="text">Change Password</span></legend>
- <div class="form-group">
- <label class="col-sm-2 control-label" for="password">New Password</label>
- <div class="col-sm-4">
- <input class="form-control" type="password" id="password" name="password" data-ng-model="password" autofocus
- required>
- </div>
- </div>
- <div class="form-group">
- <label class="col-sm-2 control-label two-lines" for="password">New Password Confirmation</label>
- <div class="col-sm-4">
- <input class="form-control" type="password" id="confirmPassword" name="confirmPassword" data-ng-model="confirmPassword"
- required>
- </div>
- </div>
- <div class="form-actions">
- <button type="submit" data-ng-click="changePassword()" class="primary" ng-show="password != null">Save
- </button>
- </div>
- </fieldset>
- <fieldset data-ng-show="totpRequired">
- <legend uncollapsed><span class="text">Change TOTP Key</span></legend>
- <div class="form-group">
- <label class="col-sm-2 control-label" for="totp">New Key</label>
- <div class="col-sm-4">
- <input class="form-control" type="text" id="totp" name="totp" data-ng-model="totp" autofocus
- required>
- <button type="submit" data-ng-click="generateTotp()">Generate
- </button>
- </div>
- </div>
- <div class="pull-right form-actions">
- <label></label>
- <button type="submit" data-ng-click="changeTotp()" class="primary" ng-show="totp != null">Save
- </button>
- </div>
- </fieldset>
- </form>
- </div>
+ <div id="content">
+ <ol class="breadcrumb" data-ng-hide="create">
+ <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
+ <li><a href="#/realms/{{realm.realm}}/oauth-clients">OAuth Clients</a></li>
+ <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}">{{oauth.name}}</a></li>
+ <li class="active">Credentials</li>
+ </ol>
+ <h2 data-ng-hide="create"><span>{{oauth.name}}</span> Credentials</h2>
+ <form class="form-horizontal" name="credentialForm" novalidate>
+ <fieldset data-ng-show="passwordRequired">
+ <legend uncollapsed><span class="text">Change Password</span></legend>
+ <div class="form-group">
+ <label class="col-sm-2 control-label" for="password">New Password</label>
+ <div class="col-sm-4">
+ <input class="form-control" type="password" id="password" name="password" data-ng-model="password" autofocus
+ required>
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-sm-2 control-label two-lines" for="password">New Password Confirmation</label>
+ <div class="col-sm-4">
+ <input class="form-control" type="password" id="confirmPassword" name="confirmPassword" data-ng-model="confirmPassword"
+ required>
+ </div>
+ </div>
+ <div class="form-actions">
+ <button class="btn btn-primary btn-lg" type="submit" data-ng-click="changePassword()" ng-show="password != null">Save
+ </button>
+ </div>
+ </fieldset>
+ <fieldset data-ng-show="totpRequired">
+ <legend uncollapsed><span class="text">Change TOTP Key</span></legend>
+ <div class="form-group">
+ <label class="col-sm-2 control-label" for="totp">New Key</label>
+ <div class="col-sm-4">
+ <input class="form-control" type="text" id="totp" name="totp" data-ng-model="totp" autofocus
+ required>
+ <button class="btn btn-primary" type="submit" data-ng-click="generateTotp()">Generate
+ </button>
+ </div>
+ </div>
+ <div class="pull-right form-actions">
+ <label></label>
+ <button class="btn btn-primary btn-lg" type="submit" data-ng-click="changeTotp()" ng-show="totp != null">Save
+ </button>
+ </div>
+ </fieldset>
+ </form>
</div>
</div>
+
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-detail.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-detail.html
index 528bf6e..838df66 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-detail.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-detail.html
@@ -1,100 +1,84 @@
-<div id="wrapper" class="container">
- <div class="row">
- <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
- <div id="content-area" class="col-md-9" role="main">
- <div class="top-nav" data-ng-show="!create">
- <ul class="rcue-tabs">
- <li class="active"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}">Settings</a></li>
- <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/credentials">Credentials</a></li>
- <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/scope-mappings">Scope</a></li>
- <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/installation">Installation</a></li>
- </ul>
- </div>
- <div class="top-nav" data-ng-show="create">
- <ul class="rcue-tabs">
- <li></li>
- </ul>
- </div>
- <div id="content">
- <ol class="breadcrumb" data-ng-show="create">
- <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
- <li><a href="#/realms/{{realm.realm}}/oauth-clients">OAuth Clients</a></li>
- <li class="active">Add OAuth Client</li>
- </ol>
- <h2 class="pull-left" data-ng-show="create"><span>{{realm.realm}}</span> Add OAuth Client</h2>
- <p class="subtitle" data-ng-show="create"><span class="required">*</span> Required fields</p>
- <ol class="breadcrumb" data-ng-hide="create">
- <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
- <li><a href="#/realms/{{realm.realm}}/oauth-clients">OAuth Clients</a></li>
- <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}">{{oauth.name}}</a></li>
- <li class="active">Settings</li>
- </ol>
- <h2 data-ng-hide="create"><span>{{oauth.name}}</span> Settings</h2>
- <form name="oauthForm" novalidate>
- <fieldset class="border-top">
- <div class="form-group">
- <label for="name">Name <span class="required" data-ng-show="create">*</span></label>
- <div class="controls">
- <input type="text" id="name" name="name" data-ng-model="oauth.name" autofocus
- required>
- </div>
- </div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div id="content-area" class="col-md-9" role="main">
+ <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
+ <li class="active"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}">Settings</a></li>
+ <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/credentials">Credentials</a></li>
+ <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/scope-mappings">Scope</a></li>
+ <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/installation">Installation</a></li>
+ </ul>
+ <div id="content">
+ <ol class="breadcrumb" data-ng-show="create">
+ <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
+ <li><a href="#/realms/{{realm.realm}}/oauth-clients">OAuth Clients</a></li>
+ <li class="active">Add OAuth Client</li>
+ </ol>
+ <h2 data-ng-show="create"><span>{{realm.realm}}</span> Add OAuth Client</h2>
+ <p class="subtitle" data-ng-show="create"><span class="required">*</span> Required fields</p>
+ <ol class="breadcrumb" data-ng-hide="create">
+ <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
+ <li><a href="#/realms/{{realm.realm}}/oauth-clients">OAuth Clients</a></li>
+ <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}">{{oauth.name}}</a></li>
+ <li class="active">Settings</li>
+ </ol>
+ <h2 data-ng-hide="create"><span>{{oauth.name}}</span> Settings</h2>
+ <form class="form-horizontal" name="oauthForm" novalidate>
+ <fieldset class="border-top">
- <div class="form-group clearfix block">
- <label for="enabled" class="control-label">Enabled</label>
- <input ng-model="oauth.enabled" name="enabled" id="enabled" onoffswitch />
- </div>
- <div class="form-group">
- <label for="newWebOrigin" class="control-label">Web Origin</label>
- <div class="controls">
- <div ng-repeat="webOrigin in oauth.webOrigins" class="item-deletable">
- <input class="input-small" type="text" data-ng-class="{'input-below':!$first}"
- name="webOrigin" id="webOrigin" data-ng-model="webOrigin" readonly />
- <button type="button" data-ng-click="deleteWebOrigin($index)" class="btn-delete">
- Delete</button>
- </div>
- <input class="input-small" type="text" name="newWebOrigin" id="newWebOrigin"
- placeholder="New Web Origin..." data-ng-model="newWebOrigin"
- data-ng-class="{'input-below':oauth.webOrigins.length}" />
- <button data-ng-click="addWebOrigin()" ng-show="newWebOrigin.length > 0">Add</button>
- </div>
+ <div class="form-group">
+ <label class="col-sm-2 control-label" for="name">Name <span class="required" data-ng-show="create">*</span></label>
+ <div class="col-sm-4">
+ <input class="form-control" type="text" id="name" name="name" data-ng-model="oauth.name" autofocus
+ required>
+ </div>
+ </div>
+
+ <div class="form-group clearfix block">
+ <label class="col-sm-2 control-label" for="enabled">Enabled</label>
+ <div class="col-sm-4">
+ <input ng-model="oauth.enabled" name="enabled" id="enabled" onoffswitch />
</div>
- <div class="form-group">
- <label for="newRedirectUri" class="control-label">Redirect URI</label>
- <div class="controls">
- <div ng-repeat="redirectUri in oauth.redirectUris" class="item-deletable">
- <input class="input-small" type="text" data-ng-class="{'input-below':!$first}"
- name="redirectUri" id="redirectUri" data-ng-model="redirectUri" readonly />
- <button type="button" data-ng-click="deleteRedirectUri($index)" class="btn-delete">
- Delete</button>
- </div>
- <input class="input-small" type="text" name="newRedirectUri" id="newRedirectUri"
- placeholder="New Redirect URI..." data-ng-model="newRedirectUri"
- data-ng-class="{'input-below':oauth.redirectUris.length}" />
- <button data-ng-click="addRedirectUri()" ng-show="newRedirectUri.length > 0">Add</button>
- </div>
+ </div>
+ <div class="form-group">
+ <label class="col-sm-2 control-label" for="newWebOrigin">Web Origin</label>
+ <div class="col-sm-4">
+ <div ng-repeat="webOrigin in oauth.webOrigins" class="item-deletable">
+ <input class="form-control" type="text" data-ng-class="{'input-below':!$first}"
+ name="webOrigin" id="webOrigin" data-ng-model="webOrigin" readonly />
+ <button class="btn btn-danger" type="button" data-ng-click="deleteWebOrigin($index)">
+ Delete</button>
</div>
- </fieldset>
- <div class="form-actions" data-ng-show="create">
- <button type="submit" kc-save data-ng-show="changed" class="primary">Save
- </button>
- <button type="submit" data-ng-click="cancel()">Cancel
- </button>
+ <input class="form-control" type="text" name="newWebOrigin" id="newWebOrigin"
+ placeholder="New Web Origin..." data-ng-model="newWebOrigin"
+ data-ng-class="{'input-below':oauth.webOrigins.length}" />
+ <button class="btn btn-primary" data-ng-click="addWebOrigin()" ng-show="newWebOrigin.length > 0">Add</button>
</div>
-
- <div class="form-actions" data-ng-show="!create">
- <button type="submit" kc-save class="primary" data-ng-show="changed">Save
- </button>
- <button type="submit" kc-reset data-ng-show="changed">Clear changes
- </button>
- <button type="submit" data-ng-click="remove()" class="destructive" data-ng-hide="changed">
- Delete
- </button>
+ </div>
+ <div class="form-group">
+ <label class="col-sm-2 control-label" for="newRedirectUri">Redirect URI</label>
+ <div class="col-sm-4">
+ <div ng-repeat="redirectUri in oauth.redirectUris" class="item-deletable">
+ <input class="form-control" type="text" data-ng-class="{'input-below':!$first}"
+ name="redirectUri" id="redirectUri" data-ng-model="redirectUri" readonly />
+ <button class="btn btn-danger" type="button" data-ng-click="deleteRedirectUri($index)">
+ Delete</button>
+ </div>
+ <input class="form-control" type="text" name="newRedirectUri" id="newRedirectUri"
+ placeholder="New Redirect URI..." data-ng-model="newRedirectUri"
+ data-ng-class="{'input-below':oauth.redirectUris.length}" />
+ <button class="btn btn-primary" data-ng-click="addRedirectUri()" ng-show="newRedirectUri.length > 0">Add</button>
</div>
+ </div>
+ </fieldset>
- </form>
+ <div class="pull-right form-actions" data-ng-show="create">
+ <button kc-cancel data-ng-click="cancel()">Cancel</button>
+ <button kc-save data-ng-show="changed">Save</button>
+ </div>
+ <div class="pull-right form-actions" data-ng-show="!create">
+ <button kc-reset data-ng-show="changed">Clear changes</button>
+ <button kc-save data-ng-show="changed">Save</button>
+ <button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button>
</div>
- </div>
- <div id="container-right-bg"></div>
+ </form>
</div>
-</div>
+</div>
\ No newline at end of file
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-installation.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-installation.html
index 07a0c80..d7de9ea 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-installation.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-installation.html
@@ -1,25 +1,13 @@
-<div id="wrapper" class="container">
- <div class="row">
- <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
- <div id="content-area" class="col-md-9" role="main">
- <div class="top-nav" data-ng-show="!create">
- <ul class="rcue-tabs">
- <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}">Settings</a></li>
- <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/credentials">Credentials</a></li>
- <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/scope-mappings">Scope</a></li>
- <li class="active"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/installation">Installation</a></li>
- </ul>
- </div>
- <div class="top-nav" data-ng-show="create">
- <ul class="rcue-tabs">
- <li></li>
- </ul>
- </div>
- <div id="content">
- <a class="button primary" href="{{download}}" download="keycloak.json" type="submit">Download</a></br>
- <textarea style="width: 100%;" rows="20" onclick="this.select()">{{installation | json}}</textarea>
- </div>
- </div>
- <div id="container-right-bg"></div>
+<div class="bs-sidebar col-sm-3" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div id="content-area" class="col-md-9" role="main">
+ <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
+ <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}">Settings</a></li>
+ <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/credentials">Credentials</a></li>
+ <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/scope-mappings">Scope</a></li>
+ <li class="active"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/installation">Installation</a></li>
+ </ul>
+ <div id="content">
+ <textarea style="width: 100%;" rows="20" onclick="this.select()">{{installation | json}}</textarea>
+ <a class="kc-button primary" href="{{download}}" download="keycloak.json" type="submit">Download</a>
</div>
-</div>
+</div>
\ No newline at end of file
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-list.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-list.html
index 6613d1b..84387a2 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-list.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-list.html
@@ -1,67 +1,60 @@
-<div id="wrapper" class="container">
- <div class="row">
- <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
- <div id="content-area" class="col-md-9" role="main">
- <div class="top-nav">
- <ul class="rcue-tabs">
- <li></li>
- </ul>
- </div>
- <div id="content">
- <ol class="breadcrumb">
- <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
- <li class="active">OAuth Clients</li>
- </ol>
- <h2><span>{{realm.realm}}</span> OAuth Clients</h2>
- <div class="feedback info inline" data-ng-show="!oauthClients || oauthClients.length == 0">
- <p><strong>You have not configured oauth clients.</strong> <a class="button" href="#/create/oauth-client/{{realm.realm}}">Add OAuth Client</a></p>
- </div>
- <table data-ng-hide="oauthClients.length == 0">
- <thead>
- <tr>
- <th class="rcue-table-actions" colspan="3">
- <div class="search-comp clearfix">
- <input type="text" placeholder="Search..." class="search"
- onkeyup="if(event.keyCode == 13){$(this).next('button').click();}">
- <button class="icon-search" tooltip-placement="right"
- tooltip="Search by oauth client name">
- Icon: search
- </button>
- </div>
- <div class="actions">
- <a class="button" href="#/create/oauth-client/{{realm.realm}}">Add OAuth Client</a>
- </div>
- </th>
- </tr>
- <tr data-ng-show="oauthClients.length > 0">
- <th>OAuth Client Name</th>
- <th>Enabled</th>
- </tr>
- </thead>
- <tfoot data-ng-show="oauthClients && oauthClients.length > 5"> <!-- todo -->
- <tr>
- <td colspan="2">
- <div class="table-nav">
- <a href="#" class="first disabled">First page</a><a href="#" class="prev disabled">Previous
- page</a><span><strong>1-8</strong> of <strong>10</strong></span><a href="#"
- class="next">Next
- page</a><a href="#" class="last">Last page</a>
- </div>
- </td>
- </tr>
- </tfoot>
- <tbody>
- <tr ng-repeat="client in oauthClients">
- <td><a href="#/realms/{{realm.realm}}/oauth-clients/{{client.id}}">{{client.name}}</a></td>
- <td>{{client.enabled}}</td>
- </tr>
- </tbody>
- </table>
- <div class="feedback warning inline" data-ng-show="search && oauthClients.length == 0">
- <p><strong>Your search returned no results.</strong><br>Try modifying the query and try again.</p>
- </div>
- </div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div id="content-area" class="col-md-9" role="main">
+ <ul class="nav nav-tabs nav-tabs-pf">
+ <li class="active"><a href="">OAuth List</a></li>
+ </ul>
+ <div id="content">
+ <ol class="breadcrumb">
+ <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
+ <li class="active">OAuth Clients</li>
+ </ol>
+ <h2><span>{{realm.realm}}</span> OAuth Clients</h2>
+ <div class="feedback info inline" data-ng-show="!oauthClients || oauthClients.length == 0">
+ <p><strong>You have not configured oauth clients.</strong> <a class="button" href="#/create/oauth-client/{{realm.realm}}">Add OAuth Client</a></p>
+ </div>
+ <table class="table" data-ng-hide="oauthClients.length == 0">
+ <thead>
+ <tr>
+ <th class="kc-table-actions" colspan="3">
+ <div class="search-comp clearfix">
+ <input type="text" placeholder="Search..." class="form-control search"
+ onkeyup="if(event.keyCode == 13){$(this).next('button').click();}">
+ <button class="kc-icon-search" tooltip-placement="right"
+ tooltip="Search by oauth client name">
+ Icon: search
+ </button>
+ </div>
+ <div class="pull-right">
+ <a class="kc-button" href="#/create/oauth-client/{{realm.realm}}">Add OAuth Client</a>
+ </div>
+ </th>
+ </tr>
+ <tr data-ng-show="oauthClients.length > 0">
+ <th>OAuth Client Name</th>
+ <th>Enabled</th>
+ </tr>
+ </thead>
+ <tfoot data-ng-show="oauthClients && oauthClients.length > 5"> <!-- todo -->
+ <tr>
+ <td colspan="2">
+ <div class="table-nav">
+ <a href="#" class="first disabled">First page</a><a href="#" class="prev disabled">Previous
+ page</a><span><strong>1-8</strong> of <strong>10</strong></span><a href="#"
+ class="next">Next
+ page</a><a href="#" class="last">Last page</a>
+ </div>
+ </td>
+ </tr>
+ </tfoot>
+ <tbody>
+ <tr ng-repeat="client in oauthClients">
+ <td><a href="#/realms/{{realm.realm}}/oauth-clients/{{client.id}}">{{client.name}}</a></td>
+ <td>{{client.enabled}}</td>
+ </tr>
+ </tbody>
+ </table>
+ <div class="feedback warning inline" data-ng-show="search && oauthClients.length == 0">
+ <p><strong>Your search returned no results.</strong><br>Try modifying the query and try again.</p>
</div>
- <div id="container-right-bg"></div>
</div>
</div>
\ No newline at end of file
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-scope-mappings.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-scope-mappings.html
index 86012bc..74c5787 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-scope-mappings.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-scope-mappings.html
@@ -1,93 +1,88 @@
-<div id="wrapper" class="container">
- <div class="row">
- <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
- <div id="content-area" class="col-md-9" role="main">
- <div class="top-nav">
- <ul class="rcue-tabs">
- <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}">Settings</a></li>
- <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/credentials">Credentials</a></li>
- <li class="active"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/scope-mappings">Scope</a></li>
- <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/installation">Installation</a></li>
- </ul>
- </div>
- <div id="content">
- <ol class="breadcrumb" data-ng-hide="create">
- <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
- <li><a href="#/realms/{{realm.realm}}/oauth-clients">OAuth Clients</a></li>
- <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}">{{oauth.name}}</a></li>
- <li class="active">Scope</li>
- </ol>
- <h2 class="pull-left"><span>{{oauth.name}}</span> Scope Mappings</h2>
- <p class="subtitle"></p>
- <form name="realmForm" novalidate>
- <fieldset>
- <legend uncollapsed><span class="text">Realm Roles</span></legend>
- <div class="form-group">
- <div class="controls changing-selectors">
- <div class="select-title">
- <label for="available">Available Roles</label>
- <select id="available" class="form-control" multiple size="5"
- ng-multiple="true"
- ng-model="selectedRealmRoles"
- ng-options="r.name for r in realmRoles">
- </select>
- </div>
- <div class="middle-buttons">
- <button type="submit" ng-click="addRealmRole()" tooltip="Move right" tooltip-placement="right"><span class="icon-arrow-right">Move right</span></button>
- <button type="submit" ng-click="deleteRealmRole()" tooltip="Move left" tooltip-placement="right"><span class="icon-arrow-left">Move left</span></button>
- </div>
- <div class="select-title">
- <label for="assigned">Assigned Roles</label>
- <select id="assigned" class="form-control" multiple size=5
- ng-multiple="true"
- ng-model="selectedRealmMappings"
- ng-options="r.name for r in realmMappings">
- </select>
- </div>
- </div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div id="content-area" class="col-md-9" role="main">
+
+ <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
+ <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}">Settings</a></li>
+ <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/credentials">Credentials</a></li>
+ <li class="active"><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/scope-mappings">Scope</a></li>
+ <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}/installation">Installation</a></li>
+ </ul>
+
+ <div id="content">
+ <ol class="breadcrumb" data-ng-hide="create">
+ <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
+ <li><a href="#/realms/{{realm.realm}}/oauth-clients">OAuth Clients</a></li>
+ <li><a href="#/realms/{{realm.realm}}/oauth-clients/{{oauth.id}}">{{oauth.name}}</a></li>
+ <li class="active">Scope</li>
+ </ol>
+ <h2><span>{{oauth.name}}</span> Scope Mappings</h2>
+ <p class="subtitle"></p>
+ <form class="form-horizontal" name="realmForm" novalidate>
+ <fieldset>
+ <legend uncollapsed><span class="text">Realm Roles</span></legend>
+ <div class="form-group">
+ <div class="controls changing-selectors">
+ <div class="select-title">
+ <label class="control-label" for="available">Available Roles</label>
+ <select id="available" class="form-control" multiple size="5"
+ ng-multiple="true"
+ ng-model="selectedRealmRoles"
+ ng-options="r.name for r in realmRoles">
+ </select>
+ </div>
+ <div class="middle-buttons">
+ <button type="submit" ng-click="addRealmRole()" tooltip="Move right" tooltip-placement="right"><span class="kc-icon-arrow-right">Move right</span></button>
+ <button type="submit" ng-click="deleteRealmRole()" tooltip="Move left" tooltip-placement="right"><span class="kc-icon-arrow-left">Move left</span></button>
</div>
- </fieldset>
+ <div class="select-title">
+ <label class="control-label" for="assigned">Assigned Roles</label>
+ <select id="assigned" class="form-control" multiple size=5
+ ng-multiple="true"
+ ng-model="selectedRealmMappings"
+ ng-options="r.name for r in realmMappings">
+ </select>
+ </div>
+ </div>
+ </div>
+ </fieldset>
- <fieldset ng-show="applications.length > 0">
- <legend collapsed><span class="text">Application Roles</span> </legend>
- <div class="form-group input-select">
- <label for="applications">Application</label>
- <div class="input-group">
- <div class="select-kc">
- <select id="applications" name="applications" ng-change="changeApplication()" ng-model="targetApp" ng-options="a.name for a in (applications)">
- <option value="" selected> Select an Application </option>
- </select>
- </div>
- </div>
+ <fieldset ng-show="applications.length > 0">
+ <legend collapsed><span class="text">Application Roles</span> </legend>
+ <div class="form-group input-select">
+ <label class="control-label" for="applications">Application</label>
+ <div class="input-group">
+ <div class="select-kc">
+ <select id="applications" name="applications" ng-change="changeApplication()" ng-model="targetApp" ng-options="a.name for a in (applications)">
+ <option value="" selected> Select an Application </option>
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="form-group" ng-show="targetApp">
+ <div class="controls changing-selectors application">
+ <div class="select-title">
+ <label class="control-label" for="app-available">Available Roles</label>
+ <select id="app-available" class="form-control" multiple size="5"
+ ng-multiple="true"
+ ng-model="selectedApplicationRoles"
+ ng-options="r.name for r in applicationRoles">
+ </select>
+ </div>
+ <div class="middle-buttons">
+ <button type="submit" ng-click="addApplicationRole()" tooltip="Move right" tooltip-placement="right"><span class="icon-arrow-right">Move right</span></button>
+ <button type="submit" ng-click="deleteApplicationRole()" tooltip="Move left" tooltip-placement="right"><span class="icon-arrow-left">Move left</span></button>
</div>
- <div class="form-group" ng-show="targetApp">
- <div class="controls changing-selectors application">
- <div class="select-title">
- <label for="app-available">Available Roles</label>
- <select id="app-available" class="form-control" multiple size="5"
- ng-multiple="true"
- ng-model="selectedApplicationRoles"
- ng-options="r.name for r in applicationRoles">
- </select>
- </div>
- <div class="middle-buttons">
- <button type="submit" ng-click="addApplicationRole()" tooltip="Move right" tooltip-placement="right"><span class="icon-arrow-right">Move right</span></button>
- <button type="submit" ng-click="deleteApplicationRole()" tooltip="Move left" tooltip-placement="right"><span class="icon-arrow-left">Move left</span></button>
- </div>
- <div class="select-title">
- <label for="app-assigned">Assigned Roles</label>
- <select id="app-assigned" class="form-control" multiple size=5
- ng-multiple="true"
- ng-model="selectedApplicationMappings"
- ng-options="r.name for r in applicationMappings">
- </select>
- </div>
- </div>
+ <div class="select-title">
+ <label class="control-label" for="app-assigned">Assigned Roles</label>
+ <select id="app-assigned" class="form-control" multiple size=5
+ ng-multiple="true"
+ ng-model="selectedApplicationMappings"
+ ng-options="r.name for r in applicationMappings">
+ </select>
</div>
- </fieldset>
- </form>
- </div>
- </div>
- <div id="container-right-bg"></div>
+ </div>
+ </div>
+ </fieldset>
+ </form>
</div>
</div>
\ No newline at end of file
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-credentials.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-credentials.html
index 2ca0ea8..a5d56b3 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-credentials.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-credentials.html
@@ -41,8 +41,8 @@
<caption class="hidden">Table of Password Policies</caption>
<thead>
<tr ng-show="(allPolicies|remove:policy:'name').length > 0">
- <th colspan="5" class="rcue-table-actions">
- <div class="actions">
+ <th colspan="5" class="kc-table-actions">
+ <div class="pull-right">
<div class="select-kc">
<select ng-model="selectedPolicy"
ng-options="(p.name|capitalize) for p in (allPolicies|remove:policy:'name')"
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-default-roles.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-default-roles.html
index e771edb..d3167a2 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-default-roles.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-default-roles.html
@@ -22,10 +22,10 @@
</select>
</div>
<div class="middle-buttons">
- <button class="kc-button" type="submit" ng-click="addRealmDefaultRole()" tooltip="Move right" tooltip-placement="right">
+ <button class="kc-button kc-vertical" type="submit" ng-click="addRealmDefaultRole()" tooltip="Move right" tooltip-placement="right">
<span class="kc-icon-arrow-right"><span>Move right</span></span>
</button>
- <button class="kc-button" type="submit" ng-click="deleteRealmDefaultRole()" tooltip="Move left" tooltip-placement="right">
+ <button class="kc-button kc-vertical" type="submit" ng-click="deleteRealmDefaultRole()" tooltip="Move left" tooltip-placement="right">
<span class="kc-icon-arrow-left"><span>Move left</span></span>
</button>
</div>
@@ -64,10 +64,10 @@
</select>
</div>
<div class="middle-buttons">
- <button class="kc-button" type="submit" ng-click="addAppDefaultRole()" tooltip="Move right" tooltip-placement="right">
+ <button class="kc-button kc-vertical" type="submit" ng-click="addAppDefaultRole()" tooltip="Move right" tooltip-placement="right">
<span class="kc-icon-arrow-right"><span>Move right</span></span>
</button>
- <button class="kc-button" type="submit" ng-click="rmAppDefaultRole()" tooltip="Move left" tooltip-placement="right">
+ <button class="kc-button kc-vertical" type="submit" ng-click="rmAppDefaultRole()" tooltip="Move left" tooltip-placement="right">
<span class="kc-icon-arrow-left"><span>Move left</span></span>
</button>
</div>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-detail.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-detail.html
index c776eca..476049d 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-detail.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-detail.html
@@ -10,6 +10,7 @@
<h2 class="pull-left" data-ng-show="createRealm">Add Realm</h2>
<h2 data-ng-hide="createRealm"><span>{{realm.realm}}</span> General Settings</h2>
<p class="subtitle" data-ng-show="createRealm"><span class="required">*</span> Required fields</p>
+ <kc-test></kc-test>
<form class="form-horizontal" name="realmForm" novalidate>
<fieldset>
<legend uncollapsed class="aj-collapse open"><span class="text">Required Settings</span></legend>
@@ -21,7 +22,7 @@
</div>
</div>
<div class="form-group">
- <label class="col-sm-2 control-label control-label" for="enabled">Enabled</label>
+ <label class="col-sm-2 control-label" for="enabled">Enabled</label>
<div class="col-sm-4">
<input ng-model="realm.enabled" name="enabled" id="enabled" onoffswitch />
</div>
@@ -30,7 +31,7 @@
<fieldset>
<legend uncollapsed><span class="text">Login Options</span></legend>
<div class="form-group">
- <label for="social" class="col-sm-2 control-label">Social login</label>
+ <label class="col-sm-2 control-label" for="social">Social login</label>
<div class="col-sm-4">
<input ng-model="realm.social" name="social" id="social" onoffswitch />
</div>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-social.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-social.html
index edf92a3..7ed8605 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-social.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-social.html
@@ -20,8 +20,8 @@
<caption class="hidden">Table of social providers</caption>
<thead>
<tr>
- <th colspan="5" class="rcue-table-actions">
- <div class="actions">
+ <th colspan="5" class="kc-table-actions">
+ <div class="pull-right">
<div class="select-kc">
<select ng-model="newProviderId"
ng-options="(p|capitalize) for p in (allProviders|remove:configuredProviders)"
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-detail.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-detail.html
index 4a5ad62..3348250 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-detail.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-detail.html
@@ -1,144 +1,134 @@
-<div id="wrapper" class="container">
- <div class="row">
- <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
- <div id="content-area" class="col-md-9" role="main">
- <div class="top-nav">
- <ul class="rcue-tabs">
- <li><a href="#/realms/{{realm.realm}}">General</a></li>
- <li data-ng-show="realm.social"><a href="#/realms/{{realm.realm}}/social-settings">Social</a></li>
- <li class="active"><a href="#/realms/{{realm.realm}}/roles">Roles</a></li>
- <li><a href="#/realms/{{realm.realm}}/default-roles">Default Roles</a></li>
- <li><a href="#/realms/{{realm.realm}}/required-credentials">Credentials</a></li>
- <li><a href="#/realms/{{realm.realm}}/token-settings">Token</a></li>
- <li><a href="#/realms/{{realm.realm}}/keys-settings">Keys</a></li>
- <li><a href="#/realms/{{realm.realm}}/smtp-settings">Email</a></li>
- </ul>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div id="content-area" class="col-md-9" role="main">
+
+ <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
+ <li><a href="#/realms/{{realm.realm}}">General</a></li>
+ <li data-ng-show="realm.social"><a href="#/realms/{{realm.realm}}/social-settings">Social</a></li>
+ <li class="active"><a href="#/realms/{{realm.realm}}/roles">Roles</a></li>
+ <li><a href="#/realms/{{realm.realm}}/default-roles">Default Roles</a></li>
+ <li><a href="#/realms/{{realm.realm}}/required-credentials">Credentials</a></li>
+ <li><a href="#/realms/{{realm.realm}}/token-settings">Token</a></li>
+ <li><a href="#/realms/{{realm.realm}}/keys-settings">Keys</a></li>
+ <li><a href="#/realms/{{realm.realm}}/smtp-settings">Email</a></li>
+ </ul>
+
+ <div id="content">
+ <ol class="breadcrumb" data-ng-hide="create">
+ <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
+ <li><a href="#/realms/{{realm.realm}}">Settings</a></li>
+ <li><a href="#/realms/{{realm.realm}}/roles">Roles</a></li>
+ <li class="active">{{role.name}}</li>
+ </ol>
+ <h2 data-ng-hide="create"><span>{{realm.realm}}</span> {{role.name}}</h2>
+ <ol class="breadcrumb" data-ng-show="create">
+ <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
+ <li><a href="#/realms/{{realm.realm}}">Settings</a></li>
+ <li><a href="#/realms/{{realm.realm}}/roles">Roles</a></li>
+ <li class="active">Add Role</li>
+ </ol>
+ <h2 data-ng-show="create"><span>{{realm.realm}}</span> Add Role</h2>
+ <p class="subtitle" data-ng-show="create"><span class="required">*</span> Required fields</p>
+ <form class="form-horizontal" name="realmForm" novalidate>
+ <fieldset>
+ <div class="form-group">
+ <label class="col-sm-2 control-label" for="name">Role name <span class="required" data-ng-show="create">*</span></label>
+
+ <div class="col-sm-4">
+ <input class="form-control" type="text" id="name" name="name" data-ng-model="role.name" autofocus
+ required data-ng-readonly="!create">
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-sm-2 control-label" for="description">Description </label>
+
+ <div class="col-sm-4">
+ <textarea class="form-control" rows="5" cols="50" id="description" name="description" data-ng-model="role.description"></textarea>
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-sm-2 control-label" for="compositeSwitch" class="control-label">Composite Roles</label>
+ <div class="col-sm-4">
+ <input ng-model="compositeSwitch" name="compositeSwitch" id="compositeSwitch" ng-disabled="compositeSwitchDisabled" onoffswitch />
+ </div>
+ </div>
+ </fieldset>
+ <div class="pull-right form-actions" data-ng-show="create">
+ <button kc-cancel data-ng-click="cancel()" data-ng-show="changed">Cancel</button>
+ <button kc-save data-ng-show="changed">Save</button>
</div>
- <div id="content">
- <ol class="breadcrumb" data-ng-hide="create">
- <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
- <li><a href="#/realms/{{realm.realm}}">Settings</a></li>
- <li><a href="#/realms/{{realm.realm}}/roles">Roles</a></li>
- <li class="active">{{role.name}}</li>
- </ol>
- <h2 class="pull-left" data-ng-hide="create"><span>{{realm.realm}}</span> {{role.name}}</h2>
- <ol class="breadcrumb" data-ng-show="create">
- <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
- <li><a href="#/realms/{{realm.realm}}">Settings</a></li>
- <li><a href="#/realms/{{realm.realm}}/roles">Roles</a></li>
- <li class="active">Add Role</li>
- </ol>
- <h2 class="pull-left" data-ng-show="create"><span>{{realm.realm}}</span> Add Role</h2>
- <p class="subtitle" data-ng-show="create"><span class="required">*</span> Required fields</p>
- <form name="realmForm" novalidate>
- <fieldset class="border-top">
- <div class="form-group">
- <label for="name">Role name <span class="required" data-ng-show="create">*</span></label>
- <div class="controls">
- <input type="text" id="name" name="name" data-ng-model="role.name" autofocus
- required data-ng-readonly="!create">
- </div>
- </div>
- <div class="form-group">
- <label for="description">Description </label>
+ <div class="pull-right form-actions" data-ng-show="!create">
+ <button kc-reset data-ng-show="changed">Clear changes</button>
+ <button kc-save data-ng-show="changed">Save</button>
+ <button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button>
+ </div>
- <div class="controls">
- <textarea rows="5" cols="50" id="description" name="description" data-ng-model="role.description"></textarea>
- </div>
+ <fieldset data-ng-show="!create && (compositeSwitch || role.composite)">
+ <legend collapsed><span class="text">Composite Realm Roles</span> </legend>
+ <div class="form-group">
+ <div class="controls changing-selectors">
+ <div class="select-title">
+ <label for="available">Available Roles</label>
+ <select id="available" class="form-control" multiple size="5"
+ ng-multiple="true"
+ ng-model="selectedRealmRoles"
+ ng-options="r.name for r in realmRoles">
+ </select>
+ </div>
+ <div class="middle-buttons">
+ <button type="submit" ng-click="addRealmRole()" tooltip="Move right" tooltip-placement="right"><span class="icon-arrow-right">Move right</span></button>
+ <button type="submit" ng-click="deleteRealmRole()" tooltip="Move left" tooltip-placement="right"><span class="icon-arrow-left">Move left</span></button>
</div>
- <div class="form-group clearfix block">
- <label for="compositeSwitch" class="control-label">Composite Roles</label>
- <input ng-model="compositeSwitch" name="compositeSwitch" id="compositeSwitch" ng-disabled="compositeSwitchDisabled" onoffswitch />
+ <div class="select-title">
+ <label for="assigned">Assigned Roles</label>
+ <select id="assigned" class="form-control" multiple size=5
+ ng-multiple="true"
+ ng-model="selectedRealmMappings"
+ ng-options="r.name for r in realmMappings">
+ </select>
</div>
- </fieldset>
- <div class="form-actions" data-ng-show="create">
- <button type="submit" kc-save class="primary" data-ng-show="changed">Save
- </button>
- <button type="submit" data-ng-click="cancel()" data-ng-click="cancel()"
- data-ng-show="changed">Cancel
- </button>
</div>
+ </div>
+ </fieldset>
- <div class="form-actions" data-ng-show="!create">
- <button type="submit" kc-save class="primary" data-ng-show="changed">Save
- </button>
- <button type="submit" kc-reset data-ng-show="changed">Clear changes
- </button>
- <button type="submit" data-ng-click="remove()" class="destructive" data-ng-hide="changed">
- Delete
- </button>
+ <fieldset ng-show="applications.length > 0 && !create && (compositeSwitch || role.composite)">
+ <legend collapsed><span class="text">Composite Application Roles</span> </legend>
+ <div class="form-group input-select">
+ <label for="applications">Application</label>
+ <div class="input-group">
+ <div class="select-kc">
+ <select id="applications" name="applications" ng-change="changeApplication()" ng-model="compositeApp" ng-options="a.name for a in applications">
+ <option value="" selected> Select an Application...</option>
+ </select>
+ </div>
</div>
-
- <fieldset data-ng-show="!create && (compositeSwitch || role.composite)">
- <legend collapsed><span class="text">Composite Realm Roles</span> </legend>
- <div class="form-group">
- <div class="controls changing-selectors">
- <div class="select-title">
- <label for="available">Available Roles</label>
- <select id="available" class="form-control" multiple size="5"
- ng-multiple="true"
- ng-model="selectedRealmRoles"
- ng-options="r.name for r in realmRoles">
- </select>
- </div>
- <div class="middle-buttons">
- <button type="submit" ng-click="addRealmRole()" tooltip="Move right" tooltip-placement="right"><span class="icon-arrow-right">Move right</span></button>
- <button type="submit" ng-click="deleteRealmRole()" tooltip="Move left" tooltip-placement="right"><span class="icon-arrow-left">Move left</span></button>
- </div>
- <div class="select-title">
- <label for="assigned">Assigned Roles</label>
- <select id="assigned" class="form-control" multiple size=5
- ng-multiple="true"
- ng-model="selectedRealmMappings"
- ng-options="r.name for r in realmMappings">
- </select>
- </div>
- </div>
+ </div>
+ <div class="form-group" ng-show="compositeApp">
+ <div class="controls changing-selectors application">
+ <div class="select-title">
+ <label class="control-label" for="available-app">Available Roles</label>
+ <select id="available-app" class="form-control" multiple size="5"
+ ng-multiple="true"
+ ng-model="selectedApplicationRoles"
+ ng-options="r.name for r in applicationRoles">
+ </select>
</div>
- </fieldset>
-
- <fieldset ng-show="applications.length > 0 && !create && (compositeSwitch || role.composite)">
- <legend collapsed><span class="text">Composite Application Roles</span> </legend>
- <div class="form-group input-select">
- <label for="applications">Application</label>
- <div class="input-group">
- <div class="select-kc">
- <select id="applications" name="applications" ng-change="changeApplication()" ng-model="compositeApp" ng-options="a.name for a in applications">
- <option value="" selected> Select an Application...</option>
- </select>
- </div>
- </div>
+ <div class="middle-buttons">
+ <button type="submit" ng-click="addApplicationRole()" tooltip="Move right" tooltip-placement="right"><span class="icon-arrow-right">Move right</span></button>
+ <button type="submit" ng-click="deleteApplicationRole()" tooltip="Move left" tooltip-placement="right"><span class="icon-arrow-left">Move left</span></button>
</div>
- <div class="form-group" ng-show="compositeApp">
- <div class="controls changing-selectors application">
- <div class="select-title">
- <label for="available-app">Available Roles</label>
- <select id="available-app" class="form-control" multiple size="5"
- ng-multiple="true"
- ng-model="selectedApplicationRoles"
- ng-options="r.name for r in applicationRoles">
- </select>
- </div>
- <div class="middle-buttons">
- <button type="submit" ng-click="addApplicationRole()" tooltip="Move right" tooltip-placement="right"><span class="icon-arrow-right">Move right</span></button>
- <button type="submit" ng-click="deleteApplicationRole()" tooltip="Move left" tooltip-placement="right"><span class="icon-arrow-left">Move left</span></button>
- </div>
- <div class="select-title">
- <label for="assigned-app">Assigned Roles</label>
- <select id="assigned-app" class="form-control" multiple size=5
- ng-multiple="true"
- ng-model="selectedApplicationMappings"
- ng-options="r.name for r in applicationMappings">
- </select>
- </div>
- </div>
+ <div class="select-title">
+ <label class="control-label" for="assigned-app">Assigned Roles</label>
+ <select id="assigned-app" class="form-control" multiple size=5
+ ng-multiple="true"
+ ng-model="selectedApplicationMappings"
+ ng-options="r.name for r in applicationMappings">
+ </select>
</div>
- </fieldset>
+ </div>
+ </div>
+ </fieldset>
- </form>
- </div>
- </div>
- <div id="container-right-bg"></div>
+ </form>
</div>
</div>
\ No newline at end of file
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-list.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-list.html
index e87f890..1ef0b64 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-list.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-list.html
@@ -12,18 +12,18 @@
<p><strong>You have not configured realm roles.</strong> <a class="kc-button" href="#/create/role/{{realm.realm}}">Add Role</a></p>
</div>
<div class="panel">
- <table data-ng-hide="!roles || roles.length == 0">
+ <table class="table" data-ng-hide="!roles || roles.length == 0">
<thead>
<tr>
- <th class="rcue-table-actions" colspan="3">
- <div class="actions">
+ <th class="kc-table-actions" colspan="3">
+ <div class="pull-right">
<a class="kc-button" href="#/create/role/{{realm.realm}}">Add Role</a>
<!-- <button class="remove disabled">Remove</button> -->
</div>
</th>
</tr>
<tr data-ng-show="roles && roles.length > 5">
- <th class="rcue-table-actions" colspan="3">
+ <th class="kc-table-actions" colspan="3">
<div class="search-comp clearfix">
<input type="text" placeholder="Search..." class="search">
<button class="icon-search" tooltip-placement="right"
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-mappings.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-mappings.html
index 1cd8d6c..7bb365f 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-mappings.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-mappings.html
@@ -1,92 +1,93 @@
-<div id="wrapper" class="container">
- <div class="row">
- <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
- <div id="content-area" class="col-md-9" role="main">
- <div class="top-nav">
- <ul class="rcue-tabs" >
- <li><a href="#/realms/{{realm.realm}}/users/{{user.username}}">Attributes</a></li>
- <li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/user-credentials">Credentials</a></li>
- <li class="active"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/role-mappings">Role Mappings</a></li>
- </ul>
- </div>
- <div id="content">
- <ol class="breadcrumb">
- <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
- <li><a href="#/realms/{{realm.realm}}/users">Users</a></li>
- <li><a href="#/realms/{{realm.realm}}/users/{{user.username}}">{{user.username}}</a></li>
- <li class="active">Role Mappings</li>
- </ol>
- <h2 class="pull-left"><span>{{user.username}}'s</span> Role Mappings</h2>
- <p class="subtitle">All fields required</p>
- <form name="realmForm" novalidate>
- <fieldset>
- <legend uncollapsed><span class="text">Realm Roles</span> </legend>
- <div class="form-group">
- <div class="controls changing-selectors">
- <div class="select-title">
- <label for="available">Available Roles</label>
- <select id="available" class="form-control" multiple size="5"
- ng-multiple="true"
- ng-model="selectedRealmRoles"
- ng-options="r.name for r in realmRoles">
- </select>
- </div>
- <div class="middle-buttons">
- <button type="submit" ng-click="addRealmRole()" tooltip="Move right" tooltip-placement="right"><span class="icon-arrow-right">Move right</span></button>
- <button type="submit" ng-click="deleteRealmRole()" tooltip="Move left" tooltip-placement="right"><span class="icon-arrow-left">Move left</span></button>
- </div>
- <div class="select-title">
- <label for="assigned">Assigned Roles</label>
- <select id="assigned" class="form-control" multiple size=5
- ng-multiple="true"
- ng-model="selectedRealmMappings"
- ng-options="r.name for r in realmMappings">
- </select>
- </div>
- </div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div id="content-area" class="col-md-9" role="main">
+ <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
+ <li><a href="#/realms/{{realm.realm}}/users/{{user.username}}">Attributes</a></li>
+ <li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/user-credentials">Credentials</a></li>
+ <li class="active"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/role-mappings">Role Mappings</a></li>
+ </ul>
+ <div id="content">
+ <ol class="breadcrumb">
+ <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
+ <li><a href="#/realms/{{realm.realm}}/users">Users</a></li>
+ <li><a href="#/realms/{{realm.realm}}/users/{{user.username}}">{{user.username}}</a></li>
+ <li class="active">Role Mappings</li>
+ </ol>
+ <h2><span>{{user.username}}'s</span> Role Mappings</h2>
+ <p class="subtitle">All fields required</p>
+ <form class="form-horizontal" name="realmForm" novalidate>
+ <fieldset>
+ <legend uncollapsed><span class="text">Realm Roles</span> </legend>
+ <div class="form-group">
+ <div class="controls changing-selectors">
+ <div class="select-title">
+ <label for="available">Available Roles</label>
+ <select id="available" class="form-control" multiple size="5"
+ ng-multiple="true"
+ ng-model="selectedRealmRoles"
+ ng-options="r.name for r in realmRoles">
+ </select>
</div>
- </fieldset>
-
- <fieldset ng-show="applications.length > 0">
- <legend collapsed><span class="text">Application Roles</span> </legend>
- <div class="form-group input-select">
- <label for="applications">Application</label>
- <div class="input-group">
- <div class="select-kc">
- <select id="applications" name="applications" ng-change="changeApplication()" ng-model="application" ng-options="a.name for a in applications">
- <option value="" selected> Select an Application...</option>
- </select>
- </div>
- </div>
+ <div class="middle-buttons">
+ <button class="kc-button kc-vertical" type="submit" ng-click="addRealmRole()" tooltip="Move right" tooltip-placement="right">
+ <span class="kc-icon-arrow-right">Move right</span>
+ </button>
+ <button class="kc-button kc-vertical" type="submit" ng-click="deleteRealmRole()" tooltip="Move left" tooltip-placement="right">
+ <span class="kc-icon-arrow-left">Move left</span>
+ </button>
</div>
- <div class="form-group" ng-show="application">
- <div class="controls changing-selectors application">
- <div class="select-title">
- <label for="available-app">Available Roles</label>
- <select id="available-app" class="form-control" multiple size="5"
- ng-multiple="true"
- ng-model="selectedApplicationRoles"
- ng-options="r.name for r in applicationRoles">
- </select>
- </div>
- <div class="middle-buttons">
- <button type="submit" ng-click="addApplicationRole()" tooltip="Move right" tooltip-placement="right"><span class="icon-arrow-right">Move right</span></button>
- <button type="submit" ng-click="deleteApplicationRole()" tooltip="Move left" tooltip-placement="right"><span class="icon-arrow-left">Move left</span></button>
- </div>
- <div class="select-title">
- <label for="assigned-app">Assigned Roles</label>
- <select id="assigned-app" class="form-control" multiple size=5
- ng-multiple="true"
- ng-model="selectedApplicationMappings"
- ng-options="r.name for r in applicationMappings">
- </select>
- </div>
- </div>
+ <div class="select-title">
+ <label for="assigned">Assigned Roles</label>
+ <select id="assigned" class="form-control" multiple size=5
+ ng-multiple="true"
+ ng-model="selectedRealmMappings"
+ ng-options="r.name for r in realmMappings">
+ </select>
</div>
- </fieldset>
- </form>
- </div>
- </div>
- <div id="container-right-bg"></div>
+ </div>
+ </div>
+ </fieldset>
+
+ <fieldset ng-show="applications.length > 0">
+ <legend collapsed><span class="text">Application Roles</span> </legend>
+ <div class="form-group input-select">
+ <label for="applications">Application</label>
+ <div class="input-group">
+ <div class="select-kc">
+ <select id="applications" name="applications" ng-change="changeApplication()" ng-model="application" ng-options="a.name for a in applications">
+ <option value="" selected> Select an Application...</option>
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="form-group" ng-show="application">
+ <div class="controls changing-selectors application">
+ <div class="select-title">
+ <label for="available-app">Available Roles</label>
+ <select id="available-app" class="form-control" multiple size="5"
+ ng-multiple="true"
+ ng-model="selectedApplicationRoles"
+ ng-options="r.name for r in applicationRoles">
+ </select>
+ </div>
+ <div class="middle-buttons">
+ <button class="kc-button kc-vertical" type="submit" ng-click="addApplicationRole()" tooltip="Move right" tooltip-placement="right">
+ <span class="kc-icon-arrow-right">Move right</span>
+ </button>
+ <button class="kc-button kc-vertical" type="submit" ng-click="deleteApplicationRole()" tooltip="Move left" tooltip-placement="right">
+ <span class="kc-icon-arrow-left">Move left</span>
+ </button>
+ </div>
+ <div class="select-title">
+ <label for="assigned-app">Assigned Roles</label>
+ <select id="assigned-app" class="form-control" multiple size=5
+ ng-multiple="true"
+ ng-model="selectedApplicationMappings"
+ ng-options="r.name for r in applicationMappings">
+ </select>
+ </div>
+ </div>
+ </div>
+ </fieldset>
+ </form>
</div>
</div>
\ No newline at end of file
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-credentials.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-credentials.html
index b5fb987..5bc1f28 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-credentials.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-credentials.html
@@ -1,14 +1,13 @@
-<div id="wrapper" class="container">
- <div class="row">
+
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main">
- <div class="top-nav">
- <ul class="rcue-tabs">
+
+ <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}">Attributes</a></li>
<li class="active"><a href="#/realms/{{realm.realm}}/users/{{user.username}}/user-credentials">Credentials</a></li>
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/role-mappings">Role Mappings</a></li>
</ul>
- </div>
+
<div id="content">
<ol class="breadcrumb">
<li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
@@ -16,36 +15,33 @@
</ol>
<h2><span>{{user.username}}'s</span> Credentials</h2>
- <form name="userForm" novalidate>
+ <form class="form-horizontal" name="userForm" novalidate>
<fieldset class="border-top">
<legend uncollapsed><span class="text">Credential Management</span></legend>
<div class="form-group">
- <label for="password">Reset password</label>
- <div class="controls">
- <input type="password" id="password" name="password" data-ng-model="password" placeholder="Temporary password" required>
- <input type="password" id="confirmPassword" name="confirmPassword" data-ng-model="confirmPassword" placeholder="Password confirmation" required>
- <button type="submit" data-ng-click="resetPassword()" class="destructive" data-ng-show="password">Reset Password</button>
+ <label class="col-sm-2 control-label" for="password">Reset password</label>
+ <div class="col-sm-4 kc-multiline">
+ <input class="form-control" type="password" id="password" name="password" data-ng-model="password" placeholder="Temporary password" required>
+ <input class="form-control" type="password" id="confirmPassword" name="confirmPassword" data-ng-model="confirmPassword" placeholder="Password confirmation" required>
+ <button class="btn btn-danger" type="submit" data-ng-click="resetPassword()" data-ng-show="password">Reset Password</button>
</div>
</div>
<div class="form-group" data-ng-show="user.email">
- <label for="password">Reset password email</label>
- <div class="controls">
- <button type="submit" data-ng-click="resetPasswordEmail()" class="destructive">Send Email</button>
+ <label class="col-sm-2 control-label" for="password">Reset password email</label>
+ <div class="col-sm-4">
+ <button class="btn btn-danger" type="submit" data-ng-click="resetPasswordEmail()" >Send Email</button>
</div>
</div>
<div class="form-group" data-ng-show="user.totp">
- <label for="password">Remove totp</label>
- <div class="controls" data-ng-show="user.totp">
- <button type="submit" data-ng-click="removeTotp()" class="destructive">Remove TOTP</button>
+ <label class="col-sm-2 control-label" for="password">Remove totp</label>
+ <div class="col-sm-4" data-ng-show="user.totp">
+ <button class="btn btn-danger" type="submit" data-ng-click="removeTotp()">Remove TOTP</button>
</div>
</div>
</fieldset>
</form>
</div>
- </div>
- <div id="container-right-bg"></div>
- </div>
-</div>
\ No newline at end of file
+ </div>
\ No newline at end of file
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-detail.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-detail.html
index 95b099e..eceacaa 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-detail.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-detail.html
@@ -1,109 +1,95 @@
-<div id="wrapper" class="container">
- <div class="row">
<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
<div id="content-area" class="col-md-9" role="main">
- <div class="top-nav" data-ng-show="create">
- <ul class="rcue-tabs">
- <li></li>
- </ul>
- </div>
- <div class="top-nav" data-ng-show="!create">
- <ul class="rcue-tabs" >
+
+ <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
<li class="active"><a href="#/realms/{{realm.realm}}/users/{{user.username}}">Attributes</a></li>
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/user-credentials">Credentials</a></li>
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}/role-mappings">Role Mappings</a></li>
</ul>
- </div>
+
<div id="content">
<ol class="breadcrumb" data-ng-show="create">
<li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
<li><a href="#/realms/{{realm.realm}}/users">Users</a></li>
<li class="active">Add</li>
</ol>
- <h2 class="pull-left" data-ng-show="create">Add User</h2>
+ <h2 data-ng-show="create">Add User</h2>
<p class="subtitle" data-ng-show="create"><span class="required">*</span> Required fields</p>
-
<ol class="breadcrumb" data-ng-hide="create">
<li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
<li><a href="#/realms/{{realm.realm}}/users">Users</a></li>
<li><a href="#/realms/{{realm.realm}}/users/{{user.username}}">{{user.username}}</a></li>
<li class="active">Attributes</li>
</ol>
- <h2 class="pull-left" data-ng-hide="create"><span>{{user.username}}'s</span> Attributes</h2>
+ <h2 data-ng-hide="create"><span>{{user.username}}'s</span> Attributes</h2>
- <form name="userForm" novalidate>
+ <form class="form-horizontal" name="userForm" novalidate>
<fieldset class="border-top">
<div class="form-group">
- <label for="username">Username <span class="required" data-ng-show="create">*</span></label>
- <div class="controls">
+ <label class="col-sm-2 control-label"for="username">Username <span class="required" data-ng-show="create">*</span></label>
+ <div class="col-sm-4">
<!-- Characters >,<,/,\ are forbidden in username -->
- <input type="text" id="username" name="username" data-ng-model="user.username" autofocus
+ <input class="form-control" type="text" id="username" name="username" data-ng-model="user.username" autofocus
required ng-pattern="/^[^\<\>\\\/]*$/" data-ng-readonly="!create">
</div>
</div>
<div class="form-group">
- <label for="email" class="control-label">Email</label>
+ <label class="col-sm-2 control-label" for="email">Email</label>
- <div class="controls">
- <input class="input-small" type="email" name="email" id="email"
+ <div class="col-sm-4">
+ <input class="form-control" type="email" name="email" id="email"
data-ng-model="user.email">
</div>
</div>
<div class="form-group">
- <label for="firstName" class="control-label">First Name</label>
+ <label class="col-sm-2 control-label" for="firstName">First Name</label>
- <div class="controls">
- <input class="input-small" type="text" name="firstName" id="firstName"
+ <div class="col-sm-4">
+ <input class="form-control" type="text" name="firstName" id="firstName"
data-ng-model="user.firstName">
</div>
</div>
<div class="form-group">
- <label for="lastName" class="control-label">Last Name</label>
+ <label class="col-sm-2 control-label" for="lastName">Last Name</label>
- <div class="controls">
- <input class="input-small" type="text" name="lastName" id="lastName"
+ <div class="col-sm-4">
+ <input class="form-control" type="text" name="lastName" id="lastName"
data-ng-model="user.lastName">
</div>
</div>
<div class="form-group clearfix block">
- <label for="userEnabled" class="control-label">User Enabled</label>
+ <label class="col-sm-2 control-label" for="userEnabled">User Enabled</label>
+ <div class="col-sm-4">
<input ng-model="user.enabled" name="userEnabled" id="userEnabled" onoffswitch />
+ </div>
</div>
<div class="form-group clearfix block">
- <label for="emailVerified" class="control-label">Email verified</label>
+ <label class="col-sm-2 control-label" for="emailVerified">Email verified</label>
+ <div class="col-sm-4">
<input ng-model="user.emailVerified" name="emailVerified" id="emailVerified" onoffswitch />
+ </div>
</div>
<div class="form-group clearfix">
- <label for="reqActions" class="control-label two-lines">Required User Actions</label>
+ <label class="col-sm-2 control-label" for="reqActions">Required User Actions</label>
- <div class="controls">
+ <div class="col-sm-4">
<input type="text" ui-select2="userReqActionsOptions" ng-model="userActions" id="reqActions"/>
</div>
</div>
</fieldset>
- <div class="form-actions" data-ng-show="create">
- <button type="submit" kc-save class="primary" data-ng-show="changed">Save
- </button>
- <button type="submit" data-ng-click="cancel()">Cancel
- </button>
+ <div class="pull-right form-actions" data-ng-show="create">
+ <button kc-cancel data-ng-click="cancel()">Cancel</button>
+ <button kc-save data-ng-show="changed">Save</button>
</div>
- <div class="form-actions" data-ng-show="!create">
- <button type="submit" kc-save class="primary" data-ng-show="changed">Save
- </button>
- <button type="submit" kc-reset data-ng-show="changed">Clear changes
- </button>
- <button type="submit" data-ng-click="remove()" class="destructive" data-ng-hide="changed">
- Delete
- </button>
+ <div class="pull-right form-actions" data-ng-show="!create">
+ <button kc-reset data-ng-show="changed">Clear changes</button>
+ <button kc-save data-ng-show="changed">Save</button>
+ <button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button>
</div>
</form>
</div>
- </div>
- <div id="container-right-bg"></div>
- </div>
-</div>
-</div>
\ No newline at end of file
+ </div>
\ No newline at end of file
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-list.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-list.html
index ac727d8..b7ecfa2 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-list.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-list.html
@@ -1,79 +1,72 @@
-<div id="wrapper" class="container">
- <div class="row">
- <div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
- <div id="content-area" class="col-md-9" role="main">
- <div class="top-nav">
- <ul class="rcue-tabs">
- <li></li>
- </ul>
- </div>
- <div id="content">
- <ol class="breadcrumb">
- <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
- <li class="active">Users</li>
- </ol>
- <h2><span>{{realm.realm}}</span> Users</h2>
- <table>
- <caption data-ng-show="users" class="hidden">Table of realm users</caption>
- <thead>
- <tr>
- <th class="rcue-table-actions" colspan="4">
- <div class="search-comp clearfix">
- <input type="text" placeholder="Search..." data-ng-model="search" class="search"
- onkeyup="if(event.keyCode == 13){$(this).next('button').click();}">
- <button data-ng-click="searchQuery()" type="submit"
- class="icon-search" tooltip-placement="right"
- tooltip="Search by full name, last name, email, or username.">
- Icon: search
- </button>
- </div>
- <span><span>or</span><button class="link" ng-click="search = null; searchQuery()">View all users</button></span>
- <div class="actions">
- <a class="button" href="#/create/user/{{realm.realm}}">Add User</a>
- </div>
- </th>
- </tr>
- <tr>
- <tr data-ng-show="searchLoaded && users.length > 0">
- <th>Username</th>
- <th>Last Name</th>
- <th>First Name</th>
- <th>Email</th>
- </tr>
- </tr>
- </thead>
- <!-- todo -->
- <!--<tfoot data-ng-show="users && users.length > 10">
- <tr>
- <td colspan="4">
- <div class="table-nav">
- <a href="#" class="first disabled">First page</a><a href="#" class="prev disabled">Previous
- page</a><span><strong>1-8</strong> of <strong>10</strong></span><a href="#"
- class="next">Next
- page</a><a href="#" class="last">Last page</a>
- </div>
- </td>
- </tr>
- </tfoot>-->
- <tbody>
- <tr ng-repeat="user in users">
- <td><a href="#/realms/{{realm.realm}}/users/{{user.username}}">{{user.username}}</a></td>
- <td>{{user.lastName}}</td>
- <td>{{user.firstName}}</td>
- <td>{{user.email}}</td>
- </tr>
- </tbody>
- </table>
- <div class="feedback warning inline" data-ng-show="searchLoaded && users.length == 0">
- <p data-ng-show="lastSearch != null"><strong>Your search returned no results.</strong><br>Try modifying the query and try again.</p>
- <p data-ng-show="lastSearch == null"><strong>No users present.</strong><br>Create some using the "Add User" button.</p>
- </div>
- <div class="feedback info inline" data-ng-show="!users">
- <br/>
- <p><strong>Search for users.</strong><br>Please enter a search to display users.</p>
- </div>
- </div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div id="content-area" class="col-md-9" role="main">
+ <ul class="nav nav-tabs nav-tabs-pf">
+ <li class="active"><a href="">User List</a></li>
+ </ul>
+ <div id="content">
+ <ol class="breadcrumb">
+ <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
+ <li class="active">Users</li>
+ </ol>
+ <h2><span>{{realm.realm}}</span> Users</h2>
+ <table class="table">
+ <caption data-ng-show="users" class="hidden">Table of realm users</caption>
+ <thead>
+ <tr>
+ <th class="kc-table-actions" colspan="4">
+ <div class="search-comp clearfix">
+ <input type="text" placeholder="Search..." data-ng-model="search" class="form-control search"
+ onkeyup="if(event.keyCode == 13){$(this).next('button').click();}">
+ <button data-ng-click="searchQuery()" type="submit"
+ class="kc-icon-search" tooltip-placement="right"
+ tooltip="Search by full name, last name, email, or username.">
+ Icon: search
+ </button>
+ </div>
+ <span><span>or</span><button class="kc-link" ng-click="search = null; searchQuery()">View all users</button></span>
+ <div class="pull-right">
+ <a class="kc-button" href="#/create/user/{{realm.realm}}">Add User</a>
+ </div>
+ </th>
+ </tr>
+ <tr>
+ <tr data-ng-show="searchLoaded && users.length > 0">
+ <th>Username</th>
+ <th>Last Name</th>
+ <th>First Name</th>
+ <th>Email</th>
+ </tr>
+ </tr>
+ </thead>
+ <!-- todo -->
+ <!--<tfoot data-ng-show="users && users.length > 10">
+ <tr>
+ <td colspan="4">
+ <div class="table-nav">
+ <a href="#" class="first disabled">First page</a><a href="#" class="prev disabled">Previous
+ page</a><span><strong>1-8</strong> of <strong>10</strong></span><a href="#"
+ class="next">Next
+ page</a><a href="#" class="last">Last page</a>
+ </div>
+ </td>
+ </tr>
+ </tfoot>-->
+ <tbody>
+ <tr ng-repeat="user in users">
+ <td><a href="#/realms/{{realm.realm}}/users/{{user.username}}">{{user.username}}</a></td>
+ <td>{{user.lastName}}</td>
+ <td>{{user.firstName}}</td>
+ <td>{{user.email}}</td>
+ </tr>
+ </tbody>
+ </table>
+ <div class="feedback warning inline" data-ng-show="searchLoaded && users.length == 0">
+ <p data-ng-show="lastSearch != null"><strong>Your search returned no results.</strong><br>Try modifying the query and try again.</p>
+ <p data-ng-show="lastSearch == null"><strong>No users present.</strong><br>Create some using the "Add User" button.</p>
+ </div>
+ <div class="feedback info inline" data-ng-show="!users">
+ <br/>
+ <p><strong>Search for users.</strong><br>Please enter a search to display users.</p>
</div>
- <div id="container-right-bg"></div>
</div>
</div>
\ No newline at end of file
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/templates/kc-form-control-buttons.html b/admin-ui/src/main/resources/META-INF/resources/admin/templates/kc-form-control-buttons.html
new file mode 100644
index 0000000..0024f3a
--- /dev/null
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/templates/kc-form-control-buttons.html
@@ -0,0 +1,11 @@
+<div>
+ <div class="pull-right form-actions" data-ng-show="kcCreate">
+ <button kc-button-cancel data-ng-click="kcActionCancel()">Cancel</button>
+ <button kc-button-save data-ng-show="kcChanged">Save</button>
+ </div>
+ <div class="pull-right form-actions" data-ng-show="!kcCreate">
+ <button kc-button-reset data-ng-show="kcChanged">Clear changes</button>
+ <button kc-button-save data-ng-show="kcChanged">Save</button>
+ <button kc-button-delete data-ng-hide="kcChanged" data-ng-click="kcActionRemove()">Delete</button>
+ </div>
+</div>
\ No newline at end of file
diff --git a/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/admin-console.css b/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/admin-console.css
index 8393814..7138889 100644
--- a/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/admin-console.css
+++ b/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/admin-console.css
@@ -24,18 +24,24 @@ html, body, body > .container, #view, #content-area{
border-radius: 2px;
color: #555;
cursor: pointer;
- font-size: 1em;
+ font-size: .9em;
font-weight: bold;
line-height: 2.18182em;
border-radius: 2px;
box-shadow: 0 2px 2px rgba(0, 0, 0, 0.15);
font-weight: bold;
letter-spacing: 0.04em;
- padding: 0.307692em 1.07692em;
- margin: 0.5em;
+ /*padding: 0.307692em 1.07692em;*/
+ padding: 0 1.07692em;
+ /*margin: 0.5em;*/
+ margin: 0;
display: inline-block;
}
+.kc-button.kc-vertical {
+ display: block;
+}
+
p.subtitle {
position: absolute;
right: 2.5em;
@@ -98,6 +104,66 @@ header .navbar {
font-weight: bold;
}
+/* Forms */
+
+.kc-link {
+ border: none;
+ background-color: transparent;
+ background: none;
+ box-shadow: none;
+ font-weight: normal;
+ font-size: 1em;
+ color: #0099D3;
+ letter-spacing: 0;
+ padding: 0;
+}
+.kc-link:hover {
+ text-decoration: underline;
+}
+
+.search-comp {
+ position: relative;
+ display: inline-block;
+ font-size: 0.90909090909091em;
+}
+.search-comp input[type="text"] {
+ padding-right: 2.45454545454545em;
+}
+.search-comp .kc-icon-search {
+ position: absolute;
+ right: 0.2em;
+ top: 0.6em;
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+.search-comp .kc-icon-search:hover,
+.search-comp .kc-icon-search:active,
+.search-comp .kc-icon-search:focus {
+ background-image: url('img/sprites.png');
+ opacity: 1;
+ filter: alpha(opacity=100);
+ -webkit-transition: ease-in-out opacity 0.25s;
+ -moz-transition: ease-in-out opacity 0.25s;
+ -o-transition: ease-in-out opacity 0.25s;
+ transition: ease-in-out opacity 0.25s;
+}
+.search-comp .kc-icon-search + .tooltip {
+ width: 20em;
+ font-weight: normal;
+}
+.search-comp + span {
+ font-weight: normal;
+ color: #A1A1A1;
+}
+.search-comp + span span {
+ margin-left: 0.45454545454545em;
+ margin-right: 0.45454545454545em;
+ display: inline-block;
+}
+.search-comp + span .link {
+ font-size: 0.90909090909091em;
+}
+
/* Top menu */
#kc-navigation li.active {
@@ -285,6 +351,17 @@ legend:hover .text {
vertical-align: text-top;
}
+button[class^="kc-icon-"] {
+ border: none;
+ box-shadow: none;
+ background-color: transparent;
+ padding: 0;
+ line-height: 1em;
+}
+button[class^="kc-icon-"]:hover {
+ background-image: url(img/sprites.png);
+}
+
legend .kc-icon-collapse,
legend .kc-icon-expand {
background-image: url(../img/icon-collapse-expand.png);
@@ -407,6 +484,19 @@ legend .kc-icon-collapse {
background-color: #D5ECF9;
}
+/* If input has a button attached to it*/
+
+.kc-button-control {
+ xwidth: auto;
+ display: inline-block;
+}
+
+/* More inputs in one line */
+
+.kc-multiline input {
+ margin-bottom: .35em;
+}
+
/* Left-Rigth selector form */
.changing-selectors.application {
--padding-left: 12em;
@@ -448,7 +538,6 @@ legend .kc-icon-collapse {
}
.changing-selectors .middle-buttons {
display: inline-block;
- width: 4.5em;
margin-left: 0.8em;
margin-right: 0.8em;
vertical-align: middle;
@@ -464,6 +553,10 @@ legend .kc-icon-collapse {
margin-right: 0;
}
+.changing-selectors .middle-buttons.kc-vertical .kc-button{
+ display: block;
+}
+
/* Input file button */
.kc-button-input-file {
@@ -512,4 +605,10 @@ legend .kc-icon-collapse {
}
.kc-link-input-file .link:hover {
cursor: pointer;
-}
\ No newline at end of file
+}
+
+/* Select2 fix for zero-width when nothing is selected */
+.select2-container-multi .select2-choices {
+ min-width: 22em;
+}
+
diff --git a/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/tables.css b/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/tables.css
index a5f44fe..d16f9b7 100644
--- a/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/tables.css
+++ b/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/tables.css
@@ -20,27 +20,27 @@ table thead tr th {
border-right: 1px #dcdcdc solid;
text-align: left;
}
-.rcue-table-actions {
+.kc-table-actions {
padding: 1px;
border-top: none;
}
/*
-.rcue-table-actions span:last-child {
+.kc-table-actions span:last-child {
float: right;
}
*/
-.rcue-table-actions {
+.kc-table-actions {
padding: 1px;
}
/*
-.rcue-table-actions button {
+.kc-table-actions button {
padding: 3px 8px;
font-size: 11px;
box-shadow: 1px 2px 2px #e3e3e3;
margin: 4px;
}
*/
-.rcue-table-number {
+.kc-table-number {
text-align: right;
width: 100px;
}
@@ -83,11 +83,11 @@ table tbody tr:hover {
}
*/
/* Styles from Gabriel */
-.rcue-table-actions button + button,
-.rcue-table-actions .button + button {
+.kc-table-actions button + button,
+.kc-table-actions .button + button {
margin-left: 5px;
}
-.rcue-table-actions div.actions {
+.kc-table-actions div.actions {
float: right;
font-size: 0.90909090909091em;
}