added a new winix function "vim" - an editor based on the WYMeditor

git-svn-id: svn://ttmath.org/publicrep/winix/trunk@673 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
2010-11-04 16:46:19 +00:00
parent 7cf8d5d2d3
commit e6679a3192
23 changed files with 442 additions and 88 deletions

View File

@@ -90,7 +90,8 @@ ckeditor.o: functions.h functionparser.h adduser.h cat.h chmod.h
ckeditor.o: privchanger.h chown.h cp.h createthread.h default.h download.h
ckeditor.o: emacs.h last.h login.h logout.h ls.h mkdir.h mv.h node.h priv.h
ckeditor.o: reload.h rm.h run.h stat.h subject.h funthread.h template.h
ckeditor.o: tinymce.h uname.h upload.h uptime.h who.h ../core/htmlfilter.h
ckeditor.o: tinymce.h uname.h upload.h uptime.h who.h vim.h
ckeditor.o: ../core/htmlfilter.h
cp.o: cp.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
cp.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
cp.o: ../core/error.h ../core/log.h ../db/dbitemquery.h ../db/dbitemcolumns.h
@@ -110,7 +111,7 @@ 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 default.h
cp.o: download.h emacs.h last.h login.h logout.h ls.h mkdir.h mv.h node.h
cp.o: priv.h reload.h rm.h run.h stat.h subject.h funthread.h template.h
cp.o: tinymce.h uname.h upload.h uptime.h who.h ../core/htmlfilter.h
cp.o: tinymce.h uname.h upload.h uptime.h who.h vim.h ../core/htmlfilter.h
createthread.o: createthread.h functionbase.h ../core/item.h ../db/db.h
createthread.o: ../db/dbbase.h ../db/dbconn.h ../db/dbtextstream.h
createthread.o: ../core/textstream.h ../core/error.h ../core/log.h
@@ -133,7 +134,7 @@ createthread.o: functionparser.h adduser.h cat.h chmod.h privchanger.h
createthread.o: chown.h ckeditor.h cp.h default.h download.h emacs.h last.h
createthread.o: login.h logout.h ls.h mkdir.h mv.h node.h priv.h reload.h
createthread.o: rm.h run.h stat.h subject.h funthread.h template.h tinymce.h
createthread.o: uname.h upload.h uptime.h who.h ../core/htmlfilter.h
createthread.o: uname.h upload.h uptime.h who.h vim.h ../core/htmlfilter.h
default.o: default.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
default.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
default.o: ../core/error.h ../core/log.h ../db/dbitemquery.h
@@ -193,7 +194,7 @@ emacs.o: ../core/sessioncontainer.h functions.h functionparser.h adduser.h
emacs.o: cat.h chmod.h privchanger.h chown.h ckeditor.h cp.h createthread.h
emacs.o: default.h download.h last.h login.h logout.h ls.h mkdir.h mv.h
emacs.o: node.h priv.h reload.h rm.h run.h stat.h subject.h funthread.h
emacs.o: template.h tinymce.h uname.h upload.h uptime.h who.h
emacs.o: template.h tinymce.h uname.h upload.h uptime.h who.h vim.h
emacs.o: ../core/htmlfilter.h
functionbase.o: functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
functionbase.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
@@ -217,7 +218,7 @@ functionbase.o: functionparser.h adduser.h cat.h chmod.h privchanger.h
functionbase.o: chown.h ckeditor.h cp.h createthread.h default.h download.h
functionbase.o: emacs.h last.h login.h logout.h ls.h mkdir.h mv.h node.h
functionbase.o: priv.h reload.h rm.h run.h stat.h subject.h funthread.h
functionbase.o: template.h tinymce.h uname.h upload.h uptime.h who.h
functionbase.o: template.h tinymce.h uname.h upload.h uptime.h who.h vim.h
functionbase.o: ../core/htmlfilter.h
functionparser.o: functionparser.h ../core/request.h ../core/requesttypes.h
functionparser.o: ../core/session.h ../core/item.h ../core/error.h
@@ -242,7 +243,7 @@ functionparser.o: privchanger.h chown.h ckeditor.h cp.h createthread.h
functionparser.o: default.h download.h emacs.h last.h login.h logout.h ls.h
functionparser.o: mkdir.h mv.h node.h priv.h reload.h rm.h run.h stat.h
functionparser.o: subject.h funthread.h template.h tinymce.h uname.h upload.h
functionparser.o: uptime.h who.h ../core/htmlfilter.h
functionparser.o: uptime.h who.h vim.h ../core/htmlfilter.h
functions.o: functions.h functionbase.h ../core/item.h ../db/db.h
functions.o: ../db/dbbase.h ../db/dbconn.h ../db/dbtextstream.h
functions.o: ../core/textstream.h ../core/error.h ../core/log.h
@@ -264,7 +265,7 @@ functions.o: functionparser.h adduser.h cat.h chmod.h privchanger.h chown.h
functions.o: ckeditor.h cp.h createthread.h default.h download.h emacs.h
functions.o: last.h login.h logout.h ls.h mkdir.h mv.h node.h priv.h reload.h
functions.o: rm.h run.h stat.h subject.h funthread.h template.h tinymce.h
functions.o: uname.h upload.h uptime.h who.h ../core/htmlfilter.h
functions.o: uname.h upload.h uptime.h who.h vim.h ../core/htmlfilter.h
functions.o: ../core/log.h ../core/misc.h ../core/plugin.h
functions.o: ../core/pluginmsg.h ../core/sessionmanager.h
functions.o: ../core/sessioncontainer.h ../functions/functions.h
@@ -377,7 +378,7 @@ mkdir.o: functions.h functionparser.h adduser.h cat.h chmod.h privchanger.h
mkdir.o: chown.h ckeditor.h cp.h createthread.h default.h download.h emacs.h
mkdir.o: last.h login.h logout.h ls.h mv.h node.h priv.h reload.h rm.h run.h
mkdir.o: stat.h subject.h funthread.h template.h tinymce.h uname.h upload.h
mkdir.o: uptime.h who.h ../core/htmlfilter.h
mkdir.o: uptime.h who.h vim.h ../core/htmlfilter.h
mv.o: mv.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
mv.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
mv.o: ../core/error.h ../core/log.h ../db/dbitemquery.h ../db/dbitemcolumns.h
@@ -397,7 +398,7 @@ 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 default.h
mv.o: download.h emacs.h last.h login.h logout.h ls.h mkdir.h node.h priv.h
mv.o: reload.h rm.h run.h stat.h subject.h funthread.h template.h tinymce.h
mv.o: uname.h upload.h uptime.h who.h ../core/htmlfilter.h
mv.o: uname.h upload.h uptime.h who.h vim.h ../core/htmlfilter.h
node.o: node.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
node.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
node.o: ../core/error.h ../core/log.h ../db/dbitemquery.h
@@ -575,7 +576,7 @@ tinymce.o: functions.h functionparser.h adduser.h cat.h chmod.h privchanger.h
tinymce.o: chown.h ckeditor.h cp.h createthread.h default.h download.h
tinymce.o: emacs.h last.h login.h logout.h ls.h mkdir.h mv.h node.h priv.h
tinymce.o: reload.h rm.h run.h stat.h subject.h funthread.h template.h
tinymce.o: uname.h upload.h uptime.h who.h ../core/htmlfilter.h
tinymce.o: uname.h upload.h uptime.h who.h vim.h ../core/htmlfilter.h
uname.o: uname.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
uname.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
uname.o: ../core/error.h ../core/log.h ../db/dbitemquery.h
@@ -628,6 +629,27 @@ uptime.o: ../core/loadavg.h ../core/notify.h
uptime.o: ../templatesnotify/templatesnotify.h ../../ezc/src/ezc.h
uptime.o: ../core/mount.h ../core/locale.h ../templates/misc.h
uptime.o: ../templates/localefilter.h ../core/locale.h ../core/system.h
vim.o: vim.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
vim.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
vim.o: ../core/error.h ../core/log.h ../db/dbitemquery.h
vim.o: ../db/dbitemcolumns.h ../core/user.h ../core/group.h ../core/thread.h
vim.o: ../core/dircontainer.h ../core/item.h ../core/ugcontainer.h
vim.o: ../core/request.h ../core/requesttypes.h ../core/session.h
vim.o: ../core/error.h ../core/user.h ../core/plugindata.h ../core/rebus.h
vim.o: ../core/config.h ../core/confparser.h ../core/htmlfilter.h
vim.o: ../core/config.h ../core/system.h ../core/dirs.h
vim.o: ../core/dircontainer.h ../core/request.h ../core/mounts.h
vim.o: ../core/mount.h ../core/mountparser.h ../core/users.h
vim.o: ../core/ugcontainer.h ../core/lastcontainer.h ../core/groups.h
vim.o: ../core/group.h ../core/loadavg.h ../core/notify.h
vim.o: ../templatesnotify/templatesnotify.h ../../ezc/src/ezc.h
vim.o: ../core/mount.h ../core/locale.h ../templates/misc.h
vim.o: ../templates/localefilter.h ../core/locale.h ../core/system.h
vim.o: functions.h functionparser.h adduser.h cat.h chmod.h privchanger.h
vim.o: chown.h ckeditor.h cp.h createthread.h default.h download.h emacs.h
vim.o: last.h login.h logout.h ls.h mkdir.h mv.h node.h priv.h reload.h rm.h
vim.o: run.h stat.h subject.h funthread.h template.h tinymce.h uname.h
vim.o: upload.h uptime.h who.h ../core/htmlfilter.h
who.o: who.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
who.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
who.o: ../core/error.h ../core/log.h ../db/dbitemquery.h

