diff --git a/package.json b/package.json
index 1c15877c..95620903 100644
--- a/package.json
+++ b/package.json
@@ -28,7 +28,7 @@
"moment": "^2.18.1",
"mousetrap": "^1.6.1",
"qrious": "^4.0.2",
- "sticky-sidebar": "3.3.1",
+ "sticky-sidebar": "3.3.4",
"waypoints": "4.0.1",
"webpack": "4.23.1",
"webpack-cli": "3.1.2",
diff --git a/rhodecode/apps/repository/views/repo_commits.py b/rhodecode/apps/repository/views/repo_commits.py
index c8d1bf7e..03b804db 100644
--- a/rhodecode/apps/repository/views/repo_commits.py
+++ b/rhodecode/apps/repository/views/repo_commits.py
@@ -128,6 +128,7 @@ class RepoCommitsView(RepoAppView):
c.statuses = []
c.comments = []
c.unresolved_comments = []
+ c.resolved_comments = []
if len(c.commit_ranges) == 1:
commit = c.commit_ranges[0]
c.comments = CommentsModel().get_comments(
@@ -148,6 +149,8 @@ class RepoCommitsView(RepoAppView):
c.unresolved_comments = CommentsModel()\
.get_commit_unresolved_todos(commit.raw_id)
+ c.resolved_comments = CommentsModel()\
+ .get_commit_resolved_todos(commit.raw_id)
diff = None
# Iterate over ranges (default commit view is always one commit)
diff --git a/rhodecode/model/comment.py b/rhodecode/model/comment.py
index f682e224..cf909a6e 100644
--- a/rhodecode/model/comment.py
+++ b/rhodecode/model/comment.py
@@ -187,6 +187,23 @@ class CommentsModel(BaseModel):
return todos
+ def get_commit_resolved_todos(self, commit_id, show_outdated=True):
+
+ todos = Session().query(ChangesetComment) \
+ .filter(ChangesetComment.revision == commit_id) \
+ .filter(ChangesetComment.resolved_by != None) \
+ .filter(ChangesetComment.comment_type
+ == ChangesetComment.COMMENT_TYPE_TODO)
+
+ if not show_outdated:
+ todos = todos.filter(
+ coalesce(ChangesetComment.display_state, '') !=
+ ChangesetComment.COMMENT_OUTDATED)
+
+ todos = todos.all()
+
+ return todos
+
def _log_audit_action(self, action, action_data, auth_user, comment):
audit_logger.store(
action=action,
diff --git a/rhodecode/public/css/buttons.less b/rhodecode/public/css/buttons.less
index 0c5a01eb..7cd76a81 100644
--- a/rhodecode/public/css/buttons.less
+++ b/rhodecode/public/css/buttons.less
@@ -71,6 +71,12 @@ input[type="button"] {
margin: 0 0 0 0;
}
+ &.btn-active {
+ color: @rcdarkblue;
+ background-color: @white;
+ .border ( @border-thickness, @rcdarkblue );
+ }
+
}
@@ -97,6 +103,11 @@ input[type="button"] {
.border ( @border-thickness-buttons, @grey5 );
background-color: transparent;
}
+ &.btn-active {
+ color: @rcdarkblue;
+ background-color: @white;
+ .border ( @border-thickness, @rcdarkblue );
+ }
}
.btn-primary,
@@ -214,8 +225,28 @@ input[type="button"] {
display: inline-block;
.btn {
float: left;
- margin: 0 0 0 -1px;
+ margin: 0 0 0 0;
+ // first item
+ &:first-of-type:not(:last-of-type) {
+ border-radius: @border-radius 0 0 @border-radius;
+
+ }
+ // middle elements
+ &:not(:first-of-type):not(:last-of-type) {
+ border-radius: 0;
+ border-left-width: 0;
+ border-right-width: 0;
+ }
+ // last item
+ &:last-of-type:not(:first-of-type) {
+ border-radius: 0 @border-radius @border-radius 0;
+ }
+
+ &:only-child {
+ border-radius: @border-radius;
+ }
}
+
}
.btn-link {
diff --git a/rhodecode/public/css/code-block.less b/rhodecode/public/css/code-block.less
index b6c099d5..53e4e4ec 100644
--- a/rhodecode/public/css/code-block.less
+++ b/rhodecode/public/css/code-block.less
@@ -682,13 +682,14 @@ input.filediff-collapse-state {
display: none
}
.filediff-collapse-indicator {
- width: 0;
- height: 0;
- border-style: solid;
- border-width: 4.5px 0 4.5px 9.3px;
- border-color: transparent transparent transparent #aaa;
- margin: 6px 0px;
+ float: left;
+ cursor: pointer;
+ margin: 1px -5px;
}
+ .filediff-collapse-indicator:before {
+ content: '\f105';
+ }
+
.filediff-menu {
display: none;
}
@@ -696,18 +697,20 @@ input.filediff-collapse-state {
}
&+ .filediff { /* file diff is expanded */
- .filediff-collapse-indicator {
- width: 0;
- height: 0;
- border-style: solid;
- border-width: 9.3px 4.5px 0 4.5px;
- border-color: #aaa transparent transparent transparent;
- margin: 6px 0px;
+ .filediff-collapse-indicator {
+ float: left;
+ cursor: pointer;
+ margin: 1px -5px;
}
+ .filediff-collapse-indicator:before {
+ content: '\f107';
+ }
+
.filediff-menu {
display: block;
}
+
margin: 10px 0;
&:nth-child(2) {
margin: 0;
@@ -735,13 +738,14 @@ input.filediff-collapse-state {
#diff-file-sticky{
will-change: min-height;
+ height: 80px;
}
.sidebar__inner{
transform: translate(0, 0); /* For browsers don't support translate3d. */
transform: translate3d(0, 0, 0);
will-change: position, transform;
- height: 70px;
+ height: 65px;
z-index: 30;
background-color: #fff;
padding: 5px 0px;
@@ -775,10 +779,17 @@ input.filediff-collapse-state {
}
.diffset-menu {
- margin-bottom: 20px;
+
}
+
+#todo-box {
+ clear:both;
+ display: none;
+ text-align: right
+}
+
.diffset {
- margin: 20px auto;
+ margin: 0px auto;
.diffset-heading {
border: 1px solid @grey5;
margin-bottom: -1px;
@@ -826,6 +837,8 @@ input.filediff-collapse-state {
margin-right: 3px;
font-size: 12px;
font-weight: normal;
+ min-width: 30px;
+ text-align: center;
&:first-child {
border-radius: @border-radius 0 0 @border-radius;
@@ -877,18 +890,10 @@ input.filediff-collapse-state {
}
}
- .filediff-collapse-indicator {
- border-style: solid;
- float: left;
- margin: 4px 0px 0 0;
- cursor: pointer;
- }
-
.filediff-heading {
- background: @grey7;
cursor: pointer;
display: block;
- padding: 5px 10px;
+ padding: 10px 10px;
}
.filediff-heading:after {
content: "";
@@ -900,9 +905,9 @@ input.filediff-collapse-state {
}
.filediff-menu {
- float: right;
text-align: right;
padding: 5px 5px 5px 0px;
+ background: @grey7;
&> a,
&> span {
@@ -958,8 +963,16 @@ input.filediff-collapse-state {
}
+.op-added {
+ color: @alert1;
+}
+
+.op-deleted {
+ color: @alert2;
+}
.filediff, .filelist {
+
.pill {
&[op="name"] {
background: none;
diff --git a/rhodecode/public/css/comments.less b/rhodecode/public/css/comments.less
index 8e9a4fb9..d325675f 100644
--- a/rhodecode/public/css/comments.less
+++ b/rhodecode/public/css/comments.less
@@ -10,6 +10,14 @@
width: 100%;
}
+.comments-heading {
+ margin-bottom: -1px;
+ background: @grey6;
+ display: block;
+ padding: 10px 0px;
+ font-size: 18px
+}
+
tr.inline-comments div {
max-width: 100%;
diff --git a/rhodecode/public/css/main.less b/rhodecode/public/css/main.less
index 4018fe15..ac7e0eda 100644
--- a/rhodecode/public/css/main.less
+++ b/rhodecode/public/css/main.less
@@ -1107,6 +1107,52 @@ label {
}
}
+.review-status {
+ &.under_review {
+ color: @alert3;
+ }
+ &.approved {
+ color: @alert1;
+ }
+ &.rejected,
+ &.forced_closed{
+ color: @alert2;
+ }
+ &.not_reviewed {
+ color: @grey5;
+ }
+}
+
+.review-status-under_review {
+ color: @alert3;
+}
+.status-tag-under_review {
+ border-color: @alert3;
+}
+
+.review-status-approved {
+ color: @alert1;
+}
+.status-tag-approved {
+ border-color: @alert1;
+}
+
+.review-status-rejected,
+.review-status-forced_closed {
+ color: @alert2;
+}
+.status-tag-rejected,
+.status-tag-forced_closed {
+ border-color: @alert2;
+}
+
+.review-status-not_reviewed {
+ color: @grey5;
+}
+.status-tag-not_reviewed {
+ border-color: @grey5;
+}
+
.flag_status_comment_box {
margin: 5px 6px 0px 2px;
}
diff --git a/rhodecode/public/css/rcicons.less b/rhodecode/public/css/rcicons.less
index 2d8a0fb8..772f6541 100644
--- a/rhodecode/public/css/rcicons.less
+++ b/rhodecode/public/css/rcicons.less
@@ -1,12 +1,12 @@
@font-face {
font-family: 'rcicons';
- src: url('../fonts/RCIcons/rcicons.eot?92789106');
- src: url('../fonts/RCIcons/rcicons.eot?92789106#iefix') format('embedded-opentype'),
- url('../fonts/RCIcons/rcicons.woff2?92789106') format('woff2'),
- url('../fonts/RCIcons/rcicons.woff?92789106') format('woff'),
- url('../fonts/RCIcons/rcicons.ttf?92789106') format('truetype'),
- url('../fonts/RCIcons/rcicons.svg?92789106#rcicons') format('svg');
+ src: url('../fonts/RCIcons/rcicons.eot?44705679');
+ src: url('../fonts/RCIcons/rcicons.eot?44705679#iefix') format('embedded-opentype'),
+ url('../fonts/RCIcons/rcicons.woff2?44705679') format('woff2'),
+ url('../fonts/RCIcons/rcicons.woff?44705679') format('woff'),
+ url('../fonts/RCIcons/rcicons.ttf?44705679') format('truetype'),
+ url('../fonts/RCIcons/rcicons.svg?44705679#rcicons') format('svg');
font-weight: normal;
font-style: normal;
@@ -163,8 +163,6 @@
.icon-down:before { content: '\e80b'; } /* '' */
.icon-folder:before { content: '\e80c'; } /* '' */
.icon-folder-open:before { content: '\e80d'; } /* '' */
-.icon-folder-empty:before { content: '\f114'; } /* '' */
-.icon-folder-open-empty:before { content: '\f115'; } /* '' */
.icon-trash-empty:before { content: '\e80e'; } /* '' */
.icon-group:before { content: '\e80f'; } /* '' */
.icon-remove:before { content: '\e810'; } /* '' */
@@ -187,6 +185,7 @@
.icon-info-circled:before { content: '\e821'; } /* '' */
.icon-upload:before { content: '\e822'; } /* '' */
.icon-home:before { content: '\e823'; } /* '' */
+.icon-flag-filled:before { content: '\e824'; } /* '' */
.icon-git:before { content: '\e82a'; } /* '' */
.icon-hg:before { content: '\e82d'; } /* '' */
.icon-svn:before { content: '\e82e'; } /* '' */
@@ -195,11 +194,24 @@
.icon-rhodecode:before { content: '\e831'; } /* '' */
.icon-up:before { content: '\e832'; } /* '' */
.icon-merge:before { content: '\e833'; } /* '' */
+.icon-spin-alt:before { content: '\e834'; } /* '' */
+.icon-spin:before { content: '\e838'; } /* '' */
.icon-docs:before { content: '\f0c5'; } /* '' */
.icon-menu:before { content: '\f0c9'; } /* '' */
+.icon-sort:before { content: '\f0dc'; } /* '' */
.icon-paste:before { content: '\f0ea'; } /* '' */
.icon-doc-text:before { content: '\f0f6'; } /* '' */
.icon-plus-squared:before { content: '\f0fe'; } /* '' */
+.icon-angle-left:before { content: '\f104'; } /* '' */
+.icon-angle-right:before { content: '\f105'; } /* '' */
+.icon-angle-up:before { content: '\f106'; } /* '' */
+.icon-angle-down:before { content: '\f107'; } /* '' */
+.icon-circle-empty:before { content: '\f10c'; } /* '' */
+.icon-circle:before { content: '\f111'; } /* '' */
+.icon-folder-empty:before { content: '\f114'; } /* '' */
+.icon-folder-open-empty:before { content: '\f115'; } /* '' */
+.icon-code:before { content: '\f121'; } /* '' */
+.icon-info:before { content: '\f129'; } /* '' */
.icon-minus-squared:before { content: '\f146'; } /* '' */
.icon-minus-squared-alt:before { content: '\f147'; } /* '' */
.icon-doc-inv:before { content: '\f15b'; } /* '' */
@@ -207,10 +219,9 @@
.icon-plus-squared-alt:before { content: '\f196'; } /* '' */
.icon-file-code:before { content: '\f1c9'; } /* '' */
.icon-history:before { content: '\f1da'; } /* '' */
+.icon-circle-thin:before { content: '\f1db'; } /* '' */
.icon-sliders:before { content: '\f1de'; } /* '' */
.icon-trash:before { content: '\f1f8'; } /* '' */
-.icon-spin-alt:before { content: '\e834'; } /* '' */
-.icon-spin:before { content: '\e838'; } /* '' */
// MERGED ICONS BASED ON CURRENT ONES
@@ -233,10 +244,12 @@
.icon-false:before { &:extend(.icon-delete:before); }
.icon-expand-linked:before { &:extend(.icon-down:before); }
.icon-pr-merge-fail:before { &:extend(.icon-delete:before); }
+.icon-wide-mode:before { &:extend(.icon-sort:before); }
+.icon-flag-filled-red:before { &:extend(.icon-flag-filled:before); }
// TRANSFORM
-
.icon-merge:before {transform: rotate(180deg);}
+.icon-wide-mode:before {transform: rotate(90deg);}
// -- END ICON CLASSES -- //
@@ -254,6 +267,7 @@
.icon-false { color: @grey5 }
.icon-expand-linked { cursor: pointer; color: @grey3; font-size: 14px }
.icon-more-linked { cursor: pointer; color: @grey3 }
+.icon-flag-filled-red { color: @color5 !important; }
.repo-switcher-dropdown .select2-result-label {
.icon-git:before {
diff --git a/rhodecode/public/css/select2.less b/rhodecode/public/css/select2.less
index 40b5dc48..88b8a42c 100644
--- a/rhodecode/public/css/select2.less
+++ b/rhodecode/public/css/select2.less
@@ -152,6 +152,8 @@ select.select2{height:28px;visibility:hidden}
.drop-menu-no-width {
.drop-menu-base;
width: auto;
+ min-width: 0;
+ margin: 0;
}
.field-sm .drop-menu {
diff --git a/rhodecode/public/css/summary.less b/rhodecode/public/css/summary.less
index 77ad7274..54cb0df1 100644
--- a/rhodecode/public/css/summary.less
+++ b/rhodecode/public/css/summary.less
@@ -153,6 +153,7 @@
text-align: center;
color: #949494;
font-size: 11px;
+ line-height: 1.3em;
&:hover {
background: #f1f1f1;
@@ -199,6 +200,10 @@
.fieldset {
margin-bottom: 0;
}
+
+ .tags-main {
+ margin-bottom: 5px;
+ }
}
.fieldset {
diff --git a/rhodecode/public/fonts/RCIcons/config.json b/rhodecode/public/fonts/RCIcons/config.json
index dff70300..648ba7ee 100755
--- a/rhodecode/public/fonts/RCIcons/config.json
+++ b/rhodecode/public/fonts/RCIcons/config.json
@@ -563,6 +563,72 @@
"code": 61914,
"src": "fontawesome"
},
+ {
+ "uid": "7034e4d22866af82bef811f52fb1ba46",
+ "css": "code",
+ "code": 61729,
+ "src": "fontawesome"
+ },
+ {
+ "uid": "f3f90c8c89795da30f7444634476ea4f",
+ "css": "angle-left",
+ "code": 61700,
+ "src": "fontawesome"
+ },
+ {
+ "uid": "7bf14281af5633a597f85b061ef1cfb9",
+ "css": "angle-right",
+ "code": 61701,
+ "src": "fontawesome"
+ },
+ {
+ "uid": "5de9370846a26947e03f63142a3f1c07",
+ "css": "angle-up",
+ "code": 61702,
+ "src": "fontawesome"
+ },
+ {
+ "uid": "e4dde1992f787163e2e2b534b8c8067d",
+ "css": "angle-down",
+ "code": 61703,
+ "src": "fontawesome"
+ },
+ {
+ "uid": "4i0s2bklai5fywieqm4dqqngfz9ptfab",
+ "css": "flag-filled",
+ "code": 59428,
+ "src": "typicons"
+ },
+ {
+ "uid": "3d4ea8a78dc34efe891f3a0f3d961274",
+ "css": "info",
+ "code": 61737,
+ "src": "fontawesome"
+ },
+ {
+ "uid": "56a21935a5d4d79b2e91ec00f760b369",
+ "css": "sort",
+ "code": 61660,
+ "src": "fontawesome"
+ },
+ {
+ "uid": "130380e481a7defc690dfb24123a1f0c",
+ "css": "circle",
+ "code": 61713,
+ "src": "fontawesome"
+ },
+ {
+ "uid": "422e07e5afb80258a9c4ed1706498f8a",
+ "css": "circle-empty",
+ "code": 61708,
+ "src": "fontawesome"
+ },
+ {
+ "uid": "5774d0a0e50f6eefc8be01bd761e5dd3",
+ "css": "circle-thin",
+ "code": 61915,
+ "src": "fontawesome"
+ },
{
"uid": "c43db6645e7515889fc2193294f50767",
"css": "plus",
diff --git a/rhodecode/public/fonts/RCIcons/rcicons.eot b/rhodecode/public/fonts/RCIcons/rcicons.eot
index 041a625c..a90776c9 100755
Binary files a/rhodecode/public/fonts/RCIcons/rcicons.eot and b/rhodecode/public/fonts/RCIcons/rcicons.eot differ
diff --git a/rhodecode/public/fonts/RCIcons/rcicons.svg b/rhodecode/public/fonts/RCIcons/rcicons.svg
index 798f0897..d227b617 100755
--- a/rhodecode/public/fonts/RCIcons/rcicons.svg
+++ b/rhodecode/public/fonts/RCIcons/rcicons.svg
@@ -78,6 +78,8 @@
${_('Commit')}
-
- ${h.show_id(c.commit)}
-
-
- % if hasattr(c.commit, 'phase'):
- ${c.commit.phase}
- % endif
+ ${_('Commit status')}:
-${_('References')}:
-