diff --git a/Gemfile.lock b/Gemfile.lock index 5ca1d43a87..fa797216a8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -60,7 +60,7 @@ GIT GIT remote: https://github.com/opf/openproject-translations.git - revision: 03c6ba2095c610180623d49591837ce694ec9e4c + revision: 495075444d0227625ea064907a629197e107b3e9 branch: release/6.1 specs: openproject-translations (6.1.2) diff --git a/app/assets/fonts/lato/Lato-Bold.eot b/app/assets/fonts/lato/Lato-Bold.eot deleted file mode 100644 index 4e6781f114..0000000000 Binary files a/app/assets/fonts/lato/Lato-Bold.eot and /dev/null differ diff --git a/app/assets/fonts/lato/Lato-Bold.ttf b/app/assets/fonts/lato/Lato-Bold.ttf deleted file mode 100644 index 20d2be3c2f..0000000000 Binary files a/app/assets/fonts/lato/Lato-Bold.ttf and /dev/null differ diff --git a/app/assets/fonts/lato/Lato-Bold.woff b/app/assets/fonts/lato/Lato-Bold.woff index f5a838e71b..c6dff51f06 100644 Binary files a/app/assets/fonts/lato/Lato-Bold.woff and b/app/assets/fonts/lato/Lato-Bold.woff differ diff --git a/app/assets/fonts/lato/Lato-Bold.woff2 b/app/assets/fonts/lato/Lato-Bold.woff2 new file mode 100644 index 0000000000..bb195043cf Binary files /dev/null and b/app/assets/fonts/lato/Lato-Bold.woff2 differ diff --git a/app/assets/fonts/lato/Lato-BoldItalic.eot b/app/assets/fonts/lato/Lato-BoldItalic.eot deleted file mode 100644 index a4de0f6e9c..0000000000 Binary files a/app/assets/fonts/lato/Lato-BoldItalic.eot and /dev/null differ diff --git a/app/assets/fonts/lato/Lato-BoldItalic.ttf b/app/assets/fonts/lato/Lato-BoldItalic.ttf deleted file mode 100644 index 8216f11066..0000000000 Binary files a/app/assets/fonts/lato/Lato-BoldItalic.ttf and /dev/null differ diff --git a/app/assets/fonts/lato/Lato-BoldItalic.woff b/app/assets/fonts/lato/Lato-BoldItalic.woff index a5050afa42..88ad05b9ff 100644 Binary files a/app/assets/fonts/lato/Lato-BoldItalic.woff and b/app/assets/fonts/lato/Lato-BoldItalic.woff differ diff --git a/app/assets/fonts/lato/Lato-BoldItalic.woff2 b/app/assets/fonts/lato/Lato-BoldItalic.woff2 new file mode 100644 index 0000000000..c4e3d804b5 Binary files /dev/null and b/app/assets/fonts/lato/Lato-BoldItalic.woff2 differ diff --git a/app/assets/fonts/lato/Lato-Italic.eot b/app/assets/fonts/lato/Lato-Italic.eot deleted file mode 100644 index 9aa0d65ec3..0000000000 Binary files a/app/assets/fonts/lato/Lato-Italic.eot and /dev/null differ diff --git a/app/assets/fonts/lato/Lato-Italic.ttf b/app/assets/fonts/lato/Lato-Italic.ttf deleted file mode 100644 index 56bd060e23..0000000000 Binary files a/app/assets/fonts/lato/Lato-Italic.ttf and /dev/null differ diff --git a/app/assets/fonts/lato/Lato-Italic.woff b/app/assets/fonts/lato/Lato-Italic.woff index bc6ef6f64a..76114bc033 100644 Binary files a/app/assets/fonts/lato/Lato-Italic.woff and b/app/assets/fonts/lato/Lato-Italic.woff differ diff --git a/app/assets/fonts/lato/Lato-Italic.woff2 b/app/assets/fonts/lato/Lato-Italic.woff2 new file mode 100644 index 0000000000..3404f37e2e Binary files /dev/null and b/app/assets/fonts/lato/Lato-Italic.woff2 differ diff --git a/app/assets/fonts/lato/Lato-Light.eot b/app/assets/fonts/lato/Lato-Light.eot deleted file mode 100644 index b12350696a..0000000000 Binary files a/app/assets/fonts/lato/Lato-Light.eot and /dev/null differ diff --git a/app/assets/fonts/lato/Lato-Light.ttf b/app/assets/fonts/lato/Lato-Light.ttf deleted file mode 100644 index a696bd6bd1..0000000000 Binary files a/app/assets/fonts/lato/Lato-Light.ttf and /dev/null differ diff --git a/app/assets/fonts/lato/Lato-Light.woff b/app/assets/fonts/lato/Lato-Light.woff index 7fb0b6cd55..77b4e148f7 100644 Binary files a/app/assets/fonts/lato/Lato-Light.woff and b/app/assets/fonts/lato/Lato-Light.woff differ diff --git a/app/assets/fonts/lato/Lato-Light.woff2 b/app/assets/fonts/lato/Lato-Light.woff2 new file mode 100644 index 0000000000..ce49f82217 Binary files /dev/null and b/app/assets/fonts/lato/Lato-Light.woff2 differ diff --git a/app/assets/fonts/lato/Lato-LightItalic.eot b/app/assets/fonts/lato/Lato-LightItalic.eot deleted file mode 100644 index a63ee46167..0000000000 Binary files a/app/assets/fonts/lato/Lato-LightItalic.eot and /dev/null differ diff --git a/app/assets/fonts/lato/Lato-LightItalic.ttf b/app/assets/fonts/lato/Lato-LightItalic.ttf deleted file mode 100644 index 325346fa2c..0000000000 Binary files a/app/assets/fonts/lato/Lato-LightItalic.ttf and /dev/null differ diff --git a/app/assets/fonts/lato/Lato-LightItalic.woff b/app/assets/fonts/lato/Lato-LightItalic.woff index b8f166d559..da3dfa30a4 100644 Binary files a/app/assets/fonts/lato/Lato-LightItalic.woff and b/app/assets/fonts/lato/Lato-LightItalic.woff differ diff --git a/app/assets/fonts/lato/Lato-LightItalic.woff2 b/app/assets/fonts/lato/Lato-LightItalic.woff2 new file mode 100644 index 0000000000..0c897ce40c Binary files /dev/null and b/app/assets/fonts/lato/Lato-LightItalic.woff2 differ diff --git a/app/assets/fonts/lato/Lato-Regular.eot b/app/assets/fonts/lato/Lato-Regular.eot deleted file mode 100644 index 4a24f2d83d..0000000000 Binary files a/app/assets/fonts/lato/Lato-Regular.eot and /dev/null differ diff --git a/app/assets/fonts/lato/Lato-Regular.ttf b/app/assets/fonts/lato/Lato-Regular.ttf deleted file mode 100644 index de629a5ac0..0000000000 Binary files a/app/assets/fonts/lato/Lato-Regular.ttf and /dev/null differ diff --git a/app/assets/fonts/lato/Lato-Regular.woff b/app/assets/fonts/lato/Lato-Regular.woff index db6cc16ef7..ae1307ff5f 100644 Binary files a/app/assets/fonts/lato/Lato-Regular.woff and b/app/assets/fonts/lato/Lato-Regular.woff differ diff --git a/app/assets/fonts/lato/Lato-Regular.woff2 b/app/assets/fonts/lato/Lato-Regular.woff2 new file mode 100644 index 0000000000..3bf9843328 Binary files /dev/null and b/app/assets/fonts/lato/Lato-Regular.woff2 differ diff --git a/app/assets/fonts/lato/OFL.txt b/app/assets/fonts/lato/OFL.txt old mode 100644 new mode 100755 index 2a4e614f6e..6d2c4160b0 --- a/app/assets/fonts/lato/OFL.txt +++ b/app/assets/fonts/lato/OFL.txt @@ -1,94 +1,94 @@ -Copyright (c) 2010-2014, Łukasz Dziedzic (dziedzic@typoland.com), -with Reserved Font Name Lato. - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. +Copyright (c) 2010-2015, Łukasz Dziedzic (dziedzic@typoland.com), +with Reserved Font Name Lato. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/app/assets/stylesheets/fonts/_lato.sass b/app/assets/stylesheets/fonts/_lato.sass index 03c01f619d..af8e634039 100644 --- a/app/assets/stylesheets/fonts/_lato.sass +++ b/app/assets/stylesheets/fonts/_lato.sass @@ -26,7 +26,7 @@ // See doc/COPYRIGHT.rdoc for more details. //++ -$lato-file-formats: eot woff ttf +$lato-file-formats: woff woff2 +font-face(LatoLight, 'lato/Lato-Light', $file-formats: $lato-file-formats) +font-face(LatoLight, 'lato/Lato-LightItalic', normal, italic, $file-formats: $lato-file-formats) diff --git a/app/models/category.rb b/app/models/category.rb index 4a55cf9f05..c83100b865 100644 --- a/app/models/category.rb +++ b/app/models/category.rb @@ -34,7 +34,7 @@ class Category < ActiveRecord::Base validates_presence_of :name validates_uniqueness_of :name, scope: [:project_id] - validates_length_of :name, maximum: 30 + validates_length_of :name, maximum: 256 # validates that assignee is member of the issue category's project validates_each :assigned_to_id do |record, attr, value| diff --git a/app/models/user.rb b/app/models/user.rb index 9c621a01ed..d939f92746 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -147,7 +147,7 @@ class User < Principal } scope :admin, -> { where(admin: true) } - scope :newest, -> { order(created_on: :desc) } + scope :newest, -> { not_builtin.order(created_on: :desc) } def sanitize_mail_notification_setting self.mail_notification = Setting.default_notification_option if mail_notification.blank? diff --git a/app/views/homescreen/blocks/_users.html.erb b/app/views/homescreen/blocks/_users.html.erb index 24d03afd25..2183a68f34 100644 --- a/app/views/homescreen/blocks/_users.html.erb +++ b/app/views/homescreen/blocks/_users.html.erb @@ -8,10 +8,10 @@ <% unless @newest_users.empty? %> <% end %> diff --git a/db/migrate/201612131919190_remove_category_name_restriction.rb b/db/migrate/201612131919190_remove_category_name_restriction.rb new file mode 100644 index 0000000000..e6ffb6e677 --- /dev/null +++ b/db/migrate/201612131919190_remove_category_name_restriction.rb @@ -0,0 +1,5 @@ +class RemoveCategoryNameRestriction < ActiveRecord::Migration[5.0] + def change + change_column :categories, :name, :string, limit: 256 + end +end diff --git a/doc/operation_guides/incoming_emails.md b/doc/operation_guides/incoming_emails.md index cf03cd9e35..701f30d968 100644 --- a/doc/operation_guides/incoming_emails.md +++ b/doc/operation_guides/incoming_emails.md @@ -77,9 +77,25 @@ But then no other value is possible (even when you update the work package) unle ### Work Packages +#### Sending user address + +The address the mail is sent from must match an existing account in order to map the user action. +If a matching account is found, the mail handler impersonates the user to create the ticket. + +If no matching account is found, the mail is rejected. To override this behavior and allow unknown mail address +to create work packages, set the option `no_permission_check=1`. + +**Note**: This feature only provides a mapping of mail to user account, it does not authenticate the user based on the mail. +Since you can easily spoof mail addresses, you should not rely on the authenticity of work packages created that way. + #### Attributes -The Attributes you can use in your email are the same whether you create or update a work package. Only the project is a bit special: If you create a work package and do not specify the project via an environment variable you pass along to the rake task you have to put it into the email. If you specify it via an environment variable or you update a work package you do not need to specify it. +The Attributes you can use in your email are the same whether you create or update a work package. + +Only the `project` attribute is a bit special: + +You must either add `project` to the set of allowed overridden attributes with `allow_override=project,..` in order to use it in a mail, +OR set it as fixed variable with `project=identifier`. The subject of the work package that shall be created is derived from the subject of the email. The body of the email gets parsed and all lines that contain recognized keys are removed. What is left will become the description. diff --git a/frontend/app/components/wp-relations/wp-relations-create/add-child.template.html b/frontend/app/components/wp-relations/wp-relations-create/add-child.template.html index 251b420982..c53657025c 100644 --- a/frontend/app/components/wp-relations/wp-relations-create/add-child.template.html +++ b/frontend/app/components/wp-relations/wp-relations-create/add-child.template.html @@ -40,6 +40,7 @@
diff --git a/frontend/app/components/wp-relations/wp-relations-create/dynamic-relation-types.template.html b/frontend/app/components/wp-relations/wp-relations-create/dynamic-relation-types.template.html index b07f244fc3..344bf17ff4 100644 --- a/frontend/app/components/wp-relations/wp-relations-create/dynamic-relation-types.template.html +++ b/frontend/app/components/wp-relations/wp-relations-create/dynamic-relation-types.template.html @@ -35,7 +35,7 @@
diff --git a/frontend/app/components/wp-relations/wp-relations-create/wp-relations-create.directive.ts b/frontend/app/components/wp-relations/wp-relations-create/wp-relations-create.directive.ts index 9d1a6dcde2..e6917dc8b0 100644 --- a/frontend/app/components/wp-relations/wp-relations-create/wp-relations-create.directive.ts +++ b/frontend/app/components/wp-relations/wp-relations-create/wp-relations-create.directive.ts @@ -19,6 +19,7 @@ export class WorkPackageRelationsCreateController { public canAddChildren = !!this.workPackage.addChild; public canLinkChildren = !!this.workPackage.changeParent; public loadingPromise = false; + public isDisabled = false; constructor(protected I18n, protected $scope:ng.IScope, @@ -55,20 +56,26 @@ export class WorkPackageRelationsCreateController { return; } + let promise; + this.isDisabled = true; switch (this.selectedRelationType) { case 'parent': - this.changeParent(); + promise = this.changeParent(); break; case 'children': - this.addExistingChildRelation(); + promise = this.addExistingChildRelation(); break; default: - this.createCommonRelation(); + promise = this.createCommonRelation(); } + + promise.finally(() => { + this.isDisabled = false; + }); } protected addExistingChildRelation() { - this.wpRelationsHierarchyService.addExistingChildWp(this.workPackage, this.selectedWpId) + return this.wpRelationsHierarchyService.addExistingChildWp(this.workPackage, this.selectedWpId) .then(() => this.wpCacheService.loadWorkPackage( this.workPackage.id, true)) .catch(err => this.wpNotificationsService.handleErrorResponse(err, this.workPackage)) .finally(() => this.toggleRelationsCreateForm()); @@ -80,18 +87,18 @@ export class WorkPackageRelationsCreateController { protected changeParent() { this.toggleRelationsCreateForm(); - this.wpRelationsHierarchyService.changeParent(this.workPackage, this.selectedWpId) + return this.wpRelationsHierarchyService.changeParent(this.workPackage, this.selectedWpId) .then(updatedWp => { this.wpNotificationsService.showSave(this.workPackage); this.$timeout(() => { angular.element('#hierarchy--parent').focus(); }); }) - .catch(err => this.wpNotificationsService.handleErrorResponse(err, this.workPackage)) + .catch(err => this.wpNotificationsService.handleErrorResponse(err, this.workPackage)); } protected createCommonRelation() { - this.wpRelationsService.addCommonRelation(this.workPackage, this.selectedRelationType, this.selectedWpId) + return this.wpRelationsService.addCommonRelation(this.workPackage, this.selectedRelationType, this.selectedWpId) .then(relation => { this.$scope.$emit('wp-relations.changed', relation); this.wpNotificationsService.showSave(this.workPackage); diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 42d2d5925b..c2d7f867df 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -642,4 +642,14 @@ describe User, type: :model do end end end + + describe 'scope.newest' do + let!(:anonymous) { FactoryGirl.create(:anonymous) } + let!(:user1) { FactoryGirl.create(:user) } + let!(:user2) { FactoryGirl.create(:user) } + + it 'without anonymous user' do + expect(User.newest).to match_array([user1, user2]) + end + end end