added: 'rm' function can work with tickets

git-svn-id: svn://ttmath.org/publicrep/winix/trunk@565 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
2010-02-06 14:08:44 +00:00
parent ed9feaf542
commit 0e50977779
16 changed files with 137 additions and 38 deletions

View File

@@ -50,6 +50,7 @@ class Content
void FunEmacs();
void FunPriv();
bool FunRmCheckAccess();
void FunRmDirRecursive();
void FunRmDir();
void FunRm();
@@ -116,6 +117,7 @@ class Content
bool FunEditTicketCheckAccess();
void PostFunEditTicketLogAndRedirect();
void EditTicketCheckFirstItem();
void EditTicketModTicket();
void EditTicketModDir();
void EditTicketModFirstItem();

View File

@@ -29,6 +29,33 @@ return true;
void Content::EditTicketCheckFirstItem()
{
if( request.session->done_status != Error::ok )
return;
if( request.ticket.item_id == -1 )
{
// creating a new item (the item was deleted by a user)
Item item;
item.parent_id = request.dir_table.back()->id;
item.subject = request.dir_table.back()->subject;
item.type = Item::file;
item.privileges = 0644; // !! tymczasowo
SetUser(item);
PrepareUrl(item);
request.session->done_status = db.AddItem(item);
if( request.session->done_status == Error::ok )
{
log << log2 << "Content: added the first item with content for the ticket, item.id: " << item.id << logend;
request.ticket.item_id = item.id;
}
}
}
@@ -128,6 +155,7 @@ void Content::PostFunEditTicket()
return;
}
EditTicketCheckFirstItem();
EditTicketModTicket();
EditTicketModDir();
EditTicketModFirstItem();

View File

@@ -15,10 +15,31 @@
bool Content::FunRmCheckAccess()
{
if( !request.is_item )
{
if( !request.CanRemove(*request.dir_table.back()) )
{
request.status = Error::permission_denied;
return false;
}
}
else
if( !request.CanRemove(request.item) )
{
request.status = Error::permission_denied;
return false;
}
return true;
}
void Content::FunRmDirRecursive()
{
data.dirs.MakePath(request.dir_table.back()->id, request.session->dir_old);
// this method deletes recursively all directories
data.dirs.DeleteDir(request.dir_table.back()->id);
@@ -53,12 +74,6 @@ void Content::FunRmDirRecursive()
void Content::FunRmDir()
{
if( !request.CanRemove(*request.dir_table.back()) )
{
request.status = Error::permission_denied;
return;
}
if( request.param_table.empty() )
request.status = Error::permission_denied;
else
@@ -72,27 +87,17 @@ void Content::FunRmDir()
}
void Content::FunRm()
{
if( !request.is_item )
{
FunRmDir();
if( !FunRmCheckAccess() )
return;
}
if( !request.CanRemove(request.item) )
{
request.status = Error::permission_denied;
return;
}
if( !request.is_item )
return FunRmDir();
if( request.param_table.empty() )
{
// we'll put some information about the deleted item (on the next page)
request.session->item = request.item;
// !! zmienic interfejs dla db.DelItem
if( db.DelItem( request.item ) )
{
request.session->done_status = Error::ok;
@@ -101,6 +106,10 @@ void Content::FunRm()
if( data.mounts.pmount->type == Mount::thread )
db.EditThreadRemoveItem(request.item.parent_id);
else
if( data.mounts.pmount->type == Mount::ticket )
db.EditTicketRemoveItem(request.item.id);
}
else
{