From 86af79fc55eb4f10c64907534a66a11a3a973b5b Mon Sep 17 00:00:00 2001 From: Eleonora Petzold Date: Thu, 5 Feb 2026 10:45:43 +0100 Subject: [PATCH 1/7] setting for dev instance BE --- Console/BExIS.Web.Shell/General.Settings.json | 182 +++++++++--------- 1 file changed, 91 insertions(+), 91 deletions(-) diff --git a/Console/BExIS.Web.Shell/General.Settings.json b/Console/BExIS.Web.Shell/General.Settings.json index f20526dc6..dc89442fa 100644 --- a/Console/BExIS.Web.Shell/General.Settings.json +++ b/Console/BExIS.Web.Shell/General.Settings.json @@ -4,15 +4,17 @@ "description": "The default landing page for the search in the form of , , . The application's home page will redirect here. The module must be available and active. Otherwise, another redirect happens to the home page, which causes a loop. The designated action must be set to public in the feature permission mgmt, otherwise the request will be redirected to the login page. The 'type' attribute must be compatible with the System.TypeCode case-sensitive.", "entries": [ { + "description": "The application name is used in several places in the system. e.g. as title in the email", "key": "applicationName", "title": "Application Name", - "value": "AppLocal", "type": "String", - "description": "(Short) name of the BEXIS2 instance. The name is e.g., used in the breadcrumb or as prefix in emails sent via the system. Avoid special characters or to long names." + "value": "BExIS-Dev" }, { + "description": "The application name is used in several places in the system. e.g. as title in the email", "key": "jwt", "title": "JWT", + "type": "JSON", "value": { "validateAudience": false, "validateIssuer": false, @@ -21,26 +23,24 @@ "issuerSigningKey": "JWTAuthenticationHIGHsecuredPasswordVVVp1OH7Xzyr", "validateLifetime": false, "validLifetime": 1 - }, - "type": "JSON", - "description": "JWT settings.
Do not change any keys!" + } }, { + "description": "The application name is used in several places in the system. e.g. as title in the email", "key": "smtp", - "title": "SMTP Configurations", + "title": "SMTP", + "type": "JSON", "value": { "hostName": "smtp.uni-jena.de", "hostPort": 587, "hostAnonymous": false, "hostSecureSocketOptions": 1, "hostCertificateRevocation": false, - "accountName": "", - "accountPassword": "", - "fromName": "", - "fromAddress": "" - }, - "type": "JSON", - "description": "SMPT settings.
Do not change any keys!" + "accountName": "we95lez", + "accountPassword": ".bl2039", + "fromName": "bexis", + "fromAddress": "bexis@listserv.uni-jena.de" + } }, { "key": "ldaps", @@ -116,84 +116,84 @@ "value": "https://github.com/BEXIS2/Core/wiki/FAQ" } ] - }, - { - "key": "landingPage", - "title": "Landing Page (without login)", - "value": "ddm, publicsearch, index", - "type": "String", - "description": "User is not logging in -> app goes to e.g. (ddm, publicsearch, index). If no destination is entered, the landingpage.htm is loaded from the tenant/content/landingpage.htm" - }, - { - "key": "showMenuOnLandingPage", - "title": "Show menu on landing page", - "value": "true", - "type": "Boolean", - "description": "Show or hide menu on your own created landing page" - }, - { - "key": "showHeaderOnLandingPage", - "title": "Show header on landing page", - "value": "true", - "type": "Boolean", - "description": "Show or hide header on your own created landing page" - }, - { - "key": "showFooterOnLandingPage", - "title": "Show footer on landing page", - "value": "true", - "type": "Boolean", - "description": "Show or hide footer on your own created landing page" - }, - { - "key": "landingPageForUsers", - "title": "Landing Page after login for users with permission", - "value": "ddm, search, index", - "type": "String", - "description": "User logged in, but does not have permission to view the page; shell, home, nopermission is by default; Alternatives must be in a module NOT shell" - }, - { - "key": "landingPageForUsersNoPermission", - "title": "Landing Page after login for users with no permission", - "value": "shell, home, nopermission", - "type": "String", - "description": "Landing page for users, after logging in successfully without permission." - }, - { - "key": "systemEmail", - "title": "System E-Mail Address", - "value": "david.schoene@uni-jena.de", - "type": "String", - "description": "All administrative information will be sent to this email." - }, - { - "key": "usePersonEmailAttributeName", - "title": "Use Person E-Mail Attribute Name", - "value": false, - "type": "Boolean", - "description": "To activate the linkage between between user email and a party email set Use Person E-Mail Attribute Name to true and define the party party attribute. If one of the email addresses is changed the other is changed as well." - }, - { - "key": "personEmailAttributeName", - "title": "Person E-Mail Attribute Name", - "value": "Email", - "type": "String", - "description": "To activate the linkage between between user email and a party email set Use Person E-Mail Attribute Name to true and define the party party attribute. If one of the email addresses is changed the other is changed as well." - }, - { - "key": "useMultimediaModule", - "title": "Use Multimedia Module?", - "value": true, - "type": "Boolean", - "description": "This flag turns on/off the Multimedia Module." - }, - { - "key": "faq", - "title": "FAQ", - "value": "https://github.com/BEXIS2/Core/wiki/FAQ", - "type": "String", - "description": "FAQ URL. Can link to an external page." - } + }, + { + "key": "landingPage", + "title": "Landing Page (without login)", + "value": "ddm, publicsearch, index", + "type": "String", + "description": "User is not logging in -> app goes to e.g. (ddm, publicsearch, index). If no destination is entered, the landingpage.htm is loaded from the tenant/content/landingpage.htm" + }, + { + "key": "showMenuOnLandingPage", + "title": "Show menu on landing page", + "value": "true", + "type": "Boolean", + "description": "Show or hide menu on your own created landing page" + }, + { + "key": "showHeaderOnLandingPage", + "title": "Show header on landing page", + "value": "true", + "type": "Boolean", + "description": "Show or hide header on your own created landing page" + }, + { + "key": "showFooterOnLandingPage", + "title": "Show footer on landing page", + "value": "true", + "type": "Boolean", + "description": "Show or hide footer on your own created landing page" + }, + { + "key": "landingPageForUsers", + "title": "Landing Page after login for users with permission", + "value": "ddm, search, index", + "type": "String", + "description": "User logged in, but does not have permission to view the page; shell, home, nopermission is by default; Alternatives must be in a module NOT shell" + }, + { + "key": "landingPageForUsersNoPermission", + "title": "Landing Page after login for users with no permission", + "value": "shell, home, nopermission", + "type": "String", + "description": "Landing page for users, after logging in successfully without permission." + }, + { + "key": "systemEmail", + "title": "System E-Mail Address", + "value": "david.schoene@uni-jena.de", + "type": "String", + "description": "All administrative information will be sent to this email." + }, + { + "key": "usePersonEmailAttributeName", + "title": "Use Person E-Mail Attribute Name", + "value": false, + "type": "Boolean", + "description": "To activate the linkage between between user email and a party email set Use Person E-Mail Attribute Name to true and define the party party attribute. If one of the email addresses is changed the other is changed as well." + }, + { + "key": "personEmailAttributeName", + "title": "Person E-Mail Attribute Name", + "value": "Email", + "type": "String", + "description": "To activate the linkage between between user email and a party email set Use Person E-Mail Attribute Name to true and define the party party attribute. If one of the email addresses is changed the other is changed as well." + }, + { + "key": "useMultimediaModule", + "title": "Use Multimedia Module?", + "value": true, + "type": "Boolean", + "description": "This flag turns on/off the Multimedia Module." + }, + { + "key": "faq", + "title": "FAQ", + "value": "https://github.com/BEXIS2/Core/wiki/FAQ", + "type": "String", + "description": "FAQ URL. Can link to an external page." + } ] } From 6392f9b59c00a459f41901328d1ce4c7ccd290a7 Mon Sep 17 00:00:00 2001 From: Eleonora Petzold Date: Thu, 5 Feb 2026 10:48:23 +0100 Subject: [PATCH 2/7] settings BE instance --- .../BExIS.Modules.Dcm.UI/Dcm.Settings.json | 52 ++++++++----------- 1 file changed, 23 insertions(+), 29 deletions(-) diff --git a/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI/Dcm.Settings.json b/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI/Dcm.Settings.json index cf0d8aede..dc6c124fb 100644 --- a/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI/Dcm.Settings.json +++ b/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI/Dcm.Settings.json @@ -1,72 +1,66 @@ { - "id": "dcm", - "name": "Dataset Creation", "description": "...", "entries": [ - { + "description": "This number of cells determines whether an upload of structured data should be executed directly or async.", "key": "celllimit", "title": "Number of cells for direct upload instead of async", - "value": 2000, - "description": "This number of cells determines whether an upload of structured data should be executed directly or async.", "type": "Int32", - "options": [] + "value": 2000 }, { - "key": "fileuploadDescription", - "title": "File upload description", - "value": "required", "description": "If it is activated, adding a description per file is possible.", - "type": "String", + "key": "fileuploadDescription", "options": [ "none", "active", "required" - ] + ], + "title": "File upload description", + "type": "String", + "value": "required" }, { + "description": "Allow multiple files to be uploaded at the same time.", "key": "allowMultiFileupload", "title": "Multiple file upload", - "value": true, - "description": "Allow multiple files to be uploaded at the same time.", "type": "Boolean", - "options": [] + "value": true }, { - "key": "attachmentDescription", - "title": "Attachment description", - "value": "active", "description": "If it is activated, adding a description per file is possible.", - "type": "String", + "key": "attachmentDescription", "options": [ "none", "active", "required" - ] + ], + "title": "Attachment description", + "type": "String", + "value": "active" }, { + "description": "Allow multiple files to be uploaded at the same time.", "key": "allowMultiAttachmentUpload", "title": "Multiple attachment upload", - "value": false, - "description": "Allow multiple files to be uploaded at the same time.", "type": "Boolean", - "options": [] + "value": true }, { + "description": "Enables the loading of an external metadata form when editing entities", "key": "useExternalMetadataForm", "title": "Use external metadata form", - "value": false, - "description": "Enables the loading of an external metadata form when editing entities", "type": "Boolean", - "options": [] + "value": false }, { + "description": "Define the origin from where the external metadata form should be loaded", "key": "externalMetadataFormUrl", "title": "External metadata form destination url", - "value": "", - "description": "Define the origin from where the external metadata form should be loaded", "type": "String", - "options": [] + "value": "" } - ] + ], + "id": "dcm", + "name": "Dataset Creation" } \ No newline at end of file From 1322c2fece10136cb35f8d1ff174cca1676f0d87 Mon Sep 17 00:00:00 2001 From: Eleonora Petzold Date: Mon, 9 Feb 2026 15:10:40 +0100 Subject: [PATCH 3/7] option buttons on the right place https://github.com/bexis/BExIS-intern/issues/835 --- .../Areas/DCM/BExIS.Modules.Dcm.UI/Content/bexis-metadata.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI/Content/bexis-metadata.css b/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI/Content/bexis-metadata.css index 9497958b3..fe328557e 100644 --- a/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI/Content/bexis-metadata.css +++ b/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI/Content/bexis-metadata.css @@ -50,7 +50,7 @@ Green 05 #eff7f6 .optionContainer { float: right; - /*margin-top: -28px;*/ + margin-top: -28px; } .optionContainer table, From ee0d3c598f8bcc423aa8cc869c593f96af6a737e Mon Sep 17 00:00:00 2001 From: Eleonora Petzold Date: Thu, 5 Mar 2026 14:15:50 +0100 Subject: [PATCH 4/7] My Data - adapt the labels of the tabs https://github.com/bexis/BExIS-intern/issues/844 --- .../Views/Dashboard/_myDatasetsViewHeader.cshtml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Views/Dashboard/_myDatasetsViewHeader.cshtml b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Views/Dashboard/_myDatasetsViewHeader.cshtml index a7e37f2c4..bd4deb64b 100644 --- a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Views/Dashboard/_myDatasetsViewHeader.cshtml +++ b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Views/Dashboard/_myDatasetsViewHeader.cshtml @@ -13,8 +13,8 @@ { } From ba8bfd8d67d79f89d33d2d2c92a094f445d2f027 Mon Sep 17 00:00:00 2001 From: Andreas Ostrowski Date: Mon, 16 Mar 2026 14:24:22 +0100 Subject: [PATCH 5/7] Update robots.txt see https://github.com/bexis/BExIS-intern/issues/864 --- Console/BExIS.Web.Shell/robots.txt | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/Console/BExIS.Web.Shell/robots.txt b/Console/BExIS.Web.Shell/robots.txt index faf5d15ee..4b19513ee 100644 --- a/Console/BExIS.Web.Shell/robots.txt +++ b/Console/BExIS.Web.Shell/robots.txt @@ -1,15 +1,5 @@ User-agent: * -Disallow: /Views/ -Disallow: /App_Data/ -Disallow: /App_Start/ -Disallow: /Content/ -Disallow: /Scripts/ -Disallow: /favicon.ico -Disallow: /robots.txt -Allow: /footer/imprint -Allow: /footer/contactus -Allow: /footer/policy -Allow: /ddm/home/index -Allow: /Content/images/ -Allow: /Content/css/ -Allow: /Content/js/ \ No newline at end of file +Disallow: / +Allow: /footer/ +Allow: /ddm/data/Showdata/ +Disallow: /ddm/data/Showdata/*/ From bfd92a331b8f5c69f1ed8a94e6d0227a2d225eca Mon Sep 17 00:00:00 2001 From: david schoene Date: Tue, 10 Mar 2026 11:46:40 +0100 Subject: [PATCH 6/7] #2397 fix missing custom help entries from settings. --- Components/Utils/BExIS.Utils/BExIS.Utils.csproj | 8 ++++++++ .../WebHelpers/HtmlNavigationExtensions.cs | 15 ++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/Components/Utils/BExIS.Utils/BExIS.Utils.csproj b/Components/Utils/BExIS.Utils/BExIS.Utils.csproj index a453805a7..8825eb75e 100644 --- a/Components/Utils/BExIS.Utils/BExIS.Utils.csproj +++ b/Components/Utils/BExIS.Utils/BExIS.Utils.csproj @@ -407,10 +407,18 @@ {0815d220-3625-4e23-bbbc-8152345637fe} Vaiona.Entities + + {63FCACAA-9534-4FDD-A082-78DCC06BAF28} + Vaiona.Utils + {705f8751-e58a-453e-a7fd-0c310fd3cae8} Vaiona.Web.Mvc.Modularity + + {6EAD7D02-02F7-42FF-85E4-90BB892D3846} + BExIS.Utils.Config + diff --git a/Components/Utils/BExIS.Utils/WebHelpers/HtmlNavigationExtensions.cs b/Components/Utils/BExIS.Utils/WebHelpers/HtmlNavigationExtensions.cs index 5837aa220..e3b69aeff 100644 --- a/Components/Utils/BExIS.Utils/WebHelpers/HtmlNavigationExtensions.cs +++ b/Components/Utils/BExIS.Utils/WebHelpers/HtmlNavigationExtensions.cs @@ -1,6 +1,7 @@ using BExIS.Security.Entities.Subjects; using BExIS.Security.Services.Authorization; using BExIS.Security.Services.Objects; +using BExIS.Utils.Config; using System; using System.Collections.Generic; using System.Linq; @@ -31,6 +32,8 @@ public static MvcHtmlString LaunchBar(this HtmlHelper htmlHelper) foreach (var launchBarItem in lunchBarRoot.Elements()) { + + if (launchBarItem.HasElements) { sb.Append($""); } else @@ -72,6 +84,7 @@ public static MvcHtmlString LaunchBar(this HtmlHelper htmlHelper) sb.Append("'>").Append(launchBarItem.Attribute("title").Value).Append(""); } + } return new MvcHtmlString(sb.ToString()); From 852f450043375cff0977c128fe64bddb9bd22c6c Mon Sep 17 00:00:00 2001 From: david schoene Date: Tue, 10 Mar 2026 11:02:40 +0100 Subject: [PATCH 7/7] #2400 add new display-pattern. "yyyy-MM-dd hh:mm:ss" --- .../DataTypeDisplayPattern.cs | 3 ++- Components/IO/BExIS.IO.Tests/IOUtilityTests.cs | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Components/IO/BExIS.IO.DataType.DisplayPattern/DataTypeDisplayPattern.cs b/Components/IO/BExIS.IO.DataType.DisplayPattern/DataTypeDisplayPattern.cs index 2c96b95f3..1ec90fb2f 100644 --- a/Components/IO/BExIS.IO.DataType.DisplayPattern/DataTypeDisplayPattern.cs +++ b/Components/IO/BExIS.IO.DataType.DisplayPattern/DataTypeDisplayPattern.cs @@ -41,7 +41,8 @@ public class DataTypeDisplayPattern new DataTypeDisplayPattern() {Id=27,Systemtype = DataTypeCode.DateTime, Name = "Minute", ExcelPattern=@"mm", DisplayPattern="mm", StringPattern = "mm", RegexPattern = null}, new DataTypeDisplayPattern() {Id=28,Systemtype = DataTypeCode.DateTime, Name = "Secound", ExcelPattern=@"ss", DisplayPattern="ss", StringPattern = "ss", RegexPattern = null}, new DataTypeDisplayPattern() {Id=29,Systemtype = DataTypeCode.DateTime, Name = "DateEu with time24", ExcelPattern=@"dd\.MM\.yyyy HH:mm:ss", DisplayPattern="dd.MM.yyyy HH:mm:ss", StringPattern = "dd.MM.yyyy HH:mm:ss", RegexPattern = null}, - new DataTypeDisplayPattern() {Id=30,Systemtype = DataTypeCode.DateTime, Name = "DateTimeIso without sec", ExcelPattern=@"yyyy-MM-dd\Thh:mm", DisplayPattern="yyyy-MM-ddThh:mm", StringPattern = "yyyy-MM-ddTHH:mm", RegexPattern = null} + new DataTypeDisplayPattern() {Id=30,Systemtype = DataTypeCode.DateTime, Name = "DateTimeIso without sec", ExcelPattern=@"yyyy-MM-dd\Thh:mm", DisplayPattern="yyyy-MM-ddThh:mm", StringPattern = "yyyy-MM-ddTHH:mm", RegexPattern = null}, + new DataTypeDisplayPattern() {Id=31,Systemtype = DataTypeCode.DateTime, Name = "DateTimeIso withou T", ExcelPattern=@"yyyy-MM-dd hh:mm:ss", DisplayPattern="yyyyy-MM-dd hh:mm:ss", StringPattern = "yyyy-MM-dd hh:mm:ss", RegexPattern = null} }; diff --git a/Components/IO/BExIS.IO.Tests/IOUtilityTests.cs b/Components/IO/BExIS.IO.Tests/IOUtilityTests.cs index fdad61b14..ab1619457 100644 --- a/Components/IO/BExIS.IO.Tests/IOUtilityTests.cs +++ b/Components/IO/BExIS.IO.Tests/IOUtilityTests.cs @@ -34,6 +34,7 @@ public void OneTimeTearDown() { } + [TestCase("2026-12-24 05:05:50", "yyyy-MM-dd hh:mm:ss", "12/24/2026 5:05:50 AM", true, "en-US")] [TestCase("12:00 pm", "hh:mm tt", "1/1/0001 12:00:00 PM", true, "en-US")] [TestCase("12:00:00 pm", "hh:mm:ss tt", "1/1/0001 12:00:00 PM", true, "en-US")] [TestCase("2023-29-12", "yyyy-d-M", "12/29/2023 12:00:00 AM", true)] @@ -118,6 +119,9 @@ public void ConvertStringToDateTimeWithpatternTest(string input, string pattern, else result.ToString( new CultureInfo("en-US", false)).Should().BeNullOrEmpty(); } } + + + [TestCase("2026-12-24 05:05:50", "yyyy-MM-dd hh:mm:ss", "12/24/2026 5:05:50 AM", true, "en-US")] [TestCase("12:00 pm", "hh:mm tt", "1/1/0001 12:00:00 PM", true, "en-US")] [TestCase("12:00:00 pm", "hh:mm:ss tt", "1/1/0001 12:00:00 PM", true, "en-US")] [TestCase("2023-29-12", "yyyy-d-M", "12/29/2023 12:00:00 AM", true)]