winix/templates/ticket.cpp

575 lines
12 KiB
C++
Executable File

/*
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2008-2010, Tomasz Sowa
* All rights reserved.
*
*/
#include "templates.h"
#include "core/request.h"
#include "core/misc.h"
#include "functions/functions.h"
namespace TemplatesFunctions
{
int ticket_calc_progress_image_number(int percent)
{
percent = int( double(percent) / 10.0 + 0.5 ) * 10;
if( percent < 0 )
percent = 0;
if( percent > 100 )
percent = 100;
return percent;
}
void ticket_is(Info & i)
{
i.res = functions->fun_ticket.is_ticket;
}
void ticket_item_content(Info & i)
{
HtmlEscape(i.out, functions->fun_ticket.item.content);
}
void ticket_item_content_type_is(Info & i)
{
item_content_type_is(functions->fun_ticket.item, i);
}
void ticket_item_print_content(Info & i)
{
item_print_content(i.out, functions->fun_ticket.item.content, functions->fun_ticket.item.content_type);
}
void ticket_can_create(Info & i)
{
//i.res = request->CanCreateTicket(true);
i.res = functions->fun_createticket.HasAccess();
}
void ticket_can_edit(Info & i)
{
//i.res = request->CanEditTicket();
i.res = functions->fun_editticket.HasAccess();
}
void ticket_type(Info & i)
{
if( functions->fun_ticket.ticket.type < system->mounts.pmount->param[Mount::par_ticket_type].arg.size() )
HtmlEscape(i.out, system->mounts.pmount->param[Mount::par_ticket_type].arg[functions->fun_ticket.ticket.type]);
}
void ticket_status(Info & i)
{
if( functions->fun_ticket.ticket.status < system->mounts.pmount->param[Mount::par_ticket_status].arg.size() )
HtmlEscape(i.out, system->mounts.pmount->param[Mount::par_ticket_status].arg[functions->fun_ticket.ticket.status]);
}
void ticket_priority(Info & i)
{
if( functions->fun_ticket.ticket.priority < system->mounts.pmount->param[Mount::par_ticket_priority].arg.size() )
HtmlEscape(i.out, system->mounts.pmount->param[Mount::par_ticket_priority].arg[functions->fun_ticket.ticket.priority]);
}
void ticket_category(Info & i)
{
if( functions->fun_ticket.ticket.category < system->mounts.pmount->param[Mount::par_ticket_category].arg.size() )
HtmlEscape(i.out, system->mounts.pmount->param[Mount::par_ticket_category].arg[functions->fun_ticket.ticket.category]);
}
void ticket_expected(Info & i)
{
if( functions->fun_ticket.ticket.expected < system->mounts.pmount->param[Mount::par_ticket_expected].arg.size() )
HtmlEscape(i.out, system->mounts.pmount->param[Mount::par_ticket_expected].arg[functions->fun_ticket.ticket.expected]);
}
void ticket_progress(Info & i)
{
i.out << functions->fun_ticket.ticket.progress;
}
void ticket_progress_image_number(Info & i)
{
int percent = functions->fun_ticket.ticket.progress;
i.out << ticket_calc_progress_image_number(percent);
}
// --------------------------------------------------------------------------------
static size_t ticket_tab_index;
void ticket_tab(Info & i)
{
ticket_tab_index = i.iter;
i.res = ticket_tab_index < functions->fun_ticket.ticket_tab.size();
}
void ticket_tab_url(Info & i)
{
if( ticket_tab_index < functions->fun_ticket.ticket_tab.size() )
{
Item * dir = system->dirs.GetDir( functions->fun_ticket.ticket_tab[ticket_tab_index].dir_id );
if( dir )
{
HtmlEscape(i.out, dir->url);
}
else
{
i.out << "<!-- unknown directory -->";
}
}
}
void ticket_tab_subject(Info & i)
{
if( ticket_tab_index < functions->fun_ticket.ticket_tab.size() )
{
Item * dir = system->dirs.GetDir( functions->fun_ticket.ticket_tab[ticket_tab_index].dir_id );
if( dir )
{
if( !dir->subject.empty() )
HtmlEscape(i.out, dir->subject);
else
HtmlEscape(i.out, dir->url);
}
else
{
i.out << "<!-- unknown subject -->";
}
}
}
void ticket_tab_subject_empty(Info & i)
{
i.res = true;
if( ticket_tab_index < functions->fun_ticket.ticket_tab.size() )
{
Item * dir = system->dirs.GetDir( functions->fun_ticket.ticket_tab[ticket_tab_index].dir_id );
if( dir )
i.res = dir->subject.empty();
}
}
void ticket_tab_author(Info & i)
{
bool unknown = true;
if( ticket_tab_index < functions->fun_ticket.ticket_tab.size() )
{
Item * dir = system->dirs.GetDir( functions->fun_ticket.ticket_tab[ticket_tab_index].dir_id );
if( dir )
{
User * puser = system->users.GetUser(dir->user_id);
unknown = false;
if( puser )
HtmlEscape(i.out, puser->name);
else
{
i.out << "~";
if( !dir->guest_name.empty() )
HtmlEscape(i.out, dir->guest_name);
else
i.out << "guest"; // !! dodac do konfiga
}
}
}
if( unknown )
{
i.out << "<!-- unknown user -->";
}
}
void ticket_tab_type(Info & i)
{
if( ticket_tab_index >= functions->fun_ticket.ticket_tab.size() )
return;
Ticket & t = functions->fun_ticket.ticket_tab[ticket_tab_index];
if( t.type < system->mounts.pmount->param[Mount::par_ticket_type].arg.size() )
HtmlEscape(i.out, system->mounts.pmount->param[Mount::par_ticket_type].arg[t.type]);
}
void ticket_tab_status(Info & i)
{
if( ticket_tab_index >= functions->fun_ticket.ticket_tab.size() )
return;
Ticket & t = functions->fun_ticket.ticket_tab[ticket_tab_index];
if( t.status < system->mounts.pmount->param[Mount::par_ticket_status].arg.size() )
HtmlEscape(i.out, system->mounts.pmount->param[Mount::par_ticket_status].arg[t.status]);
}
void ticket_tab_priority(Info & i)
{
if( ticket_tab_index >= functions->fun_ticket.ticket_tab.size() )
return;
Ticket & t = functions->fun_ticket.ticket_tab[ticket_tab_index];
if( t.priority < system->mounts.pmount->param[Mount::par_ticket_priority].arg.size() )
HtmlEscape(i.out, system->mounts.pmount->param[Mount::par_ticket_priority].arg[t.priority]);
}
void ticket_tab_category(Info & i)
{
if( ticket_tab_index >= functions->fun_ticket.ticket_tab.size() )
return;
Ticket & t = functions->fun_ticket.ticket_tab[ticket_tab_index];
if( t.category < system->mounts.pmount->param[Mount::par_ticket_category].arg.size() )
HtmlEscape(i.out, system->mounts.pmount->param[Mount::par_ticket_category].arg[t.category]);
}
void ticket_tab_expected(Info & i)
{
if( ticket_tab_index >= functions->fun_ticket.ticket_tab.size() )
return;
Ticket & t = functions->fun_ticket.ticket_tab[ticket_tab_index];
if( t.expected < system->mounts.pmount->param[Mount::par_ticket_expected].arg.size() )
HtmlEscape(i.out, system->mounts.pmount->param[Mount::par_ticket_expected].arg[t.expected]);
}
void ticket_tab_progress(Info & i)
{
if( ticket_tab_index >= functions->fun_ticket.ticket_tab.size() )
return;
i.out << functions->fun_ticket.ticket_tab[ticket_tab_index].progress;
}
void ticket_tab_progress_image_number(Info & i)
{
if( ticket_tab_index >= functions->fun_ticket.ticket_tab.size() )
return;
int percent = functions->fun_ticket.ticket_tab[ticket_tab_index].progress;
i.out << ticket_calc_progress_image_number(percent);
}
// --------------------------------------------------------------------------------
static size_t ticket_type_tab_ind;
void ticket_type_tab(Info & i)
{
ticket_type_tab_ind = i.iter;
i.res = ticket_type_tab_ind < system->mounts.pmount->param[Mount::par_ticket_type].arg.size();
}
void ticket_type_tab_defined(Info & i)
{
i.res = system->mounts.pmount->param[Mount::par_ticket_type].defined;
}
void ticket_type_tab_isdefault(Info & i)
{
if( functions->fun_ticket.is_ticket )
{
i.res = (ticket_type_tab_ind == functions->fun_ticket.ticket.type);
}
else
{
Mount::ParamRow & p = system->mounts.pmount->param[Mount::par_ticket_type_default];
if( !p.defined || p.arg.empty() )
return; // default false
size_t value = atoi( p.arg[0].c_str() );
i.res = (ticket_type_tab_ind == value);
}
}
void ticket_type_tab_index(Info & i)
{
i.out << ticket_type_tab_ind;
}
void ticket_type_tab_name(Info & i)
{
if( ticket_type_tab_ind < system->mounts.pmount->param[Mount::par_ticket_type].arg.size() )
HtmlEscape(i.out, system->mounts.pmount->param[Mount::par_ticket_type].arg[ticket_type_tab_ind]);
}
// --------------------------------------------------------------------------------
static size_t ticket_status_tab_ind;
void ticket_status_tab(Info & i)
{
ticket_status_tab_ind = i.iter;
i.res = ticket_status_tab_ind < system->mounts.pmount->param[Mount::par_ticket_status].arg.size();
}
void ticket_status_tab_defined(Info & i)
{
i.res = system->mounts.pmount->param[Mount::par_ticket_status].defined;
}
void ticket_status_tab_isdefault(Info & i)
{
if( functions->fun_ticket.is_ticket )
{
i.res = (ticket_status_tab_ind == functions->fun_ticket.ticket.status);
}
else
{
Mount::ParamRow & p = system->mounts.pmount->param[Mount::par_ticket_status_default];
if( !p.defined || p.arg.empty() )
return; // default false
size_t value = atoi( p.arg[0].c_str() );
i.res = (ticket_status_tab_ind == value);
}
}
void ticket_status_tab_index(Info & i)
{
i.out << ticket_status_tab_ind;
}
void ticket_status_tab_name(Info & i)
{
if( ticket_status_tab_ind < system->mounts.pmount->param[Mount::par_ticket_status].arg.size() )
HtmlEscape(i.out, system->mounts.pmount->param[Mount::par_ticket_status].arg[ticket_status_tab_ind]);
}
// --------------------------------------------------------------------------------
static size_t ticket_priority_tab_ind;
void ticket_priority_tab(Info & i)
{
ticket_priority_tab_ind = i.iter;
i.res = ticket_priority_tab_ind < system->mounts.pmount->param[Mount::par_ticket_priority].arg.size();
}
void ticket_priority_tab_defined(Info & i)
{
i.res = system->mounts.pmount->param[Mount::par_ticket_priority].defined;
}
void ticket_priority_tab_isdefault(Info & i)
{
if( functions->fun_ticket.is_ticket )
{
i.res = (ticket_priority_tab_ind == functions->fun_ticket.ticket.priority);
}
else
{
Mount::ParamRow & p = system->mounts.pmount->param[Mount::par_ticket_priority_default];
if( !p.defined || p.arg.empty() )
return; // default false
size_t value = atoi( p.arg[0].c_str() );
i.res = (ticket_priority_tab_ind == value);
}
}
void ticket_priority_tab_index(Info & i)
{
i.out << ticket_priority_tab_ind;
}
void ticket_priority_tab_name(Info & i)
{
if( ticket_priority_tab_ind < system->mounts.pmount->param[Mount::par_ticket_priority].arg.size() )
HtmlEscape(i.out, system->mounts.pmount->param[Mount::par_ticket_priority].arg[ticket_priority_tab_ind]);
}
// --------------------------------------------------------------------------------
static size_t ticket_category_tab_ind;
void ticket_category_tab(Info & i)
{
ticket_category_tab_ind = i.iter;
i.res = ticket_category_tab_ind < system->mounts.pmount->param[Mount::par_ticket_category].arg.size();
}
void ticket_category_tab_defined(Info & i)
{
i.res = system->mounts.pmount->param[Mount::par_ticket_category].defined;
}
void ticket_category_tab_isdefault(Info & i)
{
if( functions->fun_ticket.is_ticket )
{
i.res = (ticket_category_tab_ind == functions->fun_ticket.ticket.category);
}
else
{
Mount::ParamRow & p = system->mounts.pmount->param[Mount::par_ticket_category_default];
if( !p.defined || p.arg.empty() )
return; // default false
size_t value = atoi( p.arg[0].c_str() );
i.res = (ticket_category_tab_ind == value);
}
}
void ticket_category_tab_index(Info & i)
{
i.out << ticket_category_tab_ind;
}
void ticket_category_tab_name(Info & i)
{
if( ticket_category_tab_ind < system->mounts.pmount->param[Mount::par_ticket_category].arg.size() )
HtmlEscape(i.out, system->mounts.pmount->param[Mount::par_ticket_category].arg[ticket_category_tab_ind]);
}
// --------------------------------------------------------------------------------
static size_t ticket_expected_tab_ind;
void ticket_expected_tab(Info & i)
{
ticket_expected_tab_ind = i.iter;
i.res = ticket_expected_tab_ind < system->mounts.pmount->param[Mount::par_ticket_expected].arg.size();
}
void ticket_expected_tab_defined(Info & i)
{
i.res = system->mounts.pmount->param[Mount::par_ticket_expected].defined;
}
void ticket_expected_tab_isdefault(Info & i)
{
if( functions->fun_ticket.is_ticket )
{
i.res = (ticket_expected_tab_ind == functions->fun_ticket.ticket.expected);
}
else
{
Mount::ParamRow & p = system->mounts.pmount->param[Mount::par_ticket_expected_default];
if( !p.defined || p.arg.empty() )
return; // default false
size_t value = atoi( p.arg[0].c_str() );
i.res = (ticket_expected_tab_ind == value);
}
}
void ticket_expected_tab_index(Info & i)
{
i.out << ticket_expected_tab_ind;
}
void ticket_expected_tab_name(Info & i)
{
if( ticket_expected_tab_ind < system->mounts.pmount->param[Mount::par_ticket_expected].arg.size() )
HtmlEscape(i.out, system->mounts.pmount->param[Mount::par_ticket_expected].arg[ticket_expected_tab_ind]);
}
} // namespace TemplatesFunctions