Move backlogs styles into frontend

Introduces a hidden div for stuff within an angular layout so that
a frontend backlogs component can show stuff rendered by Rails after its
css got loaded.

This is a workaround until backlogs gets replaced by an actual frontend
module, but still allows us to lazily load CSS from angular while
rendering the rest in Rails
pull/8484/head
Oliver Günther 4 years ago
parent 2366996809
commit b38a5e7e83
No known key found for this signature in database
GPG Key ID: A3A8BDAD7C0C552C
  1. 5
      app/views/layouts/angular.html.erb
  2. 5
      frontend/src/app/global-dynamic-components.const.ts
  3. 3
      frontend/src/app/init-vendors.ts
  4. 19
      frontend/src/app/modules/backlogs/backlogs-page/backlogs-page.component.ts
  5. 10
      frontend/src/app/modules/backlogs/backlogs-page/styles/backlogs.sass
  6. 0
      frontend/src/app/modules/backlogs/backlogs-page/styles/global.css
  7. 0
      frontend/src/app/modules/backlogs/backlogs-page/styles/global_print.css
  8. 185
      frontend/src/app/modules/backlogs/backlogs-page/styles/jqplot.css
  9. 4
      frontend/src/app/modules/backlogs/backlogs-page/styles/master_backlog.sass
  10. 0
      frontend/src/app/modules/backlogs/backlogs-page/styles/statistics.css
  11. 9
      frontend/src/app/modules/backlogs/backlogs-page/styles/taskboard.sass
  12. 48
      frontend/src/app/modules/backlogs/openproject-backlogs.module.ts
  13. 51
      frontend/src/app/modules/backlogs/openproject-backlogs.routes.ts
  14. 6
      frontend/src/app/modules/router/openproject.routes.ts
  15. BIN
      frontend/src/assets/images/loading.gif
  16. 3
      frontend/src/global_styles/content/_ajax_indicator.sass
  17. 37
      modules/backlogs/app/assets/stylesheets/backlogs/jqplot.css
  18. 4
      modules/backlogs/app/controllers/rb_application_controller.rb
  19. 83
      modules/backlogs/app/views/hooks/backlogs/_view_work_packages_form_details_bottom.html.erb
  20. 1
      modules/backlogs/app/views/rb_burndown_charts/show.html.erb
  21. 1
      modules/backlogs/app/views/rb_master_backlogs/index.html.erb
  22. 2
      modules/backlogs/app/views/rb_taskboards/show.html.erb
  23. 1
      modules/backlogs/app/views/shared/_backlogs_header.html.erb
  24. 9
      modules/backlogs/lib/open_project/backlogs/engine.rb
  25. 6
      modules/backlogs/lib/open_project/backlogs/hooks.rb

@ -37,6 +37,11 @@ See docs/COPYRIGHT.rdoc for more details.
<%= content_for :content_body do %>
<openproject-base></openproject-base>
<%# Allow projection pages to show rails rendered content after initialization %>
<div id="projected-content" hidden>
<%= yield %>
</div>
<% end -%>
<%= render template: 'layouts/base', locals: local_assigns.merge({ no_action_menu: true }) %>

