Redmine #2218, #2228, #2219 Folowing patches implement new administer section navigation and bring some changes and polishing to layout.scss and makes primary tab navigation to use simple navigation gem
These patches should be pushed to separate branch in conductor repo
--- src/app/stylesheets/layout.scss | 405 --------------------------------------- 1 files changed, 0 insertions(+), 405 deletions(-)
diff --git a/src/app/stylesheets/layout.scss b/src/app/stylesheets/layout.scss index af41d65..4ce4391 100644 --- a/src/app/stylesheets/layout.scss +++ b/src/app/stylesheets/layout.scss @@ -183,411 +183,6 @@ form{ display: inline; }
-/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Page Layout -- v.0.0.2 [layout] (960.css) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ - -/* - 960 Grid System ~ Core CSS. - Learn more ~ http://960.gs/ - - Licensed under GPL and MIT. -*/ - -/* - Forces backgrounds to span full width, - even if there is horizontal scrolling. - Increase this if your layout is wider. - - Note: IE6 works fine without this fix. -*/ - -body { - min-width: 960px; -} - -/* Containers -----------------------------------------------------------------------------------------------------*/ -.container_16 { - margin-left: auto; - margin-right: auto; - width: 960px; -} - -/* Grid >> Global -----------------------------------------------------------------------------------------------------*/ - -.grid_1, -.grid_2, -.grid_3, -.grid_4, -.grid_5, -.grid_6, -.grid_7, -.grid_8, -.grid_9, -.grid_10, -.grid_11, -.grid_12, -.grid_13, -.grid_14, -.grid_15, -.grid_16 { - display: inline; - float: left; - position: relative; - margin-left: 10px; - margin-right: 10px; -} - -.push_1, .pull_1, -.push_2, .pull_2, -.push_3, .pull_3, -.push_4, .pull_4, -.push_5, .pull_5, -.push_6, .pull_6, -.push_7, .pull_7, -.push_8, .pull_8, -.push_9, .pull_9, -.push_10, .pull_10, -.push_11, .pull_11, -.push_12, .pull_12, -.push_13, .pull_13, -.push_14, .pull_14, -.push_15, .pull_15, -.push_16, .pull_16 { - position: relative; -} - -/* Grid >> Children (Alpha ~ First, Omega ~ Last) -----------------------------------------------------------------------------------------------------*/ - -.alpha { - margin-left: 0; -} - -.omega { - margin-right: 0; -} - -/* Grid >> 16 Columns -----------------------------------------------------------------------------------------------------*/ - -.container_16 .grid_1 { - width: 40px; -} - -.container_16 .grid_2 { - width: 100px; -} - -.container_16 .grid_3 { - width: 160px; -} - -.container_16 .grid_4 { - width: 220px; -} - -.container_16 .grid_5 { - width: 280px; -} - -.container_16 .grid_6 { - width: 340px; -} - -.container_16 .grid_7 { - width: 400px; -} - -.container_16 .grid_8 { - width: 460px; -} - -.container_16 .grid_9 { - width: 520px; -} - -.container_16 .grid_10 { - width: 580px; -} - -.container_16 .grid_11 { - width: 640px; -} - -.container_16 .grid_12 { - width: 700px; -} - -.container_16 .grid_13 { - width: 760px; -} - -.container_16 .grid_14 { - width: 820px; -} - -.container_16 .grid_15 { - width: 880px; -} - -.container_16 .grid_16 { - width: 940px; -} - -/* Prefix Extra Space >> 16 Columns -----------------------------------------------------------------------------------------------------*/ - -.container_16 .prefix_1 { - padding-left: 60px; -} - -.container_16 .prefix_2 { - padding-left: 120px; -} - -.container_16 .prefix_3 { - padding-left: 180px; -} - -.container_16 .prefix_4 { - padding-left: 240px; -} - -.container_16 .prefix_5 { - padding-left: 300px; -} - -.container_16 .prefix_6 { - padding-left: 360px; -} - -.container_16 .prefix_7 { - padding-left: 420px; -} - -.container_16 .prefix_8 { - padding-left: 480px; -} - -.container_16 .prefix_9 { - padding-left: 540px; -} - -.container_16 .prefix_10 { - padding-left: 600px; -} - -.container_16 .prefix_11 { - padding-left: 660px; -} - -.container_16 .prefix_12 { - padding-left: 720px; -} - -.container_16 .prefix_13 { - padding-left: 780px; -} - -.container_16 .prefix_14 { - padding-left: 840px; -} - -.container_16 .prefix_15 { - padding-left: 900px; -} - -/* Suffix Extra Space >> 16 Columns -----------------------------------------------------------------------------------------------------*/ - -.container_16 .suffix_1 { - padding-right: 60px; -} - -.container_16 .suffix_2 { - padding-right: 120px; -} - -.container_16 .suffix_3 { - padding-right: 180px; -} - -.container_16 .suffix_4 { - padding-right: 240px; -} - -.container_16 .suffix_5 { - padding-right: 300px; -} - -.container_16 .suffix_6 { - padding-right: 360px; -} - -.container_16 .suffix_7 { - padding-right: 420px; -} - -.container_16 .suffix_8 { - padding-right: 480px; -} - -.container_16 .suffix_9 { - padding-right: 540px; -} - -.container_16 .suffix_10 { - padding-right: 600px; -} - -.container_16 .suffix_11 { - padding-right: 660px; -} - -.container_16 .suffix_12 { - padding-right: 720px; -} - -.container_16 .suffix_13 { - padding-right: 780px; -} - -.container_16 .suffix_14 { - padding-right: 840px; -} - -.container_16 .suffix_15 { - padding-right: 900px; -} - -/* Push Space >> 16 Columns -----------------------------------------------------------------------------------------------------*/ - -.container_16 .push_1 { - left: 60px; -} - -.container_16 .push_2 { - left: 120px; -} - -.container_16 .push_3 { - left: 180px; -} - -.container_16 .push_4 { - left: 240px; -} - -.container_16 .push_5 { - left: 300px; -} - -.container_16 .push_6 { - left: 360px; -} - -.container_16 .push_7 { - left: 420px; -} - -.container_16 .push_8 { - left: 480px; -} - -.container_16 .push_9 { - left: 540px; -} - -.container_16 .push_10 { - left: 600px; -} - -.container_16 .push_11 { - left: 660px; -} - -.container_16 .push_12 { - left: 720px; -} - -.container_16 .push_13 { - left: 780px; -} - -.container_16 .push_14 { - left: 840px; -} - -.container_16 .push_15 { - left: 900px; -} - -/* Pull Space >> 16 Columns -----------------------------------------------------------------------------------------------------*/ - -.container_16 .pull_1 { - left: -60px; -} - -.container_16 .pull_2 { - left: -120px; -} - -.container_16 .pull_3 { - left: -180px; -} - -.container_16 .pull_4 { - left: -240px; -} - -.container_16 .pull_5 { - left: -300px; -} - -.container_16 .pull_6 { - left: -360px; -} - -.container_16 .pull_7 { - left: -420px; -} - -.container_16 .pull_8 { - left: -480px; -} - -.container_16 .pull_9 { - left: -540px; -} - -.container_16 .pull_10 { - left: -600px; -} - -.container_16 .pull_11 { - left: -660px; -} - -.container_16 .pull_12 { - left: -720px; -} - -.container_16 .pull_13 { - left: -780px; -} - -.container_16 .pull_14 { - left: -840px; -} - -.container_16 .pull_15 { - left: -900px; -}
/* `Clear Floated Elements ----------------------------------------------------------------------------------------------------*/
--- src/app/stylesheets/layout.scss | 23 ++++++++++++++--------- src/app/views/layouts/application.haml | 2 +- 2 files changed, 15 insertions(+), 10 deletions(-)
diff --git a/src/app/stylesheets/layout.scss b/src/app/stylesheets/layout.scss index 4ce4391..0d345f3 100644 --- a/src/app/stylesheets/layout.scss +++ b/src/app/stylesheets/layout.scss @@ -183,7 +183,6 @@ form{ display: inline; }
- /* `Clear Floated Elements ----------------------------------------------------------------------------------------------------*/
@@ -253,19 +252,27 @@ strong, em, b, i{ font-family: $font-family-em; }
/* Content */
-$contentpadding: 7px; +$monitorcontentpadding: 7px; +$administercontentpadding: 0px; + +body.monitor div#content{ + width: $width - (2 * $monitorcontentpadding); + padding: $monitorcontentpadding; + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.50); + -moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.50); + -webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.50); +} +body.administer div#content{ + width: $width; + padding: $administercontentpadding; +}
div#content{ - width: $width - (2 * $contentpadding); margin: 0 auto; margin-bottom: 98px; min-height: 200px; -webkit-border-radius: 7px; -moz-border-radius: 7px; border-radius: 7px; background-color: #FAFAFA; - padding: $contentpadding; - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.50); - -moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.50); - -webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.50); border: 1px solid #999; position: relative; z-index: 100; @@ -277,8 +284,6 @@ div#content{
}
- - /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Page Layout -- v.0.0.2 [layout] (layout_ie.css) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ diff --git a/src/app/views/layouts/application.haml b/src/app/views/layouts/application.haml index 87806c4..102c31a 100644 --- a/src/app/views/layouts/application.haml +++ b/src/app/views/layouts/application.haml @@ -37,7 +37,7 @@ = javascript_include_tag "rails.js" = csrf_meta_tag = yield :scripts - %body + %body{:class => "#{controller.top_section == :administer ? 'administer' : 'monitor'}" } #primary-container
%header#masthead
--- src/app/stylesheets/custom.scss | 18 +----- src/app/stylesheets/layout.scss | 76 +++++++++++++++++++- src/app/views/layouts/_admin_header.haml | 46 +++++-------- src/app/views/layouts/application.haml | 4 +- src/public/images/administer-tab-active-left.png | Bin 0 -> 887 bytes src/public/images/administer-tab-active-right.png | Bin 0 -> 4910 bytes src/public/images/administer_nav_bg.png | Bin 0 -> 2008 bytes src/public/images/administer_nav_bg_hover.png | Bin 0 -> 496 bytes src/public/images/administer_nav_content_icon.png | Bin 0 -> 1010 bytes .../images/administer_nav_environments_icon.png | Bin 0 -> 722 bytes .../images/administer_nav_providers_icon.png | Bin 0 -> 1070 bytes src/public/images/administer_nav_users_icon.png | Bin 0 -> 552 bytes 12 files changed, 93 insertions(+), 51 deletions(-) create mode 100644 src/public/images/administer-tab-active-left.png create mode 100644 src/public/images/administer-tab-active-right.png create mode 100644 src/public/images/administer_nav_bg.png create mode 100644 src/public/images/administer_nav_bg_hover.png create mode 100644 src/public/images/administer_nav_content_icon.png create mode 100644 src/public/images/administer_nav_environments_icon.png create mode 100644 src/public/images/administer_nav_providers_icon.png create mode 100644 src/public/images/administer_nav_users_icon.png
diff --git a/src/app/stylesheets/custom.scss b/src/app/stylesheets/custom.scss index fae47c7..a81a508 100644 --- a/src/app/stylesheets/custom.scss +++ b/src/app/stylesheets/custom.scss @@ -1,19 +1,3 @@ -#admin_subsections { - height: 2em; - display: block; -} -#admin_subsections li { - list-style-type: none; - float: left; - margin-right: 1em; -} -#admin_subsections li.selected { - font-weight: bold; -} -#admin_subsections a { - color: blue; -} - #user-menu.nojs a { margin-left: 1em; } @@ -77,4 +61,4 @@ footer.standard{ height: 30px; display:block; background: url(../../images/loading.gif) no-repeat center; -} \ No newline at end of file +} diff --git a/src/app/stylesheets/layout.scss b/src/app/stylesheets/layout.scss index 0d345f3..506726d 100644 --- a/src/app/stylesheets/layout.scss +++ b/src/app/stylesheets/layout.scss @@ -981,17 +981,28 @@ nav#primary { } } li.active{ - margin-top: -5px; - background: url('../../images/tab-active-right.png') no-repeat right top; z-index: 1000; height: 43px; a{ - background:url('../../images/tab-active-left.png') no-repeat left top; padding: 12px 20px 12px 20px; font-size: 16px; color: #666; } } + li.active.monitor{ + margin-top: -5px; + background: url('../../images/tab-active-right.png') no-repeat right top; + a{ + background:url('../../images/tab-active-left.png') no-repeat left top; + } + } + li.active.administer{ + margin-top: -6px; + background: url('../../images/administer-tab-active-right.png') no-repeat right top; + a{ + background:url('../../images/administer-tab-active-left.png') no-repeat left top; + } + } li + li{ margin-right: 6px; } @@ -999,6 +1010,65 @@ nav#primary { }
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Administer section navigation-- v.0.0.2 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ + +nav#administer_nav { + background: transparent url(../../images/administer_nav_bg.png) left bottom repeat-x; + -webkit-border-radius: 7px 7px 0px 0px; + -moz-border-radius: 7px 7px 0px 0px; + border-radius: 7px 7px 0px 0px; + padding-top: 7px; + + ul{ + display: table; + margin: 0 auto; + } + + li { + float: left; + text-align: center; + list-style-type: none; + + a{ + text-decoration: none; + display: block; + color: black; + + div{padding: 45px 10px 12px 10px;} + div.users{background: transparent url(../../images/administer_nav_users_icon.png) center 16px no-repeat;} + div.environments{background: transparent url(../../images/administer_nav_environments_icon.png) center 14px no-repeat;} + div.content{background: transparent url(../../images/administer_nav_content_icon.png) center 13px no-repeat;} + div.providers{background: transparent url(../../images/administer_nav_providers_icon.png) center 13px no-repeat;} + } + a:hover{ + background: transparent url(../../images/administer_nav_bg_hover.png) center bottom no-repeat; + } + a.selected{ + background: transparent url(../../images/administer_nav_bg_hover.png) center bottom no-repeat; + } + } +} + +/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Admin Page Header -- v.0.0.2 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ + +#admin_page_header{ + background: #e7e7e7; /* Old browsers */ + background: -moz-linear-gradient(top, #e7e7e7 0%, #dadada 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#e7e7e7), color-stop(100%,#dadada)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #e7e7e7 0%,#dadada 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #e7e7e7 0%,#dadada 100%); /* Opera11.10+ */ + background: -ms-linear-gradient(top, #e7e7e7 0%,#dadada 100%); /* IE10+ */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#e7e7e7', endColorstr='#dadada',GradientType=0 ); /* IE6-9 */ + background: linear-gradient(top, #e7e7e7 0%,#dadada 100%); /* W3C */ + border-bottom: 1px solid #C4C4C4; + margin: -7px 0px 0px 0px; + padding-top: 7px; +} + +/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Breadcrumb Navigation -- v.0.0.2 [nav_hist_bar] (nav_hist_bar.scss) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
diff --git a/src/app/views/layouts/_admin_header.haml b/src/app/views/layouts/_admin_header.haml index fb4a8e0..262182f 100644 --- a/src/app/views/layouts/_admin_header.haml +++ b/src/app/views/layouts/_admin_header.haml @@ -1,29 +1,17 @@ --#We'll figure out a better way to deal with this later. -%noscript - %nav#admin_subsections - = render_navigation({:expand_all => true, :level => 2}) - --# TODO: Actually design nav for the Administer section. --# Ugly hack to avoid moving files around for the moment.. Abs position the nav :/ -#tab_actions{:style => "position: absolute; top: -32px; right: 0px;"} - %label.label.small{:for => 'admin-section-select'} Control Panels - %select#admin-section-select - %option{:value => users_path} Choose section... - - if check_privilege(Privilege::VIEW, User) - %option{:value => users_path} Users - %option{:value => roles_path} Roles - %option{:value => providers_path} Providers - %option{:value => provider_accounts_path} Provider Accounts - %option{:value => hardware_profiles_path} Hardware Profiles - %option{:value => realms_path} Realms - %option{:value => pool_families_path} Pool Families - %option{:value => catalogs_path} Catalogs - %option{:value => catalog_entries_path} Catalog Entries - %option{:value => settings_path} Settings - -:javascript - $(document).ready(function() { - $('select#admin-section-select').change(function() { - window.location = $(this).val(); - }); - }); +%nav#administer_nav + %ul + %li + - link_to users_path do + %div.users Users & Groups + %li + - link_to users_path do + %div.environments Environments + %li + - link_to users_path, :class => "selected" do + %div.content Content + %li + - link_to providers_path do + %div.providers Cloud Providers + .clear +#admin_page_header + this is admin_page_header diff --git a/src/app/views/layouts/application.haml b/src/app/views/layouts/application.haml index 102c31a..f2391f4 100644 --- a/src/app/views/layouts/application.haml +++ b/src/app/views/layouts/application.haml @@ -50,9 +50,9 @@ - # NOTE this is a hack to implement switching between the top-level - # navigation before the proper wireframes exist for all the sections. - # Then we'll want to switch to the simple-nav gem or something else. - %li{:class => "#{'active' unless [:design, :administer].include? controller.top_section}" } + %li{:class => "#{'active' unless [:design, :administer].include? controller.top_section} monitor" } = link_to 'Monitor', pools_path, :id => 'monitor' - %li{:class => "#{'active' if controller.top_section == :administer}" } + %li{:class => "#{'active' if controller.top_section == :administer} administer" } = link_to 'Administer', catalog_entries_path
#content diff --git a/src/public/images/administer-tab-active-left.png b/src/public/images/administer-tab-active-left.png new file mode 100644 index 0000000000000000000000000000000000000000..4ca0c5993ac106b82fed308ec4080060b98d65c8 GIT binary patch literal 887 zcmV--1Bm>IP)<h;3K|Lk000e1NJLTq000XB001ip1^@s6t^jfn00004b3#c}2nYxW zd<bNS00009a7bBm000W>000W>0fLJSS^xk56m&&cbVG7wVRUJ4ZXi@?ZDjyCFETGN zF*QUv#{d8T9CSrkbW?9;ba!ELWdK2BZ(?O2Mrm?ocW-iQb09-gHF34$HUIzu(Md!> zR5*=|l*?|@Koo}0oEe+M^(B*W9HpsZ5+Er_MUyl|6>5Y;D^(O;p$`Ht!!z(MbkhwR zkXRuWNJU~UEW&Xd<pS9_$NoJ2&wnlq{^OVD`J;=Ai+Ai_;Cw!Rb9Hs~p;oKi?t~8y z4~I85Hy@9Wk8Qu-@8d4``uh5PyWRdW7!3M|2x1r9?RH<!W;2iCt+13bjG`#2R4N`K zf^!bG%9u<hQ_lG(L<Ft%Zuscv=&IRlqShJ^5v;Y_;a02lTuK=+#(*&fob&CPlO%Z@ z$8nvpg}cU>?QjqT`=00d007on0D#Rhrqk&N5pT=)IOm(;larIzS(c$O2Ap%i7~7uU z!NI|cdc7WzUH|~b*k;X2sc{&F31bY5F@=nc@ZR3uzVG`F2xN?HF3NB?>>=W3L<B?x zAq0?|wUcMF*`-qI9$;yib8fR6d7huw>-9iuUEJfGgE3|uPSbRfB#9!(Ik&J4aTP{H z48yQfsZ>%*jB~y@!A_@>an8R|A+**&a@HngKA*o;O8qK*37m7_oLj_YxZCYs)@rpX z#RP7g6e;D?BuOM`B+y#B3j4k<;yBKOAV|xWkrOL$p64wg#1BN|&N&cbna)~2PbQP| zD2l!tV~S5xndyH4_j<jTN-2+XUN}KgC@$beqcM?EHpnJx?aJvZGNLGYSglr5(nnXV zb&;q508mQBp6A^&#yG%Yk{M%#3)b3Y*PWf6orhuglOB|9BUu1{`*|=JypmG>rY<9$ z<$@G@Bg?XJnx+jpnO>ktq45#`0C5~Y34%ZwV^)em5{d++lu-}_6(K~$Iag#)r>&HI zJRU#ueg9jrRuRD%Qxro8v2<fJ8eL{tX6YdTG$rM&gza|wR4LUc+hmLZt#y$ktuN7R zHc!JajLSu!olH$dFR;72J4a1ptpy<jl>4LT3q(N5l#&2|mF6kOe*jNhI)s4t3g`d; N002ovPDHLkV1nQoe$xN|
literal 0 HcmV?d00001
diff --git a/src/public/images/administer-tab-active-right.png b/src/public/images/administer-tab-active-right.png new file mode 100644 index 0000000000000000000000000000000000000000..424e063b989eb405cd222fdc9310997d7553ea02 GIT binary patch literal 4910 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
literal 0 HcmV?d00001
diff --git a/src/public/images/administer_nav_bg.png b/src/public/images/administer_nav_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..493dd6528c138ed95872a5514a9342f096474a11 GIT binary patch literal 2008 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 WUxdJ(l=H{UZ!JG4oOgwjaO^*1FH;Wy
literal 0 HcmV?d00001
diff --git a/src/public/images/administer_nav_bg_hover.png b/src/public/images/administer_nav_bg_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..9ebd5d07e10577dce892c8b298f7afb02c6b6064 GIT binary patch literal 496 zcmeAS@N?(olHy`uVBq!ia0vp^IY4a7!3HEfw)D&gQY^(zo*^7SP{WbZ0pxQQctjR6 zFmMZjFyp1Wb$@_@G9|7NCBgY=CFO}lsSJ)O`AMk?Zka`?<@rU~#R|^BriEJ{n*r5{ zfYdn`r6!hS=I1GdWag$aSn3<<8yc#AoTkaZ!06@a;uumf=j|;+FXljz)`!B9+}hh8 z32hSDeS6nj&AXj<x11EZ(-?VhbAV$&;S3eyKmGrkr!b52Jui|^G55V3+hSPrkHv7y zwY=?ePM;+u&RmEpR&BarAi>;RsCo!Ye|*T3d^o|zDj`Rrr}5wpp+qqKgRgmGq5&J* z<Eb1#S)dSav!Q{+{X_#Zo?{0R_JCFKf|NK5F*5^=0_x-8IR;h?rXO2_c#pkWfJ%T` z+73!c^!%UIgk)w}H2;Px7JdAlag*-o|M;_Wm7KoS1+NW_s@=|q+or0RNAnl-t+G<N zscw1p&yyKXUS=_`Ww^UR-*|SJ&!+XOwuiRunxx0%{f~ET_l8M*KnBm-Dg7JxX7iLL x#<EWP!?AYt2B9ApKhDl?Kap+4t?hY_v7l*NTWxWr2{6<dJYD@<);T3K0RRKty($0z
literal 0 HcmV?d00001
diff --git a/src/public/images/administer_nav_content_icon.png b/src/public/images/administer_nav_content_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..78df8abd0e6022e1e7a14fbef0d8105eea593976 GIT binary patch literal 1010 zcmV<O0}cF%P)<h;3K|Lk000e1NJLTq001Qb000^Y1^@s6FtU|<00004b3#c}2nYxW zd<bNS00009a7bBm000XT000XT0n*)m`~Uy|9CSrkbW?9;ba!ELWdK2BZ(?O2Mrm?o zcW-iQb09-gHF34$HUIzs6m&&cbVG7wVRUJ4ZXi@?ZDjyCFEKAMF(>hsDF6TiOi4sR zR7i=vm(Ob(M-<0DyN)F#R-Is+P{)v81R6+8bFxpR@u8Q-w8!QUU2@ewV1fiC_#pBR z6ne`cketkbeCj#^9}-N8d=d&sNP*gzxM=a(VpYl6P7nK*sIFvbS56-c%P#Z2^Vv6V zX5JW_jv2rhV9L{w?|)14<f#V<X+5yZP%vkJbG2ISq2o9&kB*MEwOG5|F4?yIYq?xr z0?tZb<0QdRp-dpYxw-j`>$-3B0CQdUO)i(a0>s4k)S*luQ79Ddd7gJL2q-Ym^A0vP zHogVo{lJESGVwzm6QP*ACoIca3<J~+w!FN2L$v-gl_x<3xiYc0xA(Z!YQ1i?TCWce z4`0Zie(AdIyRblk?eFjZ2As!V6hlLu0Vdn+cBz+Wy<UGF6(}&J)OSGQc(nRKnZQK7 zUjKR2flspS?d@m1qNTO&nQSHypPHJw-#3n@V98|iHhmKQ_y+?&0VfQ@xbQilOw&A% zKYinzuy>h2+_J32QIa@}xvu-pvaChABBr}?D$>4l8s>T4L7`B%Cs8xIp<<a#=KB8) z)D4!&WUd3T0LlcC)oS(0D8iLW<@ZtitJUfgAQ?>KI56!v&fBPhrBdk?@I$Ru+l;E= zIL=#OT6jnRvr)xt+paAvEPM~l&(F`_Z#J7BqG|!N!oxY>Y7~)9r_;=4vyXtUfGfbQ zY&QF71gNXR<3l-)Qwb}glzIx>1};iITmtT_udn|SR?BgmN&sadmErF0?pBDs58Jli z@9gaSv9`AMHP8k=uB@z_RZ870m&;|_w%>=*lktNJl^Ad-olY->{ky<`DImGEwe@3E zjdVJ_B$1ARe;`f*H}m;?E+W({Fl|}ZPf`5y`FswzDI8<qpF44(oKs3YjR186xV*Z$ znhNVHc{wNJ$LTr;P5gwP0p?Pv)PrKNs2Yt%eMqQlz>HGr;V}IhjYhp#EUHv0^+14T zWPDR={jbw`Oh}Uw#!37eNKokaI?4Y69N<r&Bf=MfFM`}SW?B-t1GInxX-)ja;vI(y zA~r5?2|m^2Mjxn;0_NhcoN)n*)1%ZCC@p>+@ofV~0!uF_WboipY0^JR!62SA&8OOa gkWb%Bs@9r+0LulbP0&3zeE<Le07*qoM6N<$f-Y9n8UO$Q
literal 0 HcmV?d00001
diff --git a/src/public/images/administer_nav_environments_icon.png b/src/public/images/administer_nav_environments_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..16c23e1fc3c07f046ff85beb666218a27e3eab87 GIT binary patch literal 722 zcmV;@0xkWCP)<h;3K|Lk000e1NJLTq000yK000{Z1^@s6eBZCw00004b3#c}2nYxW zd<bNS00009a7bBm000XT000XT0n*)m`~Uy|9CSrkbW?9;ba!ELWdK2BZ(?O2Mrm?o zcW-iQb09-gHF34$HUIzs6m&&cbVG7wVRUJ4ZXi@?ZDjyCFEKAMF(>hsDF6ThEJ;K` zR7i>KmcNeLKoG{i{c8gX2w`#sx(cLJ$pa*9Djt9$W!@y!JwaX}k3fIuPEjOM9ZiIV zkV3G?K>>Ft@!qaC1vav510qtoj5N*c%+E9Xt#(ZS(3D#MQS27Sjil;Gst(R(v$+bx z@Kz~x1E2(eoq!?EDJi9H!Z5sDuh&-q91cKiHXEnaYQ2sVYXBYqgz2vy09J$$Zvf!_ z{{9O9L1Ms#we}kTOeT|$)oS%uxm;G2O63CpeE?bl(6H8i2LM9I3jhm_%wBD`TS+N3 zaa_h>Qvl=uoJ`E}>{x@rVAN<d9-GbPb~qfqt=H>HN}20$u~@j%>9m##MF66t!+k-o z*LyF7(5uzzvy@VE&LcudPVr{5$z9hiWq_7v6Rowx7(<m(+!#X{V}+t<t(j6PSDy=v z$K#Rfx=KpP68IsY);f2*a=>=G{faSWD5cSSJ|9v_3lF%pmRM^^HeUGkbkVW(BFlB? z`~IB}LJJ`@=egzcft^n0C1cFYX0xwF>YlRP$O+`o-ksgycsw3Cj-#ZMMfv9glaUjZ z&jtQh`5&n4`~IDj^68YyhxRuC?z{0k?}9OAIOitaan_<JqM6HKpH~8K83e(#{Ywji z;2OXsfD*y(ny&$P-tYI{d7jrgI%~$3%jJ)5xBCgePXKFz-RtE7cow^Z6X!EMId-q( zL+rl^c8@dzAYvFl6R2b869AJ|D)|#2DL-a5<@-O4KlK+V#sK;b-2eap07*qoM6N<$ Eg4$a-y8r+H
literal 0 HcmV?d00001
diff --git a/src/public/images/administer_nav_providers_icon.png b/src/public/images/administer_nav_providers_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..20dd41f9a12512c2c68c0e4f1bccdf7e5184546b GIT binary patch literal 1070 zcmV+}1kwA6P)<h;3K|Lk000e1NJLTq001KZ000{Z1^@s6_V6~D00004b3#c}2nYxW zd<bNS00009a7bBm000XT000XT0n*)m`~Uy|9CSrkbW?9;ba!ELWdK2BZ(?O2Mrm?o zcW-iQb09-gHF34$HUIzs6m&&cbVG7wVRUJ4ZXi@?ZDjyCFEKAMF(>hsDF6Tih)G02 zR7i=nmtANaRTRg6v$J3MurB!3mLMgPHM%JxYTA9#M2plU77=}r79li^wS|J92z`i9 zu*A>@MOuk(MPCF#EDh;GAi)wQA}(PGfyE|Kx+$(Cn~d2k)18m&!`vlnyPIa)**~1O z;m+^=@44rkt5CZXzz3)@6d3>luw^(h?kOR}ePFmh508zF?bmhv2h%h&;tu8W`D@F| z%cp@RAW#OnEle#yid?ukm&<*7CqN|`hA}@qJ^eBe!gbOU7zGFn4-Y?S7{>fgKuWT0 z``?L)iEbdg9Z)SWeqh(?>gtcRfRqDGPEK}7hbkV~PGNjNV=|dMem@{3<@5Ppfr#8# z%`ggXvNi%w7>04{L12UsVrpvYUAf*}?%WGT1sW~Ox~c2>Zx0G0gb>+m_9y9%S}RNl zc+3lkk_^MR1?&cb)nKY+xDWRRc&1P&v<J65RJ~O`8Nq?u7r&PPeq@!kENjzCAPG}i zzaoquXz&I7NBi}!F5^~C6);CeMotzAg@3#vNhA_|<KyE8a5r7ir3PU4pcoZ{VpJSA zF3vyq$?H!6j|0(oJbpNr%Po1CKbB?PoSU0_Q$nfbIiuhvEC6cA|ICZ$j$DnM?uq~# znx-xF_V#|bwzl@CR}QJF+7gS!t}HApd;o+LMe!kRDs|zlkHdlXgBRZUx#P^M&48|H z+M?G$0IjX9UnUZXgFsLz5m6zb)Nr8vz!z^{+5gd@W?)^@w1u9Yo>N`}b#`{1MIP6- z-Bb+++F$sr?>tZh)@NpBGAk=9H@t+2L?W+A7~i%q=7w?OmlNNe$92w5rBX-R+S(3z z2_qE*)QXJ@ptxRGx_0E!$-l4vu?G0l>GZK^H2P^BKtN866=59HE{ykleJZOhW&ksl zO1&SAMlaNZLKap56^f2y+J)cGT|JZ47XJb^XJ=>M>*(mH3kX0alex~;%uExoZ%~Yi z0rOJ+`Lk~f05PB?nM{7{IF6U~?td~(GvD3a{R(b@4T3vkw4AWM*?8&mw~hhN0(*fy zwr$r9q*yF&4h;?U1FgU=<Y*BF9__l^-v{iIln(=Y>jjZcrzhg^_+j8_;1TJHqTn{l zpbQ7MrT{!t2G+n1o*X++Y5fAQ4(LE0Foh6KwIBF#`&AQLV}%!TaFg{mV92n95Drw| oZD|HBe>Hj`!QHP;A>_#UAA8GXy&%m~=l}o!07*qoM6N<$g7a9_wEzGB
literal 0 HcmV?d00001
diff --git a/src/public/images/administer_nav_users_icon.png b/src/public/images/administer_nav_users_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4b33879b365e51f054af4c70fcdc552f104cc066 GIT binary patch literal 552 zcmV+@0@wYCP)<h;3K|Lk000e1NJLTq001BW000#T1^@s6C(Z2Y00004b3#c}2nYxW zd<bNS00009a7bBm000XT000XT0n*)m`~Uy|9CSrkbW?9;ba!ELWdK2BZ(?O2Mrm?o zcW-iQb09-gHF34$HUIzs6m&&cbVG7wVRUJ4ZXi@?ZDjyCFEKAMF(>hsDF6Tgf=NU{ zR7i=vm9b94Fcd}4LzU=)+Kp^v?1GvJvC&WH$Y<~=jEt}`@&ia^>llfpZ0Xi+Wh>KV zr~@Xole9pu6v=shzV}3l9oR#XGD%PRRxWA0kJmooeMu{YH97>qZ6sWh^1lp9B&C6R zQ3IgrnwU?iP9%H`4BdEXW_RB7Sp$0t6fJxJI0}R(<szq3NrQ&aEw%O80sy*!TCyuZ zTc5T7zKVwVRZE{Jz$#E%c;lBEzrxJQozUbH1~9WlrEzU$Gw=Ss2H;@_pD=*an>Suo z04Ky>LlrLS69sTzZ|ar$uI6hVGBdL;u$DfUw;%&D;`@9K<YtyjngCY;0Ncd}z}zWy z4ID=n`04}azy)v;n12Rd34ef9eE^Rp=?3UEG^cEyDr;d3kh`mB=zH(fgm-}faLMim zQ3<;MroaqX2l{%!e*rLZ!L1IH8YRHkg-?M=wIQ?(GY9b7a9>^Lx%CRIT5$jLVYU88 qnwweL1fYKk-vpZd$c&wY2h%5x6!$=@*)N9x0000<MNUMnLSTZ;(ch2&
literal 0 HcmV?d00001
--- src/app/stylesheets/custom.scss | 20 -------------------- src/app/stylesheets/layout.scss | 10 ++++++++-- 2 files changed, 8 insertions(+), 22 deletions(-)
diff --git a/src/app/stylesheets/custom.scss b/src/app/stylesheets/custom.scss index a81a508..9a57a62 100644 --- a/src/app/stylesheets/custom.scss +++ b/src/app/stylesheets/custom.scss @@ -24,26 +24,6 @@ border-radius: 0em 50em 50em 0em; }
-/*fixes scrollbar and footer issues*/ -#primary-container{ - margin-bottom: -40px; -} - -div#content{ - margin-bottom: 58px; -} - -.clearfooter{ - height: 40px; - clear: both; -} - -footer.standard{ - nav.footer{ - padding: 14px 14px 13px 14px; - } -} - .deployable_details .content li { list-style-type: none; } diff --git a/src/app/stylesheets/layout.scss b/src/app/stylesheets/layout.scss index 506726d..6fbd3cb 100644 --- a/src/app/stylesheets/layout.scss +++ b/src/app/stylesheets/layout.scss @@ -248,6 +248,7 @@ strong, em, b, i{ font-family: $font-family-em; } position: relative; min-height: 100%; display: block; + margin-bottom: -40px; }
/* Content */ @@ -269,7 +270,7 @@ body.administer div#content{
div#content{ margin: 0 auto; - margin-bottom: 98px; + margin-bottom: 58px; min-height: 200px; -webkit-border-radius: 7px; -moz-border-radius: 7px; border-radius: 7px; background-color: #FAFAFA; @@ -2179,6 +2180,11 @@ form.generic{ Page Footer -- v.0.0.1 [footer] (footer.scss) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+.clearfooter{ + height: 40px; + clear: both; +} + /* Footer */
footer.standard{ @@ -2209,7 +2215,7 @@ footer.standard{
nav.footer{ display: inline-block; - padding: 14px; + padding: 14px 14px 13px 14px; a{ color: #fff; padding-right: 6px;
--- src/app/views/catalog_entries/edit.haml | 1 + src/app/views/catalog_entries/index.haml | 2 +- src/app/views/catalog_entries/new.haml | 2 +- src/app/views/catalog_entries/show.haml | 2 +- src/app/views/catalogs/edit.haml | 1 + src/app/views/catalogs/index.haml | 2 +- src/app/views/catalogs/new.haml | 2 +- src/app/views/catalogs/show.haml | 2 +- src/app/views/hardware_profiles/edit.haml | 2 +- src/app/views/hardware_profiles/index.haml | 2 +- src/app/views/hardware_profiles/new.haml | 2 +- src/app/views/hardware_profiles/show.haml | 2 +- src/app/views/layouts/_admin_header.haml | 17 ----------------- src/app/views/layouts/_admin_nav.haml | 17 +++++++++++++++++ src/app/views/pool_families/edit.haml | 2 +- src/app/views/pool_families/index.haml | 2 +- src/app/views/pool_families/new.haml | 2 +- src/app/views/pool_families/show.haml | 2 +- src/app/views/provider_accounts/edit.haml | 2 +- src/app/views/provider_accounts/index.haml | 2 +- src/app/views/provider_accounts/new.haml | 2 +- src/app/views/provider_accounts/show.haml | 4 ++-- src/app/views/providers/edit.haml | 2 +- src/app/views/providers/index.haml | 2 +- src/app/views/providers/new.haml | 2 +- src/app/views/providers/show.haml | 2 +- src/app/views/realm_mappings/new.haml | 2 +- src/app/views/realm_mappings/show.haml | 2 +- src/app/views/realms/edit.haml | 2 +- src/app/views/realms/index.haml | 2 +- src/app/views/realms/new.haml | 2 +- src/app/views/realms/show.haml | 2 +- src/app/views/roles/edit.haml | 3 +-- src/app/views/roles/index.haml | 2 +- src/app/views/roles/new.haml | 2 +- src/app/views/roles/show.haml | 2 +- src/app/views/settings/index.haml | 2 +- src/app/views/users/edit.haml | 2 +- src/app/views/users/index.haml | 2 +- src/app/views/users/new.haml | 2 +- src/app/views/users/show.haml | 2 +- 41 files changed, 57 insertions(+), 56 deletions(-) delete mode 100644 src/app/views/layouts/_admin_header.haml create mode 100644 src/app/views/layouts/_admin_nav.haml
diff --git a/src/app/views/catalog_entries/edit.haml b/src/app/views/catalog_entries/edit.haml index f522e35..cc3dcf4 100644 --- a/src/app/views/catalog_entries/edit.haml +++ b/src/app/views/catalog_entries/edit.haml @@ -1,3 +1,4 @@ += render :partial => 'layouts/admin_nav' %header.page-header %h1{:class => controller.controller_name}= @catalog_entry.name #obj_actions.button-container diff --git a/src/app/views/catalog_entries/index.haml b/src/app/views/catalog_entries/index.haml index 55fac46..3fae6b6 100644 --- a/src/app/views/catalog_entries/index.haml +++ b/src/app/views/catalog_entries/index.haml @@ -1,3 +1,3 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' = render :partial => 'section_header' = render :partial => 'list' diff --git a/src/app/views/catalog_entries/new.haml b/src/app/views/catalog_entries/new.haml index b5afb14..034ad1b 100644 --- a/src/app/views/catalog_entries/new.haml +++ b/src/app/views/catalog_entries/new.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' = render :partial => 'section_header'
%section.content-section.provider_accounts diff --git a/src/app/views/catalog_entries/show.haml b/src/app/views/catalog_entries/show.haml index 2281236..0926c47 100644 --- a/src/app/views/catalog_entries/show.haml +++ b/src/app/views/catalog_entries/show.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' %header.page-header %h1{:class => controller.controller_name}= @catalog_entry.name #obj_actions.button-container diff --git a/src/app/views/catalogs/edit.haml b/src/app/views/catalogs/edit.haml index fc43553..e5d60a6 100644 --- a/src/app/views/catalogs/edit.haml +++ b/src/app/views/catalogs/edit.haml @@ -1,3 +1,4 @@ += render :partial => 'layouts/admin_nav' %header.page-header %h1{:class => controller.controller_name}= @catalog.name #obj_actions.button-container diff --git a/src/app/views/catalogs/index.haml b/src/app/views/catalogs/index.haml index 55fac46..3fae6b6 100644 --- a/src/app/views/catalogs/index.haml +++ b/src/app/views/catalogs/index.haml @@ -1,3 +1,3 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' = render :partial => 'section_header' = render :partial => 'list' diff --git a/src/app/views/catalogs/new.haml b/src/app/views/catalogs/new.haml index 4d6cd23..eee2fca 100644 --- a/src/app/views/catalogs/new.haml +++ b/src/app/views/catalogs/new.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' = render :partial => 'section_header'
%section.content-section.provider_accounts diff --git a/src/app/views/catalogs/show.haml b/src/app/views/catalogs/show.haml index fafd962..4fee928 100644 --- a/src/app/views/catalogs/show.haml +++ b/src/app/views/catalogs/show.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' %header.page-header %h1{:class => controller.controller_name}= @catalog.name #obj_actions.button-container diff --git a/src/app/views/hardware_profiles/edit.haml b/src/app/views/hardware_profiles/edit.haml index d70b918..1d638a4 100644 --- a/src/app/views/hardware_profiles/edit.haml +++ b/src/app/views/hardware_profiles/edit.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav'
%header.page-header %h1{:class => controller.controller_name}= @hardware_profile.name.titlecase diff --git a/src/app/views/hardware_profiles/index.haml b/src/app/views/hardware_profiles/index.haml index 55fac46..3fae6b6 100644 --- a/src/app/views/hardware_profiles/index.haml +++ b/src/app/views/hardware_profiles/index.haml @@ -1,3 +1,3 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' = render :partial => 'section_header' = render :partial => 'list' diff --git a/src/app/views/hardware_profiles/new.haml b/src/app/views/hardware_profiles/new.haml index 16ec045..8ccfd63 100644 --- a/src/app/views/hardware_profiles/new.haml +++ b/src/app/views/hardware_profiles/new.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' = render :partial => 'section_header'
%section.content-section.users diff --git a/src/app/views/hardware_profiles/show.haml b/src/app/views/hardware_profiles/show.haml index b9bec40..237df40 100644 --- a/src/app/views/hardware_profiles/show.haml +++ b/src/app/views/hardware_profiles/show.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' %header.page-header %h1{:class => controller.controller_name}= @hardware_profile.name + " (" + (@hardware_profile.provider_id.nil? ? "Front End" : "Provider" ) + ")" #obj_actions.button-container diff --git a/src/app/views/layouts/_admin_header.haml b/src/app/views/layouts/_admin_header.haml deleted file mode 100644 index 262182f..0000000 --- a/src/app/views/layouts/_admin_header.haml +++ /dev/null @@ -1,17 +0,0 @@ -%nav#administer_nav - %ul - %li - - link_to users_path do - %div.users Users & Groups - %li - - link_to users_path do - %div.environments Environments - %li - - link_to users_path, :class => "selected" do - %div.content Content - %li - - link_to providers_path do - %div.providers Cloud Providers - .clear -#admin_page_header - this is admin_page_header diff --git a/src/app/views/layouts/_admin_nav.haml b/src/app/views/layouts/_admin_nav.haml new file mode 100644 index 0000000..f3b42a6 --- /dev/null +++ b/src/app/views/layouts/_admin_nav.haml @@ -0,0 +1,17 @@ +%nav#administer_nav + %ul + %li + - link_to users_path do + %div.users Users & Groups + %li + - link_to users_path do + %div.environments Environments + %li + - link_to users_path, :class => "selected" do + %div.content Content + %li + - link_to providers_path do + %div.providers Cloud Providers + .clear +#admin_page_header + this is admin_page_header, this div is going to go away from this partial diff --git a/src/app/views/pool_families/edit.haml b/src/app/views/pool_families/edit.haml index 73c35b3..7b8046a 100644 --- a/src/app/views/pool_families/edit.haml +++ b/src/app/views/pool_families/edit.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav'
%header.page-header %h1{:class => controller.controller_name}= @pool_family.name diff --git a/src/app/views/pool_families/index.haml b/src/app/views/pool_families/index.haml index 55fac46..3fae6b6 100644 --- a/src/app/views/pool_families/index.haml +++ b/src/app/views/pool_families/index.haml @@ -1,3 +1,3 @@ -= render :partial => 'layouts/admin_header' += 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 c8b27be..c328592 100644 --- a/src/app/views/pool_families/new.haml +++ b/src/app/views/pool_families/new.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' = render :partial => 'section_header'
%section.content-section.pool_family diff --git a/src/app/views/pool_families/show.haml b/src/app/views/pool_families/show.haml index 3e08d45..bdc9936 100644 --- a/src/app/views/pool_families/show.haml +++ b/src/app/views/pool_families/show.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' %header.page-header %h1{:class => controller.controller_name}= @pool_family.name #obj_actions.button-container diff --git a/src/app/views/provider_accounts/edit.haml b/src/app/views/provider_accounts/edit.haml index 370a255..2abd583 100644 --- a/src/app/views/provider_accounts/edit.haml +++ b/src/app/views/provider_accounts/edit.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' %header.page-header %h1{:class => controller.controller_name}= @provider_account.name #obj_actions.button-container diff --git a/src/app/views/provider_accounts/index.haml b/src/app/views/provider_accounts/index.haml index 55fac46..3fae6b6 100644 --- a/src/app/views/provider_accounts/index.haml +++ b/src/app/views/provider_accounts/index.haml @@ -1,3 +1,3 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' = render :partial => 'section_header' = render :partial => 'list' diff --git a/src/app/views/provider_accounts/new.haml b/src/app/views/provider_accounts/new.haml index a5c86ea..5af7126 100644 --- a/src/app/views/provider_accounts/new.haml +++ b/src/app/views/provider_accounts/new.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' = render :partial => 'section_header'
%section.content-section.provider_accounts diff --git a/src/app/views/provider_accounts/show.haml b/src/app/views/provider_accounts/show.haml index c9f05dd..0751c45 100644 --- a/src/app/views/provider_accounts/show.haml +++ b/src/app/views/provider_accounts/show.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' %header.page-header %h1{:class => controller.controller_name}= @account.name #obj_actions.button-container @@ -14,4 +14,4 @@
.content %div#view - = render :partial => 'properties' \ No newline at end of file + = render :partial => 'properties' diff --git a/src/app/views/providers/edit.haml b/src/app/views/providers/edit.haml index 2cef1e2..4ae0c62 100644 --- a/src/app/views/providers/edit.haml +++ b/src/app/views/providers/edit.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav'
%header.page-header %h1{:class => controller.controller_name}= @provider.name diff --git a/src/app/views/providers/index.haml b/src/app/views/providers/index.haml index 55fac46..3fae6b6 100644 --- a/src/app/views/providers/index.haml +++ b/src/app/views/providers/index.haml @@ -1,3 +1,3 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' = render :partial => 'section_header' = render :partial => 'list' diff --git a/src/app/views/providers/new.haml b/src/app/views/providers/new.haml index 880513b..3862f40 100644 --- a/src/app/views/providers/new.haml +++ b/src/app/views/providers/new.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' = render :partial => 'section_header'
%section.content-section.users diff --git a/src/app/views/providers/show.haml b/src/app/views/providers/show.haml index 4ebd795..10ba248 100644 --- a/src/app/views/providers/show.haml +++ b/src/app/views/providers/show.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' %header.page-header %h1{:class => controller.controller_name}= @provider.name #obj_actions.button-container diff --git a/src/app/views/realm_mappings/new.haml b/src/app/views/realm_mappings/new.haml index 9e2772b..a831230 100644 --- a/src/app/views/realm_mappings/new.haml +++ b/src/app/views/realm_mappings/new.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' %div#view
= error_messages_for @realm_target diff --git a/src/app/views/realm_mappings/show.haml b/src/app/views/realm_mappings/show.haml index 6fd58e3..9956efb 100644 --- a/src/app/views/realm_mappings/show.haml +++ b/src/app/views/realm_mappings/show.haml @@ -1 +1 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' diff --git a/src/app/views/realms/edit.haml b/src/app/views/realms/edit.haml index 3b03a2c..064164c 100644 --- a/src/app/views/realms/edit.haml +++ b/src/app/views/realms/edit.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav'
%header.page-header %h1{:class => controller.controller_name}= @realm.name diff --git a/src/app/views/realms/index.haml b/src/app/views/realms/index.haml index 55fac46..3fae6b6 100644 --- a/src/app/views/realms/index.haml +++ b/src/app/views/realms/index.haml @@ -1,3 +1,3 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' = render :partial => 'section_header' = render :partial => 'list' diff --git a/src/app/views/realms/new.haml b/src/app/views/realms/new.haml index 5462f1b..0a7a394 100644 --- a/src/app/views/realms/new.haml +++ b/src/app/views/realms/new.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' = render :partial => 'section_header'
%section.content-section.users diff --git a/src/app/views/realms/show.haml b/src/app/views/realms/show.haml index 2368ee0..c70cb5f 100644 --- a/src/app/views/realms/show.haml +++ b/src/app/views/realms/show.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' %header.page-header %h1{:class => controller.controller_name}= @realm.name #obj_actions.button-container diff --git a/src/app/views/roles/edit.haml b/src/app/views/roles/edit.haml index f66e49c..d685769 100644 --- a/src/app/views/roles/edit.haml +++ b/src/app/views/roles/edit.haml @@ -1,5 +1,4 @@ -= render :partial => 'layouts/admin_header' - += render :partial => 'layouts/admin_nav' %header.page-header %h1{:class => controller.controller_name}= @role.name.titlecase #obj_actions.button-container diff --git a/src/app/views/roles/index.haml b/src/app/views/roles/index.haml index 55fac46..3fae6b6 100644 --- a/src/app/views/roles/index.haml +++ b/src/app/views/roles/index.haml @@ -1,3 +1,3 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' = render :partial => 'section_header' = render :partial => 'list' diff --git a/src/app/views/roles/new.haml b/src/app/views/roles/new.haml index e0ac48e..4d55105 100644 --- a/src/app/views/roles/new.haml +++ b/src/app/views/roles/new.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' = render :partial => 'section_header' %section.content-section.users %header diff --git a/src/app/views/roles/show.haml b/src/app/views/roles/show.haml index a7804e3..d54cf2e 100644 --- a/src/app/views/roles/show.haml +++ b/src/app/views/roles/show.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' %header.page-header %h1{:class => controller.controller_name}= @role.name #obj_actions.button-container diff --git a/src/app/views/settings/index.haml b/src/app/views/settings/index.haml index fa0be6f..0ddd839 100644 --- a/src/app/views/settings/index.haml +++ b/src/app/views/settings/index.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' = render :partial => 'section_header'
%section.content-section.settings diff --git a/src/app/views/users/edit.haml b/src/app/views/users/edit.haml index e4d6686..ee0a0a1 100644 --- a/src/app/views/users/edit.haml +++ b/src/app/views/users/edit.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav'
%header.page-header %h1{:class => controller.controller_name}= @user.name diff --git a/src/app/views/users/index.haml b/src/app/views/users/index.haml index 55fac46..3fae6b6 100644 --- a/src/app/views/users/index.haml +++ b/src/app/views/users/index.haml @@ -1,3 +1,3 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' = render :partial => 'section_header' = render :partial => 'list' diff --git a/src/app/views/users/new.haml b/src/app/views/users/new.haml index 326958c..ca26ce1 100644 --- a/src/app/views/users/new.haml +++ b/src/app/views/users/new.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' = render :partial => 'section_header'
%section.content-section.users diff --git a/src/app/views/users/show.haml b/src/app/views/users/show.haml index 1632a6d..381d737 100644 --- a/src/app/views/users/show.haml +++ b/src/app/views/users/show.haml @@ -1,4 +1,4 @@ -= render :partial => 'layouts/admin_header' += render :partial => 'layouts/admin_nav' %header.page-header %h1{:class => controller.controller_name}= @user.name #obj_actions.button-container
--- src/app/stylesheets/layout.scss | 59 ++++++++++++++++--------------- src/app/views/layouts/_admin_nav.haml | 8 ++-- src/app/views/layouts/application.haml | 11 +----- src/config/locales/en.yml | 4 +- src/config/navigation.rb | 10 ++---- 5 files changed, 41 insertions(+), 51 deletions(-)
diff --git a/src/app/stylesheets/layout.scss b/src/app/stylesheets/layout.scss index 6fbd3cb..0a8a22a 100644 --- a/src/app/stylesheets/layout.scss +++ b/src/app/stylesheets/layout.scss @@ -966,6 +966,30 @@ nav#primary { height: 34px; margin-right: 6px; z-index: 1; + &.selected{ + z-index: 1000; + height: 43px; + a{ + padding: 12px 20px 12px 20px; + font-size: 16px; + color: #666; + } + } + &.selected.monitor{ + margin-top: -5px; + background: url('../../images/tab-active-right.png') no-repeat right top; + a{ + background:url('../../images/tab-active-left.png') no-repeat left top; + } + } + &.selected.administer{ + margin-top: -6px; + background: url('../../images/administer-tab-active-right.png') no-repeat right top; + a{ + background:url('../../images/administer-tab-active-left.png') no-repeat left top; + } + } + a{ display: block; background:url('../../images/tab-inactive-left.png') no-repeat left top; @@ -981,29 +1005,6 @@ nav#primary { color: #fff; } } - li.active{ - z-index: 1000; - height: 43px; - a{ - padding: 12px 20px 12px 20px; - font-size: 16px; - color: #666; - } - } - li.active.monitor{ - margin-top: -5px; - background: url('../../images/tab-active-right.png') no-repeat right top; - a{ - background:url('../../images/tab-active-left.png') no-repeat left top; - } - } - li.active.administer{ - margin-top: -6px; - background: url('../../images/administer-tab-active-right.png') no-repeat right top; - a{ - background:url('../../images/administer-tab-active-left.png') no-repeat left top; - } - } li + li{ margin-right: 6px; } @@ -1035,6 +1036,12 @@ nav#administer_nav { text-decoration: none; display: block; color: black; + &:hover{ + background: transparent url(../../images/administer_nav_bg_hover.png) center bottom no-repeat; + } + &.selected{ + background: transparent url(../../images/administer_nav_bg_hover.png) center bottom no-repeat; + }
div{padding: 45px 10px 12px 10px;} div.users{background: transparent url(../../images/administer_nav_users_icon.png) center 16px no-repeat;} @@ -1042,12 +1049,6 @@ nav#administer_nav { div.content{background: transparent url(../../images/administer_nav_content_icon.png) center 13px no-repeat;} div.providers{background: transparent url(../../images/administer_nav_providers_icon.png) center 13px no-repeat;} } - a:hover{ - background: transparent url(../../images/administer_nav_bg_hover.png) center bottom no-repeat; - } - a.selected{ - background: transparent url(../../images/administer_nav_bg_hover.png) center bottom no-repeat; - } } }
diff --git a/src/app/views/layouts/_admin_nav.haml b/src/app/views/layouts/_admin_nav.haml index f3b42a6..6c60de9 100644 --- a/src/app/views/layouts/_admin_nav.haml +++ b/src/app/views/layouts/_admin_nav.haml @@ -1,16 +1,16 @@ %nav#administer_nav %ul %li - - link_to users_path do + = link_to users_path do %div.users Users & Groups %li - - link_to users_path do + = link_to users_path do %div.environments Environments %li - - link_to users_path, :class => "selected" do + = link_to users_path, :class => "selected" do %div.content Content %li - - link_to providers_path do + = link_to providers_path do %div.providers Cloud Providers .clear #admin_page_header diff --git a/src/app/views/layouts/application.haml b/src/app/views/layouts/application.haml index f2391f4..7210353 100644 --- a/src/app/views/layouts/application.haml +++ b/src/app/views/layouts/application.haml @@ -37,7 +37,7 @@ = javascript_include_tag "rails.js" = csrf_meta_tag = yield :scripts - %body{:class => "#{controller.top_section == :administer ? 'administer' : 'monitor'}" } + %body{:class => "#{(["pools" ,"deployments", "instances"].include? controller_name) ? 'monitor' : 'administer'}" } #primary-container
%header#masthead @@ -46,14 +46,7 @@ = render :partial => '/layouts/new_notification' unless flash.empty?
%nav#primary - %ul.container - - # NOTE this is a hack to implement switching between the top-level - - # navigation before the proper wireframes exist for all the sections. - - # Then we'll want to switch to the simple-nav gem or something else. - %li{:class => "#{'active' unless [:design, :administer].include? controller.top_section} monitor" } - = link_to 'Monitor', pools_path, :id => 'monitor' - %li{:class => "#{'active' if controller.top_section == :administer} administer" } - = link_to 'Administer', catalog_entries_path + =render_navigation :level => 1
#content -# works with any 960 container (.container_16 or .container_24) diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml index 7ae9e32..35d9a93 100644 --- a/src/config/locales/en.yml +++ b/src/config/locales/en.yml @@ -17,9 +17,9 @@ en: login: Log in logout: Log out operation: Operate - monitor: Dashboard + monitor: Monitor browse_objects: Browse Objecs - administration: Administer + administer: Administer system_settings: System Settings manage_providers: Manage Providers provider_summary: Provider Summary diff --git a/src/config/navigation.rb b/src/config/navigation.rb index 2f66d54..3aa7220 100644 --- a/src/config/navigation.rb +++ b/src/config/navigation.rb @@ -1,12 +1,9 @@ SimpleNavigation::Configuration.run do |navigation| navigation.autogenerate_item_ids = false navigation.items do |first_level| - first_level.item :resource_management, t(:resource_management), pools_path, :highlights_on => /^/$/ do |second_level| - second_level.item :pools, t('pools.index.pools'), pools_path - second_level.item :deployments, t('deployments.deployments'),deployments_path, :highlights_on => /^/$|/deployments/ - second_level.item :instances, t("instances.instances"), instances_path - end - first_level.item :administration, t(:administration), users_path, :highlights_on => //admin/ do |second_level| + first_level.dom_class = 'container' + first_level.item :monitor, t(:monitor), pools_path, :class => 'monitor', :highlights_on => lambda { ["pools" ,"deployments", "instances"].include? controller_name } + first_level.item :administer, t(:administer), users_path, :class => 'administer', :highlights_on => //admin/ do |second_level| second_level.item :users, t('users.users'), users_path, :highlights_on => //users/ second_level.item :roles, t('roles.roles'), roles_path, :highlights_on => //roles/ second_level.item :providers, t('providers.providers'), providers_path, :highlights_on => //providers/ @@ -18,6 +15,5 @@ SimpleNavigation::Configuration.run do |navigation| second_level.item :catalog_entries, t('catalog_entries.index.catalog_entries'), catalog_entries_path, :highlights_on => //catalog_entries/ second_level.item :settings, t('settings.settings'), settings_path, :highlights_on => //settings/ end - first_level.item :dashboard, t(:dashboard), '#' end end
--- src/app/controllers/application_controller.rb | 2 -- src/app/controllers/catalog_entries_controller.rb | 4 ---- src/app/controllers/catalogs_controller.rb | 4 ---- .../controllers/hardware_profiles_controller.rb | 4 ---- src/app/controllers/pool_families_controller.rb | 4 ---- .../controllers/provider_accounts_controller.rb | 4 ---- src/app/controllers/providers_controller.rb | 4 ---- src/app/controllers/realm_mappings_controller.rb | 4 ---- src/app/controllers/realms_controller.rb | 4 ---- src/app/controllers/roles_controller.rb | 4 ---- src/app/controllers/settings_controller.rb | 4 ---- src/app/controllers/users_controller.rb | 4 ---- 12 files changed, 0 insertions(+), 46 deletions(-)
diff --git a/src/app/controllers/application_controller.rb b/src/app/controllers/application_controller.rb index 77b694d..f093849 100644 --- a/src/app/controllers/application_controller.rb +++ b/src/app/controllers/application_controller.rb @@ -28,8 +28,6 @@ class ApplicationController < ActionController::Base helper_method :current_user_session, :current_user, :filter_view? before_filter :read_breadcrumbs
- def top_section; end - # General error handlers, must be in order from least specific # to most specific rescue_from Exception, :with => :handle_general_error diff --git a/src/app/controllers/catalog_entries_controller.rb b/src/app/controllers/catalog_entries_controller.rb index 4432691..fb4f53a 100644 --- a/src/app/controllers/catalog_entries_controller.rb +++ b/src/app/controllers/catalog_entries_controller.rb @@ -1,10 +1,6 @@ class CatalogEntriesController < ApplicationController before_filter :require_user
- def top_section - :administer - end - def index clear_breadcrumbs save_breadcrumb(catalog_entries_path(:viewstate => @viewstate ? @viewstate.id : nil)) diff --git a/src/app/controllers/catalogs_controller.rb b/src/app/controllers/catalogs_controller.rb index e6c2e44..ccde912 100644 --- a/src/app/controllers/catalogs_controller.rb +++ b/src/app/controllers/catalogs_controller.rb @@ -1,10 +1,6 @@ class CatalogsController < ApplicationController before_filter :require_user
- def top_section - :administer - end - def index clear_breadcrumbs @catalogs = Catalog.list_for_user(current_user, Privilege::VIEW) diff --git a/src/app/controllers/hardware_profiles_controller.rb b/src/app/controllers/hardware_profiles_controller.rb index 5f4f9d2..f93d617 100644 --- a/src/app/controllers/hardware_profiles_controller.rb +++ b/src/app/controllers/hardware_profiles_controller.rb @@ -6,10 +6,6 @@ class HardwareProfilesController < ApplicationController before_filter :setup_new_hardware_profile, :only => [:new] before_filter :setup_hardware_profile, :only => [:new, :create, :edit, :update]
- def top_section - :administer - end - def index clear_breadcrumbs save_breadcrumb(hardware_profiles_path) diff --git a/src/app/controllers/pool_families_controller.rb b/src/app/controllers/pool_families_controller.rb index fd87caf..8af128a 100644 --- a/src/app/controllers/pool_families_controller.rb +++ b/src/app/controllers/pool_families_controller.rb @@ -6,10 +6,6 @@ class PoolFamiliesController < ApplicationController before_filter :load_pool_families, :only =>[:show] before_filter :load_tab_captions_and_details_tab, :only => [:show]
- def top_section - :administer - end - def index clear_breadcrumbs save_breadcrumb(pool_families_path) diff --git a/src/app/controllers/provider_accounts_controller.rb b/src/app/controllers/provider_accounts_controller.rb index d3789f8..b1d7f0a 100644 --- a/src/app/controllers/provider_accounts_controller.rb +++ b/src/app/controllers/provider_accounts_controller.rb @@ -3,10 +3,6 @@ class ProviderAccountsController < ApplicationController before_filter :load_accounts, :only => [:index,:show] before_filter :set_view_vars, :only => [:index,:show]
- def top_section - :administer - end - def index clear_breadcrumbs save_breadcrumb(provider_accounts_path) diff --git a/src/app/controllers/providers_controller.rb b/src/app/controllers/providers_controller.rb index 2971e21..3b8f7ea 100644 --- a/src/app/controllers/providers_controller.rb +++ b/src/app/controllers/providers_controller.rb @@ -2,10 +2,6 @@ class ProvidersController < ApplicationController before_filter :require_user before_filter :set_view_envs, :only => [:show, :index]
- def top_section - :administer - end - def index clear_breadcrumbs save_breadcrumb(providers_path) diff --git a/src/app/controllers/realm_mappings_controller.rb b/src/app/controllers/realm_mappings_controller.rb index 18ddce2..0af86d0 100644 --- a/src/app/controllers/realm_mappings_controller.rb +++ b/src/app/controllers/realm_mappings_controller.rb @@ -1,10 +1,6 @@ class RealmMappingsController < ApplicationController before_filter :require_user
- def top_section - :administer - end - def new require_privilege(Privilege::CREATE, Realm) @realm_target = RealmBackendTarget.new(:frontend_realm_id => params[:frontend_realm_id], :realm_or_provider_type => params[:realm_or_provider_type]) diff --git a/src/app/controllers/realms_controller.rb b/src/app/controllers/realms_controller.rb index c042d8f..19bd2a9 100644 --- a/src/app/controllers/realms_controller.rb +++ b/src/app/controllers/realms_controller.rb @@ -2,10 +2,6 @@ class RealmsController < ApplicationController before_filter :require_user before_filter :load_realms, :only =>[:index, :show]
- def top_section - :administer - end - def index clear_breadcrumbs save_breadcrumb(realms_path) diff --git a/src/app/controllers/roles_controller.rb b/src/app/controllers/roles_controller.rb index 920a690..63257dc 100644 --- a/src/app/controllers/roles_controller.rb +++ b/src/app/controllers/roles_controller.rb @@ -3,10 +3,6 @@ class RolesController < ApplicationController before_filter :load_roles, :only => [:show] before_filter :load_params_and_headers, :only => [:index]
- def top_section - :administer - end - def index clear_breadcrumbs save_breadcrumb(roles_path) diff --git a/src/app/controllers/settings_controller.rb b/src/app/controllers/settings_controller.rb index d245713..487d316 100644 --- a/src/app/controllers/settings_controller.rb +++ b/src/app/controllers/settings_controller.rb @@ -6,10 +6,6 @@ class SettingsController < ApplicationController save_breadcrumb(settings_path(:viewstate => viewstate_id)) end
- def top_section - :administer - end - # Settings MetaData Keys SELF_SERVICE_DEFAULT_QUOTA = "self_service_default_quota" KEYS = [SELF_SERVICE_DEFAULT_QUOTA] diff --git a/src/app/controllers/users_controller.rb b/src/app/controllers/users_controller.rb index bdc24d0..3fc836a 100644 --- a/src/app/controllers/users_controller.rb +++ b/src/app/controllers/users_controller.rb @@ -2,10 +2,6 @@ class UsersController < ApplicationController before_filter :require_user, :except => [:new, :create] before_filter :load_users, :only => [:show]
- def top_section - :administer - end - def index require_privilege(Privilege::VIEW, User) clear_breadcrumbs
aeolus-devel@lists.fedorahosted.org