Commit 8f4f926e authored by Frank Bergmann's avatar Frank Bergmann

- renamed component for associating relationships

parent 1ef2c3b4
...@@ -1118,7 +1118,7 @@ SELECT acs_permission__grant_permission( ...@@ -1118,7 +1118,7 @@ SELECT acs_permission__grant_permission(
-- ------------------------------------------------------ -- ------------------------------------------------------
-- Show related tickets -- Show related objects
-- --
SELECT im_component_plugin__new ( SELECT im_component_plugin__new (
null, -- plugin_id null, -- plugin_id
...@@ -1127,18 +1127,18 @@ SELECT im_component_plugin__new ( ...@@ -1127,18 +1127,18 @@ SELECT im_component_plugin__new (
null, -- creation_user null, -- creation_user
null, -- creation_ip null, -- creation_ip
null, -- context_id null, -- context_id
'Related Tickets', -- plugin_name 'Related Objects', -- plugin_name
'intranet-helpdesk', -- package_name 'intranet-helpdesk', -- package_name
'right', -- location 'right', -- location
'/intranet-helpdesk/new', -- page_url '/intranet-helpdesk/new', -- page_url
null, -- view_name null, -- view_name
90, -- sort_order 91, -- sort_order
'im_helpdesk_related_tickets_component -ticket_id $ticket_id', 'im_helpdesk_related_objects_component -ticket_id $ticket_id',
'lang::message::lookup "" intranet-helpdesk.Related_Tickets "Related Tickets"' 'lang::message::lookup "" intranet-helpdesk.Related_Objects "Related Objects"'
); );
SELECT acs_permission__grant_permission( SELECT acs_permission__grant_permission(
(select plugin_id from im_component_plugins where plugin_name = 'Related Tickets' and package_name = 'intranet-helpdesk'), (select plugin_id from im_component_plugins where plugin_name = 'Related Objects' and package_name = 'intranet-helpdesk'),
(select group_id from groups where group_name = 'Employees'), (select group_id from groups where group_name = 'Employees'),
'read' 'read'
); );
......
...@@ -91,13 +91,18 @@ ad_proc -public im_ticket_permissions { ...@@ -91,13 +91,18 @@ ad_proc -public im_ticket_permissions {
upvar $write_var write upvar $write_var write
upvar $admin_var admin upvar $admin_var admin
set view 0
set read 0
set write 0
set admin 0
set admin_p [im_is_user_site_wide_or_intranet_admin $user_id] set admin_p [im_is_user_site_wide_or_intranet_admin $user_id]
set edit_ticket_status_p [im_permission $user_id edit_ticket_status] set edit_ticket_status_p [im_permission $user_id edit_ticket_status]
set add_tickets_for_customers_p [im_permission $user_id add_tickets_for_customers] set add_tickets_for_customers_p [im_permission $user_id add_tickets_for_customers]
set add_tickets_p [im_permission $user_id "add_tickets"] set add_tickets_p [im_permission $user_id "add_tickets"]
set view_tickets_all_p [im_permission $user_id "view_tickets_all"] set view_tickets_all_p [im_permission $user_id "view_tickets_all"]
db_0or1row ticket_info " if {![db_0or1row ticket_info "
select coalesce(t.ticket_assignee_id, 0) as ticket_assignee_id, select coalesce(t.ticket_assignee_id, 0) as ticket_assignee_id,
coalesce(t.ticket_customer_contact_id,0) as ticket_customer_contact_id, coalesce(t.ticket_customer_contact_id,0) as ticket_customer_contact_id,
coalesce(o.creation_user,0) as creation_user_id, coalesce(o.creation_user,0) as creation_user_id,
...@@ -143,14 +148,15 @@ ad_proc -public im_ticket_permissions { ...@@ -143,14 +148,15 @@ ad_proc -public im_ticket_permissions {
where t.ticket_id = :ticket_id and where t.ticket_id = :ticket_id and
t.ticket_id = p.project_id and t.ticket_id = p.project_id and
t.ticket_id = o.object_id t.ticket_id = o.object_id
" "]} {
# Didn't find ticket - just return with permissions set to 0...
return 0
}
set owner_p [expr $user_id == $creation_user_id] set owner_p [expr $user_id == $creation_user_id]
set assignee_p [expr $user_id == $ticket_assignee_id] set assignee_p [expr $user_id == $ticket_assignee_id]
set customer_p [expr $user_id == $ticket_customer_contact_id] set customer_p [expr $user_id == $ticket_customer_contact_id]
# ad_return_complaint 1 "<pre>\nowner_p=$owner_p\nassignee_p=$assignee_p\ncustomer_p=$customer_p\ncase_assignee_p=$case_assignee_p\nholding_user_p=$holding_user_p\nqueue_member_p=$queue_member_p\n</pre>"
set read [expr $admin_p || $owner_p || $assignee_p || $customer_p || $holding_user_p || $case_assignee_p || $queue_member_p || $view_tickets_all_p || $add_tickets_for_customers_p || $edit_ticket_status_p] set read [expr $admin_p || $owner_p || $assignee_p || $customer_p || $holding_user_p || $case_assignee_p || $queue_member_p || $view_tickets_all_p || $add_tickets_for_customers_p || $edit_ticket_status_p]
set write [expr $read && $edit_ticket_status_p] set write [expr $read && $edit_ticket_status_p]
...@@ -1128,7 +1134,7 @@ ad_proc -public im_navbar_tree_helpdesk_ticket_type { ...@@ -1128,7 +1134,7 @@ ad_proc -public im_navbar_tree_helpdesk_ticket_type {
# --------------------------------------------------------------- # ---------------------------------------------------------------
ad_proc -public im_helpdesk_related_tickets_component { ad_proc -public im_helpdesk_related_objects_component {
-ticket_id:required -ticket_id:required
} { } {
Returns a HTML component with the list of related tickets. Returns a HTML component with the list of related tickets.
...@@ -1139,7 +1145,15 @@ ad_proc -public im_helpdesk_related_tickets_component { ...@@ -1139,7 +1145,15 @@ ad_proc -public im_helpdesk_related_tickets_component {
[list return_url [im_url_with_query]] \ [list return_url [im_url_with_query]] \
] ]
set result [ad_parse_template -params $params "/packages/intranet-helpdesk/www/related-tickets-component"] set result [ad_parse_template -params $params "/packages/intranet-helpdesk/www/related-objects-component"]
return [string trim $result] return [string trim $result]
} }
ad_proc -public im_helpdesk_related_tickets_component {
-ticket_id:required
} {
Replaced by im_helpdesk_related_objects_component
} {
return ""
}
# /packages/intranet-helpdesk/www/ticket-ticket-rel-del.tcl # /packages/intranet-helpdesk/www/associate-delete.tcl
# #
# Copyright (c) 2003 - 2009 ]project-open[ # Copyright (c) 2010 ]project-open[
# #
# All rights reserved. Please check # All rights reserved. Please check
# http://www.project-open.com/license/ for details. # http://www.project-open.com/license/ for details.
...@@ -14,6 +14,7 @@ ad_page_contract { ...@@ -14,6 +14,7 @@ ad_page_contract {
@author frank.bergmann@project-open.com @author frank.bergmann@project-open.com
} { } {
{ rel_id:multiple {} } { rel_id:multiple {} }
{ ticket_id:integer "" }
return_url return_url
} }
...@@ -24,6 +25,13 @@ ad_page_contract { ...@@ -24,6 +25,13 @@ ad_page_contract {
# User id already verified by filters # User id already verified by filters
set current_user_id [ad_maybe_redirect_for_registration] set current_user_id [ad_maybe_redirect_for_registration]
# Check permission on "ticket_id".
# The SQL below only selects relationships associated with ticket_id.
im_ticket_permissions $current_user_id $ticket_id view read write admin
if {!$write} { ad_return_complaint 1 "Insufficient Permissions on ticket #$ticket_id" }
foreach id $rel_id { foreach id $rel_id {
set object_id_one 0 set object_id_one 0
...@@ -31,25 +39,12 @@ foreach id $rel_id { ...@@ -31,25 +39,12 @@ foreach id $rel_id {
db_0or1row rel_info " db_0or1row rel_info "
select r.object_id_one, select r.object_id_one,
r.object_id_two r.object_id_two
from acs_rels r, from acs_rels r
im_ticket_ticket_rels ttr where r.rel_id = :id and
where r.rel_id = ttr.rel_id (r.object_id_one = :ticket_id OR r.object_id_two = :ticket_id)
and r.rel_id = :id
" "
set del_p 0 db_string rel_delete "select acs_rel__delete(:id)"
im_ticket_permissions $current_user_id $object_id_one view read write admin
if {$write} { set del_p 1 }
im_ticket_permissions $current_user_id $object_id_two view read write admin
if {$write} { set del_p 1 }
if {!$del_p} {
ad_return_complaint 1 "Unsufficient Permissions:<br>You don't have sufficient
permissions to delete the relationship between objects: $object_id_one - $object_id_two"
ad_script_abort
}
db_string del_ticket_ticket_rel "select im_ticket_ticket_rel__delete(:id)"
} }
......
...@@ -91,6 +91,7 @@ set object_rel_sql " ...@@ -91,6 +91,7 @@ set object_rel_sql "
where where
r.rel_type = rt.object_type and r.rel_type = rt.object_type and
o.object_type = ot.object_type and o.object_type = ot.object_type and
rel_type not in ('im_biz_object_member') and -- handled by the Ticket Members component
( (
r.object_id_one = :ticket_id and r.object_id_one = :ticket_id and
r.object_id_two = o.object_id r.object_id_two = o.object_id
......
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