some improvement in templates

(now we have O(1) time for selecting the right html template)
added: winix function: template
for selecting a template for an item (file or dir)



git-svn-id: svn://ttmath.org/publicrep/winix/trunk@636 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
2010-08-13 20:04:57 +00:00
parent 9a199cd834
commit f3cd3b88b9
40 changed files with 756 additions and 228 deletions

View File

@@ -70,7 +70,7 @@ ckeditor.o: privchanger.h chown.h cp.h createthread.h createticket.h
ckeditor.o: default.h download.h editticket.h emacs.h last.h login.h logout.h
ckeditor.o: ls.h mkdir.h mv.h node.h priv.h reload.h rm.h run.h subject.h
ckeditor.o: funthread.h ../core/thread.h funticket.h ../core/ticket.h
ckeditor.o: tinymce.h uname.h upload.h uptime.h who.h
ckeditor.o: template.h tinymce.h uname.h upload.h uptime.h who.h
cp.o: cp.h functionbase.h ../core/item.h ../core/db.h ../core/item.h
cp.o: ../core/user.h ../core/group.h ../core/thread.h ../core/error.h
cp.o: ../core/log.h ../core/dircontainer.h ../core/ugcontainer.h
@@ -87,8 +87,8 @@ cp.o: ../core/system.h ../core/misc.h functions.h functionparser.h adduser.h
cp.o: cat.h chmod.h privchanger.h chown.h ckeditor.h createthread.h
cp.o: createticket.h default.h download.h editticket.h emacs.h last.h login.h
cp.o: logout.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h run.h subject.h
cp.o: funthread.h ../core/thread.h funticket.h ../core/ticket.h tinymce.h
cp.o: uname.h upload.h uptime.h who.h
cp.o: funthread.h ../core/thread.h funticket.h ../core/ticket.h template.h
cp.o: tinymce.h uname.h upload.h uptime.h who.h
createthread.o: createthread.h functionbase.h ../core/item.h ../core/db.h
createthread.o: ../core/item.h ../core/user.h ../core/group.h
createthread.o: ../core/thread.h ../core/error.h ../core/log.h
@@ -108,7 +108,8 @@ createthread.o: privchanger.h chown.h ckeditor.h cp.h createticket.h
createthread.o: default.h download.h editticket.h emacs.h last.h login.h
createthread.o: logout.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h run.h
createthread.o: subject.h funthread.h ../core/thread.h funticket.h
createthread.o: ../core/ticket.h tinymce.h uname.h upload.h uptime.h who.h
createthread.o: ../core/ticket.h template.h tinymce.h uname.h upload.h
createthread.o: uptime.h who.h
createticket.o: createticket.h functionbase.h ../core/item.h ../core/db.h
createticket.o: ../core/item.h ../core/user.h ../core/group.h
createticket.o: ../core/thread.h ../core/error.h ../core/log.h
@@ -128,7 +129,8 @@ createticket.o: adduser.h cat.h chmod.h privchanger.h chown.h ckeditor.h cp.h
createticket.o: createthread.h default.h download.h editticket.h emacs.h
createticket.o: last.h login.h logout.h ls.h mkdir.h mv.h node.h priv.h
createticket.o: reload.h rm.h run.h subject.h funthread.h ../core/thread.h
createticket.o: funticket.h tinymce.h uname.h upload.h uptime.h who.h
createticket.o: funticket.h template.h tinymce.h uname.h upload.h uptime.h
createticket.o: who.h
default.o: default.h functionbase.h ../core/item.h ../core/db.h
default.o: ../core/item.h ../core/user.h ../core/group.h ../core/thread.h
default.o: ../core/error.h ../core/log.h ../core/dircontainer.h
@@ -173,8 +175,8 @@ editticket.o: privchanger.h chown.h ckeditor.h cp.h createthread.h
editticket.o: createticket.h default.h download.h emacs.h last.h login.h
editticket.o: logout.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h run.h
editticket.o: subject.h funthread.h ../core/thread.h funticket.h
editticket.o: ../core/ticket.h tinymce.h uname.h upload.h uptime.h who.h
editticket.o: readticket.h
editticket.o: ../core/ticket.h template.h tinymce.h uname.h upload.h uptime.h
editticket.o: who.h readticket.h
emacs.o: emacs.h functionbase.h ../core/item.h ../core/db.h ../core/item.h
emacs.o: ../core/user.h ../core/group.h ../core/thread.h ../core/error.h
emacs.o: ../core/log.h ../core/dircontainer.h ../core/ugcontainer.h
@@ -196,7 +198,7 @@ emacs.o: cat.h chmod.h privchanger.h chown.h ckeditor.h cp.h createthread.h
emacs.o: createticket.h default.h download.h editticket.h last.h login.h
emacs.o: logout.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h run.h
emacs.o: subject.h funthread.h ../core/thread.h funticket.h ../core/ticket.h
emacs.o: tinymce.h uname.h upload.h uptime.h who.h
emacs.o: template.h tinymce.h uname.h upload.h uptime.h who.h
functionbase.o: functionbase.h ../core/item.h ../core/db.h ../core/item.h
functionbase.o: ../core/user.h ../core/group.h ../core/thread.h
functionbase.o: ../core/error.h ../core/log.h ../core/dircontainer.h
@@ -216,7 +218,8 @@ functionbase.o: chown.h ckeditor.h cp.h createthread.h createticket.h
functionbase.o: default.h download.h editticket.h emacs.h last.h login.h
functionbase.o: logout.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h run.h
functionbase.o: subject.h funthread.h ../core/thread.h funticket.h
functionbase.o: ../core/ticket.h tinymce.h uname.h upload.h uptime.h who.h
functionbase.o: ../core/ticket.h template.h tinymce.h uname.h upload.h
functionbase.o: uptime.h who.h
functionparser.o: functionparser.h ../core/request.h ../core/requesttypes.h
functionparser.o: ../core/session.h ../core/item.h ../core/error.h
functionparser.o: ../core/log.h ../core/user.h ../core/plugindata.h
@@ -237,7 +240,8 @@ functionparser.o: chown.h ckeditor.h cp.h createthread.h createticket.h
functionparser.o: default.h download.h editticket.h emacs.h last.h login.h
functionparser.o: logout.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h
functionparser.o: run.h subject.h funthread.h ../core/thread.h funticket.h
functionparser.o: ../core/ticket.h tinymce.h uname.h upload.h uptime.h who.h
functionparser.o: ../core/ticket.h template.h tinymce.h uname.h upload.h
functionparser.o: uptime.h who.h
functions.o: functions.h functionbase.h ../core/item.h ../core/db.h
functions.o: ../core/item.h ../core/user.h ../core/group.h ../core/thread.h
functions.o: ../core/error.h ../core/log.h ../core/dircontainer.h
@@ -256,8 +260,8 @@ functions.o: ckeditor.h cp.h createthread.h createticket.h default.h
functions.o: download.h editticket.h emacs.h last.h login.h logout.h ls.h
functions.o: mkdir.h mv.h node.h priv.h reload.h rm.h run.h subject.h
functions.o: funthread.h ../core/thread.h funticket.h ../core/ticket.h
functions.o: tinymce.h uname.h upload.h uptime.h who.h ../core/log.h
functions.o: ../core/misc.h ../templates/templates.h
functions.o: template.h tinymce.h uname.h upload.h uptime.h who.h
functions.o: ../core/log.h ../core/misc.h ../templates/templates.h
functions.o: ../templates/patterncacher.h ../core/item.h ../templates/misc.h
functions.o: ../templates/ckeditorgetparser.h ../core/httpsimpleparser.h
functions.o: ../core/log.h ../templates/indexpatterns.h
@@ -359,7 +363,7 @@ mkdir.o: chmod.h privchanger.h chown.h ckeditor.h cp.h createthread.h
mkdir.o: createticket.h default.h download.h editticket.h emacs.h last.h
mkdir.o: login.h logout.h ls.h mv.h node.h priv.h reload.h rm.h run.h
mkdir.o: subject.h funthread.h ../core/thread.h funticket.h ../core/ticket.h
mkdir.o: tinymce.h uname.h upload.h uptime.h who.h
mkdir.o: template.h tinymce.h uname.h upload.h uptime.h who.h
mv.o: mv.h functionbase.h ../core/item.h ../core/db.h ../core/item.h
mv.o: ../core/user.h ../core/group.h ../core/thread.h ../core/error.h
mv.o: ../core/log.h ../core/dircontainer.h ../core/ugcontainer.h
@@ -376,8 +380,8 @@ mv.o: ../core/system.h functions.h functionparser.h adduser.h cat.h chmod.h
mv.o: privchanger.h chown.h ckeditor.h cp.h createthread.h createticket.h
mv.o: default.h download.h editticket.h emacs.h last.h login.h logout.h ls.h
mv.o: mkdir.h node.h priv.h reload.h rm.h run.h subject.h funthread.h
mv.o: ../core/thread.h funticket.h ../core/ticket.h tinymce.h uname.h
mv.o: upload.h uptime.h who.h
mv.o: ../core/thread.h funticket.h ../core/ticket.h template.h tinymce.h
mv.o: uname.h upload.h uptime.h who.h
node.o: node.h functionbase.h ../core/item.h ../core/db.h ../core/item.h
node.o: ../core/user.h ../core/group.h ../core/thread.h ../core/error.h
node.o: ../core/log.h ../core/dircontainer.h ../core/ugcontainer.h
@@ -458,8 +462,8 @@ rm.o: ../functions/functions.h functionparser.h adduser.h cat.h chmod.h
rm.o: privchanger.h chown.h ckeditor.h cp.h createthread.h createticket.h
rm.o: default.h download.h editticket.h emacs.h last.h login.h logout.h ls.h
rm.o: mkdir.h mv.h node.h priv.h reload.h run.h subject.h funthread.h
rm.o: ../core/thread.h funticket.h ../core/ticket.h tinymce.h uname.h
rm.o: upload.h uptime.h who.h ../templates/templates.h
rm.o: ../core/thread.h funticket.h ../core/ticket.h template.h tinymce.h
rm.o: uname.h upload.h uptime.h who.h ../templates/templates.h
rm.o: ../templates/patterncacher.h ../core/item.h ../templates/misc.h
rm.o: ../templates/ckeditorgetparser.h ../core/httpsimpleparser.h
rm.o: ../core/log.h ../templates/indexpatterns.h ../core/sessionmanager.h
@@ -489,6 +493,20 @@ subject.o: ../core/groups.h ../core/loadavg.h ../core/notify.h
subject.o: ../templatesnotify/templatesnotify.h ../../ezc/src/ezc.h
subject.o: ../core/mount.h ../core/locale.h ../templates/misc.h
subject.o: ../templates/localefilter.h ../core/locale.h ../core/system.h
template.o: template.h functionbase.h ../core/item.h ../core/db.h
template.o: ../core/item.h ../core/user.h ../core/group.h ../core/thread.h
template.o: ../core/error.h ../core/log.h ../core/dircontainer.h
template.o: ../core/ugcontainer.h ../core/ticket.h ../core/request.h
template.o: ../core/requesttypes.h ../core/session.h ../core/plugindata.h
template.o: ../core/rebus.h ../core/config.h ../core/confparser.h
template.o: ../core/htmlfilter.h ../core/config.h ../core/system.h
template.o: ../core/dirs.h ../core/db.h ../core/request.h ../core/mounts.h
template.o: ../core/mount.h ../core/users.h ../core/lastcontainer.h
template.o: ../core/groups.h ../core/loadavg.h ../core/notify.h
template.o: ../templatesnotify/templatesnotify.h ../../ezc/src/ezc.h
template.o: ../core/mount.h ../core/locale.h ../templates/misc.h
template.o: ../templates/localefilter.h ../core/locale.h ../core/system.h
template.o: ../core/misc.h
tinymce.o: tinymce.h functionbase.h ../core/item.h ../core/db.h
tinymce.o: ../core/item.h ../core/user.h ../core/group.h ../core/thread.h
tinymce.o: ../core/error.h ../core/log.h ../core/dircontainer.h
@@ -506,8 +524,8 @@ tinymce.o: functions.h functionparser.h adduser.h cat.h chmod.h privchanger.h
tinymce.o: chown.h ckeditor.h cp.h createthread.h createticket.h default.h
tinymce.o: download.h editticket.h emacs.h last.h login.h logout.h ls.h
tinymce.o: mkdir.h mv.h node.h priv.h reload.h rm.h run.h subject.h
tinymce.o: funthread.h ../core/thread.h funticket.h ../core/ticket.h uname.h
tinymce.o: upload.h uptime.h who.h
tinymce.o: funthread.h ../core/thread.h funticket.h ../core/ticket.h
tinymce.o: template.h uname.h upload.h uptime.h who.h
uname.o: uname.h functionbase.h ../core/item.h ../core/db.h ../core/item.h
uname.o: ../core/user.h ../core/group.h ../core/thread.h ../core/error.h
uname.o: ../core/log.h ../core/dircontainer.h ../core/ugcontainer.h
@@ -538,8 +556,8 @@ upload.o: functionparser.h adduser.h cat.h chmod.h privchanger.h chown.h
upload.o: ckeditor.h cp.h createthread.h createticket.h default.h download.h
upload.o: editticket.h emacs.h last.h login.h logout.h ls.h mkdir.h mv.h
upload.o: node.h priv.h reload.h rm.h run.h subject.h funthread.h
upload.o: ../core/thread.h funticket.h ../core/ticket.h tinymce.h uname.h
upload.o: uptime.h who.h
upload.o: ../core/thread.h funticket.h ../core/ticket.h template.h tinymce.h
upload.o: uname.h uptime.h who.h
uptime.o: uptime.h functionbase.h ../core/item.h ../core/db.h ../core/item.h
uptime.o: ../core/user.h ../core/group.h ../core/thread.h ../core/error.h
uptime.o: ../core/log.h ../core/dircontainer.h ../core/ugcontainer.h

