This patchset implements all nessesary changes to merge admin_ui branch to master. Cloud Providers section is complete, realms and hardware profile tabs under Provider shows list of related realms/hwp's, the routes for realms and hwp's remained the same to enable direct listing for now. Users and Groups section has Users implemented. All other sections have adapted new admin ui style and work.
This patchset implements redmine #2333, 2384, 2378 and 2236
--- src/app/stylesheets/layout.scss | 5 +++-- src/app/views/providers/edit.haml | 23 +++++++++++++++++++---- src/public/images/alert_icon_critical.png | Bin 337 -> 321 bytes src/public/images/alert_icon_warn.png | Bin 364 -> 2993 bytes src/public/javascripts/application.js | 7 +++++++ 5 files changed, 29 insertions(+), 6 deletions(-)
diff --git a/src/app/stylesheets/layout.scss b/src/app/stylesheets/layout.scss index db9ad6c..c37a1d0 100644 --- a/src/app/stylesheets/layout.scss +++ b/src/app/stylesheets/layout.scss @@ -1627,16 +1627,17 @@ dl.alerts{ font-family: $font-family-primary; font-size: 13px; color: #333; + font-weight: bold; }
dt.subject.warn{ - padding-left: $alert_padding*2 + 14px; + padding-left: $alert_padding*2 + 16px; background: transparent url('../../images/alert_icon_warn.png') no-repeat $alert_padding 8px; }
dt.subject.critical{ padding-left: $alert_padding*2 + 16px; - background: transparent url('../../images/alert_icon_critical.png') no-repeat $alert_padding 7px; + background: transparent url('../../images/alert_icon_critical.png') no-repeat $alert_padding 8px; }
dd{ diff --git a/src/app/views/providers/edit.haml b/src/app/views/providers/edit.haml index 8cac34d..cba1317 100644 --- a/src/app/views/providers/edit.haml +++ b/src/app/views/providers/edit.haml @@ -2,13 +2,28 @@ = render :partial => 'section_header'
- if @provider.enabled - %section.admin-content-section.provider + %section.admin-content-section.alerts %header %h2.alerts Alerts - %span.label.badge.count.alert 2 - .content - unimplemented + %span.label.badge.count.alert 3 + .section-controls + = link_to "Toggle Alerts", "#", :class => 'collapse alerts' + .content.collapsible + %dl.alerts + %ul + %li.alert + %dt.subject.critical Subject + %dd.type Alert type + %dd.desc Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer [...] + %li.alert + %dt.subject.warn Subject + %dd.type Alert type + %dd.desc Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer [...] + %li.alert + %dt.subject.critical Subject + %dd.type Alert type + %dd.desc Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer [...] %section.admin-content-section.provider %header %h2.activity diff --git a/src/public/images/alert_icon_critical.png b/src/public/images/alert_icon_critical.png index aa412d130645d4e305dc179e6759502534c6815f..e451ad38c8ca383e98c65770f17dfb3e827b1b5d 100644 GIT binary patch delta 197 zcmV;$06PEC0>J{1gnv0NF*YwTG5X*TA^-pYnn^@KR5*>L)5{IQFc5^{&k+UC2^SZT zR1#XD1Ud+vqyQgCCv*TOkRzOjl{v2ck7rlwAXDOu5f^1WBG<eSD&V3?sD%Ganhp4l zTcO@31_+7g%FA73OuUzpG!?N+>YD>FIBam*IByf}+J&$(pgvvNYN3nSvMm`r4g{FK zn>e7ah0*4Jp~hrF8+pz8+iCKHDGX@CWCp_rawjL3%@jAu00000NkvXXu0mjf)>~4b
delta 213 zcmV;`04o2%0?`7Hgnu<JGB7VOF<*;cS^xk5s!2paR5*>Lld%!PFbqXsYzAP3OhE3u zfSDvzS_4*~Rh4XzmW~Bnun8m3<(#`1#php2_nxFe9a%)=47`C0`<YesmKS^l3^0Tc z`jpbL5gdefCEkFazzc{ai8CfIs`@DOMiH6Z!L>^nT>}h2vrgb-^rMKx7Qx-xz&hco zs+}d6tto%<=>SAz0>)Yxh#nxNw1g0PV5osr^}9Y(g=B>x`^JNk4Gi!Ddm2DmUoW$f P00000NkvXXu0mjfL04MC
diff --git a/src/public/images/alert_icon_warn.png b/src/public/images/alert_icon_warn.png index 0e64c05f4ff797c82a1d66d7a3c112a9fbb43dd9..eae92b71da18816e77e7d7906d438c381f70bc54 100644 GIT binary patch literal 2993 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
delta 352 zcmdle{)Wl0Gr-TCmrII^fq{Y7)59eQNb`Z%9Be>x=AHO@AjMMb<Qc*N1T`Ef9TOGB z>ltK9Tq8<?^V3So6N^$A98>a>QWe}Xi&D$;i?WLqoP$jZw>~xl>J$a3b1q6vEXmBz zQwYh-O=U3EH!{#SG>q?#j{+(<>gnPbqA{^{(q7Rf2Z0v*nkP3HOCD@y+QMu-A;UxS zppeHxPVWt@Zyl^Ja2X_2uG?X8^3L7*dvDJCRbiP>!f@^Y_l>W$^>ech8!&9>YH`S( zv-6{PUCSgbg>vtusu5ydQP%D31+!HnN^*4M98!xLVuBu<s~K<KE&Q%m|Cs)Q7rWkB zmgmgXaC#=x<K)R&@JD&pg)6183`@@C_GRcY`#DVYxb@Mp{dmdZ*$cM$u633;ZIN|r snVQ2+1)lnzg+7w<R{ULoM>w~e`%cw1EbcLX4fGO&r>mdKI;Vst05Xt)hyVZp
diff --git a/src/public/javascripts/application.js b/src/public/javascripts/application.js index cd4a0dc..4159e7d 100644 --- a/src/public/javascripts/application.js +++ b/src/public/javascripts/application.js @@ -125,6 +125,12 @@ $.extend(Conductor, { }); },
+ toggleCollapsible: function() { + $('.collapse').click(function() { + $(this).parents('section').find('.collapsible').slideToggle(80); + }); + }, + prefixedPath: function(path) { var prefix = this.PATH_PREFIX; if(path.length === 0) return prefix; @@ -277,6 +283,7 @@ $(document).ready(function () { Conductor.bind_pretty_toggle(); Conductor.multiDestroyValidation(); Conductor.closeNotification(); + Conductor.toggleCollapsible(); Conductor.enhanceUserMenu(); Conductor.tabAjaxRequest(); Conductor.initializeBackbone();
--- src/app/stylesheets/layout.scss | 4 ++++ src/app/views/providers/_edit.haml | 7 +++++-- src/app/views/providers/_form.haml | 3 --- src/app/views/providers/new.haml | 6 ++++-- 4 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/src/app/stylesheets/layout.scss b/src/app/stylesheets/layout.scss index c37a1d0..c5c60c7 100644 --- a/src/app/stylesheets/layout.scss +++ b/src/app/stylesheets/layout.scss @@ -2412,6 +2412,10 @@ body.administer form.generic{ font-weight: light; }
+ fieldset.options{ + text-align: right; + } + label{ display: block; float: left; diff --git a/src/app/views/providers/_edit.haml b/src/app/views/providers/_edit.haml index bc4c9b1..2829cc3 100644 --- a/src/app/views/providers/_edit.haml +++ b/src/app/views/providers/_edit.haml @@ -1,5 +1,8 @@ .content = form_for @provider, :url => provider_path(@provider), :html => { :method => :put, :class => 'generic' } do |f| = render :partial => 'form', :locals => { :form => f } - = link_to "Test Connection", edit_provider_path(@provider, :test_provider => true), :class => 'button' - = button_to 'Delete Provider', provider_path(@provider), :method => :delete, :confirm => t('providers.confirm_delete'), :class => "button danger", :id => "delete" + %fieldset.options + .button-group + = f.submit "Save Changes", :class => "submit button pill", :id => 'save' + = link_to "Test Connection", edit_provider_path(@provider, :test_provider => true), :class => 'button pill' + = link_to 'Delete Provider', provider_path(@provider), :method => :delete, :confirm => t('providers.confirm_delete'), :class => "button pill danger", :id => "delete" diff --git a/src/app/views/providers/_form.haml b/src/app/views/providers/_form.haml index a90a232..75d504e 100644 --- a/src/app/views/providers/_form.haml +++ b/src/app/views/providers/_form.haml @@ -13,6 +13,3 @@ %p = form.label :url, 'X-Deltacloud-Provider:' = form.text_field :deltacloud_provider, :title => 'deltacloud_provider', :value => @provider.deltacloud_provider, :class => 'long' - -%fieldset.options - = form.submit "Save", :class => "submit button", :id => 'save' diff --git a/src/app/views/providers/new.haml b/src/app/views/providers/new.haml index 7588548..48baf5c 100644 --- a/src/app/views/providers/new.haml +++ b/src/app/views/providers/new.haml @@ -5,7 +5,7 @@ %span.label.light Choose a provider: %ul#provider_select %li - = link_to "Create New Provider" + = link_to "Create New Provider", "javascript:void(0)" %ul %li= link_to "+ Create New Provider", new_provider_path, :id => "create_new_provider" - @providers.each do |provider| @@ -13,7 +13,9 @@
%section.admin-content-section.users %header - %h2 Settings + %h2.settings Settings .content = form_for @provider, :url => providers_path, :html => {:class => 'generic'} do |f| = render :partial => "form", :locals => { :form => f, :cancel_path => providers_path } + %fieldset.options + = f.submit "Save Provider", :class => "submit button pill", :id => 'save'
--- src/app/views/deployments/edit.haml | 3 ++- src/app/views/deployments/index.haml | 3 ++- src/app/views/deployments/launch_new.haml | 3 ++- src/app/views/deployments/new.haml | 1 + src/app/views/deployments/show.haml | 1 + src/app/views/instances/edit.haml | 1 + src/app/views/instances/index.haml | 1 + src/app/views/instances/new.haml | 1 + src/app/views/instances/show.haml | 1 + src/app/views/layouts/application.haml | 1 - src/app/views/pools/edit.haml | 1 + src/app/views/pools/index.haml | 1 + src/app/views/pools/new.haml | 1 + src/app/views/pools/show.haml | 1 + 14 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/src/app/views/deployments/edit.haml b/src/app/views/deployments/edit.haml index ea8dd88..a354f4c 100644 --- a/src/app/views/deployments/edit.haml +++ b/src/app/views/deployments/edit.haml @@ -1 +1,2 @@ -= render :partial => 'edit' \ No newline at end of file += render :partial => 'layouts/nav_history' += render :partial => 'edit' diff --git a/src/app/views/deployments/index.haml b/src/app/views/deployments/index.haml index 3f8fc5f..ce74167 100644 --- a/src/app/views/deployments/index.haml +++ b/src/app/views/deployments/index.haml @@ -1 +1,2 @@ -= render :partial => 'list' \ No newline at end of file += render :partial => 'layouts/nav_history' += render :partial => 'list' diff --git a/src/app/views/deployments/launch_new.haml b/src/app/views/deployments/launch_new.haml index 916a842..da94860 100644 --- a/src/app/views/deployments/launch_new.haml +++ b/src/app/views/deployments/launch_new.haml @@ -1 +1,2 @@ -= render :partial => 'launch_new' \ No newline at end of file += render :partial => 'layouts/nav_history' += render :partial => 'launch_new' diff --git a/src/app/views/deployments/new.haml b/src/app/views/deployments/new.haml index 7152b06..c160a4a 100644 --- a/src/app/views/deployments/new.haml +++ b/src/app/views/deployments/new.haml @@ -1,3 +1,4 @@ += render :partial => 'layouts/nav_history' = render :partial => 'new' :javascript $('#deployable-xml-link').click(function () { diff --git a/src/app/views/deployments/show.haml b/src/app/views/deployments/show.haml index 9ef1d68..18b1c23 100644 --- a/src/app/views/deployments/show.haml +++ b/src/app/views/deployments/show.haml @@ -1,3 +1,4 @@ += render :partial => 'layouts/nav_history' = render :partial => 'header_show' = render :partial => 'alerts_show' %section.content-section diff --git a/src/app/views/instances/edit.haml b/src/app/views/instances/edit.haml index 8e2be85..a354f4c 100644 --- a/src/app/views/instances/edit.haml +++ b/src/app/views/instances/edit.haml @@ -1 +1,2 @@ += render :partial => 'layouts/nav_history' = render :partial => 'edit' diff --git a/src/app/views/instances/index.haml b/src/app/views/instances/index.haml index 9dabd7e..ce74167 100644 --- a/src/app/views/instances/index.haml +++ b/src/app/views/instances/index.haml @@ -1 +1,2 @@ += render :partial => 'layouts/nav_history' = render :partial => 'list' diff --git a/src/app/views/instances/new.haml b/src/app/views/instances/new.haml index b40557d..5d4bc23 100644 --- a/src/app/views/instances/new.haml +++ b/src/app/views/instances/new.haml @@ -1 +1,2 @@ += render :partial => 'layouts/nav_history' = render :partial => 'new' diff --git a/src/app/views/instances/show.haml b/src/app/views/instances/show.haml index 30fb791..dd07696 100644 --- a/src/app/views/instances/show.haml +++ b/src/app/views/instances/show.haml @@ -1,2 +1,3 @@ += render :partial => 'layouts/nav_history' = render :partial => 'properties' = render :partial => 'history' diff --git a/src/app/views/layouts/application.haml b/src/app/views/layouts/application.haml index 7210353..aadc513 100644 --- a/src/app/views/layouts/application.haml +++ b/src/app/views/layouts/application.haml @@ -50,7 +50,6 @@
#content -# works with any 960 container (.container_16 or .container_24) - = render :partial => 'layouts/nav_history' = yield .clear .clearfooter diff --git a/src/app/views/pools/edit.haml b/src/app/views/pools/edit.haml index 8e2be85..a354f4c 100644 --- a/src/app/views/pools/edit.haml +++ b/src/app/views/pools/edit.haml @@ -1 +1,2 @@ += render :partial => 'layouts/nav_history' = render :partial => 'edit' diff --git a/src/app/views/pools/index.haml b/src/app/views/pools/index.haml index e54f4da..52f58a8 100644 --- a/src/app/views/pools/index.haml +++ b/src/app/views/pools/index.haml @@ -1,3 +1,4 @@ += render :partial => 'layouts/nav_history' = render :partial => 'header_index' = render :partial => 'alerts_index' %section.content-section.toggle-view.pools diff --git a/src/app/views/pools/new.haml b/src/app/views/pools/new.haml index b40557d..5d4bc23 100644 --- a/src/app/views/pools/new.haml +++ b/src/app/views/pools/new.haml @@ -1 +1,2 @@ += render :partial => 'layouts/nav_history' = render :partial => 'new' diff --git a/src/app/views/pools/show.haml b/src/app/views/pools/show.haml index 07449fe..6f3fb8b 100644 --- a/src/app/views/pools/show.haml +++ b/src/app/views/pools/show.haml @@ -1,3 +1,4 @@ += render :partial => 'layouts/nav_history' = render :partial => 'header_show' = render :partial => 'scoreboard_show'
--- .../controllers/provider_accounts_controller.rb | 33 ++++++++++--------- src/app/controllers/realms_controller.rb | 2 + src/app/views/provider_accounts/_form.haml | 2 - src/app/views/provider_accounts/_list.haml | 2 +- src/app/views/provider_accounts/_properties.haml | 4 +- .../views/provider_accounts/_provider_form.haml | 2 +- .../provider_accounts/_provider_selection.haml | 13 +++---- src/app/views/provider_accounts/edit.haml | 32 ++++++++++++------- src/app/views/provider_accounts/new.haml | 6 ++- src/app/views/provider_accounts/show.haml | 26 +++++++++------ src/app/views/realms/_list.haml | 2 +- src/app/views/realms/new.haml | 2 +- src/config/routes.rb | 14 +++----- src/features/provider_account.feature | 14 +++++--- 14 files changed, 84 insertions(+), 70 deletions(-)
diff --git a/src/app/controllers/provider_accounts_controller.rb b/src/app/controllers/provider_accounts_controller.rb index 3e1feb7..1878001 100644 --- a/src/app/controllers/provider_accounts_controller.rb +++ b/src/app/controllers/provider_accounts_controller.rb @@ -33,18 +33,17 @@ class ProviderAccountsController < ApplicationController
def show @tab_captions = ['Properties', 'Credentials', 'History', 'Permissions'] - @account = ProviderAccount.find(params[:id]) - @account_id = @account.credentials_hash['account_id'] - require_privilege(Privilege::VIEW, @account) + @provider_account = ProviderAccount.find(params[:id]) + @provider = Provider.find(params[:provider_id]) + @account_id = @provider_account.credentials_hash['account_id'] + require_privilege(Privilege::VIEW, @provider_account) @details_tab = params[:details_tab].blank? ? 'properties' : params[:details_tab]
if params.delete :test_account - test_account(@account) + test_account(@provider_account) render :action => 'show' and return end
- save_breadcrumb(provider_account_path(@account), @account.name) - respond_to do |format| format.html { render :action => 'show'} format.js do @@ -63,7 +62,7 @@ class ProviderAccountsController < ApplicationController if @providers.empty? flash[:error] = "You don't have any provider yet. Please create one!" else - @selected_provider = Provider.find(params[:provider_id]) + @provider = Provider.find(params[:provider_id]) end end
@@ -72,12 +71,11 @@ class ProviderAccountsController < ApplicationController provider = params[:provider_account].delete(:provider) params[:provider_account][:provider_id] = Provider.find_by_name(provider).id end - @selected_provider = @provider = Provider.find(params[:provider_account][:provider_id]) + @provider = Provider.find(params[:provider_account][:provider_id]) require_privilege(Privilege::CREATE, ProviderAccount, @provider)
@providers = Provider.all @provider_account = ProviderAccount.new(params[:provider_account]) - @provider_account.provider = @provider @provider_account.quota = @quota = Quota.new
limit = params[:quota][:maximum_running_instances] if params[:quota] @@ -89,7 +87,7 @@ class ProviderAccountsController < ApplicationController @provider_account.assign_owner_roles(current_user) @provider_account.populate_realms flash[:notice] = t('provider_accounts.index.account_added', :list => @provider_account.name, :count => 1) - redirect_to edit_provider_path(@provider_account.provider, :view => 'filter', :details_tab => 'connectivity') + redirect_to edit_provider_path(@provider, :view => 'filter', :details_tab => 'connectivity') else flash[:error] = "Cannot add the provider account." render :action => 'new' and return @@ -103,6 +101,7 @@ class ProviderAccountsController < ApplicationController
def edit @provider_account = ProviderAccount.find(params[:id]) + @provider = Provider.find(params[:provider_id]) @selected_provider = @provider_account.provider @quota = @provider_account.quota @providers = Provider.find(:all) @@ -121,7 +120,7 @@ class ProviderAccountsController < ApplicationController @provider_account.quota.set_maximum_running_instances(limit) if @provider_account.update_attributes(params[:provider_account]) flash[:notice] = "Provider Account updated!" - redirect_to provider_account_path(@provider_account) + redirect_to edit_provider_path(@provider, :view => 'filter', :details_tab => 'connectivity') else flash[:error] = "Provider Account wasn't updated!" render :action => :edit @@ -130,18 +129,20 @@ class ProviderAccountsController < ApplicationController
def destroy require_privilege(Privilege::MODIFY, @provider_account) + @provider = Provider.find(params[:provider_id]) if ProviderAccount.destroy(params[:id]) flash[:notice] = "Provider account was deleted!" else flash[:error] = "Provider account was not deleted!" end - redirect_to provider_accounts_path + redirect_to edit_provider_path(@provider, :view => 'filter', :details_tab => 'connectivity') end
def multi_destroy + @provider = Provider.find(params[:provider_id]) if params[:accounts_selected].blank? flash[:warning] = "You must select some accounts first." - redirect_to provider_accounts_url and return + redirect_to edit_provider_path(@provider, :view => 'filter', :details_tab => 'connectivity') and return end
succeeded = [] @@ -161,7 +162,7 @@ class ProviderAccountsController < ApplicationController unless failed.empty? flash[:error] = t 'provider_accounts.index.account_not_deleted', :count => failed.length, :list => failed.join(', ') end - redirect_to edit_provider_path(@provider_accounts.first.provider, :view => 'filter', :details_tab => 'connectivity') + redirect_to edit_provider_path(@provider, :view => 'filter', :details_tab => 'connectivity') end
def set_selected_provider @@ -170,12 +171,12 @@ class ProviderAccountsController < ApplicationController respond_to do |format| format.html { @providers = Provider.find(:all) - @selected_provider = Provider.find(params[:provider_account][:provider_id]) + @provider = Provider.find(params[:provider_account][:provider_id]) render :action => 'new', :layout => true } format.js { @providers = Provider.find(:all) - @selected_provider = Provider.find(params[:provider_account][:provider_id]) + @provider = Provider.find(params[:provider_account][:provider_id]) render :partial => 'provider_selection' }
diff --git a/src/app/controllers/realms_controller.rb b/src/app/controllers/realms_controller.rb index 6054401..e3f5de8 100644 --- a/src/app/controllers/realms_controller.rb +++ b/src/app/controllers/realms_controller.rb @@ -27,6 +27,7 @@ class RealmsController < ApplicationController
def new require_privilege(Privilege::CREATE, Realm) + @provider = Provider.find(params[:provider_id]) @realm = FrontendRealm.new load_backend_realms end @@ -56,6 +57,7 @@ class RealmsController < ApplicationController
def create require_privilege(Privilege::CREATE, Realm) + @provider = Provider.find(params[:provider_id]) @realm = FrontendRealm.new(params[:frontend_realm]) if @realm.save flash[:notice] = "Realm was added." diff --git a/src/app/views/provider_accounts/_form.haml b/src/app/views/provider_accounts/_form.haml index d078bed..a03ef96 100644 --- a/src/app/views/provider_accounts/_form.haml +++ b/src/app/views/provider_accounts/_form.haml @@ -1,5 +1,3 @@ - if @provider_account.errors.any? = render 'layouts/error_messages', :object => @provider_account = render :partial => 'provider_selection' -%fieldset.options - = form.submit 'Save', :class => "button" diff --git a/src/app/views/provider_accounts/_list.haml b/src/app/views/provider_accounts/_list.haml index e88d5b1..4223baa 100644 --- a/src/app/views/provider_accounts/_list.haml +++ b/src/app/views/provider_accounts/_list.haml @@ -1,6 +1,6 @@ .content - content_for :form_header do - %li= restful_submit_tag "Delete Selected", "destroy", multi_destroy_provider_accounts_path, 'DELETE', :id => 'delete_button', :class => 'button pill danger' + %li= restful_submit_tag "Delete Selected", "destroy", multi_destroy_provider_provider_accounts_path(@provider), 'DELETE', :id => 'delete_button', :class => 'button pill danger' %li= link_to "New Account", new_provider_provider_account_path(@provider), :id => 'new_provider_account', :class => 'button pill'
= filter_table(provider_accounts_header, @provider_accounts) do |account| diff --git a/src/app/views/provider_accounts/_properties.haml b/src/app/views/provider_accounts/_properties.haml index 559bdf1..60aef58 100644 --- a/src/app/views/provider_accounts/_properties.haml +++ b/src/app/views/provider_accounts/_properties.haml @@ -3,14 +3,14 @@ %tr %th.show Properties for - = @account.name + = @provider_account.name %th.show %tbody %tr %td %label Running instances quota: %td - = @account.quota.maximum_running_instances or 'unlimited' + = @provider_account.quota.maximum_running_instances or 'unlimited' - if @account_id %tr %td diff --git a/src/app/views/provider_accounts/_provider_form.haml b/src/app/views/provider_accounts/_provider_form.haml index 35e2520..93b6222 100644 --- a/src/app/views/provider_accounts/_provider_form.haml +++ b/src/app/views/provider_accounts/_provider_form.haml @@ -3,7 +3,7 @@ = label :provider_account, "Account Name" = text_field :provider_account, :label, :class => 'em long' - CredentialDefinition::CREDENTIAL_DEFINITIONS_ORDER.each do |cred_order| - - @provider_account.all_credentials(@selected_provider).each do |cred| + - @provider_account.all_credentials(@provider).each do |cred| - if cred_order == cred.credential_definition.name %fieldset %p diff --git a/src/app/views/provider_accounts/_provider_selection.haml b/src/app/views/provider_accounts/_provider_selection.haml index 068c1c3..34d4f10 100644 --- a/src/app/views/provider_accounts/_provider_selection.haml +++ b/src/app/views/provider_accounts/_provider_selection.haml @@ -1,14 +1,14 @@ %fieldset#provider_type %p = label_tag "Provider" - = select(:provider_account, :provider_id, options_for_select(@providers.map{ |p| [p.name, p.id] }, :selected => @selected_provider.id)) - = restful_submit_tag "Choose", 'set_selected_provider',set_selected_provider_provider_accounts_path, 'GET', :class => 'button' + = select(:provider_account, :provider_id, options_for_select(@providers.map{ |p| [p.name, p.id] }, :selected => @provider.id)) + = restful_submit_tag "Choose", 'set_selected_provider',set_selected_provider_provider_provider_accounts_path(@provider), 'GET', :class => 'button pill' %p = label_tag "Cloud type: " - = @selected_provider.provider_type.name + = @provider.provider_type.name .clear - - unless @selected_provider.provider_type.deltacloud_driver.nil? - = render :partial => "provider_form", :locals => { :provider_type => @selected_provider.provider_type} + - unless @provider.provider_type.deltacloud_driver.nil? + = render :partial => "provider_form", :locals => { :provider_type => @provider.provider_type} - else = flash.now[:warning] = "You don't have any provider yet"
@@ -18,11 +18,10 @@ $("#provider_account_provider_id").change(function() { selected_provider = $(this).find("option:selected").attr('value'); - $.get("#{set_selected_provider_provider_accounts_url}", {'provider_account[provider_id]':selected_provider}, + $.get("#{set_selected_provider_provider_provider_accounts_url(@provider)}", {'provider_account[provider_id]':selected_provider}, function(result) { $("#provider_type").html(result); } ); - }); }); diff --git a/src/app/views/provider_accounts/edit.haml b/src/app/views/provider_accounts/edit.haml index 2abd583..71d15ee 100644 --- a/src/app/views/provider_accounts/edit.haml +++ b/src/app/views/provider_accounts/edit.haml @@ -1,19 +1,27 @@ = render :partial => 'layouts/admin_nav' -%header.page-header - %h1{:class => controller.controller_name}= @provider_account.name - #obj_actions.button-container - = link_to 'New Provider Account', new_provider_account_url, :class => 'button primary', :id => 'new_user_button' - %div.button-group - = link_to 'Cancel Editing', provider_account_path(@provider_account), :class => 'button pill danger', :id => 'new_user_button' - .corner +%header.admin-page-header + %h1 + Account: + = @provider_account.name + #obj_actions + Return to: + = link_to "Cloud Providers", edit_provider_path(@provider, :view => 'filter', :details_tab => 'connectivity'), :class => 'rounded-link'
-%section.content-section.user +%section.admin-content-section %header - %h2 - Edit Provider Account: - = @provider_account.name + %h2.settings Settings + .section-controls + #obj_actions.button-container + .button-group + %span.view-toggle + = link_to "", provider_provider_account_path(@provider, @provider_account), :class => "view-toggle pretty", :title => "Provider Account Detail" + = link_to "", edit_provider_provider_account_path(@provider, @provider_account), :class => "view-toggle filter active", :title => "Edit Provider Account"
.content - unless @providers.empty? - = form_for(@provider_account, :url => provider_account_path(@provider_account), :html => {:multipart => true,:method => :put, :class => 'generic'}) do |f| + = form_for([@provider, @provider_account], :html => {:multipart => true,:method => :put, :class => 'generic'}) do |f| = render :partial => "form", :locals => { :form => f } + %fieldset.options + .button-group + = f.submit 'Save Changes', :class => "button pill", :id => 'save' + = link_to "Delete Account", provider_provider_account_path(@provider, @provider_account), :method => 'delete', :confirm => "Are you sure you want to delete?", :class => 'button pill danger' diff --git a/src/app/views/provider_accounts/new.haml b/src/app/views/provider_accounts/new.haml index 77b766b..0ce42f8 100644 --- a/src/app/views/provider_accounts/new.haml +++ b/src/app/views/provider_accounts/new.haml @@ -3,10 +3,12 @@ %h1 New Provider Account #obj_actions Return to: - = link_to "Cloud Providers", edit_provider_path(@selected_provider, :view => 'filter', :details_tab => 'connectivity'), :class => 'rounded-link' + = link_to "Cloud Providers", edit_provider_path(@provider, :view => 'filter', :details_tab => 'connectivity'), :class => 'rounded-link'
%section.admin-content-section.provider_accounts .content - unless @providers.empty? - = form_for([@provider, @provider_account], :url => provider_accounts_path, :html => {:multipart => true, :class => 'generic'}) do |f| + = form_for([@provider, @provider_account], :html => {:multipart => true, :class => 'generic'}) do |f| = render :partial => "form", :locals => { :form => f } + %fieldset.options + = f.submit 'Save', :class => "button pill", :id => 'save' diff --git a/src/app/views/provider_accounts/show.haml b/src/app/views/provider_accounts/show.haml index 0751c45..0079b43 100644 --- a/src/app/views/provider_accounts/show.haml +++ b/src/app/views/provider_accounts/show.haml @@ -1,17 +1,21 @@ = render :partial => 'layouts/admin_nav' -%header.page-header - %h1{:class => controller.controller_name}= @account.name - #obj_actions.button-container - = link_to 'New Provider Account', new_provider_account_url, :class => 'button primary', :id => 'new_user_button' - .button-group - = link_to 'Edit', edit_provider_account_path(@account), :class => 'button pill' - = button_to "Delete", provider_account_path(@account), :method => 'delete', :confirm => "Are you sure you want to delete?", :class => 'button pill danger' - .corner +%header.admin-page-header + %h1 + Account: + = @provider_account.name + #obj_actions + Return to: + = link_to "Cloud Providers", edit_provider_path(@provider, :view => 'filter', :details_tab => 'connectivity'), :class => 'rounded-link'
-%section.content-section.user +%section.admin-content-section %header %h2 Properties + .section-controls + #obj_actions.button-container + .button-group + %span.view-toggle + = link_to "", provider_provider_account_path(@provider, @provider_account), :class => "view-toggle pretty active", :title => "Provider Account Detail" + = link_to "", edit_provider_provider_account_path(@provider, @provider_account), :class => "view-toggle filter", :title => "Edit Provider Account"
.content - %div#view - = render :partial => 'properties' + = render :partial => 'properties' diff --git a/src/app/views/realms/_list.haml b/src/app/views/realms/_list.haml index fee0e25..439db54 100644 --- a/src/app/views/realms/_list.haml +++ b/src/app/views/realms/_list.haml @@ -8,4 +8,4 @@ %td - selected = params[:select] == 'all' = check_box_tag "realm_selected[]", realm.id, selected, :id => "realm_checkbox_#{realm.id}" - %td= link_to realm.name, realm_path(realm) + %td= link_to realm.name, provider_realm_path(@provider, realm) diff --git a/src/app/views/realms/new.haml b/src/app/views/realms/new.haml index 0a7a394..0de4a0c 100644 --- a/src/app/views/realms/new.haml +++ b/src/app/views/realms/new.haml @@ -6,5 +6,5 @@ %h2 Create a new Realm
.content - = form_for @realm, :url => realms_path, :html => {:class => 'generic'} do |f| + = form_for [@provider, @realm], :url => realms_path, :html => {:class => 'generic'} do |f| = render :partial => "form", :locals => { :form => f, :cancel_path => realms_path } diff --git a/src/config/routes.rb b/src/config/routes.rb index b522b96..cb9c304 100644 --- a/src/config/routes.rb +++ b/src/config/routes.rb @@ -129,7 +129,12 @@ Conductor::Application.routes.draw do resources :providers do delete 'multi_destroy', :on => :collection
- resources :provider_accounts + resources :provider_accounts do + collection do + delete 'multi_destroy' + get 'set_selected_provider' + end + end resources :realms resources :hardware_profiles end @@ -140,13 +145,6 @@ Conductor::Application.routes.draw do delete 'multi_destroy', :on => :collection end
- resources :provider_accounts do - collection do - delete 'multi_destroy' - get 'set_selected_provider' - end - end - resources :roles do delete 'multi_destroy', :on => :collection end diff --git a/src/features/provider_account.feature b/src/features/provider_account.feature index 689161a..c04b35b 100644 --- a/src/features/provider_account.feature +++ b/src/features/provider_account.feature @@ -7,11 +7,12 @@ Feature: Manage Provider Accounts Given I am an authorised user And I am logged in
- Scenario: List provider accounts + Scenario: List provider accounts for provider Given I am on the homepage And there is a provider named "testprovider" - When I go to the provider accounts page - Then I should see "New Provider Account" + When I go to the testprovider's edit provider page + And I follow "filter_view" + Then I should see "New Account" And there should be no provider accounts
Scenario: List providers in XML format @@ -30,9 +31,10 @@ Feature: Manage Provider Accounts Scenario: Create a new Provider Account Given there is a provider named "testprovider" And there are no provider accounts - And I am on the provider accounts page - When I follow "New Provider Account" - Then I should be on the new provider account page + When I go to the testprovider's edit provider page + And I follow "filter_view" + And I follow "New Account" + Then I should be on the new provider provider account page And I should see "New Provider Account" When I select "testprovider" from "provider_account_provider_id" And I fill in "provider_account[label]" with "testaccount"
--- src/app/controllers/users_controller.rb | 1 + src/app/stylesheets/custom.scss | 10 --- src/app/stylesheets/layout.scss | 114 ++++++++++++++++++++++++++- src/app/views/users/_form.haml | 32 +++----- src/app/views/users/_list.haml | 11 ++- src/app/views/users/_section_header.haml | 12 ++- src/app/views/users/edit.haml | 33 ++++---- src/app/views/users/index.haml | 21 +++++- src/app/views/users/new.haml | 29 +++++-- src/app/views/users/show.haml | 65 ++++++++++++--- src/public/images/admin_h1_icons.png | Bin 0 -> 3610 bytes src/public/images/admin_h2_icons.png | Bin 5620 -> 6034 bytes src/public/images/button-add-user-group.png | Bin 0 -> 3045 bytes src/public/images/user_card_icon.png | Bin 0 -> 660 bytes 14 files changed, 252 insertions(+), 76 deletions(-) create mode 100644 src/public/images/admin_h1_icons.png create mode 100644 src/public/images/button-add-user-group.png create mode 100644 src/public/images/user_card_icon.png
diff --git a/src/app/controllers/users_controller.rb b/src/app/controllers/users_controller.rb index 92e9545..4c64715 100644 --- a/src/app/controllers/users_controller.rb +++ b/src/app/controllers/users_controller.rb @@ -124,6 +124,7 @@ class UsersController < ApplicationController flash[:warning] = "Cannot delete #{user.login}: you are logged in as this user" else user.destroy + flash[:notice] = "User has been succesfully deleted." end
respond_to do |format| diff --git a/src/app/stylesheets/custom.scss b/src/app/stylesheets/custom.scss index bf4ce31..e5c2bdd 100644 --- a/src/app/stylesheets/custom.scss +++ b/src/app/stylesheets/custom.scss @@ -1,13 +1,3 @@ -header.admin-page-header .rounded-link{ - background: #cccccc; - color: black; - text-decoration: none; - font-weight: bold; - padding: 3px 6px; - -webkit-border-radius: 12px; -moz-border-radius: 12px; border-radius: 12px; - border: none; -} - #user-menu.nojs a { margin-left: 1em; } diff --git a/src/app/stylesheets/layout.scss b/src/app/stylesheets/layout.scss index c5c60c7..55e87c4 100644 --- a/src/app/stylesheets/layout.scss +++ b/src/app/stylesheets/layout.scss @@ -732,6 +732,19 @@ a.view-toggle.filter.active{ background-position: -114px 0px; }
+a.add-group-button{ + background: transparent url('../../images/button-add-user-group.png') no-repeat top left; + display: block; + width: 50px; + height: 25px; +} +a.add-user-button{ + background: transparent url('../../images/button-add-user-group.png') no-repeat bottom left; + display: block; + width: 50px; + height: 25px; +} + /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Application Input Controls -- v.0.0.1 [input] (input.scss) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ @@ -1187,6 +1200,8 @@ header.admin-page-header{ padding: 7px 15px 6px 6px; z-index: 900;
+ min-height: 50px; + h1{ font-family: $font-family-primary; font-weight: 200; @@ -1198,6 +1213,15 @@ header.admin-page-header{ padding: 6px 7px 7px 7px;
&.disabled{color: #c4c4c4;} + + &.users{ + padding-left: 54px; + background: transparent url('../../images/admin_h1_icons.png') 7px 7px no-repeat; + } + &.groups{ + padding-left: 54px; + background: transparent url('../../images/admin_h1_icons.png') 7px -34px no-repeat; + } }
#obj_actions{ @@ -1210,6 +1234,17 @@ header.admin-page-header{ border-color: #fff; }
+ .rounded-link{ + background: #cccccc; + color: black; + text-decoration: none; + font-weight: bold; + padding: 3px 6px; + -webkit-border-radius: 12px; -moz-border-radius: 12px; border-radius: 12px; + border: none; + } + + ul#provider_select{ display: inline-block; list-style-type: none; @@ -1528,7 +1563,8 @@ section.admin-content-section{ &.roles{ background: transparent url('../../images/admin_h2_icons.png') right -28px no-repeat; } &.settings{ background: transparent url('../../images/admin_h2_icons.png') right -56px no-repeat; } &.pools{ background: transparent url('../../images/admin_h2_icons.png') right -84px no-repeat; } - &.members{ background: transparent url('../../images/admin_h2_icons.png') right -112px no-repeat; } + &.users{ background: transparent url('../../images/admin_h2_icons.png') right -112px no-repeat; } + &.groups{ background: transparent url('../../images/admin_h2_icons.png') right -140px no-repeat; }
&.alerts{color: #c00000;} } @@ -1589,6 +1625,80 @@ header.admin-page-header + section.admin-content-section{margin-top: 26px;} section.admin-content-section + section.admin-content-section {margin-top: 26px;}
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +User Card +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ +div#user_card{ + width: 325px; + -webkit-border-radius: 7px; -moz-border-radius: 7px; border-radius: 7px; + + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.70); + -moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.70); + -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.70); + + &.user_stats_card{ + float: left; + margin: -75px 10px 10px 0px; + } + &.user_form_card{ + float: right; + margin-right: 120px; + } + + header.user-card-header{ + background: #0099CC; + -webkit-border-radius: 7px 7px 0px 0px; -moz-border-radius: 7px 7px 0px 0px; border-radius: 7px 7px 0px 0px; + border-bottom: 1px solid #006699; + + h2{ + color: white; + padding: 15px 10px 10px 60px; + background: transparent url('../../images/user_card_icon.png') no-repeat 12px 10px; + } + } + + div.user-card-content{ + padding: 15px 15px 15px 60px; + background: #efefef; + -webkit-border-radius: 0px 0px 7px 7px; -moz-border-radius: 0px 0px 7px 7px; border-radius: 0px 0px 7px 7px; + border-top: 1px solid white; + + dl{ + dd{ + color: black; + font-weight: bold; + font-size: 16px; + } + dd + dt{ + margin-top: 10px; + } + } + + #obj_actions{ + float: right; + } + } +} + +/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +User Stats Definition List (users/show) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ +dl.user_stats{ + display: table; + + div{display: table-row;} + li{ + list-style-type: none; + display: table-cell; + padding: 10px; + } + + dd{ + color: black; + font-weight: bold; + font-size: 16px; + } +} +/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Alert Components -- v.0.0.1 [alert] (alert.scss) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
@@ -2403,7 +2513,7 @@ body.administer form.generic{ }
fieldset + fieldset{ - margin-top: 10px; + margin-top: 20px; }
fieldset legend{ diff --git a/src/app/views/users/_form.haml b/src/app/views/users/_form.haml index 0a41f27..43f49f8 100644 --- a/src/app/views/users/_form.haml +++ b/src/app/views/users/_form.haml @@ -3,10 +3,18 @@
%fieldset %p + = form.label :first_name, t(:first_name) + = form.text_field :first_name + %p + = form.label :last_name, t(:last_name) + = form.text_field :last_name + %p + = form.label :email, t(:email) + = form.text_field :email +%fieldset + %p = form.label :login, t(:choose_name) = form.text_field :login, :class => "em" - -%fieldset.inline %p = form.label :password, form.object.new_record? ? t(:choose_password) : t(:change_password) = form.password_field :password @@ -14,26 +22,13 @@ = form.label :password_confirmation, t(:confirm_password) = form.password_field :password_confirmation
-%fieldset.inline - %p - = form.label :first_name, t(:first_name) - = form.text_field :first_name - %p - = form.label :last_name, t(:last_name) - = form.text_field :last_name - -%fieldset - %p - = form.label :email, t(:email) - = form.text_field :email, :class => 'long' - -if check_privilege(Privilege::MODIFY, User) %fieldset.inline - %legend User Treatment %p + %label User Treatment = select_tag 'user_treatment', options_for_select([t(:choose_treatment)]) %p - = submit_tag t(:apply), :disabled => true + = submit_tag t(:apply), :disabled => true, :class => 'button pill'
= form.fields_for :quota do |quota_form| %fieldset @@ -52,5 +47,4 @@ = label_tag "user_status_inactive", "Inactive"
%fieldset.options - = form.submit "Save", :class => "submit button" - = link_to t(:cancel), cancel_path, :class => 'button danger', :id => 'cancel' + = form.submit "Save User", :class => "submit button pill" diff --git a/src/app/views/users/_list.haml b/src/app/views/users/_list.haml index 0e12645..4a6cece 100644 --- a/src/app/views/users/_list.haml +++ b/src/app/views/users/_list.haml @@ -1,11 +1,12 @@ -%section.content-section.users +%section.admin-content-section.users %header - %h2 Enabled Users - %span.label.badge.dark.count= @users.length - + %h2#users.users Users + .section-controls + #obj_actions + = link_to "", new_user_path, :class => 'add-user-button' .content - content_for :form_header do - %li= restful_submit_tag "Delete", "destroy", multi_destroy_users_path, 'DELETE', :id => 'delete_button', :class => 'button danger' + %li= restful_submit_tag "Delete Selected", "destroy", multi_destroy_users_path, 'DELETE', :id => 'delete_button', :class => 'button pill danger'
= filter_table(@header, @users) do |user| %tr{:class => cycle('nostripe','stripe')} diff --git a/src/app/views/users/_section_header.haml b/src/app/views/users/_section_header.haml index aae9613..d0c96c2 100644 --- a/src/app/views/users/_section_header.haml +++ b/src/app/views/users/_section_header.haml @@ -1,5 +1,7 @@ -%header.page-header - %h1{:class => controller.controller_name} Users - #obj_actions.button-group - = link_to 'New User', new_user_url, :class => 'button primary', :id => 'new_user_button' - .corner \ No newline at end of file +%header.admin-page-header + #obj_actions + Quick Jump: + = link_to 'Groups', "#groups", :class => 'rounded-link' + = link_to 'Users', "#users", :class => 'rounded-link' + = link_to 'Roles', "#roles", :class => 'rounded-link' + .clear diff --git a/src/app/views/users/edit.haml b/src/app/views/users/edit.haml index ee0a0a1..ddbb891 100644 --- a/src/app/views/users/edit.haml +++ b/src/app/views/users/edit.haml @@ -1,20 +1,23 @@ = render :partial => 'layouts/admin_nav' +%header.admin-page-header + - if check_privilege(Privilege::MODIFY, User) + %h1.users Edit User + - else + %h1.users Edit Account + #obj_actions + Return to: + = link_to "Users & Groups", users_path, :class => 'rounded-link'
-%header.page-header - %h1{:class => controller.controller_name}= @user.name - #obj_actions.button-container - = link_to 'New User', new_user_url, :class => 'button primary', :id => 'new_user_button' - .button-group - = link_to 'Cancel Editing', user_path(@user), :class => 'button pill danger', :id => 'new_user_button' - .corner - -%section.content-section.user - %header - - if check_privilege(Privilege::MODIFY, User) - %h2 Editing User: #{@user.first_name} #{@user.last_name} - - else - %h2 Editing Account - +%section.admin-content-section.user .content + #user_card.user_form_card + %header.user-card-header + %h2= @user.name + .user-card-content + %dl + %dt E-mail Address + %dd= @user.email + %dt Username + %dd= @user.login = form_for @user, :url => user_path(@user), :html => { :method => :put, :class => 'generic' } do |f| = render :partial => "form", :locals => { :form => f, :cancel_path => users_path } diff --git a/src/app/views/users/index.haml b/src/app/views/users/index.haml index 3fae6b6..b13ebc9 100644 --- a/src/app/views/users/index.haml +++ b/src/app/views/users/index.haml @@ -1,3 +1,22 @@ = render :partial => 'layouts/admin_nav' -= render :partial => 'section_header' +%header.admin-page-header + #obj_actions + Quick Jump: + = link_to 'Groups', "#groups", :class => 'rounded-link' + = link_to 'Users', "#users", :class => 'rounded-link' + = link_to 'Roles', "#roles", :class => 'rounded-link' + .clear +%section.admin-content-section + %header + %h2#groups.groups Groups + .section-controls + #obj_actions + = link_to "", "#", :class => 'add-group-button' + .content + Unimplemented. = render :partial => 'list' +%section.admin-content-section + %header + %h2#roles.roles Roles + .content + Unimplemented. diff --git a/src/app/views/users/new.haml b/src/app/views/users/new.haml index ca26ce1..d5d76d9 100644 --- a/src/app/views/users/new.haml +++ b/src/app/views/users/new.haml @@ -1,13 +1,28 @@ = render :partial => 'layouts/admin_nav' -= render :partial => 'section_header' - -%section.content-section.users - %header - %h2 New Account +%header.admin-page-header + %h1.users New User + #obj_actions + Return to: + = link_to "Users & Groups", users_path, :class => 'rounded-link'
+%section.admin-content-section.users .content + .align-center + %p + %strong Enter necessary information about your new user and click "Create User" when you are finished. + %br + %br + #user_card.user_form_card + %header.user-card-header + %h2 Kenneth Keiter + .user-card-content + %dl + %dt E-mail Address + %dd kkeiter@redhat.com + %dt Username + %dd kkeiter = form_for @user, :url => users_path, :html => {:class => 'generic'} do |f| -if current_user - = render :partial => "form", :locals => { :form => f, :cancel_path => users_path } + = render :partial => "form", :locals => { :form => f } -else - = render :partial => "form", :locals => { :form => f, :cancel_path => login_path } + = render :partial => "form", :locals => { :form => f } diff --git a/src/app/views/users/show.haml b/src/app/views/users/show.haml index 381d737..46ef1f0 100644 --- a/src/app/views/users/show.haml +++ b/src/app/views/users/show.haml @@ -1,17 +1,58 @@ = render :partial => 'layouts/admin_nav' -%header.page-header - %h1{:class => controller.controller_name}= @user.name - #obj_actions.button-container - = link_to 'New User', new_user_url, :class => 'button primary', :id => 'new_user_button' - .button-group - = link_to 'Edit', edit_user_path(@user), :class => 'button pill' - = button_to 'Delete', user_path(@user), :method => :delete, :confirm => t('users.confirm_delete'), :class => "button pill danger" - .corner +%header.admin-page-header + #obj_actions + Return to: + = link_to "Users & Groups", users_path, :class => 'rounded-link'
-%section.content-section.user +%section.admin-content-section.user + .content + #user_card.user_stats_card + %header.user-card-header + %h2= @user.name + .user-card-content + %dl + %dt E-mail Address + %dd= @user.email + %dt Username + %dd= @user.login + #obj_actions.button-group + = link_to 'Edit', edit_user_path(@user), :class => 'button' + = link_to 'Delete', user_path(@user), :method => :delete, :confirm => t('users.confirm_delete'), :class => "button danger" + .clear + %dl.user_stats + %ul + %div + %li + %dt CREATED + %dd= l(@user.created_at.to_date, :format => :long) if @user.created_at + %li + %dt NUMBER OF LOGINS + %dd= @user.login_count + %li + %dt LAST LOGIN + %dd= l(@user.last_login_at, :format => :long) if @user.last_login_at + %div + %li + %dt LAST UPDATED + %dd= l(@user.updated_at, :format => :long) if @user.updated_at + %li + %dt FAILED LOGINS + %dd= @user.failed_login_count + %li + %dt LAST LOGIN IP + %dd= @user.last_login_ip + .clear + +%section.admin-content-section.user + %header + %h2.activity Activity + + .content + Unimplemented. + +%section.admin-content-section.user %header - %h2 Properties + %h2.roles Roles & Permissions
.content - %div#view - = render :partial => 'properties' + = render :partial => 'properties' diff --git a/src/public/images/admin_h1_icons.png b/src/public/images/admin_h1_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..1f454e502457d20ea31d67b0dcda7666318e8001 GIT binary patch literal 3610 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
literal 0 HcmV?d00001
diff --git a/src/public/images/admin_h2_icons.png b/src/public/images/admin_h2_icons.png index 44f43644c8b84018de6d00a4f07ce2a1e662d0ab..d8214b75d3314cc000441567f1c0e69eceaa326c 100644 GIT binary patch delta 3342 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
delta 2925 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
diff --git a/src/public/images/button-add-user-group.png b/src/public/images/button-add-user-group.png new file mode 100644 index 0000000000000000000000000000000000000000..9dea797f2414e8f222b4a6b27bcf2ba131391e25 GIT binary patch literal 3045 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 aXN92!*owK2yjfv%fEgQ_qiYP@<NgP9OwzId
literal 0 HcmV?d00001
diff --git a/src/public/images/user_card_icon.png b/src/public/images/user_card_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0b76d4c619f14fe067082dc496c6269b41dd7dda GIT binary patch literal 660 zcmV;F0&D$=P)<h;3K|Lk000e1NJLTq001Na001Ni1^@s6;Q*MJ00004b3#c}2nYxW zd<bNS00009a7bBm000XT000XT0n*)m`~Uy|6?8>dbVG7wVRUJ4ZXi@?ZDjyCFETJM zF)^4cH7)=E0338hSaefwW^{L9a%BKPWN%_+AVz6&Wp{6KYjYq&Q#En5<2C>Q0qsdd zK~z|U?Up@?+dve6KTEqJ7B&&65Ezukh09!FS@{5|bBG)xO`2_0<^&7r0yg9#Hi7{e z3kC!NIUbm7nr!e-w323R3rxOJGxPN6jo!@b#c})|_ySDnjxF#V_;>?+9*@VjQ55w$ z6nZn8&E77T%dZx2A4Sn!hcW<6r_(#&g9Y4n?6Qkxb!~9Sf1x_AQ%Gx#QtA|;xOvUu zEX!E0*MDVf+s5-e!Z5_P?aK-YA;_|9@0r#bDJ5lDGMP+_q>Q$#D2gMQT{fEyX_}gZ zHWQLko@CCyFwRgNTI)vhP9oH_qO{hnW1saLD$BC<n(I6mt8iVn^%^6grY~|Fr*&*2 zp}}C#NakW03WA_^j_>;>q0NMve0>w?lL^7g8E{?K_;NKC>i7GVW2Q22E$2|4=d4z% z%JJ=XOP=ROLXG>O=U!*GA*(_u#bU9*aU6mm!1w*e+gK~4lp;-2@;q;SSt_LvLXf5@ zp64+djcO0eN+BsFQc9y1;*jU;N+}r*hxoo<S*1rpQc8pnMy*2=ilU$>3WN}ZVR$6A z_fwZ;Ns=UIli5XUO_C%>JFqA8QstbB!`^&P$h1^n!@)bBEa2D0EvhLj;Bh{m|LEG} ukHfcK9LMi~2jCtUcHr^^`~)6>Prm_Zme9WEAQmP70000<MNUMnLSTYP*&0Rw
literal 0 HcmV?d00001
--- src/app/views/catalog_entries/_list.haml | 2 +- src/app/views/catalog_entries/_section_header.haml | 3 +-- src/app/views/catalog_entries/edit.haml | 5 ++--- src/app/views/catalog_entries/new.haml | 2 +- src/app/views/catalog_entries/show.haml | 7 +++---- src/app/views/catalogs/_list.haml | 2 +- src/app/views/catalogs/_properties.haml | 2 +- src/app/views/catalogs/_section_header.haml | 3 +-- src/app/views/catalogs/edit.haml | 5 ++--- src/app/views/catalogs/new.haml | 2 +- src/app/views/catalogs/show.haml | 10 ++++------ src/config/navigation.rb | 2 +- 12 files changed, 19 insertions(+), 26 deletions(-)
diff --git a/src/app/views/catalog_entries/_list.haml b/src/app/views/catalog_entries/_list.haml index 19f8b91..8495b77 100644 --- a/src/app/views/catalog_entries/_list.haml +++ b/src/app/views/catalog_entries/_list.haml @@ -1,4 +1,4 @@ -%section.content-section.roles +%section.admin-content-section %header %h2 Catalog Entries List %span.label.badge.dark.count= @catalog_entries.length diff --git a/src/app/views/catalog_entries/_section_header.haml b/src/app/views/catalog_entries/_section_header.haml index aab36d9..bf61888 100644 --- a/src/app/views/catalog_entries/_section_header.haml +++ b/src/app/views/catalog_entries/_section_header.haml @@ -1,5 +1,4 @@ -%header.page-header +%header.admin-page-header %h1{:class => controller.controller_name} Catalog Entries #obj_actions.button-group = link_to 'New Catalog Entry', new_catalog_entry_url, :class => 'button primary', :id => 'new_catalog_entry_button' - .corner diff --git a/src/app/views/catalog_entries/edit.haml b/src/app/views/catalog_entries/edit.haml index cc3dcf4..3f044dc 100644 --- a/src/app/views/catalog_entries/edit.haml +++ b/src/app/views/catalog_entries/edit.haml @@ -1,13 +1,12 @@ = render :partial => 'layouts/admin_nav' -%header.page-header +%header.admin-page-header %h1{:class => controller.controller_name}= @catalog_entry.name #obj_actions.button-container = link_to 'New Deployable', new_catalog_entry_url, :class => 'button primary', :id => 'new_deployable_button' .button-group = link_to 'Cancel Editing', catalog_entries_path(@user), :class => 'button pill danger', :id => 'new_deployable_button' - .corner
-%section.content-section.user +%section.admin-content-section.user %header %h2 Editing Catalog Entry
diff --git a/src/app/views/catalog_entries/new.haml b/src/app/views/catalog_entries/new.haml index 034ad1b..75959db 100644 --- a/src/app/views/catalog_entries/new.haml +++ b/src/app/views/catalog_entries/new.haml @@ -1,7 +1,7 @@ = render :partial => 'layouts/admin_nav' = render :partial => 'section_header'
-%section.content-section.provider_accounts +%section.admin-content-section %header %h2 Add New Catalog Entry
diff --git a/src/app/views/catalog_entries/show.haml b/src/app/views/catalog_entries/show.haml index 0926c47..4a5754b 100644 --- a/src/app/views/catalog_entries/show.haml +++ b/src/app/views/catalog_entries/show.haml @@ -1,14 +1,13 @@ = render :partial => 'layouts/admin_nav' -%header.page-header +%header.admin-page-header %h1{:class => controller.controller_name}= @catalog_entry.name #obj_actions.button-container = link_to 'New Catalog Entry', new_catalog_entry_url, :class => 'button primary', :id => 'new_catalog_entry_button' .button-group = link_to 'Edit', edit_catalog_entry_path(@catalog_entry), :class => 'button pill', :id => 'edit_button' - = button_to "Delete", catalog_entry_path(@catalog_entry), :method => 'delete', :confirm => "Are you sure you want to delete?", :class => 'button pill danger', :id => 'delete_button' - .corner + = link_to "Delete", catalog_entry_path(@catalog_entry), :method => 'delete', :confirm => "Are you sure you want to delete?", :class => 'button pill danger', :id => 'delete_button'
-%section.content-section.user +%section.admin-content-section.user %header %h2 Properties
diff --git a/src/app/views/catalogs/_list.haml b/src/app/views/catalogs/_list.haml index 885d9e7..3e1a6cf 100644 --- a/src/app/views/catalogs/_list.haml +++ b/src/app/views/catalogs/_list.haml @@ -1,4 +1,4 @@ -%section.content-section.catalogs +%section.admin-content-section.catalogs %header %h2 Catalogs List %span.label.badge.dark.count= @catalogs.length diff --git a/src/app/views/catalogs/_properties.haml b/src/app/views/catalogs/_properties.haml index 698e793..52d9714 100644 --- a/src/app/views/catalogs/_properties.haml +++ b/src/app/views/catalogs/_properties.haml @@ -11,7 +11,7 @@ %td = @catalog.pool.name
-%section.content-section.catalog_entries +%section.admin-content-section.catalog_entries %header %h2 Catalog Entries %span.label.badge.dark.count= @catalog.catalog_entries.length diff --git a/src/app/views/catalogs/_section_header.haml b/src/app/views/catalogs/_section_header.haml index c7d31cc..a102e6e 100644 --- a/src/app/views/catalogs/_section_header.haml +++ b/src/app/views/catalogs/_section_header.haml @@ -1,5 +1,4 @@ -%header.page-header +%header.admin-page-header %h1{:class => controller.controller_name} Catalogs #obj_actions.button-group = link_to 'New Catalog', new_catalog_url, :class => 'button primary', :id => 'new_catalog_button' - .corner diff --git a/src/app/views/catalogs/edit.haml b/src/app/views/catalogs/edit.haml index e5d60a6..1d85348 100644 --- a/src/app/views/catalogs/edit.haml +++ b/src/app/views/catalogs/edit.haml @@ -1,13 +1,12 @@ = render :partial => 'layouts/admin_nav' -%header.page-header +%header.admin-page-header %h1{:class => controller.controller_name}= @catalog.name #obj_actions.button-container = link_to 'New Catalog', new_catalog_url, :class => 'button primary', :id => 'new_catalog_button' .button-group = link_to 'Cancel Editing', catalogs_path, :class => 'button pill danger', :id => 'cancel_catalog_button' - .corner
-%section.content-section.user +%section.admin-content-section.user %header %h2 Editing Catalog
diff --git a/src/app/views/catalogs/new.haml b/src/app/views/catalogs/new.haml index eee2fca..be583cf 100644 --- a/src/app/views/catalogs/new.haml +++ b/src/app/views/catalogs/new.haml @@ -1,7 +1,7 @@ = render :partial => 'layouts/admin_nav' = render :partial => 'section_header'
-%section.content-section.provider_accounts +%section.admin-content-section.provider_accounts %header %h2 Add New Catalog
diff --git a/src/app/views/catalogs/show.haml b/src/app/views/catalogs/show.haml index 4fee928..a7c3e05 100644 --- a/src/app/views/catalogs/show.haml +++ b/src/app/views/catalogs/show.haml @@ -1,17 +1,15 @@ = render :partial => 'layouts/admin_nav' -%header.page-header +%header.admin-page-header %h1{:class => controller.controller_name}= @catalog.name #obj_actions.button-container = link_to 'New Catalog', new_catalog_url, :class => 'button primary', :id => 'new_catalog_entry_button' .button-group = link_to 'Edit', edit_catalog_path(@catalog), :class => 'button pill', :id => 'edit_button' - = button_to "Delete", catalog_path(@catalog), :method => 'delete', :confirm => "Are you sure you want to delete?", :class => 'button pill danger', :id => 'delete_button' - .corner + = link_to "Delete", catalog_path(@catalog), :method => 'delete', :confirm => "Are you sure you want to delete?", :class => 'button pill danger', :id => 'delete_button'
-%section.content-section.user +%section.admin-content-section.user %header %h2 Properties
.content - %div#view - = render :partial => 'properties' + = render :partial => 'properties' diff --git a/src/config/navigation.rb b/src/config/navigation.rb index aa896cf..e0967a2 100644 --- a/src/config/navigation.rb +++ b/src/config/navigation.rb @@ -24,7 +24,7 @@ SimpleNavigation::Configuration.run do |navigation| first_level.item :administer, t(:administer), users_path, :class => 'administer' do |second_level| second_level.item :users_and_groups, "Users & Groups", users_path, :link => { :class => 'users' }, :highlights_on => //users/ second_level.item :environments, "Environments", settings_path, :link => { :class => 'environments' }, :highlights_on => //settings/ - second_level.item :content, "Content", settings_path, :link => { :class => 'content' }, :highlights_on => //settings/ + second_level.item :content, "Content", catalogs_path, :link => { :class => 'content' }, :highlights_on => //catalogs|/catalog_entries/ second_level.item :cloud_providers, "Cloud Providers", providers_path, :link => { :class => 'providers' }, :highlights_on => //providers/ end end
--- src/app/controllers/providers_controller.rb | 5 +++-- src/app/controllers/realms_controller.rb | 4 ++-- src/app/views/realm_mappings/new.haml | 26 ++++++++++++++------------ src/app/views/realms/_form.haml | 2 +- src/app/views/realms/_list.haml | 4 ++-- src/app/views/realms/_section_header.haml | 3 +-- src/app/views/realms/edit.haml | 5 ++--- src/app/views/realms/new.haml | 15 ++++++++------- src/app/views/realms/show.haml | 15 ++++++--------- src/config/navigation.rb | 2 +- src/config/routes.rb | 2 -- 11 files changed, 40 insertions(+), 43 deletions(-)
diff --git a/src/app/controllers/providers_controller.rb b/src/app/controllers/providers_controller.rb index 8cbfd83..2b7b7fd 100644 --- a/src/app/controllers/providers_controller.rb +++ b/src/app/controllers/providers_controller.rb @@ -62,7 +62,7 @@ class ProvidersController < ApplicationController end #TODO add links to real data for history,properties,permissions @tabs = [{:name => 'Connectivity', :view => @view, :id => 'connectivity', :count => @provider.provider_accounts.count}, - {:name => 'Realms', :view => @view, :id => 'realms', :count => @provider.realms.count}, + {:name => 'Realms', :view => @view, :id => 'realms', :count => @provider.frontend_realms.count}, {:name => 'Hardware', :view => @view, :id => 'hardware_profiles', :count => @provider.hardware_profiles.count}, {:name => 'Roles & Permissions', :view => @view, :id => 'roles', :count => @provider.permissions.count}, ] @@ -70,7 +70,8 @@ class ProvidersController < ApplicationController @details_tab = @tabs.find {|t| t[:id] == details_tab_name} || @tabs.first[:name].downcase
@provider_accounts = @provider.provider_accounts if @details_tab[:id] == 'connectivity' - @realms = @provider.realms if @details_tab[:id] == 'realms' + #@realms = @provider.realms if @details_tab[:id] == 'realms' + @realms = @provider.frontend_realms if @details_tab[:id] == 'realms' @hardware_profiles = @provider.hardware_profiles if @details_tab[:id] == 'hardware_profiles' #@permissions = @provider.permissions if @details_tab[:id] == 'roles'
diff --git a/src/app/controllers/realms_controller.rb b/src/app/controllers/realms_controller.rb index e3f5de8..8e707b6 100644 --- a/src/app/controllers/realms_controller.rb +++ b/src/app/controllers/realms_controller.rb @@ -27,7 +27,7 @@ class RealmsController < ApplicationController
def new require_privilege(Privilege::CREATE, Realm) - @provider = Provider.find(params[:provider_id]) + #@provider = Provider.find(params[:provider_id]) @realm = FrontendRealm.new load_backend_realms end @@ -57,7 +57,7 @@ class RealmsController < ApplicationController
def create require_privilege(Privilege::CREATE, Realm) - @provider = Provider.find(params[:provider_id]) + #@provider = Provider.find(params[:provider_id]) @realm = FrontendRealm.new(params[:frontend_realm]) if @realm.save flash[:notice] = "Realm was added." diff --git a/src/app/views/realm_mappings/new.haml b/src/app/views/realm_mappings/new.haml index b8a6980..9138165 100644 --- a/src/app/views/realm_mappings/new.haml +++ b/src/app/views/realm_mappings/new.haml @@ -1,15 +1,17 @@ = render :partial => 'layouts/admin_nav' -%div#view +%header.admin-page-header +%section.admin-content-section + %header + %h2 Create a new Realm Mapping + .content + - if @realm_target.errors.any? + = render 'layouts/error_messages', :object => @realm_target
-- if @realm_target.errors.any? - = render 'layouts/error_messages', :object => @realm_target + = form_for @realm_target, :url => realm_mappings_path do |f| + = f.hidden_field :frontend_realm_id + = f.hidden_field :realm_or_provider_type
-%h2 Create a new Realm Mapping -= form_for @realm_target, :url => realm_mappings_path do |f| - = f.hidden_field :frontend_realm_id - = f.hidden_field :realm_or_provider_type - - - label_method = @realm_target.realm_or_provider_type == 'Realm' ? 'name_with_provider' : 'name' - = select_tag 'realm_backend_target[realm_or_provider_id]', options_from_collection_for_select(@backend_targets, 'id', label_method) - %fieldset - = f.submit "Save", :class => "submit button" + - label_method = @realm_target.realm_or_provider_type == 'Realm' ? 'name_with_provider' : 'name' + = select_tag 'realm_backend_target[realm_or_provider_id]', options_from_collection_for_select(@backend_targets, 'id', label_method) + %fieldset + = f.submit "Save", :class => "submit button" diff --git a/src/app/views/realms/_form.haml b/src/app/views/realms/_form.haml index 1a79296..dd4d75b 100644 --- a/src/app/views/realms/_form.haml +++ b/src/app/views/realms/_form.haml @@ -4,4 +4,4 @@ = form.label :name, 'Realm Name' = form.text_field :name, :title => 'realm_name', :value => @realm.name, :class => 'em long' %fieldset.options - = form.submit "Save", :class => "submit button" + = form.submit "Save", :class => "submit button pill" diff --git a/src/app/views/realms/_list.haml b/src/app/views/realms/_list.haml index 439db54..20ecdcd 100644 --- a/src/app/views/realms/_list.haml +++ b/src/app/views/realms/_list.haml @@ -1,11 +1,11 @@ .content - content_for :form_header do %li= restful_submit_tag "Delete Selected", "destroy", multi_destroy_realms_path, 'DELETE', :id => 'delete_button', :class => 'button pill danger' - %li= link_to "New Realm", new_provider_realm_path(@provider), :id => 'new_realm', :class => 'button pill' + %li= link_to "New Realm", new_realm_path, :id => 'new_realm', :class => 'button pill'
= filter_table(realms_header, @realms) do |realm| %tr{:class => cycle('nostripe','stripe')} %td - selected = params[:select] == 'all' = check_box_tag "realm_selected[]", realm.id, selected, :id => "realm_checkbox_#{realm.id}" - %td= link_to realm.name, provider_realm_path(@provider, realm) + %td= link_to realm.name, realm_path(realm) diff --git a/src/app/views/realms/_section_header.haml b/src/app/views/realms/_section_header.haml index 7230e81..58c358f 100644 --- a/src/app/views/realms/_section_header.haml +++ b/src/app/views/realms/_section_header.haml @@ -1,5 +1,4 @@ -%header.page-header +%header.admin-page-header %h1{:class => controller.controller_name} Realms #obj_actions.button-group = link_to 'New Realm', new_realm_url, :class => 'button primary', :id => 'new_realm_button' - .corner diff --git a/src/app/views/realms/edit.haml b/src/app/views/realms/edit.haml index 064164c..1faac5c 100644 --- a/src/app/views/realms/edit.haml +++ b/src/app/views/realms/edit.haml @@ -1,14 +1,13 @@ = render :partial => 'layouts/admin_nav'
-%header.page-header +%header.admin-page-header %h1{:class => controller.controller_name}= @realm.name #obj_actions.button-container = link_to 'New Realm', new_realm_url, :class => 'button primary', :id => 'new_user_button' %div.button-group = link_to 'Cancel Editing', realm_path(@realm), :class => 'button pill danger', :id => 'new_user_button' - .corner
-%section.content-section.realm +%section.admin-content-section.realm %header %h2 Properties
diff --git a/src/app/views/realms/new.haml b/src/app/views/realms/new.haml index 0de4a0c..a7dddaa 100644 --- a/src/app/views/realms/new.haml +++ b/src/app/views/realms/new.haml @@ -1,10 +1,11 @@ = render :partial => 'layouts/admin_nav' -= render :partial => 'section_header' - -%section.content-section.users - %header - %h2 Create a new Realm +%header.admin-page-header + %h1 Create New Realm + #obj_actions + Return to: + = link_to "Cloud Providers", edit_provider_path(Provider.all.first, :view => 'filter', :details_tab => 'realms'), :class => 'rounded-link'
+%section.admin-content-section.users .content - = form_for [@provider, @realm], :url => realms_path, :html => {:class => 'generic'} do |f| - = render :partial => "form", :locals => { :form => f, :cancel_path => realms_path } + = form_for @realm, :url => realms_path, :html => {:class => 'generic'} do |f| + = render :partial => "form", :locals => { :form => f } diff --git a/src/app/views/realms/show.haml b/src/app/views/realms/show.haml index c70cb5f..c9b933a 100644 --- a/src/app/views/realms/show.haml +++ b/src/app/views/realms/show.haml @@ -1,25 +1,22 @@ = render :partial => 'layouts/admin_nav' -%header.page-header +%header.admin-page-header %h1{:class => controller.controller_name}= @realm.name #obj_actions.button-container = link_to 'New Realm', new_realm_url, :class => 'button primary', :id => 'new_realm_button' .button-group = link_to 'Edit', edit_realm_path(@realm), :class => 'button pill', :id => 'edit_realm_button' - = button_to 'Delete', realm_path(@realm), :method => :delete, :confirm => "Are you sure you want to delete?", :class => 'button pill danger', :id => 'delete_realm_button' - .corner + = link_to 'Delete', realm_path(@realm), :method => :delete, :confirm => "Are you sure you want to delete?", :class => 'button pill danger', :id => 'delete_realm_button'
-%section.content-section.realm +%section.admin-content-section.realm %header %h2 Properties
.content - %div#view - = render :partial => 'properties' + = render :partial => 'properties'
-%section.content-section.realm_mapping +%section.admin-content-section.realm_mapping %header %h2 Realm Mapping
.content - %div#view - = render :partial => 'mapping' + = render :partial => 'mapping' diff --git a/src/config/navigation.rb b/src/config/navigation.rb index e0967a2..e9d2572 100644 --- a/src/config/navigation.rb +++ b/src/config/navigation.rb @@ -25,7 +25,7 @@ SimpleNavigation::Configuration.run do |navigation| second_level.item :users_and_groups, "Users & Groups", users_path, :link => { :class => 'users' }, :highlights_on => //users/ second_level.item :environments, "Environments", settings_path, :link => { :class => 'environments' }, :highlights_on => //settings/ second_level.item :content, "Content", catalogs_path, :link => { :class => 'content' }, :highlights_on => //catalogs|/catalog_entries/ - second_level.item :cloud_providers, "Cloud Providers", providers_path, :link => { :class => 'providers' }, :highlights_on => //providers/ + second_level.item :cloud_providers, "Cloud Providers", providers_path, :link => { :class => 'providers' }, :highlights_on => //providers|/realms|/realm_mappings/ end end end diff --git a/src/config/routes.rb b/src/config/routes.rb index cb9c304..d6e1a2f 100644 --- a/src/config/routes.rb +++ b/src/config/routes.rb @@ -135,8 +135,6 @@ Conductor::Application.routes.draw do get 'set_selected_provider' end end - resources :realms - resources :hardware_profiles end
resources :provider_types, :only => :index
--- src/app/controllers/providers_controller.rb | 2 +- src/app/views/hardware_profiles/_list.haml | 2 +- .../views/hardware_profiles/_section_header.haml | 3 +-- src/app/views/hardware_profiles/edit.haml | 5 ++--- src/app/views/hardware_profiles/new.haml | 2 +- src/app/views/hardware_profiles/show.haml | 8 ++++---- src/config/navigation.rb | 2 +- 7 files changed, 11 insertions(+), 13 deletions(-)
diff --git a/src/app/controllers/providers_controller.rb b/src/app/controllers/providers_controller.rb index 2b7b7fd..818c423 100644 --- a/src/app/controllers/providers_controller.rb +++ b/src/app/controllers/providers_controller.rb @@ -64,7 +64,7 @@ class ProvidersController < ApplicationController @tabs = [{:name => 'Connectivity', :view => @view, :id => 'connectivity', :count => @provider.provider_accounts.count}, {:name => 'Realms', :view => @view, :id => 'realms', :count => @provider.frontend_realms.count}, {:name => 'Hardware', :view => @view, :id => 'hardware_profiles', :count => @provider.hardware_profiles.count}, - {:name => 'Roles & Permissions', :view => @view, :id => 'roles', :count => @provider.permissions.count}, + #{:name => 'Roles & Permissions', :view => @view, :id => 'roles', :count => @provider.permissions.count}, ] details_tab_name = params[:details_tab].blank? ? 'connectivity' : params[:details_tab] @details_tab = @tabs.find {|t| t[:id] == details_tab_name} || @tabs.first[:name].downcase diff --git a/src/app/views/hardware_profiles/_list.haml b/src/app/views/hardware_profiles/_list.haml index 31647b6..d40d837 100644 --- a/src/app/views/hardware_profiles/_list.haml +++ b/src/app/views/hardware_profiles/_list.haml @@ -1,7 +1,7 @@ .content - content_for :form_header do %li= restful_submit_tag "Delete Selected", "destroy", multi_destroy_hardware_profiles_path, 'DELETE', :id => 'delete_button', :class => 'button pill danger' - %li= link_to "New Hardware", new_provider_hardware_profile_path(@provider), :id => 'new_hardware_profile', :class => 'button pill' + %li= link_to "New Hardware", new_hardware_profile_path, :id => 'new_hardware_profile', :class => 'button pill'
= filter_table(hardware_profiles_header, @hardware_profiles) do |hwp| %tr{:class => cycle('nostripe','stripe')} diff --git a/src/app/views/hardware_profiles/_section_header.haml b/src/app/views/hardware_profiles/_section_header.haml index d5a975e..e6770f3 100644 --- a/src/app/views/hardware_profiles/_section_header.haml +++ b/src/app/views/hardware_profiles/_section_header.haml @@ -1,5 +1,4 @@ -%header.page-header +%header.admin-page-header %h1{:class => controller.controller_name} Hardware Profiles #obj_actions.button-group = link_to 'New Hardware Profile', new_hardware_profile_url, :class => 'button primary', :id => 'new_hardware_profile_button' - .corner diff --git a/src/app/views/hardware_profiles/edit.haml b/src/app/views/hardware_profiles/edit.haml index 1d638a4..aa4da76 100644 --- a/src/app/views/hardware_profiles/edit.haml +++ b/src/app/views/hardware_profiles/edit.haml @@ -1,14 +1,13 @@ = render :partial => 'layouts/admin_nav'
-%header.page-header +%header.admin-page-header %h1{:class => controller.controller_name}= @hardware_profile.name.titlecase #obj_actions.button-container = link_to 'New Hardware Profile', hardware_profile_url, :class => 'button primary', :id => 'new_user_button' %div.button-group = link_to 'Cancel Editing', hardware_profile_path(@hardware_profile), :class => 'button pill danger', :id => 'new_user_button' - .corner
-%section.content-section.hardware_profile +%section.admin-content-section.hardware_profile %header %h2 Edit Hardware Profile diff --git a/src/app/views/hardware_profiles/new.haml b/src/app/views/hardware_profiles/new.haml index 8ccfd63..5d5f3f4 100644 --- a/src/app/views/hardware_profiles/new.haml +++ b/src/app/views/hardware_profiles/new.haml @@ -1,7 +1,7 @@ = render :partial => 'layouts/admin_nav' = render :partial => 'section_header'
-%section.content-section.users +%section.admin-content-section %header %h2 New Hardware Profile
diff --git a/src/app/views/hardware_profiles/show.haml b/src/app/views/hardware_profiles/show.haml index 237df40..598773b 100644 --- a/src/app/views/hardware_profiles/show.haml +++ b/src/app/views/hardware_profiles/show.haml @@ -1,17 +1,17 @@ = render :partial => 'layouts/admin_nav' -%header.page-header +%header.admin-page-header %h1{:class => controller.controller_name}= @hardware_profile.name + " (" + (@hardware_profile.provider_id.nil? ? "Front End" : "Provider" ) + ")" #obj_actions.button-container = link_to 'New Hardware Profile', new_hardware_profile_url, :class => 'button primary', :id => 'new_role_button' .button-group = link_to 'Edit', edit_hardware_profile_path(@hardware_profile), :class => 'button pill', :id => 'edit_button' - = button_to 'Delete', hardware_profile_path(@hardware_profile), :method => :delete, :confirm => "Are you sure you want to delete?", :class => 'button pill danger' -%section.content-section.hardware_profile + = link_to 'Delete', hardware_profile_path(@hardware_profile), :method => :delete, :confirm => "Are you sure you want to delete?", :class => 'button pill danger' +%section.admin-content-section.hardware_profile %header %h2 Properties .content = render :partial => 'properties' -%section.content-section.hardware_profile +%section.admin-content-section.hardware_profile %header %h2 Matching Provider Hardware Profiles .content diff --git a/src/config/navigation.rb b/src/config/navigation.rb index e9d2572..109bcdc 100644 --- a/src/config/navigation.rb +++ b/src/config/navigation.rb @@ -25,7 +25,7 @@ SimpleNavigation::Configuration.run do |navigation| second_level.item :users_and_groups, "Users & Groups", users_path, :link => { :class => 'users' }, :highlights_on => //users/ second_level.item :environments, "Environments", settings_path, :link => { :class => 'environments' }, :highlights_on => //settings/ second_level.item :content, "Content", catalogs_path, :link => { :class => 'content' }, :highlights_on => //catalogs|/catalog_entries/ - second_level.item :cloud_providers, "Cloud Providers", providers_path, :link => { :class => 'providers' }, :highlights_on => //providers|/realms|/realm_mappings/ + second_level.item :cloud_providers, "Cloud Providers", providers_path, :link => { :class => 'providers' }, :highlights_on => //providers|/realms|/realm_mappingsi|/hardware_profiles/ end end end
--- src/app/views/roles/_list.haml | 3 +-- src/app/views/roles/_section_header.haml | 3 +-- src/app/views/roles/edit.haml | 5 ++--- src/app/views/roles/new.haml | 2 +- src/app/views/roles/show.haml | 11 ++++------- src/config/navigation.rb | 2 +- 6 files changed, 10 insertions(+), 16 deletions(-)
diff --git a/src/app/views/roles/_list.haml b/src/app/views/roles/_list.haml index e92be47..ed376df 100644 --- a/src/app/views/roles/_list.haml +++ b/src/app/views/roles/_list.haml @@ -1,7 +1,6 @@ -%section.content-section.roles +%section.admin-content-section.roles %header %h2 Roles List - %span.label.badge.dark.count= @roles.length
.content - content_for :form_header do diff --git a/src/app/views/roles/_section_header.haml b/src/app/views/roles/_section_header.haml index 8441d22..e39f23c 100644 --- a/src/app/views/roles/_section_header.haml +++ b/src/app/views/roles/_section_header.haml @@ -1,5 +1,4 @@ -%header.page-header +%header.admin-page-header %h1{:class => controller.controller_name} Roles #obj_actions.button-group = link_to 'New Role', new_role_url, :class => 'button primary', :id => 'new_role_button' - .corner diff --git a/src/app/views/roles/edit.haml b/src/app/views/roles/edit.haml index d685769..76ede42 100644 --- a/src/app/views/roles/edit.haml +++ b/src/app/views/roles/edit.haml @@ -1,13 +1,12 @@ = render :partial => 'layouts/admin_nav' -%header.page-header +%header.admin-page-header %h1{:class => controller.controller_name}= @role.name.titlecase #obj_actions.button-container = link_to 'New Role', new_role_url, :class => 'button primary', :id => 'new_role_button' %div.button-group = link_to 'Cancel Editing', role_path(@role), :class => 'button pill danger', :id => 'new_role_button' - .corner
-%section.content-section.role +%section.admin-content-section.role %header %h2 Properties
diff --git a/src/app/views/roles/new.haml b/src/app/views/roles/new.haml index 4d55105..17c1f7e 100644 --- a/src/app/views/roles/new.haml +++ b/src/app/views/roles/new.haml @@ -1,6 +1,6 @@ = render :partial => 'layouts/admin_nav' = render :partial => 'section_header' -%section.content-section.users +%section.admin-content-section.users %header %h2 New Role
diff --git a/src/app/views/roles/show.haml b/src/app/views/roles/show.haml index d54cf2e..f3930b3 100644 --- a/src/app/views/roles/show.haml +++ b/src/app/views/roles/show.haml @@ -1,19 +1,16 @@ = render :partial => 'layouts/admin_nav' -%header.page-header +%header.admin-page-header %h1{:class => controller.controller_name}= @role.name #obj_actions.button-container = link_to 'New Role', new_role_url, :class => 'button primary', :id => 'new_role_button' .button-group = link_to 'Edit', edit_role_path(@role), :class => 'button pill' - = button_to 'Delete', role_path(@role), :method => :delete, :class => 'button pill danger', + = link_to 'Delete', role_path(@role), :method => :delete, :class => 'button pill danger', :confirm => "Are you sure you want to delete this role?"
- .corner - -%section.content-section.role +%section.admin-content-section.role %header %h2 Properties
.content - %div#view - = render :partial => 'properties' + = render :partial => 'properties' diff --git a/src/config/navigation.rb b/src/config/navigation.rb index 109bcdc..9e6a579 100644 --- a/src/config/navigation.rb +++ b/src/config/navigation.rb @@ -22,7 +22,7 @@ SimpleNavigation::Configuration.run do |navigation| first_level.dom_class = 'container' first_level.item :monitor, t(:monitor), pools_path, :class => 'monitor', :link => { :id => 'monitor' }, :highlights_on => //deployments|/pools|/instances/ first_level.item :administer, t(:administer), users_path, :class => 'administer' do |second_level| - second_level.item :users_and_groups, "Users & Groups", users_path, :link => { :class => 'users' }, :highlights_on => //users/ + second_level.item :users_and_groups, "Users & Groups", users_path, :link => { :class => 'users' }, :highlights_on => //users|/roles/ second_level.item :environments, "Environments", settings_path, :link => { :class => 'environments' }, :highlights_on => //settings/ second_level.item :content, "Content", catalogs_path, :link => { :class => 'content' }, :highlights_on => //catalogs|/catalog_entries/ second_level.item :cloud_providers, "Cloud Providers", providers_path, :link => { :class => 'providers' }, :highlights_on => //providers|/realms|/realm_mappingsi|/hardware_profiles/
--- src/app/views/settings/_section_header.haml | 3 +-- src/app/views/settings/general_settings.haml | 5 ++--- src/app/views/settings/index.haml | 6 ++---- src/app/views/settings/self_service.haml | 7 ++++--- src/config/navigation.rb | 2 +- 5 files changed, 10 insertions(+), 13 deletions(-)
diff --git a/src/app/views/settings/_section_header.haml b/src/app/views/settings/_section_header.haml index 6231e5b..b03ee3c 100644 --- a/src/app/views/settings/_section_header.haml +++ b/src/app/views/settings/_section_header.haml @@ -1,4 +1,3 @@ -%header.page-header +%header.admin-page-header %h1{:class => controller.controller_name} Settings #obj_actions.button-group - .corner diff --git a/src/app/views/settings/general_settings.haml b/src/app/views/settings/general_settings.haml index 64c3f02..e0ef01f 100644 --- a/src/app/views/settings/general_settings.haml +++ b/src/app/views/settings/general_settings.haml @@ -1,9 +1,8 @@ -%header.page-header +%header.admin-page-header %h1{:class => controller.controller_name} General Settings #obj_actions.button-group - .corner
-%section.content-section.settings +%section.admin-content-section.settings %header %h2 Settings
diff --git a/src/app/views/settings/index.haml b/src/app/views/settings/index.haml index 0ddd839..e1f51d8 100644 --- a/src/app/views/settings/index.haml +++ b/src/app/views/settings/index.haml @@ -1,10 +1,7 @@ = render :partial => 'layouts/admin_nav' = render :partial => 'section_header'
-%section.content-section.settings - %header - %h2 Settings - +%section.admin-content-section.settings .content %ul.tiles{:class => 'container_16'} -#%li#services.grid_8.disabled @@ -37,6 +34,7 @@ = t('.define_locales_desc') %button{:disabled => "disabled"} = t(:continue) + .clear
:javascript $(document).ready(function () { diff --git a/src/app/views/settings/self_service.haml b/src/app/views/settings/self_service.haml index bb4d1fc..b3e79f5 100644 --- a/src/app/views/settings/self_service.haml +++ b/src/app/views/settings/self_service.haml @@ -1,9 +1,9 @@ -%header.page-header += render :partial => 'layouts/admin_nav' +%header.admin-page-header %h1{:class => controller.controller_name} Self-service Settings #obj_actions.button-group - .corner
-%section.content-section.settings +%section.admin-content-section.settings %header %h2 Settings
@@ -128,3 +128,4 @@ .grid_13.omega.alpha.gap %button.formbutton Reset = submit_tag t(:save), :class => "submit formbutton" + .clear diff --git a/src/config/navigation.rb b/src/config/navigation.rb index 9e6a579..8a72a56 100644 --- a/src/config/navigation.rb +++ b/src/config/navigation.rb @@ -23,7 +23,7 @@ SimpleNavigation::Configuration.run do |navigation| first_level.item :monitor, t(:monitor), pools_path, :class => 'monitor', :link => { :id => 'monitor' }, :highlights_on => //deployments|/pools|/instances/ first_level.item :administer, t(:administer), users_path, :class => 'administer' do |second_level| second_level.item :users_and_groups, "Users & Groups", users_path, :link => { :class => 'users' }, :highlights_on => //users|/roles/ - second_level.item :environments, "Environments", settings_path, :link => { :class => 'environments' }, :highlights_on => //settings/ + second_level.item :environments, "Environments", settings_path, :link => { :class => 'environments' }, :highlights_on => //settings|/self_service/ second_level.item :content, "Content", catalogs_path, :link => { :class => 'content' }, :highlights_on => //catalogs|/catalog_entries/ second_level.item :cloud_providers, "Cloud Providers", providers_path, :link => { :class => 'providers' }, :highlights_on => //providers|/realms|/realm_mappingsi|/hardware_profiles/ end
--- src/app/views/pool_families/_form.haml | 3 +-- src/app/views/pool_families/_list.haml | 10 ++++++---- src/app/views/pool_families/edit.haml | 16 +++++++--------- src/app/views/pool_families/index.haml | 1 - src/app/views/pool_families/new.haml | 11 ++++++----- src/app/views/pool_families/show.haml | 18 ++++++------------ src/config/navigation.rb | 2 +- 7 files changed, 27 insertions(+), 34 deletions(-)
diff --git a/src/app/views/pool_families/_form.haml b/src/app/views/pool_families/_form.haml index faae226..6724f13 100644 --- a/src/app/views/pool_families/_form.haml +++ b/src/app/views/pool_families/_form.haml @@ -5,11 +5,10 @@ = form.label :name,'Pool Family Name' = form.text_field :name, :title => 'pool_family_name', :value => @pool_family.name, :class => 'em long'
-%fieldset = form.fields_for :quota do |quota_form| %p = quota_form.label :maximum_running_instances, t(:maximum_running_instances) = quota_form.text_field :maximum_running_instances
%fieldset.options - = form.submit "Save", :class => "submit button" + = form.submit "Save", :class => "submit button pill" diff --git a/src/app/views/pool_families/_list.haml b/src/app/views/pool_families/_list.haml index d1dbbde..d0b17d3 100644 --- a/src/app/views/pool_families/_list.haml +++ b/src/app/views/pool_families/_list.haml @@ -1,11 +1,13 @@ -%section.content-section.pool_families +%section.admin-content-section.pool_families %header - %h2 Pool Families - %span.label.badge.dark.count= @pool_families.length + %h2.pools Pool Families + .section-controls + #obj_actions + = link_to "New Pool Family", new_pool_family_path, :class => 'button pill'
.content - content_for :form_header do - %li= restful_submit_tag "Delete", "destroy", multi_destroy_pool_families_path, 'DELETE', :id => 'delete_button', :class => 'button danger' + %li= restful_submit_tag "Delete Selected", "destroy", multi_destroy_pool_families_path, 'DELETE', :id => 'delete_button', :class => 'button pill danger'
= filter_table(@header, @pool_families) do |pool_family| %tr{:class => cycle('nostripe','stripe')} diff --git a/src/app/views/pool_families/edit.haml b/src/app/views/pool_families/edit.haml index 7b8046a..0faa291 100644 --- a/src/app/views/pool_families/edit.haml +++ b/src/app/views/pool_families/edit.haml @@ -1,16 +1,14 @@ = render :partial => 'layouts/admin_nav'
-%header.page-header - %h1{:class => controller.controller_name}= @pool_family.name - #obj_actions.button-container - = link_to 'New Pool Family', new_pool_family_url, :class => 'button primary', :id => 'new_user_button' - %div.button-group - = link_to 'Cancel Editing', pool_family_path(@pool_family), :class => 'button pill danger', :id => 'new_user_button' - .corner +%header.admin-page-header + %h1= @pool_family.name + #obj_actions + Return to: + = link_to 'Environments', pool_families_path, :class => 'rounded-link'
-%section.content-section.pool_family +%section.admin-content-section.pool_family %header - %h2 Properties + %h2.settings Settings
.content -form_for @pool_family, :url => pool_family_path(@pool_family), :html => { :method => :put, :class => 'generic' } do |f| diff --git a/src/app/views/pool_families/index.haml b/src/app/views/pool_families/index.haml index 3fae6b6..0a79dc6 100644 --- a/src/app/views/pool_families/index.haml +++ b/src/app/views/pool_families/index.haml @@ -1,3 +1,2 @@ = render :partial => 'layouts/admin_nav' -= render :partial => 'section_header' = render :partial => 'list' diff --git a/src/app/views/pool_families/new.haml b/src/app/views/pool_families/new.haml index c328592..8535afa 100644 --- a/src/app/views/pool_families/new.haml +++ b/src/app/views/pool_families/new.haml @@ -1,10 +1,11 @@ = render :partial => 'layouts/admin_nav' -= render :partial => 'section_header' - -%section.content-section.pool_family - %header - %h2 New Pool Family +%header.admin-page-header + %h1 New Pool Family + #obj_actions + Return to: + = link_to "Environments", pool_families_path, :class => 'rounded-link'
+%section.admin-content-section.pool_family .content = form_for @pool_family, :url => pool_families_path, :html => {:class => 'generic'} do |f| = render :partial => "form", :locals => { :form => f, :cancel_path => pool_families_path } diff --git a/src/app/views/pool_families/show.haml b/src/app/views/pool_families/show.haml index bdc9936..70ad82d 100644 --- a/src/app/views/pool_families/show.haml +++ b/src/app/views/pool_families/show.haml @@ -1,18 +1,12 @@ = render :partial => 'layouts/admin_nav' -%header.page-header - %h1{:class => controller.controller_name}= @pool_family.name +%header.admin-page-header + %h1= @pool_family.name #obj_actions.button-container - = link_to 'New Pool Family', new_pool_family_url, :class => 'button primary', :id => 'new_user_button' .button-group = link_to 'Edit', edit_pool_family_path(@pool_family), :class => 'button pill' - = button_to 'Delete', pool_family_path(@pool_family), :method => :delete, :confirm => "Are you sure you want to delete?", :class => "button pill danger", :id => 'delete_pool_family_button' - .corner - -%section.content-section.pool_family - %header - %h2 Properties + = link_to 'Delete', pool_family_path(@pool_family), :method => :delete, :confirm => "Are you sure you want to delete?", :class => "button pill danger", :id => 'delete_pool_family_button'
+%section.admin-content-section.pool_family .content - %div#view - = render :partial => 'properties' - = render :partial => 'provider_accounts' + = render :partial => 'properties' + = render :partial => 'provider_accounts' diff --git a/src/config/navigation.rb b/src/config/navigation.rb index 8a72a56..b266438 100644 --- a/src/config/navigation.rb +++ b/src/config/navigation.rb @@ -23,7 +23,7 @@ SimpleNavigation::Configuration.run do |navigation| first_level.item :monitor, t(:monitor), pools_path, :class => 'monitor', :link => { :id => 'monitor' }, :highlights_on => //deployments|/pools|/instances/ first_level.item :administer, t(:administer), users_path, :class => 'administer' do |second_level| second_level.item :users_and_groups, "Users & Groups", users_path, :link => { :class => 'users' }, :highlights_on => //users|/roles/ - second_level.item :environments, "Environments", settings_path, :link => { :class => 'environments' }, :highlights_on => //settings|/self_service/ + second_level.item :environments, "Environments", pool_families_path, :link => { :class => 'environments' }, :highlights_on => //pool_families/ second_level.item :content, "Content", catalogs_path, :link => { :class => 'content' }, :highlights_on => //catalogs|/catalog_entries/ second_level.item :cloud_providers, "Cloud Providers", providers_path, :link => { :class => 'providers' }, :highlights_on => //providers|/realms|/realm_mappingsi|/hardware_profiles/ end
--- .../controllers/provider_accounts_controller.rb | 3 +- src/app/views/catalog_entries/show.haml | 2 +- src/app/views/catalogs/show.haml | 2 +- src/app/views/pool_families/_list.haml | 2 +- src/app/views/realms/_list.haml | 2 +- src/app/views/realms/new.haml | 2 +- src/app/views/users/_list.haml | 2 +- src/app/views/users/index.haml | 2 +- src/config/navigation.rb | 2 +- src/config/routes.rb | 2 + src/features/authentication.feature | 4 +- src/features/catalog_entries.feature | 2 +- src/features/catalogs.feature | 4 +- src/features/pool_family.feature | 2 +- src/features/provider.feature | 5 +-- src/features/provider_account.feature | 31 +++++++++----------- src/features/realm.feature | 4 +- src/features/support/paths.rb | 10 +++++- src/features/user.feature | 21 ++++--------- src/spec/controllers/provider_controller_spec.rb | 4 +- 20 files changed, 52 insertions(+), 56 deletions(-)
diff --git a/src/app/controllers/provider_accounts_controller.rb b/src/app/controllers/provider_accounts_controller.rb index 1878001..b3f6394 100644 --- a/src/app/controllers/provider_accounts_controller.rb +++ b/src/app/controllers/provider_accounts_controller.rb @@ -26,7 +26,8 @@ class ProviderAccountsController < ApplicationController load_accounts
respond_to do |format| - format.html + #xml list of provider_accounts for aeolus-image, aeolus-image could work with prov. accounts list for givent provider + #to resemble html views logic, so this route could be removed (provider_accounts could be user only as nested resource) format.xml { render :text => ProviderAccount.xml_export(@provider_accounts) } end end diff --git a/src/app/views/catalog_entries/show.haml b/src/app/views/catalog_entries/show.haml index 4a5754b..3761dce 100644 --- a/src/app/views/catalog_entries/show.haml +++ b/src/app/views/catalog_entries/show.haml @@ -5,7 +5,7 @@ = link_to 'New Catalog Entry', new_catalog_entry_url, :class => 'button primary', :id => 'new_catalog_entry_button' .button-group = link_to 'Edit', edit_catalog_entry_path(@catalog_entry), :class => 'button pill', :id => 'edit_button' - = link_to "Delete", catalog_entry_path(@catalog_entry), :method => 'delete', :confirm => "Are you sure you want to delete?", :class => 'button pill danger', :id => 'delete_button' + = link_to "Delete", catalog_entry_path(@catalog_entry), :method => 'delete', :confirm => "Are you sure you want to delete?", :class => 'button pill danger', :id => 'delete'
%section.admin-content-section.user %header diff --git a/src/app/views/catalogs/show.haml b/src/app/views/catalogs/show.haml index a7c3e05..addb834 100644 --- a/src/app/views/catalogs/show.haml +++ b/src/app/views/catalogs/show.haml @@ -5,7 +5,7 @@ = link_to 'New Catalog', new_catalog_url, :class => 'button primary', :id => 'new_catalog_entry_button' .button-group = link_to 'Edit', edit_catalog_path(@catalog), :class => 'button pill', :id => 'edit_button' - = link_to "Delete", catalog_path(@catalog), :method => 'delete', :confirm => "Are you sure you want to delete?", :class => 'button pill danger', :id => 'delete_button' + = link_to "Delete", catalog_path(@catalog), :method => 'delete', :confirm => "Are you sure you want to delete?", :class => 'button pill danger', :id => 'delete'
%section.admin-content-section.user %header diff --git a/src/app/views/pool_families/_list.haml b/src/app/views/pool_families/_list.haml index d0b17d3..ebdaaee 100644 --- a/src/app/views/pool_families/_list.haml +++ b/src/app/views/pool_families/_list.haml @@ -3,7 +3,7 @@ %h2.pools Pool Families .section-controls #obj_actions - = link_to "New Pool Family", new_pool_family_path, :class => 'button pill' + = link_to "New Pool Family", new_pool_family_path, :class => 'button pill', :id => 'new_pool_family_button'
.content - content_for :form_header do diff --git a/src/app/views/realms/_list.haml b/src/app/views/realms/_list.haml index 20ecdcd..d0b2c17 100644 --- a/src/app/views/realms/_list.haml +++ b/src/app/views/realms/_list.haml @@ -1,7 +1,7 @@ .content - content_for :form_header do %li= restful_submit_tag "Delete Selected", "destroy", multi_destroy_realms_path, 'DELETE', :id => 'delete_button', :class => 'button pill danger' - %li= link_to "New Realm", new_realm_path, :id => 'new_realm', :class => 'button pill' + %li= link_to "New Realm", new_realm_path, :id => 'new_realm_button', :class => 'button pill'
= filter_table(realms_header, @realms) do |realm| %tr{:class => cycle('nostripe','stripe')} diff --git a/src/app/views/realms/new.haml b/src/app/views/realms/new.haml index a7dddaa..bff3c69 100644 --- a/src/app/views/realms/new.haml +++ b/src/app/views/realms/new.haml @@ -3,7 +3,7 @@ %h1 Create New Realm #obj_actions Return to: - = link_to "Cloud Providers", edit_provider_path(Provider.all.first, :view => 'filter', :details_tab => 'realms'), :class => 'rounded-link' + = link_to "Realms", realms_path, :class => 'rounded-link'
%section.admin-content-section.users .content diff --git a/src/app/views/users/_list.haml b/src/app/views/users/_list.haml index 4a6cece..ee66170 100644 --- a/src/app/views/users/_list.haml +++ b/src/app/views/users/_list.haml @@ -3,7 +3,7 @@ %h2#users.users Users .section-controls #obj_actions - = link_to "", new_user_path, :class => 'add-user-button' + = link_to "", new_user_path, :class => 'add-user-button', :id => 'add_user_button' .content - content_for :form_header do %li= restful_submit_tag "Delete Selected", "destroy", multi_destroy_users_path, 'DELETE', :id => 'delete_button', :class => 'button pill danger' diff --git a/src/app/views/users/index.haml b/src/app/views/users/index.haml index b13ebc9..b1bfe7f 100644 --- a/src/app/views/users/index.haml +++ b/src/app/views/users/index.haml @@ -11,7 +11,7 @@ %h2#groups.groups Groups .section-controls #obj_actions - = link_to "", "#", :class => 'add-group-button' + = link_to "", "#", :class => 'add-group-button', :id => 'add_group_button' .content Unimplemented. = render :partial => 'list' diff --git a/src/config/navigation.rb b/src/config/navigation.rb index b266438..0d5bad3 100644 --- a/src/config/navigation.rb +++ b/src/config/navigation.rb @@ -22,7 +22,7 @@ SimpleNavigation::Configuration.run do |navigation| first_level.dom_class = 'container' first_level.item :monitor, t(:monitor), pools_path, :class => 'monitor', :link => { :id => 'monitor' }, :highlights_on => //deployments|/pools|/instances/ first_level.item :administer, t(:administer), users_path, :class => 'administer' do |second_level| - second_level.item :users_and_groups, "Users & Groups", users_path, :link => { :class => 'users' }, :highlights_on => //users|/roles/ + second_level.item :users_and_groups, "Users & Groups", users_path, :link => { :class => 'users' }, :highlights_on => //users|/roles|/account/ second_level.item :environments, "Environments", pool_families_path, :link => { :class => 'environments' }, :highlights_on => //pool_families/ second_level.item :content, "Content", catalogs_path, :link => { :class => 'content' }, :highlights_on => //catalogs|/catalog_entries/ second_level.item :cloud_providers, "Cloud Providers", providers_path, :link => { :class => 'providers' }, :highlights_on => //providers|/realms|/realm_mappingsi|/hardware_profiles/ diff --git a/src/config/routes.rb b/src/config/routes.rb index d6e1a2f..68d1451 100644 --- a/src/config/routes.rb +++ b/src/config/routes.rb @@ -137,6 +137,8 @@ Conductor::Application.routes.draw do end end
+ resources :provider_accounts, :only => :index + resources :provider_types, :only => :index
resources :users do diff --git a/src/features/authentication.feature b/src/features/authentication.feature index 1dd3cf8..4a2ce82 100644 --- a/src/features/authentication.feature +++ b/src/features/authentication.feature @@ -20,7 +20,7 @@ Feature: User authentication Given I am logged in And I am on the root page When I want to edit my profile - Then should see "Editing Account" + Then should see "Edit Account" When I fill in "E-mail" with "changed@example.com" And I press "Save" Then I should be on the my user page @@ -38,7 +38,7 @@ Feature: User authentication Given I am logged in And I am on the root page When I want to edit my profile - Then should see "Editing Account" + Then should see "Edit Account" When I enter a string of length "101" into "user[login]" And I press "Save" Then I should see "Login is too long (maximum is 100 characters)" diff --git a/src/features/catalog_entries.feature b/src/features/catalog_entries.feature index 3d4ee38..59f2292 100644 --- a/src/features/catalog_entries.feature +++ b/src/features/catalog_entries.feature @@ -55,7 +55,7 @@ Feature: Manage Catalog Entries Given a catalog entry "testdepl1" exists And I am on the catalog entries page When I follow "testdepl1" - And I press "delete_button" + And I follow "delete" Then there should be only 0 catalog entries And I should be on the catalog entries page And I should not see "testdepl1" diff --git a/src/features/catalogs.feature b/src/features/catalogs.feature index caf11f1..0e3fd85 100644 --- a/src/features/catalogs.feature +++ b/src/features/catalogs.feature @@ -39,6 +39,6 @@ Feature: Manage Catalogs Given there is a "Bad" catalog And I am on the catalogs page When I follow "Bad" - And I press "Delete" + And I follow "delete" Then I should be on the catalogs page - And I should not see "Bad" \ No newline at end of file + And I should not see "Bad" diff --git a/src/features/pool_family.feature b/src/features/pool_family.feature index d873c20..a517db9 100644 --- a/src/features/pool_family.feature +++ b/src/features/pool_family.feature @@ -24,7 +24,7 @@ Feature: Pool Families Given there is a pool family named "testpoolfamily" And I am on the pool families page When I follow "testpoolfamily" - Then I should see "Properties" + Then I should see "Pool Family Details"
Scenario: Create a new Pool family Given I am on the pool families page diff --git a/src/features/provider.feature b/src/features/provider.feature index 2f0f385..5b43e6c 100644 --- a/src/features/provider.feature +++ b/src/features/provider.feature @@ -41,8 +41,7 @@ Feature: Manage Providers
Scenario: Show provider details Given there is a provider named "testprovider" - And I am on the providers page - When I follow "testprovider" + When I am on the testprovider's edit provider page Then I should see "Provider name" And I should see "Provider URL"
@@ -78,7 +77,7 @@ Feature: Manage Providers And this provider has a realm And this provider has a provider account When I go to the provider1's edit provider page - And I press "delete" + And I follow "delete" And there should not exist a provider named "provider1" And there should not be any hardware profiles And there should not be a provider account diff --git a/src/features/provider_account.feature b/src/features/provider_account.feature index c04b35b..ab1f9d9 100644 --- a/src/features/provider_account.feature +++ b/src/features/provider_account.feature @@ -31,10 +31,9 @@ Feature: Manage Provider Accounts Scenario: Create a new Provider Account Given there is a provider named "testprovider" And there are no provider accounts - When I go to the testprovider's edit provider page - And I follow "filter_view" - And I follow "New Account" - Then I should be on the new provider provider account page + And I am on the testprovider's provider accounts page + When I follow "New Account" + Then I should be on testprovider's new provider account page And I should see "New Provider Account" When I select "testprovider" from "provider_account_provider_id" And I fill in "provider_account[label]" with "testaccount" @@ -42,18 +41,16 @@ Feature: Manage Provider Accounts And I fill in "provider_account[credentials_hash][password]" with "mockpassword" And I fill in "quota[maximum_running_instances]" with "13" And I press "Save" - Then I should be on testaccount's provider account page + Then I should be on the testprovider's edit provider page And I should see "Account testaccount was added." And I should have a provider account named "testaccount" - And I should see "Properties for testaccount" - And I should see "Running instances quota: 13"
Scenario: Create a new Provider Account using wrong credentials Given there is a provider named "testprovider" And there are no provider accounts - And I am on the provider accounts page - When I follow "New Provider Account" - Then I should be on the new provider account page + And I am on the testprovider's provider accounts page + And I follow "New Account" + Then I should be on testprovider's new provider account page And I should see "New Provider Account" When I select "testprovider" from "provider_account_provider_id" And I fill in "provider_account[label]" with "testaccount" @@ -68,16 +65,16 @@ Feature: Manage Provider Accounts Given there is a provider named "testprovider" And there is a provider account named "testaccount" And the account has an instance associated with it - And I am on the provider accounts page + And I am on the testprovider's provider accounts page When I check the "testaccount" account And I press "Delete" - Then I should be on the provider accounts page + Then I should be on the testprovider's edit provider page And I should see "was not deleted" And there should be 1 provider account When I delete all instances from the account And I check the "testaccount" account And I press "Delete" - Then I should be on the provider accounts page + Then I should be on the testprovider's edit provider page And I should see "was deleted" And there should be no provider accounts
@@ -86,17 +83,17 @@ Feature: Manage Provider Accounts And there is a provider account named "testaccount" And the account has an instance associated with it And all the account instances are stopped - And I am on the provider accounts page + And I am on the testprovider's provider accounts page When I check the "testaccount" account And I press "Delete" - Then I should be on the provider accounts page + Then I should be on the testprovider's edit provider page And I should see "was deleted" And there should be no provider accounts
Scenario: Edit a existing Provider Account Given there is a provider named "testprovider" And there is a provider account named "testaccount" - And I am on the provider accounts page + And I am on the testprovider's provider accounts page And I follow "testaccount" When I follow "Edit" And I fill in "provider_account[label]" with "testaccount_updated" @@ -107,7 +104,7 @@ Feature: Manage Provider Accounts Scenario: Edit a existing Provider Account with invalid credentials Given there is a provider named "testprovider" And there is a provider account named "testaccount" - And I am on the provider accounts page + And I am on the testprovider's provider accounts page And I follow "testaccount" When I follow "Edit" And I fill in "provider_account[label]" with "" diff --git a/src/features/realm.feature b/src/features/realm.feature index 70ddc90..a59e9d2 100644 --- a/src/features/realm.feature +++ b/src/features/realm.feature @@ -12,7 +12,7 @@ Feature: Manage Realms Scenario: Create new frontend realm Given I am on the realms page When I follow "new_realm_button" - Then I should see "Create a new Realm" + Then I should see "Create New Realm" When I fill in "frontend_realm_name" with "testrealm2" And I press "Save" Then I should see "Realm was added." @@ -21,7 +21,7 @@ Feature: Manage Realms Given I am on the realms page And there is a realm "testrealm1" When I follow "new_realm_button" - Then I should see "Create a new Realm" + Then I should see "Create New Realm" When I fill in "frontend_realm_name" with "testrealm1" And I press "frontend_realm_submit" Then I should see "Name has already been taken" diff --git a/src/features/support/paths.rb b/src/features/support/paths.rb index 4f12a4d..a849956 100644 --- a/src/features/support/paths.rb +++ b/src/features/support/paths.rb @@ -47,6 +47,9 @@ module NavigationHelpers when /^the (.*)'s edit provider page$/ edit_provider_path(Provider.find_by_name($1))
+ when /^the (.*)'s provider accounts page$/ + edit_provider_path(Provider.find_by_name($1), :view => 'filter', :details_tab => 'connectivity') + when /the settings page/ settings_path
@@ -101,8 +104,11 @@ module NavigationHelpers when /^(.*)'s edit hardware profile page$/ edit_hardware_profile_path(HardwareProfile.find_by_name($1))
- when /^(.*)'s provider account page$/ - provider_account_path(ProviderAccount.find_by_label($1)) + when /^(.*)'s provider ^(.*)'s provider account page$/ + provider_provider_account_path(Provider.find_by_name($1), ProviderAccount.find_by_label($2)) + + when /^(.*)'s new provider account page$/ + new_provider_provider_account_path(Provider.find_by_name($1))
when /the operational status of deployment page/ deployment_path(@deployment, :details_tab => 'operation') diff --git a/src/features/user.feature b/src/features/user.feature index b5e9a06..115a93f 100644 --- a/src/features/user.feature +++ b/src/features/user.feature @@ -13,7 +13,7 @@ Feature: Manage Users And there is a user "testuser" When I follow "testuser" And I follow "Edit" - Then I should see "Editing User:" + Then I should see "Edit User" When I fill in "user[password]" with "new password" And I fill in "user[password_confirmation]" with "" And I press "Save" @@ -33,15 +33,6 @@ Feature: Manage Users When I follow "testuser" Then I should be on testuser's user page
- Scenario: Administrator cancels the creation of a user account - Given I am on the users page - And there are 2 users - When I follow "New User" - Then I should be on the new user page - When I follow "cancel" - Then there should be 2 users - And I should be on the users page - Scenario: Delete users Given there is a user "testuser" And I am on the users page @@ -58,9 +49,9 @@ Feature: Manage Users
Scenario: Create new user Given I am on the users page - When I follow "New User" + When I follow "add_user_button" Then I should be on the new user page - And I should see "New Account" + And I should see "New User" When I fill in the following: | Choose a username | testuser2 | | Choose a password | secret | @@ -74,9 +65,9 @@ Feature: Manage Users
Scenario: Want to register new user but decide to cancel Given I am on the users page - When I follow "New User" + When I follow "add_user_button" Then I should be on the new user page - And I should see "New Account" + And I should see "New User" When I fill in the following: | Choose a username | testuser2 | | Choose a password | secret | @@ -84,7 +75,7 @@ Feature: Manage Users | First name | Joe | | Last name | Tester | | E-mail | testuser2@example.com | - And I follow "Cancel" + And I follow "Users & Groups" Then I should be on the users page And there should not be user with login "canceluser"
diff --git a/src/spec/controllers/provider_controller_spec.rb b/src/spec/controllers/provider_controller_spec.rb index 460ad7e..4285e0b 100644 --- a/src/spec/controllers/provider_controller_spec.rb +++ b/src/spec/controllers/provider_controller_spec.rb @@ -30,10 +30,10 @@ describe ProvidersController do
describe "provide ui to view hardware profiles" do before do - get :show, :id => @provider.id, :details_tab => 'hw_profiles', :format => :js + get :edit, :id => @provider.id, :details_tab => 'hardware_profiles', :format => :js end
- it { response.should render_template(:partial => 'providers/_hw_profiles') } + it { response.should render_template(:partial => 'hardware_profiles/_list') } it { response.should be_success } it { assigns[:hardware_profiles].size.should == @provider.hardware_profiles.size } end
Apply to admin_ui branch of course...
On 09/23/2011 02:59 PM, Jiri Tomasek wrote:
This patchset implements all nessesary changes to merge admin_ui branch to master. Cloud Providers section is complete, realms and hardware profile tabs under Provider shows list of related realms/hwp's, the routes for realms and hwp's remained the same to enable direct listing for now. Users and Groups section has Users implemented. All other sections have adapted new admin ui style and work.
This patchset implements redmine #2333, 2384, 2378 and 2236
aeolus-devel mailing list aeolus-devel@lists.fedorahosted.org https://fedorahosted.org/mailman/listinfo/aeolus-devel
On Friday 23 of September 2011 15:05:17 Jiri Tomasek wrote:
Apply to admin_ui branch of course...
On 09/23/2011 02:59 PM, Jiri Tomasek wrote:
This patchset implements all nessesary changes to merge
admin_ui branch
to master. Cloud Providers section is complete, realms and
hardware
profile tabs under Provider shows list of related realms/hwp's, the routes for realms and hwp's remained the same to enable direct
listing
for now. Users and Groups section has Users implemented. All
other
sections have adapted new admin ui style and work.
This patchset implements redmine #2333, 2384, 2378 and 2236
aeolus-devel mailing list aeolus-devel@lists.fedorahosted.org https://fedorahosted.org/mailman/listinfo/aeolus-devel
aeolus-devel mailing list aeolus-devel@lists.fedorahosted.org https://fedorahosted.org/mailman/listinfo/aeolus-devel
ACK
aeolus-devel@lists.fedorahosted.org