From 8bf86de9a507136c2a81d5503a0bd64f86efeca3 Mon Sep 17 00:00:00 2001 From: Marius BALTEANU Date: Sat, 5 Jan 2019 08:47:39 +0000 Subject: [PATCH] move user accounts menu links under a dropdown --- app/helpers/application_helper.rb | 13 +++++++++++ app/views/layouts/base.html.erb | 23 ++++++++++++------ public/images/arrow_down.png | Bin 257 -> 572 bytes public/images/arrow_down_white.png | Bin 0 -> 575 bytes public/images/user_logged.png | Bin 0 -> 4619 bytes public/stylesheets/application.css | 36 +++++++++++++++++++++++++---- public/stylesheets/responsive.css | 9 +++----- 7 files changed, 63 insertions(+), 18 deletions(-) create mode 100644 public/images/arrow_down_white.png create mode 100644 public/images/user_logged.png diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 4da08c2ca..eb99f4df0 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -530,6 +530,19 @@ module ApplicationHelper content_tag('div', trigger + content, :id => "project-jump", :class => "drdn") end + # Returns user gravatar if Gravatar is enabled + # Otherwise, returns user generic image for logged users + # Or anonymous image for non logged users + def render_menu_user_avatar + if Setting.gravatar_enabled? + link_to(avatar(User.current, :size => '20'), user_path(User.current)) + elsif User.current.logged? + image_tag 'user_logged.png', GravatarHelper::DEFAULT_OPTIONS.merge({:size => '20'}) + else + image_tag 'anonymous.png', GravatarHelper::DEFAULT_OPTIONS.merge({:size => '20'}) + end + end + def project_tree_options_for_select(projects, options = {}) s = ''.html_safe if blank_text = options[:include_blank] diff --git a/app/views/layouts/base.html.erb b/app/views/layouts/base.html.erb index 7572dff5d..883f93177 100644 --- a/app/views/layouts/base.html.erb +++ b/app/views/layouts/base.html.erb @@ -35,10 +35,8 @@ <% end %> <% if User.current.logged? %> -
- <% if Setting.gravatar_enabled? %> - <%= link_to(avatar(User.current, :size => "80"), user_path(User.current)) %> - <% end %> +
+ <%= render_menu_user_avatar %> <%= link_to_user(User.current, :format => :username) %>
<% end %> @@ -61,10 +59,21 @@
-
- <%= render_menu :account_menu -%> + - <%= content_tag('div', "#{l(:label_logged_as)} #{link_to_user(User.current, :format => :username)}".html_safe, :id => 'loggedas') if User.current.logged? %> <%= render_menu :top_menu if User.current.logged? || !Setting.login_required? -%>
diff --git a/public/images/arrow_down.png b/public/images/arrow_down.png index fbd0e05d13ac411b7d2ef09ca43e47b3f4ec082e..2e02ab8687d5e641b7a674fd97ae49f1799b2b2e 100644 GIT binary patch literal 572 zcmeAS@N?(olHy`uVBq!ia0vp^oFFW~1|&By-UI(3 z)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!u!z$3Dlfq_2}gc(=ZFV6%T z7MU3mQ4-h?X&sHg;q@=(~U%$M( zT(8_%FTW^V-_X+1Qs2Nx-^fT8s6w~6GOr}DLN~8i8Da>`9GBGM<@Q_vqdhju8jNCpt_;;Zk*u7tBloF^)(#~ l+KFNZw#yzejQSvIz_{pTxGKX0Q&CVfdAj004R=004l4008;_ z004mL004C`008P>0026e000+nl3&F}0001oNkl+aNhlpbIv&<#uQUb08ha+;Jo{|UiK;w5fK5Xs;b@t?%~s`?KZdx9(p>fRH<^F fI}YFaN1p)z1aQhayKCsC00000NkvXXu0mjfd|_Gw diff --git a/public/images/arrow_down_white.png b/public/images/arrow_down_white.png new file mode 100644 index 0000000000000000000000000000000000000000..434200820c274576abca6729dc7eacfeaf7cc8e8 GIT binary patch literal 575 zcmeAS@N?(olHy`uVBq!ia0vp^oFFW~1|&By-U!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a5n0T@z@G@hj4SMy zXEHD_MrMXYltlRYSS9D@>LsS+C#C9DVstT4fPE4;bsH1+JHo@{EISEfi{E8 zw==W>t3(ll+GC>+vK+}V5TAlYfnK%aveAbJn;n^ABE8{*jsBUPz8z*@2Dr2=( oeN6|0cB0sU?XrgqqdtflFfMu-uF5dMR1_3Vp00i_>zopr0F?Es(EtDd literal 0 HcmV?d00001 diff --git a/public/images/user_logged.png b/public/images/user_logged.png new file mode 100644 index 0000000000000000000000000000000000000000..650a0cbfd627b580fd38da07239fcdaea15487ac GIT binary patch literal 4619 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 literal 0 HcmV?d00001 diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index d5f1762e3..44791f4a7 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -15,19 +15,44 @@ div[id^="wrapper"] { min-height: inherit; } #wrapper {background: white;overflow: hidden;} #wrapper3 { display: flex; flex-direction: column; } -#top-menu {background: #3E5B76; color: #fff; height:1.8em; font-size: 0.8em; padding: 2px 2px 0px 6px;} +#top-menu {background: #3E5B76; color: #fff; height:2.5em; font-size: 0.8em; padding: 0 8px 0 6px;} #top-menu ul {margin: 0; padding: 0;} -#top-menu li { +#top-menu a {font-weight: bold; line-height: 2.5em;} +#top-menu > ul li { float:left; list-style-type:none; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px; white-space:nowrap; } -#top-menu a {color: #fff; margin-right: 8px; font-weight: bold;} -#top-menu #loggedas { float: right; margin-right: 0.5em; color: #fff; } +#top-menu > ul a { color: #fff; margin-right: 8px;} +#top-menu #header-user {float: right; color: #fff; position: relative; height: 100%;} +#top-menu #loggedas {border-bottom: 1px solid #ccc;} +#top-menu #loggedas span {display: block;} -#account {float:right;} +#top-menu .header-item.dropdown a {text-decoration: none;} +#top-menu .header-item.dropdown:hover .menu-dropdown {display: block;} + +#top-menu .menu-dropdown { + display: none; + width: 100%; + left: auto; + right: 0; + margin-top: -1px; +} +#top-menu .menu-dropdown li { + list-style-type: none; + padding: 4px 8px; + white-space: nowrap; +} +#top-menu .menu-dropdown li:hover {background-color: #3E5B76; border-radius: 3px;} +#top-menu .menu-dropdown li:hover * {color: #fff;} +#top-menu .menu-dropdown a { + color: #555; + width: 100%; + display: block; + margin-right: 0; +} #header {min-height:5.3em;margin:0;background-color:#628DB6;color:#f8f8f8; padding: 4px 8px 20px 6px; position:relative;} #header a {color:#f8f8f8;} @@ -1477,6 +1502,7 @@ td.gantt_selected_column .gantt_hdr,.gantt_selected_column_container { .icon-zoom-out { background-image: url(../images/zoom_out.png); } .icon-magnifier { background-image: url(../images/magnifier.png); } .icon-passwd { background-image: url(../images/textfield_key.png); } +.icon-arrow-down { background-image: url(../images/arrow_down_white.png); } .icon-arrow-right, .icon-test, .icon-sticky { background-image: url(../images/bullet_go.png); } .icon-email { background-image: url(../images/email.png); } .icon-email-disabled { background-image: url(../images/email_disabled.png); } diff --git a/public/stylesheets/responsive.css b/public/stylesheets/responsive.css index aa5502ee6..86480f9ef 100644 --- a/public/stylesheets/responsive.css +++ b/public/stylesheets/responsive.css @@ -116,6 +116,9 @@ display: none; } + .js-profile-menu .current-user { + display: none; + } /* the quick search within header holding search form and #project_quick_jump_box box*/ #header #quick-search { float: none; @@ -530,12 +533,6 @@ flex-grow: 1; } - /* user link when no avatar is present */ - .flyout-menu__avatar--no-avatar a.user { - line-height: 40px; - padding-left: 8px; - } - .flyout-is-active body { overflow: hidden; /* for body not to have scrollbars when left flyout menu is active */ } -- 2.22.0