Files
winix/functions/subject.cpp
Tomasz Sowa 0c6ddc2218 added: 'subject' winix function is using WINIX_FILE_CHANGED message now (when changing a file's subject)
added: 'postredirect' global parameter (it can be a param or post value)
       you can use this parameter in a html POST form
       after processing the POST request winix will make a redirect to the value



git-svn-id: svn://ttmath.org/publicrep/winix/trunk@881 e52654a7-88a9-db11-a3e9-0013d4bc506e
2012-09-04 20:24:42 +00:00

96 lines
1.5 KiB
C++
Executable File

/*
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2008-2012, Tomasz Sowa
* All rights reserved.
*
*/
#include "subject.h"
#include "core/plugin.h"
namespace Fun
{
Subject::Subject()
{
fun.url = L"subject";
}
bool Subject::SubjectCheckAccess()
{
// super user can always
if( cur->session->puser && cur->session->puser->super_user )
return true;
bool access;
if( cur->request->is_item )
access = system->HasWriteAccess(cur->request->item);
else
access = system->HasWriteAccess(*cur->request->dir_tab.back());
if( !access )
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return access;
}
void Subject::EditDirSubject()
{
Item & dir = *cur->request->dir_tab.back();
cur->request->PostVar(L"subject", dir.subject);
db->EditSubjectById(dir, dir.id);
// !! IMPROVE ME
// we need something like WINIX_DIR_CHANGED message
//plugin.Call(WINIX______CHANGED, cur->request->dir_tab.back());
system->RedirectToLastDir();
}
void Subject::EditFileSubject()
{
cur->request->PostVar(L"subject", cur->request->item.subject);
db->EditSubjectById(cur->request->item, cur->request->item.id);
plugin.Call(WINIX_FILE_CHANGED, &cur->request->item);
system->RedirectTo(cur->request->item);
}
void Subject::MakePost()
{
if( !SubjectCheckAccess() )
return;
if( cur->request->is_item )
EditFileSubject();
else
EditDirSubject();
}
void Subject::MakeGet()
{
SubjectCheckAccess();
}
} // namespace