Merge branch 'master' of https://schwann.lnvpn.de/haraldwolff/python-hserver
commit
9d4d3f9980
|
@ -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())
|
||||||
|
|
||||||
|
|
|
@ -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)%>
|
||||||
|
|
|
@ -78,3 +78,11 @@ body,p,div {
|
||||||
position: relative;
|
position: relative;
|
||||||
left: 50px;
|
left: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#editor {
|
||||||
|
min-width: 600px;
|
||||||
|
min-height: 400px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
import hserver
|
||||||
|
|
||||||
|
|
||||||
|
server = hserver.HServer()
|
||||||
|
|
||||||
|
server.run()
|
||||||
|
|
||||||
|
|
|
@ -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>")
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
from hserver.templates.templates import Template
|
||||||
|
from hserver.templates.templatemodule import TemplateModule
|
||||||
|
from hserver.templates.dpage import DPage
|
||||||
|
|
||||||
|
|
|
@ -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>
|
|
@ -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
|
Loading…
Reference in New Issue