added: forum

added: mount params can have arguments (in parentheses)
added: mount params: withheader, withinfo, restrictcreatethread, only_root_can_remove,
       can_use_emacs_on(level), can_use_mkdir_on(level), 
added: table Item has 'subject' column now
removed: column 'subject' from table Content




git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@505 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
2009-06-05 20:29:06 +00:00
parent 3d001e7458
commit 1eb42446f8
38 changed files with 1357 additions and 369 deletions

View File

@@ -10,7 +10,6 @@
#include "content.h"
#include "../core/request.h"
#include "../core/error.h"
#include "../core/misc.h"
#include "../core/db.h"
#include "../core/data.h"
@@ -18,22 +17,6 @@
void Content::PrepareUrl(Item & item)
{
CorrectUrl(item);
if( data.functions.GetFunction(item.url) )
{
// the name provided by an user is the same as a name of a function
// we add one underscore character at the beginning
// names of functions should not begin with an underscore '_'
// and we can simply add one '_' at the beginning
// and the name will be unique
item.url.insert(item.url.begin(), '_');
}
}
void Content::PostFunEmacsAdd()
@@ -47,10 +30,11 @@ void Content::PostFunEmacsAdd()
request.item.privileges = 0644; // !! tymczasowo, bedzie uzyte umask
request.item.parent_id = request.dir_table.back()->id;
request.item.type = Item::file;
request.item.content_type = 1;// !! tymczasowo formatted text
// dates (creation and modification) is set by request.item.Clear() at the beginning
if( !request.HasWriteAccess(*request.dir_table.back() ) )
if( !request.CanUseEmacs(*request.dir_table.back() ) )
throw Error(Error::permision_denied);
request.session->done_status = db.AddItem(request.item);
@@ -62,7 +46,7 @@ void Content::PostFunEmacsEdit(bool with_url)
{
request.session->done = Done::edited_item;
if( !request.HasWriteAccess(request.item) )
if( !request.CanUseEmacs(request.item) )
throw Error(Error::permision_denied);
time_t t = std::time(0);
@@ -78,11 +62,30 @@ void Content::PostFunEmacsEdit(bool with_url)
void Content::PostFunEmacs()
{
bool adding = true;
if( request.is_item )
adding = false;
try
{
// these old values are ignored (if exists)
//!! tymczasowo, zabezpieczenie przed pustym url-em
try {
request.item.url = request.PostVar("url");
request.item.subject = request.PostVar("subject");
}
catch(...)
{
}
if( request.item.subject.empty() )
request.item.subject = request.dir_table.back()->subject;
// !! dodac skladanie tytuly z ostatniego katalogu i liczby okreslajacej ile jest elementow w srodku
// !! nie bedzie obciazany modul wyszukujacy bardzo
////////
request.item.content = request.PostVar("content");
bool with_url = false;
@@ -92,10 +95,11 @@ void Content::PostFunEmacs()
PrepareUrl(request.item);
if( request.is_item )
PostFunEmacsEdit(with_url);
else
if( adding )
PostFunEmacsAdd();
else
PostFunEmacsEdit(with_url);
}
catch(const Error & e)
{
@@ -106,9 +110,22 @@ void Content::PostFunEmacs()
if( request.session->done_status == Error::ok )
{
request.session->item = request.item;
request.session->done_timer = 2;
RedirectTo(request.item);
if( data.mounts.CurrentMountType() == Mount::thread )
{
if( adding )
db.EditThreadAddItem(request.dir_table.back()->id, request.item.id);
// request.session->item = request.item;
// request.session->done_timer = 2;
RedirectTo(*request.dir_table.back());
}
else
{
request.session->item = request.item;
request.session->done_timer = 2;
RedirectTo(request.item);
}
}
else
{
@@ -128,14 +145,14 @@ void Content::FunEmacs()
if( !request.is_item )
{
// adding a new item
if( !request.HasReadWriteAccess(*request.dir_table.back()) )
if( !request.CanUseEmacs(*request.dir_table.back()) )
request.status = Error::permision_denied;
return;
}
// editing an existing item
if( !request.HasReadWriteAccess(request.item) )
if( !request.CanUseEmacs(request.item) )
{
request.status = Error::permision_denied;
return;