View File

@@ -1 +1 @@
o = adduser.o cat.o chmod.o chown.o ckeditor.o cp.o createthread.o createticket.o default.o download.o editticket.o emacs.o functionbase.o functionparser.o functions.o funthread.o funticket.o last.o login.o logout.o ls.o mkdir.o mv.o node.o priv.o privchanger.o readticket.o reload.o rm.o run.o subject.o tinymce.o uname.o upload.o uptime.o who.o
o = adduser.o cat.o chmod.o chown.o ckeditor.o cp.o createthread.o createticket.o default.o download.o editticket.o emacs.o functionbase.o functionparser.o functions.o funthread.o funticket.o last.o login.o logout.o ls.o mkdir.o mv.o node.o priv.o privchanger.o readticket.o reload.o rm.o run.o subject.o template.o tinymce.o uname.o upload.o uptime.o who.o

View File

@@ -14,6 +14,8 @@
FunctionBase::FunctionBase()
{
id = -1;
fun.user_id = -1;
fun.group_id = -1;
fun.privileges = 0755;

View File

@@ -30,6 +30,11 @@ class FunctionBase
{
public:
// function id
// it is set automatically when you add the function to functions list
// is used to load a template (in templates)
long id;
FunctionBase();
// user, group, permissions, url (function name)

View File

@@ -37,16 +37,37 @@ void Functions::SetSystem(System * psystem)
system = psystem;
}
void Functions::SetTemplates(Templates * ptemplates)
{
templates = ptemplates;
}
void Functions::SetNotify(Notify * pnotify)
{
notify = pnotify;
}
size_t Functions::FunctionsSize()
{
return table.size();
}
Functions::Iterator Functions::Begin()
{
return table.begin();
}
Functions::Iterator Functions::End()
{
return table.end();
}
FunctionBase * Functions::Find(const std::string & function_name)
{
Table::iterator i = table.find(function_name);
@@ -129,8 +150,9 @@ void Functions::Add(FunctionBase * fun)
return;
}
table[fun->fun.url] = fun;
fun->id = table.size();
SetObjects(fun);
table[fun->fun.url] = fun;
}
@@ -145,6 +167,8 @@ void Functions::Add(FunctionBase & fun)
void Functions::Create()
{
Add(fun_template);
Add(fun_adduser);
Add(fun_cat);
Add(fun_chmod);
@@ -281,7 +305,7 @@ void Functions::MakeGet()
return;
}
if( !request->function->HasAccess() )
if( !system->HasReadExecAccess(request->function->fun) || !request->function->HasAccess() )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
return;
@@ -310,7 +334,7 @@ void Functions::MakePost()
return;
}
if( !request->function->HasAccess() )
if( !system->HasReadExecAccess(request->function->fun) || !request->function->HasAccess() )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
return;

