Defect #32125
closed
Issues autocomplete may not find issues with a subject longer than 60 characters
Added by Mizuki ISHIKAWA about 6 years ago.
Updated over 5 years ago.
Description
Reproduction procedure:
- Create a issue with subject "-------------------The quick brown fox jumps over the lazy dog."(Subject longer than 60 characters)
- Check if the created issue is complete (In the textarea of other issues).
- Write "#brown" => autocompleted
- Write "#dog" => not autocompleted
"https://----------/issues/auto_complete?q=dog" will return the result as shown below.
[{"id":1,"label":"Bug #1: -------------------The quick brown fox jumps over the laz...","value":1}]
Although the created issue is returned, the label is omitted on the way and the character string such as dog is not included.
(http://www.redmine.org/projects/redmine/repository/entry/trunk/app/controllers/auto_completes_controller.rb#L58)
I think that tribute.js has removed it from the candidate because the search keyword is not included in label.
Files
Do I need to return a subject that is shortened to 60 characters?
If not, you can fix the problem by making the changes below.
diff --git a/app/controllers/auto_completes_controller.rb b/app/controllers/auto_completes_controller.rb
index 336885349..bbe5b13ed 100644
--- a/app/controllers/auto_completes_controller.rb
+++ b/app/controllers/auto_completes_controller.rb
@@ -55,7 +55,7 @@ class AutoCompletesController < ApplicationController
def format_issues_json(issues)
issues.map {|issue| {
'id' => issue.id,
- 'label' => "#{issue.tracker} ##{issue.id}: #{issue.subject.to_s.truncate(60)}",
+ 'label' => "#{issue.tracker} ##{issue.id}: #{issue.subject}",
'value' => issue.id
}
}
I don't think the truncation is necessary. Even if the truncation is necessary, 60 characters long is too short. It can be raised to 255, the maximum length of string in ActiveRecord.
- Target version set to Candidate for next major release
After applying the patch, the autocomplete dropdown gets too wide when it includes long subjects. I think we should somehow limit the width of the dropdown when removing truncate(60).
truncate(60) was added in r10068, when Prototype and script.aculo.us were replaced with JQuery. Maybe the replacement caused the issue I described above and truncate(60) was added as a workaround for that.
Go MAEDA wrote:
After applying the patch, the autocomplete dropdown gets too wide when it includes long subjects.
Screenshot of that.

Go MAEDA wrote:
After applying the patch, the autocomplete dropdown gets too wide when it includes long subjects. I think we should somehow limit the width of the dropdown when removing truncate(60).
I attached a patch that omits the subject line if the width exceeds 400px.


- Target version changed from Candidate for next major release to 4.2.0
Setting the target version to 4.2.0.
I have updated the patch to cleanly applicable after r19769. And I slightly modified as follows:
- Instead of removing
truncate(60) from source:tags/4.1.1/app/controllers/auto_completes_controller.rb#L59, changed to truncate(255). Although the maximum length of a subject is limited to 255 by database schema, the change guarantees that the length of a subject in JSON data will never exceed 255.
- Since it is ensured that the length of the Subject does not exceed 255, we can say that UI issues due to abnormally long subjects unlikely to occur. So, I simplify the change against CSS. I have removed
white-space, text-overflow, and overflow properties from the previous patch.
- Subject changed from Long subject issue may not autocomplete with #keyword to Issues autocomplete may not find issues with a subject longer than 60 characters
- Status changed from New to Closed
- Assignee set to Go MAEDA
- Resolution set to Fixed
Committed the fix. Thank you.
- Status changed from Closed to Reopened
- Resolution deleted (
Fixed)
Reverted r19773.
The revert was necessary to revert r19769 because r19773 depends on the commit.
- Status changed from Reopened to Closed
- Resolution set to Fixed
Go MAEDA wrote:
Reverted r19773.
The revert was necessary to revert r19769 because r19773 depends on the commit.
Committed the patch again.
Also available in: Atom
PDF