init:
function() {
- $(".merge-tabs a").live("click", function() {
- $(".merge-tabs a").removeClass("active");
- $(this).addClass("active");
+ $(".tabs a").live("click", function() {
+ $(".tabs a").parent().removeClass("active");
+ $(this).parent().addClass("active");
});
- $(".merge-tabs a.merge-notes-tab").live("click", function() {
+ $(".tabs a.merge-notes-tab").live("click", function() {
$(".merge-request-commits, .merge-request-diffs").hide();
$(".merge-request-notes").show();
});
- $(".merge-tabs a.merge-commits-tab").live("click", function() {
+ $(".tabs a.merge-commits-tab").live("click", function() {
if(!MergeRequest.commits_loaded) {
MergeRequest.loadCommits();
}
$(".merge-request-commits").show();
});
- $(".merge-tabs a.merge-diffs-tab").live("click", function() {
+ $(".tabs a.merge-diffs-tab").live("click", function() {
if(!MergeRequest.diffs_loaded) {
MergeRequest.loadDiff();
}
.button-green{background: #A6B807; color: white}
-.commit-button{
- background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.192, #fff), to(#f4f4f4));
- background-image: -webkit-linear-gradient(#fff 19.2%, #f4f4f4);
- background-image: -moz-linear-gradient(#fff 19.2%, #f4f4f4);
- background-image: -o-linear-gradient(#fff 19.2%, #f4f4f4);
- box-shadow: 0 -1px 0 white inset;
- display: block;
- border: 1px solid #eee;
- border-radius: 5px;
- margin-bottom: 2px;
- position: relative;
- padding-right: 20px !important;
-}
-
-.commit-button i{
- background: url('images.png') no-repeat -138px -27px;
- width: 6px;
- height: 9px;
- float: right;
- position: absolute;
- top: 6px;
- right: 5px;
-}
-/* Commit Page */
-.commit-info{float: right;}
-.commit-info data{
- padding: 4px 10px;
- font-size: 11px;
-}
-.commits-date {display: block; width: 100%; margin-bottom: 20px}
-.commits-date .data {padding: 0}
-a.commit{padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;}
-a.commit {padding: 10px; border-bottom: none; overflow: hidden; display: block;}
-a.commit:last-child{border-bottom: 0}
-a.commit img{float: left; margin-right: 10px;}
-a.commit .commit-title{display: block;}
-a.commit .commit-title{margin-bottom: 10px}
-a.commit .commit-author{color: #999; font-weight: normal; font-style: italic;}
-a.commit .commit-author strong{font-weight: bold; font-style: normal;}
+/**
+ *
+ * COMMIT SHOw
+ *
+ */
+
-/* eo Commit Page */
-/** Commit diff view **/
.diff_file {
border:1px solid #CCC;
margin-bottom:1em;
border:none;
margin:0px;
padding:0px;
+ tr {
+ td {
+ font-size:12px;
+ }
+ }
}
.old_line, .new_line {
margin:0px;
}
}
-pre.commit_message {
- white-space: pre-wrap;
- font-family: "Helvetica", sans-serif;
- color: #555;
- font-weight:bold;
- font-size:15px;
-}
-
/** COMMIT BLOCK **/
.commit-title{display: block;}
.commit-title{margin-bottom: 10px}
}
}
-.per_line_form {
- font-family: "Helvetica", sans-serif;
- background: #2FA0BB;
-
- td {
- padding:0;
- }
- form {
- margin:5px;
- width: 756px;
- border: 1px solid #CCC;
- padding: 20px;
- background: white;
- }
+tr.line_notes_row {
+ border-bottom:1px solid #DDD;
}
+/**
+ *
+ * COMMIT LIST
+ *
+ */
-tr.line_notes_row {
- font-family: "Helvetica", sans-serif;
- &:hover {
- background:none;
- }
- td {
- margin:0px;
- padding:0px;
- border-bottom:1px solid #DEE2E3;
-
+.commit-info{float: right;}
+.commit-info data{
+ padding: 4px 10px;
+ font-size: 11px;
+}
+a.commit{padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;}
+a.commit:last-child {border-bottom: 0}
+a.commit img{float: left; margin-right: 10px;}
+a.commit .commit-title{display: block;}
+a.commit .commit-title{margin-bottom: 10px}
+a.commit .commit-author{color: #999; font-weight: normal; font-style: italic;}
+a.commit .commit-author strong{font-weight: bold; font-style: normal;}
- ul {
- display:block;
- list-style:none;
- margin:0px;
- padding:0px;
+.commit-button{
+ background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.192, #fff), to(#f4f4f4));
+ background-image: -webkit-linear-gradient(#fff 19.2%, #f4f4f4);
+ background-image: -moz-linear-gradient(#fff 19.2%, #f4f4f4);
+ background-image: -o-linear-gradient(#fff 19.2%, #f4f4f4);
+ box-shadow: 0 -1px 0 white inset;
+ display: block;
+ border: 1px solid #eee;
+ border-radius: 5px;
+ margin-bottom: 2px;
+ position: relative;
+ padding-right: 20px !important;
+}
- li {
- border-top:1px solid #DEE2E3;
- padding:10px;
- }
- }
- }
+.commit-button i{
+ background: url('images.png') no-repeat -138px -27px;
+ width: 6px;
+ height: 9px;
+ float: right;
+ position: absolute;
+ top: 6px;
+ right: 5px;
}
$active_bd_color: #2FA0BB;
$border_color:#CCC;
$lite_border_color:#EEE;
-$app_width:980px;
+$min_app_width:940px;
+$max_app_width:980px;
$app_padding:20px;
$bg_color: #FFF;
$styled_border_color: #2FA0BB;
/** LAYOUT **/
.container-fluid {
- max-width:980px;
+ min-width:$min_app_width;
+ max-width:$max_app_width;
margin:auto;
- margin-top:80px;
+ margin-top:60px;
}
.container-fluid > .sidebar {
- width: 110px;
- left: 0;
- top: 0;
- height: 100%;
- bottom: 0;
- position: absolute;
- float: left;
- display: inline-block;
- background: #FFF;
- padding: $app_padding;
- padding-right:0px;
- margin: 0;
+ width: 140px;
border-right: 1px solid $border_color;
-
- aside {
- width: 109px
- }
+ height:100%;
}
.container-fluid > .content {
- margin-left: 130px;
-}
-
-/** GITLAB reset **/
-a {
- color: $link_color;
- &:hover { text-decoration:none; }
+ margin-left: 160px;
}
+@import "reset_bootstrap.scss";
@import "top_panel.scss";
@import "projects.css.scss";
-
-@import "style.scss";
@import "commits.css.scss";
-@import "notes.css.scss";
-@import "merge_requests.css.scss";
-@import "issues.css.scss";
-@import "commits.css.scss";
+//@import "style.scss";
+//@import "notes.css.scss";
+//@import "merge_requests.css.scss";
+
+//@import "issues.css.scss";
+//@import "commits.css.scss";
-@import "dashboard.scss";
-@import "tree.scss";
-@import "tags.scss";
-@import "buttons.scss";
+//@import "dashboard.scss";
+//@import "tree.scss";
+//@import "tags.scss";
+//@import "buttons.scss";
/** CODE HIGHTLIGHT **/
-@import "highlight.css.scss";
-@import "highlight.black.css.scss";
+//@import "highlight.css.scss";
+//@import "highlight.black.css.scss";
-.git_url_wrapper { margin-right:50px }
-
-.sidebar aside a{
- display: block;
- position: relative;
- padding: 15px 10px;
- margin: 10px 0 0 0;
+.git_url_wrapper {
+ margin-right:50px
+}
- span.number{
- float: right; border-radius: 5px; text-shadow: none; background: rgba(0,0,0,.12); text-align: center; padding: 5px 8px; position: absolute; top: 10px; right: 10px;
+.sidebar {
+ .fixed {
+ position:fixed;
}
- &.current {
- color: white;
- background: $active_bg_color;
- border: 1px solid $active_bd_color;
- border-radius:5px;
- -webkit-border-top-right-radius: 0;
- -webkit-border-bottom-right-radius: 0;
- -moz-border-radius-topright: 0px;
- -moz-border-radius-bottomright: 0px;
- border-top-right-radius: 0;
- border-bottom-right-radius: 0;
- margin-right: -1px;
+ aside a {
+ display:block;
+ position:relative;
+ padding:15px 10px;
+ margin:10px 0 0 0;
+ font-size:13px;
+ font-weight:bold;
}
}
-
-body table .commit a{color: #{$blue_link}}
-body table th, body table td{ border-bottom: 1px solid #DEE2E3;}
-body .fixed{position: fixed; }
-
-/** File stat **/
.file_stats {
span {
img {
width:14px;
float:left;
- margin-right: 6px;
+ margin-right:6px;
padding:2px 0;
}
}
}
-.round-borders {
- @include round-borders-all(4px);
- padding: 4px 0px;
-}
-
-table.round-borders {
- float:left;
- text-align: left;
-}
-
-
-
-/** PROJECTS **/
-input.ssh_project_url {
- padding:5px;
- margin:0px;
- float:right;
- width:400px;
- text-align:center;
-}
-
-#projects-list .project {
- height:50px;
-}
-
-#tree-slider .tree-item,
-#projects-list .project,
-#snippets-table .snippet,
-#issues-table .issue{
- cursor:pointer;
+.handle:hover {
+ cursor:move;
}
-
-.clear {
- clear: both;
-}
-
-
-
-#user_projects_limit{
- width: 60px;
-}
-
-.handle:hover{
- cursor: move;
-}
-
.project-refs-form {
span {
- background: none !important;
+ background:none !important;
position:static !important;
width:auto !important;
- height: auto !important;
+ height:auto !important;
}
}
-
.project-refs-select {
width:200px;
}
-.filter .left { margin-right:15px; }
-
-body table .commit {
- a.tree-commit-link {
- color:#444;
- &:hover {
- text-decoration:underline;
- }
- }
+/* Project Dashboard Page */
+.news-feed h2 {
+ float:left;
}
-
-/** NEW PROJECT **/
-.new-project-hodler {
- .icon span { background-position: -31px -70px; }
- td { border-bottom: 1px solid #DEE2E3; }
+.news-feed .project-updates {
+ margin-bottom:20px;
+ display:block;
+ width:100%;
}
-
-/** Feed entry **/
-.commit,
-.snippet,
-.message {
- .title {
- color:#666;
- a { color:#666 !important; }
- p { margin-top:0px; }
- }
- .author { color: #999 }
+.news-feed .project-updates .data {
+ padding:0
}
-
-/** JQuery UI **/
-.ui-autocomplete { @include round-borders-all(5px); }
-.ui-menu-item { cursor: pointer }
-.ui-selectmenu{
- @include round-borders-all(4px);
+.news-feed .project-updates a.project-update {
+ padding:10px;
+ border-bottom:1px solid #eee;
+ overflow:hidden;
+ display:block;
+}
+.news-feed .project-updates a.project-update:last-child {
+ border-bottom:0
+}
+.news-feed .project-updates a.project-update img {
+ float:left;
margin-right:10px;
- font-size:1.5em;
- height:auto;
+}
+.news-feed .project-updates a.project-update span.update-title,.dashboard-page .news-feed .project-updates li a span.update-author {
+ display:block;
+}
+.news-feed .project-updates a.project-update span.update-title {
+ margin-bottom:10px
+}
+.news-feed .project-updates a.project-update span.update-author {
+ color:#999;
+ font-weight:normal;
+ font-style:italic;
+}
+.news-feed .project-updates a.project-update span.update-author strong {
font-weight:bold;
- .ui-selectmenu-status {
- padding:3px 10px;
- }
+ font-style: normal;
}
-
-#holder {
- background:#FAFAFA;
- border: 1px solid #EEE;
- cursor: move;
- height: 70%;
- overflow: hidden;
+/** UPDATE ITEM **/
+.update-data {
+ padding:0
}
-
-/* Project Dashboard Page */
-html, body { height: 100%; }
-
-.news-feed h2{float: left;}
-.news-feed .project-updates {margin-bottom: 20px; display: block; width: 100%;}
-.news-feed .project-updates .data{ padding: 0}
-.news-feed .project-updates a.project-update {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;}
-.news-feed .project-updates a.project-update:last-child{border-bottom: 0}
-.news-feed .project-updates a.project-update img{float: left; margin-right: 10px;}
-.news-feed .project-updates a.project-update span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;}
-.news-feed .project-updates a.project-update span.update-title{margin-bottom: 10px}
-.news-feed .project-updates a.project-update span.update-author{color: #999; font-weight: normal; font-style: italic;}
-.news-feed .project-updates a.project-update span.update-author strong{font-weight: bold; font-style: normal;}
-/* eo Dashboard Page */
-
-
-/** Update entry **/
-.update-data { padding: 0 }
-.update-data { width:100%; }
-.update-data.ui-box .data { padding:0; }
-a.update-item {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;}
-a.update-item:last-child{border-bottom: 0}
-a.update-item img{float: left; margin-right: 10px;}
-a.update-item span.update-title, .dashboard-page .news-feed .project-updates li a span.update-author{display: block;}
-a.update-item span.update-title{margin-bottom: 10px}
-a.update-item span.update-author{color: #999; font-weight: normal; font-style: italic;}
-a.update-item span.update-author strong{font-weight: bold; font-style: normal;}
-
-
-body .team_member_new .span-6, .team_member_edit .span-6{ padding:10px 0; }
-
-body.projects-page input.text.git-url.project_list_url { width:165px; }
-
-
-body table.no-borders th {
- background:none;
- border-bottom:1px solid #CCC;
- color:#333;
+.update-data {
+ width:100%;
}
-
-body table.no-borders tr,
-body table.no-borders td{
- border:none;
+a.update-item {
+ padding:10px;
+ border-bottom:1px solid #eee;
+ overflow:hidden;
+ display:block;
}
-
+a.update-item:last-child {
+ border-bottom:0
+}
+a.update-item img {
+ float:left;
+ margin-right:10px;
+}
+a.update-item span.update-title,.dashboard-page .news-feed .project-updates li a span.update-author {
+ display:block;
+}
+a.update-item span.update-title {
+ margin-bottom:10px
+}
+a.update-item span.update-author {
+ color:#999;
+ font-weight:normal;
+ font-style:italic;
+}
+a.update-item span.update-author strong {
+ font-weight:bold;
+ font-style:normal;
+}
+/** END UPDATE ITEM **/
.ajax-tab-loading {
padding:40px;
display:none;
}
-
-#tree-content-holder { float:left; width:100%; }
-
+#tree-content-holder {
+ float:left;
+ width:100%;
+}
#tree-readme-holder {
float:left;
width:100%;
-
.readme {
@include round-borders-all(4px);
- padding: 4px 15px;
- background:#F7F7F7;
+ padding:4px 15px;
+ background: #F7F7F7;
}
}
-
-
-
-/* Commit Page */
-.entity-info {float: right;}
-.entity-button{
- background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.192, #fff), to(#f4f4f4));
- background-image: -webkit-linear-gradient(#fff 19.2%, #f4f4f4);
- background-image: -moz-linear-gradient(#fff 19.2%, #f4f4f4);
- background-image: -o-linear-gradient(#fff 19.2%, #f4f4f4);
- box-shadow: 0 -1px 0 white inset;
- display: block;
- border: 1px solid #eee;
- border-radius: 5px;
- margin-bottom: 2px;
- position: relative;
- padding: 4px 10px;
- font-size: 11px;
- padding-right: 20px;
-}
-
-.entity-button i{
- background: url('images.png') no-repeat -138px -27px;
- width: 6px;
- height: 9px;
- float: right;
- position: absolute;
- top: 6px;
- right: 5px;
-}
-.box-arrow{float: right; background: #E3E5EA; padding: 10px; border-radius: 5px; margin-top: 2px; text-shadow: none; color: #999; margin: 1.5em 0;}
-
-h4.dash-tabs {
- margin: 0;
- border-bottom: 1px solid #ccc;
- padding: 10px 10px;
- font-size: 11px;
- padding-left:20px;
- font-weight: bold; text-transform: uppercase;
- background: #F7F7F7;
- margin-bottom:20px;
- height:13px;
-
-}
-
-.dash-button {
- border-right: 1px solid #ddd;
- background:none;
- padding: 10px 15px;
+.dashboard-loader {
float:left;
- position:relative;
- top:-10px;
- left:0px;
- height:13px;
-
- &:first-child {
- border-left: 1px solid #ddd;
- }
- &.active {
- background: #eaeaea;
- }
-}
-
-
-.dashboard-loader {
- float:right;
- margin-right:30px;
+ margin:10px;
display:none;
}
-
-
-.merge-tabs {
- margin: 0;
- border: 1px solid #ccc;
- padding: 5px;
- font-size: 12px;
- background: #F7F7F7;
- margin-bottom:20px;
- height:26px;
-
- -moz-border-radius: 4px;
- -webkit-border-radius: 4px;
- border-radius: 4px;
-
- .tab {
- font-weight: bold;
- border-right: 1px solid #ddd;
- background:none;
- padding: 10px;
- min-width:60px;
- float:left;
- position:relative;
- top:-5px;
- left:-5px;
- height:16px;
- padding-left:34px;
-
- span {
- width: 20px;
- height: 20px;
- display: inline-block;
- position: absolute;
- left: 8px;
- top: 8px;
- }
-
- &.active {
- background: #eaeaea;
- }
- }
-}
-.merge-tabs.repository .tab span{ background: url("images.png") no-repeat -38px -77px; }
-.activities-tab span { background: url("images.png") no-repeat -161px -1px; }
-.stat-tab span,
-.team-tab span,
-.snippets-tab span { background: url("images.png") no-repeat -38px -77px; }
-.files-tab span { background: url("images.png") no-repeat -112px -23px; }
-
-.merge-notes-tab span { background: url("images.png") no-repeat -161px -1px; }
-.merge-commits-tab span { background: url("images.png") no-repeat -86px 1px; }
-.merge-diffs-tab span { background: url("images.png") no-repeat -118px 1px; }
-.merge-tabs .dashboard-loader { padding:8px; }
-
-.user-mention {
- color: #2FA0BB;
- font-weight: bold;
-}
-
-.author {
- color: #999;
-}
-
-
-
-
-.dark_scheme_box {
- padding:20px 0;
-
- label {
- float:left;
- box-shadow: 0 0px 5px rgba(0,0,0,.3);
-
- img {
- }
- }
+.user-mention {
+ color:#2FA0BB;
+ font-weight:bold;
}
-a.project-update.titled {
- position: relative;
- padding-left: 235px !important;
-
- .title-block {
- padding: 10px;
- width: 205px;
- position: absolute;
- left: 0;
- top: 0;
+a.project-update.titled {
+ position:relative;
+ padding-left:35% !important;
+ .title-block {
+ padding:10px;
+ width:35%;
+ position:absolute;
+ left:0;
+ top:0;
}
}
-
-.add_new {
- float: right;
- background: #A6B807;
- color: white;
- padding: 4px 10px;
- @include round-borders-all(4px);
- font-size:11px;
- margin: 10px 0;
-}
--- /dev/null
+a {
+ color: $link_color;
+ &:hover { text-decoration:none; }
+}
.wrapper {
margin:auto;
- width:$app_width;
+ min-width:$min_app_width;
+ max-width:$max_app_width;
position:relative;
.top_panel_content {
}
.account-box.hover{height: 138px;}
-
.account-box:hover > .account-links{display: block;}
-header .account-links{
- background: #79C3E0; display: none; border-radius: 5px; width: 100px; margin-top: 0; float: right; box-shadow: 0 1px 1px rgba(0,0,0,.2); position:relative;}
+header .account-links{ background: #79C3E0; display: none; border-radius: 5px; width: 100px; margin-top: 0; float: right; box-shadow: 0 1px 1px rgba(0,0,0,.2); position:relative;}
+
header .account-links:before {
content: ".";
width:0;
position:absolute;
border:5px solid transparent;
border-color:rgba(255,255,255,0);
- border-bottom-color:#fafafa;
+ border-bottom-color:#333;
text-indent:-9999px;
top:-10px;
line-height:0;
z-index:10;
}
-/* Inspired by http://maxvoltar.com/temp/nowplaying/ */
-header .account-links{background: white; display: none; z-index: 100000; border-radius: 5px; width: 100px; position: absolute; right: 20px; top: 46px; margin-top: 0; float: right; box-shadow: 0 1px 1px rgba(0,0,0,.2); }
-header .account-links a{color: #666; padding: 6px 10px; display: block; text-shadow: none; border-bottom: 1px solid #eee}
-header .account-links a:hover{
- background: #3aacec;
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#39acec), to(#279ada), color-stop(.05, #4cbefe));
- background: -moz-linear-gradient(top, #39acec, #4cbefe 5%, #279ada);
- background: linear-gradient(top, #39acec, #4cbefe 5%, #279ada);
- color: #fff;
- text-shadow: #1488c8 0 -1px 0;
+header .account-links{
+ background: #333;
+ display: none;
+ z-index: 100000;
+ border-radius: 5px;
+ width: 100px;
+ position: absolute;
+ right: 20px;
+ top: 46px;
+ margin-top: 0;
+ float: right;
+ box-shadow: 0 1px 1px rgba(0,0,0,.2);
}
+
+header .account-links a{color: #EEE; padding: 6px 10px; display: block; text-shadow: none; border-bottom: 1px solid #555}
+header .account-links a:hover{ background: #444;}
.account-box.hover .arrow-up{top: 41px; right: 6px; position: absolute}
header .account-links a:first-child{
-webkit-border-top-left-radius: 5px;
Issues
= link_to wall_project_path(@project), :class => current_page?(:controller => "projects", :action => "wall", :id => @project) ? "current" : nil do
Wall
- - if @project.common_notes.today.count > 0
- %span{ :class => "number" }= @project.common_notes.today.count
= link_to project_merge_requests_path(@project), :class => (controller.controller_name == "merge_requests") ? "current" : nil do
Requests
= @merge_request.created_at.stamp("Aug 21, 2011 9:23pm")
%hr
- %br
- %h3
- = simple_format @merge_request.title
+ %div.well= simple_format @merge_request.title
-.clear
-%br
-%br
-.merge-tabs
- = link_to "#notes", :class => "merge-notes-tab active tab" do
- %span
- Notes
- = link_to "#commits", "data-url" => commits_project_merge_request_path(@project, @merge_request), :class => "merge-commits-tab tab" do
- %span
- Commits
- = link_to "#diffs", "data-url" => diffs_project_merge_request_path(@project, @merge_request), :class => "merge-diffs-tab tab" do
- %span
- Diff
+.tabs
+ %li.active
+ = link_to "#notes", :class => "merge-notes-tab tab" do
+ Notes
+ %li
+ = link_to "#commits", "data-url" => commits_project_merge_request_path(@project, @merge_request), :class => "merge-commits-tab tab" do
+ Commits
+ %li
+ = link_to "#diffs", "data-url" => diffs_project_merge_request_path(@project, @merge_request), :class => "merge-diffs-tab tab" do
+ Diff
- if can?(current_user, :admin_project, @project) || @merge_request.author == current_user
.right
- if @merge_request.closed
- = link_to 'Reopen', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => false }, :status_only => true), :method => :put, :class => "red-button"
+ = link_to 'Reopen', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => false }, :status_only => true), :method => :put, :class => "btn"
- else
- = link_to 'Close', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => true }, :status_only => true), :method => :put, :class => "positive-button", :title => "Close merge request"
+ = link_to 'Close', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => true }, :status_only => true), :method => :put, :class => "btn", :title => "Close merge request"
%img{:src => "/assets/ajax-loader-facebook.gif", :class => "dashboard-loader"}
.merge-request-notes
-#tree-breadcrumbs
- %div
+%ul.breadcrumb
+ %li
= link_to tree_project_ref_path(@project, @ref, :path => nil), :remote => true do
= @project.code
- - tree.breadcrumbs(6) do |link|
- \/
- = link
-
+ - tree.breadcrumbs(6) do |link|
+ \/
+ %li= link
%span.tree_progress
.clear
#tree-content-holder