added: issues ticket system
added functions: ticket, createticket, editticket (there is no 'rm' function working for tickets yet) changed: mount parser and mount points now we have more parameters (arguments in parameters) some refactoring in functions 'emacs' and 'mkdir' git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@554 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
148
content/editticket.cpp
Executable file
148
content/editticket.cpp
Executable file
@@ -0,0 +1,148 @@
|
||||
/*
|
||||
* This file is a part of CMSLU -- Content Management System like Unix
|
||||
* and is not publicly distributed
|
||||
*
|
||||
* Copyright (c) 2008-2009, Tomasz Sowa
|
||||
* All rights reserved.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "content.h"
|
||||
#include "../core/request.h"
|
||||
#include "../core/error.h"
|
||||
#include "../core/db.h"
|
||||
#include "../core/mount.h"
|
||||
#include "../core/data.h"
|
||||
|
||||
|
||||
|
||||
bool Content::FunEditTicketCheckAccess()
|
||||
{
|
||||
if( !request.CanEditTicket() )
|
||||
{
|
||||
request.status = Error::permission_denied;
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void Content::EditTicketModTicket()
|
||||
{
|
||||
if( request.session->done_status != Error::ok )
|
||||
return;
|
||||
|
||||
Ticket ticket;
|
||||
ReadTicket(ticket);
|
||||
|
||||
request.ticket.type = ticket.type;
|
||||
request.ticket.status = ticket.status;
|
||||
request.ticket.priority = ticket.priority;
|
||||
request.ticket.category = ticket.category;
|
||||
request.ticket.expected = ticket.expected;
|
||||
request.ticket.progress = ticket.progress;
|
||||
|
||||
request.session->done_status = db.EditTicketById(request.ticket);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Content::EditTicketModDir()
|
||||
{
|
||||
if( request.session->done_status != Error::ok )
|
||||
return;
|
||||
|
||||
// we don't modify the url
|
||||
|
||||
Item & dir = *request.dir_table.back();
|
||||
bool edit_dir_subject = (dir.subject != request.item.subject);
|
||||
|
||||
if( edit_dir_subject )
|
||||
{
|
||||
dir.subject = request.item.subject;
|
||||
request.session->done_status = db.EditItemById(dir, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Content::EditTicketModFirstItem()
|
||||
{
|
||||
if( request.session->done_status != Error::ok )
|
||||
return;
|
||||
|
||||
// modyfing the first item (the one with content)
|
||||
ReadItemContentWithType(request.item);
|
||||
|
||||
Item item;
|
||||
db.GetItemById(request.ticket.item_id, item);
|
||||
item.subject = request.item.subject;
|
||||
item.content = request.item.content;
|
||||
item.content_type = request.item.content_type;
|
||||
// the url doesn't matter
|
||||
|
||||
db.EditItemById(item, false);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Content::PostFunEditTicketLogAndRedirect()
|
||||
{
|
||||
if( request.session->done_status == Error::ok )
|
||||
{
|
||||
request.session->done = Done::edited_ticket;
|
||||
|
||||
log << log2 << "Content: edited a ticket" << logend;
|
||||
RedirectToLastDir();
|
||||
}
|
||||
else
|
||||
{
|
||||
log << log1 << "Content: problem with editing a ticket, error code:"
|
||||
<< request.session->done_status << logend;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Content::PostFunEditTicket()
|
||||
{
|
||||
if( !FunEditTicketCheckAccess() )
|
||||
return;
|
||||
|
||||
|
||||
ReadItem(request.item, Item::dir);
|
||||
|
||||
if( !FunCreateTicketCheckAbuse(Done::edited_ticket) )
|
||||
{
|
||||
ReadItemContentWithType(request.item); // for correctly displaying the form
|
||||
return;
|
||||
}
|
||||
|
||||
if( db.GetTicketByDirId(request.dir_table.back()->id, request.ticket) != Error::ok )
|
||||
{
|
||||
request.status = Error::permission_denied;
|
||||
return;
|
||||
}
|
||||
|
||||
EditTicketModTicket();
|
||||
EditTicketModDir();
|
||||
EditTicketModFirstItem();
|
||||
PostFunEditTicketLogAndRedirect();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Content::FunEditTicket()
|
||||
{
|
||||
FunEditTicketCheckAccess();
|
||||
|
||||
db.GetItemById(request.ticket.item_id, request.item);
|
||||
|
||||
// the subject we get from the last directory
|
||||
request.item.subject = request.dir_table.back()->subject;
|
||||
}
|
||||
|
Reference in New Issue
Block a user