Skip to content

Commit

Permalink
WIP #1410
Browse files Browse the repository at this point in the history
  • Loading branch information
ebruchez committed Nov 23, 2022
1 parent f9c7c66 commit aaae00e
Show file tree
Hide file tree
Showing 2 changed files with 282 additions and 101 deletions.
333 changes: 232 additions & 101 deletions form-runner/jvm/src/main/resources/apps/fr/landing/landing.xhtml
Original file line number Diff line number Diff line change
Expand Up @@ -24,114 +24,245 @@
for $offset in frf:defaultTimezoneToOffsetString()
return xs:dayTimeDuration($offset)"/>

<xf:instance id="fr-form-instance">
<i>
<selection/>
</i>
<xf:var
name="page-size"
value="5"/>

<xf:instance id="fr-form-instance" xxf:exclude-result-prefixes="#all">
<_/>
</xf:instance>

<xf:instance id="fr-landing-form-metadata-instance" xxf:exclude-result-prefixes="#all">
<_/>
</xf:instance>

<xf:instance id="fr-landing-form-builder-instance" xxf:exclude-result-prefixes="#all">
<_/>
</xf:instance>

<xf:instance id="fr-landing-demo-forms-instance" xxf:exclude-result-prefixes="#all">
<_/>
</xf:instance>

<xf:submission
id="fr-landing-read-form-metadata-submission"
method="get"
serialization="none"
resource="/fr/service/persistence/form?all-versions=false&amp;ignore-admin-permissions=true"
replace="instance"
targetref="instance('fr-landing-form-metadata-instance')">
</xf:submission>

<xf:submission
id="fr-landing-read-demo-forms-submission"
method="get"
serialization="none"
resource="/fr/service/persistence/form/orbeon?all-versions=false&amp;ignore-admin-permissions=true"
replace="instance"
targetref="instance('fr-landing-demo-forms-instance')">
</xf:submission>

<xf:instance id="fr-search-instance" xxf:exclude-result-prefixes="#all">
<search xmlns="" return-all-indexed-fields="true">
<query/>
<page-size>10</page-size>
<page-number>1</page-number>
<lang/>
</search>
</xf:instance>

<xf:submission
id="fr-landing-read-form-builder-submission"
ref="instance('fr-search-instance')"
validate="false"
method="post"
resource="/fr/service/persistence/search/orbeon/builder"
replace="instance"
targetref="instance('fr-landing-form-builder-instance')">

<xf:header>
<xf:name>Orbeon-Form-Definition-Version</xf:name>
<xf:value value="1"/>
</xf:header>

<!-- Set language upon submitting -->
<xf:action event="xforms-submit">
<!-- NOTE: xxf:lang() doesn't seem to work here -->
<!-- <xf:setvalue ref="lang" value="xxf:instance('fr-language-instance')"/>-->
<xf:setvalue ref="lang" value="'en'"/>
</xf:action>
<xf:action event="xforms-submit-error">
<!-- TODO: i18n -->
<xf:message>Error performing search.</xf:message>
</xf:action>
</xf:submission>

<xf:action event="xforms-model-construct-done">
<xf:send submission="fr-landing-read-form-metadata-submission"/>
<xf:send submission="fr-landing-read-form-builder-submission"/>
<xf:send submission="fr-landing-read-demo-forms-submission"/>
</xf:action>

</xf:model>
</xh:head>
<xh:body>
<fr:view fluid="true">
<fr:navbar5/>
<div class="row gy-5" xmlns="http://www.w3.org/1999/xhtml">
<div class="col-6 p-2">
<div class="card h-100">
<!-- <img src="..." class="card-img-top" alt="..."/>-->
<h5 class="card-title card-header">Form Builder Forms</h5>
<div class="card-body">
<p class="card-text">View and edit your in-progress forms created with Form Builder.</p>
<a href="/fr/orbeon/builder/summary" class="btn btn-primary stretched-link">Form Builder Forms</a>
</div>
<ul class="list-group list-group-flush">
<li class="list-group-item">An item</li>
<li class="list-group-item">A second item</li>
<li class="list-group-item">A third item</li>
<li class="list-group-item">
<a href="/fr/orbeon/builder/summary" class="">All Form Builder Forms</a>
</li>
</ul>
<div class="card-body">
<p class="card-text">View and edit your in-progress forms created with Form Builder.</p>
<a href="/fr/orbeon/builder/summary" class="btn btn-primary stretched-link">Form Builder Forms</a>
</div>
<div class="card-footer">
<small class="text-muted">Last updated 3 mins ago</small>
</div>
</div>
</div>
<div class="col-6 p-2">
<div class="card h-100">
<!-- <img src="..." class="card-img-top" alt="..."/>-->
<h5 class="card-title card-header">Form Builder New Form</h5>
<div class="card-body">
<p class="card-text">Create forms with Form Builder, the Orbeon Forms visual form designer. It allows you to build and deploy forms in minutes right from your web browser. Add form fields, including rich controls such as date, currency, file attachments and more. Group your fields in sections. Define validation logic, visibility rules, initial values. Pre-populate fields from Web or REST services. And there is more!</p>
<a href="/fr/orbeon/builder/new" class="btn btn-primary stretched-link">Create New Form</a>
</div>

