From 52232331f82f8ca9a024555e546dc7878026514e Mon Sep 17 00:00:00 2001 From: andy Date: Mon, 16 Oct 2023 16:22:45 +0100 Subject: [PATCH] v1.2.11.1 --- ...ReferenceController-Ajax-ContactMethods.cs | 2 +- .../Views/Organisation/Index.cshtml | 2 +- SaxoniteCoreWebAdmin/wwwroot/css/sax-data.css | 4 +- .../wwwroot/js/sax-cnt-mth.js | 4 +- .../wwwroot/js/sax-org-ass.js | 4 +- .../SearchController-Ajax-Organisations.cs | 40 +++++++++++++++++- .../Helpers/SaxContactMethodHelper_Online.cs | 2 +- .../Views/Search/Organisations.cshtml | 2 +- .../Search/Panel-OrganisationDialog.cshtml | 20 +++++++-- .../wwwroot/css/sax-data.css | 6 +-- .../wwwroot/img/action/network-16.png | Bin 0 -> 362 bytes .../wwwroot/img/action/network-24.png | Bin 0 -> 525 bytes .../wwwroot/img/action/network-32.png | Bin 0 -> 743 bytes .../wwwroot/img/icon/contact/x-16.png | Bin 0 -> 282 bytes .../wwwroot/img/icon/contact/x-24.png | Bin 0 -> 522 bytes .../wwwroot/img/icon/contact/x-24.svg | 1 + .../wwwroot/img/icon/contact/x-32.png | Bin 0 -> 537 bytes .../wwwroot/js/sax-src-org.js | 8 +++- SaxoniteStandardBase/Base/App/Sax-Version.cs | 6 +-- .../Base/App/SaxSystem-CodeTypes.cs | 2 +- .../Base/Helpers/SaxContactMethodHelper.cs | 2 +- 21 files changed, 82 insertions(+), 23 deletions(-) create mode 100644 SaxoniteCoreWebOnline/wwwroot/img/action/network-16.png create mode 100644 SaxoniteCoreWebOnline/wwwroot/img/action/network-24.png create mode 100644 SaxoniteCoreWebOnline/wwwroot/img/action/network-32.png create mode 100644 SaxoniteCoreWebOnline/wwwroot/img/icon/contact/x-16.png create mode 100644 SaxoniteCoreWebOnline/wwwroot/img/icon/contact/x-24.png create mode 100644 SaxoniteCoreWebOnline/wwwroot/img/icon/contact/x-24.svg create mode 100644 SaxoniteCoreWebOnline/wwwroot/img/icon/contact/x-32.png diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/ReferenceController-Ajax-ContactMethods.cs b/SaxoniteCoreWebAdmin/Admin/Controllers/ReferenceController-Ajax-ContactMethods.cs index df7562b..4156494 100644 --- a/SaxoniteCoreWebAdmin/Admin/Controllers/ReferenceController-Ajax-ContactMethods.cs +++ b/SaxoniteCoreWebAdmin/Admin/Controllers/ReferenceController-Ajax-ContactMethods.cs @@ -43,7 +43,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers responseData.SetControlError(nameof(model.ContactValue), Localiser["msg.validation.mandatory.value"]); // Method specific value validation. - if (!SaxContactMethodHelper.IsValidContactMethodValue(method, model.ContactValue)) + if (!model.ContactValue.IsEmpty() && !SaxContactMethodHelper.IsValidContactMethodValue(method, model.ContactValue)) { // Log invalid values so that the validation can be adjusted if needed. SaLogger.Warn(fn + " Invalid contact method value. Mathod: " + method.ToString() + ". Value: " + model.ContactValue); diff --git a/SaxoniteCoreWebAdmin/Views/Organisation/Index.cshtml b/SaxoniteCoreWebAdmin/Views/Organisation/Index.cshtml index 504fdc4..c8d6b4a 100644 --- a/SaxoniteCoreWebAdmin/Views/Organisation/Index.cshtml +++ b/SaxoniteCoreWebAdmin/Views/Organisation/Index.cshtml @@ -146,7 +146,7 @@
- +
diff --git a/SaxoniteCoreWebAdmin/wwwroot/css/sax-data.css b/SaxoniteCoreWebAdmin/wwwroot/css/sax-data.css index 435fdab..5d548ac 100644 --- a/SaxoniteCoreWebAdmin/wwwroot/css/sax-data.css +++ b/SaxoniteCoreWebAdmin/wwwroot/css/sax-data.css @@ -97,13 +97,13 @@ .sax-panel-filter .sax-header .sax-results-paging .sax-action { margin: 2px 1px 0 1px; - background-color: #b0b0b0; + background-color: #c0c0c0; box-shadow: 0 0 0 1px #40404080 inset; } .sax-panel-filter .sax-header .sax-results-paging .sax-action:hover { - background-color: #c0c0c0; + background-color: #e0e0e0; } /* Panel header - Burger */ diff --git a/SaxoniteCoreWebAdmin/wwwroot/js/sax-cnt-mth.js b/SaxoniteCoreWebAdmin/wwwroot/js/sax-cnt-mth.js index e9378c2..97d9557 100644 --- a/SaxoniteCoreWebAdmin/wwwroot/js/sax-cnt-mth.js +++ b/SaxoniteCoreWebAdmin/wwwroot/js/sax-cnt-mth.js @@ -57,8 +57,8 @@ opt.buttons[sax.dlg.btn.ok] = function () { cm.fn.applyChanges(); }; opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); }; $dlg.conMth = $('#dlgContactMethod').dialog(opt); - cm.$mth = $('.sax-select.ContactMethod', $dlg.conMth); - cm.$val = $('.sax-input.ContactValue', $dlg.conMth); + cm.$mth = $('.sax-select.ContactMethod', $dlg.conMth).on('change', function () { sax.clearControlError(this); }); + cm.$val = $('.sax-input.ContactValue', $dlg.conMth).on('input', function () { sax.clearControlError(this); }); }); //-------------------------------------------------------------- diff --git a/SaxoniteCoreWebAdmin/wwwroot/js/sax-org-ass.js b/SaxoniteCoreWebAdmin/wwwroot/js/sax-org-ass.js index f66b80e..36d79ec 100644 --- a/SaxoniteCoreWebAdmin/wwwroot/js/sax-org-ass.js +++ b/SaxoniteCoreWebAdmin/wwwroot/js/sax-org-ass.js @@ -208,7 +208,7 @@ //-------------------------------------------------------------- oa.removeItem = function (item, $item) { - sax.debug('removeItem') + //sax.debug('removeItem') oa.clearItem(); let frm = $frm.assoc; $('.ItemAssociationId', frm).val(item.id); @@ -219,7 +219,7 @@ } oa.onRemoveItem = function (response) { - sax.debug('', response) + //sax.debug('', response) if (!response.success) return; oa.refreshResults(); } diff --git a/SaxoniteCoreWebOnline/Online/Controllers/SearchController-Ajax-Organisations.cs b/SaxoniteCoreWebOnline/Online/Controllers/SearchController-Ajax-Organisations.cs index 374ef8d..0bc965b 100644 --- a/SaxoniteCoreWebOnline/Online/Controllers/SearchController-Ajax-Organisations.cs +++ b/SaxoniteCoreWebOnline/Online/Controllers/SearchController-Ajax-Organisations.cs @@ -18,6 +18,7 @@ using Saxonite.Net.Standard.Base.App; using Saxonite.Net.Core.Web.Online.Helpers; using Org.BouncyCastle.Security; using static Saxonite.Net.Standard.Base.App.Sax; +using System.Text.Json.Serialization; namespace Saxonite.Net.Core.Web.Online.Controllers { @@ -152,6 +153,9 @@ namespace Saxonite.Net.Core.Web.Online.Controllers /// private class AssociationOrganisationData { + [JsonIgnore] + public SysId OrganisationId { get; set; } + public String Id { get; set; } public String Name { get; set; } public String Display { @@ -165,6 +169,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers } public String Region { get; set; } public String Sport { get; set; } + public String LogoUrl { get; set; } } private class OrganisationItemData : OrganisationListData { @@ -198,7 +203,6 @@ namespace Saxonite.Net.Core.Web.Online.Controllers if (!ValidUserSession) return GetAjaxResult_InvalidSession(responseData); RefreshModel(model); - // Record disposable items as they are created so all can be disposed when needed. using (DisposableCollection disposableItems = new DisposableCollection()) { @@ -281,6 +285,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers colItemTypeFrom, colItemIdFrom, colOrganisationFrom_Name, colOrganisationFrom_SportIdPrimary, colOrganisationFrom_RegionIdPrimary, colItemTypeTo, colItemIdTo, colOrganisationTo_Name, colOrganisationTo_SportIdPrimary, colOrganisationTo_RegionIdPrimary }; + List assocOrganisationIds = new List(); SaxItemAssociation.Params prmAssociations = new SaxItemAssociation.Params(); prmAssociations.ItemIdsIncluded.Add(organisation.GetItemId()); prmAssociations.StatusCat = SaxItemAssociation.StatusCat.ActiveOnly; @@ -308,6 +313,9 @@ namespace Saxonite.Net.Core.Web.Online.Controllers { // 'From' item is the 'Other' organisation. AssociationOrganisationData assocOrgData = new AssociationOrganisationData(); + assocOrgData.OrganisationId = itemIdFrom.Id; + assocOrganisationIds.AddId(assocOrgData.OrganisationId); + assocOrgData.Id = model.EncryptId(assocOrgData.OrganisationId); assocOrgData.Name = values.GetString(colOrganisationFrom_Name.DataName); if (!orgSportIdFrom.Equals(orgSportIdTo)) assocOrgData.Sport = model.GetSportCaption(orgSportIdFrom); @@ -319,6 +327,9 @@ namespace Saxonite.Net.Core.Web.Online.Controllers { // 'To' item is the 'Other' organisation. AssociationOrganisationData assocOrgData = new AssociationOrganisationData(); + assocOrgData.OrganisationId = itemIdTo.Id; + assocOrganisationIds.AddId(assocOrgData.OrganisationId); + assocOrgData.Id = model.EncryptId(assocOrgData.OrganisationId); assocOrgData.Name = values.GetString(colOrganisationTo_Name.DataName); if (!orgSportIdFrom.Equals(orgSportIdTo)) assocOrgData.Sport = model.GetSportCaption(orgSportIdTo); @@ -328,6 +339,33 @@ namespace Saxonite.Net.Core.Web.Online.Controllers } } } + + // Populate Associated Orgaisation Logo URLs. + if (assocOrganisationIds.Any()) + { + ColumnDfn colAssocOrganisation_Id = AccountMgr.GetOrganisationColumnDfn(SaxOrganisation.Column.Id); + ColumnDfn colAssocOrganisation_LogoCount = AccountMgr.GetOrganisationColumnDfn(SaxOrganisation.Column.LogoImage_Count); + List columns = new List() { colAssocOrganisation_Id, colAssocOrganisation_LogoCount }; + SaxOrganisation.Params prmAssocOrganisation = new SaxOrganisation.Params(); + prmAssocOrganisation.IdsIncluded.AddIds(assocOrganisationIds); + using (DbResultSet resultSet = AccountMgr.ExecuteOrganisationQuery(columns, prmAssocOrganisation)) + { + while (resultSet != null && resultSet.HasRows && resultSet.NextRecord()) + { + NamedValue.Map values = resultSet.GetRecordValues(); + SysId assocOrganisationId = new SysId(values.GetLong(colAssocOrganisation_Id.DataName)); + if (values.GetLong(colAssocOrganisation_LogoCount.DataName) > 0) + { + foreach (List assocOrganisations in associationTypeGroups.Values) + { + foreach (AssociationOrganisationData assocOrganisation in assocOrganisations.Where(item => item.OrganisationId.Equals(assocOrganisationId))) + assocOrganisation.LogoUrl = GetOrganisationLogoLink(assocOrganisation.OrganisationId, false); + } + } + } + } + } + // Populate associations to response. foreach (SaxItemAssociation.TypeOptionData associationTypeGroup in associationTypeGroups.Keys.OrderBy(item => (int)item.TypeOption)) { diff --git a/SaxoniteCoreWebOnline/Online/Helpers/SaxContactMethodHelper_Online.cs b/SaxoniteCoreWebOnline/Online/Helpers/SaxContactMethodHelper_Online.cs index bd534c4..3a2a5be 100644 --- a/SaxoniteCoreWebOnline/Online/Helpers/SaxContactMethodHelper_Online.cs +++ b/SaxoniteCoreWebOnline/Online/Helpers/SaxContactMethodHelper_Online.cs @@ -41,7 +41,7 @@ namespace Saxonite.Net.Core.Web.Online.Helpers case Sax.ContactMethod.LinkedIn: return "" + ConstructImageElement("icon/contact/linkedin-24.png") + value + " "; case Sax.ContactMethod.Twitter: - return "" + ConstructImageElement("icon/contact/twitter-24.png") + value + " "; + return "" + ConstructImageElement("icon/contact/x-24.png") + value + " "; case Sax.ContactMethod.Facebook: return "" + ConstructImageElement("icon/contact/facebook-24.png") + value + " "; case Sax.ContactMethod.Instagram: diff --git a/SaxoniteCoreWebOnline/Views/Search/Organisations.cshtml b/SaxoniteCoreWebOnline/Views/Search/Organisations.cshtml index 8005a63..63591ab 100644 --- a/SaxoniteCoreWebOnline/Views/Search/Organisations.cshtml +++ b/SaxoniteCoreWebOnline/Views/Search/Organisations.cshtml @@ -146,7 +146,7 @@
-
+
diff --git a/SaxoniteCoreWebOnline/Views/Search/Panel-OrganisationDialog.cshtml b/SaxoniteCoreWebOnline/Views/Search/Panel-OrganisationDialog.cshtml index f309297..40c41fd 100644 --- a/SaxoniteCoreWebOnline/Views/Search/Panel-OrganisationDialog.cshtml +++ b/SaxoniteCoreWebOnline/Views/Search/Panel-OrganisationDialog.cshtml @@ -14,7 +14,7 @@ { min-height: 40px; max-height: 170px; - padding: 2px 4px; + padding: 4px 4px 2px 4px; border: 1px solid #a0a0a0; border-top-left-radius: 4px; border-bottom-left-radius: 4px; @@ -23,13 +23,27 @@ #dlgOrganisation .OrganisationAssociations .sax-value .sax-assoc-type { + padding: 2px 4px 2px 4px; font-weight: bold; - text-decoration: underline; + background-color: #e0e0e0; } #dlgOrganisation .OrganisationAssociations .sax-value .sax-assoc-org { - padding-left: 12px; + margin: 2px 0 0 12px; + padding: 0 0 0 8px; + } + + #dlgOrganisation .OrganisationAssociations .sax-value .sax-assoc-org:hover + { + cursor: pointer; + text-decoration: underline; + } + + #dlgOrganisation .OrganisationAssociations .sax-value .sax-assoc-org img.icon + { + height: 24px; + margin-right:4px; }