<div metal:define-macro="appyNavigate" tal:condition="python: totalNumber > batchSize" tal:attributes="align dright"> <tal:comment replace="nothing"> Buttons for navigating among a list of elements (next, back, first, last, etc). </tal:comment> <table class="listNavigate" tal:define="mustSortAndFilter python: ajaxHookId == 'queryResult'; sortKey sortKey|python:''; sortOrder sortOrder|python:''; filterKey filterKey|python:''; sortAndFilter python: test(mustSortAndFilter, ',\'%s\',\'%s\',\'%s\'' % (sortKey, sortOrder, filterKey), '')"> <tr valign="middle"> <tal:comment replace="nothing">Go to the first page</tal:comment> <td tal:condition="python: (startNumber != 0) and (startNumber != batchSize)"><img style="cursor:pointer" tal:attributes="src string: $appUrl/ui/arrowLeftDouble.png; title python: _('goto_first'); onClick python: navBaseCall.replace('**v**', '0'+sortAndFilter)"/></td> <tal:comment replace="nothing">Go to the previous page</tal:comment> <td tal:define="sNumber python: startNumber - batchSize" tal:condition="python: startNumber != 0"><img style="cursor:pointer" tal:attributes="src string: $appUrl/ui/arrowLeftSimple.png; title python: _('goto_previous'); onClick python: navBaseCall.replace('**v**', str(sNumber)+sortAndFilter)"/></td> <tal:comment replace="nothing">Explain which elements are currently shown</tal:comment> <td class="discreet"> <span tal:replace="python: startNumber+1"/> <img tal:attributes="src string: $appUrl/ui/to.png"/> <span tal:replace="python: startNumber+len(objs)"/> <b>//</b> <span tal:replace="python: totalNumber"/> </td> <tal:comment replace="nothing">Go to the next page</tal:comment> <td tal:define="sNumber python: startNumber + batchSize" tal:condition="python: sNumber < totalNumber"><img style="cursor:pointer" tal:attributes="src string: $appUrl/ui/arrowRightSimple.png; title python: _('goto_next'); onClick python: navBaseCall.replace('**v**', str(sNumber)+sortAndFilter)"/></td> <tal:comment replace="nothing">Go to the last page</tal:comment> <td tal:define="lastPageIsIncomplete python: totalNumber % batchSize; nbOfCompletePages python: totalNumber/batchSize; nbOfCountedPages python: test(lastPageIsIncomplete, nbOfCompletePages, nbOfCompletePages-1); sNumber python: (nbOfCountedPages*batchSize)" tal:condition="python: (startNumber != sNumber) and (startNumber != sNumber-batchSize)"><img style="cursor:pointer" tal:attributes="src string: $appUrl/ui/arrowRightDouble.png; title python: _('goto_last'); onClick python: navBaseCall.replace('**v**', str(sNumber)+sortAndFilter)"/></td> </tr> </table> </div> <div metal:define-macro="objectNavigate" tal:condition="request/nav|nothing"> <tal:comment replace="nothing"> Buttons for going to next/previous elements if this one is among bunch of referenced or searched objects. currentNumber starts with 1. </tal:comment> <table class="objectNavigate" tal:define="navInfo tool/getNavigationInfo; currentNumber navInfo/currentNumber; totalNumber navInfo/totalNumber; firstUrl navInfo/firstUrl; previousUrl navInfo/previousUrl; nextUrl navInfo/nextUrl; lastUrl navInfo/lastUrl; sourceUrl navInfo/sourceUrl; backText navInfo/backText"> <tr valign="middle"> <tal:comment replace="nothing">Go to the source URL (search or referred object)</tal:comment> <td tal:condition="sourceUrl"><a tal:attributes="href sourceUrl"><img tal:attributes="src string: $appUrl/ui/gotoSource.png; title python: backText + ' : ' + _('goto_source')"/></a></td> <tal:comment replace="nothing">Go to the first page</tal:comment> <td tal:condition="firstUrl"><a tal:attributes="href firstUrl"><img tal:attributes="src string: $appUrl/ui/arrowLeftDouble.png; title python: _('goto_first')"/></a></td> <tal:comment replace="nothing">Go to the previous page</tal:comment> <td tal:condition="previousUrl"><a tal:attributes="href previousUrl"><img tal:attributes="src string: $appUrl/ui/arrowLeftSimple.png; title python: _('goto_previous')"/></a></td> <tal:comment replace="nothing">Explain which element is currently shown</tal:comment> <td class="discreet"> <span tal:replace="python: currentNumber"/> <b>//</b> <span tal:replace="python: totalNumber"/> </td> <tal:comment replace="nothing">Go to the next page</tal:comment> <td tal:condition="python: nextUrl"><a tal:attributes="href nextUrl"><img tal:attributes="src string: $appUrl/ui/arrowRightSimple.png; title python: _('goto_next')"/></a></td> <tal:comment replace="nothing">Go to the last page</tal:comment> <td tal:condition="lastUrl"><a tal:attributes="href lastUrl"><img tal:attributes="src string: $appUrl/ui/arrowRightDouble.png; title python: _('goto_last')"/></a></td> </tr> </table> </div> <tal:comment replace="nothing"> This macro displays up/down arrows in a table header column for sorting a given column. It requires variables "sortable", 'filterable' and 'fieldName'. </tal:comment> <metal:sortAndFilter define-macro="sortAndFilter" tal:define="fieldName widget/name"> <tal:sort condition="sortable"> <img tal:attributes="src string: $appUrl/ui/sortDown.gif; onClick python: navBaseCall.replace('**v**', '0,\'%s\',\'asc\',\'%s\'' % (fieldName, filterKey))" tal:condition="python: (sortKey != fieldName) or (sortOrder == 'desc')" style="cursor:pointer"/> <img tal:attributes="src string: $appUrl/ui/sortUp.gif; onClick python: navBaseCall.replace('**v**', '0,\'%s\',\'desc\',\'%s\'' % (fieldName, filterKey))" tal:condition="python: (sortKey != fieldName) or (sortOrder == 'asc')" style="cursor:pointer"/> </tal:sort> <tal:filter condition="filterable"> <input type="text" size="7" tal:attributes="id python: '%s_%s' % (ajaxHookId, fieldName); value python: test(filterKey == fieldName, filterValue, '')"/> <img tal:attributes="src string: $appUrl/ui/funnel.png; onClick python: navBaseCall.replace('**v**', '0,\'%s\',\'%s\',\'%s\'' % (sortKey, sortOrder, fieldName))" style="cursor:pointer"/> </tal:filter> </metal:sortAndFilter>