]> source.dussan.org Git - redmine.git/commitdiff
Replaces icons from projects listing and project overview tab with SVG icons (#23980).
authorMarius Balteanu <marius.balteanu@zitec.com>
Thu, 5 Sep 2024 20:06:04 +0000 (20:06 +0000)
committerMarius Balteanu <marius.balteanu@zitec.com>
Thu, 5 Sep 2024 20:06:04 +0000 (20:06 +0000)
git-svn-id: https://svn.redmine.org/redmine/trunk@23017 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/assets/stylesheets/application.css
app/helpers/icons_helper.rb
app/helpers/projects_helper.rb
app/helpers/projects_queries_helper.rb
app/views/projects/_members_box.html.erb
app/views/projects/show.html.erb

index 389cca72c98399ad96d2ebffda4943b053a885f9..77a29a55fdcf8d749bc8f323c7635c0ea55d254d 100644 (file)
@@ -778,12 +778,15 @@ ul.projects div.description ul li {list-style-type:initial;}
 #projects-index ul.projects div.description {
   padding-top: 0.5em;
 }
-#projects-index a.icon-user, a.icon-bookmarked-project {padding-left:0; padding-right:20px; background-position:98% 50%;}
 #projects-index a.icon-user.icon-bookmarked-project {
-  background-image: url(/tag_blue.png), url(/user.png);
-  background-position: bottom 0px right 0px, bottom 0px right 20px;
-  padding-right: 40px;
-  padding-top: 4px;
+  background-image: none;
+  padding-left: 0;
+}
+#projects-index a.project ~ svg, table.projects tr.project td.name svg {
+  margin-left: 4px;
+}
+#projects-index a.project ~ svg {
+  fill: #169;
 }
 
 #notified-projects>ul, #tracker_project_ids>ul, #custom_field_project_ids>ul {max-height:250px; overflow-y:auto;}
@@ -1621,7 +1624,7 @@ td.gantt_selected_column .gantt_hdr,.gantt_selected_column_container {
 }
 
 /***** SVG Icons *****/
