From 2c28dbd2547d77054b0a080af6b0dfec674ad799 Mon Sep 17 00:00:00 2001
From: skv-headless <skv-headless@yandex.ru>
Date: Tue, 25 Feb 2014 17:54:30 +0400
Subject: [PATCH] commit description in commit list

---
 app/assets/stylesheets/sections/commits.scss | 32 ++++++++++++++++++++
 app/models/commit.rb                         | 16 +++++-----
 app/views/projects/commits/_commit.html.haml |  9 +++++-
 3 files changed, 49 insertions(+), 8 deletions(-)

diff --git a/app/assets/stylesheets/sections/commits.scss b/app/assets/stylesheets/sections/commits.scss
index 78c268f60ea..03a545de6fa 100644
--- a/app/assets/stylesheets/sections/commits.scss
+++ b/app/assets/stylesheets/sections/commits.scss
@@ -168,6 +168,32 @@ li.commit {
         text-decoration: underline;
       }
     }
+
+    .text-expander {
+      background: #ddd;
+      color: #555;
+      padding: 0 5px;
+      line-height: 6px;
+      height: 12px;
+      font-size: 12px;
+      font-weight: bold;
+      vertical-align: middle;
+      display: inline-block;
+      border-radius: 1px;
+      text-decoration: none;
+      cursor: pointer;
+      &:hover {
+        background-color: #ccc;
+      }
+    }
+  }
+
+  .commit-row-description {
+    font-size: 14px;
+    border-left: 1px solid #e5e5e5;
+    padding: 0 15px 0 7px;
+    margin: 5px 0 10px 5px;
+    display: none;
   }
 
   .commit-row-info {
@@ -192,4 +218,10 @@ li.commit {
       @extend .cgray;
     }
   }
+
+  &.open {
+    .commit-row-description {
+      display: block;
+    }
+  }
 }
diff --git a/app/models/commit.rb b/app/models/commit.rb
index bcc1bcbd96a..c313aeb7572 100644
--- a/app/models/commit.rb
+++ b/app/models/commit.rb
@@ -99,14 +99,16 @@ class Commit
   #
   # cut off, ellipses (`&hellp;`) are prepended to the commit message.
   def description
-    description = safe_message
+    title_end = safe_message.index(/\n/)
+    @description ||= if (!title_end && safe_message.length > 100) || (title_end && title_end > 100)
+                    "&hellip;".html_safe << safe_message[80..-1]
+                  else
+                    safe_message.split(/\n/, 2)[1].try(:chomp)
+                  end
+  end
 
-    title_end = description.index(/\n/)
-    if (!title_end && description.length > 100) || (title_end && title_end > 100)
-      "&hellip;".html_safe << description[80..-1]
-    else
-      description.split(/\n/, 2)[1].try(:chomp)
-    end
+  def description?
+    description.present?
   end
 
   # Regular expression that identifies commit message clauses that trigger issue closing.
diff --git a/app/views/projects/commits/_commit.html.haml b/app/views/projects/commits/_commit.html.haml
index 9772d3ef2ef..a5e369e9366 100644
--- a/app/views/projects/commits/_commit.html.haml
+++ b/app/views/projects/commits/_commit.html.haml
@@ -1,9 +1,12 @@
 %li.commit
-  .commit-row-title
+  .commit-row-title{"data-toggle" => "dropdown"}
     = link_to commit.short_id(8), project_commit_path(project, commit), class: "commit_short_id"
     &nbsp;
     %span.str-truncated
       = link_to_gfm commit.title, project_commit_path(project, commit.id), class: "commit-row-message"
+      - if commit.description?
+        %span.label-default.text-expander.js-details-target ...
+
     = link_to "Browse Code ยป", project_tree_path(project, commit), class: "pull-right"
     .notes_count
       - notes = project.notes.for_commit_id(commit.id)
@@ -12,6 +15,10 @@
           %i.icon-comment
           = notes.count
 
+  - if commit.description?
+    .commit-row-description
+      = simple_format(commit.description)
+
   .commit-row-info
     = commit_author_link(commit, avatar: true, size: 16)
     .committed_ago
-- 
GitLab