</div>
</div>
</div>
<div class="row gy-5">
<div class="col-6 p-2">
<div class="card h-100">
<!-- <img src="..." class="card-img-top" alt="..."/>-->
<h5 class="card-title card-header">My Forms</h5>
<div class="card-body">
<p class="card-text">Access all your published forms.</p>
<a href="/fr/forms" class="btn btn-primary stretched-link">Go to My Forms</a>
</div>
<ul class="list-group list-group-flush">
<li class="list-group-item">An item</li>
<li class="list-group-item">A second item</li>
<li class="list-group-item">A third item</li>
<!-- <li class="list-group-item">-->
<!-- <a href="/fr/orbeon/builder/summary" class="btn btn-primary stretched-link">Form Builder Forms</a>-->
<!-- </li>-->
</ul>
<div class="card-footer">
<small class="text-muted">Last updated 3 mins ago</small>
</div>
</div>
</div>
<div class="col-6 p-2">
<div class="card h-100">
<!-- <img src="..." class="card-img-top" alt="..."/>-->
<h5 class="card-title card-header">Admin</h5>
<div class="card-body">
<p class="card-text">Administrative tasks.</p>
<a href="/fr/admin" class="btn btn-primary stretched-link">Go to Admin</a>
</div>
</div>
</div>
</div>
<div class="row gy-5">
<div class="col-6 p-2">
<div class="card h-100">
<!-- <img src="..." class="card-img-top" alt="..."/>-->
<h5 class="card-header">Demo Forms</h5>
<div class="card-body">
<p class="card-text">These are some demo forms.</p>
<!-- <a href="/fr/forms" class="btn btn-primary stretched-link">Go to My Forms</a>-->
</div>
<ul class="list-group list-group-flush">
<li class="list-group-item"><a href="">Controls</a></li>
<li class="list-group-item"><a href="">Bookshelf</a></li>
<li class="list-group-item"><a href="">DMV-14</a></li>
<li class="list-group-item"><a href="">W-9</a></li>
<li class="list-group-item"><a href="">Travel</a></li>
<li class="list-group-item"><a href="">Contact</a></li>
<!-- <li class="list-group-item">-->
<!-- <a href="/fr/orbeon/builder/summary" class="btn btn-primary stretched-link">Form Builder Forms</a>-->
<!-- </li>-->
</ul>
</div>
</div>
<div class="col-6 p-2">

</div>
</div>
<!-- xxx-->
<!-- <xf:output value="fr:lang()"/>-->
<xh:div class="row gy-5">
<fr:card>
<xf:label>Published Forms</xf:label>
<xf:itemset ref="instance('fr-landing-form-metadata-instance')/*[position() le $page-size]">
<xf:label ref="title"/>
<xf:value ref="
concat(
'/fr/',
application-name,
'/',
form-name,
'/',
'new', (: xxx TODO: new or summary:)
'?form-version=',
form-version
)"/>
</xf:itemset>
<xf:itemset ref=".[count(instance('fr-landing-form-metadata-instance')/*) gt $page-size]">
<xf:label ref="'...'"/>
<xf:value ref="'/fr/'"/>
</xf:itemset>
<fr:footer>
<xh:span>
<xf:output value="
(: TODO: Make this a reusable function :)
let $date-time := max(instance('fr-landing-form-metadata-instance')/*/last-modified-time/xs:dateTime(.)),
$v :=
if (exists($tz)) then
adjust-dateTime-to-timezone(
$date-time,
$tz
)
else
adjust-dateTime-to-timezone(
$date-time
)
return
if (current-dateTime() - $v lt xs:dayTimeDuration('P1D'))
then format-dateTime($v, xxf:r('common.formats.within-day', '|fr-fr-resources|'), xxf:lang(), (), ())
else if (year-from-dateTime(current-dateTime()) = year-from-dateTime($v))
then format-dateTime($v, xxf:r('common.formats.day-this-year', '|fr-fr-resources|'), xxf:lang(), (), ())
else format-dateTime($v, xxf:r('common.formats.short-date', '|fr-fr-resources|'), xxf:lang(), (), ())">
<xf:label ref="xxf:r('home.titles.last-modified', '|fr-fr-resources|')"/>
</xf:output>
</xh:span>
</fr:footer>
</fr:card>
<fr:card>
<xf:label>Form Builder Forms</xf:label>
<xf:itemset ref="instance('fr-landing-form-builder-instance')/*[position() le $page-size]">
<xf:label ref="details/detail[3]"/>
<xf:value ref="
concat(
'/fr/orbeon/builder/edit/',
@name
)"/>
</xf:itemset>
<fr:footer>
<xh:span>
<xf:output value="
(: TODO: Make this a reusable function :)
let $date-time := max(instance('fr-landing-form-builder-instance')/*/@last-modified/xs:dateTime(.)),
$v :=
if (exists($tz)) then
adjust-dateTime-to-timezone(
$date-time,
$tz
)
else
adjust-dateTime-to-timezone(
$date-time
)
return
if (current-dateTime() - $v lt xs:dayTimeDuration('P1D'))
then format-dateTime($v, xxf:r('common.formats.within-day', '|fr-fr-resources|'), xxf:lang(), (), ())
else if (year-from-dateTime(current-dateTime()) = year-from-dateTime($v))
then format-dateTime($v, xxf:r('common.formats.day-this-year', '|fr-fr-resources|'), xxf:lang(), (), ())
else format-dateTime($v, xxf:r('common.formats.short-date', '|fr-fr-resources|'), xxf:lang(), (), ())">
<xf:label ref="xxf:r('home.titles.last-modified', '|fr-fr-resources|')"/>
</xf:output>
</xh:span>
</fr:footer>
</fr:card>
</xh:div>
<xh:div class="row gy-5">
<fr:card>
<xf:label>Demo Forms</xf:label>
<xf:itemset ref="instance('fr-landing-demo-forms-instance')/*[position() le $page-size]">
<xf:label ref="title[@xml:lang = xxf:lang()]"/>
<xf:value ref="
concat(
'/fr/',
application-name,
'/',
form-name,
'/',
'new', (: xxx TODO: new or summary:)
'?form-version=',
form-version
)"/>
</xf:itemset>
</fr:card>
</xh:div>

