code from amapei

This commit is contained in:
cagette@ct8
2020-09-26 18:25:18 +00:00
parent 42fe367911
commit 72b4699871
1966 changed files with 220437 additions and 2 deletions
+63
View File
@@ -0,0 +1,63 @@
::use 'design.mtt'::
<div class="col-md-12">
<h2>::_("Balance of members")::</h2>
</div>
<div class="col-md-4">
<div class="article">
<h3>::_("Balanced")::</h3>
<table class="table">
::foreach ua balanced::
<tr>
<td>
<a href="/member/payments/::ua._user.id::">::ua._user.getName()::</a>
</td>
<td class="info">
::ua.balance::&nbsp;::currency()::
</td>
</tr>
::end::
</table>
</div>
</div>
<div class="col-md-4">
<div class="article">
<h3>::_("In debt")::</h3>
<table class="table">
::foreach ua debt::
<tr>
<td>
<a href="/member/payments/::ua._user.id::">::ua._user.getName()::</a>
</td>
<td class="danger">
::ua.balance::&nbsp;::currency()::
</td>
</tr>
::end::
</table>
</div>
</div>
<div class="col-md-4">
<div class="article">
<h3>::_("In credit")::</h3>
<table class="table">
::foreach ua credit::
<tr>
<td>
<a href="/member/payments/::ua._user.id::">::ua._user.getName()::</a>
</td>
<td class="success">
::ua.balance::&nbsp;::currency()::
</td>
</tr>
::end::
</table>
</div>
</div>
::end::
+164
View File
@@ -0,0 +1,164 @@
::use 'design.mtt'::
<div class="col-md-9">
<div class="article">
::if select!=null::
<h2>::_("Selection :||show a sublist of members which has been selected")::
::if select=="nocontract"::
::_("Members without any contracts")::
::elseif select=="nomembership"::
::_("Members whose membership should be renewed")::
::elseif select=="newusers"::
::_("Members who has never logged in")::
::elseif select=="contract"::
::_("Members with orders or contracts")::
::end::
</h2>
<p><b>::members.current().length::</b> ::_("members")::.</p>
<a href="/member/">::_("Back to main page")::</a>
::elseif search!=null::
<h2>::_("Search"):: : ::search::</h2>
<a href="/member/">::_("Back to main page")::</a>
::else::
<h2>::_("Members")::</h2>
::end::
::if select=="newusers"::
<hr/>
<p style="text-align:center;">
::_("You can invite by email all the members who never logged in, in one single clic.")::
</p>
<p style="text-align:center;">
<a href="/member/invite/?token=::token::" class="btn btn-primary btn-lg"><span class="glyphicon glyphicon-envelope"></span> ::_("Send invitations")::</a>
</p>
::end::
<table class="table table-bordered table-hover table-striped" style="width:100%;">
::foreach m members.current()::
<tr>
<td>
<a href="/member/view/::m.id::">
::m.lastName:: ::m.firstName::
::if m.lastName2!=null::
&amp; ::m.lastName2:: ::m.firstName2::
::end::
</a>
</td>
<td>
::if m.address1!=null::
::m.address1::
::end::
::if m.address2!=null::
::m.address2::
::end::
::if m.zipCode!=null::
::m.zipCode::
::end::
::if m.city!=null::
::m.city::
::end::
</td>
</tr>
::end::
<tr ::cond select==null && search==null::>
<td colspan="2" class="text-center">
<ul class="pagination">
::if members.paginationStartPage != 1::
<li>
<a href="?page=::members.paginationStartPage-1::">
<span class="glyphicon glyphicon-backward"></span>
</a>
</li>
::end::
::foreach i loopList(members.paginationStartPage,members.paginationEndPage)::
::if members.page==i::
<li class="active" ><a href="?page=::i::">::i::</a></li>
::else::
<li><a href="?page=::i::">::i::</a></li>
::end::
::end::
::if members.paginationEndPage < members.pages + 1::
<li>
<a href="?page=::members.paginationEndPage::">
<span class="glyphicon glyphicon-forward"></span>
</a>
</li>
::end::
</ul>
</td>
</tr>
</table>
<div>
<a href="/member/insert" class="btn btn-default btn-sm"><span class="glyphicon glyphicon-plus-sign"></span> ::_("New member")::</a>
$$export(::Web.getURI()+"?"+Web.getParamsString()::&csv=1)
<a href="/member/import" class="btn btn-default btn-sm"><span class="glyphicon glyphicon-save"></span> ::_("Import members")::</a>
</div>
</div>
</div>
<div class="col-md-3">
<div class="block">
<h3>::_("Selections")::</h3>
<ul>
<li><a href="/member/">::_("All members")::</a></li>
<li><a href="/member/?select=nocontract">::_("Without orders or contracts")::</a></li>
<li><a href="/member/?select=contract">::_("With orders or contracts")::</a></li>
<li><a href="/member/?select=newusers">::_("Never logged in")::</a></li>
<li ::cond user._amap.hasMembership()::><a href="/member/?select=nomembership">::_("Memberships to renew")::</a></li>
<li ::cond user._amap.hasPayments()::><a href="/member/balance">::_("Members balance")::</a></li>
</ul>
<form class="form-search" action="/member/" method="get">
<div class="input-group">
::if search==null::
::set ssearch=""::
::else::
::set ssearch=search::
::end::
<input type="text" class="form-control" name="search" value="::ssearch::" />
<span class="input-group-btn">
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-search"></span> ::_("Search||search action button")::</button>
</span>
</div>
</form>
</div>
<div class="block">
<h3>::_("Waiting list")::</h3>
<p>
::raw __("There is <b>::waitingList::</b> people on waiting list.",{waitingList:waitingList})::
<br/>
<a href="/member/waiting" class="btn btn-default btn-sm">::_("Display the list")::</a>
</p>
</div>
::if select!="newusers"::
<div class="block">
<h3>::_("New members")::</h3>
::raw __("There is <b>::newUsers::</b> members who never logged in",{newUsers:newUsers})::
<br/>
<a href="/member/?select=newusers" class="btn btn-default btn-sm">::_("Display the list")::</a>
</div>
::end::
</div>
::end::
+118
View File
@@ -0,0 +1,118 @@
::use 'design.mtt'::
<div class="col-md-12">
<div class="article">
<h2>::_("Import")::</h2>
::if step==1::
<form action="/member/import/" method="POST" enctype="multipart/form-data">
<p>
<input name="file" type="file"/>
</p>
<input type="submit" value="OK" class="btn btn-primary" />
</form>
::elseif step==2::
<h4>::_("Users to import")::</h4>
<div style="margin-bottom:24px;">
::if (data!=null && data.length>0) || (data2!=null && data2.length>0)::
<table class="table table-bordered" style="font-size:11px;background-color:#FFF;">
<tr>
<th>::_("First name")::</th>
<th>::_("Last name")::</th>
<th>::_("Email")::</th>
<th>::_("Phone")::</th>
<th>::_("Partner first name")::</th>
<th>::_("Partner last name")::</th>
<th>::_("Partner email")::</th>
<th>::_("phone")::</th>
<th>::_("Address 1")::</th>
<th>::_("Address 2")::</th>
<th>::_("zip code")::</th>
<th>::_("City")::</th>
</tr>
::foreach d data::
<tr>
::foreach r d::
<td>
::if r!=null:: ::r:: ::end::
</td>
::end::
</tr>
::end::
</table>
<h4>::_("Existing accounts")::</h4>
<table class="table table-bordered" style="font-size:11px;color:#666666;background-color:#FFF;">
<tr>
<th>::_("First name")::</th>
<th>::_("Last name")::</th>
<th>::_("Email")::</th>
<th>::_("Phone")::</th>
<th>::_("Partner first name")::</th>
<th>::_("Partner last name")::</th>
<th>::_("Partner email")::</th>
<th>::_("phone")::</th>
<th>::_("Address 1")::</th>
<th>::_("Address 2")::</th>
<th>::_("zip code")::</th>
<th>::_("City")::</th>
</tr>
::foreach d data2::
<tr>
::foreach r d::
<td>
::if r!=null:: ::r:: ::end::
</td>
::end::
</tr>
::end::
</table>
<div class="alert alert-error">
<b>::_("Warning")::</b>
<p>::_("Before validating this import, please check that this table est correctly filled.<br/>If some datas are shifted or are not linked to the right column, please check your CSV file.")::
</p>
<a href="/member/import">::_("Try again")::</a>
</div>
<a href="/member/import?confirm=1" class="btn btn-danger">::_("Finalize import")::</a>
::else::
<div class="alert alert-error">
<b>::_("Oups !")::</b>
<p>::_("It looks like there is no data to import. Please check your CSV file or check that the users you want to import are not already registred.")::</p>
<a href="/member/import">::_("Try again")::</a>
</div>
::end::
</div>
::elseif step==3::
::if numImported>0::
<div class="alert alert-success">
<b>::raw __("Congratulations ! You just imported <b>::numImported::</b> users in your group.",{numImported:numImported})::</b>
</div>
<p>
::raw _("You may now consider <a href='/member/?select=newusers'>inviting them</a> to log into Cagette.net")::
</p>
::else::
<p>::_("You did'nt import anything in your database because your file was empty, or contained already registred users")::</p>
::end::
<a href="/member/">::_("Go back to the main page")::</a>
::end::
</div>
<div class="block">
<h3>::_("Help")::</h3>
::raw _("Here you can import a large amount of members in your database from a simple Excel or Libre Office file.<br/><ul><li>The first step is to <a href=\"/adherents.xls\">download this demo file.</a></li><li>Fill out the table, of modify your existing file to striclty match the columns order.</li><li>Once your file is completed, click on \"save as\" in your spreadsheet software, and select \"CSV\" format</li><li>Select the following options : separator : <b>coma</b> or <b>dot-coma</b>, encoding : <b>Unicode UTF-8</b></li><li>Save the file</li><li>finally, click on \"select a file\" on this page and upload it.</li></ul>")::
</div>
</div>
::end::
+30
View File
@@ -0,0 +1,30 @@
<table class="table table-striped">
<tr>
<th>::_("Date")::</th>
<th>::_("Subject")::</th>
<th>::_("Status")::</th>
</tr>
::foreach m emails::
::if m.failure!=null::
::set class = "danger"::
::else::
::set class = "success"::
::end::
<tr class="::class::">
<td>::hDate(m.date)::</td>
<td>::m.subject::</td>
<td>
::if m.failure!=null::
<span class="glyphicon glyphicon-exclamation-sign"></span> ::m.failure::
::else::
<span class="glyphicon glyphicon-ok"></span> ::m.success::
::end::
</td>
</tr>
::end::</table>
+121
View File
@@ -0,0 +1,121 @@
::use 'design.mtt'::
<div class="col-md-3">
<h2>::_("Contact informations")::</h2>
<div class="article">
<div style="font-weight:bold;font-size:120%;">::member.firstName:: ::member.lastName::
::if member.firstName2!=null && member.lastName2!=null::
& ::member.firstName2:: ::member.lastName2::
::end::</div>
$$nullSafe(::member.address1::)<br/>
$$nullSafe(::member.address2::)<br/>
$$nullSafe(::member.zipCode::)
$$nullSafe(::member.city::)<br/>
<br/>
::if member.phone!=null::
::_("Phone"):: : ::member.phone::<br/>
::end::
::if member.email!=null::
::_("Email"):: : <a href="mailto: ::member.email::">::member.email::</a><br/>
::end::
::if member.email2!=null::
::_("Email"):: : <a href="mailto: ::member.email2::">::member.email2::</a><br/>
::end::
</div>
</div>
<div class="col-md-9">
<h2>::_("Payments")::</h2>
<div class="article">
<table class="table table-condensed">
<!-- total -->
<tr style="font-size:1.3em;">
<td colspan="2"></td>
<td class="text-right">::_("Balance")::&nbsp;:</td>
::if balance<0::
::set color = "C00"::
::else::
::set color = "0C0"::
::end::
<td style="color:#::color::;">
::if balance<0::
-
::end::
</td>
<td style="color:#::color::;">
::Math.abs(balance)::&nbsp;::currency()::
</td>
<td colspan="2">
</td>
</tr>
::foreach t rb.current()::
<tr>
$$operation(::t::)
<td>
::if t.type==2::
<div class="btn-group" role="group">
$$edit(::_("Edit")::,/transaction/edit/::t.id::)
$$delete(::_("Del.")::,/transaction/delete/::t.id::?token=::token::)
</div>
::elseif isAdmin::
<a href="/transaction/delete/::t.id::?token=::token::" $$confirm(::_("Delete ?")::) class="btn btn-danger btn-sm" >
<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
</a>
::end::
</td>
</tr>
::end::
<tr>
<th colspan="6" class="text-center">
<ul class="pagination">
::if rb.paginationStartPage != 1::
<li>
<a href="?page=::rb.paginationStartPage-1::">
<span class="glyphicon glyphicon-backward"></span>
</a>
</li>
::end::
::foreach i loopList(rb.paginationStartPage,rb.paginationEndPage)::
::if rb.page==i::
<li class="active" ><a href="?page=::i::">::i::</a></li>
::else::
<li><a href="?page=::i::">::i::</a></li>
::end::
::end::
::if rb.paginationEndPage < rb.pages + 1::
<li>
<a href="?page=::rb.paginationEndPage::">
<span class="glyphicon glyphicon-forward"></span>
</a>
</li>
::end::
</ul>
</th>
</tr>
</table>
$$insert(::_("Insert a payement")::,/transaction/insertPayment/::member.id::)
</div>
</div>
::end::
+223
View File
@@ -0,0 +1,223 @@
::use 'design.mtt'::
<div class="col-md-4">
<h2>::_("Contact informations")::</h2>
<div class="article">
<div style="font-weight:bold;font-size:120%;">
::member.firstName:: ::member.lastName::
::if member.firstName2!=null && member.lastName2!=null::
& ::member.firstName2:: ::member.lastName2::
::end::
</div>
$$nullSafe(::member.address1::)<br/>
$$nullSafe(::member.address2::)<br/>
$$nullSafe(::member.zipCode::)
$$nullSafe(::member.city::)<br/>
<br/>
::if member.phone!=null::
::_("Téléphone"):: : ::member.phone::<br/>
::end::
::if member.email!=null::
::_("E-mail"):: : <a href="mailto: ::member.email::">::member.email::</a><br/>
::end::
::if member.email2!=null::
::_("E-mail"):: : <a href="mailto: ::member.email2::">::member.email2::</a><br/>
::end::
<hr/>
<p style="font-size:11px;">
::_("Last login"):: :
::if member.ldate!=null::
::member.ldate.toString()::
::else::
<b>::_("This member never logged in")::</b>
::end::
<br/>
::_("Registred since"):: :
::if member.cdate!=null::
::member.cdate.toString()::
::else::
???
::end::
<br/>
::if member.pass==""::
<div class="alert alert-danger">::_("This member has not set a password"):: </div>
::end::
</p>
<p>
$$edit(::_("Edit")::,/member/edit/::member.id::)
$$delete(::_("Remove from group")::,/member/delete/::member.id::?token=::token::)
<a href="/member/movetowl/::member.id::" class="btn btn-default btn-sm">::_("Put on waiting list")::</a>
<a onclick="_.overlay('/member/lastMessages/::member.id::','Message reçus')" class="btn btn-default btn-sm">
<span class="glyphicon glyphicon-envelope" aria-hidden="true"></span>
::_("Received messages")::</a>
::if !member.isFullyRegistred()::
<a href="/member/inviteMember/::member.id::?token=::token::" class="btn btn-default btn-sm">
<span class="glyphicon glyphicon-envelope" aria-hidden="true"></span>
::_("Send an invitation")::</a>
::end::
</p>
<p ::cond canLoginAs::>
<a href="/member/loginas/::member.id::/::userAmap._amap.id::" class="btn btn-danger btn-xs">::_("Log in as this member")::</a>
</p>
</div>
::if user._amap.hasMembership()::
<h2>::_("Membership fee")::</h2>
<div class="article">
::if userAmap.hasValidMembership()::
$$bool(true) ::_("Membership up to date")::
::else::
$$bool(false) ::_("Membership to renew")::
::end::
::_("for the period||full sentence : Membership up to date for the period 2017-2018"):: <b>::user._amap.getPeriodName(null)::</b>
<br/>
<a href="/membership/::member.id::" class="btn btn-default btn-sm">::_("Manage membership fees")::</a>
</div>
::end::
</div>
<div class="col-md-8">
<h2>::_("Current orders")::</h2>
<div class="article">
::set o = userContracts::
::if o.constOrders.length>0::
<h4>::_("CSA contracts")::</h4>
<table class="table table-bordered table-condensed" >
<tr>
<th>::_("Qty||short version for quantity")::</th>
<th>::_("Product")::</th>
<th>::_("Price")::</th>
<th>::_("Contract")::</th>
</tr>
::foreach p o.constOrders::
<tr>
<td>::raw p.smartQt::</td>
<td>::p.productName::
::if p.userId2 != null::
<br /><span class="glyphicon glyphicon-refresh"></span> ::_("Order alternated with")::
::if member.id == p.userId::
<a href="/member/view/::p.userId2::">::p.userName2::</a>
::else::
<a href="/member/view/::p.userId::">::p.userName::</a>
::end::
::end::
</td>
<td>::p.subTotal:: ::currency()::</td>
<td>
<a href="/contract/view/::p.contractId::">::p.contractName::</a>
</td>
</tr>
::end::
</table>
::end::
::if count(o.varOrders)>0::
::foreach d o.varOrders.keys()::
<h4>::__("Order for ::date::",{date:d})::</h4>
<table class="table table-bordered table-condensed" >
<tr>
<th>::_("Qty||short version for quantity")::</th>
<th>::_("Product")::</th>
<th><a href="#" data-toggle="tooltip" data-placement="top" title="::_('Unit price including taxes')::">::_("U.P||short version of unit price")::</a></th>
<th>::_("Sub-total")::</th>
<th>::_("Fees")::</th>
<th>::_("Total")::</th>
<th>::_("Contract")::</th>
</tr>
::set total = 0::
::foreach p o.varOrders.get(d)::
<tr>
<td>::raw p.smartQt::</td>
<td>::p.productName::</td>
<td>::p.productPrice::&nbsp;::currency()::</td>
<td>::p.subTotal::&nbsp;::currency()::</td>
<td>
<!-- frais -->
::if p.percentageValue!=null::
<a href="#" data-toggle="tooltip" data-placement="top" title="::p.percentageName:: : ::p.percentageValue:: %">
::formatNum(p.fees)::&nbsp;::currency()::
</a>
::end::
</td>
<td>
<!-- total -->
::formatNum(p.total)::&nbsp;::currency()::
::set total = total + p.total::
</td>
<td>
<a href="/contract/view/::p.contractId::">::p.contractName::</a>
</td>
</tr>
::end::
<tr>
<td colspan="4"></td>
<td>::_("TOTAL")::</td>
<td><b>::formatNum(total)::&nbsp;::currency()::</b></td>
</tr>
</table>
::end::
::end::
</div>
</div>
<div ::cond user.getAmap().hasPayments():: class="col-md-8">
<div class="article">
<span style="font-size:1.3em;">
::_("Balance"):: :
::if userAmap.balance<0::
::set color = "C00"::
::else::
::set color = "0C0"::
::end::
<span style="color:#::color::;">
::userAmap.balance:: ::currency()::
</span>
</span>
<span style="margin-left:30px;">
<a href="/member/payments/::member.id::" class="btn btn-default btn-small">
<i class="fa fa-credit-card" aria-hidden="true"></i>
::_("Payments details")::
</a>
</span>
</div>
</div>
<div class="col-md-4" ::cond userAmap.rights!=null && userAmap._rights!=null::>
<h3>::_("Rights")::</h3>
<div class="article">
<ul>
::foreach r userAmap._rights::
<li>::userAmap.getRightName(r)::</li>
::end::
</ul>
</div>
</div>
::end::
+47
View File
@@ -0,0 +1,47 @@
::use 'design.mtt'::
<div class="col-md-12">
<div class="article">
<h2>::_("Waiting list")::</h2>
<table class="table">
<tr>
<th>::_("Name")::</th>
<th>::_("Email")::</th>
<th>::_("Phone")::</th>
<th>::_("Registration date")::</th>
<th>::_("Message")::</th>
<th></th>
</tr>
::foreach w waitingList::
<tr>
::set u = w._user::
<td>::u.getName()::</td>
<td>::u.email::</td>
<td>$$nullSafe(::u.phone::)</td>
<td>::hDate(w.date)::</td>
<td>"::w.message::"</td>
<td class="col-md-4">
<a href="/member/waiting?add=::u.id::" class="btn btn-primary btn-sm">
<span class="glyphicon glyphicon-ok"></span>
::_("Accept membership request")::
</a>
<a href="/member/waiting?remove=::u.id::" class="btn btn-default btn-sm">
<span class="glyphicon glyphicon-remove"></span>
::_("Deny request")::</a>
</td>
</tr>
::end::
</table>
</div>
</div>
::end::