Harald Wolff 2018-03-12 09:27:40 +01:00
commit 9d4d3f9980
11 changed files with 134 additions and 3 deletions

View File

@ -12,7 +12,6 @@ def init(hserver):
manager = WebManager( hserver ) manager = WebManager( hserver )
root.setChild( "manage", manager) root.setChild( "manage", manager)
root.setDefault("manage")
root.setChild("_browse", TreeBrowser()) root.setChild("_browse", TreeBrowser())

View File

@ -1,5 +1,6 @@
<html> <html>
<head> <head>
<meta charset="UTF-8"/>
<title>HServer Management</title> <title>HServer Management</title>
<style> <style>
<%include ("style_css",self)%> <%include ("style_css",self)%>

View File

@ -78,3 +78,11 @@ body,p,div {
position: relative; position: relative;
left: 50px; left: 50px;
} }
#editor {
min-width: 600px;
min-height: 400px;
}

View File

@ -7,8 +7,7 @@ import hserver.api
from hserver.request import Request from hserver.request import Request
from hserver.headers import Headers from hserver.headers import Headers
from hserver.templates import Template from hserver.templates import Template,TemplateModule
from hserver.templatemod import TemplateModule
import hserver.run import hserver.run
import hserver.systemplates import hserver.systemplates

View File

@ -0,0 +1,8 @@
import hserver
server = hserver.HServer()
server.run()

View File

@ -45,6 +45,10 @@ class WebObject(WebCallable,Aquisition):
def __delitem__(self,name): def __delitem__(self,name):
delattr( self, name ) delattr( self, name )
def __contains__(self,name):
o = getattr(self,name,None)
return not o is None
def setDefault(self,default): def setDefault(self,default):
self.__default = default self.__default = default
@ -77,6 +81,9 @@ class WebObject(WebCallable,Aquisition):
def __call__(self,request,o = None): def __call__(self,request,o = None):
if not self.__default is None: if not self.__default is None:
request.redirect( request.pathwalker().walked() + "/" + self.__default ) request.redirect( request.pathwalker().walked() + "/" + self.__default )
elif "index_html" in self:
request.redirect( request.pathwalker().walked() + "/index_html" )
request.getContentFile().write("<html><head><title>No Content</title></head><body>Sorry, no content here!</body></html>") request.getContentFile().write("<html><head><title>No Content</title></head><body>Sorry, no content here!</body></html>")

View File

@ -0,0 +1,5 @@
from hserver.templates.templates import Template
from hserver.templates.templatemodule import TemplateModule
from hserver.templates.dpage import DPage

View File

@ -0,0 +1,40 @@
<form action="<%=request.self()%>" method="POST" enctype="multipart/form-data" accept-charset="utf-8">
<input type="submit" value="Speichern"/><br/>
<textarea id="editor" name="content"><%=self.source(request)%></textarea><br/>
<input type="submit" value="Speichern"/>
</form>
<div id="preview">
<iframe id="preview-frame" name="preview" src=""></iframe>
</div>
<script type="text/javascript">
var previewTimeout;
function preview_loaded(){
var preview = document.getElementById("preview-frame");
preview.src = "data:text/html;charset=utf-8," + this.responseText;
}
function preview(){
var editor = document.getElementById("editor");
var fdata = new FormData();
fdata.set( "content", editor.value );
var r = new XMLHttpRequest();
r.open("POST","<%=request.self(-1)%>/preview",true);
r.onload = preview_loaded;
r.send(fdata);
}
function sourcechanged(){
clearTimeout(previewTimeout);
previewTimeout = setTimeout( preview, 2000 );
}
editor = document.getElementById("editor");
editor.addEventListener("input", sourcechanged );
</script>

View File

@ -0,0 +1,64 @@
import hserver.api
from hserver.templates import Template
from hserver.api import WebObject,WebCallable
from objectbroker import Persistence
import os
import os.path
from simplelog import log
class DPage(WebObject,Persistence):
NOPERSIST = ("_DPage__template")
_wo_manage = Template( base = os.path.dirname( __file__ ), template = "dpage.html" )
def __init__(self, source = None):
self.__template = None
if source is None:
self.__source = """<!DOCTYPE html>
<html>
<head>
<title>DPage Template</title>
</head>
<body>DPage Body</body>
</html>"""
else:
self.__source = source
def source(self, request):
if "content" in request.getForm():
source = request.getForm()["content"].value()
self.__source = source
self.__template = None
return self.__source
def __call__(self,request,o = None):
return self.template()(request, o = o )
def provide(self, name):
tmpl = getattr(self, name)
if (isinstance(tmpl, DPage)):
return tmpl.template()
return None
def template(self):
if (self.__template is None):
self.__template = Template( source = self.__source, provider = self )
return self.__template
def _preview(self,request, o = None):
if "content" in request.getForm():
source = request.getForm()["content"].value()
tmpl = Template( source = source, provider = self )
tmpl(request)
preview = WebCallable( method = _preview )
hserver.api.DPage = DPage