Feature #7376 » doneratio.patch
app/models/changeset.rb 2013-11-06 08:41:46.000000000 +0100 → app/models/changeset.rb 2013-11-26 19:45:20.000000000 +0100 | ||
---|---|---|
111 | 111 |
(\d+([\.,]\d+)?)h? |
112 | 112 |
) |
113 | 113 |
/x |
114 |
DONERATIO_RE = / |
|
115 |
( |
|
116 |
(100) |
|
117 |
| |
|
118 |
(\d?0) |
|
119 |
) |
|
120 |
/x |
|
114 | 121 | |
115 | 122 |
def scan_comment_for_issue_ids |
116 | 123 |
return if comments.blank? |
... | ... | |
124 | 131 | |
125 | 132 |
referenced_issues = [] |
126 | 133 | |
127 |
comments.scan(/([\s\(\[,-]|^)((#{kw_regexp})[\s:]+)?(#\d+(\s+@#{TIMELOG_RE})?([\s,;&]+#\d+(\s+@#{TIMELOG_RE})?)*)(?=[[:punct:]]|\s|<|$)/i) do |match|
|
|
134 |
comments.scan(/([\s\(\[,-]|^)((#{kw_regexp})[\s:]+)?(#\d+(\s+@#{TIMELOG_RE})?(\s+#{DONERATIO_RE}%)?([\s,;&]+#\d+(\s+@#{TIMELOG_RE})?(\s+#{DONERATIO_RE}%)?)*)(?=[[:punct:]]|\s|<|$)/i) do |match|
|
|
128 | 135 |
action, refs = match[2], match[3] |
129 | 136 |
next unless action.present? || ref_keywords_any |
130 | 137 | |
131 |
refs.scan(/#(\d+)(\s+@#{TIMELOG_RE})?/).each do |m| |
|
132 |
issue, hours = find_referenced_issue_by_id(m[0].to_i), m[2]
|
|
138 |
refs.scan(/#(\d+)(\s+@#{TIMELOG_RE})?(\s+#{DONERATIO_RE}%)?/).each do |m|
|
|
139 |
issue, hours, ratio = find_referenced_issue_by_id(m[0].to_i), m[2], m[17]
|
|
133 | 140 |
if issue |
134 | 141 |
referenced_issues << issue |
142 |
done_ratio(issue, ratio) if ratio && Setting.commit_doneratio_enabled? && !fix_keywords.include?(action.to_s.downcase) |
|
135 | 143 |
fix_issue(issue) if fix_keywords.include?(action.to_s.downcase) |
136 | 144 |
log_time(issue, hours) if hours && Setting.commit_logtime_enabled? |
137 | 145 |
end |
... | ... | |
258 | 266 |
end |
259 | 267 |
end |
260 | 268 | |
269 |
def done_ratio(issue, ratio) |
|
270 |
status = IssueStatus.find_by_id(Setting.commit_doneratio_inprogress_id.to_i) |
|
271 |
if status.nil? |
|
272 |
logger.warn("No status matches commit_doneratio_inprogress_id setting (#{Setting.commit_doneratio_inprogress_id})") if logger |
|
273 |
end |
|
274 | ||
275 |
issue.reload |
|
276 |
journal = issue.init_journal(user || User.anonymous, ll(Setting.default_language, :text_status_changed_by_changeset, text_tag(issue.project))) |
|
277 |
issue.done_ratio = ratio.to_i |
|
278 |
issue.status = status if status |
|
279 |
unless issue.save |
|
280 |
logger.warn("Issue ##{issue.id} could not be saved by changeset #{id}: #{issue.errors.full_messages}") if logger |
|
281 |
end |
|
282 |
issue |
|
283 |
end |
|
284 | ||
261 | 285 |
def split_comments |
262 | 286 |
comments =~ /\A(.+?)\r?\n(.*)$/m |
263 | 287 |
@short_comments = $1 || comments |
app/views/settings/_repositories.html.erb 2013-11-06 08:41:28.000000000 +0100 → app/views/settings/_repositories.html.erb 2013-11-26 19:22:21.000000000 +0100 | ||
---|---|---|
80 | 80 | |
81 | 81 |
<p><%= setting_check_box :commit_cross_project_ref %></p> |
82 | 82 | |
83 |
<p><%= setting_check_box :commit_doneratio_enabled, |
|
84 |
:onclick => |
|
85 |
"if (this.checked) { $('#settings_commit_doneratio_inprogess_id').removeAttr('disabled'); } else { $('#settings_commit_doneratio_inprogress_id').attr('disabled', true); }"%></p> |
|
86 | ||
87 |
<p><%= setting_select :commit_doneratio_inprogress_id, |
|
88 |
[[l(:label_default), 2]] + |
|
89 |
IssueStatus.sorted.all.collect{|status| [status.name, status.id.to_s]}, |
|
90 |
:disabled => !Setting.commit_doneratio_enabled?%></p> |
|
91 | ||
83 | 92 |
<p><%= setting_check_box :commit_logtime_enabled, |
84 | 93 |
:onclick => |
85 | 94 |
"if (this.checked) { $('#settings_commit_logtime_activity_id').removeAttr('disabled'); } else { $('#settings_commit_logtime_activity_id').attr('disabled', true); }"%></p> |
config/locales/de.yml 2013-11-06 08:39:03.000000000 +0100 → config/locales/de.yml 2013-11-26 19:04:27.000000000 +0100 | ||
---|---|---|
949 | 949 |
setting_bcc_recipients: E-Mails als Blindkopie (BCC) senden |
950 | 950 |
setting_cache_formatted_text: Formatierten Text im Cache speichern |
951 | 951 |
setting_commit_cross_project_ref: Erlauben auf Tickets aller anderen Projekte zu referenzieren |
952 |
setting_commit_doneratio_enabled: Aktiviere Fertigstellung |
|
953 |
setting_commit_doneratio_inprogress_id: Bearbeitungsstatus für erledigt |
|
952 | 954 |
setting_commit_fix_keywords: Schlüsselwörter (Status) |
953 | 955 |
setting_commit_logtime_activity_id: Aktivität für die Zeiterfassung |
954 | 956 |
setting_commit_logtime_enabled: Aktiviere Zeitlogging |
config/locales/en-GB.yml 2013-11-06 08:38:58.000000000 +0100 → config/locales/en-GB.yml 2013-11-26 19:02:02.000000000 +0100 | ||
---|---|---|
366 | 366 |
setting_rest_api_enabled: Enable REST web service |
367 | 367 |
setting_cache_formatted_text: Cache formatted text |
368 | 368 |
setting_default_notification_option: Default notification option |
369 |
setting_commit_doneratio_enabled: Enable done ratio logging |
|
370 |
setting_commit_doneratio_inprogress_id: Progressing status for done ratio |
|
369 | 371 |
setting_commit_logtime_enabled: Enable time logging |
370 | 372 |
setting_commit_logtime_activity_id: Activity for logged time |
371 | 373 |
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart |
config/locales/en.yml 2013-11-06 08:38:56.000000000 +0100 → config/locales/en.yml 2013-11-26 19:01:50.000000000 +0100 | ||
---|---|---|
387 | 387 |
setting_rest_api_enabled: Enable REST web service |
388 | 388 |
setting_cache_formatted_text: Cache formatted text |
389 | 389 |
setting_default_notification_option: Default notification option |
390 |
setting_commit_doneratio_enabled: Enable done ratio logging |
|
391 |
setting_commit_doneratio_inprogress_id: Progressing status for done ratio |
|
390 | 392 |
setting_commit_logtime_enabled: Enable time logging |
391 | 393 |
setting_commit_logtime_activity_id: Activity for logged time |
392 | 394 |
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart |
config/settings.yml 2013-11-06 08:39:03.000000000 +0100 → config/settings.yml 2013-11-26 19:14:48.000000000 +0100 | ||
---|---|---|
113 | 113 |
default: 0 |
114 | 114 |
commit_fix_done_ratio: |
115 | 115 |
default: 100 |
116 |
commit_doneratio_enabled: |
|
117 |
default: 0 |
|
118 |
commit_doneratio_inprogress_id: |
|
119 |
format: int |
|
120 |
default: 2 |
|
116 | 121 |
commit_logtime_enabled: |
117 | 122 |
default: 0 |
118 | 123 |
commit_logtime_activity_id: |
- « Previous
- 1
- 2
- Next »