[doc] In the process of refreshing documentation and website.
|
@ -373,20 +373,20 @@ class Publisher:
|
|||
res = produceNiceMessage(res[3:])
|
||||
return res
|
||||
|
||||
mainToc = re.compile('<span class="doc"(.*?)</span>', re.S)
|
||||
mainToc = re.compile('<span class="doc">(.*?)</span>', re.S)
|
||||
tocLink = re.compile('<a href="(.*?)">(.*?)</a>')
|
||||
subSection = re.compile('<h1>(.*?)</h1>')
|
||||
subSectionContent = re.compile('<a name="(.*?)">.*?</a>(.*)')
|
||||
def createDocToc(self):
|
||||
res = '<table width="100%"><tr>'
|
||||
res = '<table width="100%"><tr valign="top">'
|
||||
docToc = '%s/docToc.html' % self.genFolder
|
||||
# First, parse template.html to get the main TOC structure
|
||||
template = file('%s/doc/template.html' % appyPath)
|
||||
mainData = self.mainToc.search(template.read()).group(0)
|
||||
links = self.tocLink.findall(mainData)[1:]
|
||||
links = self.tocLink.findall(mainData)
|
||||
sectionNb = 0
|
||||
for url, title in links:
|
||||
if title in ('gen', 'pod'):
|
||||
if title in ('appy.gen', 'appy.pod'):
|
||||
tag = 'h1'
|
||||
indent = 0
|
||||
styleBegin = ''
|
||||
|
@ -433,6 +433,14 @@ class Publisher:
|
|||
if os.path.exists(self.genFolder):
|
||||
FolderDeleter.delete(self.genFolder)
|
||||
shutil.copytree('%s/doc' % appyPath, self.genFolder)
|
||||
# Copy appy.css from gen, with minor updates.
|
||||
f = file('%s/gen/ui/appy.css' % appyPath)
|
||||
css = f.read().replace('ui/li.gif', 'img/li.gif')
|
||||
f.close()
|
||||
f = file('%s/appy.css' % self.genFolder, 'w')
|
||||
f.write(css)
|
||||
f.close()
|
||||
shutil.copy('%s/gen/ui/li.gif' % appyPath, '%s/img' % self.genFolder)
|
||||
# Create a temp clean copy of appy sources (without .svn folders, etc)
|
||||
genSrcFolder = '%s/appy' % self.genFolder
|
||||
os.mkdir(genSrcFolder)
|
||||
|
|
149
doc/appy.css
|
@ -1,149 +0,0 @@
|
|||
/* HTML element types */
|
||||
|
||||
a:link { COLOR: #888888; text-decoration: none; }
|
||||
a:visited{ COLOR: #888888; text-decoration: none; }
|
||||
a:active { COLOR: #888888; text-decoration: none; }
|
||||
a:hover { COLOR: #888888; text-decoration: underline; }
|
||||
|
||||
input {
|
||||
font-family: Verdana;
|
||||
font-size: 10pt;
|
||||
font-weight:normal;
|
||||
}
|
||||
|
||||
textarea {
|
||||
font-family: Verdana;
|
||||
font-size: 10pt;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
select {
|
||||
font-family: Verdana, helvetica, sans-serif;
|
||||
font-size: 10pt;
|
||||
font-weight:normal;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: separate;
|
||||
border-spacing: 0 0;
|
||||
}
|
||||
|
||||
tr {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
td {
|
||||
font-family: Verdana, helvetica, sans-serif;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
th {
|
||||
font-family: Verdana, helvetica, sans-serif;
|
||||
font-size: 10pt;
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
padding: 0 1em 0.1em 0;
|
||||
border-bottom: 1px solid black;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
p {
|
||||
font-family: Verdana, helvetica, sans-serif;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
img {
|
||||
border-width: 0
|
||||
}
|
||||
|
||||
div {
|
||||
font-family: Verdana, helvetica, sans-serif;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
body {
|
||||
margin:10;
|
||||
padding-left:10px;
|
||||
padding-right:10px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-family: Verdana, helvetica, sans-serif;
|
||||
font-size: 10pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-family: Verdana, helvetica, sans-serif;
|
||||
font-size: 11pt;
|
||||
font-style: italic;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
ul {
|
||||
font-family: Verdana, helvetica, sans-serif;
|
||||
font-size: 10pt;
|
||||
list-style-type:circle;
|
||||
}
|
||||
|
||||
li {
|
||||
font-family: Verdana, helvetica, sans-serif;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
/* Classes */
|
||||
|
||||
.borders {
|
||||
border-bottom-style: inset;
|
||||
border-bottom-width: 1px;
|
||||
padding-top: 8px;
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
|
||||
.code {
|
||||
font-family: Courier new, Nimbus Mono L, sans-serif;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
.appyTable {
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
.siteTitle {
|
||||
font-size: 12pt;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.headerStrip {
|
||||
text-align: right;
|
||||
font-size: 11pt;
|
||||
font-style: italic;
|
||||
background-color: #f1f1ed;
|
||||
padding-right: 1em;
|
||||
}
|
||||
|
||||
.bottomStrip {
|
||||
font-size: 10pt;
|
||||
font-weight:bold;
|
||||
background-color: #F8F8F8;
|
||||
padding-bottom: 0.1em;
|
||||
padding-top: 0.1em;
|
||||
}
|
||||
|
||||
.doc {
|
||||
padding-left: 14px;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.tabs {
|
||||
padding-left: 1em;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
.footer {
|
||||
text-align: right;
|
||||
font-size: 9pt;
|
||||
font-style: italic;
|
||||
}
|
BIN
doc/img/appy.jpg
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 138 B |
Before Width: | Height: | Size: 150 B |
Before Width: | Height: | Size: 1.1 KiB |
BIN
doc/img/home.png
Before Width: | Height: | Size: 751 B |
BIN
doc/img/todo.gif
Before Width: | Height: | Size: 389 B |
|
@ -8,7 +8,7 @@
|
|||
|
||||
<p>In order to render a pod template, the first thing to do is to create a renderer (create a <span class="code">appy.pod.Renderer</span> instance). The constructor for this class looks like this:</p>
|
||||
|
||||
<p class="code">
|
||||
<p class="code codePara">
|
||||
<b>def</b> __init__(self, template, context, result, pythonWithUnoPath=None, ooPort=2002, stylesMapping={}, forceOoCall=False):<br>
|
||||
'''This Python Open Document Renderer (PodRenderer) loads a document<br/>
|
||||
template (p_template) which is a OpenDocument file with some elements<br/>
|
||||
|
|
|
@ -1,55 +1,75 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Appy framework</title>
|
||||
|
||||
<title>Appy</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<script language="JAVASCRIPT">
|
||||
function sendMail(domain, user) {
|
||||
var loc = 'mailto:' + user + '@' + domain;
|
||||
parent.location = loc;
|
||||
}
|
||||
</script>
|
||||
|
||||
<link rel="stylesheet" href="appy.css" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<table align="center" width="100%">
|
||||
<table class="main" align="center" width="100%" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td>
|
||||
<table width="100%" align="left">
|
||||
<tr>
|
||||
<td class="borders">
|
||||
<img src="img/appy.jpg" align="left"/>
|
||||
<img src="img/advisory.png" align="right"/>
|
||||
<span class="siteTitle">The <b>Appy</b> framework</span>
|
||||
<span class="tabs" align="left">
|
||||
<a href="/"><img src="img/home.png"/> Home</a>
|
||||
<a href="http://launchpad.net/appy"><img src="img/download.gif"/> Download</a>
|
||||
<a href="https://answers.launchpad.net/appy"><img src="img/forum.png"/>Forum</a>
|
||||
<a href="https://blueprints.launchpad.net/appy"><img src="img/todo.gif"/> To do</a>
|
||||
<a href="javascript:sendMail('appyframework.org', 'info')"><img src="img/contact.gif"/> Contact</a>
|
||||
</span><br/>
|
||||
<span class="doc"><a href="docToc.html">Documentation</a> || <a href="gen.html">gen</a> - creating <a href="genCreatingBasicClasses.html">basic</a> and <a href="genCreatingAdvancedClasses.html">advanced</a> classes - <a href="genSecurityAndWorkflows.html">security and workflows</a> || <a href="pod.html">pod</a> - creating <a href="podWritingTemplates.html">basic</a> and <a href="podWritingAdvancedTemplates.html">advanced</a> templates - <a href="podRenderingTemplates.html">rendering</a> templates</span>
|
||||
<table width="100%" cellpadding="0" cellspacing="0">
|
||||
<tr valign="top">
|
||||
<td width="120px"><img src="img/appy.jpg"/>
|
||||
</td>
|
||||
<td style="padding-top: 5px" align="right">
|
||||
<i>
|
||||
<a href="/">Home</a> –
|
||||
<a href="docToc.html">Doc</a> –
|
||||
<a href="http://launchpad.net/appy">Download</a> –
|
||||
<a href="https://answers.launchpad.net/appy">Forum</a> –
|
||||
<a href="https://blueprints.launchpad.net/appy">To do</a> –
|
||||
<a href="javascript:sendMail('appyframework.org', 'info')">Contact</a>
|
||||
</i>
|
||||
</td>
|
||||
<td align="right" width="150px"><img src="img/advisory.png"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="borders headerStrip" valign="top">{{ title }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="borders" valign="top">{{ content }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="borders bottomStrip"><a href="http://launchpad.net/appy"><img src="img/download.gif"/> Download</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table cellpadding="0" cellspacing="0" align="right">
|
||||
<tr>
|
||||
<td valign="bottom" class="footer"> All software on this site is distributed under the <br/><a href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License (GPL)</a>.</td>
|
||||
<td align="right"><img src="img/gnu.png"/><img src="img/python.gif"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- The stripe -->
|
||||
<tr>
|
||||
<td>
|
||||
<table class="userStrip" width="100%" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<span class="doc"><!-- class="doc" is required when parsed by publish.py -->
|
||||
<a href="gen.html">appy.gen</a> – create <a href="genCreatingBasicClasses.html">basic</a> &
|
||||
<a href="genCreatingAdvancedClasses.html">advanced</a> classes –
|
||||
<a href="genSecurityAndWorkflows.html">security & workflows</a> ||
|
||||
<a href="pod.html">appy.pod</a> – create <a href="podWritingTemplates.html">basic</a> &
|
||||
<a href="podWritingAdvancedTemplates.html">advanced</a> templates –
|
||||
<a href="podRenderingTemplates.html">render</a> templates.
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Content -->
|
||||
<tr>
|
||||
<td align="center" style="padding: 10px; font-size:150%; border-bottom: 1px black dashed">{{ title }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 15px">{{ content }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="footer" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr valign="middle">
|
||||
<td class="footer"> All software on this site is distributed under the <br/>
|
||||
<a href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License (GPL)</a>.
|
||||
</td>
|
||||
<td align="right"><img src="img/gnu.png"/><img src="img/python.gif"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -1724,7 +1724,9 @@ class File(Type):
|
|||
else:
|
||||
# I store value "None", excepted if I find in the request the desire
|
||||
# to keep the file unchanged.
|
||||
action = obj.REQUEST.get('%s_delete' % self.name, None)
|
||||
action = None
|
||||
rq = getattr(obj, 'REQUEST', None)
|
||||
if rq: action = rq.get('%s_delete' % self.name, None)
|
||||
if action == 'nochange': pass
|
||||
else: setattr(obj, self.name, None)
|
||||
|
||||
|
|
|
@ -55,6 +55,8 @@ img { border: 0; vertical-align: middle}
|
|||
.userStrip { background-color: #6282B3; height: 35px;
|
||||
border-top: 3px solid #034984; border-bottom: 2px solid #034984; }
|
||||
.userStripText { font-size: 110%; padding: 0 0.3em 0 0.3em; color: white }
|
||||
.userStrip a { color: #e7e7e7 }
|
||||
.userStrip a:visited { color: #e7e7e7 }
|
||||
.login { margin-top: 2px; margin-bottom: 2px; color: black;}
|
||||
.buttons { margin-left: 4px;}
|
||||
.fakeButton { border: 1px solid #D7DEE4; background-color: #fde8e0;
|
||||
|
@ -128,3 +130,8 @@ img { border: 0; vertical-align: middle}
|
|||
.footer { font-size: 95% }
|
||||
.footer td { background-color: #CBCBC9; border-top: 1px solid grey;
|
||||
padding: 0.4em 1em 0.5em }
|
||||
.code { font-family: "Lucida Console","Courier New";}
|
||||
.codePara { background-color: #EEFFCC; border-color: grey;
|
||||
border-style: solid none; border-width: 1px medium;
|
||||
color: #333333; line-height: 120%;
|
||||
padding: 10px; margin: 10px 0 10px 0}
|
||||
|
|