|
|
|
@@ -37,15 +37,22 @@ extern EditTicket fun_edit_ticket;
|
|
|
|
|
struct TicketValue
|
|
|
|
|
{
|
|
|
|
|
bool is_param; // true if there is a paremeter (in config Space)
|
|
|
|
|
|
|
|
|
|
PT::Space * config_par; // current space param (from current config) if is_param is true
|
|
|
|
|
// when is_param is true then this pointer is never null
|
|
|
|
|
long param_id; // param id (the same as config_par->Long(L"id"))
|
|
|
|
|
bool is_value; // true if value for such a param was defined
|
|
|
|
|
bool is_in_ticket_par; // true if the value is defined in ticket.par_tab
|
|
|
|
|
// else the value is defined in meta
|
|
|
|
|
|
|
|
|
|
Ticket::TicketParam * ticket_par; // if is_in_ticket_par is true:
|
|
|
|
|
PT::Space * value_meta; // if is_in_ticket_par is false:
|
|
|
|
|
long param_id; // param id (the same as config_par->Long(L"id"))
|
|
|
|
|
|
|
|
|
|
bool is_value; // true if value for such a param was defined
|
|
|
|
|
// (either in ticket_par or in meta)
|
|
|
|
|
// *you have to check this variable first before using ticket_par or value_meta*
|
|
|
|
|
|
|
|
|
|
bool is_in_ticket_par; // true if the value is defined in ticket.par_tab
|
|
|
|
|
// else the value can be defined in meta (or not at all)
|
|
|
|
|
|
|
|
|
|
Ticket::TicketParam * ticket_par; // if is_in_ticket_par is true
|
|
|
|
|
PT::Space * value_meta; // if is_in_ticket_par is false and if there is such a value in meta
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TicketValue()
|
|
|
|
|
{
|
|
|
|
@@ -59,6 +66,7 @@ PT::Space * value_meta; // if is_in_ticket_par is false:
|
|
|
|
|
param_id = 0;
|
|
|
|
|
is_value = false;
|
|
|
|
|
is_in_ticket_par = false;
|
|
|
|
|
ticket_par = 0;
|
|
|
|
|
value_meta = 0;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
@@ -276,8 +284,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");
|
|
|
|
|
PT::Space * ticket_space = ticket_info.item->ameta.FindSpace(L"ticket");
|
|
|
|
|
|
|
|
|
|
if( ticket_space )
|
|
|
|
|
i.res = ticket_space->Bool(L"closed", false);
|
|
|
|
@@ -318,6 +325,53 @@ void ticket_param_value_for_param_id(Info & i)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// it takes two integer parameters (param id and value)
|
|
|
|
|
void ticket_does_param_id_have_value(Info & i)
|
|
|
|
|
{
|
|
|
|
|
value_for_param_id.Clear();
|
|
|
|
|
|
|
|
|
|
size_t conf_index = 0;
|
|
|
|
|
PT::Space & space = *ticket_info.cur_conf;
|
|
|
|
|
|
|
|
|
|
if( i.params.size() == 2 )
|
|
|
|
|
{
|
|
|
|
|
long id = Tol(i.params[0]);
|
|
|
|
|
long id2 = Tol(i.params[1]);
|
|
|
|
|
|
|
|
|
|
for( ; conf_index < space.spaces.size() ; ++conf_index)
|
|
|
|
|
{
|
|
|
|
|
if( space.spaces[conf_index]->name == L"param" &&
|
|
|
|
|
space.spaces[conf_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[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);
|
|
|
|
|
|
|
|
|
|
if( value_for_param_id.is_value )
|
|
|
|
|
{
|
|
|
|
|
if( value_for_param_id.is_in_ticket_par )
|
|
|
|
|
{
|
|
|
|
|
i.res = value_for_param_id.ticket_par->intv == id2;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
log << log1 << "Ticket: ticket_does_param_id_have_value cannot be used with meta values"
|
|
|
|
|
<< logend;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace ns_tickets_tab
|
|
|
|
@@ -331,7 +385,7 @@ struct TicketsTabValue
|
|
|
|
|
Ticket * ticket; // pointer to the ticket (if is_ticket is true)
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
there can be two situations:
|
|
|
|
|
there can be three situations:
|
|
|
|
|
- is_item is false and is_ticket is false
|
|
|
|
|
- is_item is true and is_ticket is false
|
|
|
|
|
- is_item is true and is_ticket is true
|
|
|
|
@@ -439,18 +493,17 @@ void tickets_tab(Info & i)
|
|
|
|
|
// !! IMPROVEME if there is no a ticket (find_ticket returns false)
|
|
|
|
|
// may we add en ampty ticket and tickets_value.ticket will be pointing to it?
|
|
|
|
|
|
|
|
|
|
// !! IMPROVE ME change the name of the message
|
|
|
|
|
// !! IMPROVEME change the name of the message
|
|
|
|
|
plugin.Call(WINIX_PL_TICKET_TICKETS_TAB_IS_NEXT, tickets_value.item);
|
|
|
|
|
|
|
|
|
|
if( find_ticket(file_id, ticket_info.ticket_tab, ticket_index) )
|
|
|
|
|
{
|
|
|
|
|
tickets_value.is_ticket = true;
|
|
|
|
|
tickets_value.ticket = &ticket_info.ticket_tab[ticket_index];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
log << log1 << "Ticket: I cannot find a ticket for file_id: " << file_id << logend;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
plugin.Call(WINIX_PL_THREAD_SET_SORTTAB_INDEX, item_sort_index);
|
|
|
|
@@ -482,6 +535,7 @@ void tickets_tab_url(Info & i)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// !! IMPROVEME change name to tickets_tab_subject_is_empty
|
|
|
|
|
void tickets_tab_subject_empty(Info & i)
|
|
|
|
|
{
|
|
|
|
|
tickets_tab_check_reqid();
|
|
|
|
@@ -555,7 +609,6 @@ void tickets_tab_param_value_for_param_id(Info & i)
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
@@ -567,6 +620,50 @@ void tickets_tab_param_value_for_param_id(Info & i)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// it takes two integer parameters (param id and value)
|
|
|
|
|
void tickets_tab_does_param_id_have_value(Info & i)
|
|
|
|
|
{
|
|
|
|
|
tickets_tab_check_reqid();
|
|
|
|
|
|
|
|
|
|
if( tickets_value.is_ticket && i.params.size() == 2 )
|
|
|
|
|
{
|
|
|
|
|
size_t param_index = 0;
|
|
|
|
|
PT::Space & space = *ticket_info.cur_conf;
|
|
|
|
|
long id = Toi(i.params[0]);
|
|
|
|
|
long id2 = Toi(i.params[1]);
|
|
|
|
|
|
|
|
|
|
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");
|
|
|
|
|
|
|
|
|
|
find_ticket_value(value_for_param_id, tickets_value.ticket->par_tab, tickets_value.item->meta);
|
|
|
|
|
|
|
|
|
|
if( value_for_param_id.is_value )
|
|
|
|
|
{
|
|
|
|
|
if( value_for_param_id.is_in_ticket_par )
|
|
|
|
|
{
|
|
|
|
|
i.res = value_for_param_id.ticket_par->intv == id2;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
log << log1 << "Ticket: tickets_tab_does_param_id_have_value cannot be used with meta values"
|
|
|
|
|
<< logend;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void tickets_tab_conf_tab(Info & i)
|
|
|
|
|
{
|
|
|
|
|
tickets_tab_check_reqid();
|
|
|
|
@@ -601,6 +698,25 @@ void tickets_tab_conf_tab_has_value(Info & i)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void tickets_tab_conf_tab_param_id(Info & i)
|
|
|
|
|
{
|
|
|
|
|
tickets_tab_check_reqid();
|
|
|
|
|
|
|
|
|
|
if( value.is_param )
|
|
|
|
|
i.out << value.param_id;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// takes one parameter
|
|
|
|
|
void tickets_tab_conf_tab_param_id_is(Info & i)
|
|
|
|
|
{
|
|
|
|
|
tickets_tab_check_reqid();
|
|
|
|
|
|
|
|
|
|
if( value.is_param )
|
|
|
|
|
i.res = (value.param_id == Tol(i.par));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void tickets_tab_conf_tab_param_name(Info & i)
|
|
|
|
|
{
|
|
|
|
|
tickets_tab_check_reqid();
|
|
|
|
@@ -794,6 +910,16 @@ void ticket_tab_param_id(Info & i)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// takes one parameter
|
|
|
|
|
void ticket_tab_param_id_is(Info & i)
|
|
|
|
|
{
|
|
|
|
|
ticket_tab_check_reqid();
|
|
|
|
|
|
|
|
|
|
if( value.is_param )
|
|
|
|
|
i.res = (value.param_id == Tol(i.par));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void ticket_tab_param_name(Info & i)
|
|
|
|
|
{
|
|
|
|
|
ticket_tab_check_reqid();
|
|
|
|
@@ -1034,60 +1160,64 @@ using namespace ns_ticket_tab;
|
|
|
|
|
using TemplatesFunctions::EzcFun;
|
|
|
|
|
EzcFun * fun = reinterpret_cast<EzcFun*>(info.p1);
|
|
|
|
|
|
|
|
|
|
fun->Insert("ticket_can_create", ticket_can_create);
|
|
|
|
|
fun->Insert("ticket_can_edit", ticket_can_edit);
|
|
|
|
|
fun->Insert("ticket_is_creating_new", ticket_is_creating_new);
|
|
|
|
|
fun->Insert("ticket_meta_value", ticket_meta_value);
|
|
|
|
|
fun->Insert("ticket_is_closed", ticket_is_closed);
|
|
|
|
|
fun->Insert("ticket_can_create", ticket_can_create);
|
|
|
|
|
fun->Insert("ticket_can_edit", ticket_can_edit);
|
|
|
|
|
fun->Insert("ticket_is_creating_new", ticket_is_creating_new);
|
|
|
|
|
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("ticket_param_value_for_param_id", ticket_param_value_for_param_id);
|
|
|
|
|
fun->Insert("ticket_does_param_id_have_value", ticket_does_param_id_have_value);
|
|
|
|
|
|
|
|
|
|
fun->Insert("tickets_tab", tickets_tab);
|
|
|
|
|
fun->Insert("tickets_tab_is_closed", tickets_tab_is_closed);
|
|
|
|
|
fun->Insert("tickets_tab_url", tickets_tab_url);
|
|
|
|
|
fun->Insert("tickets_tab_subject_empty", tickets_tab_subject_empty);
|
|
|
|
|
fun->Insert("tickets_tab_subject", tickets_tab_subject);
|
|
|
|
|
fun->Insert("tickets_tab_meta_value", tickets_tab_meta_value);
|
|
|
|
|
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_does_param_id_have_value", tickets_tab_does_param_id_have_value);
|
|
|
|
|
|
|
|
|
|
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_id", tickets_tab_conf_tab_param_id);
|
|
|
|
|
fun->Insert("tickets_tab_conf_tab_param_id_is", tickets_tab_conf_tab_param_id_is);
|
|
|
|
|
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("tickets_tab", tickets_tab);
|
|
|
|
|
fun->Insert("tickets_tab_is_closed", tickets_tab_is_closed);
|
|
|
|
|
fun->Insert("tickets_tab_url", tickets_tab_url);
|
|
|
|
|
fun->Insert("tickets_tab_subject_empty", tickets_tab_subject_empty);
|
|
|
|
|
fun->Insert("tickets_tab_subject", tickets_tab_subject);
|
|
|
|
|
fun->Insert("tickets_tab_meta_value", tickets_tab_meta_value);
|
|
|
|
|
fun->Insert("tickets_tab_date_creation", tickets_tab_date_creation);
|
|
|
|
|
fun->Insert("tickets_tab_date_creation_nice", tickets_tab_date_creation_nice);
|
|
|
|
|
fun->Insert("ticket_tab", ticket_tab);
|
|
|
|
|
fun->Insert("ticket_tab_param_id", ticket_tab_param_id);
|
|
|
|
|
fun->Insert("ticket_tab_param_id_is", ticket_tab_param_id_is);
|
|
|
|
|
fun->Insert("ticket_tab_param_name", ticket_tab_param_name);
|
|
|
|
|
fun->Insert("ticket_tab_has_value", ticket_tab_has_value);
|
|
|
|
|
fun->Insert("ticket_tab_value", ticket_tab_value);
|
|
|
|
|
fun->Insert("ticket_tab_value_int", ticket_tab_value_int);
|
|
|
|
|
fun->Insert("ticket_tab_value_dec", ticket_tab_value_dec);
|
|
|
|
|
fun->Insert("ticket_tab_value_meta", ticket_tab_value_meta);
|
|
|
|
|
fun->Insert("ticket_tab_type_is", ticket_tab_type_is);
|
|
|
|
|
|
|
|
|
|
fun->Insert("tickets_tab_param_value_for_param_id", tickets_tab_param_value_for_param_id);
|
|
|
|
|
fun->Insert("ticket_tab_select_tab", ticket_tab_select_tab);
|
|
|
|
|
fun->Insert("ticket_tab_select_tab_is_selected", ticket_tab_select_tab_is_selected);
|
|
|
|
|
fun->Insert("ticket_tab_select_tab_name", ticket_tab_select_tab_name);
|
|
|
|
|
fun->Insert("ticket_tab_select_tab_id", ticket_tab_select_tab_id);
|
|
|
|
|
fun->Insert("ticket_tab_select_tab_meta", ticket_tab_select_tab_meta);
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
fun->Insert("ticket_tab_param_id", ticket_tab_param_id);
|
|
|
|
|
fun->Insert("ticket_tab_param_name", ticket_tab_param_name);
|
|
|
|
|
fun->Insert("ticket_tab_has_value", ticket_tab_has_value);
|
|
|
|
|
fun->Insert("ticket_tab_value", ticket_tab_value);
|
|
|
|
|
fun->Insert("ticket_tab_value_int", ticket_tab_value_int);
|
|
|
|
|
fun->Insert("ticket_tab_value_dec", ticket_tab_value_dec);
|
|
|
|
|
fun->Insert("ticket_tab_value_meta", ticket_tab_value_meta);
|
|
|
|
|
fun->Insert("ticket_tab_type_is", ticket_tab_type_is);
|
|
|
|
|
|
|
|
|
|
fun->Insert("ticket_tab_select_tab", ticket_tab_select_tab);
|
|
|
|
|
fun->Insert("ticket_tab_select_tab_is_selected", ticket_tab_select_tab_is_selected);
|
|
|
|
|
fun->Insert("ticket_tab_select_tab_name", ticket_tab_select_tab_name);
|
|
|
|
|
fun->Insert("ticket_tab_select_tab_id", ticket_tab_select_tab_id);
|
|
|
|
|
fun->Insert("ticket_tab_select_tab_meta", ticket_tab_select_tab_meta);
|
|
|
|
|
|
|
|
|
|
fun->Insert("ticket_tab_file_tab", ticket_tab_file_tab);
|
|
|
|
|
fun->Insert("ticket_tab_file_tab_index", ticket_tab_file_tab_index);
|
|
|
|
|
fun->Insert("ticket_tab_file_tab_path", ticket_tab_file_tab_path);
|
|
|
|
|
fun->Insert("ticket_tab_file_tab_itemid", ticket_tab_file_tab_itemid);
|
|
|
|
|
fun->Insert("ticket_tab_file_tab_meta", ticket_tab_file_tab_meta);
|
|
|
|
|
fun->Insert("ticket_tab_file_tab", ticket_tab_file_tab);
|
|
|
|
|
fun->Insert("ticket_tab_file_tab_index", ticket_tab_file_tab_index);
|
|
|
|
|
fun->Insert("ticket_tab_file_tab_path", ticket_tab_file_tab_path);
|
|
|
|
|
fun->Insert("ticket_tab_file_tab_itemid", ticket_tab_file_tab_itemid);
|
|
|
|
|
fun->Insert("ticket_tab_file_tab_meta", ticket_tab_file_tab_meta);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|