@ -134,6 +134,10 @@ import {
TriggerActionsEntryComponent,
triggerActionsEntryComponentSelector
} from "core-app/modules/time_entries/edit/trigger-actions-entry.component";
import {
BacklogsPageComponent,
backlogsPageComponentSelector
} from "core-app/modules/backlogs/backlogs-page/backlogs-page.component";
export const globalDynamicComponents:OptionalBootstrapDefinition[] = [
{ selector: appBaseSelector, cls: ApplicationBaseComponent },
@ -175,6 +179,7 @@ export const globalDynamicComponents:OptionalBootstrapDefinition[] = [
{ selector: wpOverviewGraphSelector, cls: WorkPackageOverviewGraphComponent },
{ selector: wpQuerySelectSelector, cls: WorkPackageQuerySelectDropdownComponent },
{ selector: triggerActionsEntryComponentSelector, cls: TriggerActionsEntryComponent, embeddable: true },
{ selector: backlogsPageComponentSelector, cls: BacklogsPageComponent },
];

@ -54,7 +54,10 @@ require('@uirouter/angular');
// Jquery UI
require('jquery-ui/ui/core.js');
require('jquery-ui/ui/position.js');
require('jquery-ui/ui/disable-selection.js');
require('jquery-ui/ui/widgets/sortable.js');
require('jquery-ui/ui/widgets/autocomplete.js');
require('jquery-ui/ui/widgets/dialog.js');
require('jquery-ui/ui/widgets/tooltip.js');
require('expose-loader?moment!moment');

@ -0,0 +1,19 @@
import {Component, OnInit, ViewEncapsulation} from "@angular/core";
export const backlogsPageComponentSelector = 'op-backlogs-page';
@Component({
selector: backlogsPageComponentSelector,
// Empty wrapper around legacy backlogs for CSS loading
// that got removed in the Rails assets pipeline
encapsulation: ViewEncapsulation.None,
template: '',
styleUrls: [
'./styles/backlogs.sass'
]
})
export class BacklogsPageComponent implements OnInit {
ngOnInit() {
document.getElementById('projected-content').hidden = false;
}
}

@ -33,7 +33,9 @@
* See docs/COPYRIGHT.rdoc for more details.
*/
@import backlogs/global
@import backlogs/global_print
@import backlogs/jqplot
@import backlogs/statistics
@import global
@import global_print
@import jqplot
@import statistics
@import master_backlog
@import taskboard

@ -0,0 +1,185 @@
/*-- copyright
OpenProject Backlogs Plugin
Copyright (C)2013-2014 the OpenProject Foundation (OPF)
Copyright (C)2011 Stephan Eckardt, Tim Felgentreff, Marnen Laibow-Koser, Sandro Munda
Copyright (C)2010-2011 friflaj
Copyright (C)2010 Maxime Guilbot, Andrew Vit, Joakim Kolsjö, ibussieres, Daniel Passos, Jason Vasquez, jpic, Emiliano Heyns
Copyright (C)2009-2010 Mark Maglana
Copyright (C)2009 Joe Heck, Nate Lowrie
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License version 3.
OpenProject Backlogs is a derivative work based on ChiliProject Backlogs.
The copyright follows:
Copyright (C) 2010-2011 - Emiliano Heyns, Mark Maglana, friflaj
Copyright (C) 2011 - Jens Ulferts, Gregor Schmidt - Finn GmbH - Berlin, Germany
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
See docs/COPYRIGHT.rdoc for more details.
++*/
.jqplot-target {
position: relative;
color: #666;
font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
font-size: 1em;
}
.jqplot-axis {
font-size: .75em;
}
.jqplot-xaxis {
margin-top: 10px;
}
.jqplot-x2axis {
margin-bottom: 10px;
}
.jqplot-yaxis {
margin-right: 10px;
}
.jqplot-y2axis, .jqplot-y3axis, .jqplot-y4axis, .jqplot-y5axis, .jqplot-y6axis, .jqplot-y7axis, .jqplot-y8axis, .jqplot-y9axis {
margin-left: 10px;
margin-right: 10px;
}
.jqplot-axis-tick, .jqplot-xaxis-tick, .jqplot-yaxis-tick, .jqplot-x2axis-tick, .jqplot-y2axis-tick, .jqplot-y3axis-tick, .jqplot-y4axis-tick, .jqplot-y5axis-tick, .jqplot-y6axis-tick, .jqplot-y7axis-tick, .jqplot-y8axis-tick, .jqplot-y9axis-tick {
position: absolute;
}
.jqplot-xaxis-tick {
top: 0;
left: 15px;
vertical-align: top;
}
.jqplot-x2axis-tick {
bottom: 0;
left: 15px;
vertical-align: bottom;
}
.jqplot-yaxis-tick {
right: 0;
top: 15px;
text-align: right;
}
.jqplot-y2axis-tick, .jqplot-y3axis-tick, .jqplot-y4axis-tick, .jqplot-y5axis-tick, .jqplot-y6axis-tick, .jqplot-y7axis-tick, .jqplot-y8axis-tick, .jqplot-y9axis-tick {
left: 0;
top: 15px;
text-align: left;
}
.jqplot-xaxis-label {
margin-top: 10px;
font-size: 11pt;
position: absolute;
}
.jqplot-x2axis-label {
margin-bottom: 10px;
font-size: 11pt;
position: absolute;
}
.jqplot-yaxis-label {
margin-right: 10px;
font-size: 11pt;
position: absolute;
}
.jqplot-y2axis-label, .jqplot-y3axis-label, .jqplot-y4axis-label, .jqplot-y5axis-label, .jqplot-y6axis-label, .jqplot-y7axis-label, .jqplot-y8axis-label, .jqplot-y9axis-label {
font-size: 11pt;
position: absolute;
}
table.jqplot-table-legend, table.jqplot-cursor-legend {
background-color: rgba(255, 255, 255, 0.6);
border: 1px solid #ccc;
position: absolute;
font-size: .75em;
}
td.jqplot-table-legend {
vertical-align: middle;
}
td.jqplot-table-legend > div {
border: 1px solid #ccc;
padding: .2em;
}
div.jqplot-table-legend-swatch {
width: 0;
height: 0;
border-top-width: .35em;
border-bottom-width: .35em;
border-left-width: .6em;
border-right-width: .6em;
border-top-style: solid;
border-bottom-style: solid;
border-left-style: solid;
border-right-style: solid;
}
.jqplot-title {
top: 0;
left: 0;
padding-bottom: .5em;
font-size: 1.2em;
}
table.jqplot-cursor-tooltip {
border: 1px solid #ccc;
font-size: .75em;
}
.jqplot-cursor-tooltip {
border: 1px solid #ccc;
font-size: .75em;
white-space: nowrap;
background: rgba(208, 208, 208, 0.5);
padding: 1px;
}
.jqplot-highlighter-tooltip {
border: 1px solid #ccc;
font-size: .75em;
white-space: nowrap;
background: rgba(208, 208, 208, 0.5);
padding: 1px;
}
.jqplot-point-label {
font-size: .75em;
}
td.jqplot-cursor-legend-swatch {
vertical-align: middle;
text-align: center;
}
div.jqplot-cursor-legend-swatch {
width: 1.2em;
height: .7em;
}

@ -164,7 +164,7 @@
margin-left: 30px
margin-right: 50px
&.saving
background-image: image-url("loading.gif")
background-image: url('~assets/images/loading.gif')
background-repeat: no-repeat
background-position: center
&.error.icon-bug
@ -215,7 +215,7 @@
&.even
background-color: #FFF
&.saving
background-image: image-url("loading.gif")
background-image: url('~assets/images/loading.gif')
background-repeat: no-repeat
background-position: center
&.error.icon-bug

@ -26,9 +26,8 @@
* See docs/COPYRIGHT.rdoc for more details. ++
*/
// Todo for task #33508
@import "../../../frontend/src/global_styles/openproject/variables"
@import "../../../frontend/src/global_styles/openproject/functions"
@import "~global_styles/openproject/variables"
@import "~global_styles/openproject/functions"
@mixin story-header
background-color: #FFFFFF
@ -61,7 +60,7 @@
line-height: inherit
white-space: inherit
#rb
#rb #taskboard
overflow-x: auto
#assigned_to_id_options
display: none
@ -182,6 +181,7 @@
display: none
&.saving .indicator
background-image: url('~assets/images/loading.gif')
background-color: #FFFFFF
background-position: center
background-repeat: no-repeat
@ -192,7 +192,6 @@
left: 36px
top: 38px
width: 16px
background-image: image-url("loading.gif")
display: block
&.error .indicator

@ -0,0 +1,48 @@
// -- copyright
// OpenProject is an open source project management software.
// Copyright (C) 2012-2020 the OpenProject GmbH
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License version 3.
//
// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
// Copyright (C) 2006-2013 Jean-Philippe Lang
// Copyright (C) 2010-2013 the ChiliProject Team
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
// See docs/COPYRIGHT.rdoc for more details.
// ++
import {NgModule} from '@angular/core';
import {UIRouterModule} from "@uirouter/angular";
import {BacklogsPageComponent} from "core-app/modules/backlogs/backlogs-page/backlogs-page.component";
import {BACKLOGS_ROUTES, uiRouterBacklogsConfiguration} from "core-app/modules/backlogs/openproject-backlogs.routes";
@NgModule({
imports: [
// Routes for /boards
UIRouterModule.forChild({
states: BACKLOGS_ROUTES,
config: uiRouterBacklogsConfiguration
}),
],
declarations: [
BacklogsPageComponent
]
})
export class OpenprojectBacklogsModule {
}

@ -0,0 +1,51 @@
// -- copyright
// OpenProject is an open source project management software.
// Copyright (C) 2012-2020 the OpenProject GmbH
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License version 3.
//
// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
// Copyright (C) 2006-2013 Jean-Philippe Lang
// Copyright (C) 2010-2013 the ChiliProject Team
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
// See docs/COPYRIGHT.rdoc for more details.
// ++
import {Ng2StateDeclaration, UIRouter} from "@uirouter/angular";
import {BacklogsPageComponent} from "core-app/modules/backlogs/backlogs-page/backlogs-page.component";
export const BACKLOGS_ROUTES:Ng2StateDeclaration[] = [
{
name: 'backlogs',
parent: 'root',
// The trailing slash is important
// cf., https://community.openproject.com/wp/29754
url: '/backlogs/',
component: BacklogsPageComponent
},
];
export function uiRouterBacklogsConfiguration(uiRouter:UIRouter) {
// Ensure backlogs/ are being redirected correctly
// cf., https://community.openproject.com/wp/29754
uiRouter.urlService.rules
.when(
new RegExp("^/projects/(.*)/backlogs$"),
match => `/projects/${match[1]}/backlogs/`
);
}

@ -63,6 +63,12 @@ export const OPENPROJECT_ROUTES:Ng2StateDeclaration[] = [
url: '/bcf',
loadChildren: () => import('../bim/ifc_models/openproject-ifc-models.module').then(m => m.OpenprojectIFCModelsModule)
},
{
name: 'backlogs.**',
parent: 'root',
url: '/backlogs',
loadChildren: () => import('../backlogs/openproject-backlogs.module').then(m => m.OpenprojectBacklogsModule)
},
];
/**

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

@ -48,8 +48,7 @@ html > body #ajax-indicator
#ajax-indicator span, .ajax-indicator
background-position: 0% 40%
background-repeat: no-repeat
// Todo for task #33508
//background-image: image-url("loading.gif")
background-image: url('~assets/images/loading.gif')
padding-left: 26px
vertical-align: bottom

@ -1,37 +0,0 @@
/*-- copyright
OpenProject Backlogs Plugin
Copyright (C)2013-2014 the OpenProject Foundation (OPF)
Copyright (C)2011 Stephan Eckardt, Tim Felgentreff, Marnen Laibow-Koser, Sandro Munda
Copyright (C)2010-2011 friflaj
Copyright (C)2010 Maxime Guilbot, Andrew Vit, Joakim Kolsjö, ibussieres, Daniel Passos, Jason Vasquez, jpic, Emiliano Heyns
Copyright (C)2009-2010 Mark Maglana
Copyright (C)2009 Joe Heck, Nate Lowrie
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License version 3.
OpenProject Backlogs is a derivative work based on ChiliProject Backlogs.
The copyright follows:
Copyright (C) 2010-2011 - Emiliano Heyns, Mark Maglana, friflaj
Copyright (C) 2011 - Jens Ulferts, Gregor Schmidt - Finn GmbH - Berlin, Germany
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
See docs/COPYRIGHT.rdoc for more details.
++*/
.jqplot-target{position:relative;color:#666;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;font-size:1em;}.jqplot-axis{font-size:.75em;}.jqplot-xaxis{margin-top:10px;}.jqplot-x2axis{margin-bottom:10px;}.jqplot-yaxis{margin-right:10px;}.jqplot-y2axis,.jqplot-y3axis,.jqplot-y4axis,.jqplot-y5axis,.jqplot-y6axis,.jqplot-y7axis,.jqplot-y8axis,.jqplot-y9axis{margin-left:10px;margin-right:10px;}.jqplot-axis-tick,.jqplot-xaxis-tick,.jqplot-yaxis-tick,.jqplot-x2axis-tick,.jqplot-y2axis-tick,.jqplot-y3axis-tick,.jqplot-y4axis-tick,.jqplot-y5axis-tick,.jqplot-y6axis-tick,.jqplot-y7axis-tick,.jqplot-y8axis-tick,.jqplot-y9axis-tick{position:absolute;}.jqplot-xaxis-tick{top:0;left:15px;vertical-align:top;}.jqplot-x2axis-tick{bottom:0;left:15px;vertical-align:bottom;}.jqplot-yaxis-tick{right:0;top:15px;text-align:right;}.jqplot-y2axis-tick,.jqplot-y3axis-tick,.jqplot-y4axis-tick,.jqplot-y5axis-tick,.jqplot-y6axis-tick,.jqplot-y7axis-tick,.jqplot-y8axis-tick,.jqplot-y9axis-tick{left:0;top:15px;text-align:left;}.jqplot-xaxis-label{margin-top:10px;font-size:11pt;position:absolute;}.jqplot-x2axis-label{margin-bottom:10px;font-size:11pt;position:absolute;}.jqplot-yaxis-label{margin-right:10px;font-size:11pt;position:absolute;}.jqplot-y2axis-label,.jqplot-y3axis-label,.jqplot-y4axis-label,.jqplot-y5axis-label,.jqplot-y6axis-label,.jqplot-y7axis-label,.jqplot-y8axis-label,.jqplot-y9axis-label{font-size:11pt;position:absolute;}table.jqplot-table-legend,table.jqplot-cursor-legend{background-color:rgba(255,255,255,0.6);border:1px solid #ccc;position:absolute;font-size:.75em;}td.jqplot-table-legend{vertical-align:middle;}td.jqplot-table-legend>div{border:1px solid #ccc;padding:.2em;}div.jqplot-table-legend-swatch{width:0;height:0;border-top-width:.35em;border-bottom-width:.35em;border-left-width:.6em;border-right-width:.6em;border-top-style:solid;border-bottom-style:solid;border-left-style:solid;border-right-style:solid;}.jqplot-title{top:0;left:0;padding-bottom:.5em;font-size:1.2em;}table.jqplot-cursor-tooltip{border:1px solid #ccc;font-size:.75em;}.jqplot-cursor-tooltip{border:1px solid #ccc;font-size:.75em;white-space:nowrap;background:rgba(208,208,208,0.5);padding:1px;}.jqplot-highlighter-tooltip{border:1px solid #ccc;font-size:.75em;white-space:nowrap;background:rgba(208,208,208,0.5);padding:1px;}.jqplot-point-label{font-size:.75em;}td.jqplot-cursor-legend-swatch{vertical-align:middle;text-align:center;}div.jqplot-cursor-legend-swatch{width:1.2em;height:.7em;}

@ -34,6 +34,10 @@ class RbApplicationController < ApplicationController
skip_before_action :verify_authenticity_token, if: -> { Rails.env.test? }
# Render angular layout to handle CSS loading
# from the frontend
layout 'angular'
private
# Loads the project to be used by the authorize filter to determine if

@ -1,83 +0,0 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 2012-2020 the OpenProject GmbH
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License version 3.
OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
Copyright (C) 2006-2017 Jean-Philippe Lang
Copyright (C) 2010-2013 the ChiliProject Team
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
See docs/COPYRIGHT.rdoc for more details.
++#%>
<% work_package = issue %>
<% if work_package.is_story? && params[:copy_from] %>
<div id="backlogs-attributes" class="attributes">
<div class="form--field">
<%= styled_label_tag :link_to_original, l(:rb_label_link_to_original) %>
<span class="form--field-container">
<%= styled_check_box_tag('link_to_original',
params[:copy_from],
true, label: l(:rb_label_link_to_original)) %>
</span>
</div>
<div class="form--grouping" role="group" aria-labelledby="copy-tasks-label">
<div id="copy_tasks_label"
class="form--grouping-label">
<%= l(:rb_label_copy_tasks) %>
</div>
<div class="form--grouping-row">
<div class="form--field">
<span class="form--field-container -vertical">
<span class="form--radio-button-container">
<label class="form--label">
<%= radio_button_tag('copy_tasks',
'open:' + params[:copy_from],
true,
{ id: 'copy_tasks_open' }) %>
<%= l(:rb_label_copy_tasks_open) %>
</label>
</span>
<span class="form--radio-button-container">
<label class="form--label">
<%= radio_button_tag('copy_tasks',
'none',
false,
{ id: 'copy_tasks_none' }) %>
<%= l(:rb_label_copy_tasks_none) %>
</label>
</span>
<span class="form--radio-button-container">
<label class="form--label">
<%= radio_button_tag('copy_tasks',
'all:' + params[:copy_from],
false,
{ id: 'copy_tasks_all' }) %>
<%= l(:rb_label_copy_tasks_all) %>
</label>
</span>
</span>
</div>
</div>
</div>
</div>
<% end %>

@ -29,7 +29,6 @@ See docs/COPYRIGHT.rdoc for more details.
<% content_for :header_tags do %>
<%= render :partial => 'shared/backlogs_header' %>
<%= stylesheet_link_tag 'backlogs/master_backlog.css' %>
<% end %>
<h2>

@ -29,7 +29,6 @@ See docs/COPYRIGHT.rdoc for more details.
<% content_for :header_tags do %>
<%= render :partial => 'shared/backlogs_header' %>
<%= stylesheet_link_tag 'backlogs/master_backlog.css' %>
<% end %>
<div class='contextual'></div>

@ -29,8 +29,8 @@ See docs/COPYRIGHT.rdoc for more details.
<% content_for :header_tags do %>
<%= render :partial => 'shared/backlogs_header' %>
<%= stylesheet_link_tag 'backlogs/taskboard.css' %>
<% end %>
<% html_title @sprint.name %>
<%= toolbar title: @sprint.name do %>
<li class="toolbar-item toolbar-input-group" id="col_width">

@ -27,7 +27,6 @@ See docs/COPYRIGHT.rdoc for more details.
++#%>
<%= stylesheet_link_tag 'backlogs/backlogs.css' %>
<%= javascript_include_tag 'backlogs/backlogs.js' %>
<%= nonced_javascript_tag do %>

@ -105,15 +105,6 @@ module OpenProject::Backlogs
icon: 'icon2 icon-backlogs'
end
assets %w(
backlogs/backlogs.css
backlogs/backlogs.js
backlogs/master_backlog.css
backlogs/taskboard.css
backlogs/jquery.flot/excanvas.js
backlogs/burndown.js
)
# We still override version and project settings views from the core! URH
override_core_views!

@ -65,12 +65,6 @@ module OpenProject::Backlogs::Hooks
class LayoutHook < Redmine::Hook::ViewListener
include RbCommonHelper
# TODO: there are hook implementations in here that need to be ported
# to render a partial instead of returning a hand crafted snippet
render_on :view_work_packages_form_details_bottom,
partial: 'hooks/backlogs/view_work_packages_form_details_bottom'
def view_versions_show_bottom(context = {})
version = context[:version]
project = version.project

Loading…
Cancel
Save