Project

General

Profile

Feature #40744 » feature-40744-bleuclair-v2.patch

Mizuki ISHIKAWA, 2024-06-06 09:26

View differences:

app/assets/javascripts/application.js
380 380
      tab_content.find('.journal:not(.has-notes)').hide();
381 381
      tab_content.find('.journal .wiki').show();
382 382
      tab_content.find('.journal .contextual .journal-actions').show();
383
      tab_content.addClass('discontinuity');
383 384

  
384 385
      // always show thumbnails in notes tab
385 386
      var thumbnails = tab_content.find('.journal .thumbnails');
......
393 394
      tab_content.find('.journal .wiki').hide();
394 395
      tab_content.find('.journal .thumbnails').hide();
395 396
      tab_content.find('.journal .contextual .journal-actions').hide();
397
      tab_content.addClass('discontinuity');
396 398
      break;
397 399
    default:
398 400
      tab_content.find('.journal').show();
399 401
      tab_content.find('.journal .wiki').show();
400 402
      tab_content.find('.journal .thumbnails').show();
401 403
      tab_content.find('.journal .contextual .journal-actions').show();
404
      tab_content.removeClass('discontinuity');
402 405
  }
403 406

  
404 407
  return false;
app/assets/stylesheets/application.css
348 348
tr.message td.last_message { font-size: 80%; white-space: nowrap; }
349 349
tr.message.sticky td.subject { font-weight: bold; }
350 350

  
351
body.avatars-on #replies .message.reply {padding-left: 32px;}
352
#replies .reply:target h4.reply-header {background-color:#DDEEFF;}
353
#replies h4 img.gravatar {margin-left:-32px;}
354

  
355 351
tr.version.closed, tr.version.closed a { color: #999; }
356 352
tr.version td.name { padding-left: 20px; }
357 353
tr.version td.date, tr.version td.status, tr.version td.sharing { text-align: center; white-space:nowrap; }
......
647 643
div#issue-changesets p { margin-top: 0; margin-bottom: 1em;}
648 644
.changeset-comments {margin-bottom:1em;}
649 645

  
650
div.journal .contextual {margin-top: 0;}
651 646
div.journal.private-notes .wiki {border-left:2px solid #d22; padding-left:4px; margin-left:-6px;}
652 647
div.journal ul.details, ul.revision-info {color:#959595; margin-bottom: 1.5em;}
653 648
div.journal ul.details a, ul.revision-info a {color:#70A7CD;}
654 649
div.journal ul.details a:hover, ul.revision-info a:hover {color:#D14848;}
655
body.avatars-on div.journal {padding-left:32px;}
656 650
div.journal h4 img.gravatar {margin-left:-32px;}
657 651
div.journal span.update-info {color: #666; font-size: 0.9em;}
658 652

  
659 653
#update {margin-bottom: 1.4em;}
660 654

  
661
#history .tab-content {
662
  padding: 0 6px;
663
  margin-bottom: 10px;
664
  border-right: 1px solid #d7d7d7;
665
  border-bottom: 1px solid #d7d7d7;
666
  border-left: 1px solid #d7d7d7;
667
  border-radius: 0 0 3px 3px / 0 0 3px 3px;
655
#history {
656
  .tab-content {
657
    padding: 0px 6px 10px 10px;
658
    margin-bottom: 10px;
659
    border: 1px solid #dfe8f1;
660
    border-top: none;
661
    border-radius: 0 0 3px 3px;
662
    background-color: #ffffff;
663
  }
664

  
665
  p.nodata {display: none;}
666
}
667

  
668
/* issues#show, boards#show, news#show */
669
.history-items {
670
  .history-item {
671
    padding: 8px 3px 3px 3px;
672
    background-color: #ffffff;
673
    position: relative;
674

  
675
    &:before {
676
      content: "";
677
      width: 8px;
678
      height: 8px;
679
      background-color: #ffffff;
680
      position: absolute;
681
      left: 6px;
682
      top: 16px;
683
      border-radius: 50%;
684
      box-shadow: 0 0 0 3px #e5e5e5;
685
      z-index: 1;
686
    }
687

  
688
    /* Draw a line connecting the icons */
689
    &:after {
690
      content: "";
691
      height: 100%;
692
      width: 2px;
693
      background-color: #e5e5e5;
694
      position: absolute;
695
      left: 9px;
696
      top: 0;
697
    }
698
    &:first-of-type:after { top: 15px; }
699
    &:last-of-type:after { height: 18px; }
700
    &:first-of-type:last-of-type:after { content: none; }
701

  
702
    .contextual {
703
      padding-right: 10px;
704
      padding-top: 5px;
705
      margin-top: 0;
706

  
707
      a,
708
      .journal-actions,
709
      .journal-link {
710
        position: relative;
711
        z-index: 5;
712
      }
713
    }
714

  
715
    form .jstBlock,
716
    form input,
717
    .wiki:not(.wiki-preview),
718
    &.time_entry p,
719
    &.changeset .note > p {
720
      margin-left: 32px;
721
    }
722

  
723
    /* .history-item-header in the form of a speech balloon */
724
    h4.history-item-header {
725
      left: 20px;
726
      position: relative;
727
      margin: 0 19px 0 10px;
728
      border: none;
729
      font-weight: bold;
730
      background-color: #EEEEEE;
731
      padding: 6px 9px;
732
      font-size: 0.9em;
733
      border-radius: 4px;
734
      min-height: 12px;
735

  
736
      &:before {
737
        content: '';
738
        position: absolute;
739
        left: -6px;
740
        top: 8px;
741
        width: 0;
742
        height: 0;
743
        border-top: 5px solid transparent;
744
        border-bottom: 5px solid transparent;
745
        border-right: 6px solid #EEEEEE;
746
      }
747

  
748
      .gravatar {
749
        position: absolute;
750
        left: -35px;
751
        top: 4px;
752
        z-index: 5;
753
        margin-left: 0;
754
      }
755
    }
756

  
757
    &:target h4.history-item-header,
758
    div:target h4.history-item-header {
759
      background: #DDEEFF;
760

  
761
      &:before {
762
        border-right: 6px solid #DDEEFF;
763
      }
764
    }
765
  }
766
  /* For discontinuity history, do not draw a line connecting the icons */
767
  #tab-content-history.discontinuity .history-item:after {
768
    content: none;
769
  }
668 770
}
669 771

  
670
#history div:target h4.note-header {background-color:#DDEEFF;}
671
#history p.nodata {display: none;}
772
#reply input#message_subject { width: 100%; }
672 773

  
673 774
div#activity dl, #search-results { margin-left: 2em; }
674 775
div#activity dd, #search-results dd { margin-bottom: 1em; padding-left: 18px; font-size: 0.9em; }
app/views/issues/show.html.erb
121 121

  
122 122
<%= render partial: 'action_menu_edit' if User.current.wants_comments_in_reverse_order? %>
123 123

  
124
<div id="history">
124
<div id="history" class="history-items">
125 125
<%= render_tabs issue_history_tabs, issue_history_default_tab %>
126 126
</div>
127 127

  
app/views/issues/tabs/_changesets.html.erb
1 1
<% @changesets.each do |changeset| %>
2
  <div id="changeset-<%= changeset.id %>" class="changeset journal">
2
  <div id="changeset-<%= changeset.id %>" class="changeset journal history-item">
3 3
    <div class="note">
4
    <h4 class='note-header'>
4
    <h4 class="note-header history-item-header">
5 5
      <%= avatar(changeset.user, :size => "24") %>
6 6
      <%= authoring changeset.committed_on, changeset.author, :label => :label_added_time_by %>
7 7
    </h4>
app/views/issues/tabs/_history.html.erb
5 5

  
6 6
<% reply_links = issue.notes_addable? -%>
7 7
<% for journal in journals %>
8
  <div id="change-<%= journal.id %>" class="<%= journal.css_classes %>">
8
  <div id="change-<%= journal.id %>" class="<%= journal.css_classes %> history-item">
9 9
    <div id="note-<%= journal.indice %>" class="note">
10 10
    <div class="contextual">
11 11
      <span class="journal-actions"><%= render_journal_actions(issue, journal, :reply_links => reply_links) %></span>
12 12
      <a href="#note-<%= journal.indice %>" class="journal-link">#<%= journal.indice %></a>
13 13
    </div>
14
    <h4 class='note-header'>
14
    <h4 class='note-header history-item-header'>
15 15
      <%= avatar(journal.user) %>
16 16
      <%= authoring journal.created_on, journal.user, :label => :label_updated_time_by %>
17 17
      <%= render_private_notes_indicator(journal) %>
app/views/issues/tabs/_time_entries.html.erb
1 1
<% for time_entry in time_entries%>
2
  <div id="time-entry-<%= time_entry.id %>" class="time_entry journal">
2
  <div id="time-entry-<%= time_entry.id %>" class="time_entry journal history-item">
3 3
    <div class="note">
4 4
    <% if time_entry.editable_by?(User.current) -%>
5 5
      <div class="contextual">
......
15 15
        </span>
16 16
      </div>
17 17
    <% end -%>
18
    <h4 class='note-header'>
18
    <h4 class='note-header history-item-header'>
19 19
      <%= avatar(time_entry.user, :size => "24") %>
20 20
      <%= authoring time_entry.created_on, time_entry.user, :label => :label_added_time_by %>
21 21
    </h4>
app/views/messages/show.html.erb
34 34
<br />
35 35

  
36 36
<% unless @replies.empty? %>
37
<div id="replies">
37
<div id="replies" class="history-items">
38 38
<h3 class="comments icon icon-comments"><%= l(:label_reply_plural) %> (<%= @reply_count %>)</h3>
39 39
<% if !@topic.locked? && authorize_for('messages', 'reply') && @replies.size >= 3 %>
40 40
  <p><%= toggle_link l(:button_reply), "reply", :focus => 'message_content', :scroll => "message_content" %></p>
41 41
<% end %>
42 42
<% @replies.each do |message| %>
43
  <div class="message reply" id="<%= "message-#{message.id}" %>">
43
  <div class="message reply history-item" id="<%= "message-#{message.id}" %>">
44 44
    <div class="contextual">
45 45
      <%= link_to(
46 46
            '',
......
65 65
            :class => 'icon icon-del'
66 66
          ) if message.destroyable_by?(User.current) %>
67 67
    </div>
68
  <h4 class='reply-header'>
68
  <h4 class="reply-header history-item-header">
69 69
    <%= avatar(message.author) %>
70 70
    <%= link_to message.subject, { :controller => 'messages', :action => 'show', :board_id => @board, :id => @topic, :r => message, :anchor => "message-#{message.id}" } %>
71 71
    -
app/views/news/show.html.erb
30 30
<%= link_to_attachments @news %>
31 31
<br />
32 32

  
33
<div id="comments" style="margin-bottom:16px;">
33
<div id="comments" class="history-items" style="margin-bottom:16px;">
34 34
<h3 class="comments"><%= l(:label_comment_plural) %></h3>
35 35
<% if @news.commentable? && @comments.size >= 3 %>
36 36
  <p><%= toggle_link l(:label_comment_add), "add_comment_form", :focus => "comment_comments", :scroll => "comment_comments" %></p>
37 37
<% end %>
38 38
<% @comments.each do |comment| %>
39 39
    <% next if comment.new_record? %>
40
    <div class="history-item">
40 41
    <div class="contextual">
41 42
    <%= link_to_if_authorized l(:button_delete), {:controller => 'comments', :action => 'destroy', :id => @news, :comment_id => comment},
42 43
                              :data => {:confirm => l(:text_are_you_sure)}, :method => :delete,
43 44
                              :title => l(:button_delete),
44 45
                              :class => 'icon-only icon-del' %>
45 46
    </div>
46
    <h4><%= avatar(comment.author) %><%= authoring comment.created_on, comment.author %></h4>
47
    <h4 class="history-item-header"><%= avatar(comment.author) %><%= authoring comment.created_on, comment.author %></h4>
47 48
    <div class="wiki">
48 49
    <%= textilizable(comment.comments) %>
49 50
    </div>
51
    </div>
50 52
<% end if @comments.any? %>
51 53
</div>
52 54

  
(8-8/8)