<!-- <div class="col-6 p-2">-->
<!-- <div class="card h-100">-->
<!--&lt;!&ndash; <img src="..." class="card-img-top" alt="..."/>&ndash;&gt;-->
<!-- <h5 class="card-title card-header">Form Builder New Form</h5>-->
<!-- <div class="card-body">-->
<!-- <p class="card-text">Create forms with Form Builder, the Orbeon Forms visual form designer. It allows you to build and deploy forms in minutes right from your web browser. Add form fields, including rich controls such as date, currency, file attachments and more. Group your fields in sections. Define validation logic, visibility rules, initial values. Pre-populate fields from Web or REST services. And there is more!</p>-->
<!-- <a href="/fr/orbeon/builder/new" class="btn btn-primary stretched-link">Create New Form</a>-->
<!-- </div>-->

<!-- </div>-->
<!-- </div>-->
<!-- <div class="col-6 p-2">-->
<!-- <div class="card h-100">-->
<!--&lt;!&ndash; <img src="..." class="card-img-top" alt="..."/>&ndash;&gt;-->
<!-- <h5 class="card-title card-header">Admin</h5>-->
<!-- <div class="card-body">-->
<!-- <p class="card-text">Administrative tasks.</p>-->
<!-- <a href="/fr/admin" class="btn btn-primary stretched-link">Go to Admin</a>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="row gy-5">-->
<!-- <div class="col-6 p-2">-->
<!-- <div class="card h-100">-->
<!--&lt;!&ndash; <img src="..." class="card-img-top" alt="..."/>&ndash;&gt;-->
<!-- <h5 class="card-header">Demo Forms</h5>-->
<!-- <div class="card-body">-->
<!-- <p class="card-text">These are some demo forms.</p>-->
<!--&lt;!&ndash; <a href="/fr/forms" class="btn btn-primary stretched-link">Go to My Forms</a>&ndash;&gt;-->
<!-- </div>-->
<!-- <ul class="list-group list-group-flush">-->
<!-- <li class="list-group-item"><a href="">Controls</a></li>-->
<!-- <li class="list-group-item"><a href="">Bookshelf</a></li>-->
<!-- <li class="list-group-item"><a href="">DMV-14</a></li>-->
<!-- <li class="list-group-item"><a href="">W-9</a></li>-->
<!-- <li class="list-group-item"><a href="">Travel</a></li>-->
<!-- <li class="list-group-item"><a href="">Contact</a></li>-->
<!--&lt;!&ndash; <li class="list-group-item">&ndash;&gt;-->
<!--&lt;!&ndash; <a href="/fr/orbeon/builder/summary" class="btn btn-primary stretched-link">Form Builder Forms</a>&ndash;&gt;-->
<!--&lt;!&ndash; </li>&ndash;&gt;-->
<!-- </ul>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="col-6 p-2">-->

<!-- </div>-->
<!-- </div>-->
<fr:xforms-inspector/>
</fr:view>
</xh:body>
</xh:html>
Loading

0 comments on commit aaae00e

Please sign in to comment.