diff --git a/plugins/ticket/templates.cpp b/plugins/ticket/templates.cpp index da75cbe..b52c205 100755 --- a/plugins/ticket/templates.cpp +++ b/plugins/ticket/templates.cpp @@ -2,7 +2,7 @@ * This file is a part of Winix * and is not publicly distributed * - * Copyright (c) 2008-2012, Tomasz Sowa + * Copyright (c) 2008-2013, Tomasz Sowa * All rights reserved. * */ @@ -276,6 +276,7 @@ void ticket_meta_value(Info & i) void ticket_is_closed(Info & i) { + // !! CHECKME should it be cur->request->item? PT::Space * ticket_space = cur->request->item.ameta.FindSpace(L"ticket"); if( ticket_space ) @@ -283,6 +284,45 @@ void ticket_is_closed(Info & i) } +TicketValue value_for_param_id; + + +void ticket_param_value_for_param_id(Info & i) +{ + value_for_param_id.Clear(); + + size_t conf_index = 0; + PT::Space & space = *ticket_info.cur_conf; + int id = Toi(i.par); + + + for( ; conf_index < space.spaces.size() ; ++conf_index) + { + log << log1 << "analizuje: " << space.spaces[conf_index]->Text(L"name") << logend; + + if( space.spaces[conf_index]->name == L"param" && + space.spaces[conf_index]->Int(L"id") == id ) + { + log << log1 << "znalazlem: " << space.spaces[conf_index]->Text(L"name") << logend; + + value_for_param_id.Clear(); + value_for_param_id.is_param = true; + value_for_param_id.config_par = space.spaces[conf_index]; + value_for_param_id.param_id = value_for_param_id.config_par->Long(L"id"); + + if( ticket_info.ticket && ticket_info.item ) + { + find_ticket_value(value_for_param_id, ticket_info.ticket->par_tab, ticket_info.item->meta); + ticket_print_value(i, value_for_param_id); + } + + break; + } + } +} + + + namespace ns_tickets_tab { @@ -495,6 +535,40 @@ void tickets_tab_date_creation_nice(Info & i) } +static TicketValue value_for_param_id; + + +// takes param id (integer) as a first parameter +void tickets_tab_param_value_for_param_id(Info & i) +{ + tickets_tab_check_reqid(); + + if( tickets_value.is_ticket ) + { + size_t param_index = 0; + PT::Space & space = *ticket_info.cur_conf; + int id = Toi(i.par); + + for( ; param_index < space.spaces.size() ; ++param_index) + { + if( space.spaces[param_index]->name == L"param" && + space.spaces[param_index]->Int(L"id") == id ) + { + value_for_param_id.Clear(); + value_for_param_id.is_param = true; + value_for_param_id.config_par = space.spaces[param_index]; + value_for_param_id.param_id = value_for_param_id.config_par->Long(L"id"); + + // !! CHECKME don't we have to test tickets_value.ticket and tickets_value.item? + find_ticket_value(value_for_param_id, tickets_value.ticket->par_tab, tickets_value.item->meta); + ticket_print_value(i, value_for_param_id); + + break; + } + } + } +} + void tickets_tab_conf_tab(Info & i) @@ -531,6 +605,18 @@ void tickets_tab_conf_tab_has_value(Info & i) } +void tickets_tab_conf_tab_param_name(Info & i) +{ + tickets_tab_check_reqid(); + + if( value.is_param ) + { + std::wstring & name = value.config_par->Text(L"name"); + i.out << name; + } +} + + void tickets_tab_conf_tab_value(Info & i) { tickets_tab_check_reqid(); @@ -561,6 +647,95 @@ void tickets_tab_conf_tab_progress_image_number(Info & i) } + + + + +static size_t tickets_file_index; +static size_t tickets_file_number; + +void tickets_tab_conf_tab_file_tab(Info & i) +{ + tickets_tab_check_reqid(); + + if( value.is_value && !value.is_in_ticket_par ) + { + tickets_file_index = i.iter; + + if( i.iter == 0 ) + tickets_file_number = 0; + + PT::Space & mt = *value.value_meta; + + while( tickets_file_index < mt.spaces.size() && mt.spaces[tickets_file_index]->name != L"file" ) + tickets_file_index += 1; + + i.res = (tickets_file_index < mt.spaces.size()); + + if( i.res && i.iter > 0 ) + tickets_file_number += 1; + } +} + + +void tickets_tab_conf_tab_file_tab_index(Info & i) +{ + tickets_tab_check_reqid(); + + if( value.is_value && !value.is_in_ticket_par ) + { + PT::Space & mt = *value.value_meta; + + if( tickets_file_index < mt.spaces.size() ) + i.out << tickets_file_number; + } +} + + + +void tickets_tab_conf_tab_file_tab_path(Info & i) +{ + tickets_tab_check_reqid(); + + if( value.is_value && !value.is_in_ticket_par ) + { + PT::Space & mt = *value.value_meta; + + if( tickets_file_index < mt.spaces.size() ) + i.out << mt.spaces[tickets_file_index]->Text(L"path"); + } +} + + +void tickets_tab_conf_tab_file_tab_itemid(Info & i) +{ + tickets_tab_check_reqid(); + + if( value.is_value && !value.is_in_ticket_par ) + { + PT::Space & mt = *value.value_meta; + + if( tickets_file_index < mt.spaces.size() ) + i.out << mt.spaces[tickets_file_index]->Text(L"itemid"); + } +} + + +void tickets_tab_conf_tab_file_tab_meta(Info & i) +{ + tickets_tab_check_reqid(); + + if( value.is_value && !value.is_in_ticket_par ) + { + PT::Space & mt = *value.value_meta; + + if( tickets_file_index < mt.spaces.size() ) + space(i, *mt.spaces[tickets_file_index]); + } +} + + + } // namespace ns_tickets_tab @@ -869,6 +1044,9 @@ using namespace ns_ticket_tab; fun->Insert("ticket_meta_value", ticket_meta_value); fun->Insert("ticket_is_closed", ticket_is_closed); + fun->Insert("ticket_param_value_for_param_id", ticket_param_value_for_param_id); + + fun->Insert("tickets_tab", tickets_tab); fun->Insert("tickets_tab_is_closed", tickets_tab_is_closed); fun->Insert("tickets_tab_url", tickets_tab_url); @@ -878,12 +1056,19 @@ using namespace ns_ticket_tab; fun->Insert("tickets_tab_date_creation", tickets_tab_date_creation); fun->Insert("tickets_tab_date_creation_nice", tickets_tab_date_creation_nice); + fun->Insert("tickets_tab_param_value_for_param_id", tickets_tab_param_value_for_param_id); + fun->Insert("tickets_tab_conf_tab", tickets_tab_conf_tab); fun->Insert("tickets_tab_conf_tab_has_value", tickets_tab_conf_tab_has_value); + fun->Insert("tickets_tab_conf_tab_param_name", tickets_tab_conf_tab_param_name); fun->Insert("tickets_tab_conf_tab_value", tickets_tab_conf_tab_value); fun->Insert("tickets_tab_conf_tab_type_is", tickets_tab_conf_tab_type_is); fun->Insert("tickets_tab_conf_tab_progress_image_number", tickets_tab_conf_tab_progress_image_number); - + fun->Insert("tickets_tab_conf_tab_file_tab", tickets_tab_conf_tab_file_tab); + fun->Insert("tickets_tab_conf_tab_file_tab_index", tickets_tab_conf_tab_file_tab_index); + fun->Insert("tickets_tab_conf_tab_file_tab_path", tickets_tab_conf_tab_file_tab_path); + fun->Insert("tickets_tab_conf_tab_file_tab_itemid", tickets_tab_conf_tab_file_tab_itemid); + fun->Insert("tickets_tab_conf_tab_file_tab_meta", tickets_tab_conf_tab_file_tab_meta); fun->Insert("ticket_tab", ticket_tab);