appy.gen: various bugfixes and minor improvements.
This commit is contained in:
parent
4b44f8d565
commit
f13b7ea307
|
@ -1179,7 +1179,7 @@ class String(Type):
|
|||
'''Returns the default layouts for this type. Default layouts can vary
|
||||
acccording to format or multiplicity.'''
|
||||
if self.format in (String.TEXT, String.XHTML):
|
||||
return {'view': 'l-d-f', 'edit': 'lrv-d-f'}
|
||||
return {'view': 'l-f', 'edit': 'lrv-d-f'}
|
||||
elif self.isMultiValued():
|
||||
return {'view': 'l-f', 'edit': 'lrv-f'}
|
||||
|
||||
|
@ -2237,7 +2237,7 @@ class Role:
|
|||
# Authenticated roles, automatically attributed to a user.
|
||||
|
||||
class State:
|
||||
def __init__(self, permissions, initial=False, phase='main', show=True):
|
||||
def __init__(self, permissions, initial=False, phase=None, show=True):
|
||||
self.usedRoles = {}
|
||||
# The following dict ~{s_permissionName:[s_roleName|Role_role]}~
|
||||
# gives, for every permission managed by a workflow, the list of roles
|
||||
|
@ -2648,7 +2648,7 @@ class Config:
|
|||
# People having one of these roles will be able to create instances
|
||||
# of classes defined in your application.
|
||||
self.defaultCreators = ['Manager', 'Owner']
|
||||
# If you want to replace the Plone front page with a page coming from
|
||||
# If you want to replace the default front page with a page coming from
|
||||
# your application, use the following parameter. Setting
|
||||
# frontPage = True will replace the Plone front page with a page
|
||||
# whose content will come fron i18n label "front_page_text".
|
||||
|
|
|
@ -64,14 +64,15 @@ class BaseMixin:
|
|||
fieldName = splitted[2].split(':')[0]
|
||||
initiator.appy().link(fieldName, obj)
|
||||
|
||||
# Manage "add" permissions and reindex the object
|
||||
obj._appy_managePermissions()
|
||||
|
||||
# Call the custom "onEdit" if available
|
||||
msg = None # The message to display to the user. It can be set by onEdit
|
||||
if obj.wrapperClass:
|
||||
appyObject = obj.appy()
|
||||
if hasattr(appyObject, 'onEdit'):
|
||||
msg = appyObject.onEdit(created)
|
||||
# Manage "add" permissions and reindex the object
|
||||
obj._appy_managePermissions()
|
||||
obj.reindexObject()
|
||||
return obj, msg
|
||||
|
||||
|
|
|
@ -11,6 +11,8 @@ acronym {cursor: help;}
|
|||
input[type=image] { border: 0; background: none; }
|
||||
input[type=checkbox] { border: 0; background: none; cursor: pointer;}
|
||||
input[type=radio] { border: 0; background: none; cursor: pointer;}
|
||||
input[type=file] { border: 0px solid #cccccc; background-color: #f8f8f8;
|
||||
cursor: pointer;}
|
||||
input[type=button] { border: 1px solid #cccccc; background-color: #f8f8f8;
|
||||
cursor: pointer;}
|
||||
input[type=submit] { border: 1px solid #cccccc; background-color: #f8f8f8;
|
||||
|
@ -44,10 +46,14 @@ img {border: 0;}
|
|||
.discreet { font-size: 90%; }
|
||||
.portlet { width: 150px; padding: 12px 9px 9px 9px;
|
||||
border-right: 1px solid #9b0000;}
|
||||
.portletTitle { font-weight: bold; font-size: 110%; margin-bottom: 4px;}
|
||||
.portletCurrent { font-weight: bold; }
|
||||
.portletSep { border-top: 1px solid grey; margin-top: 9px; padding-top: 9px;}
|
||||
.portletPage { font-style: italic; }
|
||||
.phase { border-style: dashed; border-width: thin; padding: 0 0.6em 0 1em; }
|
||||
.portletGroup { font-variant: small-caps; font-weight: bold; font-style: normal;
|
||||
margin: 0.4em 0 0.2em 0; }
|
||||
.phase { border-style: dashed; border-width: thin; padding: 0 0.6em 5px 1em;}
|
||||
.phaseSelected { background-color: #EDEDED; }
|
||||
.content { padding: 14px 3px 9px 15px;}
|
||||
.grey { display: none; position: absolute; left: 0px; top: 0px;
|
||||
background:grey; opacity:0.5; -moz-opacity:0.5; -khtml-opacity:0.5;
|
||||
|
@ -66,7 +72,7 @@ img {border: 0;}
|
|||
.section1 { font-size: 120%; margin: 0.45em 0em 0.1em 0;
|
||||
padding: 0.3em 0em 0.2em 0.1em; background-color: #eef3f5;
|
||||
border-top: 1px solid #8CACBB;border-bottom: 1px solid #8CACBB; }
|
||||
.section2 { font-size: 110%; font-style: italic; margin: 0.45em 0em 0.1em 0;
|
||||
.section2 { font-size: 110%; font-style: italic; margin: 0.45em 0em 0.2em 0;
|
||||
border-bottom: 2px solid grey; }
|
||||
.section3 { font-size: 100%; font-style: italic; margin: 0.45em 0em 0.1em 0;
|
||||
background-color: #efeae8; text-align: center; color: grey; }
|
||||
|
@ -80,8 +86,10 @@ img {border: 0;}
|
|||
background-color: #f8f8f8;}
|
||||
.underTitle { background-color: #ededed;}
|
||||
.objectNavigate { margin-top: 3px;}
|
||||
.underline {border-bottom: 1px dotted grey;}
|
||||
.state {font-weight: bold; border-bottom: 1px dashed grey;}
|
||||
.underline { border-bottom: 1px dotted grey;}
|
||||
.state { font-weight: bold; border-bottom: 1px dashed grey;}
|
||||
.historyLabel { font-variant: small-caps; font-weight: bold;}
|
||||
.history td {border-top: 1px solid grey;}
|
||||
.history th {font-style: italic; text-align; left;}
|
||||
.history td { border-top: 1px solid grey;}
|
||||
.history th { font-style: italic; text-align; left;}
|
||||
.topSpace { margin-top: 15px;}
|
||||
.discreet { color: grey}
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 201 B After Width: | Height: | Size: 211 B |
|
@ -10,7 +10,7 @@
|
|||
rootClasses tool/getRootClasses">
|
||||
|
||||
<tal:publishedObject condition="python: contextObj and contextObj.mayNavigate()">
|
||||
<b tal:content="contextObj/Title"></b>
|
||||
<div class="portletTitle" tal:content="contextObj/Title"></div>
|
||||
<span><metal:phases use-macro="here/skyn/portlet/macros/phases"/></span>
|
||||
</tal:publishedObject>
|
||||
|
||||
|
@ -95,16 +95,21 @@
|
|||
</tal:comment>
|
||||
<metal:phases define-macro="phases">
|
||||
<table tal:define="phases contextObj/getAppyPhases|nothing;
|
||||
singlePhase python: len(phases) == 1;
|
||||
page python: req.get('page', 'main')"
|
||||
tal:condition="python: phases and not ((len(phases)==1) and len(phases[0]['pages'])==1)"
|
||||
tal:condition="python: phases and not (singlePhase and len(phases[0]['pages'])==1)"
|
||||
width="100%">
|
||||
<tal:phase repeat="phase phases">
|
||||
<tal:comment replace="nothing">The box containing phase-related information</tal:comment>
|
||||
<tr>
|
||||
<td tal:define="label python:'%s_phase_%s' % (contextObj.meta_type, phase['name']);
|
||||
displayLink python: (phase['phaseStatus'] != 'Future') and ('/portal_factory' not in contextObj.absolute_url()) and (len(phase['pages']) == 1)"
|
||||
tal:attributes="class python: (len(phases) > 1) and 'phase' or ''">
|
||||
<div class="portletGroup" tal:condition="python: len(phases) > 1">
|
||||
singlePage python: len(phase['pages']) == 1;
|
||||
status phase/phaseStatus;
|
||||
phaseCss python: (status == 'Current') and ' phaseSelected' or '';
|
||||
underCreation python: '/portal_factory' in context.absolute_url();
|
||||
displayLink python: (status != 'Future') and not underCreation and singlePage"
|
||||
tal:attributes="class python: not singlePhase and 'phase%s' % phaseCss or ''">
|
||||
<div class="portletGroup" tal:condition="not: singlePhase">
|
||||
|
||||
<tal:comment replace="nothing">A single page in the phase</tal:comment>
|
||||
<table tal:condition="displayLink" width="100%">
|
||||
|
@ -124,8 +129,7 @@
|
|||
<span tal:condition="not: displayLink" tal:replace="structure python: _(label)"/>
|
||||
</div>
|
||||
<div class="portletMenu">
|
||||
<table cellpadding="0" cellspacing="0" width="100%"
|
||||
tal:condition="python: len(phase['pages']) > 1">
|
||||
<table width="100%" cellpadding="0" tal:condition="python: len(phase['pages']) > 1">
|
||||
<tr tal:repeat="aPage phase/pages" valign="top">
|
||||
<td tal:attributes="class python: test(aPage == page, 'portletCurrent portletPage', 'portletPage')">
|
||||
<a tal:attributes="href python: contextObj.getUrl(page=aPage)"
|
||||
|
|
Loading…
Reference in a new issue