-.icon, .icon-only {
+a.icon, a.icon-only {
   display: inline-flex;
 }
 
@@ -1695,11 +1698,11 @@ span.icon-label {
 .open .icon-folder:not(:has(svg)) { background-image: url(/folder_open.png); }
 .icon-package { background-image: url(/package.png); }
 .icon-user:not(:has(svg)) { background-image: url(/user.png); }
-.icon-project, .icon-projects { background-image: url(/projects.png); }
+.icon-project, .icon-projects:not(:has(svg)) { background-image: url(/projects.png); }
 .icon-help:not(:has(svg)) { background-image: url(/help.png); }
 .icon-attachment:not(:has(svg)) { background-image: url(/attachment.png); }
 .icon-history:not(:has(svg)) { background-image: url(/history.png); }
-.icon-time-entry, .icon-time  { background-image: url(/time.png); }
+.icon-time-entry, .icon-time:not(:has(svg))  { background-image: url(/time.png); }
 .icon-time-add:not(:has(svg)) { background-image: url(/time_add.png); }
 .icon-stats:not(:has(svg)) { background-image: url(/stats.png); }
 .icon-warning  { background-image: url(/warning.png); }
@@ -1710,11 +1713,11 @@ span.icon-label {
 .icon-lock:not(:has(svg)), .icon-locked:not(:has(svg))  { background-image: url(/locked.png); }
 .icon-unlock:not(:has(svg)) { background-image: url(/unlock.png); }
 .icon-checked:not(:has(svg)) { background-image: url(/toggle_check.png); }
-.icon-report  { background-image: url(/report.png); }
+.icon-report { background-image: url(/report.png); }
 .icon-comment:not(:has(svg)), .icon-comments  { background-image: url(/comment.png); }
 .icon-summary:not(:has(svg)) { background-image: url(/lightning.png); }
 .icon-server-authentication { background-image: url(/server_key.png); }
-.icon-issue { background-image: url(/ticket.png); }
+.icon-issue:not(:has(svg)) { background-image: url(/ticket.png); }
 .icon-zoom-in:not(:has(svg)) { background-image: url(/zoom_in.png); }
 .icon-zoom-out:not(:has(svg)) { background-image: url(/zoom_out.png); }
 .icon-magnifier { background-image: url(/magnifier.png); }
@@ -1730,7 +1733,7 @@ span.icon-label {
 .icon-close:not(:has(svg)) { background-image: url(/close.png); }
 .icon-close:hover:not(:has(svg)) { background-image: url(/close_hl.png); }
 .icon-settings:not(:has(svg)) { background-image: url(/changeset.png); }
-.icon-group.icon-groupnonmember, .icon-groupanonymous { background-image: url(/group.png); }
+.icon-group:not(:has(svg)),.icon-groupnonmember, .icon-groupanonymous { background-image: url(/group.png); }
 .icon-roles { background-image: url(/database_key.png); }
 .icon-issue-edit { background-image: url(/ticket_edit.png); }
 .icon-workflows { background-image: url(/ticket_go.png); }
@@ -1744,7 +1747,6 @@ span.icon-label {
 .icon-reply { background-image: url(/comments.png); }
 .icon-wiki-page { background-image: url(/wiki_edit.png); }
 .icon-document { background-image: url(/document.png); }
-.icon-project { background-image: url(/projects.png); }
 .icon-add-bullet { background-image: url(/bullet_add.png); }
 .icon-shared { background-image: url(/link.png); }
 .icon-actions:not(:has(svg)) { background-image: url(/3_bullets.png); }
index 26a605fadd4673fe72aff763780e2db9a5a5749c..57d30400fb8b188b54d188e28c1739b2904ce925 100644 (file)
@@ -22,7 +22,9 @@ module IconsHelper
   DEFAULT_SPRITE = "icons"
 
   def icon_with_label(icon_name, label_text, icon_only: false)
-    sprite_icon(icon_name) + content_tag(:span, label_text, class: "icon-label")
+    label_classes = ["icon-label"]
+    label_classes << "hidden" if icon_only
+    sprite_icon(icon_name) + content_tag(:span, label_text, class: label_classes.join(' '))
   end
 
   def icon_for_file(entry, name)
index bb05a3ef13196f855641a44409de211e169732e1..070b0231aba31b9c94bdef16f2793b2bec7b12df 100644 (file)
@@ -78,7 +78,10 @@ module ProjectsHelper
       classes = project.css_classes.split
       classes += %w(icon icon-user my-project) if User.current.member_of?(project)
       classes += %w(icon icon-bookmarked-project) if bookmarked_project_ids.include?(project.id)
+
       s = link_to_project(project, {}, :class => classes.uniq.join(' '))
+      s << icon_with_label('user', l(:label_my_projects), icon_only: true) if User.current.member_of?(project)
+      s << icon_with_label('bookmarked', l(:label_my_bookmarks), icon_only: true) if bookmarked_project_ids.include?(project.id)
       if project.description.present?
         s << content_tag('div', textilizable(project.short_description, :project => project), :class => 'wiki description')
       end
index 66e47d551ebf338d444e8bb72c243d3356c2058d..7c978f350cc35e84e9dddeed9ba31a9c2bf06c4b 100644 (file)
@@ -24,8 +24,8 @@ module ProjectsQueriesHelper
       case column.name
       when :name
         link_to_project(item) +
-          (tag.span(class: 'icon icon-user my-project', title: l(:label_my_projects)) if User.current.member_of?(item)) +
-          (tag.span(class: 'icon icon-bookmarked-project', title: l(:label_my_bookmarks)) if User.current.bookmarked_project_ids.include?(item.id))
+          (tag.span(icon_with_label('user', l(:label_my_projects), icon_only: true), class: 'icon-only icon-user my-project') if User.current.member_of?(item)) +
+          (tag.span(icon_with_label('bookmarked', l(:label_my_bookmarks), icon_only: true), class: 'icon-only icon-bookmarked-project') if User.current.bookmarked_project_ids.include?(item.id))
       when :short_description
         if item.description?
           # Sets :inline_attachments to false to avoid performance issues
index b5bb46e3a50a7dd3ab59c1631c8ad286aae91fba..658170968571b9e1ebf84d9c542cd8bc86b80cc1 100644 (file)
@@ -1,6 +1,6 @@
   <% if @principals_by_role.any? %>
   <div class="members box">
-    <h3 class="icon icon-group"><%=l(:label_member_plural)%></h3>
+    <h3 class="icon icon-group"><%= icon_with_label('group', l(:label_member_plural)) %></h3>
     <% @principals_by_role.keys.sort.each do |role| %>
       <p><span class="label"><%= role %>:</span> <%= @principals_by_role[role].sort.collect{|p| link_to_principal(p, :class => p.is_a?(Group) ? 'icon icon-group' : nil)}.join(", ").html_safe %></p>
     <% end %>
index ed2f904ee29eb24128a2c1163b6f436b43aaf376..d54f36f0d3a9ea26a286597f29b63828fdc2148c 100644 (file)
@@ -24,7 +24,7 @@
 <h2><%=l(:label_overview)%></h2>
 
 <% unless @project.active? %>
-  <p class="warning"><span class="icon icon-lock"><%= l(:text_project_closed) %></span></p>
+  <p class="warning"><span class="icon icon-lock"><%= icon_with_label('lock', l(:text_project_closed)) %></span></p>
 <% end %>
 
 <div class="splitcontent">
@@ -48,8 +48,8 @@
   <% if User.current.allowed_to?(:view_issues, @project) %>
   <div class="issues box">
     <h3 class="icon icon-issue">
-      <%=l(:label_issue_tracking)%>&nbsp;
-      <%= link_to l(:label_details),
+      <%= icon_with_label('issue', l(:label_issue_tracking)) %>&nbsp;
+      <%= link_to icon_with_label('zoom-in', l(:label_details)),
             project_issues_report_details_path(@project, :detail => 'tracker'),
             :class => 'icon-only icon-zoom-in',
             :title => l(:label_details) %>
@@ -99,7 +99,7 @@
 
   <% if User.current.allowed_to?(:view_time_entries, @project) %>
   <div class="spent_time box">
-    <h3 class="icon icon-time"><%= l(:label_time_tracking) %></h3>
+    <h3 class="icon icon-time"><%= icon_with_label('time', l(:label_time_tracking)) %></h3>
     <ul>
       <% if @total_estimated_hours.present? %>
         <li><%= l(:field_estimated_hours) %>: <%= l_hours(@total_estimated_hours) %>
 
   <% if @subprojects.any? %>
   <div class="projects box">
-    <h3 class="icon icon-projects"><%=l(:label_subproject_plural)%></h3>
+    <h3 class="icon icon-projects"><%= icon_with_label('projects', l(:label_subproject_plural)) %></h3>
        <ul class="subprojects">
          <% @subprojects.each do |project| %>
          <li><%= link_to(project.name, project_path(project), :class => project.css_classes).html_safe %></li>