appy.gen: minor improvements and IE fixes in the GUI.
|
@ -1 +1 @@
|
||||||
0.6.4
|
0.6.5
|
||||||
|
|
|
@ -95,7 +95,7 @@ class Group:
|
||||||
hasLabel=True, hasDescr=False, hasHelp=False,
|
hasLabel=True, hasDescr=False, hasHelp=False,
|
||||||
hasHeaders=False, group=None, colspan=1, align='center',
|
hasHeaders=False, group=None, colspan=1, align='center',
|
||||||
valign='top', css_class='', master=None, masterValue=None,
|
valign='top', css_class='', master=None, masterValue=None,
|
||||||
cellpadding=1, cellspacing=1):
|
cellpadding=1, cellspacing=1, cellgap='0.6em'):
|
||||||
self.name = name
|
self.name = name
|
||||||
# In its simpler form, field "columns" below can hold a list or tuple
|
# In its simpler form, field "columns" below can hold a list or tuple
|
||||||
# of column widths expressed as strings, that will be given as is in
|
# of column widths expressed as strings, that will be given as is in
|
||||||
|
@ -134,6 +134,10 @@ class Group:
|
||||||
self.valign = valign
|
self.valign = valign
|
||||||
self.cellpadding = cellpadding
|
self.cellpadding = cellpadding
|
||||||
self.cellspacing = cellspacing
|
self.cellspacing = cellspacing
|
||||||
|
# Beyond standard cellpadding and cellspacing, cellgap can define an
|
||||||
|
# additional horizontal gap between cells in a row. So this value does
|
||||||
|
# not add space before the first cell or after the last one.
|
||||||
|
self.cellgap = cellgap
|
||||||
if style == 'tabs':
|
if style == 'tabs':
|
||||||
# Group content will be rendered as tabs. In this case, some
|
# Group content will be rendered as tabs. In this case, some
|
||||||
# param combinations have no sense.
|
# param combinations have no sense.
|
||||||
|
|
|
@ -93,7 +93,7 @@ class User(ModelClass):
|
||||||
'password2', 'roles']
|
'password2', 'roles']
|
||||||
# All methods defined below are fake. Real versions are in the wrapper.
|
# All methods defined below are fake. Real versions are in the wrapper.
|
||||||
title = String(show=False, indexed=True)
|
title = String(show=False, indexed=True)
|
||||||
gm = {'group': 'main', 'multiplicity': (1,1)}
|
gm = {'group': 'main', 'multiplicity': (1,1), 'width': 25}
|
||||||
name = String(**gm)
|
name = String(**gm)
|
||||||
firstName = String(**gm)
|
firstName = String(**gm)
|
||||||
def showLogin(self): pass
|
def showLogin(self): pass
|
||||||
|
|
|
@ -518,12 +518,12 @@
|
||||||
<input type="hidden" name="action" value="TriggerTransition"/>
|
<input type="hidden" name="action" value="TriggerTransition"/>
|
||||||
<input type="hidden" name="workflow_action"/>
|
<input type="hidden" name="workflow_action"/>
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr valign="middle">
|
||||||
<tal:comment replace="nothing">Input field allowing to enter a comment before triggering a transition</tal:comment>
|
<tal:comment replace="nothing">Input field allowing to enter a comment before triggering a transition</tal:comment>
|
||||||
<td tal:define="showCommentsField python:tool.getAttr('showWorkflowCommentFieldFor'+contextObj.meta_type)"
|
<td tal:define="showCommentsField python:tool.getAttr('showWorkflowCommentFieldFor'+contextObj.meta_type)"
|
||||||
align="right" tal:condition="showCommentsField">
|
align="right" tal:condition="showCommentsField">
|
||||||
<span tal:content="python: tool.translate('workflow_comment')" class="discreet"></span>
|
<span tal:content="python: tool.translate('workflow_comment')" class="discreet"></span>
|
||||||
<input type="text" id="comment" name="comment" size="35"/>
|
<input type="text" id="comment" name="comment" size="30"/>
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<tal:comment replace="nothing">Buttons for triggering transitions</tal:comment>
|
<tal:comment replace="nothing">Buttons for triggering transitions</tal:comment>
|
||||||
|
@ -558,7 +558,7 @@
|
||||||
|
|
||||||
<tal:comment replace="nothing">Information that is common to all tabs (object title, state, etc)</tal:comment>
|
<tal:comment replace="nothing">Information that is common to all tabs (object title, state, etc)</tal:comment>
|
||||||
<table width="100%" tal:condition="showCommonInfo" class="appyCommonInfo">
|
<table width="100%" tal:condition="showCommonInfo" class="appyCommonInfo">
|
||||||
<tr valign="bottom">
|
<tr valign="bottom" align="left">
|
||||||
<tal:comment replace="nothing">Title and state</tal:comment>
|
<tal:comment replace="nothing">Title and state</tal:comment>
|
||||||
<td width="80%">
|
<td width="80%">
|
||||||
<b class="appyTitle" tal:content="contextObj/title_or_id"></b>
|
<b class="appyTitle" tal:content="contextObj/title_or_id"></b>
|
||||||
|
@ -567,11 +567,11 @@
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr tal:define="descrLabel python: contextObj.translate('%s_edit_descr' % contextObj.portal_type)"
|
<tr tal:define="descrLabel python: contextObj.translate('%s_edit_descr' % contextObj.portal_type)"
|
||||||
tal:condition="descrLabel/strip" >
|
tal:condition="descrLabel/strip" align="left">
|
||||||
<tal:comment replace="nothing">Content type description</tal:comment>
|
<tal:comment replace="nothing">Content type description</tal:comment>
|
||||||
<td colspan="2" class="discreet" tal:content="descrLabel"/>
|
<td colspan="2" class="discreet" tal:content="descrLabel"/>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr align="left">
|
||||||
<td class="documentByLine" colspan="2">
|
<td class="documentByLine" colspan="2">
|
||||||
<tal:comment replace="nothing">Creator and last modification date</tal:comment>
|
<tal:comment replace="nothing">Creator and last modification date</tal:comment>
|
||||||
<tal:comment replace="nothing">Plus/minus icon for accessing history</tal:comment>
|
<tal:comment replace="nothing">Plus/minus icon for accessing history</tal:comment>
|
||||||
|
@ -598,7 +598,7 @@
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tal:comment replace="nothing">Object history</tal:comment>
|
<tal:comment replace="nothing">Object history</tal:comment>
|
||||||
<tr tal:condition="hasHistory">
|
<tr tal:condition="hasHistory" align="left">
|
||||||
<td colspan="2">
|
<td colspan="2">
|
||||||
<span id="appyHistory"
|
<span id="appyHistory"
|
||||||
tal:attributes="style python:test(historyExpanded, 'display:block', 'display:none')">
|
tal:attributes="style python:test(historyExpanded, 'display:block', 'display:none')">
|
||||||
|
@ -611,7 +611,7 @@
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tal:comment replace="nothing">Workflow-related information and actions</tal:comment>
|
<tal:comment replace="nothing">Workflow-related information and actions</tal:comment>
|
||||||
<tr tal:condition="python: showWorkflow and contextObj.getWorkflowLabel()">
|
<tr tal:condition="python: showWorkflow and contextObj.getWorkflowLabel()" align="left">
|
||||||
<td colspan="2" class="appyWorkflow">
|
<td colspan="2" class="appyWorkflow">
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr>
|
<tr>
|
||||||
|
|
BIN
gen/plone25/skin/required.gif
Normal file
After Width: | Height: | Size: 53 B |
Before Width: | Height: | Size: 423 B |
Before Width: | Height: | Size: 43 B After Width: | Height: | Size: 43 B |
Before Width: | Height: | Size: 400 B After Width: | Height: | Size: 290 B |
BIN
gen/plone25/skin/warning_no.gif
Normal file
After Width: | Height: | Size: 823 B |
Before Width: | Height: | Size: 319 B |
|
@ -28,16 +28,7 @@
|
||||||
<tr tal:repeat="row layout/rows" tal:attributes="valign row/valign">
|
<tr tal:repeat="row layout/rows" tal:attributes="valign row/valign">
|
||||||
<td tal:repeat="cell row/cells"
|
<td tal:repeat="cell row/cells"
|
||||||
tal:attributes="align cell/align; colspan cell/colspan;
|
tal:attributes="align cell/align; colspan cell/colspan;
|
||||||
style python: test(repeat['cell'].end, '', 'padding-right: 0.4em')">
|
style python: test(repeat['cell'].end, '', 'padding-right: 0.4em')"><tal:content repeat="elem cell/content"><tal:field condition="python: elem == '?'"><metal:call use-macro="python: contextMacro.get(widget['type'].lower()).macros.get(layoutType)"/></tal:field><tal:other condition="python: elem != '?'"><metal:call use-macro="python: contextMacro.get(elem[0]).macros.get(elem[1])"/></tal:other><img tal:condition="not: repeat/elem/end" tal:attributes="src string: $portal_url/skyn/space.gif"/></tal:content>
|
||||||
<tal:content repeat="elem cell/content">
|
|
||||||
<tal:field condition="python: elem == '?'">
|
|
||||||
<metal:call use-macro="python: contextMacro.get(widget['type'].lower()).macros.get(layoutType)"/>
|
|
||||||
</tal:field>
|
|
||||||
<tal:other condition="python: elem != '?'">
|
|
||||||
<metal:call use-macro="python: contextMacro.get(elem[0]).macros.get(elem[1])"/>
|
|
||||||
</tal:other>
|
|
||||||
<img tal:condition="not: repeat/elem/end" tal:attributes="src string: $portal_url/skyn/space.gif"/>
|
|
||||||
</tal:content>
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
@ -138,6 +129,7 @@
|
||||||
It is exclusively called by macro "group" above.
|
It is exclusively called by macro "group" above.
|
||||||
</tal:comment>
|
</tal:comment>
|
||||||
<table metal:define-macro="groupContent"
|
<table metal:define-macro="groupContent"
|
||||||
|
tal:define="cellgap widget/cellgap"
|
||||||
tal:attributes="width python: test(widget['wide'], '100%', '');
|
tal:attributes="width python: test(widget['wide'], '100%', '');
|
||||||
align widget/align;
|
align widget/align;
|
||||||
class widget/css_class;
|
class widget/css_class;
|
||||||
|
@ -169,7 +161,7 @@
|
||||||
<tr tal:attributes="valign widget/valign" tal:repeat="widgetRow widget/widgets">
|
<tr tal:attributes="valign widget/valign" tal:repeat="widgetRow widget/widgets">
|
||||||
<td tal:repeat="widget widgetRow"
|
<td tal:repeat="widget widgetRow"
|
||||||
tal:attributes="colspan widget/colspan|python:1;
|
tal:attributes="colspan widget/colspan|python:1;
|
||||||
style python: test(repeat['widget'].number() != len(widgetRow), 'padding-right: 0.6em', '')">
|
style python: test(repeat['widget'].number() != len(widgetRow), 'padding-right: %s'%cellgap, '')">
|
||||||
<tal:showWidget condition="widget">
|
<tal:showWidget condition="widget">
|
||||||
<tal:group condition="python: widget['type'] == 'group'">
|
<tal:group condition="python: widget['type'] == 'group'">
|
||||||
<metal:call use-macro="portal/skyn/widgets/show/macros/group"/>
|
<metal:call use-macro="portal/skyn/widgets/show/macros/group"/>
|
||||||
|
@ -183,31 +175,17 @@
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<tal:comment replace="nothing">Displays a field label.</tal:comment>
|
<tal:comment replace="nothing">Displays a field label.</tal:comment>
|
||||||
<tal:label metal:define-macro="label" condition="widget/hasLabel">
|
<tal:label metal:define-macro="label" condition="widget/hasLabel"><label tal:attributes="for widget/name" tal:condition="python: not ((widget['type'] == 'Action') or ((widget['type'] == 'Ref') and (widget['add'])))" tal:content="structure python: contextObj.translate('label', field=widget['name'])"></label></tal:label>
|
||||||
<label tal:attributes="for widget/name"
|
|
||||||
tal:condition="python: not ((widget['type'] == 'Action') or ((widget['type'] == 'Ref') and (widget['add'])))"
|
|
||||||
tal:content="structure python: contextObj.translate('label', field=widget['name'])"></label>
|
|
||||||
</tal:label>
|
|
||||||
|
|
||||||
<tal:comment replace="nothing">Displays a field description.</tal:comment>
|
<tal:comment replace="nothing">Displays a field description.</tal:comment>
|
||||||
<tal:description metal:define-macro="description" condition="widget/hasDescr">
|
<tal:description metal:define-macro="description" condition="widget/hasDescr"><span class="discreet" tal:content="structure python: contextObj.translate('descr', field=widget['name'])"></span>
|
||||||
<span class="discreet" tal:content="structure python: contextObj.translate('descr', field=widget['name'])"></span>
|
|
||||||
</tal:description>
|
</tal:description>
|
||||||
|
|
||||||
<tal:comment replace="nothing">Displays a field help.</tal:comment>
|
<tal:comment replace="nothing">Displays a field help.</tal:comment>
|
||||||
<tal:help metal:define-macro="help">
|
<tal:help metal:define-macro="help"><acronym tal:attributes="title python: contextObj.translate('help', field=widget['name'])"><img tal:attributes="src string: $portal_url/skyn/help.png"/></acronym></tal:help>
|
||||||
<acronym tal:attributes="title python: contextObj.translate('help', field=widget['name'])">
|
|
||||||
<img tal:attributes="src string: $portal_url/skyn/help.png"/>
|
|
||||||
</acronym>
|
|
||||||
</tal:help>
|
|
||||||
|
|
||||||
<tal:comment replace="nothing">Displays validation-error-related info about a field.</tal:comment>
|
<tal:comment replace="nothing">Displays validation-error-related info about a field.</tal:comment>
|
||||||
<tal:validation metal:define-macro="validation">
|
<tal:validation metal:define-macro="validation"><acronym tal:condition="inError" tal:attributes="title python: errors[name]"><img tal:attributes="src string: $portal_url/skyn/warning.png"/></acronym><img tal:condition="not: inError" tal:attributes="src string: $portal_url/skyn/warning_no.gif"/></tal:validation>
|
||||||
<acronym tal:condition="inError" tal:attributes="title python: errors[name]">
|
|
||||||
<img tal:attributes="src string: $portal_url/skyn/warning.png"/>
|
|
||||||
</acronym>
|
|
||||||
<img tal:condition="not: inError" tal:attributes="src string: $portal_url/skyn/warning_no.png"/>
|
|
||||||
</tal:validation>
|
|
||||||
|
|
||||||
<tal:comment replace="nothing">Displays the fact that a field is required.</tal:comment>
|
<tal:comment replace="nothing">Displays the fact that a field is required.</tal:comment>
|
||||||
<tal:required metal:define-macro="required"><img tal:attributes="src string: $portal_url/skyn/required.png"/></tal:required>
|
<tal:required metal:define-macro="required"><img tal:attributes="src string: $portal_url/skyn/required.gif"/></tal:required>
|
||||||
|
|
|
@ -6,7 +6,7 @@ textarea { width: 99%; }
|
||||||
|
|
||||||
#portal-breadcrumbs { display: none; }
|
#portal-breadcrumbs { display: none; }
|
||||||
#importedElem { color: grey; font-style: italic; }
|
#importedElem { color: grey; font-style: italic; }
|
||||||
label { font-weight: bold; font-style: italic; line-height: 1.4em;}
|
label { font-weight: bold; font-style: italic; line-height: 1.4em; font-size: 92%;}
|
||||||
.discreet { font-size: 94%; }
|
.discreet { font-size: 94%; }
|
||||||
.appyList { line-height: 1.1em; margin: 0 0 0.5em 1.2em; padding: 0; }
|
.appyList { line-height: 1.1em; margin: 0 0 0.5em 1.2em; padding: 0; }
|
||||||
.appyBullet { margin: 0; }
|
.appyBullet { margin: 0; }
|
||||||
|
|