View File

@@ -39,6 +39,7 @@
#include "subject.h"
#include "funthread.h"
#include "funticket.h"
#include "template.h"
#include "tinymce.h"
#include "uname.h"
#include "upload.h"
@@ -80,16 +81,22 @@ public:
Fun::Subject fun_subject;
Fun::FunThread fun_thread;
Fun::FunTicket fun_ticket;
Fun::Template fun_template;
Fun::Tinymce fun_tinymce;
Fun::Uname fun_uname;
Fun::Upload fun_upload;
Fun::Uptime fun_uptime;
Fun::Who fun_who;
typedef std::map<std::string, FunctionBase*> Table;
typedef Table::iterator Iterator;
void Create();
void Parse();
size_t FunctionsSize();
Iterator Begin();
Iterator End();
void MakeGet();
void MakePost();
@@ -133,7 +140,6 @@ private:
bool ReadItemUrlSubject(Item & item, Item::Type item_type);
typedef std::map<std::string, FunctionBase*> Table;
Table table;
FunctionParser function_parser;

70
functions/template.cpp Executable file
View File

@@ -0,0 +1,70 @@
/*
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2010, Tomasz Sowa
* All rights reserved.
*
*/
#include "template.h"
#include "core/misc.h"
namespace Fun
{
Template::Template()
{
fun.url = "template";
}
bool Template::HasAccess()
{
if( config->template_only_root_use_template_fun )
{
// only root is allowed to change the template
return (request->session->puser && request->session->puser->super_user);
}
if( request->is_item )
return system->HasWriteAccess(request->item);
else
return system->HasWriteAccess(*request->dir_tab.back());
}
void Template::EditTemplate(Item & item)
{
html_file = request->PostVar("template");
TrimWhite(html_file);
request->status = db->EditTemplateItemById(item.id, html_file);
if( request->status == WINIX_ERR_OK )
item.html_template = html_file;
}
void Template::MakePost()
{
if( request->is_item )
{
EditTemplate(request->item);
}
else
{
EditTemplate(*request->dir_tab.back());
}
system->RedirectToLastItem();
}
} // namespace

38
functions/template.h Executable file
View File

@@ -0,0 +1,38 @@
/*
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2010, Tomasz Sowa
* All rights reserved.
*
*/
#ifndef headerfilecmslucontenttemplate
#define headerfilecmslucontenttemplate
#include "functionbase.h"
namespace Fun
{
class Template : public FunctionBase
{
public:
Template();
bool HasAccess();
void MakePost();
private:
std::string html_file;
void EditTemplate(Item & item);
};
} // namespace
#endif