[gen] Some actions were triggered via icons. That was not explicit enough for basic users. So now, every action is triggerd by a button that displays an icon+a text.

This commit is contained in:
Gaetan Delannay 2013-06-25 17:34:17 +02:00
parent 1d931cfb96
commit b5136c59c1
21 changed files with 89 additions and 75 deletions

View file

@ -64,10 +64,9 @@ img { border: 0; vertical-align: middle }
background-color: #dbdde1; font-weight: bold }
.navigate td { padding: 4px 9px }
.login { margin: 3px; color: black }
.button { border-width: 0 !important; color: #666666; height: 23px; width: 150px;
cursor:pointer; font-size: 90%; padding: 1px 0 0 10px }
.buttons { margin-left: 4px }
.fakeButton { border: 1px solid #D7DEE4; background-color: #fde8e0;
padding: 0px 8px 2px;
font: italic 92% "Lucida Grande","Lucida Sans Unicode",Helvetica,Arial,Verdana,sans-serif }
.message { position: absolute; top: -40px; left: 150px; font-size: 90%;
width: 600px; border: 1px #F0C36D solid; padding: 6px;
background-color: #F9EDBE; text-align: center;
@ -83,13 +82,14 @@ img { border: 0; vertical-align: middle }
.portlet { width: 150px; border-right: 1px solid #5F7983;
background-color: #ededed }
.portletContent { margin: 4px 9px }
.portletTitle { font-weight: bold; font-size: 110%; margin-bottom: 4px }
.portletCurrent { font-weight: bold }
.portletTitle { font-size: 110%; margin-bottom: 4px }
.portletCurrent { font-weight: bold; color: grey }
.portletSep { border-top: 1px solid #5F7983; margin-top: 2px }
.portletPage { font-style: italic }
.portletGroup { font-variant: small-caps; font-weight: bold; font-size: 105%;
.portletGroup { font-variant: small-caps; font-weight: bold;
margin: 0.1em 0 0.3em ; border-bottom: 1px dashed grey }
.portletSearch { font-size: 90%; font-style: italic }
.inputSearch { height: 15px; width: 132px; margin: 3px 3px 2px 3px !important }
.content { padding: 14px 14px 9px 15px; background-color: #f1f1f1 }
.grey { display: none; position: absolute; left: 0px; top: 0px; z-index:2;
background:grey; opacity:0.5; -moz-opacity:0.5; -khtml-opacity:0.5;

BIN
gen/ui/buttonAction.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 B

BIN
gen/ui/buttonAdd.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 B

BIN
gen/ui/buttonCancel.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 790 B

BIN
gen/ui/buttonEdit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B

BIN
gen/ui/buttonFake.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 688 B

BIN
gen/ui/buttonImport.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 679 B

BIN
gen/ui/buttonNext.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 B

BIN
gen/ui/buttonPrevious.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

BIN
gen/ui/buttonSave.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 568 B

BIN
gen/ui/buttonSearch.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 B

BIN
gen/ui/buttonTransition.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 705 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 951 B

View file

@ -168,14 +168,17 @@
<tal:comment replace="nothing">Buttons for triggering transitions</tal:comment>
<td tal:attributes="align dright" tal:repeat="transition transitions">
<tal:comment replace="nothing">Real button</tal:comment>
<input type="button" tal:condition="transition/may_trigger"
tal:attributes="value transition/title;
onClick python: 'triggerTransition(\'%s\',\'%s\',\'%s\')' % (formId,transition['name'],transition['confirm'])"/>
<input type="button" class="button" tal:condition="transition/may_trigger"
tal:attributes="style string: background-image: url($appUrl/ui/buttonTransition.png);
title transition/title;
value python: tool.truncateValue(transition['title']);
onClick python: 'triggerTransition(\'%s\',\'%s\',\'%s\')' % (formId,transition['name'],transition['confirm'])">
<tal:comment replace="nothing">Fake button, explaining why the transition can't be triggered</tal:comment>
<div class="fakeButton" tal:condition="not: transition/may_trigger">
<acronym tal:content="transition/title"
tal:attributes="title transition/reason"></acronym>
</div>
<input type="button" class="button" tal:condition="not: transition/may_trigger"
tal:attributes="style string: background-image: url($appUrl/ui/buttonFake.png);; cursor: help;
value python: tool.truncateValue(transition['title']);
title python: '%s: %s' % (transition['title'], transition['reason'])"/>
</td>
</tr>
</table>
@ -262,30 +265,34 @@
isEdit python: layoutType == 'edit';
pageInfo python: phaseInfo['pagesInfo'][page]">
<tr>
<tal:comment replace="nothing">Previous</tal:comment>
<tal:comment replace="nothing">Previous</tal:comment>
<td tal:condition="python: previousPage and pageInfo['showPrevious']">
<tal:button condition="isEdit">
<img style="cursor:pointer" onClick="submitAppyForm('previous')"
tal:attributes="src string:$appUrl/ui/previous.png; title python: _('page_previous')"/>
<input type="hidden" name="previousPage" tal:attributes="value previousPage"/>
<input type="button" class="button" onClick="submitAppyForm('previous')"
tal:attributes="style string: background-image: url($appUrl/ui/buttonPrevious.png);
value python: _('page_previous')">
<input type="hidden" name="previousPage" tal:attributes="value previousPage"/>
</tal:button>
<tal:link condition="not: isEdit">
<a tal:attributes="href python: contextObj.getUrl(page=previousPage)">
<img tal:attributes="src string:$appUrl/ui/previous.png; title python: _('page_previous')"/>
</a>
<input type="button" class="button"
tal:attributes="style string: background-image: url($appUrl/ui/buttonPrevious.png);
value python: _('page_previous');
onclick python: 'window.location=\'%s\'' % contextObj.getUrl(page=previousPage)">
</tal:link>
</td>
<tal:comment replace="nothing">Save</tal:comment>
<td tal:condition="python: isEdit and pageInfo['showSave']">
<img style="cursor:pointer" onClick="submitAppyForm('save')"
tal:attributes="src string:$appUrl/ui/save.png; title python: _('object_save');"/>
<input type="button" class="button" onClick="submitAppyForm('save')"
tal:attributes="style string: background-image: url($appUrl/ui/buttonSave.png);
value python: _('object_save')">
</td>
<tal:comment replace="nothing">Cancel</tal:comment>
<td tal:condition="python: isEdit and pageInfo['showCancel']">
<img style="cursor:pointer" onClick="submitAppyForm('cancel')"
tal:attributes="src string:$appUrl/ui/cancel.png; title python: _('object_cancel')"/>
<input type="button" class="button" onClick="submitAppyForm('cancel')"
tal:attributes="style string: background-image: url($appUrl/ui/buttonCancel.png);
value python: _('object_cancel')">
</td>
<tal:edit condition="not: isEdit">
@ -293,11 +300,11 @@
editable python: pageInfo['showOnEdit'] and contextObj.mayEdit()">
<tal:comment replace="nothing">Edit</tal:comment>
<a tal:condition="python: editable and not locked"
tal:attributes="href python: contextObj.getUrl(mode='edit', page=page)">
<img tal:attributes="src string: $appUrl/ui/editBig.png;
title python: _('object_edit')"/>
</a>
<input type="button" class="button" tal:condition="python: editable and not locked"
tal:attributes="style string: background-image: url($appUrl/ui/buttonEdit.png);
value python: _('object_edit');
onclick python: 'window.location=\'%s\'' % contextObj.getUrl(mode='edit', page=page)">
<tal:comment replace="nothing">Locked</tal:comment>
<a tal:condition="python: editable and locked">
<img style="cursor: help"
@ -308,26 +315,19 @@
</td>
</tal:edit>
<tal:comment replace="nothing">Refresh</tal:comment>
<td tal:condition="contextObj/isDebug">
<a tal:attributes="href python: contextObj.getUrl(mode=layoutType, page=page, refresh='yes')">
<img title="Refresh" style="vertical-align:top"
tal:attributes="src string: $appUrl/ui/refresh.png"/>
</a>
</td>
<tal:comment replace="nothing">Next</tal:comment>
<td tal:condition="python: nextPage and pageInfo['showNext']">
<tal:button condition="isEdit">
<img style="cursor:pointer" onClick="submitAppyForm('next')"
tal:attributes="src string:$appUrl/ui/next.png; title python: _('page_next')"/>
<input type="hidden" name="nextPage" tal:attributes="value nextPage"/>
<input type="button" class="button" onClick="submitAppyForm('next')"
tal:attributes="style string: background-image: url($appUrl/ui/buttonNext.png);
value python: _('page_next')">
<input type="hidden" name="nextPage" tal:attributes="value nextPage"/>
</tal:button>
<tal:link condition="not: isEdit">
<a tal:attributes="href python: contextObj.getUrl(page=nextPage)">
<img tal:attributes="src string:$appUrl/ui/next.png;
title python: _('page_next')"/>
</a>
<input type="button" class="button"
tal:attributes="style string: background-image: url($appUrl/ui/buttonNext.png);
value python: _('page_next');
onclick python: 'window.location=\'%s\'' % contextObj.getUrl(page=nextPage)">
</tal:link>
</td>
<tal:comment replace="nothing">Workflow transitions</tal:comment>
@ -335,6 +335,14 @@
tal:condition="python: targetObj.showTransitions(layoutType)">
<metal:transitions use-macro="app/ui/page/macros/transitions"/>
</td>
<tal:comment replace="nothing">Refresh</tal:comment>
<td tal:condition="contextObj/isDebug">
<a tal:attributes="href python: contextObj.getUrl(mode=layoutType, page=page, refresh='yes')">
<img title="Refresh" style="vertical-align:top"
tal:attributes="src string: $appUrl/ui/refresh.png"/>
</a>
</td>
</tr>
</table>

View file

@ -66,38 +66,37 @@
tal:condition="python: (nb != 1) or ((nb == 1) and phases)"></div>
<div class="portletContent" tal:define="searchInfo python: tool.getGroupedSearches(rootClass)">
<tal:comment replace="nothing">Section title (link triggers the default search), with action icons</tal:comment>
<a tal:define="queryParam python: searchInfo['default'] and searchInfo['default']['name'] or ''"
tal:attributes="href python: '%s?className=%s&search=%s' % (queryUrl, rootClass, queryParam);
<tal:comment replace="nothing">Section title (link triggers the default search)</tal:comment>
<div class="portletTitle">
<a tal:define="queryParam python: searchInfo['default'] and searchInfo['default']['name'] or ''"
tal:attributes="href python: '%s?className=%s&search=%s' % (queryUrl, rootClass, queryParam);
class python: (not currentSearch and (currentClass==rootClass) and (currentPage=='query')) and 'portletCurrent' or ''"
tal:content="structure python: _(rootClass + '_plural')">
</a>
<tal:icons define="addPermission python: '%s: Add %s' % (appName, rootClass);
userMayAdd python: user.has_permission(addPermission, appFolder);
createMeans python: tool.getCreateMeans(rootClass)">
tal:content="structure python: _(rootClass + '_plural')">
</a>
</div>
<tal:actions define="addPermission python: '%s: Add %s' % (appName, rootClass);
userMayAdd python: user.has_permission(addPermission, appFolder);
createMeans python: tool.getCreateMeans(rootClass)">
<tal:comment replace="nothing">Create a new object from a web form</tal:comment>
<a tal:condition="python: ('form' in createMeans) and userMayAdd"
tal:attributes="href python: '%s/do?action=Create&className=%s' % (toolUrl, rootClass);
title python: _('query_create')">
<img tal:attributes="src string: $appUrl/ui/plus.png"/>
</a>
<tal:comment replace="nothing">Create (a) new object(s) by importing data</tal:comment>
<a tal:condition="python: ('import' in createMeans) and userMayAdd"
tal:attributes="href python: '%s/ui/import?className=%s' % (toolUrl, rootClass);
title python: _('query_import')">
<img tal:attributes="src string: $appUrl/ui/import.png"/>
</a>
</tal:icons>
<br/>
<input type="button" class="button" tal:condition="python: userMayAdd and ('form' in createMeans)"
tal:attributes="style string: background-image: url($appUrl/ui/buttonAdd.png);
value python: _('query_create');
onclick python: 'window.location=\'%s/do?action=Create&className=%s\'' % (toolUrl, rootClass)">
<tal:comment replace="nothing">Create object(s) by importing data</tal:comment>
<input type="button" class="button" tal:condition="python: userMayAdd and ('import' in createMeans)"
tal:attributes="style string: background-image: url($appUrl/ui/buttonImport.png);
value python: _('query_import');
onclick python: 'window.location=\'%s/ui/import?className=%s\'' % (toolUrl, rootClass)">
</tal:actions>
<tal:search condition="python: tool.advancedSearchEnabledFor(rootClass)">
<tal:comment replace="nothing">Live search</tal:comment>
<form tal:attributes="action string: $appUrl/config/do">
<input type="hidden" name="action" value="SearchObjects"/>
<input type="hidden" name="className" tal:attributes="value rootClass"/>
<table cellpadding="0" cellspacing="0">
<tr valign="middle">
<td style="padding-right: 3px"><input type="text" size="14" name="w_SearchableText"/></td>
<tr valign="bottom">
<td><input type="text" size="14" name="w_SearchableText" class="inputSearch"/></td>
<td><input type="image" style="cursor:pointer"
tal:attributes="src string: $appUrl/ui/search.gif;
title python: _('search_button')"/></td>
@ -106,8 +105,9 @@
</form>
<tal:comment replace="nothing">Advanced search</tal:comment>
<div tal:define="highlighted python: (currentClass == rootClass) and (currentPage == 'search')"
tal:attributes="class python: highlighted and 'portletSearch portletCurrent' or 'portletSearch'">
<a tal:define="text python: _('search_title')"
tal:attributes="class python: highlighted and 'portletSearch portletCurrent' or 'portletSearch';
align dright">
<a tal:define="text python: _('search_title')" style="font-size: 88%"
tal:attributes="href python: '%s/ui/search?className=%s' % (toolUrl, rootClass); title text">
<span tal:replace="text"/>...
</a>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 905 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -44,7 +44,9 @@
<tal:comment replace="nothing">Submit button</tal:comment>
<p tal:attributes="align dright"><br/>
<input type="submit" tal:attributes="value python: _('search_button')"/>
<input type="submit" class="button"
tal:attributes="value python: _('search_button');
style string: background-image: url($appUrl/ui/buttonSearch.png);"/>
</p>
</form>
</metal:fill>

View file

@ -8,13 +8,17 @@
<input type="hidden" name="objectUid" tal:attributes="value contextObj/UID"/>
<input type="hidden" name="fieldName" tal:attributes="value name"/>
<tal:confirm condition="widget/confirm">
<input type="button"
<input type="button" class="button"
tal:define="labelConfirm python: contextObj.translate(widget['labelId'] + '_confirm')"
tal:attributes="value label;
tal:attributes="value python: tool.truncateValue(label);
title label;
style string: background-image: url($appUrl/ui/buttonAction.png);
onClick python: 'askConfirm(\'form\', \'%s\', &quot;%s&quot;)' % (formId, labelConfirm)"/>
</tal:confirm>
<input type="submit" name="do" tal:condition="not: widget/confirm"
tal:attributes="value label"/>
<input type="submit" class="button" name="do" tal:condition="not: widget/confirm"
tal:attributes="value python: tool.truncateValue(label);
title label;
style string: background-image: url($appUrl/ui/buttonAction.png);"/>
</form>
</metal:view>