added: to Item struct: ameta (PT::Space)

admin meta information
added: option "a" to meta winix function
       editing admin meta information
changed: now if you don't have write access to an item
         you can't see the meta information
         previous if you had read access you could have seen them
added: in plugin ticket and thread
       support for 'closing' (ticket, thread)
       (this is only logic, we need some html yet)
added: some ezc function for getting meta/admin meta information
       (for the current item and the last directory)




git-svn-id: svn://ttmath.org/publicrep/winix/trunk@907 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
2012-11-04 21:01:02 +00:00
parent 4809016b78
commit 0045c6c72c
24 changed files with 389 additions and 88 deletions

View File

@@ -50,6 +50,8 @@ bool EditTicket::HasAccess()
if( cur->mount->type != ticket_info->mount_type_ticket )
return false;
// !! CHECKME what about closing threads?
return true;
}
@@ -187,19 +189,39 @@ void EditTicket::MakePost()
}
void EditTicket::CloseTicket()
{
PT::Space & ticket_space = cur->request->item.ameta.FindAddSpace(L"ticket");
ticket_space.Add(L"closed", true);
PT::Space & thread_space = cur->request->item.ameta.FindAddSpace(L"thread");
thread_space.Add(L"closed", true);
if( db->EditAdminMetaById(cur->request->item.ameta, cur->request->item.id) == WINIX_ERR_OK )
log << log3 << "EditTicket: closing ticket" << logend;
}
void EditTicket::MakeGet()
{
ticket_info->Clear();
ticket_info->FindCurrentConf();
if( cur->request->IsParam(L"close") )
{
CloseTicket();
system->RedirectToLastItem();
}
else
{
ticket_info->Clear();
ticket_info->FindCurrentConf();
Ticket & ticket = PrepareTicket();
PT::Space & meta = PrepareSpace();
ticket_info->ticket = &ticket;
ticket_info->item = &cur->request->item;
Ticket & ticket = PrepareTicket();
PT::Space & meta = PrepareSpace();
ticket_info->ticket = &ticket;
ticket_info->item = &cur->request->item;
// copy meta info to display correctly new files
ticket_info->CopyTicketSpace(meta, cur->request->item);
// copy meta info to display correctly new files
ticket_info->CopyTicketSpace(meta, cur->request->item);
}
}

View File

@@ -46,6 +46,7 @@ private:
PT::Space & PrepareSpace();
void ChangeTicket(Ticket & ticket, Item & item);
void Submit(Ticket & ticket, Item & item);
void CloseTicket();
};

View File

@@ -274,6 +274,14 @@ void ticket_meta_value(Info & i)
space(i, ticket_info.item->meta);
}
void ticket_is_closed(Info & i)
{
PT::Space * ticket_space = cur->request->item.ameta.FindSpace(L"ticket");
if( ticket_space )
i.res = ticket_space->Bool(L"closed", false);
}
namespace ns_tickets_tab
@@ -414,6 +422,21 @@ void tickets_tab(Info & i)
}
void tickets_tab_is_closed(Info & i)
{
tickets_tab_check_reqid();
if( tickets_value.is_item )
{
PT::Space * ticket_space = tickets_value.item->ameta.FindSpace(L"ticket");
if( ticket_space )
i.res = ticket_space->Bool(L"closed", false);
}
}
void tickets_tab_url(Info & i)
{
tickets_tab_check_reqid();
@@ -844,8 +867,10 @@ using namespace ns_ticket_tab;
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("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);