2014-02-03 19:23:00 +00:00
|
|
|
# Copyright (C) 2012-2014 Zammad Foundation, http://zammad-foundation.org/
|
2015-04-27 23:19:26 +00:00
|
|
|
# rubocop:disable ClassAndModuleChildren
|
|
|
|
module Ticket::Subject
|
2013-08-17 20:04:57 +00:00
|
|
|
|
|
|
|
=begin
|
|
|
|
|
|
|
|
build new subject with ticket number in there
|
|
|
|
|
|
|
|
ticket = Ticket.find(123)
|
|
|
|
result = ticket.subject_build('some subject')
|
|
|
|
|
|
|
|
returns
|
|
|
|
|
|
|
|
result = "[Ticket#1234567] some subject"
|
|
|
|
|
|
|
|
=end
|
|
|
|
|
2015-04-27 23:19:26 +00:00
|
|
|
def subject_build (subject)
|
2013-08-17 20:04:57 +00:00
|
|
|
|
2015-04-27 23:19:26 +00:00
|
|
|
# clena subject
|
|
|
|
subject = self.subject_clean(subject)
|
2013-08-17 20:04:57 +00:00
|
|
|
|
2015-04-27 23:19:26 +00:00
|
|
|
ticket_hook = Setting.get('ticket_hook')
|
|
|
|
ticket_hook_divider = Setting.get('ticket_hook_divider')
|
2013-08-17 20:04:57 +00:00
|
|
|
|
2015-04-27 23:19:26 +00:00
|
|
|
# none position
|
|
|
|
if Setting.get('ticket_hook_position') == 'none'
|
|
|
|
return subject
|
|
|
|
end
|
2013-08-17 20:04:57 +00:00
|
|
|
|
2015-04-27 23:19:26 +00:00
|
|
|
# right position
|
|
|
|
if Setting.get('ticket_hook_position') == 'right'
|
|
|
|
return subject + " [#{ticket_hook}#{ticket_hook_divider}#{self.number}] "
|
2015-04-27 21:27:51 +00:00
|
|
|
end
|
2013-08-17 20:04:57 +00:00
|
|
|
|
2015-04-27 23:19:26 +00:00
|
|
|
# left position
|
|
|
|
return "[#{ticket_hook}#{ticket_hook_divider}#{self.number}] " + subject
|
|
|
|
end
|
|
|
|
|
2013-08-17 20:04:57 +00:00
|
|
|
=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
|
|
|
|
|
2015-04-27 23:19:26 +00:00
|
|
|
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')
|
2013-08-17 20:04:57 +00:00
|
|
|
|
2015-04-27 23:19:26 +00:00
|
|
|
# remove all possible ticket hook formats with []
|
|
|
|
subject = subject.gsub /\[#{ticket_hook}: #{self.number}\](\s+?|)/, ''
|
|
|
|
subject = subject.gsub /\[#{ticket_hook}:#{self.number}\](\s+?|)/, ''
|
|
|
|
subject = subject.gsub /\[#{ticket_hook}#{ticket_hook_divider}#{self.number}\](\s+?|)/, ''
|
2013-08-17 20:04:57 +00:00
|
|
|
|
2015-04-27 23:19:26 +00:00
|
|
|
# remove all possible ticket hook formats without []
|
|
|
|
subject = subject.gsub /#{ticket_hook}: #{self.number}(\s+?|)/, ''
|
|
|
|
subject = subject.gsub /#{ticket_hook}:#{self.number}(\s+?|)/, ''
|
|
|
|
subject = subject.gsub /#{ticket_hook}#{ticket_hook_divider}#{self.number}(\s+?|)/, ''
|
2013-08-17 20:04:57 +00:00
|
|
|
|
2015-04-27 23:19:26 +00:00
|
|
|
# remove leading "..:\s" and "..[\d+]:\s" e. g. "Re: " or "Re[5]: "
|
|
|
|
subject = subject.gsub /^(..(\[\d+\])?:\s)+/, ''
|
2013-08-17 20:04:57 +00:00
|
|
|
|
2015-04-27 23:19:26 +00:00
|
|
|
# resize subject based on config
|
|
|
|
if subject.length > ticket_subject_size.to_i
|
|
|
|
subject = subject[ 0, ticket_subject_size.to_i ] + '[...]'
|
2015-04-27 21:27:51 +00:00
|
|
|
end
|
2015-04-27 23:19:26 +00:00
|
|
|
|
|
|
|
subject
|
2013-08-17 20:04:57 +00:00
|
|
|
end
|
2014-02-03 19:23:00 +00:00
|
|
|
end
|