View File

@@ -1 +1 @@
o = adduser.o cat.o chmod.o chown.o ckeditor.o cp.o createthread.o default.o download.o emacs.o functionbase.o functionparser.o functions.o funthread.o last.o login.o logout.o ls.o mkdir.o mv.o node.o priv.o privchanger.o reload.o rm.o run.o stat.o subject.o template.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 default.o download.o emacs.o functionbase.o functionparser.o functions.o funthread.o last.o login.o logout.o ls.o mkdir.o mv.o node.o priv.o privchanger.o reload.o rm.o run.o stat.o subject.o template.o tinymce.o uname.o upload.o uptime.o vim.o who.o

View File

@@ -67,6 +67,13 @@ void FunctionBase::SetNotify(Notify * pnotify)
}
void FunctionBase::Init()
{
// this method is called only once at the beginning
// when winix starts
}
bool FunctionBase::HasAccess()
{
// true by default

View File

@@ -40,6 +40,7 @@ public:
// user, group, permissions, url (function name)
Item fun;
virtual void Init();
virtual bool HasAccess();
virtual void Clear();
virtual void MakePost();

View File

@@ -166,7 +166,7 @@ void Functions::Add(FunctionBase & fun)
void Functions::Create()
void Functions::CreateFunctions()
{
Add(fun_adduser);
Add(fun_cat);
@@ -198,11 +198,28 @@ void Functions::Create()
Add(fun_upload);
Add(fun_uptime);
Add(fun_who);
Add(fun_vim);
plugin.Call(WINIX_CREATE_FUNCTIONS);
}
void Functions::InitFunctions()
{
Table::iterator i = table.begin();
for( ; i!=table.end() ; ++i)
i->second->Init();
}
void Functions::Init()
{
CreateFunctions();
InitFunctions();
}
void Functions::Parse()
{
function_parser.Parse(request, db, this, system);

View File

@@ -43,6 +43,7 @@
#include "upload.h"
#include "uptime.h"
#include "who.h"
#include "vim.h"
#include "core/htmlfilter.h"
@@ -84,11 +85,12 @@ public:
Fun::Upload fun_upload;
Fun::Uptime fun_uptime;
Fun::Who fun_who;
Fun::Vim fun_vim;
typedef std::map<std::string, FunctionBase*> Table;
typedef Table::iterator Iterator;
void Create();
void Init();
void Parse();
size_t FunctionsSize();
@@ -142,6 +144,9 @@ private:
std::string temp;
HTMLFilter html_filter;
void CreateFunctions();
void InitFunctions();
void SetObjects(FunctionBase * fun);
void SetDefaultFunctionForFile();
void SetDefaultFunctionForDir();

101
functions/vim.cpp Executable file
View File

@@ -0,0 +1,101 @@
/*
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2010, Tomasz Sowa
* All rights reserved.
*
*/
#include "vim.h"
#include "functions.h"
namespace Fun
{
// WYMeditor doesn't work on different domains by default,
// solution: http://forum.wymeditor.org/forum/viewtopic.php?f=2&t=731&p=2507#p2504
// we add one file to winix: /var/wymiframe.html
// in the future this will be removed
static const char vim_wymiframe[] =
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n"
"<!--\n"
" * WYMeditor : what you see is What You Mean web-based editor\n"
" * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/\n"
" * Dual licensed under the MIT (MIT-license.txt)\n"
" * and GPL (GPL-license.txt) licenses.\n"
" *\n"
" * For further information visit:\n"
" * http://www.wymeditor.org/\n"
" *\n"
" * File Name:\n"
" * wymiframe.html\n"
" * Iframe used by designMode.\n"
" * See the documentation for more info.\n"
" *\n"
" * File Authors:\n"
" * Jean-Francois Hovinne (jf.hovinne a-t wymeditor dotorg)\n"
"-->\n"
"<html>\n"
"<head>\n"
"<title>WYMeditor iframe</title>\n"
"<meta http-equiv=\"X-UA-Compatible\" content=\"IE=EmulateIE7\" />\n"
"<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"[doc_base_url_common]/wymeditor/iframe/default/wymiframe.css\">\n"
"</head>\n"
"<body class=\"wym_iframe\"></body>\n"
"</html>\n";
Vim::Vim()
{
fun.url = "vim";
}
void Vim::Init()
{
Item * var = system->dirs.CreateVarDir();
if( var )
{
Item temp;
if( db->GetItem(var->id, "wymiframe.html", temp) == WINIX_ERR_NO_ITEM )
{
Item v;
v.parent_id = var->id;
v.user_id = -1;
v.group_id = -1;
v.privileges = 0755;
v.subject = "wymiframe.html";
v.url = "wymiframe.html";
v.type = Item::file;
v.content = vim_wymiframe;
v.content_type = Item::ct_raw;
system->AddFile(v, false);
}
}
}
bool Vim::HasAccess()
{
return functions->fun_emacs.HasAccess();
}
void Vim::MakePost()
{
functions->fun_emacs.MakePost();
}
} // namespace

35
functions/vim.h Executable file
View File

@@ -0,0 +1,35 @@
/*
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2010, Tomasz Sowa
* All rights reserved.
*
*/
#ifndef headerfilecmslucontentvim
#define headerfilecmslucontentvim
#include "functionbase.h"
namespace Fun
{
class Vim : public FunctionBase
{
public:
Vim();
void Init();
bool HasAccess();
void MakePost();
};
} // namespace
#endif