Restructure Saxonite workspace and upgrade to .NET 10

This commit is contained in:
2026-10-16 18:20:11 +01:00
parent 2c3fb146ab
commit bfd5202649
1996 changed files with 1997 additions and 1179 deletions
@@ -0,0 +1,50 @@
@model SaxModel_Admin
@inject SaxLocaliser Localiser
@{
// Ensure view is only included once in page.
if (!Model.RegisterView(ViewContext)) return;
// Scripts.
Model.AdditionalFiles_JS.Add("js/sax-cnt-mth.js");
}
<div id="dlgContactMethod" class="sax-dialog sax-form" title="@Localiser["caption.contact.method"]">
<div class="spacer4"></div>
@* Method *@
<div class="sax-form-control ContactMethod">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for=""><span>@Localiser["label.method"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
<select name="ContactMethod" class="ContactMethod sax-select" style="max-width:240px;" ></select>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
<div class="spacer"></div>
@* Value *@
<div class="sax-form-control ContactValue">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for=""><span>@Localiser["label.value"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
<input type="text" name="ContactValue" class="ContactValue sax-input" maxlength="200" />
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
<div class="spacer"></div>
</div>
@@ -0,0 +1,118 @@
@* Controls - Item Address *@
@model SaxModel_Admin
@inject SaxLocaliser Localiser
@if (!Model.RegisterView(ViewContext)) return;
@* Item address - Line 1 *@
<div class="sax-form-control AddressLine1">
<div class="row">
<div class="col-sm-3">
<div class="sax-caption">
<label for=""><span>@Localiser["label.address"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control row">
<div class="col"><input type="text" name="Address.Line1" class="AddressLine1 sax-input" autocomplete="off" maxlength="@Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.ItemAddress_Line1)" /> </div>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Item address - Line 2 *@
<div class="sax-form-control AddressLine2">
<div class="row">
<div class="col-sm-3"></div>
<div class="col-sm">
<div class="sax-control row">
<div class="col"><input type="text" name="Address.Line2" class="AddressLine2 sax-input" autocomplete="off" maxlength="@Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.ItemAddress_Line2)" /> </div>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Item address - Line 3 *@
<div class="sax-form-control AddressLine3">
<div class="row">
<div class="col-sm-3"></div>
<div class="col-sm">
<div class="sax-control row">
<div class="col"><input type="text" name="Address.Line3" class="AddressLine3 sax-input" autocomplete="off" maxlength="@Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.ItemAddress_Line3)" /> </div>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Item address - Town *@
<div class="sax-form-control AddressTown">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for=""><span>@Localiser["label.town"]</span><span class="required">&nbsp;(*)</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control row">
<div class="col"><input type="text" name="Address.Town" class="AddressTown sax-input" autocomplete="off" maxlength="@Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.ItemAddress_Town)" /> </div>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Item address - Province *@
<div class="sax-form-control AddressProvince">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for=""><span>@Localiser["label.province"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control row">
<div class="col"><input type="text" name="Address.Province" class="AddressProvince sax-input" autocomplete="off" maxlength="@Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.ItemAddress_Province)" /> </div>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Item address - PostalCode *@
<div class="sax-form-control AddressPostalCode">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for=""><span>@Localiser["label.postal.code"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control row">
<div class="col"><input type="text" name="Address.PostalCode" class="AddressPostalCode sax-input" autocomplete="off" maxlength="@Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.ItemAddress_PostalCode)" /> </div>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Address country *@
<div class="sax-form-control AddressRegionIdCountry">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label><span>@Localiser["label.country"]</span>&nbsp;<span class="required">*</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control row">
<input type="hidden" name="Address.RegionIdCountry" class="AddressRegionIdCountry" />
<div class="col"><input type="text" class="AddressRegionNameCountry sax-input" readonly="readonly" /> </div>
<div class="fixed"><button class="sax-button AddressRegionCountrySelect" style="min-width:auto;margin-left:4px;padding:4px 6px">@Localiser["label.select"]</button></div>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@@ -0,0 +1,83 @@
@* Contact Methods controls *@
@model SaxModel_Admin
@inject SaxLocaliser Localiser
@if (!Model.RegisterView(ViewContext)) return;
<style>
.ItemContactMethods .ContactMethods
{
min-height: 32px;
max-height: 64px;
background-color: #fff;
border: 1px solid #808080;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
overflow-y: scroll;
}
.ItemContactMethods .ContactMethods table.sax-data tr:hover
{
background-color: #f0f0f0;
}
.ItemContactMethods .ContactMethods table.sax-data .sax-label
{
margin: 0;
padding: 0 8px 0 0;
white-space: nowrap;
}
.ItemContactMethods .ContactMethods table.sax-data .sax-value
{
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
@* Contact Methods *@
<div class="sax-form-control ItemContactMethods">
<input type="hidden" name="ContactMethods" value="0" />
<div class="row">
<div class="col-sm-3 row">
<div class="col">
<div class="sax-label">
<label for=""><span>@Localiser["label.contact"]</span></label>
</div>
</div>
<div class="fixed">
@* Action to add new contact method. *@
<div class="sax-actions">
<div class="sax-action sax-add pr4"><img src="~/img/action/add24.png" alt="@(Localiser["label.add"])" title="@(Localiser["label.add"])" /></div>
</div>
</div>
</div>
<div class="col-sm">
<div class="sax-control row">
<div class="col">
@* List of existing contact methods with actions to edit/remove. *@
<div class="ContactMethods">
<table class="sax-data fullwidth"></table>
</div>
<table class="sax-panel-item-template">
<tr class="ContactMethod">
<td style="width:20px;"><div class="sax-label"></div></td>
<td style="width:70%;"><div class="sax-value"></div></td>
<td class="sax-actions right nowrap" style="width:10px;">
<input type="hidden" name="ContactMethod" />
<input type="hidden" name="ContactValue" />
<div class="nowrap">
<div class="inlineb sax-action sax-edit"><img src="~/img/action/edit16.png" alt="@(Localiser["label.edit"])" title="@(Localiser["label.edit"])" /></div>
<div class="inlineb sax-action sax-remove"><img src="~/img/action/delete16.png" alt="@(Localiser["label.remove"])" title="@(Localiser["label.remove"])" /></div>
</div>
</td>
</tr>
</table>
</div>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
<partial name="~/Views/Common/ContactMethods.cshtml" />
@@ -0,0 +1,25 @@
@model SaxModel_Admin
@inject SaxLocaliser Localiser
@{
// Scripts.
Model.AdditionalFiles_JS.Add("js/sax-res-pag.js");
}
<script type="text/javascript">
sax.resultsPaging = sax.resultsPaging || { fn: {}, msg: {}, contexts: [] };
sax.resultsPaging.msg.pageInfo = '@Localiser.GetJavascriptText("label.page.info","{0}","{1}")';
</script>
@* Results paging *@
<div class="sax-results-paging hidden">
@Html.HiddenFor(model => model.Paging.PageNo, new { @id = "", @class = "PagingPageNo" })
@Html.HiddenFor(model => model.Paging.PageLength, new { @id = "", @class = "PagingPageLength" })
<div class="iblock sax-action sax-paging-first"><img src="~/img/action/first24.png" alt="@(Localiser["label.first"])" title="@(Localiser["label.first"])" /></div>
<div class="iblock sax-action sax-paging-prev"><img src="~/img/action/prev24.png" alt="@(Localiser["label.previous"])" title="@(Localiser["label.previous"])" /></div>
<div class="iblock sax-paging-info"></div>
<div class="iblock sax-action sax-paging-next"><img src="~/img/action/next24.png" alt="@(Localiser["label.next"])" title="@(Localiser["label.next"])" /></div>
<div class="iblock sax-action sax-paging-last"><img src="~/img/action/last24.png" alt="@(Localiser["label.last"])" title="@(Localiser["label.last"])" /></div>
</div>
@@ -0,0 +1,68 @@
@model SaxModel_Admin
@inject SaxLocaliser Localiser
@{
// Ensure view is only included once in page.
if (!Model.RegisterView(ViewContext)) return;
// Scripts.
Model.AdditionalFiles_JS.Add("js/sax-sel-cod.js");
}
<link rel="stylesheet" href="~/css/sax-selectCode.css?@Model.HrefVersion" />
<div id="dlgSelectCode" class="sax-dialog sax-form">
@* Filter *@
<div class="">
</div>
<div class="row h-100">
@* Available codes *@
<div class="col-sm-5">
<div class="h-100 d-flex flex-column">
<div class="">@Localiser["label.available"]:</div>
<div class="spacer"></div>
<div class="sax-selectCode-codes AvailableCodes flex-grow-1 mr-1"></div>
</div>
</div>
@* Code selection *@
<div class="col-sm-2">
<div class="spacer8"></div>
<div class="row">
<div class="col-sx-6 col-sm-12 center">
<button class="sax-button Select">@Localiser["label.select"]</button>
</div>
<div class="col-sx-6 col-sm-12 center">
<button class="sax-button Remove">@Localiser["label.remove"]</button>
</div>
</div>
</div>
@* Selected codes *@
<div class="col-sm-5">
<div class="h-100 d-flex flex-column">
<div class="">@Localiser["label.assigned"]:</div>
<div class="spacer"></div>
<div class="sax-selectCode-codes SelectedCodes flex-grow-1 ml-1"></div>
</div>
</div>
</div>
<div class="sax-panel-item-template">
<div class="sax-panel-item Code">
<div class="CodeDesc"></div>
</div>
</div>
</div>
@@ -0,0 +1,53 @@
@model SaxModel_Admin
@inject SaxLocaliser Localiser
@{
// Ensure view is only included once in page.
if (!Model.RegisterView(ViewContext)) return;
// Scripts.
Model.AdditionalFiles_JS.Add("js/sax-sel-itm.js");
}
<link rel="stylesheet" href="~/css/sax-selectItem.css?@Model.HrefVersion" />
<div id="dlgSelectItem" class="sax-dialog sax-form">
<div class="container-fluid h-100">
@* Selected Item *@
<div class="SelectedItem">
<div class="row">
<div class="col-sm-12"><div class="sax-label">@Localiser["label.item.selected"]:</div></div>
<div class="col-sm-12"><div class="SelectedItemName"></div></div>
</div>
<div class="spacer2"></div>
</div>
@* Item Filter *@
<div class="ItemFilter sax-form">
<div class="row">
<div class="col right"><div class="sax-label">@Localiser["label.search"]</div></div>
<div class="fixed"><input type="search" id="ifItemFilter" class="sax-input" autocomplete="off" onkeyup="sax.data.selectItem.fn.displayItems();" /></div>
</div>
<div class="spacer2"></div>
</div>
@* Available items *@
<div class="row">
<div class="col"><div class="sax-label bottom">@Localiser["label.items.available"]:</div></div>
</div>
<div class="row">
<div class="col-sm-12 sax-selectItem-items AvailableItems"></div>
</div>
</div>
<div class="sax-panel-item-template">
<div class="sax-panel-item Item">
<div class="ItemName"></div>
</div>
</div>
</div>
@@ -0,0 +1,53 @@
@model SaxModel_Admin
@inject SaxLocaliser Localiser
@{
// Ensure view is only included once in page.
if (!Model.RegisterView(ViewContext)) return;
// Scripts.
Model.AdditionalFiles_JS.Add("js/sax-sel-org.js");
}
<link rel="stylesheet" href="~/css/sax-selectOrganisation.css?@Model.HrefVersion" />
<script type="text/javascript">
sax.selectOrganisation = sax.selectOrganisation || { data: {}, fn: {}, $dlg: {} };
sax.selectOrganisation.dlgTitleSelectOrganisation = '@Localiser.GetJavascriptText("organisation.caption.select.organisation")';
</script>
<div id="dlgSelectOrganisation" class="sax-dialog sax-form">
@* Filter *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmSelectOrganisationFilter", @class = "sax-form", @onSubmit = "return false;" }))
{
<div class="sax-panel-filter">
<div class="sax-content">
<div class="row">
<div class="col-sm-5 sax-label text-left text-sm-right">@Localiser["label.search"]</div>
<div class="col-sm-7"><input type="search" class="sax-input FilterOrganisation" name="Filter.Organisation" autocomplete="off" maxlength="32" /></div>
</div>
<div class="row">
<div class="col center">
<partial name="~/Views/Common/ResultsPaging.cshtml" />
</div>
</div>
</div>
</div>
}
<div class="">
@* Organisations *@
<div class="sax-selection-results Organisations"></div>
</div>
<div class="sax-panel-item-template">
<div class="sax-panel-item Organisation">
<div class="Name"></div>
</div>
</div>
</div>
@@ -0,0 +1,10 @@
@model SaxModel_Admin
@inject SaxLocaliser Localiser
@* Icons. *@
<div class="sax-panel-item-template">
<img src="~/img/icon/tick-64.png" alt="" title="" class="sax-tick" style="max-width:16px;" />
<img src="~/img/icon/sphere-green.svg" alt="Active" title="Active" class="sax-status-atv" style="max-width:16px;" />
<img src="~/img/icon/sphere-orange.svg" alt="Inactive" title="Inactive" class="sax-status-ina" style="max-width:16px;" />
<img src="~/img/icon/sphere-purple.svg" alt="Deleted" title="Deleted" class="sax-status-del" style="max-width:16px;" />
</div>
@@ -0,0 +1,142 @@
@inject SaxLocaliser Localiser
@{
ViewData["Title"] = "Home Page";
}
<script>
sax.msg.noItemsAwaitAct = '@Localiser.GetJavascriptText("home.msg.no.items.awaiting.activation")';
sax.msg.dbSchemaValid = '@Localiser.GetJavascriptText("system.msg.database.schema.valid")';
</script>
<style>
table.sax-item-stats .sax-value
{
min-width: 80px;
text-align: right;
}
table.sax-item-stats tr:hover .sax-value
{
text-decoration: underline;
}
</style>
@* Items Awaiting Activation *@
<div class="sax-panel-info sax-panel-results ApplicationStats">
<div class="sax-header">
<div class="sax-caption">@Localiser["home.caption.application.status"]</div>
</div>
<div class="sax-content">
<div class="sax-panel-messages"></div>
<div class="sax-panel-item-list"></div>
@* Items awaiting activation templates *@
<div class="sax-panel-item-template">
<div class="sax-panel-item sax-item-stats">
<div class="sax-header">
<div class="sax-caption sax-view "></div>
</div>
<div class="sax-content">
<table class="sax-item-stats"></table>
</div>
</div>
</div>
<table>
<tbody class="sax-panel-item-template">
<tr class="sax-item-stat sax-action">
<td class="sax-label"></td>
<td class="sax-value"></td>
</tr>
</tbody>
</table>
</div>
</div>
@* Database Schema form. *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmDatabaseSchema" }))
{
<input type="hidden" name="DatabaseFilter.Instance" class="DatabaseInstance" />
}
<style>
.sax-panel-results .sax-panel-info.DbSchema > .sax-content
{
max-height: auto;
}
.sax-panel-results .sax-panel-info.DbSchema .sax-panel-messages
{
margin-bottom: 8px;
}
.sax-panel-results .sax-panel-info.DbSchema table.sax-item-list thead tr th
{
background-color: #ffc8c7;
}
</style>
@* Database Schema Verification *@
<div class="sax-panel-info sax-panel-results">
<div class="sax-header">
<div class="sax-caption">@Localiser["system.caption.database.schemas"]</div>
</div>
<div class="sax-content">
@* Database Schema - Core *@
<div class="sax-panel-info DbSchema Core">
<div class="sax-header">
<div class="sax-caption">@Localiser["system.caption.database.core"]</div>
</div>
<div class="sax-panel-messages"></div>
</div>
@* Database Schema - Reference *@
<div class="sax-panel-info DbSchema Reference">
<div class="sax-header">
<div class="sax-caption">@Localiser["system.caption.database.reference"]</div>
</div>
<div class="sax-panel-messages"></div>
</div>
@* Database Schema - Support *@
<div class="sax-panel-info DbSchema Support">
<div class="sax-header">
<div class="sax-caption">@Localiser["system.caption.database.support"]</div>
</div>
<div class="sax-panel-messages"></div>
</div>
@* Db Schema templates *@
<div class="sax-panel-item-template">
@* Db Schema table template *@
<div class="sax-panel-item-table DbSchema hidden" style="min-height:48px;max-height:240px;overflow-y:auto;">
<table class="sax-item-list">
<thead>
<tr>
<th class="">@Localiser["label.schema"]</th>
<th class="">@Localiser["label.table"]</th>
<th class="">@Localiser["label.column"]</th>
<th class="">@Localiser["label.index"]</th>
<th class="" style="min-width:50%;">@Localiser["label.comment"]</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
@* Db Schema Item row *@
<table>
<tr class="sax-row-item DbSchemaItem">
<td class=""><div class="SchemaName"></div></td>
<td class=""><div class="TableName"></div></td>
<td class=""><div class="ColumnName"></div></td>
<td class=""><div class="IndexName"></div></td>
<td class=""><div class="Comment"></div></td>
</tr>
</table>
</div>
</div>
</div>
@@ -0,0 +1,117 @@
@model Model_OrganisationAssociations
@inject SaxLocaliser Localiser
@{
/* Organisation Associations - Index */
ViewData["Title"] = "Organisation Associations";
}
<div class="sax-panel OrganisationAssociations">
<script type="text/javascript">
sax.lbl.refresh = '@(Localiser.GetJavascriptText("label.refresh"))';
sax.lbl.add = '@(Localiser.GetJavascriptText("label.add"))';
sax.lbl.create = '@(Localiser.GetJavascriptText("label.create"))';
sax.lbl.edit = '@(Localiser.GetJavascriptText("label.edit"))';
sax.lbl.remove = '@(Localiser.GetJavascriptText("label.remove"))';
</script>
@* Filter Panel *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmAssociationFilter", @class = "sax-form", @onSubmit = "return false;" }))
{
<div class="sax-panel-filter">
@* Header - Page caption, paging controls, actions. *@
<div class="sax-header row">
<div class="col"><div class="sax-caption">@Localiser["caption.organisation.associations"]</div></div>
<div class="fixed row">
<div>
<partial name="~/Views/Common/ResultsPaging.cshtml" />
</div>
<div class="fixed">
@* Burger menu *@
<ul class="nav navbar-nav navbar-dark navbar-right sax-burger">
<li class="dropdown-toggle caret-off">
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="navbar-toggler-icon"></span></a>
<ul class="dropdown-menu dropdown-menu-right sax-dropdown-menu">@* Menu items will be inserted here. *@</ul>
</li>
</ul>
</div>
</div>
</div>
<div class="sax-content">
@* Organisation Association filter - Organisation etc. *@
<div class="row">
<div class="col-sm-3 sax-label text-left text-sm-right">@Localiser["caption.organisation"]</div>
<div class="col-sm-9">
<div class="row">
<div class="col">
@Html.HiddenFor(model => model.Filter.OrganisationId, new { @id = "ifFilterOrganisationId", @class= "OrganisationId" })
<input type="text" id="ifFilterOrganisation" class="sax-input OrganisationName" readonly="readonly" value="@(Model.Filter.OrganisationName)" />
</div>
<div class="fixed"><button id="pbFilterOrganisationSelect" class="sax-button">@Localiser["label.select"]</button></div>
</div>
</div>
</div>
</div>
@* Filter element templates *@
<div class="sax-panel-item-template">
@* Burger dropdown item template - ul is ignored *@
<ul class="sax-dropdown-menu AssociationFilter">
<li class="sax-dropdown-item sax-action"><div class="sax-label">XXX</div></li>
</ul>
</div>
</div>
}
@* Results Panel *@
<div class="sax-panel-results">
<div class="sax-panel-messages"></div>
<div class="sax-panel-item-list"></div>
@* Item templates *@
<div class="sax-panel-item-template">
@* Organisation Association item template *@
<div class="sax-panel-item Association">
<div class="sax-header row">
<div class="col">
@* User name *@
<div class="sax-caption sax-action"><div class="OrganisationName"></div></div>
</div>
<div class="fixed sax-actions">
@* Burger menu *@
<ul class="nav navbar-nav navbar-light navbar-right sax-burger">
<li class="dropdown-toggle caret-off">
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="navbar-toggler-icon"></span></a>
<ul class="dropdown-menu dropdown-menu-right sax-dropdown-menu">@* Menu items will be inserted here. *@</ul>
</li>
</ul>
</div>
</div>
<div class="sax-content">
<div class="row">
<div class="col-sm-4 AssociationLabel"></div>
<div class="col-sm-4 Sport center"></div>
<div class="col-sm-4 Region right"></div>
</div>
<div class="row">
<div class="col-sm-4"></div>
<div class="col-sm-4"><div class=""></div></div>
@* Association status *@
<div class="col-sm-4 sax-note right"><span class="StatusDesc"></span></div>
</div>
</div>
</div>
@* Burger dropdown item template - ul is ignored *@
<ul class="sax-dropdown-menu Association">
<li class="sax-dropdown-item sax-action"><div class="sax-label">...</div></li>
</ul>
</div>
</div>
</div>
@* Organisation Association components *@
<partial name="Panel-Organisation-Association.cshtml" />
@* Select Organisation components *@
<partial name="~/Views/Common/SelectOrganisation.cshtml" />
@@ -0,0 +1,192 @@
@model Model_Organisation
@inject SaxLocaliser Localiser
@{
/* Organisations - Index */
ViewData["Title"] = "Organisations";
}
<div class="sax-panel Organisations">
<script type="text/javascript">
sax.lbl.refresh = '@(Localiser.GetJavascriptText("label.refresh"))';
sax.lbl.create = '@(Localiser.GetJavascriptText("label.create"))';
sax.lbl.edit = '@(Localiser.GetJavascriptText("label.edit"))';
sax.lbl.location = '@(Localiser.GetJavascriptText("label.location"))';
sax.lbl.associations = '@(Localiser.GetJavascriptText("label.associations"))';
sax.lbl.images = '@(Localiser.GetJavascriptText("label.images"))';
sax.lbl.activate = '@(Localiser.GetJavascriptText("label.activate"))';
</script>
<div class="row">
<div class="col-md-5 row">
<div class="col">
@* Filter Panel *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmOrganisationFilter", @class = "sax-form", @onSubmit = "return false;" }))
{
<div class="sax-panel-filter">
@* Header - Page caption, paging controls, actions. *@
<div class="sax-header">
<div class="row">
<div class="col"><div class="sax-caption">@Localiser["caption.organisations"]</div></div>
<div class="fixed row">
<div class="col">
<partial name="~/Views/Common/ResultsPaging.cshtml" />
</div>
<div class="fixed">
@* Burger menu *@
<ul class="nav navbar-nav navbar-dark navbar-right sax-burger">
<li class="dropdown-toggle caret-off">
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="navbar-toggler-icon"></span></a>
<ul class="dropdown-menu dropdown-menu-right sax-dropdown-menu">@* Menu items will be inserted here. *@</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sax-content">
@* Organisation filter - name etc. *@
<div class="row pb4">
<div class="col-sm-5 sax-label text-left text-sm-right">@Localiser["label.search"]</div>
<div class="col-sm-7">
@Html.TextBoxFor(model => model.Filter.Organisation, new { @id = "", @class = "FilterOrganisation", @maxlength = "32" })
</div>
</div>
@* Organisation Category *@
<div class="row pb4">
<div class="col-sm-5 sax-label text-left text-sm-right">@Localiser["label.category"]</div>
<div class="col-sm-7">
@Html.DropDownListFor(model => model.Filter.OrganisationCategoryCode, Model.AdminOrganisationCategoriesForSelect, Localiser["label.any"], new { @id = "", @class = "FilterOrganisationCategory sax-select" })
</div>
</div>
@* Organisation sport *@
<div class="row pb4">
<div class="col-sm-5 sax-label text-left text-sm-right">@Localiser["label.sport"]</div>
<div class="col-sm-7">
<div class="row">
@Html.HiddenFor(model => model.Filter.OrganisationSportId, new { @id = "", @class = "FilterOrganisationSportId" })
<div class="col"><input type="text" class="FilterOrganisationSportCaption sax-input" readonly="readonly" value="@Model.Filter.OrganisationSportName" /> </div>
<div class="fixed row">
<div class="sax-action FilterSportSelect"><img src="~/img/action/search24.png" alt="@(Localiser["label.search"])" title="@(Localiser["label.search"])" /></div>
<div class="sax-action FilterSportClear"><img src="~/img/action/delete24.png" alt="@(Localiser["label.clear"])" title="@(Localiser["label.clear"])" /></div>
</div>
</div>
</div>
</div>
@* Organisation region *@
<div class="row pb4">
<div class="col-sm-5 sax-label text-left text-sm-right">@Localiser["label.region"]</div>
<div class="col-sm-7">
<div class="row">
@Html.HiddenFor(model => model.Filter.OrganisationRegionId, new { @id = "", @class = "FilterOrganisationRegionId" })
<div class="col"><input type="text" class="FilterOrganisationRegionCaption sax-input" readonly="readonly" value="@Model.Filter.OrganisationRegionName" /> </div>
<div class="fixed row">
<div class="sax-action FilterRegionSelect"><img src="~/img/action/search24.png" alt="@(Localiser["label.search"])" title="@(Localiser["label.search"])" /></div>
<div class="sax-action FilterRegionClear"><img src="~/img/action/delete24.png" alt="@(Localiser["label.clear"])" title="@(Localiser["label.clear"])" /></div>
</div>
</div>
</div>
</div>
@* Organisation Status *@
<div class="row pb4">
<div class="col-sm-5 sax-label text-left text-sm-right">@Localiser["label.status"]</div>
<div class="col-sm-7">
@Html.DropDownListFor(model => model.Filter.OrganisationStatusCategoryCode, Model.OrganisationFilterStatusCategoriesForSelect, new { @id = "", @class = "FilterOrganisationStatusCategory sax-select" })
</div>
</div>
</div>
@* Filter element templates *@
<div class="sax-panel-item-template">
@* Burger dropdown item template - ul is ignored *@
<ul class="sax-dropdown-menu OrganisationFilter">
<li class="sax-dropdown-item sax-action"><div class="sax-label">XXX</div></li>
</ul>
</div>
</div>
}
</div>
@* Separate filter from results when alondside each other. *@
<div class="fixed"><div class="d-none d-md-block" style="width:8px;"></div></div>
</div>
<div class="col-md">
@* Results Panel *@
<div class="sax-panel-results">
<div class="sax-panel-messages"></div>
<div class="sax-panel-item-list"></div>
@* element templates *@
<div class="sax-panel-item-template">
@* Organisation item template *@
<div class="sax-panel-item Organisation">
<div class="sax-header row">
<div class="col">
@* Organisation caption *@
<div class="sax-caption"><div class="sax-action sax-item-update OrganisationName">Organisation name</div></div>
</div>
<div class="fixed sax-actions">
@* Burger menu *@
<ul class="nav navbar-nav navbar-light navbar-right sax-burger">
<li class="dropdown-toggle caret-off">
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="navbar-toggler-icon"></span></a>
<ul class="dropdown-menu dropdown-menu-right sax-dropdown-menu">@* Menu items will be inserted here. *@</ul>
</li>
</ul>
</div>
</div>
<div class="sax-content">
<div class="row">
<div class="fixed">
<div style="min-width:48px;"><img alt="" title="" class="OrganisationLogo" style="display:none;max-width:@(Sax.Config.Organisation.Logo.DisplayWidthMax_List + "px");max-height:@(Sax.Config.Organisation.Logo.DisplayHeightMax_List + "px");margin-right:8px;border:1px solid #c0c0c0;border-radius:2px;" /></div>
</div>
<div class="col">
<div class="row">
<div class="col-6 col-sm-4"><div class="OrganisationCategory"></div></div>
<div class="col-6 col-sm-4"><div class="OrganisationType"></div></div>
<div class="col-6 col-sm-4 text-left text-sm-right"><div class="OrganisationRegion"></div></div>
<div class="col-6 col-sm-4"><div class="OrganisationSport"></div></div>
<div class="col-6 col-sm-4"><div class="OrganisationMemberCount sax-action-text">@Localiser["label.members"]:&nbsp;<span class="MemberCount"></span></div></div>
<div class="col-6 col-sm-4 text-left text-sm-right"><div class="StatusDesc sax-note"></div></div>
</div>
</div>
</div>
</div>
</div>
@* Burger dropdown item template - ul is ignored *@
<ul class="sax-dropdown-menu Organisation">
<li class="sax-dropdown-item sax-action"><div class="sax-label">...</div></li>
</ul>
</div>
</div>
</div>
</div>
@* Organisation Id form - used in Ajax calls to identify organisation. *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmOrganisationId", @class = "sax-form" }))
{
@Html.HiddenFor(model => model.OrganisationId, new { @class = "OrganisationId" })
}
@* Organisation dialog and form *@
<partial name="Panel-Organisation-Dialog.cshtml" />
@* Organisation Activation dialog and form *@
<partial name="Panel-Organisation-Activation.cshtml" />
@* Organisation Address dialog, form and script *@
<partial name="Panel-Organisation-Address.cshtml" />
@* Organisation Images dialog, form and script *@
<partial name="Panel-Organisation-Images.cshtml" />
@* Organisation download dialog, form and script *@
<partial name="Panel-Organisation-Download.cshtml" />
@* Organisation upload dialog, form and script *@
<partial name="Panel-Organisation-Upload.cshtml" />
@* Select Item dialog and script *@
<partial name="~/Views/Common/SelectItem.cshtml" />
</div>
@@ -0,0 +1,117 @@
@model Model_OrganisationMembers
@inject SaxLocaliser Localiser
@{
/* Organisation Members - Index */
ViewData["Title"] = "Organisation Members";
}
<div class="sax-panel OrganisationMembers">
<script type="text/javascript">
sax.lbl.refresh = '@(Localiser.GetJavascriptText("label.refresh"))';
sax.lbl.add = '@(Localiser.GetJavascriptText("label.add"))';
sax.lbl.create = '@(Localiser.GetJavascriptText("label.create"))';
sax.lbl.edit = '@(Localiser.GetJavascriptText("label.edit"))';
sax.lbl.remove = '@(Localiser.GetJavascriptText("label.remove"))';
</script>
@* Filter Panel *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmMemberFilter", @class = "sax-form", @onSubmit = "return false;" }))
{
<div class="sax-panel-filter">
@* Header - Page caption, paging controls, actions. *@
<div class="sax-header row">
<div class="col"><div class="sax-caption">@Localiser["caption.organisation.members"]</div></div>
<div class="fixed row">
<div>
<partial name="~/Views/Common/ResultsPaging.cshtml" />
</div>
<div class="fixed">
@* Burger menu *@
<ul class="nav navbar-nav navbar-dark navbar-right sax-burger">
<li class="dropdown-toggle caret-off">
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="navbar-toggler-icon"></span></a>
<ul class="dropdown-menu dropdown-menu-right sax-dropdown-menu">@* Menu items will be inserted here. *@</ul>
</li>
</ul>
</div>
</div>
</div>
<div class="sax-content">
@* Organisation Member filter - Organisation etc. *@
<div class="row">
<div class="col-sm-3 sax-label text-left text-sm-right">@Localiser["caption.organisation"]</div>
<div class="col-sm-9">
<div class="row">
<div class="col">
@Html.HiddenFor(model => model.Filter.OrganisationId, new { @id = "ifFilterOrganisationId" })
<input type="text" id="ifFilterOrganisation" class="sax-input" readonly="readonly" value="@(Model.Filter.OrganisationName)" />
</div>
<div class="fixed"><button id="pbFilterOrganisationSelect" class="sax-button">@Localiser["label.select"]</button></div>
</div>
</div>
</div>
</div>
@* Filter element templates *@
<div class="sax-panel-item-template">
@* Burger dropdown item template - ul is ignored *@
<ul class="sax-dropdown-menu MemberFilter">
<li class="sax-dropdown-item sax-action"><div class="sax-label">XXX</div></li>
</ul>
</div>
</div>
}
@* Results Panel *@
<div class="sax-panel-results">
<div class="sax-panel-messages"></div>
<div class="sax-panel-item-list"></div>
@* element templates *@
<div class="sax-panel-item-template">
@* Organisation Member item template *@
<div class="sax-panel-item Member">
<div class="sax-header row">
<div class="col">
@* User name *@
<div class="sax-caption sax-action"><div class="UserDisplayName"></div></div>
</div>
<div class="fixed sax-actions">
@* Burger menu *@
<ul class="nav navbar-nav navbar-light navbar-right sax-burger">
<li class="dropdown-toggle caret-off">
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="navbar-toggler-icon"></span></a>
<ul class="dropdown-menu dropdown-menu-right sax-dropdown-menu">@* Menu items will be inserted here. *@</ul>
</li>
</ul>
</div>
</div>
<div class="sax-content">
<div class="row">
@* User email address and status (if not active) *@
<div class="col-sm-6"><span class="UserEmailAddress"></span><span class="UserStatus" style="color:#a0a0a0;">&nbsp;[<span class="UserStatusDesc"></span>]</span></div>
@* Role count *@
<div class="col-sm-6 right"><div class="MemberRoleCount">@Localiser["label.roles"]:&nbsp;<span class="RoleCount"></span></div></div>
</div>
<div class="row">
<div class="col-sm-4"></div>
<div class="col-sm-4"><div class=""></div></div>
@* Member status *@
<div class="col-sm-4 sax-note right"><span class="StatusDesc"></span></div>
</div>
</div>
</div>
@* Burger dropdown item template - ul is ignored *@
<ul class="sax-dropdown-menu Member">
<li class="sax-dropdown-item sax-action"><div class="sax-label">...</div></li>
</ul>
</div>
</div>
</div>
<partial name="Panel-Organisation-Member.cshtml" />
<partial name="~/Views/Common/SelectOrganisation.cshtml" />
@@ -0,0 +1,90 @@
@model Model_Organisation
@inject SaxLocaliser Localiser
@{
/* Organisations - Organisation dialog panel */
}
<style type="text/css">
table.OrganisationInfo
{
margin: 4px 8px 4px 16px;
}
table.OrganisationInfo .sax-label, table.OrganisationInfo .sax-value
{
font-size: .9rem;
}
table.OrganisationInfo .sax-label
{
padding-right: 8px;
text-align: right;
color: #808080;
font-weight: bold;
}
table.OrganisationMembers
{
margin: 4px 8px 4px 16px;
}
table.OrganisationMembers td
{
padding: 0 8px;
}
</style>
<script type="text/javascript">
</script>
<div id="dlgOrganisationActivation" class="sax-dialog" title="@Localiser.GetJavascriptText("organisation.caption.organisation.activate")">
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmOrganisationActivation", @class = "sax-form", @onSubmit = "return false;" }))
{
@Html.HiddenFor(model => model.OrganisationId, new { @id = "", @class = "OrganisationId" })
<div class="sax-para">@Localiser["organisation.activate.intro"]</div>
<div class="sax-para">@Localiser["organisation.activate.organisation.header"]</div>
<table class="OrganisationInfo">
<tr class="OrganisationName">
<td class="sax-label">@Localiser["label.name"]</td>
<td class="sax-value "></td>
</tr>
<tr class="OrganisationCategory">
<td class="sax-label">@Localiser["label.category"]</td>
<td class="sax-value"></td>
</tr>
<tr class="OrganisationSport">
<td class="sax-label">@Localiser["label.sport"]</td>
<td class="sax-value"></td>
</tr>
<tr class="OrganisationRegion">
<td class="sax-label">@Localiser["label.region"]</td>
<td class="sax-value"></td>
</tr>
<tr class="OrganisationAddress">
<td class="sax-label">@Localiser["label.address"]</td>
<td class="sax-value"></td>
</tr>
</table>
<div class="MembersAwaitingActivation">
<div>@Localiser["label.members.awaiting.activation"]:</div>
<table class="OrganisationMembers"></table>
<div class="sax-panel-item-template">
<table>
<tr class="sax-item Member">
<td>
<input type="hidden" name="OrganisationMemberIds" class="MemberId" />
<input type="checkbox" class="MemberActivate" checked="checked" />
</td>
<td class="MemberEmail center"></td>
<td class="MemberName"></td>
</tr>
</table>
</div>
</div>
}
</div>
@@ -0,0 +1,41 @@
@model Model_Organisation
@inject SaxLocaliser Localiser
@{
/* Organisations - Organisation Address dialog panel */
// Ensure view is only included once in page.
if (!Model.RegisterView(ViewContext)) return;
// Scripts.
Model.AdditionalFiles_JS.Add("js/sax-org-add.js");
}
<div id="dlgOrganisationAddress" class="sax-dialog" title="@Localiser["caption.organisation.address"]">
<div class="spacer"></div>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmOrganisationAddress", @class = "sax-form", @onSubmit = "return false;" }))
{
@Html.HiddenFor(model => model.OrganisationId, new { @id = "", @class = "OrganisationId" })
@* Organisation name *@
<div class="sax-form-control OrganisationName">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="ifOrganisationName"><span>@Localiser["label.organisation"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
<input type="text" id="ifOrganisationName" class="OrganisationName sax-input" maxlength="@Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.Organisation_Name)" disabled="disabled" />
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Address controls *@
<partial name="~/Views/Common/Controls-ItemAddress.cshtml" />
}
<div class="spacer"></div>
</div>
@@ -0,0 +1,81 @@
@model Model_OrganisationAssociations
@inject SaxLocaliser Localiser
@* Organisation - Associations components *@
@* Organisation Association Id form. *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmAssociationId" }))
{
@Html.HiddenFor(model => model.OrganisationId, new { @id = "", @class = "OrganisationId" })
@Html.HiddenFor(model => model.ItemAssociationId, new { @id = "", @class = "ItemAssociationId" })
}
@* Organisation Association dialog. *@
<div id="dlgOrganisationAssociation" class="sax-dialog" title="@Localiser["caption.organisation.association"]">
<div class="spacer"></div>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmOrganisationAssociation", @class = "sax-form", @onSubmit = "return false;" }))
{
@Html.HiddenFor(model => model.ItemAssociationId, new { @id = "", @class = "ItemAssociationId" })
@Html.HiddenFor(model => model.NewItem, new { @id = "", @class = "NewItem" })
@Html.HiddenFor(model => model.OrganisationId, new { @id = "", @class = "OrganisationId" })
@* Organisation name *@
<div class="sax-form-control OrganisationName">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="ifOrganisationName"><span>@Localiser["label.organisation"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
<input type="text" id="ifOrganisationName" class="OrganisationName sax-input" maxlength="@Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.Organisation_Name)" disabled="disabled" />
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Association Type Option *@
<div class="sax-form-control AssociationTypeOption">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="cbAssociationTypeOption"><span>@Localiser["label.association"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
<select type="text" id="cbAssociationTypeOption" name="Association.TypeOption" class="AssociationTypeOption sax-select"></select>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Associated Organisation *@
<div class="sax-form-control OrganisationIdAssoc">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="ifOrganisationNameAssoc"><span>@Localiser["label.associated.organisation"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control row">
<div class="col">
<input type="hidden" name="OrganisationIdAssoc" class="OrganisationIdAssoc" />
<input type="text" id="ifOrganisationNameAssoc" class="OrganisationNameAssoc sax-input" disabled="disabled" />
</div>
<div class="fixed pl4">
<button type="button" id="pbAssocOrganisationSelect" class="sax-button">@Localiser["label.select"]</button>
</div>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
}
<div class="spacer"></div>
</div>
@@ -0,0 +1,187 @@
@model Model_Organisation
@inject SaxLocaliser Localiser
@{
/* Organisations - Organisation dialog panel */
}
<script type="text/javascript">
sax.dlg.title.createOrganisation = '@Localiser.GetJavascriptText("organisation.caption.organisation.create")';
sax.dlg.title.updateOrganisation = '@Localiser.GetJavascriptText("organisation.caption.organisation.update")';
sax.dlg.title.selectRegion = '@Localiser.GetJavascriptText("label.select.country")';
sax.dlg.title.selectSport = '@Localiser.GetJavascriptText("sport.caption.sport.select")';
</script>
<div id="dlgOrganisation" class="sax-dialog" title="">
<div class="spacer"></div>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmOrganisation", @class = "sax-form", @onSubmit = "return false;" }))
{
@Html.HiddenFor(model => model.OrganisationId, new { @id = "", @class = "OrganisationId" })
@* Organisation name *@
<div class="sax-form-control OrganisationName">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="ifOrganisationName"><span>@Localiser["label.name"]</span>&nbsp;<span class="required">*</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
@Html.TextBoxFor(model => model.OrganisationName, new { @id = "ifOrganisationName", @class = "OrganisationName sax-input", @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.Organisation_Name) })
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-3"></div>
<div class="col-sm row">
<div class="col-sm-6">
@* Organisation category *@
<div class="sax-form-control OrganisationCategory pr4">
<div class="sax-label">
<label for="cbOrganisationCategory"><span>@Localiser["label.category"]</span>&nbsp;<span class="required">*</span></label>
</div>
<div class="sax-control">
@Html.DropDownListFor(model => model.OrganisationCategoryValue, Model.AdminOrganisationCategoriesForSelect, Localiser["label.select"], new { @id = "cbOrganisationCategory", @class = "OrganisationCategory sax-select" })
</div>
<div class="sax-message"></div>
</div>
</div>
<div class="col-sm-6">
@* Organisation type *@
<div class="sax-form-control OrganisationType">
<div class="sax-label">
<label for="cbOrganisationType"><span>@Localiser["label.type"]</span>&nbsp;<span class="required">*</span></label>
</div>
<div class="sax-control">
@Html.DropDownListFor(model => model.OrganisationTypeValue, Model.OrganisationTypesForSelect, Localiser["label.select"], new { @id = "cbOrganisationType", @class = "OrganisationType sax-select" })
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
</div>
@* Organisation sport *@
<div class="sax-form-control OrganisationSportId">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="ifOrganisationSportCaption"><span>@Localiser["label.sport"]</span>&nbsp;<span class="required">(*)</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control row">
@Html.HiddenFor(model => model.OrganisationSportId, new { @id = "ifOrganisationSportId", @class = "OrganisationSportId" })
<div class="col"><input type="text" id="ifOrganisationSportCaption" class="OrganisationSportCaption sax-input" readonly="readonly" /> </div>
<div class="fixed"><div class="sax-action OrganisationSportClear"><img src="~/img/action/delete24.png" alt="@(Localiser["label.clear"])" title="@(Localiser["label.clear"])" /></div></div>
<div class="fixed"><button id="pbSelectSport" class="sax-button" style="min-width:auto;margin-left:4px;padding:4px 6px">@Localiser["label.select"]</button></div>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Organisation primary region *@
<div class="sax-form-control OrganisationRegionIdPrimary">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="ifOrganisationRegionNameCountry"><span>@Localiser["label.region"]</span>&nbsp;<span class="required">*</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control row">
@Html.HiddenFor(model => model.OrganisationRegionIdPrimary, new { @id = "ifOrganisationRegionIdPrimary", @class = "OrganisationRegionIdPrimary" })
<div class="col"><input type="text" id="ifOrganisationRegionNamePrimary" class="OrganisationRegionNamePrimary sax-input" readonly="readonly" /> </div>
<div class="fixed"><button id="pbSelectOrganisationRegionPrimary" class="sax-button" style="min-width:auto;margin-left:4px;padding:4px 6px">@Localiser["label.select"]</button></div>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Organisation About *@
<div class="sax-form-control OrganisationAbout">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="ifOrganisationAbout"><span>@Localiser["label.about"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
@Html.TextAreaFor(model => model.OrganisationAbout, new { @id = "ifOrganisationAbout", @class = "OrganisationAbout sax-input", @rows = 6, @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.Organisation_About) })
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Organisation Facilities *@
<div class="sax-form-control OrganisationFacilities">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="ifOrganisationFacilities"><span>@Localiser["label.facilities"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
@Html.TextAreaFor(model => model.OrganisationFacilities, new { @id = "ifOrganisationFacilities", @class = "OrganisationFacilities sax-input", @rows = 6, @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.Organisation_Facilities) })
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Contact Methods *@
<partial name="..\Common\Controls-ItemContactMethods.cshtml" />
@* Organisation Notes *@
<div class="sax-form-control OrganisationNotes">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="ifOrganisationNotes"><span>@Localiser["label.notes"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
@Html.TextAreaFor(model => model.OrganisationNotes, new { @id = "ifOrganisationNotes", @class = "OrganisationNotes sax-input", @rows = 3, @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.Organisation_Notes) })
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Organisation status *@
<div class="sax-form-control OrganisationStatus">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="cbOrganisationStatus"><span>@Localiser["label.status"]</span>&nbsp;<span class="required">*</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
<select id="cbOrganisationStatus" class="sax-select OrganisationStatus" name="OrganisationStatusCode"></select>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
}
<div class="spacer"></div>
</div>
@@ -0,0 +1,52 @@
@model SaxModel_Admin
@inject SaxLocaliser Localiser
@{
/* Organisations - Organisation Download panel */
// Ensure view is only included once in page.
if (!Model.RegisterView(ViewContext)) return;
// Scripts.
Model.AdditionalFiles_JS.Add("js/sax-org-dnl.js");
}
<style>
</style>
<script type="text/javascript">
sax.lbl.download = '@(Localiser.GetJavascriptText("label.download"))';
sax.dlg.title.downloadOrganisation = '@Localiser.GetJavascriptText("caption.download.organisations")';
</script>
<div id="dlgOrgDownload" class="sax-dialog" title="@(HttpUtility.HtmlAttributeEncode(Localiser.GetText("caption.download.organisations")))">
<div class="spacer4"></div>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmOrgDownload", @class = "sax-form" }))
{
@* Organisation filter. *@
<input type="hidden" name="Filter.Organisation" class="FilterOrganisation" />
<input type="hidden" name="Filter.OrganisationCategoryCode" class="FilterOrganisationCategory" />
<input type="hidden" name="Filter.OrganisationSportId" class="FilterOrganisationSportId" />
<input type="hidden" name="Filter.OrganisationRegionId" class="FilterOrganisationRegionId" />
<input type="hidden" name="Filter.OrganisationStatusCategoryCode" class="FilterOrganisationStatusCategory" />
@* Sheet name or number *@
<div class="sax-form-control Options">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="chkIncludeId"><span>@Localiser["label.options"]</span>&nbsp;<span class="required hidden">*</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
<input type="checkbox" id="chkIncludeId" name="IncludeId" class="IncludeId" />&nbsp;<span class="" onclick="$('#chkIncludeId').click()">@Localiser["label.include.id"]</span>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
}
<div class="spacer4"></div>
</div>
@@ -0,0 +1,131 @@
@model Model_Organisation
@inject SaxLocaliser Localiser
@{
/* Organisations - Organisation images dialog panel */
// Ensure view is only included once in page.
if (!Model.RegisterView(ViewContext)) return;
// Scripts.
Model.AdditionalFiles_JS.Add("js/sax-org-img.js");
// Dynamic style values (to avoid build warning).
String maxImageWidth = Sax.Config.Organisation.Logo.DisplayWidthMax_Item + "px";
String maxImageHeight = Sax.Config.Organisation.Logo.DisplayHeightMax_Item + "px";
}
<style>
#dlgOrganisationImages .sax-panel-drop.OrganisationLogoImageDrop
{
padding: 4px 8px;
border: 1px solid #808080;
border-radius: 4px;
}
#dlgOrganisationImages .sax-panel-drop.OrganisationLogoImageDrop img
{
display: none;
max-width: @maxImageWidth;
max-height: @maxImageHeight;
margin-right: 8px;
border: 1px solid #b0b0b080;
border-radius: 4px;
}
#dlgOrganisationImages .sax-panel-drop.OrganisationLogoImageDrop *
{
/*pointer-events: none;*/
}
#dlgOrganisationImages .sax-panel-drop.OrganisationLogoImageDrop.sax-file-drag
{
background-color: #c0fff0;
border-color: darkgreen;
}
</style>
<script type="text/javascript">
sax.msg.uploadImageSingle = '@Localiser.GetJavascriptText("msg.upload.image.single")';
sax.msg.uploadFileSizeMax = '@Localiser.GetJavascriptText("msg.upload.file.size.max","{0}")';
sax.msg.uploadFileTypeInvalid = '@Localiser.GetJavascriptText("msg.upload.file.type.invalid","{0}")';
sax.msg.uploadingFile = '@Localiser.GetJavascriptText("msg.upload.file.uploading","{0}")';
sax.dlg.title.imageUpload = '@Localiser.GetJavascriptText("caption.image.upload")';
sax.msg.uploadFileSelect = '@Localiser.GetJavascriptText("msg.upload.file.select")';
</script>
<div id="dlgOrganisationImages" class="sax-dialog" title="@Localiser["caption.organisation.images"]">
<div class="spacer"></div>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmOrganisationImages", @class = "sax-form", @onSubmit = "return false;" }))
{
@Html.HiddenFor(model => model.OrganisationId, new { @id = "", @class = "OrganisationId" })
@* Organisation name *@
<div class="sax-form-control OrganisationName">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="ifOrganisationName"><span>@Localiser["label.organisation"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
<input type="text" id="ifOrganisationName" class="OrganisationName sax-input" maxlength="@Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.Organisation_Name)" disabled="disabled" />
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Organisation Logo *@
<div class="sax-form-control OrganisationLogoImage">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label><span>@Localiser["label.logo"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
<div class="OrganisationLogoImageDrop sax-panel-drop row">
<div class="fixed">
<div class=""><img src="" class="sax-contact-image OrganisationLogo" alt="" title="" /></div>
</div>
<div class="col">
@Localiser["msg.drag.image.here"]
<div class="DropMessage"></div>
<div class="UploadMessage"></div>
<div class="spacer4"></div>
@Localiser["label.alternatively"]:&nbsp;
<button class="SelectOrgLogoImage sax-button" style="min-width:auto;margin-left:4px;padding:4px 6px;z-index:999;">@Localiser["label.upload"]</button>
</div>
<div class="fixed">
<img id="" class="ImageUploadProgress" src="~/img/animated/progress-basketball-32.gif" style="display:none;margin:8px 4px;" />
</div>
</div>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
}
<div class="spacer"></div>
</div>
<div id="dlgSelectOrgLogoImage" class="sax-dialog" title="@Localiser.GetJavascriptText("caption.image.upload")">
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmSelectOrgLogoImage", @class = "sax-form", @onSubmit = "return false;" }))
{
<div class="spacer4"></div>
<div class="sax-form-control AccountOrgLogoImage">
<div class="row">
<div class="fixed"><div style="padding:0 12px;">@Localiser["label.image"]</div></div>
<div class="col"><input type="file" name="" class="OrganisationLogoImage fullwidth" style="" /></div>
</div>
<div class="sax-message"></div>
</div>
<div class="spacer2"></div>
<div class="row">
<div class="col"><div class="UploadMessage"></div></div>
<div class="fixed"><img id="" class="ImageUploadProgress" src="~/img/animated/progress-basketball-32.gif" style="display:none;margin:8px 4px;" /></div>
</div>
<div class="spacer2"></div>
}
</div>
@@ -0,0 +1,107 @@
@model Model_OrganisationMembers
@inject SaxLocaliser Localiser
@{
/* Organisations - Organisation dialog panel */
}
<script type="text/javascript">
sax.dlg.title.selectOrganisation = '@Localiser.GetJavascriptText("organisation.caption.select.organisation")';
sax.dlg.title.createMember = '@Localiser.GetJavascriptText("caption.member.create")';
sax.dlg.title.updateMember = '@Localiser.GetJavascriptText("caption.member.update")';
sax.dlg.title.removeMember = '@Localiser.GetJavascriptText("caption.member.remove")';
sax.dlg.title.selectMemberRoles = '@Localiser.GetJavascriptText("organisation.caption.select.member.roles")';
sax.data.userRoleCodeDelim = '@Model.MemberRoleCodeDelim';
</script>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmMemberId" }))
{
@Html.HiddenFor(model => model.OrganisationId, new { @id = "", @class = "OrganisationId" })
@Html.HiddenFor(model => model.UserOrganisationId, new { @id = "", @class = "UserOrganisationId" })
}
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmUserEmail" }))
{
<input type="hidden" id="" class="UserEmailAddress" name="UserEmailAddress" />
}
<div id="dlgMember" class="sax-dialog" title="">
<div class="spacer"></div>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmMember", @class = "sax-form", @onSubmit = "return false;" }))
{
@Html.HiddenFor(model => model.UserOrganisationId, new { @id = "", @class = "UserOrganisationId" })
@Html.HiddenFor(model => model.MemberOrganisationId, new { @id = "", @class = "MemberOrganisationId" })
@* User email *@
<div class="sax-form-control UserEmailAddress">
<div class="row">
<div class="col-sm-4">
<div class="sax-label">
<label for="ifMemberUserEmailAddress"><span>@Localiser["label.email.address"]</span>&nbsp;<span class="required">*</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
@Html.TextBoxFor(model => model.MemberUserEmailAddress, new { @id = "ifMemberUserEmailAddress", @class = "MemberUserEmailAddress sax-input", @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress) })
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* User email *@
<div class="sax-form-control UserName">
<div class="row">
<div class="col-sm-4">
<div class="sax-label">
<label for="ifMemberUserName"><span>@Localiser["label.name"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
<input type="text" id="ifMemberUserName" class="MemberUserName sax-input" readonly="readonly" />
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Member roles *@
<div class="sax-form-control MemberRoleCodes">
<div class="row">
<div class="col-sm-4">
<div class="sax-label">
<label for="ifMemberRoles"><span>@Localiser["label.roles"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control row">
@Html.HiddenFor(model => model.MemberRoleCodes, new { @id = "ifMemberRoleCodes", @class = "MemberRoleCodes sax-input" })
<div class="col"><textarea id="ifMemberRoles" class="MemberRoles sax-input" rows="6" readonly="readonly"></textarea></div>
<div class="fixed"><button id="pbMemberRolesSelect" class="sax-button" style="min-width:auto;margin-left:4px;padding:4px 6px">@Localiser["label.select"]</button></div>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Member status *@
<div class="sax-form-control MemberStatus">
<div class="row">
<div class="col-sm-4">
<div class="sax-label">
<label for="cbMemberStatus"><span>@Localiser["label.status"]</span>&nbsp;<span class="required">*</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
<select id="cbMemberStatus" class="sax-select MemberStatus" name="MemberStatusCode"></select>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
}
<div class="spacer"></div>
</div>
<partial name="~/Views/Common/SelectCode.cshtml" />
@@ -0,0 +1,119 @@
@model SaxModel_Admin
@inject SaxLocaliser Localiser
@{
/* Organisations - Organisation Upload panel */
// Ensure view is only included once in page.
if (!Model.RegisterView(ViewContext)) return;
// Scripts.
Model.AdditionalFiles_JS.Add("js/sax-org-upl.js");
}
<style>
#dlgOrgUpload .sax-panel-drop.OrgDataFileDrop
{
min-height:240px;
padding: 4px 8px;
border: 1px solid #f0f0f0;
border-radius: 4px;
}
#dlgOrgUpload .sax-panel-drop.OrgDataFileDrop.sax-file-drag
{
background-color: #f0fffc;
border-color: darkgreen;
}
</style>
<script type="text/javascript">
sax.lbl.upload = '@(Localiser.GetJavascriptText("label.upload"))';
sax.lbl.download = '@(Localiser.GetJavascriptText("label.download"))';
sax.dlg.title.uploadOrganisation = '@Localiser.GetJavascriptText("caption.upload.organisations")';
</script>
<div id="dlgOrgUpload" class="sax-dialog" title="@(HttpUtility.HtmlAttributeEncode(Localiser.GetText("caption.upload.organisations")))">
<div class="spacer4"></div>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmOrgUpload", @class = "sax-form", @enctype = "multipart/form-data", @onSubmit = "return false;" }))
{
<div class="sax-panel-drop OrgDataFileDrop">
<div class="spacer2"></div>
<div class="sax-note">@Localiser["msg.drop.organisation.data.file.here"]</div>
<div class="spacer4"></div>
@* Organisation data file *@
<div class="sax-form-control OrganisationDataFile">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="ifOrganisationName"><span>@Localiser["label.data.file"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
<input type="file" name="OrganisationDataFile" class="OrganisationDataFile fullwidth" style="" />
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Sheet name or number *@
<div class="sax-form-control SheetNameOrNumber">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="ifSheetNameOrNumber"><span>@Localiser["label.sheet.name.or.number"]</span>&nbsp;<span class="required">*</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
<input type="text" id="ifSheetNameOrNumber" name="SheetNameOrNumber" class="SheetNameOrNumber sax-input" value="1" maxlength="31" />
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Header row *@
<div class="sax-form-control HeaderRow">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="ifHeaderRow"><span>@Localiser["label.header.row"]</span>&nbsp;<span class="required">*</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
<input type="text" id="ifHeaderRow" name="HeaderRow" class="HeaderRow sax-input" value="1" maxlength="2" />
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* First data row *@
<div class="sax-form-control FirstDataRow">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="ifFirstDataRow"><span>@Localiser["label.first.data.row"]</span>&nbsp;<span class="required">*</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
<input type="text" id="ifFirstDataRow" name="FirstDataRow" class="FirstDataRow sax-input" value="2" maxlength="2" />
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
</div>
}
<div class="spacer4"></div>
</div>
@@ -0,0 +1,6 @@
@{
ViewData["Title"] = "Privacy Policy";
}
<h1>@ViewData["Title"]</h1>
<p>Use this page to detail your site's privacy policy.</p>
@@ -0,0 +1,73 @@
@model Model_ReferenceBaseball
@inject SaxLocaliser Localiser
@{
/* Reference - Baseball - Index */
ViewData["Title"] = "Reference - Baseball";
}
<div class="sax-panel Baseball">
<style type="text/css">
.BaseballStats .GroupCaption
{
margin-top: 4px;
margin-bottom: 4px;
font-weight: 600;
text-align: center;
border-bottom: 1px solid slategray;
}
.BaseballStats .StatCaption
{
color: slategray;
}
</style>
<div class="sax-panel-filter">
<div class="sax-header row">
<div class="col"><div class="sax-caption">@Localiser["caption.reference.baseball"]</div></div>
<div class="fixed row">
<div class="sax-action sax-results-refresh"><img src="~/img/action/refresh24.png" alt="@(Localiser["label.refresh"])" title="@(Localiser["label.refresh"])" /></div>
</div>
</div>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmRefBaseballFilter", @class = "sax-form", @onSubmit = "return false;" }))
{
@*
<div class="sax-content">
<div class="row">
<div class="col-sm-5 col-md-3 sax-label text-left text-sm-right">@Localiser["label.options"]</div>
<div class="col-sm-7 col-md-3 mb-sm-1 mb-md-0">
</div>
</div>
</div>
*@
}
</div>
@* Reference - Baseball - Stats *@
<div class="sax-panel-info sax-panel-results BaseballStats">
<div class="sax-header">
<div class="sax-caption">@Localiser["label.statictics"]</div>
</div>
<div class="sax-content">
<div class="sax-panel-messages"></div>
<div class="sax-panel-item-list row"></div>
</div>
<div class="sax-panel-item-template">
<div class="BaseballStatGroup col-sm-12">
<div class="GroupCaption"></div>
</div>
<div class="BaseballStat col-sm-6">
<div class="row">
<div class="col-8 text-right pr-2"><div class="StatCaption"></div></div>
<div class="col-4"><div class="StatValue"></div></div>
</div>
</div>
</div>
</div>
@* Templates. *@
<partial name="~/Views/Common/Template-Icons.cshtml" />
</div>
@@ -0,0 +1,291 @@
@model Model_ReferenceGolf
@inject SaxLocaliser Localiser
@{
/* Reference - Golf - Index */
ViewData["Title"] = "Reference - Golf";
}
<div class="sax-panel Golf">
<style type="text/css">
.GolfStats .GroupCaption
{
margin-top: 4px;
margin-bottom: 4px;
font-weight: 600;
text-align: center;
border-bottom: 1px solid slategray;
}
.GolfStats .StatCaption
{
color: slategray;
}
</style>
<div class="sax-panel-filter">
<div class="sax-header row">
<div class="col"><div class="sax-caption">@Localiser["caption.reference.golf"]</div></div>
<div class="fixed row">
<div class="sax-action sax-results-refresh"><img src="~/img/action/refresh24.png" alt="@(Localiser["label.refresh"])" title="@(Localiser["label.refresh"])" /></div>
</div>
</div>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmRefGolfFilter", @class = "sax-form", @onSubmit = "return false;" }))
{
@Html.HiddenFor(model => model.Filter.CountrySearch, new { @class = "FilterCountrySearch" })
@Html.HiddenFor(model => model.Filter.CountryId, new { @class = "FilterCountryId" })
@Html.HiddenFor(model => model.Filter.ProvinceSearch, new { @class = "FilterProvinceSearch" })
@Html.HiddenFor(model => model.Filter.ProvinceId, new { @class = "FilterProvinceId" })
@Html.HiddenFor(model => model.Filter.CourseSearch, new { @class = "FilterCourseSearch" })
@Html.HiddenFor(model => model.Filter.CourseId, new { @class = "FilterCourseId" })
@*
<div class="sax-content">
<div class="row">
<div class="col-sm-5 col-md-3 sax-label text-left text-sm-right">@Localiser["label.options"]</div>
<div class="col-sm-7 col-md-3 mb-sm-1 mb-md-0">
</div>
</div>
</div>
*@
}
</div>
@* Reference - Golf - Stats *@
<div class="sax-panel-info sax-panel-results GolfStats">
<div class="sax-header">
<div class="sax-caption">@Localiser["label.statictics"]</div>
</div>
<div class="sax-content">
<div class="sax-panel-messages"></div>
<div class="sax-panel-item-list row"></div>
</div>
<div class="sax-panel-item-template">
<div class="GolfStatGroup col-sm-12">
<div class="GroupCaption"></div>
</div>
<div class="GolfStat col-sm-6">
<div class="row">
<div class="col-8 text-right pr-2"><div class="StatCaption"></div></div>
<div class="col-4"><div class="StatValue"></div></div>
</div>
</div>
</div>
</div>
@* Reference - Golf - Countries *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmCountries", @class = "sax-form", @onSubmit = "return false;" }))
{
<div class="sax-panel-info sax-panel-results Countries">
<div class="sax-header">
<div class="row">
<div class="col left">
<span class="sax-label">@Localiser["label.search"]</span>
<span><input type="search" name="Filter.CountrySearch" class="FilterCountrySearch" maxlength="16" style="width:33%;" /></span>
</div>
<div class="fixed"><div class="sax-caption">@Localiser["label.countries"]</div></div>
<div class="col"></div>
</div>
</div>
<div class="sax-panel-messages"></div>
<div style="min-height:48px;max-height:240px;overflow-y:auto;">
<table class="sax-item-list">
<thead>
<tr>
<th class="center">@Localiser["label.code"]</th>
<th class="">@Localiser["label.name"]</th>
<th class="center">@Localiser["label.priority"]</th>
<th class="center">@Localiser["label.provinces"]</th>
<th class="center">@Localiser["label.clubs"]</th>
<th class="center">@Localiser["label.clubs"]%</th>
<th class="center">@Localiser["label.status"]</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
<div class="sax-panel-item-template">
<table>
<tr class="sax-item GolfCountry">
<td class="center"><div class="CountryCode"></div></td>
<td class=""><div class="CountryName"></div></td>
<td class="center"><div class="CountryPriority"></div></td>
<td class="center"><div class="CountryProvinces"></div></td>
<td class="center"><div class="CountryClubs"></div></td>
<td class="center"><div class="CountryClubsPercent"></div></td>
<td class="center"><div class="CountryStatus"></div></td>
</tr>
</table>
</div>
</div>
}
@* Reference - Golf - Provinces *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmProvinces", @class = "sax-form", @onSubmit = "return false;" }))
{
@Html.HiddenFor(Model => Model.Filter.CountryId, new { @class = "FilterCountryId" })
<div class="sax-panel-info Provinces">
<div class="sax-header">
<div class="row">
<div class="col left">
<span class="sax-label">@Localiser["label.search"]</span>
<span><input type="search" name="Filter.ProvinceSearch" class="FilterProvinceSearch" maxlength="16" style="width:33%;" /></span>
</div>
<div class="fixed"><div class="sax-caption">@Localiser["label.provinces"]</div></div>
<div class="col"></div>
</div>
</div>
<div class="sax-panel-messages"></div>
<div style="min-height:48px;max-height:240px;overflow-y:auto;">
<table class="sax-item-list">
<thead>
<tr>
<th class="center">@Localiser["label.code"]</th>
<th class="">@Localiser["label.name"]</th>
<th class="center">@Localiser["label.priority"]</th>
<th class="center">@Localiser["label.clubs"]</th>
<th class="center">@Localiser["label.courses"]</th>
<th class="center">@Localiser["label.markers"]</th>
<th class="center">@Localiser["label.status"]</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
<div class="sax-panel-item-template">
<table>
<tr class="sax-item GolfProvince">
<td class="center"><div class="ProvinceCode"></div></td>
<td class=""><div class="ProvinceName"></div></td>
<td class="center"><div class="ProvincePriority"></div></td>
<td class="center"><div class="ProvinceClubs"></div></td>
<td class="center"><div class="ProvinceCourses"></div></td>
<td class="center"><div class="ProvinceMarkers"></div></td>
<td class="center"><div class="ProvinceStatus"></div></td>
</tr>
</table>
</div>
</div>
}
@* Reference - Golf - Courses *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmCourses", @class = "sax-form", @onSubmit = "return false;" }))
{
@Html.HiddenFor(Model => Model.Filter.ProvinceId, new { @class = "FilterProvinceId" })
<div class="sax-panel-info Courses">
<div class="sax-header">
<div class="row">
<div class="col left">
<span class="sax-label">@Localiser["label.search"]</span>
<span><input type="search" name="Filter.CourseSearch" class="FilterCourseSearch" maxlength="16" style="width:33%;" /></span>
</div>
<div class="fixed"><div class="sax-caption">@Localiser["label.courses"]</div></div>
<div class="col right sax-actions">
@* Burger menu *@
<ul class="nav navbar-nav navbar-light navbar-right sax-burger">
<li class="dropdown-toggle caret-off">
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="navbar-toggler-icon"></span></a>
<ul class="dropdown-menu dropdown-menu-right sax-dropdown-menu">
@* *@
</ul>
</li>
</ul>
</div>
</div>
</div>
<div class="sax-panel-messages"></div>
<div style="min-height:48px;max-height:240px;overflow-y:auto;">
<table class="sax-item-list">
<thead>
<tr>
<th class="center">@Localiser["label.id"]</th>
<th class="">@Localiser["label.caption"]</th>
<th class="">@Localiser["label.location"]</th>
<th class="center">@Localiser["label.priority"]</th>
<th class="center">@Localiser["label.markers"]</th>
<th class="center">@Localiser["label.status"]</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
<div class="sax-panel-item-template">
@* Course template - table is ignored. *@
<table>
<tr class="sax-item GolfCourse">
<td class="center"><div class="CourseId"></div></td>
<td class=""><div class="CourseCaption"></div></td>
<td class=""><div class="CourseLocation"></div></td>
<td class="center"><div class="CoursePriority"></div></td>
<td class="center"><div class="CourseMarkers"></div></td>
<td class="center"><div class="CourseStatus"></div></td>
</tr>
</table>
@* Burger dropdown item template - ul is ignored *@
<ul class="sax-dropdown-menu Courses">
<li class="sax-dropdown-item sax-action"><div class="sax-label">...</div></li>
</ul>
</div>
</div>
}
@* Reference - Golf - Markers *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmMarkers", @class = "sax-form", @onSubmit = "return false;" }))
{
@Html.HiddenFor(Model => Model.Filter.CourseId, new { @class = "FilterCourseId" })
@Html.HiddenFor(Model => Model.Filter.MarkerHoles, new { @class = "FilterMarkerHoles" })
@Html.HiddenFor(Model => Model.Filter.MarkerGender, new { @class = "FilterMarkerGender" })
<div class="sax-panel-info Markers">
<div class="sax-header">
<div class="row">
<div class="col left">
<span class="sax-label">@Localiser["label.search"]</span>
<span><input type="search" name="Filter.MarkerSearch" class="FilterMarkerSearch" maxlength="16" style="width:33%;" /></span>
</div>
<div class="fixed"><div class="sax-caption">@Localiser["label.markers"]</div></div>
<div class="col"></div>
</div>
</div>
<div class="sax-panel-messages"></div>
<div style="min-height:48px;max-height:240px;overflow-y:auto;">
<table class="sax-item-list">
<thead>
<tr>
<th class="pl-2">@Localiser["label.caption"]</th>
<th class="center">@Localiser["label.holes"]</th>
<th class="center">@Localiser["label.tee"]</th>
<th class="center">@Localiser["label.gender"]</th>
<th class="center">@Localiser["label.slope"]</th>
<th class="center">@Localiser["label.par"]</th>
<th class="center">@Localiser["label.course"]</th>
<th class="center">@Localiser["label.bogey"]</th>
<th class="center">@Localiser["label.length"]</th>
<th class="center">@Localiser["label.status"]</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
<div class="sax-panel-item-template">
<table>
<tr class="sax-item GolfMarker">
<td class="pl-2"><div class="MarkerCaption"></div></td>
<td class="center"><div class="MarkerHoles"></div></td>
<td class="center"><div class="MarkerTee"></div></td>
<td class="center"><div class="MarkerGender"></div></td>
<td class="center"><div class="MarkerSlope"></div></td>
<td class="center"><div class="MarkerPar"></div></td>
<td class="center"><div class="MarkerCourse"></div></td>
<td class="center"><div class="MarkerBogey"></div></td>
<td class="center"><div class="MarkerLength"></div></td>
<td class="center"><div class="MarkerStatus"></div></td>
</tr>
</table>
</div>
</div>
}
@* Templates. *@
<partial name="~/Views/Common/Template-Icons.cshtml" />
</div>
@@ -0,0 +1,69 @@
@model Model_Region
@inject SaxLocaliser Localiser
@{
/* Regions - Index */
ViewData["Title"] = "Regions";
}
<div class="sax-panel Regions">
<div class="sax-panel-filter">
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmRegionFilter", @class = "sax-form", @onSubmit = "return false;" }))
{
<div class="sax-header row">
<div class="col"><div class="sax-caption">@Localiser["region.caption.regions"]</div></div>
<div class="fixed row">
<div>
<partial name="~/Views/Common/ResultsPaging.cshtml" />
</div>
<div class="sax-action sax-results-refresh"><img src="~/img/action/refresh24.png" alt="@(Localiser["label.refresh"])" title="@(Localiser["label.refresh"])" /></div>
<div class="sax-action sax-item-create"><img src="~/img/action/add24.png" alt="@(Localiser["label.create"])" title="@(Localiser["label.create"])" /></div>
</div>
</div>
<div class="sax-content">
<div class="row">
<div class="col-sm-6 row">
<div class="col-sm-5 sax-label text-left text-sm-right">@Localiser["label.type"]</div>
<div class="col-sm-7">@Html.DropDownListFor(model => model.Filter.RegionTypeCode, Model.RegionTypesForSelect, "", new { @id = "cbFilterRegionType", @class = "FilterRegionType" })</div>
</div>
<div class="col-sm-6 row">
<div class="col-sm-5 sax-label text-left text-sm-right">@Localiser["label.search"]</div>
<div class="col-sm-7">@Html.TextBoxFor(model => model.Filter.Region, new { @id = "ifFilterRegion", @class = "FilterRegion", @autocomplete = "off", @maxlength = "32" })</div>
</div>
</div>
</div>
}
</div>
<div class="sax-panel-results">
<div class="sax-panel-messages"></div>
<div class="sax-panel-item-list"></div>
<div class="sax-panel-item-template">
<div class="sax-panel-item Region">
<div class="sax-header row">
<div class="col">
<div class="sax-caption"><div class="sax-action"><span class="RegionName"></span> <span class="RegionCountryIso2Code"></span></div></div>
</div>
<div class="fixed sax-actions">
<div class="sax-action sax-item-update"><img src="~/img/action/edit24.png" alt="@(Localiser["label.update"])" title="@(Localiser["label.update"])" /></div>
</div>
</div>
<div class="sax-content">
<div class="row">
<div class="col-sm-4"><div class="RegionTypeDesc"></div></div>
<div class="col-sm-4"><div class="RegionParentName"></div></div>
<div class="col-sm-4 right"><div class="sax-note RegionStatusDesc"></div></div>
</div>
<div class="row">
<div class="col-sm-4"></div>
<div class="col-sm-4"><div class=""></div></div>
</div>
</div>
</div>
</div>
</div>
</div>
<partial name="Panel-RegionDialog.cshtml" />
@@ -0,0 +1,82 @@
@model Model_Region
@inject SaxLocaliser Localiser
@{
/* Region form dialog panel */
}
<script type="text/javascript">
sax.dlg.title.createRegion = '@Localiser.GetJavascriptText("region.caption.region.create")';
sax.dlg.title.updateRegion = '@Localiser.GetJavascriptText("region.caption.region.update")';
</script>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmRegionId", @class = "sax-form" }))
{
@Html.HiddenFor(model => model.RegionId, new { @id = "", @class = "RegionId" })
}
<div id="dlgRegion" class="sax-dialog" title="">
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmRegion", @class = "sax-form", @onSubmit = "return false;" }))
{
@Html.HiddenFor(model => model.RegionId, new { @id = "", @class = "RegionId" })
@* Region type *@
<div class="sax-form-control RegionTypeCode">
<div class="sax-label">
<label for="cbRegionType"><span><span class="required">*</span> @Localiser["label.type"]</span></label>
</div>
<div class="sax-control">
@Html.DropDownListFor(model => model.RegionTypeCode, Model.RegionTypesForSelect, Localiser["label.select"], new { @id = "cbRegionType", @class = "RegionType sax-select" })
</div>
<div class="sax-message"></div>
</div>
@* Country ISO2 code *@
<div class="sax-form-control RegionIso2Code">
<div class="sax-label">
<label for="ifRegionIso2Code"><span><span class="required">*</span> @Localiser["label.iso2.code"]</span></label>
</div>
<div class="sax-control">
@Html.TextBoxFor(model => model.RegionCountryIso2Code, new { @id = "ifRegionCountryIso2Code", @class = "RegionCountryIso2Code sax-input", @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.Region_CountryIso2Code) })
</div>
<div class="sax-message"></div>
</div>
@* Region name *@
<div class="sax-form-control RegionName">
<div class="sax-label">
<label for="ifRegionName"><span><span class="required">*</span> @Localiser["label.name"]</span></label>
</div>
<div class="sax-control">
@Html.TextBoxFor(model => model.RegionName, new { @id = "ifRegionName", @class = "RegionName sax-input", @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.Region_Name) })
</div>
<div class="sax-message"></div>
</div>
@* Parent Region *@
<div class="sax-form-control RegionIdParent">
<div class="sax-label">
<label for="ifParentRegion"><span><span class="required">*</span> @Localiser["label.parent"]</span></label>
</div>
<div class="sax-control row">
@Html.HiddenFor(model => model.RegionIdParent, new { @id = "ifRegionIdParent", @class = "RegionIdParent" })
<div class="col"><input type="text" id="ifParentRegion" class="ParentRegion sax-input" readonly="readonly" ondblclick="sax.selectParentRegion()" /> </div>
<div class="fixed"><button id="pbSelectParentRegion" class="sax-button" style="min-width:auto;margin-left:4px;padding:4px 6px" onclick="sax.selectParentRegion()">@Localiser["label.select"]</button></div>
</div>
<div class="sax-message"></div>
</div>
@* Region status *@
<div class="sax-form-control RegionStatus">
<div class="sax-label">
<label for="cbRegionStatus"><span><span class="required">*</span> @Localiser["label.status"]</span></label>
</div>
<div class="sax-control">
<select id="cbRegionStatus" class="sax-select RegionStatus" name="RegionStatusCode"></select>
</div>
<div class="sax-message"></div>
</div>
}
</div>
<partial name="~/Views/Common/SelectItem.cshtml" />
@@ -0,0 +1,66 @@
@model Model_Security
@inject SaxLocaliser Localiser
@{
ViewData["Title"] = "Change Password";
}
<div class="">
<div class="sax-panel-form security">
<div class="sax-header"><div class="sax-caption">@Localiser["security.caption.change.password"]</div></div>
<div class="sax-content">
<div class="spacer4"></div>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmChangePassword", @class = "sax-form", @onsubmit = "return false;" }))
{
@if (!Model.RequestPasswordMode)
{
/* Current password - required when setting password within user session. */
<div class="sax-form-control PasswordCurrent">
<div class="sax-label"><label for="ifPasswordCurrent"><span><span class="required">*</span> @Localiser["label.password.current"]</span></label></div>
<div class="sax-control">
@Html.PasswordFor(model => model.PasswordCurrent, new { @id = "ifPasswordCurrent", @class = "sax-input", @maxlength = Model.PasswordMaxLength })
</div>
<div class="sax-message"></div>
</div>
}
else
{
/* 'Request Password' encrypted parameters from email link. */
@Html.HiddenFor(model => model.rpe, new { @id = "ifRpe" });
}
<div class="spacer4"></div>
<div class="sax-form-control Password">
<div class="sax-label"><label for="ifPassword"><span><span class="required">*</span> @Localiser["label.password"]</span></label></div>
<div class="sax-control">
@Html.PasswordFor(model => model.Password, new { @id = "ifPassword", @class = "sax-input", @maxlength = Model.PasswordMaxLength })
</div>
<div class="row">
<div class="col-auto sax-label-text pt4">@Localiser["label.strength"]&nbsp;</div>
<div id="" class="col-auto"><div id="prgPasswordStrength" class="col-auto"></div></div>
</div>
<div class="sax-message"></div>
</div>
<div class="sax-form-control PasswordConfirm">
<div class="sax-label"><label for="ifPasswordConfirm"><span><span class="required">*</span> @Localiser["label.password.confirm"]</span></label></div>
<div class="sax-control">
@Html.PasswordFor(model => model.PasswordConfirm, new { @id = "ifPasswordConfirm", @class = "sax-input", @maxlength = Model.PasswordMaxLength })
</div>
<div class="sax-message"></div>
</div>
<div class="spacer4"></div>
<div class="">
<div id="pbChangePassword" class="sax-button-action fullwidth pointer" style="margin:16px 0;">@Localiser["security.caption.change.password"]</div>
</div>
}
</div>
</div>
</div>
@@ -0,0 +1,37 @@
@model Model_Security
@inject SaxLocaliser Localiser
@{
ViewData["Title"] = "Request Password";
}
<div class="">
<div class="sax-panel-form security">
<div class="sax-header"><div class="sax-caption">@Localiser["security.caption.request.password"]</div></div>
<div class="sax-content">
<div class="spacer4"></div>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmRequestPassword", @class = "sax-form", @onsubmit = "return false;" }))
{
<div class="sax-form-control EmailAddress">
<div class="sax-label">
<label for="ifEmailAddress"><span><span class="required">*</span> @Localiser["label.email.address"]</span></label>
</div>
<div class="sax-control">
@Html.TextBoxFor(model => model.EmailAddress, new { @id = "ifEmailAddress", @class = "sax-input lower", @maxlength = "128" })
</div>
<div class="sax-message"></div>
</div>
<div class="spacer4"></div>
<div class="">
<div id="pbRequestPassword" class="sax-button-action fullwidth pointer" style="margin:16px 0;">@Localiser["security.caption.request.password"]</div>
</div>
}
</div>
</div>
</div>
@@ -0,0 +1,62 @@
@model Model_Security
@inject SaxLocaliser Localiser
@{
ViewData["Title"] = "Signin";
}
<div class="">
<div class="sax-panel-form security">
<div class="sax-header"><div class="sax-caption">@Localiser["security.caption.signin"]</div></div>
<div class="sax-content">
<div class="spacer4"></div>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmSignIn", @class = "sax-form", @onsubmit = "return false;" }))
{
<div class="sax-form-control EmailAddress">
<div class="sax-label">
<label for="ifEmailAddress"><span><span class="required">*</span> @Localiser["label.email.address"]</span></label>
</div>
<div class="sax-control">
@Html.TextBoxFor(model => model.EmailAddress, new { @id = "ifEmailAddress", @class = "sax-input lower", @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress) })
</div>
<div class="sax-message"></div>
</div>
<div class="spacer2"></div>
<div class="sax-form-control Password">
<div class="sax-label">
<label for="ifPassword"><span><span class="required">*</span> @Localiser["label.password"]</span></label>
</div>
<div class="sax-control">
@Html.PasswordFor(model => model.Password, new { @id = "ifPassword", @class = "sax-input", @maxlength = @Model.PasswordMaxLength })
</div>
<div class="sax-message"></div>
</div>
<div class="spacer2"></div>
<div class="sax-form-control">
<div class="row">
<div class="col-6">
@Html.CheckBoxFor(model => model.KeepMeSignedIn, new { @id = "chkKeepMeSignedIn" })
&nbsp;
<span class="sax-label pointer" onclick="$('#chkKeepMeSignedIn').click()">@Localiser["label.keep.signed.in"]</span>
</div>
<div class="col-6 right">
<div class="sax-action-link" style="font-size:12px;" onclick="sax.goToPage('Security/RequestPassword');">@Localiser["label.forgotten.password"]</div>
</div>
</div>
</div>
<div class="spacer2"></div>
<div class="">
<div id="pbSignIn" class="sax-button-action fullwidth pointer" style="margin:16px 0;">@Localiser["security.caption.signin"]</div>
</div>
}
</div>
</div>
</div>
@@ -0,0 +1,25 @@
@model ErrorViewModel
@{
ViewData["Title"] = "Error";
}
<h1 class="text-danger">Error.</h1>
<h2 class="text-danger">An error occurred while processing your request.</h2>
@if (Model.ShowRequestId)
{
<p>
<strong>Request ID:</strong> <code>@Model.RequestId</code>
</p>
}
<h3>Development Mode</h3>
<p>
Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
</p>
<p>
<strong>The Development environment shouldn't be enabled for deployed applications.</strong>
It can result in displaying sensitive information from exceptions to end users.
For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
and restarting the app.
</p>
@@ -0,0 +1,25 @@
@using Microsoft.AspNetCore.Http.Features
@{
var consentFeature = Context.Features.Get<ITrackingConsentFeature>();
var showBanner = !consentFeature?.CanTrack ?? false;
var cookieString = consentFeature?.CreateConsentCookie();
}
@if (showBanner)
{
<div id="cookieConsent" class="alert alert-info alert-dismissible fade show" role="alert">
Use this space to summarize your privacy and cookie use policy. <a asp-area="" asp-controller="Policies" asp-action="Privacy">Learn More</a>.
<button type="button" class="accept-policy close" data-dismiss="alert" aria-label="Close" data-cookie-string="@cookieString">
<span aria-hidden="true">Accept</span>
</button>
</div>
<script>
(function () {
var button = document.querySelector("#cookieConsent button[data-cookie-string]");
button.addEventListener("click", function (event) {
document.cookie = button.dataset.cookieString;
}, false);
})();
</script>
}
@@ -0,0 +1 @@
<div>Google Analytics</div>
@@ -0,0 +1,244 @@
@model SaxModel_Admin
@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery AntiForgery;
@inject SaxLocaliser Localiser
@*
Application: Admin
Purpose: Page template.
*@
@{
// Model properties to become javascript values.
var awaitingLogin = Model.AwaitingLogin ? "1" : "0";
var keepLoggedIn = Model.KeepLoggedIn ? "1" : "0";
var debug = Model.DebugMode ? "1" : "0";
}
<!DOCTYPE html>
<html lang="en">
<head>
@* Set base URL the same for all pages so that relative URLs work the same for all. *@
<base href="@Model.RedirectLocation.Base" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
@* IE11 incompatibility eg. 'border-radius' not recognised. Must be at top of head *@
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
@if (Model.ProhibitCache)
{
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
}
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Script-Type" content="application/javascript" />
<title>@ViewData["Title"]</title>
@* Stylesheets *@
<link rel="stylesheet" href="~/lib/jquery-ui/jquery-ui.css" />
<environment include="Development">
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
</environment>
<environment exclude="Development">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"
asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute"
crossorigin="anonymous"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" />
</environment>
<link rel="stylesheet" href="~/css/sax-base.css?@Model.HrefVersion" />
<link rel="stylesheet" href="~/css/sax-main.css?@Model.HrefVersion" />
<link rel="stylesheet" href="~/css/sax-data.css?@Model.HrefVersion" />
<link rel="stylesheet" href="~/css/sax-form.css?@Model.HrefVersion" />
@foreach (var cssFile in Model.AdditionalFiles_CSS)
{
<link rel="stylesheet" href="~/@cssFile?@Model.HrefVersion" />
}
@* Scripts *@
<script>
var sax = sax || { page: {}, mdl: {}, url: {}, links: {}, form: {}, data: {}, ajax: {}, msg: {}, lbl: {}, dlg: { title: {}, btn: {} }, $frm: {}, $dlg: {}, $pnl: {}, session: {}, kli: {} };
sax.url.base = '@Model.RedirectLocation.Base';
sax.url.home = '@Model.RedirectLocation.Home';
sax.url.sessionExpired = '@Model.RedirectLocation.Home_SessionExpired';
sax.links.facebook = '@Model.Links.Facebook';
sax.links.linkedin = '@Model.Links.LinkedIn';
sax.dlg.title.alert = '@Localiser.GetJavascriptText("dialog.title.alert")';
sax.dlg.title.confirm = '@Localiser.GetJavascriptText("dialog.title.confirm")';
sax.dlg.title.progress = '@Localiser.GetJavascriptText("dialog.title.progress")';
sax.dlg.title.signOut = '@Localiser.GetJavascriptText("dialog.title.signout")';
sax.dlg.btn.yes = '@Localiser["label.yes"]';
sax.dlg.btn.no = '@Localiser["label.no"]';
sax.dlg.btn.ok = '@Localiser["label.ok"]';
sax.dlg.btn.close = '@Localiser["label.close"]';
sax.dlg.btn.cancel = '@Localiser["label.cancel"]';
sax.lbl.charAvailable = '@Localiser.GetJavascriptText("info.char.available")';
sax.lbl.charsAvailable = '@Localiser.GetJavascriptText("info.chars.available", "{0}")';
sax.lbl.noneSelected = '@Localiser.GetJavascriptText("label.selected.none")';
sax.lbl.numberSelected = '@Localiser.GetJavascriptText("label.selected.count", "{0}")';
sax.msg.signOutConfirm = '@Localiser.GetJavascriptText("security.msg.signout.confirm")';
sax.msg.somethingGoneWrong = '@Localiser.GetJavascriptText("msg.something.gone.wrong")';
sax.msg.dataRefreshing = '@Localiser.GetJavascriptText("msg.data.refreshing")';
sax.msg.dataQuerying = '@Localiser.GetJavascriptText("msg.data.querying")';
sax.msg.dataNoneFound = '@Localiser.GetJavascriptText("msg.data.noneFound")';
sax.session.cookieName = '@Model.SessionCookieName';
sax.awaitingLogin = @awaitingLogin;
sax.kli.active = @keepLoggedIn;
sax.kli.interval = @(Sax.Config.Admin.Session.Cookie.KeepLoggedInTimeoutMillis);
sax.debugMode = @debug;
</script>
</head>
<body>
@* Header *@
<header id="sax-page-header">
@* Navigation bar *@
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom">
<div class="container">
<a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">@Localiser["home.caption.application"]</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
<ul class="navbar-nav flex-grow-1">
@*
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">@Localiser["home.caption.home"]</a>
</li>
*@
@if (Model.AwaitingLogin)
{
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Policies" asp-action="Privacy">@Localiser["policies.caption.privacy"]</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Security" asp-action="">@Localiser["security.caption.signin"]</a>
</li>
}
else
{
<li class="nav-item dropdown">
<a class="nav-link text-dark dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
@Localiser["label.accounts"]
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<div class="dropdown-item text-dark sax-action" onclick="sax.goToPage('UsersOnline');">@Localiser["label.users.online"]</div>
<div class="dropdown-item text-dark sax-action" onclick="sax.goToPage('User');">@Localiser["user.caption.users"]</div>
<div class="dropdown-item text-dark sax-action" onclick="sax.goToPage('Organisation');">@Localiser["caption.organisations"]</div>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link text-dark dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
@Localiser["label.reference"]
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<div class="dropdown-item text-dark sax-action" onclick="sax.goToPage('Sport');">@Localiser["sport.caption.sports"]</div>
<div class="dropdown-item text-dark sax-action" onclick="sax.goToPage('Region');">@Localiser["region.caption.regions"]</div>
<hr />
<div class="dropdown-item text-dark sax-action" onclick="sax.goToPage('Reference/Baseball');">@Localiser["caption.baseball"]</div>
<div class="dropdown-item text-dark sax-action" onclick="sax.goToPage('Reference/Golf');">@Localiser["caption.golf"]</div>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link text-dark dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
@Localiser["label.support"]
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<div class="dropdown-item text-dark sax-action" onclick="sax.goToPage('UserReport');">@Localiser["caption.user.reports"]</div>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link text-dark dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
@Localiser["label.system"]
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<div class="dropdown-item text-dark sax-action" onclick="sax.goToPage('System/Database');">@Localiser["label.database"]</div>
<div class="dropdown-item text-dark sax-action" onclick="sax.goToPage('System/Logs');">@Localiser["label.logs"]</div>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link text-dark dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
@Localiser["label.security"]
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<div class="dropdown-item text-dark sax-action" onclick="sax.navigateTo('Security/ChangePassword');">@Localiser["security.caption.change.password"]</div>
<div class="dropdown-divider"></div>
<div class="dropdown-item text-dark sax-action" onclick="sax.onSignOut();">@Localiser["security.caption.signout"]</div>
</div>
</li>
}
</ul>
</div>
</div>
</nav>
@* Page caption *@
@if (!StringUtil.IsEmpty(Model.PageCaption))
{
<div class="container">
<div class="sax-page-caption">@(Model.PageCaption)</div>
</div>
}
</header>
@* Page body *@
<div id="sax-page-body" class="container">
<main role="main" class="pb-3">
@RenderBody()
</main>
</div>
@* Footer *@
<footer id="sax-page-footer" class="border-top footer text-muted">
<div class="container">
<div class="row">
<div class="col-sm">@(Model.CopyrightNotice) - @Localiser["company.name"] @(Model.InstanceVersion)</div>
<div class="fixed-sm">
<div style="padding-top:4px;font-size:.8rem;line-height:1.2;">
@* Application messages - for debugging. *@
@(new Microsoft.AspNetCore.Html.HtmlString(Saxonite.Net.Core.Web.Admin.App.SaxApplication_Admin.AppInstance.Messages.Concat("<br/>")))
</div>
</div>
</div>
</div>
</footer>
@* Form to allow page navigation. *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmNavigate" })) { }
<div id='sax-please-wait'></div>
@* Scripts *@
<environment include="Development">
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.js"></script>
</environment>
<environment exclude="Development">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"
asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
asp-fallback-test="window.jQuery"
crossorigin="anonymous"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=">
</script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.bundle.min.js"
asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"
asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal"
crossorigin="anonymous"
integrity="sha384-xrRywqdh3PHs8keKZN+8zzc5TX0GRTLCcmivcbNJWm2rs5C8PRhcEn3czEjhAO9o">
</script>
</environment>
<script src="~/lib/jquery-ui/jquery-ui.js"></script>
<script src="~/js/sax-main.js?@Model.HrefVersion"></script>
@foreach (var jsFile in Model.AdditionalFiles_JS)
{
<script src="~/@jsFile?@Model.HrefVersion"></script>
}
@if (Model.IncludeGoogleAnalytics)
{
<partial name="~/Views/Shared/_GoogleAnalytics.cshtml" />
}
@RenderSection("Scripts", required: false)
</body>
</html>
@@ -0,0 +1,2 @@
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
@@ -0,0 +1,107 @@
@model Model_Sport
@inject SaxLocaliser Localiser
@{
/* Sports - Index */
ViewData["Title"] = "Sports";
}
<div class="sax-panel Sports">
<script type="text/javascript">
sax.lbl.refresh = '@(Localiser.GetJavascriptText("label.refresh"))';
sax.lbl.create = '@(Localiser.GetJavascriptText("label.create"))';
sax.lbl.edit = '@(Localiser.GetJavascriptText("label.edit"))';
</script>
@* Filter Panel *@
<div class="sax-panel-filter">
@* Filter Form *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmSportFilter", @class = "sax-form", @onSubmit = "return false;" }))
{
@* Header - Page caption, paging controls, actions. *@
<div class="sax-header row">
<div class="col"><div class="sax-caption">@Localiser["sport.caption.sports"]</div></div>
<div class="fixed row">
<div class="col">
<partial name="~/Views/Common/ResultsPaging.cshtml" />
</div>
<div class="fixed">
@* Burger menu *@
<ul class="nav navbar-nav navbar-dark navbar-right sax-burger">
<li class="dropdown-toggle caret-off">
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="navbar-toggler-icon"></span></a>
<ul class="dropdown-menu dropdown-menu-right sax-dropdown-menu">@* Menu items will be inserted here. *@</ul>
</li>
</ul>
</div>
</div>
</div>
<div class="sax-content">
<div class="row">
<div class="col-sm-5 sax-label text-left text-sm-right">@Localiser["sport.caption.sport"]</div>
<div class="col-sm-7">@Html.TextBoxFor(model => model.Filter.Sport, new { @id = "ifFilterSport", @class = "FilterSport", @maxlength = "32" })</div>
</div>
</div>
@* Filter element templates *@
<div class="sax-panel-item-template">
@* Burger dropdown item template - ul is ignored *@
<ul class="sax-dropdown-menu SportFilter">
<li class="sax-dropdown-item sax-action"><div class="sax-label">XXX</div></li>
</ul>
</div>
}
</div>
@* Results Panel *@
<div class="sax-panel-results">
<div class="sax-panel-messages"></div>
<div class="sax-panel-item-list"></div>
@* Element templates *@
<div class="sax-panel-item-template">
@* Sport item template *@
<div class="sax-panel-item Sport">
<div class="sax-header row">
<div class="col">
<div class="sax-caption"><div class="sax-action sax-item-update SportName">Sport name</div></div>
</div>
<div class="fixed sax-actions">
@* Burger menu *@
<ul class="nav navbar-nav navbar-light navbar-right sax-burger">
<li class="dropdown-toggle caret-off">
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="navbar-toggler-icon"></span></a>
<ul class="dropdown-menu dropdown-menu-right sax-dropdown-menu">@* Menu items will be inserted here. *@</ul>
</li>
</ul>
</div>
</div>
<div class="sax-content">
<div class="row">
<div class="col-sm-4"><div class="SportSpeciality">@Localiser["label.speciality"]:&nbsp;<span class="SportSpecialityLabel"></span></div></div>
<div class="col-sm-4"><div class="SportParent">@Localiser["label.parent"]:&nbsp;<span class="SportNameParent"></span></div></div>
<div class="col-sm-4 right"><div class="sax-note StatusDesc"></div></div>
</div>
<div class="row">
<div class="col-sm-4"></div>
<div class="col-sm-4"><div class=""></div></div>
</div>
</div>
</div>
@* Burger dropdown item template - ul is ignored *@
<ul class="sax-dropdown-menu Sport">
<li class="sax-dropdown-item sax-action"><div class="sax-label">XXX</div></li>
</ul>
</div>
</div>
<partial name="Panel-SportDialog.cshtml" />
<partial name="~/Views/Common/SelectItem.cshtml" />
</div>
@@ -0,0 +1,139 @@
@model Model_Sport
@inject SaxLocaliser Localiser
@{
/* Sports - Sport dialog panel */
}
<script type="text/javascript">
sax.dlg.title.createSport = '@Localiser.GetJavascriptText("sport.caption.sport.create")';
sax.dlg.title.updateSport = '@Localiser.GetJavascriptText("sport.caption.sport.update")';
sax.dlg.title.selectSport = '@Localiser.GetJavascriptText("sport.caption.sport.select")';
</script>
@* Sport Id form. *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmSportId", @class = "sax-form" }))
{
@Html.HiddenFor(model => model.SportId, new { @class = "SportId" })
}
@* Sport dialog *@
<div id="dlgSport" class="sax-dialog" title="">
<div class="spacer4"></div>
@* Sport form *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmSport", @class = "sax-form", @onSubmit = "return false;" }))
{
@Html.HiddenFor(model => model.SportId, new { @class = "SportId" })
@* Sport Name *@
<div class="sax-form-control SportName">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="ifSportName"><span>@Localiser["label.name"]</span><span class="required">&nbsp;*</span></label>
</div>
</div>
<div class="col-sm-9">
<div class="sax-control">
@Html.TextBoxFor(model => model.SportName, new { @id = "ifSportName", @class = "SportName sax-input", @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.Sport_Name) })
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Sport Grouping *@
<div class="sax-form-control SportGrouping">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="cbSportGrouping"><span>@Localiser["label.grouping"]</span></label>
</div>
</div>
<div class="col-sm-9">
<div class="sax-control">
@Html.DropDownListFor(model => model.SportGroupingCode, Model.SportGroupingCodesForSelect, new { @id = "cbSportGrouping", @class = "SportGrouping sax-select" })
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Banner Sport *@
<div class="sax-form-control SportParent">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="ifSportNameParent"><span>@Localiser["label.parent"]</span></label>
</div>
</div>
<div class="col-sm-9">
<div class="sax-control row">
@Html.HiddenFor(model => model.SportIdParent, new { @id = "ifSportIdParent", @class = "SportIdParent" })
<div class="col"><input type="text" class="SportNameParent sax-input" readonly="readonly" /></div>
<div class="fixed"><div class="sax-action ParentSportClear"><img src="~/img/action/delete24.png" alt="@(Localiser["label.clear"])" title="@(Localiser["label.clear"])" /></div></div>
<div class="fixed"><button type="button" id="pbSelectParentSport" class="sax-button" style="min-width:auto;margin-left:4px;padding:4px 6px">@Localiser["label.select"]</button></div>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Child Sports *@
<div class="sax-form-control SportsChildren">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label><span>@Localiser["label.grouped.sports"]</span></label>
</div>
</div>
<div class="col-sm-9">
<div class="sax-control row">
@Html.HiddenFor(model => model.SportIdsChildren, new { @id = "ifSportIdsChildren", @class = "SportIdsChildren" })
<div class="col"><div class="SportsChildren" style="min-height:48px;max-height:120px;width:100%;border:1px solid #808080;border-radius:4px 0 0 4px;overflow-y:scroll;"></div></div>
<div class="fixed"><div class="sax-action ChildSportsClear"><img src="~/img/action/delete24.png" alt="@(Localiser["label.clear"])" title="@(Localiser["label.clear"])" /></div></div>
<div class="fixed"><button type="button" id="pbSelectChildSports" class="sax-button" style="min-width:auto;margin-left:4px;padding:4px 6px">@Localiser["label.select"]</button></div>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Sport Speciality Label *@
<div class="sax-form-control SportSpecialityLabel">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="cbSportSpecialityLabel"><span>@Localiser["label.speciality.label"]</span></label>
</div>
</div>
<div class="col-sm-9">
<div class="sax-control">
@Html.DropDownListFor(model => model.SportSpecialityLabelCode, Model.SportSpecialityLabelCodesForSelect, new { @id = "cbSportSpecialityLabel", @class = "SportSpecialityLabel sax-select" })
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Sport Status *@
<div class="sax-form-control SportStatus">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="cbSportStatus"><span>@Localiser["label.status"]</span><span class="required">&nbsp;*</span></label>
</div>
</div>
<div class="col-sm-9">
<div class="sax-control">
<select id="cbSportStatus" class="sax-select SportStatus" name="SportStatusCode"></select>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
}
<div class="spacer2"></div>
</div>
@@ -0,0 +1,116 @@
@model Model_UserReport
@inject SaxLocaliser Localiser
@{
/* User Report - Index */
ViewData["Title"] = "User Reports";
Model.AdditionalFiles_JS.Add("js/sax-spt-rpt.js");
}
<div class="sax-panel UserReports">
<script type="text/javascript">
sax.lbl.refresh = '@(Localiser.GetJavascriptText("label.refresh"))';
sax.lbl.create = '@(Localiser.GetJavascriptText("label.create"))';
sax.lbl.edit = '@(Localiser.GetJavascriptText("label.edit"))';
</script>
<div class="row">
@* Filter Panel *@
<div class="col-md-4">
<div class="sax-panel-filter mr-md-2">
@* Filter Form *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmUserReportFilter", @class = "sax-form", @onSubmit = "return false;" }))
{
@* Header - Page caption, paging controls, actions. *@
<div class="sax-header row">
<div class="col"><div class="sax-caption">@Localiser["caption.user.reports"]</div></div>
<div class="fixed row">
<div class="col">
<partial name="~/Views/Common/ResultsPaging.cshtml" />
</div>
<div class="fixed">
@* Burger menu *@
<ul class="nav navbar-nav navbar-dark navbar-right sax-burger">
<li class="dropdown-toggle caret-off">
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="navbar-toggler-icon"></span></a>
<ul class="dropdown-menu dropdown-menu-right sax-dropdown-menu">@* Menu items will be inserted here. *@</ul>
</li>
</ul>
</div>
</div>
</div>
<div class="sax-content">
<div class="row">
<div class="col-sm-5 sax-label text-left text-sm-right">@Localiser["label.report"]</div>
<div class="col-sm-7">@Html.TextBoxFor(model => model.Filter.Report, new { @id = "ifFilterUserReport", @class = "FilterUserReport", @maxlength = "32" })</div>
</div>
</div>
@* Filter element templates *@
<div class="sax-panel-item-template">
@* Burger dropdown item template - ul is ignored *@
<ul class="sax-dropdown-menu UserReportFilter">
<li class="sax-dropdown-item sax-action"><div class="sax-label">XXX</div></li>
</ul>
</div>
}
</div>
</div>
@* Results Panel *@
<div class="col">
<div class="sax-panel-results">
<div class="sax-panel-messages"></div>
<div class="sax-panel-item-list"></div>
@* Element templates *@
<div class="sax-panel-item-template">
@* UserReport item template *@
<div class="sax-panel-item UserReport">
<div class="sax-header row">
<div class="col">
<div class="sax-caption"><div class="sax-action sax-item-update UserReportTitle">UserReport Title</div></div>
</div>
<div class="fixed sax-actions">
@* Burger menu *@
<ul class="nav navbar-nav navbar-light navbar-right sax-burger">
<li class="dropdown-toggle caret-off">
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="navbar-toggler-icon"></span></a>
<ul class="dropdown-menu dropdown-menu-right sax-dropdown-menu">@* Menu items will be inserted here. *@</ul>
</li>
</ul>
</div>
</div>
<div class="sax-content">
<div class="row">
<div class="col-sm-4"><div class="sax-note UserReportRaised"><span class="UserDisplayName"></span>&nbsp;<span class="UserReportRaisedOnDisp"></span></div></div>
<div class="col-sm-4"><div class="sax-note"></div></div>
<div class="col-sm-4 right"><div class="sax-note StatusDesc"></div></div>
</div>
<div class="row">
<div class="col-sm-4"></div>
<div class="col-sm-4"><div class=""></div></div>
</div>
</div>
</div>
@* Burger dropdown item template - ul is ignored *@
<ul class="sax-dropdown-menu UserReport">
<li class="sax-dropdown-item sax-action"><div class="sax-label">XXX</div></li>
</ul>
</div>
</div>
</div>
</div>
<partial name="Panel-UserReportDialog.cshtml" />
</div>
@@ -0,0 +1,106 @@
@model Model_UserReport
@inject SaxLocaliser Localiser
@{
/* Support - User Report dialog */
Model.AdditionalFiles_CSS.Add("rjs/sax-rjs.css");
Model.AdditionalFiles_JS.Add("rjs/rooster-min.js");
Model.AdditionalFiles_JS.Add("rjs/sax-rjs.js");
}
<script type="text/javascript">
sax.dlg.title.createUserReport = '@Localiser.GetJavascriptText("caption.user.report.create")';
sax.dlg.title.updateUserReport = '@Localiser.GetJavascriptText("caption.user.report.update")';
</script>
@* User Report Id form. *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmUserReportId", @class = "sax-form" }))
{
@Html.HiddenFor(model => model.UserReport.Id, new { @class = "UserReportId" })
}
@* User Report dialog *@
<div id="dlgUserReport" class="sax-dialog" title="">
<div class="spacer4"></div>
@* User Report form *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmUserReport", @class = "sax-form", @autocomplete = "off", @onSubmit = "return false;" }))
{
@Html.HiddenFor(model => model.UserReport.Id, new { @class = "UserReportId" })
@Html.HiddenFor(model => model.UserReport.Exists, new { @class = "UserReportExists" })
@* User Report Type *@
<div class="sax-form-control UserReportType">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="cbUserReportType"><span>@Localiser["label.type"]</span><span class="required">&nbsp;*</span></label>
</div>
</div>
<div class="col-sm-9">
<div class="sax-control">
<select name="UserReport.ReportType" id="cbUserReportType" class="UserReportType sax-select"></select>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* User Report Title *@
<div class="sax-form-control UserReportTitle">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="ifUserReportTitle"><span>@Localiser["label.title"]</span><span class="required">&nbsp;*</span></label>
</div>
</div>
<div class="col-sm-9">
<div class="sax-control">
@Html.TextBoxFor(model => model.UserReport.Title, new { @id = "ifUserReportTitle", @class = "UserReportTitle sax-input", @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Support.ColumnIdx.UserReport_Title) })
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* Report *@
<div class="sax-form-control UserReportReport">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="ifUserReportReport"><span>@Localiser["label.report"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
@Html.HiddenFor(model => model.UserReport.Report, new { @id = "ifUserReportReport", @class = "UserReportReport sax-input" })
<div class="rjs-container">
<div class="rjs-editor"></div>
<div class="rjs-toolbar"></div>
</div>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* UserReport Status *@
<div class="sax-form-control UserReportStatus">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="cbUserReportStatus"><span>@Localiser["label.status"]</span><span class="required">&nbsp;*</span></label>
</div>
</div>
<div class="col-sm-9">
<div class="sax-control">
<select id="cbUserReportStatus" class="sax-select UserReportStatus" name="UserReport.Status"></select>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
}
<div class="spacer2"></div>
</div>
@@ -0,0 +1,166 @@
@model Model_System
@inject SaxLocaliser Localiser
@{
ViewData["Title"] = "System - Database";
}
<div class="sax-panel DatabaseTables">
<script type="text/javascript">
</script>
<div class="sax-panel-data sax-flex">
@* Filter form - wrap header to include paging controls. *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmDbTableFilter", @class = "sax-form", @onSubmit = "return false;" }))
{
@* Header - Page caption, paging controls, actions. *@
<div class="sax-panel-header">
<div class="row">
<div class="col"><div class="sax-panel-caption">@Localiser["system.caption.database"]</div></div>
<div class="fixed row">
<div class="sax-action sax-results-refresh"><img src="~/img/action/refresh24.png" alt="@(Localiser["label.refresh"])" title="@(Localiser["label.refresh"])" /></div>
</div>
</div>
</div>
@* Filter Panel *@
<div class="sax-panel-filter">
<div class="row">
<div class="col-sm-5 col-md-3 sax-label text-left text-sm-right">@Localiser["label.instance"]</div>
<div class="col-sm-7 col-md-3 mb-sm-1 mb-md-0">@Html.DropDownListFor(model => model.DatabaseFilter.Instance, Model.GetDatabases(), new { @id = "cbDatabaseFilterInstance", @class = "DatabaseFilterInstance" })</div>
<div class="col-sm-5 col-md-3 sax-label text-left text-sm-right">@Localiser["label.search"]</div>
<div class="col-sm-7 col-md-3">@Html.TextBoxFor(model => model.DatabaseFilter.Search, new { @id = "ifDatabaseFilterSearch", @class = "DatabaseFilterSearch", @maxlength = "32" })</div>
</div>
</div>
}
@* Item list *@
<div class="sax-panel-item-table sax-flex">
<table class="sax-item-list">
<thead>
<tr>
<th class="width50pc pl-2">@Localiser["label.table"]</th>
<th class="width15pc center">@Localiser["label.rows"]</th>
<th class="width15pc center">@Localiser["label.columns"]</th>
<th class="width15pc center">@Localiser["label.indices"]</th>
<th class="width5pc center"></th>
</tr>
<tr><td colspan="6"><div class="sax-panel-messages"></div></td></tr>
</thead>
<tbody></tbody>
</table>
</div>
</div>
@* Element templates *@
<div class="sax-panel-item-template">
@* Item row template - table is ignored. *@
<table>
<tr class="sax-row-item DatabaseTable">
<td class="TableName pl-1"></td>
<td class="RowCount center"></td>
<td class="ColumnCount center"></td>
<td class="IndexCount center"></td>
<td class="Actions">
<div class="right">
@* Burger menu *@
<ul class="nav navbar-nav navbar-light navbar-right sax-burger">
<li class="dropdown-toggle caret-off">
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="sax-ellipsis-dot"></span><span class="sax-ellipsis-dot"></span><span class="sax-ellipsis-dot"></span></a>
<ul class="dropdown-menu dropdown-menu-right sax-dropdown-menu">@* Menu items will be inserted here. *@</ul>
</li>
</ul>
</div>
</td>
</tr>
</table>
@* Item burger dropdown template - ul is ignored *@
<ul class="sax-dropdown-menu DatabaseTable">
<li class="sax-dropdown-item sax-action"><div class="sax-label">XXX</div></li>
</ul>
</div>
</div>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmDbTableName", @onSubmit = "return false;" }))
{
@Html.HiddenFor(model => model.DatabaseTable.Instance, new { @class = "DatabaseTableInstance" })
@Html.HiddenFor(model => model.DatabaseTable.Name, new { @class = "DatabaseTableName" })
}
<style>
#dlgDbTable tr.sax-heading td
{
color: #606060;
background-color: #f0f0f0;
border-top: 1px solid #808080;
border-bottom: 1px solid #808080;
}
</style>
<div id="dlgDbTable" class="sax-panel-item-template">
<div class="">
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmDbTable", @onSubmit = "return false;" }))
{
@Html.HiddenFor(model => model.DatabaseTable.Instance, new { @class = "DatabaseTableInstance" })
@Html.HiddenFor(model => model.DatabaseTable.Name, new { @class = "DatabaseTableName" })
}
<table class="fullwidth">
<tr>
<td class="right pt2 pr8">Properties:</td>
<td>
<table class="sax-striped TableProperties">
</table>
</td>
</tr>
<tr>
<td class="right pt2 pr8">Columns:</td>
<td>
<table class="sax-striped TableColumns fullwidth">
<tr class="sax-heading">
<td class="width10pc right pl8 pr8">Pos</td>
<td class="width50pc pl8 pr8">Name</td>
<td class="width50pc center">Format</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="right pt2 pr8">Indices:</td>
<td>
<table class="sax-striped TableIndices fullwidth">
<tr class="sax-heading">
<td class="width50pc pl8 pr8">Name</td>
<td class="width20pc center pl8 pr8">Unique</td>
<td class="width20pc pl8 pr8">Columns</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sax-panel-item-template">
<table>
<tr class="TableProperty">
<td class="sax-label Label right pl8 pr8"></td>
<td class="Value pl8 pr8"></td>
</tr>
<tr class="TableColumn">
<td class="Pos right pl8 pr8"></td>
<td class="Name pl8 pr8"></td>
<td class="Format center pl8 pr8"></td>
</tr>
<tr class="TableIndex">
<td class="Name pl8 pr16"></td>
<td class="Unique center"></td>
<td class="Columns pl8 pr8"></td>
</tr>
</table>
</div>
</div>
@@ -0,0 +1,125 @@
@model Model_System
@inject SaxLocaliser Localiser
@{
ViewData["Title"] = "System - Logs";
}
<style>
#dlgLogFile .FileData
{
font-family: Courier New, Courier, monospace;
font-size: 10px;
color: slategray;
overflow-x: auto;
overflow-y: auto;
}
#dlgLogFile .FileData .tab
{
padding-left: 16px;
}
#dlgLogFile .FileData .tab2
{
padding-left: 32px;
}
#dlgLogFile .FileData .err
{
color: darkred;
}
#dlgLogFile .FileData .wrn
{
color: darkorange;
}
#dlgLogFile .FileData .inf
{
color: darkGreen;
}
</style>
<div class="sax-panel LogFiles">
<div class="sax-panel-data sax-flex">
@* Filter form - wrap header to include paging controls. *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmLogsFilter", @class = "sax-form", @onSubmit = "return false;" }))
{
@* Header - Page caption, paging controls, actions. *@
<div class="sax-panel-header">
<div class="row">
<div class="col"><div class="sax-panel-caption">@Localiser["system.caption.logs"]</div></div>
<div class="fixed row">
<div class="sax-action sax-results-refresh"><img src="~/img/action/refresh24.png" alt="@(Localiser["label.refresh"])" title="@(Localiser["label.refresh"])" /></div>
</div>
</div>
</div>
@* Filter Panel *@
<div class="sax-panel-filter">
<input type="hidden" name="LogsFilter.Filename" class="FilterLogFilename" />
<div class="row">
<div class="col-sm-12 row">
<div class="col-sm-4 col-md-3 sax-label text-left text-sm-right" style="padding-top:2px;">@Localiser["label.root.folder"]</div>
<div class="col-sm-8 col-md-9 sax-value mb-1 bold">@(Model.LoggingRootFolder)</div>
</div>
<div class="col-sm-12 col-md-4 row">
<div class="col-sm-4 col-md-5 sax-label text-left text-sm-right">@Localiser["label.folder"]</div>
<div class="col-sm-8 col-md-7 mb-1"><div style="max-width:200px;"><select id="cbFilterLogFolder" name="LogsFilter.Folder" class="FilterLogFolder"></select></div></div>
</div>
<div class="col-sm-12 col-md-4 row">
<div class="col-sm-4 col-md-5 sax-label text-left text-sm-right">@Localiser["label.year"]</div>
<div class="col-sm-8 col-md-7 mb-1"><div style="max-width:200px;"><select id="cbFilterLogYear" name="LogsFilter.Year" class="FilterLogYear"></select></div></div>
</div>
<div class="col-sm-12 col-md-4 row">
<div class="col-sm-4 col-md-5 sax-label text-left text-sm-right">@Localiser["label.month"]</div>
<div class="col-sm-8 col-md-7"><div style="max-width:200px;"><select id="cbFilterLogMonth" name="LogsFilter.Month" class="FilterLogMonth"></select></div></div>
</div>
</div>
</div>
}
@* Log file list. *@
<div class="sax-panel-item-table sax-flex">
<table class="sax-item-list">
<thead>
<tr>
<th class="pl-2">@Localiser["label.file"]</th>
<th class="center">@Localiser["label.updated"]</th>
<th class="center">@Localiser["label.size"]</th>
</tr>
<tr><td colspan="6"><div class="sax-panel-messages"></div></td></tr>
</thead>
<tbody></tbody>
</table>
</div>
@* Log file template. *@
<table class="sax-panel-item-template">
<tr class="sax-panel-item LogFile pointer">
<td><div class="Filename pl-2 pt-1"></div></td>
<td><div class="Updated center"></div></td>
<td><div class="Size center"></div></td>
</tr>
</table>
<div id="dlgLogFile" class="sax-dialog">
<form>
<input type="hidden" class="LogFilename" />
</form>
<div class="sax-data FileData"></div>
</div>
</div>
</div>
<script>
sax.data.logFolder = '@(Localiser.EscapeJavascriptText(Model.LogsFilter.Folder))';
sax.data.logYear = '@(Localiser.EscapeJavascriptText(Model.LogsFilter.Year))';
sax.data.logMonth = '@(Localiser.EscapeJavascriptText(Model.LogsFilter.Month))';
</script>
@@ -0,0 +1,162 @@
@model Model_User
@inject SaxLocaliser Localiser
@{
/* Users - Index */
ViewData["Title"] = "Users";
}
<div class="sax-panel Users">
<script type="text/javascript">
sax.lbl.refresh = '@(Localiser.GetJavascriptText("label.refresh"))';
sax.lbl.create = '@(Localiser.GetJavascriptText("label.create"))';
sax.lbl.edit = '@(Localiser.GetJavascriptText("label.edit"))';
sax.lbl.emails= '@(Localiser.GetJavascriptText("label.emails"))';
</script>
<div class="row">
<div class="col-md-5 row">
<div class="col">
@* Filter Panel *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmUserFilter", @class = "sax-form", @onSubmit = "return false;" }))
{
<div class="sax-panel-filter">
@* Header - Page caption, paging controls, actions. *@
<div class="sax-header row">
<div class="col"><div class="sax-caption">@Localiser["user.caption.users"]</div></div>
<div class="fixed row">
<div class="col">
<partial name="~/Views/Common/ResultsPaging.cshtml" />
</div>
<div class="fixed">
@* Burger menu *@
<ul class="nav navbar-nav navbar-dark navbar-right sax-burger">
<li class="dropdown-toggle caret-off">
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="navbar-toggler-icon"></span></a>
<ul class="dropdown-menu dropdown-menu-right sax-dropdown-menu">@* Menu items will be inserted here. *@</ul>
</li>
</ul>
</div>
</div>
</div>
<div class="sax-content">
@* User filter - email, name etc. *@
<div class="row pb4">
<div class="col-sm-5 sax-label text-left text-sm-right">@Localiser["user.caption.user"]</div>
<div class="col-sm-7">@Html.TextBoxFor(model => model.Filter.User, new { @id = "ifFilterUser", @class = "FilterUser", @maxlength = "32" })</div>
</div>
@* User sport *@
<div class="row pb4">
<div class="col-sm-5 sax-label text-left text-sm-right">@Localiser["label.sport"]</div>
<div class="col-sm-7">
<div class="row">
@Html.HiddenFor(model => model.Filter.UserSportId, new { @id = "", @class = "FilterUserSportId" })
<div class="col"><input type="text" class="FilterUserSportCaption sax-input" readonly="readonly" ondblclick="sax.selectFilterSport()" value="@Model.Filter.UserSportName" /> </div>
<div class="fixed row">
<div class="sax-action" onclick="sax.selectFilterSport();"><img src="~/img/action/search24.png" alt="@(Localiser["label.search"])" title="@(Localiser["label.search"])" /></div>
<div class="sax-action" onclick="sax.clearFilterSport();"><img src="~/img/action/delete24.png" alt="@(Localiser["label.clear"])" title="@(Localiser["label.clear"])" /></div>
</div>
</div>
</div>
</div>
@* User region *@
<div class="row pb4">
<div class="col-sm-5 sax-label text-left text-sm-right">@Localiser["label.region"]</div>
<div class="col-sm-7">
<div class="row">
@Html.HiddenFor(model => model.Filter.UserRegionId, new { @id = "", @class = "FilterUserRegionId" })
<div class="col"><input type="text" class="FilterUserRegionCaption sax-input" readonly="readonly" ondblclick="sax.selectFilterRegion()" value="@Model.Filter.UserRegionName" /> </div>
<div class="fixed row">
<div class="sax-action" onclick="sax.selectFilterRegion();"><img src="~/img/action/search24.png" alt="@(Localiser["label.search"])" title="@(Localiser["label.search"])" /></div>
<div class="sax-action" onclick="sax.clearFilterRegion();"><img src="~/img/action/delete24.png" alt="@(Localiser["label.clear"])" title="@(Localiser["label.clear"])" /></div>
</div>
</div>
</div>
</div>
@* User Status *@
<div class="row pb4">
<div class="col-sm-5 sax-label text-left text-sm-right">@Localiser["label.status"]</div>
<div class="col-sm-7">
@Html.DropDownListFor(model => model.Filter.UserStatusCategoryCode, Model.UserFilterStatusCategoriesForSelect, new { @id = "", @class = "FilterUserStatusCategory sax-select" })
</div>
</div>
</div>
@* Filter element templates *@
<div class="sax-panel-item-template">
@* Burger dropdown item template - ul is ignored *@
<ul class="sax-dropdown-menu UserFilter">
<li class="sax-dropdown-item sax-action"><div class="sax-label">XXX</div></li>
</ul>
</div>
</div>
}
</div>
@* Separate filter from results when alondside each other. *@
<div class="fixed"><div class="d-none d-md-block" style="width:8px;"></div></div>
</div>
<div class="col-md">
@* Results Panel *@
<div class="sax-panel-results">
<div class="sax-panel-messages"></div>
<div class="sax-panel-item-list"></div>
@* Element templates *@
<div class="sax-panel-item-template">
@* User item template *@
<div class="sax-panel-item User">
<div class="sax-header row">
<div class="col">
@* User email *@
<div class="sax-caption"><div class="sax-action sax-item-update UserEmailAddress"></div></div>
</div>
<div class="fixed sax-actions">
@* Burger menu *@
<ul class="nav navbar-nav navbar-light navbar-right sax-burger">
<li class="dropdown-toggle caret-off">
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="navbar-toggler-icon"></span></a>
<ul class="dropdown-menu dropdown-menu-right sax-dropdown-menu">@* Menu items will be inserted here. *@</ul>
</li>
</ul>
</div>
</div>
<div class="sax-content">
<div class="row">
<div class="col-sm-4"><span class="UserDisplayName"></span></div>
<div class="col-sm-4 center"><div class="sax-note UserLastOnlineLogin">Online:&nbsp;<span class="UserLastOnlineLoginAt"></span></div></div>
<div class="col-sm-4 right"><span class="UserRegionNameCountry"></span></div>
</div>
<div class="row">
<div class="col-sm-4">
<span class="sax-note UserSports">@Localiser["label.sports"]: <span class="UserSportCount"></span>&nbsp;</span>
<span class="sax-note UserRoles">@Localiser["label.roles"]: <span class="UserRoleCount"></span></span>
</div>
<div class="col-sm-4 center"><div class="sax-note UserLastAdminLogin">@Localiser["label.admin"]:&nbsp;<span class="UserLastAdminLoginAt"></span></div></div>
<div class="col-sm-4 right"><div class="sax-note StatusDesc"></div></div>
</div>
</div>
</div>
@* Burger dropdown item template - ul is ignored *@
<ul class="sax-dropdown-menu User">
<li class="sax-dropdown-item sax-action"><div class="sax-label">XXX</div></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<partial name="Panel-UserDialog.cshtml" />
<partial name="~/Views/Common/SelectItem.cshtml" />
@@ -0,0 +1,273 @@
@model Model_User
@inject SaxLocaliser Localiser
@{
/* Users - User dialog panel */
}
<style>
#dlgUser #frmUser .UserSports .Sports
{
max-height: 64px;
padding: 4px 8px;
border: 1px solid #b0b0b0;
overflow-y: scroll;
}
</style>
<script type="text/javascript">
sax.dlg.title.createUser = '@Localiser.GetJavascriptText("user.caption.user.create")';
sax.dlg.title.updateUser = '@Localiser.GetJavascriptText("user.caption.user.update")';
sax.dlg.title.selectRegionCountry = '@Localiser.GetJavascriptText("label.select.country")';
sax.dlg.title.selectRegionProvince = '@Localiser.GetJavascriptText("label.select.province")';
sax.dlg.title.selectUserRoles = '@Localiser.GetJavascriptText("user.caption.select.user.roles")';
sax.dlg.title.selectUserEmails = '@Localiser.GetJavascriptText("user.caption.select.user.emails")';
sax.data.userRoleCodeDelim = '@Model.UserRoleCodeDelim';
</script>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmUserId", @class = "sax-form" }))
{
@Html.HiddenFor(model => model.UserId, new { @class = "UserId" })
}
<div id="dlgUser" class="sax-dialog" title="">
<div class="spacer"></div>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmUser", @class = "sax-form", @onSubmit = "return false;" }))
{
@Html.HiddenFor(model => model.UserId, new { @class = "UserId" })
@* User email *@
<div class="sax-form-control UserEmailAddress">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="ifUserEmailAddress"><span>@Localiser["label.email.address"]</span>&nbsp;<span class="required">*</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
@Html.TextBoxFor(model => model.UserEmailAddress, new { @id = "ifUserEmailAddress", @class = "UserEmailAddress sax-input", @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress) })
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* User Name *@
<div class="row">
<div class="col-sm-3">
<div class="sax-label d-none d-sm-block">
<label for="ifAccountEmailAddress"><span>@Localiser["label.name"]</span></label>
</div>
</div>
<div class="col-sm row">
<div class="col-sm-4">
@* Title *@
<div class="sax-form-control UserTitle pr8">
<div class="sax-label">
<label for="cbUserTitle"><span><span class="required"></span> @Localiser["label.title"]</span></label>
</div>
<div class="sax-control">
@Html.DropDownListFor(model => model.UserTitle, Model.TitlesForSelect, Localiser["label.not.specified"], new { @id = "cbUserTitle", @class = "UserTitle sax-select" })
</div>
<div class="sax-message"></div>
</div>
</div>
<div class="col-sm-4">
@* User first name *@
<div class="sax-form-control UserFirstName pr8">
<div class="sax-label">
<label for="ifUserFirstName"><span>@Localiser["label.first.name"]</span>&nbsp;<span class="required">*</span></label>
</div>
<div class="sax-control">
@Html.TextBoxFor(model => model.UserFirstName, new { @id = "ifUserFirstName", @class = "UserFirstName sax-input", @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName) })
</div>
<div class="sax-message"></div>
</div>
</div>
<div class="col-sm-4">
@* User last name *@
<div class="sax-form-control UserLastName">
<div class="sax-label">
<label for="ifUserLastName"><span>@Localiser["label.last.name"]</span>&nbsp;<span class="required">*</span></label>
</div>
<div class="sax-control">
@Html.TextBoxFor(model => model.UserLastName, new { @id = "ifUserLastName", @class = "UserLastName sax-input", @maxlength = @Model.GetControlMaxLength(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName) })
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
</div>
@* User country *@
<div class="sax-form-control UserRegionIdCountry">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="ifUserRegionCaptionCountry"><span>@Localiser["label.country"]</span>&nbsp;<span class="required">*</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control row">
@Html.HiddenFor(model => model.UserRegionIdCountry, new { @id = "ifUserRegionIdCountry", @class = "UserRegionIdCountry" })
<div class="col"><input type="text" id="ifUserRegionCaptionCountry" class="UserRegionCaptionCountry sax-input" readonly="readonly" ondblclick="sax.selectRegionCountry()" /> </div>
<div class="fixed"><button id="pbSelectRegion" class="sax-button" style="min-width:auto;margin-left:4px;padding:4px 6px" onclick="sax.selectRegionCountry()">@Localiser["label.select"]</button></div>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* User province *@
@*
<div class="sax-form-control UserRegionIdProvince">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="ifUserRegionCaptionProvince"><span>@Localiser["label.province"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control row">
@Html.HiddenFor(model => model.UserRegionIdProvince, new { @id = "ifUserRegionIdProvince", @class = "UserRegionIdProvince" })
<div class="col"><input type="text" id="ifUserRegionCaptionProvince" class="UserRegionCaptionProvince sax-input" readonly="readonly" ondblclick="sax.selectRegionProvince()" /> </div>
<div class="fixed"><button id="pbSelectRegion" class="sax-button" style="min-width:auto;margin-left:4px;padding:4px 6px" onclick="sax.selectRegionProvince()">@Localiser["label.select"]</button></div>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
*@
@* User Sports *@
<div class="sax-form-control UserSports">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label><span>@Localiser["label.sports"]</span>&nbsp;<span class="UserSportCount"></span></label>
</div>
</div>
<div class="col-sm">
<div class="Sports"></div>
</div>
</div>
</div>
@* User roles *@
<div class="sax-form-control UserRoles">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="lbUserRoles"><span>@Localiser["label.user.roles"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control row">
@Html.HiddenFor(model => model.UserRoleCodes, new { @id = "ifUserRoleCodes", @class = "UserRoleCodes sax-input" })
<div class="col"><textarea id="ifUserRoles" class="UserRoles sax-input" style="" rows="3" readonly="readonly" onDblClick="sax.selectUserRoles()"></textarea></div>
<div class="fixed"><button id="" class="sax-button" style="min-width:auto;margin-left:4px;padding:4px 6px" onclick="sax.selectUserRoles()">@Localiser["label.select"]</button></div>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* User status *@
<div class="sax-form-control UserStatus">
<div class="row">
<div class="col-sm-3">
<div class="sax-label">
<label for="cbUserStatus"><span>@Localiser["label.status"]</span>&nbsp;<span class="required">*</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
<select id="cbUserStatus" class="sax-select UserStatus" name="UserStatusCode"></select>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
}
<div class="spacer"></div>
</div>
<partial name="~/Views/Common/SelectCode.cshtml" />
<div id="dlgUserEmails" class="sax-dialog" title="">
<div class="spacer"></div>
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmUserEmails", @class = "sax-form", @onSubmit = "return false;" }))
{
@Html.HiddenFor(model => model.UserId, new { @class = "UserId" })
<div class="sax-para">@Localiser["user.emails.intro"]</div>
<div class="spacer2"></div>
@* User email *@
<div class="sax-form-control UserEmailAddress">
<div class="row">
<div class="col-sm-4">
<div class="sax-label">
<label><span>@Localiser["label.email.address"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
<input type="text" class="UserEmailAddress sax-input" readonly="readonly" />
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* User display name *@
<div class="sax-form-control UserDisplayName">
<div class="row">
<div class="col-sm-4">
<div class="sax-label">
<label><span>@Localiser["label.name"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
<input type="text" class="UserDisplayName sax-input" readonly="readonly" />
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
@* User emails *@
<div class="sax-form-control UserEmailTypes">
<div class="row">
<div class="col-sm-4">
<div class="sax-label">
<label for="chkUserEmailRequestPasswordAdmin"><span>@Localiser["label.email.types"]</span></label>
</div>
</div>
<div class="col-sm">
<div class="sax-control">
<div class="AcountActivationOnlineOption">
<input type="checkbox" id="chkUserEmailAcountActivationOnline" class="UserEmailAcountActivationOnline" name="UserEmailAcountActivationOnline" value="1" />&nbsp;<span onclick="$('#chkUserEmailAcountActivationOnline').click()">@Localiser["user.email.account.activation.online"]</span>
</div>
<div class="RequestPasswordOnlineOption">
<input type="checkbox" id="chkUserEmailRequestPasswordOnline" class="UserEmailRequestPasswordOnline" name="UserEmailRequestPasswordOnline" value="1" />&nbsp;<span onclick="$('#chkUserEmailRequestPasswordOnline').click()">@Localiser["user.email.request.password.online"]</span>
</div>
<div class="RequestPasswordAdminOption">
<input type="checkbox" id="chkUserEmailRequestPasswordAdmin" class="UserEmailRequestPasswordAdmin" name="UserEmailRequestPasswordAdmin" value="1" />&nbsp;<span onclick="$('#chkUserEmailRequestPasswordAdmin').click()">@Localiser["user.email.request.password.admin"]</span>
</div>
</div>
<div class="sax-message"></div>
</div>
</div>
</div>
}
<div class="spacer"></div>
</div>
@@ -0,0 +1,144 @@
@model Model_UsersOnline
@inject SaxLocaliser Localiser
@{
/* Users Online - Index */
ViewData["Title"] = "Users Online";
}
<div class="sax-panel Users">
<script type="text/javascript">
sax.lbl.refresh = '@(Localiser.GetJavascriptText("label.refresh"))';
sax.lbl.edit = '@(Localiser.GetJavascriptText("label.edit"))';
</script>
<div class="row">
<div class="col-md-5 row">
<div class="col">
@* Filter Panel *@
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmUserFilter", @class = "sax-form", @onSubmit = "return false;" }))
{
<div class="sax-panel-filter">
@* Header - Page caption, paging controls, actions. *@
<div class="sax-header row">
<div class="col"><div class="sax-caption">@Localiser["label.users.online"]</div></div>
<div class="fixed row">
<div class="col">
<partial name="~/Views/Common/ResultsPaging.cshtml" />
</div>
<div class="fixed">
@* Burger menu *@
<ul class="nav navbar-nav navbar-dark navbar-right sax-burger">
<li class="dropdown-toggle caret-off">
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="navbar-toggler-icon"></span></a>
<ul class="dropdown-menu dropdown-menu-right sax-dropdown-menu">@* Menu items will be inserted here. *@</ul>
</li>
</ul>
</div>
</div>
</div>
<div class="sax-content">
@* User filter - email, name etc. *@
<div class="row pb4">
<div class="col-sm-5 sax-label text-left text-sm-right">@Localiser["user.caption.user"]</div>
<div class="col-sm-7">@Html.TextBoxFor(model => model.Filter.User, new { @id = "ifFilterUser", @class = "FilterUser", @maxlength = "32" })</div>
</div>
@* User sport *@
<div class="row pb4">
<div class="col-sm-5 sax-label text-left text-sm-right">@Localiser["label.sport"]</div>
<div class="col-sm-7">
<div class="row">
@Html.HiddenFor(model => model.Filter.UserSportId, new { @id = "", @class = "FilterUserSportId" })
<div class="col"><input type="text" class="FilterUserSportCaption sax-input" readonly="readonly" ondblclick="sax.selectFilterSport()" /> </div>
<div class="fixed row">
<div class="sax-action" onclick="sax.selectFilterSport();"><img src="~/img/action/search24.png" alt="@(Localiser["label.search"])" title="@(Localiser["label.search"])" /></div>
<div class="sax-action" onclick="sax.clearFilterSport();"><img src="~/img/action/delete24.png" alt="@(Localiser["label.clear"])" title="@(Localiser["label.clear"])" /></div>
</div>
</div>
</div>
</div>
@* User region *@
<div class="row pb4">
<div class="col-sm-5 sax-label text-left text-sm-right">@Localiser["label.region"]</div>
<div class="col-sm-7">
<div class="row">
@Html.HiddenFor(model => model.Filter.UserRegionId, new { @id = "", @class = "FilterUserRegionId" })
<div class="col"><input type="text" class="FilterUserRegionCaption sax-input" readonly="readonly" ondblclick="sax.selectFilterRegion()" /> </div>
<div class="fixed row">
<div class="sax-action" onclick="sax.selectFilterRegion();"><img src="~/img/action/search24.png" alt="@(Localiser["label.search"])" title="@(Localiser["label.search"])" /></div>
<div class="sax-action" onclick="sax.clearFilterRegion();"><img src="~/img/action/delete24.png" alt="@(Localiser["label.clear"])" title="@(Localiser["label.clear"])" /></div>
</div>
</div>
</div>
</div>
</div>
@* Filter element templates *@
<div class="sax-panel-item-template">
@* Burger dropdown item template - ul is ignored *@
<ul class="sax-dropdown-menu UserFilter">
<li class="sax-dropdown-item sax-action"><div class="sax-label">XXX</div></li>
</ul>
</div>
</div>
}
</div>
@* Separate filter from results when alondside each other. *@
<div class="fixed"><div class="d-none d-md-block" style="width:8px;"></div></div>
</div>
<div class="col-md">
@* Results Panel *@
<div class="sax-panel-results">
<div class="sax-panel-messages"></div>
<div class="sax-panel-item-list"></div>
@* Element templates *@
<div class="sax-panel-item-template">
@* User item template *@
<div class="sax-panel-item User">
<div class="sax-header row">
<div class="col">
@* User email *@
<div class="sax-caption"><div class="sax-action sax-item-update UserEmailAddress"></div></div>
</div>
<div class="fixed sax-actions">
@* Burger menu *@
<ul class="nav navbar-nav navbar-light navbar-right sax-burger">
<li class="dropdown-toggle caret-off">
<a href="#" class="dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="navbar-toggler-icon"></span></a>
<ul class="dropdown-menu dropdown-menu-right sax-dropdown-menu">@* Menu items will be inserted here. *@</ul>
</li>
</ul>
</div>
</div>
<div class="sax-content">
<div class="row">
<div class="col-sm-4"><span class="UserDisplayName"></span></div>
<div class="col-sm-4"><div class="UserLastLogin">Login: <span class="UserLastLoginAt"></span></div></div>
<div class="col-sm-4"><div class="UserLastLogin">Online: <span class="UserLastOnlineAt"></span></div></div>
</div>
</div>
</div>
@* Burger dropdown item template - ul is ignored *@
<ul class="sax-dropdown-menu User">
<li class="sax-dropdown-item sax-action"><div class="sax-label">XXX</div></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<partial name="~/Views/Common/SelectItem.cshtml" />
@@ -0,0 +1,10 @@
@using System.Web
@using Sarand.Net.Standard.Base.Core
@using Sarand.Net.Standard.Base.Utils
@using Saxonite.Base.App
@using Saxonite.Net.Standard.Base.App
@using Saxonite.Net.Core.Web.Base.App
@using Saxonite.Net.Core.Web.Admin.Models
@using Saxonite.Net.Core.Web.Admin.Models.Reference
@using Saxonite.Net.Core.Web.Admin.Models.Support
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@@ -0,0 +1,4 @@
@inject Saxonite.Net.Core.Web.Base.App.SaxLocaliser Localiser
@{
Layout = "_Layout";
}