12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- # Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
- module Ticket::Subject
- =begin
- build new subject with ticket number in there
- ticket = Ticket.find(123)
- result = ticket.subject_build('some subject', is_reply_true_false)
- returns
- result = "[Ticket#1234567] some subject"
- =end
- def subject_build(subject, is_reply = false)
- # clena subject
- subject = subject_clean(subject)
- ticket_hook = Setting.get('ticket_hook')
- ticket_hook_divider = Setting.get('ticket_hook_divider')
- ticket_subject_re = Setting.get('ticket_subject_re')
- # none position
- if Setting.get('ticket_hook_position') == 'none'
- if is_reply && ticket_subject_re.present?
- subject = "#{ticket_subject_re}: #{subject}"
- end
- return subject
- end
- # right position
- if Setting.get('ticket_hook_position') == 'right'
- if is_reply && ticket_subject_re.present?
- subject = "#{ticket_subject_re}: #{subject}"
- end
- return "#{subject} [#{ticket_hook}#{ticket_hook_divider}#{number}]"
- end
- # left position
- if is_reply && ticket_subject_re.present?
- return "#{ticket_subject_re}: [#{ticket_hook}#{ticket_hook_divider}#{number}] #{subject}"
- end
- "[#{ticket_hook}#{ticket_hook_divider}#{number}] #{subject}"
- end
- =begin
- clean subject remove ticket number and other not needed chars
- ticket = Ticket.find(123)
- result = ticket.subject_clean('[Ticket#1234567] some subject')
- returns
- result = "some subject"
- =end
- def subject_clean(subject)
- ticket_hook = Setting.get('ticket_hook')
- ticket_hook_divider = Setting.get('ticket_hook_divider')
- ticket_subject_size = Setting.get('ticket_subject_size')
- # remove all possible ticket hook formats with []
- subject = subject.gsub(/\[#{ticket_hook}: #{number}\](\s+?|)/, '')
- subject = subject.gsub(/\[#{ticket_hook}:#{number}\](\s+?|)/, '')
- subject = subject.gsub(/\[#{ticket_hook}#{ticket_hook_divider}#{number}\](\s+?|)/, '')
- # remove all possible ticket hook formats without []
- subject = subject.gsub(/#{ticket_hook}: #{number}(\s+?|)/, '')
- subject = subject.gsub(/#{ticket_hook}:#{number}(\s+?|)/, '')
- subject = subject.gsub(/#{ticket_hook}#{ticket_hook_divider}#{number}(\s+?|)/, '')
- # remove leading "..:\s" and "..[\d+]:\s" e. g. "Re: " or "Re[5]: "
- subject = subject.gsub(/^(..(\[\d+\])?:\s)+/, '')
- # resize subject based on config
- if subject.length > ticket_subject_size.to_i
- subject = subject[ 0, ticket_subject_size.to_i ] + '[...]'
- end
- subject.strip!
- subject
- end
- end
|