Merge pull request #3491 from basiszwo/21454-new-tabs

[21454] Open work packages in new tabs
pull/3499/head
Oliver Günther 9 years ago
commit 8f20289aac
  1. 4
      .gitignore
  2. 2
      config/routes.rb
  3. 102
      features/timelines/timeline_modal_views.feature
  4. 2
      frontend/app/templates/timelines/timeline_table.html
  5. 15
      frontend/app/timelines/models/mixins/ui.js

4
.gitignore vendored

@ -70,8 +70,8 @@
/tmp/test/*
/*.rbc
/doc/app
/Gemfile.local
/Gemfile.plugins
/Gemfile.local*
/Gemfile.plugins*
/.rvmrc*
/.ruby-version
/.ruby-gemset

@ -315,6 +315,8 @@ OpenProject::Application.routes.draw do
get '/create_new' => 'work_packages#index', on: :collection
end
get '/work_packages/:id(/:tab)' => 'work_packages#index', as: 'work_package'
resources :activity, :activities, only: :index, controller: 'activities'
resources :boards do

@ -31,90 +31,28 @@ Feature: Timeline View Tests
I want edit planning elements via a modal window
Background:
Given there is 1 user with:
| login | manager |
And there is a role "manager"
And the role "manager" may have the following rights:
| view_timelines |
| edit_timelines |
| view_work_packages |
And there is a project named "ecookbook"
And I am working in project "ecookbook"
And there is a timeline "Testline" for project "ecookbook"
And the project uses the following modules:
| timelines |
And the user "manager" is a "manager"
And there are the following work packages:
| Start date | Due date | description | responsible | Subject |
| 2012-01-01 | 2012-01-31 | #2 http://google.de | manager | January |
| 2012-02-01 | 2012-02-24 | Avocado Rincon | manager | February |
And I am already logged in as "manager"
Given there is 1 user with:
| login | manager |
And there is a role "manager"
And the role "manager" may have the following rights:
| view_timelines |
| edit_timelines |
| view_work_packages |
And there is a project named "ecookbook"
And I am working in project "ecookbook"
And there is a timeline "Testline" for project "ecookbook"
And the project uses the following modules:
| timelines |
And the user "manager" is a "manager"
And there are the following work packages:
| Start date | Due date | description | responsible | Subject |
| 2012-01-01 | 2012-01-31 | #2 http://google.de | manager | January |
| 2012-02-01 | 2012-02-24 | Avocado Rincon | manager | February |
And I am already logged in as "manager"
@javascript
Scenario: planning element click should show modal window
When I go to the page of the timeline "Testline" of the project called "ecookbook"
And I wait for timeline to load table
And I click on the Planning Element with name "January"
Then I should see a modal window
And I should see "#1: January" in the modal
And I should see "http://google.de" in the modal
And I should see "01/01/2012" in the modal
And I should see "01/31/2012" in the modal
And I should see "New timeline report"
And I should be on the page of the timeline "Testline" of the project called "ecookbook"
When I ctrl-click on "#2" in the modal
Then I should see "February" in the new window
Then I should see "Avocado Rincon" in the new window
@javascript
Scenario: closing the modal window with changes should display a warning message
When the role "manager" may have the following rights:
| view_timelines |
| edit_timelines |
| view_work_packages |
| edit_work_packages |
And I go to the page of the timeline "Testline" of the project called "ecookbook"
And I wait for timeline to load table
And I click on the Planning Element with name "January"
And I click on the first anchor matching "Update" in the modal
And I fill in "work_package_journal_notes" with "A new comment" in the modal
And I click on the div "ui-dialog-closer"
And I confirm the JS confirm dialog
Then I should not see a modal window
# Hack to ensure that this scenario does not interfere with the next one. As
# closing the modal will trigger the timeline to be reloaded we have to
# ensure, that this request is finished before starting the next scenario.
# Otherwise the data required to successfully finish the request (esp. the
# project) might already be removed for the next senario.
Given I wait for the AJAX requests to finish
@javascript
Scenario: closing the modal window after adding a related work package should not display a warning message
When the role "manager" may have the following rights:
| view_timelines |
| edit_timelines |
| view_work_packages |
| edit_work_packages |
| manage_work_package_relations |
And I go to the page of the timeline "Testline" of the project called "ecookbook"
When I go to the page of the timeline "Testline" of the project called "ecookbook"
And I wait for timeline to load table
And I click on the Planning Element with name "January"
And I click on "Add related work package" in the modal
And I fill in "relation_to_id" with "3" in the modal
And I press "Add" in the modal
And I wait for the AJAX requests to finish
And I click on the div "ui-dialog-closer"
Then I should not see a modal window
# Hack to ensure that this scenario does not interfere with the next one. As
# closing the modal will trigger the timeline to be reloaded we have to
# ensure, that this request is finished before starting the next scenario.
# Otherwise the data required to successfully finish the request (esp. the
# project) might already be removed for the next senario.
Given I wait for the AJAX requests to finish
Then I should see "January" in the new window

@ -50,7 +50,7 @@
</span>
<span>
<a href="{{row.url}}" modal title="{{row.text}}" target="row.url" ng-class="{'tl-discreet-link': true, 'tl-project': rowObjectType === 'Project'}">{{ row.text | characters:40 }}</a>
<a href="{{row.url}}" title="{{row.text}}" target="_blank" ng-class="{'tl-discreet-link': true, 'tl-project': rowObjectType === 'Project'}">{{ row.text | characters:40 }}</a>
</span>
<div ng-show="row.lastVisible" class="tl-invisible" style="height: 15px; width: 15px;"></div>

@ -983,15 +983,12 @@ module.exports = function($timeout) {
e.unhover();
e.click(function(e) {
if (Timeline.USE_MODALS) {
var payload = node.getData();
if (e.which == 1 && !e.ctrlKey && !e.metaKey) {
timeline.modalHelper.createModal(payload.getUrl());
e.stopPropagation();
} else {
window.open(payload.getUrl(), '_blank');
}
}
var payload = node.getData();
var url = payload.getUrl();
window.open(url, '_blank');
e.stopPropagation();
});
e.attr({'cursor': 'pointer'});
e.hover(

Loading…
Cancel
Save