Commit 9a0dc5d3 authored by Frank Bergmann's avatar Frank Bergmann

- Session with Antanas:

  - Added a new status "accepted"
  - Beautified the ticket timeline
  - Now disabling ticket actions if a user doesn't have
    write permissions on the ticket
parent cac0038f
......@@ -23,15 +23,64 @@ set org_ticket_id $ticket_id
# ---------------------------------------------------------------------
# Get everything about the ticket
db_1row ticket_info "
select *
db_1row ticket_info {
select *,
trunc(extract(epoch from (now() - t.ticket_creation_date))/60) as ticket_creation_minutes,
trunc(extract(epoch from (t.ticket_reaction_date - t.ticket_creation_date))/60) as ticket_reaction_minutes,
trunc(extract(epoch from (t.ticket_confirmation_date - t.ticket_creation_date))/60) as ticket_confirmation_minutes,
trunc(extract(epoch from (t.ticket_done_date - t.ticket_creation_date))/60) as ticket_done_minutes,
trunc(extract(epoch from (t.ticket_signoff_date - t.ticket_creation_date))/60) as ticket_signoff_minutes
from im_tickets t,
im_projects p,
acs_objects o
where t.ticket_id = :org_ticket_id and
p.project_id = t.ticket_id and
o.object_id = t.ticket_id
"
}
set ticket_creation_hours [expr int($ticket_creation_minutes / 60.0)]
set ticket_creation_minutes [expr $ticket_creation_minutes - 60*$ticket_creation_hours]
if {[string length $ticket_creation_minutes] < 2} { set ticket_creation_minutes "0$ticket_creation_minutes" }
set ticket_creation_time "$ticket_creation_hours:$ticket_creation_minutes ago"
if {"" ne $ticket_reaction_minutes} {
set ticket_reaction_hours [expr int($ticket_reaction_minutes / 60.0)]
set ticket_reaction_minutes [expr $ticket_reaction_minutes - 60*$ticket_reaction_hours]
if {[string length $ticket_reaction_minutes] < 2} { set ticket_reaction_minutes "0$ticket_reaction_minutes" }
set ticket_reaction_time "$ticket_reaction_hours:$ticket_reaction_minutes since creation"
} else {
set ticket_reaction_time ""
}
if {"" ne $ticket_confirmation_minutes} {
set ticket_confirmation_hours [expr int($ticket_confirmation_minutes / 60.0)]
set ticket_confirmation_minutes [expr $ticket_confirmation_minutes - 60*$ticket_confirmation_hours]
if {[string length $ticket_confirmation_minutes] < 2} { set ticket_confirmation_minutes "0$ticket_confirmation_minutes" }
set ticket_confirmation_time "$ticket_confirmation_hours:$ticket_confirmation_minutes since creation"
} else {
set ticket_confirmation_time ""
}
if {"" ne $ticket_done_minutes} {
set ticket_done_hours [expr int($ticket_done_minutes / 60.0)]
set ticket_done_minutes [expr $ticket_done_minutes - 60*$ticket_done_hours]
if {[string length $ticket_done_minutes] < 2} { set ticket_done_minutes "0$ticket_done_minutes" }
set ticket_done_time "$ticket_done_hours:$ticket_done_minutes since creation"
} else {
set ticket_done_time ""
}
if {"" ne $ticket_signoff_minutes} {
set ticket_signoff_hours [expr int($ticket_signoff_minutes / 60.0)]
set ticket_signoff_minutes [expr $ticket_signoff_minutes - 60*$ticket_signoff_hours]
if {[string length $ticket_signoff_minutes] < 2} { set ticket_signoff_minutes "0$ticket_signoff_minutes" }
set ticket_signoff_time "$ticket_signoff_hours:$ticket_signoff_minutes since creation"
} else {
set ticket_signoff_time ""
}
db_0or1row forum_topic_info "
select f.*
......@@ -53,13 +102,13 @@ set ticket_confirmation_l10n [lang::message::lookup "" intranet-helpdesk.Confirm
set ticket_done_l10n [lang::message::lookup "" intranet-helpdesk.Done_date "Done date"]
set ticket_signoff_l10n [lang::message::lookup "" intranet-helpdesk.Signoff_date "Signoff date"]
multirow create timeline event date time comment
multirow create timeline event date time diff comment
multirow append timeline $ticket_creation_l10n [string range $ticket_creation_date 0 10] [string range $ticket_creation_date 11 15] ""
multirow append timeline $ticket_reaction_l10n [string range $ticket_reaction_date 0 10] [string range $ticket_reaction_date 11 15] ""
multirow append timeline $ticket_confirmation_l10n [string range $ticket_confirmation_date 0 10] [string range $ticket_confirmation_date 11 15] ""
multirow append timeline $ticket_done_l10n [string range $ticket_done_date 0 10] [string range $ticket_done_date 11 15] ""
multirow append timeline $ticket_signoff_l10n [string range $ticket_signoff_date 0 10] [string range $ticket_signoff_date 11 15] ""
multirow append timeline $ticket_creation_l10n [string range $ticket_creation_date 0 10] [string range $ticket_creation_date 11 15] "$ticket_creation_time" ""
multirow append timeline $ticket_reaction_l10n [string range $ticket_reaction_date 0 10] [string range $ticket_reaction_date 11 15] "$ticket_reaction_time" ""
multirow append timeline $ticket_confirmation_l10n [string range $ticket_confirmation_date 0 10] [string range $ticket_confirmation_date 11 15] "$ticket_confirmation_time" ""
multirow append timeline $ticket_done_l10n [string range $ticket_done_date 0 10] [string range $ticket_done_date 11 15] "$ticket_done_time" ""
multirow append timeline $ticket_signoff_l10n [string range $ticket_signoff_date 0 10] [string range $ticket_signoff_date 11 15] "$ticket_signoff_time" ""
template::list::create \
-name timeline \
......@@ -68,10 +117,13 @@ template::list::create \
label "[lang::message::lookup {} intranet-helpdesk.Event Event]"
}
date {
label "[lang::message::lookup {} intranet-helpdesk.Date Date]"
label "[lang::message::lookup {} intranet-helpdesk.Absolute_Date {Absolute Date}]"
display_template {
@timeline.date@ @timeline.time@
}
}
time {
label "[lang::message::lookup {} intranet-helpdesk.Time Time]"
diff {
label "[lang::message::lookup {} intranet-helpdesk.Relative_Time {Relative Time}]"
}
}
......@@ -718,6 +718,9 @@ SELECT im_category_new(30001, 'Closed', 'Intranet Ticket Status');
--
-- Open States
--
SELECT im_category_new(30008, 'Accepted', 'Intranet Ticket Status');
SELECT im_category_hierarchy_new(30008, 30000);
SELECT im_category_new(30009, 'Modifying', 'Intranet Ticket Status');
SELECT im_category_hierarchy_new(30009, 30000);
......@@ -839,50 +842,27 @@ SELECT im_category_new(30209, '9', 'Intranet Ticket Priority');
-- 30500-30599 - Intranet Ticket Action
delete from im_categories where category_type = 'Intranet Ticket Action';
SELECT im_category_new(30500, 'Close', 'Intranet Ticket Action');
SELECT im_category_new(30510, 'Close &amp; notify', 'Intranet Ticket Action');
SELECT im_category_new(30500, 'Set status: Closed', 'Intranet Ticket Action');
SELECT im_category_new(30510, 'Set status: Closed & notify', 'Intranet Ticket Action');
-- SELECT im_category_new(30515, 'Freeze', 'Intranet Ticket Action');
SELECT im_category_new(30540, 'Associate', 'Intranet Ticket Action');
SELECT im_category_new(30545, 'Change Prio', 'Intranet Ticket Action');
SELECT im_category_new(30550, 'Escalate', 'Intranet Ticket Action');
SELECT im_category_new(30552, 'Close Escalated Tickets', 'Intranet Ticket Action');
SELECT im_category_new(30560, 'Resolved', 'Intranet Ticket Action');
SELECT im_category_new(30565, 'Confirm Ticket', 'Intranet Ticket Action');
SELECT im_category_new(30570, 'Sign-Off Ticket', 'Intranet Ticket Action');
-- Custom screen for duplicate action to select base
SELECT im_category_new(30520, 'Group to duplicate', 'Intranet Ticket Action');
SELECT im_category_new(30530, 'Re-Open', 'Intranet Ticket Action');
SELECT im_category_new(30532, 'Re-Open &amp; notify', 'Intranet Ticket Action');
SELECT im_category_new(30534, 'Re-Assign', 'Intranet Ticket Action');
SELECT im_category_new(30540, 'Associate', 'Intranet Ticket Action');
SELECT im_category_new(30550, 'Group to problem ticket', 'Intranet Ticket Action');
SELECT im_category_new(30552, 'Close Escalated Tickets', 'Intranet Ticket Action');
SELECT im_category_new(30560, 'Resolved', 'Intranet Ticket Action');
SELECT im_category_new(30590, 'Delete', 'Intranet Ticket Action');
SELECT im_category_new(30599, 'Nuke', 'Intranet Ticket Action');
SELECT im_category_new(30515, 'Set status: Accepted', 'Intranet Ticket Action');
update im_categories set aux_string1 = '/intranet-helpdesk/action-accepted' where category_id = 30515;
SELECT im_category_new(30520, 'Mark tickets as duplicates', 'Intranet Ticket Action');
update im_categories set aux_string1 = '/intranet-helpdesk/action-duplicated' where category_id = 30520;
SELECT im_category_new(30530, 'Set status: Open', 'Intranet Ticket Action');
SELECT im_category_new(30532, 'Set status: Open & notify', 'Intranet Ticket Action');
SELECT im_category_new(30534, 'Reassign', 'Intranet Ticket Action');
SELECT im_category_new(30540, 'Associate ticket with other objects', 'Intranet Ticket Action');
SELECT im_category_new(30545, 'Change Priority', 'Intranet Ticket Action');
SELECT im_category_new(30550, 'Problem Ticket: Create from incident', 'Intranet Ticket Action');
SELECT im_category_new(30552, 'Problem Ticket: Close associated incidents', 'Intranet Ticket Action');
SELECT im_category_new(30560, 'Set status: Resolved', 'Intranet Ticket Action');
SELECT im_category_new(30565, 'Confirm Ticket', 'Intranet Ticket Action');
update im_categories set aux_string1 = '/intranet-helpdesk/action-confirmed' where category_id = 30565;
SELECT im_category_new(30570, 'Sign-Off Ticket', 'Intranet Ticket Action');
update im_categories set aux_string1 = '/intranet-helpdesk/action-signoff' where category_id = 30570;
update im_categories set category = 'Set status: Closed' where category_id = 30500; -- Close
update im_categories set category = 'Set status: Closed & notify' where category_id = 30510; -- Close & notify
update im_categories set category = 'Mark tickets as duplicates' where category_id = 30520; -- Duplicate
update im_categories set category = 'Set status: Open' where category_id = 30530; -- Re-open
update im_categories set category = 'Set status: Open & notify' where category_id = 30532; -- Re-open & notify
update im_categories set category = 'Reassign' where category_id = 30534; -- Re-assign
update im_categories set category = 'Associate ticket with other objects' where category_id = 30540; -- Associate
update im_categories set category = 'Change Priority' where category_id = 30545; -- Change Prio
update im_categories set category = 'Problem Ticket: Create from incident' where category_id = 30550; -- "Escalate"
update im_categories set category = 'Problem Ticket: Close associated incidents' where category_id = 30552; -- Close escalated
update im_categories set category = 'Set status: Resolved' where category_id = 30560; -- Resolved
update im_categories set category = 'Set status: Deleted' where category_id = 30590; -- Delete
update im_categories set category = 'Nuke' where category_id = 30499; -- Nuke
SELECT im_category_new(30590, 'Set status: Deleted', 'Intranet Ticket Action');
SELECT im_category_new(30599, 'Nuke', 'Intranet Ticket Action');
-----------------------------------------------------------
......
......@@ -16,7 +16,7 @@ ad_library {
ad_proc -public im_ticket_status_open {} { return 30000 }
ad_proc -public im_ticket_status_closed {} { return 30001 }
ad_proc -public im_ticket_status_accepted {} { return 30008 }
ad_proc -public im_ticket_status_internal_review {} { return 30010 }
ad_proc -public im_ticket_status_assigned {} { return 30011 }
ad_proc -public im_ticket_status_customer_review {} { return 30012 }
......@@ -208,6 +208,8 @@ ad_proc -public im_ticket_permissions {
set assignee_p [expr $user_id == $ticket_assignee_id]
set customer_p [expr $customer_member_p || $user_id == $ticket_customer_contact_id]
# Customer contacts from the same company as the customer_contact_id should have
# read permission on the ticket of their colleague, but not have write permission
set read [expr $admin_p || $owner_p || $assignee_p || $customer_p || $sla_member_p || $ticket_member_p || $holding_user_p || $case_assignee_p || $queue_member_p || $view_tickets_all_p || $edit_tickets_all_p]
set write [expr $admin_p || $edit_tickets_all_p || $ticket_admin_p]
......
......@@ -339,6 +339,9 @@ $ticket_action_customize_html
</form>
"
# No write permissions - no actions...
if {!$write_p} { set ticket_action_html "" }
# ------------------------------------------------------------------
# Redirect if ticket_type_id or ticket_sla_id are missing
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment