diff --git a/BExIS++.sln b/BExIS++.sln index fe37c0864e..ec080ceb21 100644 --- a/BExIS++.sln +++ b/BExIS++.sln @@ -1606,8 +1606,8 @@ Global {37402CAB-EB81-4D08-8791-8653949C0FEB} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {9B6E4921-8EBA-487D-A098-3E473A0EAC64} EnterpriseLibraryConfigurationToolBinariesPath = packages\Unity.2.1.505.0\lib\NET35;packages\Unity.2.1.505.2\lib\NET35 + SolutionGuid = {9B6E4921-8EBA-487D-A098-3E473A0EAC64} EndGlobalSection GlobalSection(SubversionScc) = preSolution Svn-Managed = True diff --git a/CITATION.cff b/CITATION.cff index 4497c053e1..b02b19aff7 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -1,8 +1,8 @@ cff-version: 1.2.0 message: "If you use BEXIS2 in your research, please cite it using the following metadata." title: "BEXIS2" -version: 4.1.0 -date-released: 15.08.2025 +version: 4.2.1 +date-released: 05.01.2026 authors: - family-names: "Zander" given-names: "Franziska" diff --git a/Components/App/BExIS.App.Bootstrap/Attributes/BExISAuthorizeAttribute.cs b/Components/App/BExIS.App.Bootstrap/Attributes/BExISAuthorizeAttribute.cs index 34fd6b14d3..0893ef22d7 100644 --- a/Components/App/BExIS.App.Bootstrap/Attributes/BExISAuthorizeAttribute.cs +++ b/Components/App/BExIS.App.Bootstrap/Attributes/BExISAuthorizeAttribute.cs @@ -50,9 +50,6 @@ public override void OnAuthorization(AuthorizationContext filterContext) if (!featurePermissionManager.HasAccessAsync(user.Id, feature.Id).Result) { filterContext.SetResponse(HttpStatusCode.Forbidden); - - - } // update jwt cookie diff --git a/Components/IO/BExIS.IO.Tests/IOUtilityTests.cs b/Components/IO/BExIS.IO.Tests/IOUtilityTests.cs index 1a017ad487..fdad61b143 100644 --- a/Components/IO/BExIS.IO.Tests/IOUtilityTests.cs +++ b/Components/IO/BExIS.IO.Tests/IOUtilityTests.cs @@ -83,10 +83,10 @@ public void OneTimeTearDown() [TestCase("13:00 AM", "hh:mm tt", "1/1/0001 11:00:00 PM", false)] [TestCase("2017", "yyyy", "1/1/2017 12:00:00 AM", true)] [TestCase("1", "MM", "1/1/0001 12:00:00 AM", true)] - [TestCase("jan", "MMM", "1/1/2025 12:00:00 AM", true)] + [TestCase("jan", "MMM", "1/1/2026 12:00:00 AM", true)] [TestCase("01", "MM", "1/1/0001 12:00:00 AM", true)] - [TestCase("january", "MMMM", "1/1/2025 12:00:00 AM", true)] - [TestCase("Januar", "MMMM", "1/1/2025 12:00:00 AM", true, "de-de")] + [TestCase("january", "MMMM", "1/1/2026 12:00:00 AM", true)] + [TestCase("Januar", "MMMM", "1/1/2026 12:00:00 AM", true, "de-de")] [TestCase("24/10/2017", "MM/dd/yyyy", "10/24/2017 12:00:00 AM", false)] [TestCase("2006-2-2", "yyyy-M-d", "2/2/2006 12:00:00 AM", true)] [TestCase("2006-02-02", "yyyy-MM-dd", "2/2/2006 12:00:00 AM", true)] @@ -167,10 +167,10 @@ public void ConvertStringToDateTimeWithpatternTest(string input, string pattern, [TestCase("13:00 AM", "hh:mm tt", "1/1/0001 11:00:00 PM", false)] [TestCase("2017", "yyyy", "1/1/2017 12:00:00 AM", true)] [TestCase("1", "MM", "1/1/0001 12:00:00 AM", true)] - [TestCase("jan", "MMM", "1/1/2025 12:00:00 AM", true)] + [TestCase("jan", "MMM", "1/1/2026 12:00:00 AM", true)] [TestCase("01", "MM", "1/1/0001 12:00:00 AM", true)] - [TestCase("january", "MMMM", "1/1/2025 12:00:00 AM", true)] - [TestCase("Januar", "MMMM", "1/1/2025 12:00:00 AM", true, "de-de")] + [TestCase("january", "MMMM", "1/1/2026 12:00:00 AM", true)] + [TestCase("Januar", "MMMM", "1/1/2026 12:00:00 AM", true, "de-de")] [TestCase("24/10/2017", "MM/dd/yyyy", "10/24/2017 12:00:00 AM", false)] [TestCase("2006-2-2", "yyyy-M-d", "2/2/2006 12:00:00 AM", true)] [TestCase("2006-02-02", "yyyy-MM-dd", "2/2/2006 12:00:00 AM", true)] diff --git a/Components/Utils/BExIS.Utils.Data/Helpers/ShellSeedDataGenerator.cs b/Components/Utils/BExIS.Utils.Data/Helpers/ShellSeedDataGenerator.cs index b87a617b98..019254f8f1 100644 --- a/Components/Utils/BExIS.Utils.Data/Helpers/ShellSeedDataGenerator.cs +++ b/Components/Utils/BExIS.Utils.Data/Helpers/ShellSeedDataGenerator.cs @@ -40,9 +40,9 @@ public void GenerateSeedData() var o12 = operationManager.Find("Shell", "Settings", "*") ?? operationManager.Create("Shell", "Settings", "*", settings); - if (!versionManager.Exists("Shell", "4.2.0")) + if (!versionManager.Exists("Shell", "4.2.1")) { - versionManager.Create("Shell", "4.2.0"); + versionManager.Create("Shell", "4.2.1"); } } } diff --git a/Components/Utils/BExIS.Utils/Helpers/ManualHelper.cs b/Components/Utils/BExIS.Utils/Helpers/ManualHelper.cs index df20f063cc..7f06929e46 100644 --- a/Components/Utils/BExIS.Utils/Helpers/ManualHelper.cs +++ b/Components/Utils/BExIS.Utils/Helpers/ManualHelper.cs @@ -10,7 +10,6 @@ public static string GetUrl(string url) if (string.IsNullOrEmpty(url)) return docsUrl+"general"; //2. URL is set and no url -> generate link to internal documentation - if (url.Contains("http")) return url; diff --git a/Components/XML/BExIS.Xml.Helpers.UnitTests/ConvertTo_JsonToXmlArray.xml b/Components/XML/BExIS.Xml.Helpers.UnitTests/ConvertTo_JsonToXmlArray.xml index 02db5c07da..2547a8c9dd 100644 --- a/Components/XML/BExIS.Xml.Helpers.UnitTests/ConvertTo_JsonToXmlArray.xml +++ b/Components/XML/BExIS.Xml.Helpers.UnitTests/ConvertTo_JsonToXmlArray.xml @@ -1,480 +1,224 @@ - - - - - NA + + + + + + - - <TitleDatatype_string type="MetadataAttribute" name="TitleDatatype_string" roleId="64" id="87" number="1">Extreme drought impacts have been underestimated in grasslands and shrublands globally</TitleDatatype_string> + <Title type="MetadataAttributeUsage" name="Title" id="64"> + <TitleDatatype_string type="MetadataAttribute" name="TitleDatatype_string" roleId="64" id="87" number="1">my publication</TitleDatatype_string> - - Climate change is increasing the frequency and severity of short-term (~1 y) drought events—the most common duration of drought—globally. Yet the impact of this intensification of drought on ecosystem functioning remains poorly resolved. This is due in part to the widely disparate approaches ecologists have employed to study drought, variation in the severity and duration of drought studied, and differences among ecosystems in vegetation, edaphic and climatic attributes that can mediate drought impacts. To overcome these problems and better identify the factors that modulate drought responses, we used a coordinated distributed experiment to quantify the impact of short-term drought on grassland and shrubland ecosystems. With a standardized approach, we imposed ~a single year of drought at 100 sites on six continents. Here we show that loss of a foundational ecosystem function—aboveground net primary production (ANPP)—was 60% greater at sites that experienced statistically extreme drought (1-in-100-y event) vs. those sites where drought was nominal (historically more common) in magnitude (35% vs. 21%, respectively). This reduction in a key carbon cycle process with a single year of extreme drought greatly exceeds previously reported losses for grasslands and shrublands. Our global experiment also revealed high variability in drought response but that relative reductions in ANPP were greater in drier ecosystems and those with fewer plant species. Overall, our results demonstrate with unprecedented rigor that the global impacts of projected increases in drought severity have been significantly underestimated and that drier and less diverse sites are likely to be most vulnerable to extreme drought. + + asbjdh gajhsdg jahgfsd aghsdas - - Smith, Melinda D. - Wilkins, Kate D. - Holdrege, Martin C. - Wilfahrt, Peter - Collins, Scott L. - Knapp, Alan K. - Sala, Osvaldo E. - Dukes, Jeffrey S. - Phillips, Richard P. - Yahdjian, Laura - Gherardi, Laureano A. - Ohlert, Timothy - Beier, Claus - Fraser, Lauchlan H. - Jentsch, Anke - Loik, Michael E. - Maestre, Fernando T. - Power, Sally A. - Yu, Qiang - Felton, Andrew J. - Munson, Seth M. - Luo, Yiqi - Abdoli, Hamed - Abedi, Mehdi - Alados, Concepción L. - Alberti, Juan - Alon, Moshe - An, Hui - Anacker, Brian - Anderson, Maggie - Auge, Harald - Bachle, Seton - Bahalkeh, Khadijeh - Bahn, Michael - Batbaatar, Amgaa - Bauerle, Taryn - Beard, Karen H. - Behn, Kai - Beil, Ilka - Biancari, Lucio - Blindow, Irmgard - Bondaruk, Viviana Florencia - Borer, Elizabeth T. - Bork, Edward W. - Bruschetti, Carlos Martin - Byrne, Kerry M. - Cahill Jr., James F. - Calvo, Dianela A. - Carbognani, Michele - Cardoni, Augusto - Carlyle, Cameron N. - Castillo-Garcia, Miguel - Chang, Scott X. - Chieppa, Jeff - Cianciaruso, Marcus V. - Cohen, Ofer - Cordeiro, Amanda L. - Cusack, Daniela F. - Dahlke, Sven - Daleo, Pedro - D'Antonio, Carla M. - Dietterich, Lee H. - S. Doherty, Tim - Dubbert, Maren - Ebeling, Anne - Eisenhauer, Nico - Fischer, Felícia M. - Forte, T'ai G. W. - Gebauer, Tobias - Gozalo, Beatriz - Greenville, Aaron C. - Guidoni-Martins, Karlo G. - Hannusch, Heather J. - Vatsø Haugum, Siri - Hautier, Yann - Hefting, Mariet - Henry, Hugh A. L. - Hoss, Daniela - Ingrisch, Johannes - Iribarne, Oscar - Isbell, Forest - Johnson, Yari - Jordan, Samuel - Kelly, Eugene F. - Kimmel, Kaitlin - Kreyling, Juergen - Kröel-Dulay, György - Kröpfl, Alicia - Kübert, Angelika - Kulmatiski, Andrew - Lamb, Eric G. - Larsen, Klaus Steenberg - Larson, Julie - Lawson, Jason - Leder, Cintia V. - Linstädter, Anja - Liu, Jielin - Liu, Shirong - Lodge, Alexandra G. - Longo, Grisel - Loydi, Alejandro - Luan, Junwei - Curtis Lubbe, Frederick - Macfarlane, Craig - Mackie-Haas, Kathleen - Malyshev, Andrey V. - Maturano-Ruiz, Adrián - Merchant, Thomas - Metcalfe, Daniel B. - Mori, Akira S. - Mudongo, Edwin - Newman, Gregory S. - Nielsen, Uffe N. - Nimmo, Dale - Niu, Yujie - Nobre, Paola - O'Connor, Rory C. - Ogaya, Romà - Oñatibia, Gastón R. - Orbán, Ildikó - Osborne, Brooke - Otfinowski, Rafael - Pärtel, Meelis - Penuelas, Josep - Peri, Pablo L. - Peter, Guadalupe - Petraglia, Alessandro - Picon-Cochard, Catherine - Pillar, Valério D. - Piñeiro-Guerra, Juan Manuel - Ploughe, Laura W. - Plowes, Robert M. - Portales-Reyes, Cristy - Prober, Suzanne M. - Pueyo, Yolanda - Reed, Sasha C. - Ritchie, Euan G. - Rodríguez, Dana Aylén - Rogers, William E. - Roscher, Christiane - Sánchez, Ana M. - Santos, Bráulio A. - Cecilia Scarfó, María - Seabloom, Eric W. - Shi, Baoku - Souza, Lara - Stampfli, Andreas - Standish, Rachel J. - Sternberg, Marcelo - Sun, Wei - Sünnemann, Marie - Tedder, Michelle - Thorvaldsen, Pål - Tian, Dashuan - Tielbörger, Katja - Valdecantos, Alejandro - van den Brink, Liesbeth - Vandvik, Vigdis - Vankoughnett, Mathew R. - Guri Velle, Liv - Wang, Changhui - Wang, Yi - Wardle, Glenda M. - Werner, Christiane - Wei, Cunzheng - Wiehl, Georg - Williams, Jennifer L. - Wolf, Amelia A. - Zeiter, Michaela - Zhang, Fawei - Zhu, Juntao - Zong, Ning - Zuo, Xiaoan - - - + + David Schöne + Sven Thiel + + + + - - - - + + + + + - - Ludmilla Figueiredo + + + - - NA + + + - - 07.05.2024 00:00 + + + - - 07.05.2024 00:00 + + + - - - - NA + + + + + - - NA + + + - - 10.1073/pnas.2309881120 + + + - - https://www.pnas.org/doi/abs/10.1073/pnas.2309881120 + + + - - none + + + - - journalArticle + + + - - + + + - - + + + - - + + + - - e2309881120 + + + - - 4 + + + - - 121 + + + - - States that data and code are shared, but only data is. In Dryad, asks future users to contact authors to ensure use according to best practices. + + + - - NA + + + - - + + + - - - - + + + + yes + + + + - - + + + - - none + + none + yes - - none + + none + a - - + + - - - - Dataset + + + + Software - - + + Franziska - - + + + + + + + - - - - https://datadryad.org/stash/dataset/doi:10.5061/dryad.3j9kd51rb + + + + + + + + asd - - yes + + + - - https://doi.org/10.5061/dryad.3j9kd51rb + + 1234567890 - - yes + + + - - + + + - - cc0 1.0 + + + - - dryad + + + - - + + + - - + + + - - + + + - - - - + + + + + - - csv + + + - - + + + - - - - + + + + + - - NA - - - - - - - - - - Test1 - - - - - - - - hi - - - maybe - - - - - - - - - - - - - - - - - Felix - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hier steht der name - - - - - - - - link - - - verfügbar - - - IOD - - - test - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + diff --git a/Components/XML/BExIS.Xml.Helpers/XmlMetadataWriter.cs b/Components/XML/BExIS.Xml.Helpers/XmlMetadataWriter.cs index e0fcabf958..7b1eac5af7 100644 --- a/Components/XML/BExIS.Xml.Helpers/XmlMetadataWriter.cs +++ b/Components/XML/BExIS.Xml.Helpers/XmlMetadataWriter.cs @@ -778,7 +778,7 @@ public XDocument AddAttribute(XDocument metadataXml, BaseUsage attributeUsage, i { _tempXDoc = metadataXml; - if (!!XmlUtility.IsSafeXPath(parentXPath)) + if (!XmlUtility.IsSafeXPath(parentXPath)) { throw new ArgumentException("Potentially unsafe xpath expression."); } diff --git a/Components/XML/BExIS.Xml.Helpers/XmlUtility.cs b/Components/XML/BExIS.Xml.Helpers/XmlUtility.cs index eca868ecb4..354a75bab2 100644 --- a/Components/XML/BExIS.Xml.Helpers/XmlUtility.cs +++ b/Components/XML/BExIS.Xml.Helpers/XmlUtility.cs @@ -22,7 +22,7 @@ public static bool IsSafeXPath(string xpath) // Only allow XPaths like /a/b/c or /a[1]/b matches, no function calls, no quotes, etc. // You can adjust the pattern according to the actual requirements. // This only allows: /node1/node2/... - var safePattern = @"^(/[a-zA-Z_][\w\-]*(\[\d+\])?)*$"; + var safePattern = @"^(/?/?[a-zA-Z_][\w\-]*(\[\d+\])?)*$"; return System.Text.RegularExpressions.Regex.IsMatch(xpath, safePattern); } diff --git a/Console/BExIS.Web.Shell.Svelte/package-lock.json b/Console/BExIS.Web.Shell.Svelte/package-lock.json index 3823b38fa0..0971161e8c 100644 --- a/Console/BExIS.Web.Shell.Svelte/package-lock.json +++ b/Console/BExIS.Web.Shell.Svelte/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.1", "hasInstallScript": true, "dependencies": { - "@bexis2/bexis2-core-ui": "0.4.58", + "@bexis2/bexis2-core-ui": "0.4.64", "@sveltejs/adapter-static": "3.0.2", "buffer": "6.0.3", "gray-matter": "4.0.3", @@ -76,9 +76,9 @@ } }, "node_modules/@bexis2/bexis2-core-ui": { - "version": "0.4.58", - "resolved": "https://registry.npmjs.org/@bexis2/bexis2-core-ui/-/bexis2-core-ui-0.4.58.tgz", - "integrity": "sha512-u7g8+e0hEV4Eu4VxsT/Fpv+YVxoUSYV3a01wwE2dg2GbwF7Th5QxHTiN6AisvcVO7N2XIBmkBwE5RjEgXB7ihw==", + "version": "0.4.63", + "resolved": "https://registry.npmjs.org/@bexis2/bexis2-core-ui/-/bexis2-core-ui-0.4.63.tgz", + "integrity": "sha512-tLqUzCsCslNSA+YoMd6+FRA6SXY2SOet9RVdQbe6khVXEc33lvFwu3ZrNfNBT3Ku5ca1dtngzA4dhSNeCAg99A==", "license": "ISC", "dependencies": { "@codemirror/lang-html": "^6.4.9", diff --git a/Console/BExIS.Web.Shell.Svelte/package.json b/Console/BExIS.Web.Shell.Svelte/package.json index a142dcb864..7631b994d9 100644 --- a/Console/BExIS.Web.Shell.Svelte/package.json +++ b/Console/BExIS.Web.Shell.Svelte/package.json @@ -52,7 +52,7 @@ }, "type": "module", "dependencies": { - "@bexis2/bexis2-core-ui": "0.4.60", + "@bexis2/bexis2-core-ui": "0.4.64", "@sveltejs/adapter-static": "3.0.2", "buffer": "6.0.3", "gray-matter": "4.0.3", diff --git a/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI.Svelte/package-lock.json b/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI.Svelte/package-lock.json index e23fcf350a..f27357edfd 100644 --- a/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI.Svelte/package-lock.json +++ b/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI.Svelte/package-lock.json @@ -10,8 +10,8 @@ "hasInstallScript": true, "license": "ISC", "dependencies": { - "@bexis2/bexis2-core-ui": "0.4.60", - "@bexis2/bexis2-rpm-ui": "0.2.14", + "@bexis2/bexis2-core-ui": "0.4.64", + "@bexis2/bexis2-rpm-ui": "0.2.15", "@floating-ui/dom": "1.6.8", "@fortawesome/free-solid-svg-icons": "6.6.0", "@sveltejs/adapter-static": "3.0.2", @@ -84,9 +84,9 @@ } }, "node_modules/@bexis2/bexis2-core-ui": { - "version": "0.4.60", - "resolved": "https://registry.npmjs.org/@bexis2/bexis2-core-ui/-/bexis2-core-ui-0.4.60.tgz", - "integrity": "sha512-D/Ytgpzj51uxCu+TEROF4PxmfHE7ONaGDeQINj083dtaalS0l/u3w7kWUIeTn5D8u6oLUg/FywVzqyd0bCXkpA==", + "version": "0.4.64", + "resolved": "https://registry.npmjs.org/@bexis2/bexis2-core-ui/-/bexis2-core-ui-0.4.64.tgz", + "integrity": "sha512-YK6tKBISQY9DYXsGqG8523kIAKFPETRGEozGhditIify+mQgUoMEcnB4E4vHJHjhX+VAM73jOdCMuv9MF8ev8Q==", "license": "ISC", "dependencies": { "@codemirror/lang-html": "^6.4.9", @@ -119,13 +119,13 @@ } }, "node_modules/@bexis2/bexis2-rpm-ui": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/@bexis2/bexis2-rpm-ui/-/bexis2-rpm-ui-0.2.14.tgz", - "integrity": "sha512-DpDKDSod9hPiPIbsa6uMZj27BaMqPIxe+48W2CUW2YaJeVm17B2FbXwpzRILH5udbjqBJmga8AEkTc8GE4+i8A==", + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/@bexis2/bexis2-rpm-ui/-/bexis2-rpm-ui-0.2.15.tgz", + "integrity": "sha512-vCQK1M2pd7KdGzIP9QpNclFx1Y37ckNjgZbwcHQOmxOtMA+CRe6MEHintKDNlO8lXEWSYv29KDAIVqcdPNsDfA==", "hasInstallScript": true, "license": "ISC", "dependencies": { - "@bexis2/bexis2-core-ui": "0.4.58", + "@bexis2/bexis2-core-ui": "0.4.60", "@floating-ui/dom": "1.6.8", "@sveltejs/adapter-static": "3.0.2", "@sveltejs/package": "2.3.2", @@ -135,9 +135,9 @@ } }, "node_modules/@bexis2/bexis2-rpm-ui/node_modules/@bexis2/bexis2-core-ui": { - "version": "0.4.58", - "resolved": "https://registry.npmjs.org/@bexis2/bexis2-core-ui/-/bexis2-core-ui-0.4.58.tgz", - "integrity": "sha512-u7g8+e0hEV4Eu4VxsT/Fpv+YVxoUSYV3a01wwE2dg2GbwF7Th5QxHTiN6AisvcVO7N2XIBmkBwE5RjEgXB7ihw==", + "version": "0.4.60", + "resolved": "https://registry.npmjs.org/@bexis2/bexis2-core-ui/-/bexis2-core-ui-0.4.60.tgz", + "integrity": "sha512-D/Ytgpzj51uxCu+TEROF4PxmfHE7ONaGDeQINj083dtaalS0l/u3w7kWUIeTn5D8u6oLUg/FywVzqyd0bCXkpA==", "license": "ISC", "dependencies": { "@codemirror/lang-html": "^6.4.9", @@ -5497,9 +5497,9 @@ } }, "@bexis2/bexis2-core-ui": { - "version": "0.4.60", - "resolved": "https://registry.npmjs.org/@bexis2/bexis2-core-ui/-/bexis2-core-ui-0.4.60.tgz", - "integrity": "sha512-D/Ytgpzj51uxCu+TEROF4PxmfHE7ONaGDeQINj083dtaalS0l/u3w7kWUIeTn5D8u6oLUg/FywVzqyd0bCXkpA==", + "version": "0.4.64", + "resolved": "https://registry.npmjs.org/@bexis2/bexis2-core-ui/-/bexis2-core-ui-0.4.64.tgz", + "integrity": "sha512-YK6tKBISQY9DYXsGqG8523kIAKFPETRGEozGhditIify+mQgUoMEcnB4E4vHJHjhX+VAM73jOdCMuv9MF8ev8Q==", "requires": { "@codemirror/lang-html": "^6.4.9", "@codemirror/lang-javascript": "^6.2.2", @@ -5531,11 +5531,11 @@ } }, "@bexis2/bexis2-rpm-ui": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/@bexis2/bexis2-rpm-ui/-/bexis2-rpm-ui-0.2.14.tgz", - "integrity": "sha512-DpDKDSod9hPiPIbsa6uMZj27BaMqPIxe+48W2CUW2YaJeVm17B2FbXwpzRILH5udbjqBJmga8AEkTc8GE4+i8A==", + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/@bexis2/bexis2-rpm-ui/-/bexis2-rpm-ui-0.2.15.tgz", + "integrity": "sha512-vCQK1M2pd7KdGzIP9QpNclFx1Y37ckNjgZbwcHQOmxOtMA+CRe6MEHintKDNlO8lXEWSYv29KDAIVqcdPNsDfA==", "requires": { - "@bexis2/bexis2-core-ui": "0.4.58", + "@bexis2/bexis2-core-ui": "0.4.60", "@floating-ui/dom": "1.6.8", "@sveltejs/adapter-static": "3.0.2", "@sveltejs/package": "2.3.2", @@ -5545,9 +5545,9 @@ }, "dependencies": { "@bexis2/bexis2-core-ui": { - "version": "0.4.58", - "resolved": "https://registry.npmjs.org/@bexis2/bexis2-core-ui/-/bexis2-core-ui-0.4.58.tgz", - "integrity": "sha512-u7g8+e0hEV4Eu4VxsT/Fpv+YVxoUSYV3a01wwE2dg2GbwF7Th5QxHTiN6AisvcVO7N2XIBmkBwE5RjEgXB7ihw==", + "version": "0.4.60", + "resolved": "https://registry.npmjs.org/@bexis2/bexis2-core-ui/-/bexis2-core-ui-0.4.60.tgz", + "integrity": "sha512-D/Ytgpzj51uxCu+TEROF4PxmfHE7ONaGDeQINj083dtaalS0l/u3w7kWUIeTn5D8u6oLUg/FywVzqyd0bCXkpA==", "requires": { "@codemirror/lang-html": "^6.4.9", "@codemirror/lang-javascript": "^6.2.2", diff --git a/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI.Svelte/package.json b/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI.Svelte/package.json index a98ff3f6cc..7b69b1cec1 100644 --- a/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI.Svelte/package.json +++ b/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI.Svelte/package.json @@ -50,7 +50,7 @@ }, "type": "module", "dependencies": { - "@bexis2/bexis2-core-ui": "0.4.60", + "@bexis2/bexis2-core-ui": "0.4.64", "@bexis2/bexis2-rpm-ui": "0.2.15", "@floating-ui/dom": "1.6.8", "@fortawesome/free-solid-svg-icons": "6.6.0", diff --git a/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI/Helpers/DCMSeedDataGenerator.cs b/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI/Helpers/DCMSeedDataGenerator.cs index 7d8f08e3d1..5892e28566 100644 --- a/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI/Helpers/DCMSeedDataGenerator.cs +++ b/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI/Helpers/DCMSeedDataGenerator.cs @@ -308,7 +308,7 @@ public void GenerateSeedData() if (!metadataStructureManager.Repo.Get().Any(m => m.Name.Equals("Publication"))) { string titleXPath = "Metadata/publication/publication/Title/TitleDatatype_string"; - string descriptionXpath = "Metadata/publication/publication/Abstract/AbstractXmlSchemaSimpleType"; + string descriptionXpath = "Metadata/publication/publication/Abstract/AbstractDatatype_string"; ImportSchema("Publication", "BEXIS2-Publication-Schema-draft.xsd", "Metadata", publication.Name, publication.EntityType.FullName, titleXPath, descriptionXpath); } diff --git a/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI/Views/EntityReference/Show.cshtml b/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI/Views/EntityReference/Show.cshtml index 00e2117f3b..34876683f4 100644 --- a/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI/Views/EntityReference/Show.cshtml +++ b/Console/BExIS.Web.Shell/Areas/DCM/BExIS.Modules.Dcm.UI/Views/EntityReference/Show.cshtml @@ -130,7 +130,8 @@ + +
+

+ ...loading +

+ +
+
+
+
+
+ diff --git a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI.Svelte/src/lib/components/Search.svelte b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI.Svelte/src/lib/components/Search.svelte index ce67c509f6..db30c467d2 100644 --- a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI.Svelte/src/lib/components/Search.svelte +++ b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI.Svelte/src/lib/components/Search.svelte @@ -6,7 +6,7 @@ import { RadioGroup, RadioItem, SlideToggle } from '@skeletonlabs/skeleton'; - import { Api, Facets, Page, pageContentLayoutType, Table } from '@bexis2/bexis2-core-ui'; + import { Api, Facets, Page, pageContentLayoutType, Table, TablePlaceholder } from '@bexis2/bexis2-core-ui'; import type { Columns, FacetGroup, linkType, TableConfig } from '@bexis2/bexis2-core-ui'; import Cards from '$lib/components/Cards.svelte'; @@ -17,6 +17,7 @@ import { convertTableData } from '$lib/helpers'; import { onMount } from 'svelte'; import { writable } from 'svelte/store'; + import CardsPlaceHolder from './CardsPlaceHolder.svelte'; export let controller: string = 'search'; @@ -26,7 +27,10 @@ let currentCategory = 'All'; let q = ''; - let currentView: 'table' | 'cards' = 'table'; + // get data from parent + let container = document.getElementById(controller); + let currentView:string = ""+container?.getAttribute('search_result_presentation'); //'table' | 'cards' = 'table'; + let facetsRef: any; @@ -399,29 +403,13 @@ })); }; - const load = async (input: string) => { - const data = [ - { Text: 'a', Value: 'a' }, - { Text: 'b', Value: 'b' }, - { Text: 'c', Value: 'c' }, - { Text: 'd', Value: 'd' }, - { Text: 'e', Value: 'e' }, - { Text: 'f', Value: 'f' }, - { Text: 'g', Value: 'g' } - ]; - - return data.map((item: any) => ({ - label: item.Text, - value: item.Value - })); - }; - const handleAutoCompleteSelect = async (e: { detail: { value: string; label: string } }) => { q = e.detail.value; return null; }; + onMount(async () => { await handleSearch(true); }); @@ -450,6 +438,8 @@ on:showMoreSelect={handleShowMoreSelect} on:showMoreOpenChange={handleShowMoreOpenChange} /> + {:else} + {/if}
@@ -586,14 +576,25 @@
+ {#if config}
+
+ +
+ {:else} + + {#if currentView === 'table'} + {/if} -
- -
+ {#if currentView === 'cards'} + + {/if} + + {/if} + diff --git a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI.Svelte/src/routes/search/+page.svelte b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI.Svelte/src/routes/search/+page.svelte index 564aca5193..afd87f48de 100644 --- a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI.Svelte/src/routes/search/+page.svelte +++ b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI.Svelte/src/routes/search/+page.svelte @@ -4,6 +4,7 @@ const controller = 'search'; + const links: linkType[] = [ { label: 'Public Search', url: '/ddm/publicsearch' }, { label: 'Manual', url: '/home/docs/Search%20and%20Download%20Data/' } diff --git a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Controllers/DashboardController.cs b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Controllers/DashboardController.cs index 6b392a9640..1c8e6bd9aa 100644 --- a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Controllers/DashboardController.cs +++ b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Controllers/DashboardController.cs @@ -320,11 +320,14 @@ public ActionResult ShowMyDatasets(string entityname, RightType rightType, strin } List datasetVersions = datasetManager.GetDatasetLatestVersions(datasetIds, true); + foreach (var dsv in datasetVersions) { Object[] rowArray = new Object[8]; string isValid = "no"; + bool isOwn = rightType == RightType.Grant || rightType == RightType.Write ? true : false ; + string type = "file"; if (dsv.Dataset.DataStructure?.Self is StructuredDataStructure) { @@ -355,7 +358,7 @@ public ActionResult ShowMyDatasets(string entityname, RightType rightType, strin } // - rowArray[7] = entityPermissionManager.HasEffectiveRightsAsync(HttpContext.User.Identity.Name, typeof(Dataset), dsv.Dataset.Id, RightType.Write).Result; + rowArray[7] = isOwn; model.Add(new MyDatasetsModel( (long)rowArray[0], diff --git a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Controllers/DataController.cs b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Controllers/DataController.cs index ec7749886c..93644c5c20 100644 --- a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Controllers/DataController.cs +++ b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Controllers/DataController.cs @@ -398,9 +398,6 @@ public ActionResult ShowData(long id, int version = 0, bool asPartial = false, s } - - - // load all hooks for the edit view HookManager hooksManager = new HookManager(); model.Hooks = hooksManager.GetHooksFor("dataset", "details", HookMode.view); diff --git a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Controllers/PublicSearchController.cs b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Controllers/PublicSearchController.cs index f0c4849fd5..4f63b27b50 100644 --- a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Controllers/PublicSearchController.cs +++ b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Controllers/PublicSearchController.cs @@ -12,6 +12,7 @@ using Vaiona.IoC; using Vaiona.Web.Extensions; using Vaiona.Web.Mvc.Models; +using Vaiona.Web.Mvc.Modularity; namespace BExIS.Modules.Ddm.UI.Controllers { @@ -24,6 +25,9 @@ public ActionResult Index() ViewData["app"] = SvelteHelper.GetApp(module); ViewData["start"] = SvelteHelper.GetStart(module); + var settings = ModuleManager.GetModuleSettings("DDM"); + ViewData["search_result_presentation"] = settings.GetValueByKey("search_result_presentation").ToString(); + return View(); } @@ -223,7 +227,7 @@ public JsonResult OnSelectTreeViewItem(string SelectedItem, string Parent) /// /// /// - [HttpPost, CustomValidateAntiForgeryToken] + [HttpPost] public JsonResult AddFacetsToSearch() { ViewBag.Title = PresentationModel.GetViewTitleForTenant("Search", this.Session.GetTenant()); diff --git a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Controllers/SearchController.cs b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Controllers/SearchController.cs index e6f96bfc3a..82b510173d 100644 --- a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Controllers/SearchController.cs +++ b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Controllers/SearchController.cs @@ -15,6 +15,7 @@ using Vaiona.IoC; using Vaiona.Web.Extensions; using Vaiona.Web.Mvc.Models; +using Vaiona.Web.Mvc.Modularity; using SearchCriteria = BExIS.Utils.Models.SearchCriteria; namespace BExIS.Modules.Ddm.UI.Controllers @@ -32,6 +33,9 @@ public ActionResult Index() ViewData["app"] = SvelteHelper.GetApp(module); ViewData["start"] = SvelteHelper.GetStart(module); + var settings = ModuleManager.GetModuleSettings("DDM"); + ViewData["search_result_presentation"] = settings.GetValueByKey("search_result_presentation").ToString(); + return View(); } @@ -259,7 +263,7 @@ public JsonResult OnSelectTreeViewItem(string SelectedItem, string Parent) /// /// /// - [HttpPost, CustomValidateAntiForgeryToken] + [HttpPost] public JsonResult AddFacetsToSearch() { ViewBag.Title = PresentationModel.GetViewTitleForTenant("Search", this.Session.GetTenant()); diff --git a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Ddm.Settings.json b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Ddm.Settings.json index dd32a7ea45..17387f9c27 100644 --- a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Ddm.Settings.json +++ b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Ddm.Settings.json @@ -45,6 +45,17 @@ "type": "Boolean", "description": "If set to true, the minor version tag can be assigned to dataset versions to display changes in more detail." }, + { + "key": "search_result_presentation", + "title": "Search Result Presentation", + "value": "table", + "description": "Select the initial display format for all user search results across the system. This setting establishes the global baseline for result presentation.", + "type": "String", + "options": [ + "table", + "cards" + ] + }, { "key": "data_aggreement", "title": "Data Aggreement by download", diff --git a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Helpers/DdmSeedDataGenerator.cs b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Helpers/DdmSeedDataGenerator.cs index 2cf80f5ddd..f1924cb44a 100644 --- a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Helpers/DdmSeedDataGenerator.cs +++ b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Helpers/DdmSeedDataGenerator.cs @@ -9,6 +9,7 @@ using System.Collections.Generic; using System.Linq; using Vaiona.Web.Mvc.Modularity; +using static System.Net.Mime.MediaTypeNames; namespace BExIS.Modules.Ddm.UI.Helpers { @@ -192,6 +193,12 @@ private void createCitationMappingConcept() { using (var conceptManager = new ConceptManager()) { + + /* + APA, + RIS, + Text, + Bibtex*/ foreach (CitationFormat value in Enum.GetValues(typeof(CitationFormat))) { var keys = new List(); @@ -261,7 +268,7 @@ private void createCitationMappingConcept() if (!keys.Any(k => k.Name.Equals("data/authorNames"))) authors = conceptManager.CreateMappingKey("AuthorNames", "", "", false, true, "data/authorNames", concept); - if (!keys.Any(k => k.Name.Equals("data/authorNames/authorName"))) + if (!keys.Any(k => k.Name.Equals("data/authorNames/authorname"))) conceptManager.CreateMappingKey("AuthorName", "", "", false, false, "data/authorNames/authorName", concept, authors); } } diff --git a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Models/CitationModels.cs b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Models/CitationModels.cs index ba645e2b8a..04e0f1b3f3 100644 --- a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Models/CitationModels.cs +++ b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Models/CitationModels.cs @@ -43,7 +43,8 @@ public class CitationDataModel [XmlElement("version")] public string Version { get; set; } - [XmlElement("projects")] + [XmlArray("projects")] + [XmlArrayItem("project")] public List Projects { get; set; } [XmlElement("year")] @@ -70,8 +71,6 @@ public class CitationDataModel //public string EntityType { get; set; } [XmlElement("entryType")] - [Required(ErrorMessage = "Entry Type is required")] - [MinLength(1, ErrorMessage = "Entry Type cannot be empty")] public string EntryType { get; set; } [XmlElement("entityName")] diff --git a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Views/PublicSearch/Index.cshtml b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Views/PublicSearch/Index.cshtml index 38fa536a2d..1445c7de2e 100644 --- a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Views/PublicSearch/Index.cshtml +++ b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Views/PublicSearch/Index.cshtml @@ -2,15 +2,15 @@ ViewBag.Title = "Public search"; Layout = "~/Themes/Default/Layouts/_svelteLayout.cshtml"; - bool isTemplateRequired = false; + string search_result_presentation = ""; - if (ViewData["isTemplateRequired"] != null) + if (ViewData["search_result_presentation"] != null) { - isTemplateRequired = (bool)ViewData["isTemplateRequired"]; + search_result_presentation = ViewData["search_result_presentation"].ToString(); } } -
+
@Html.Partial("_sveltePage")
\ No newline at end of file diff --git a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Views/Search/Index.cshtml b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Views/Search/Index.cshtml index 2ab3bb7832..e88255d76a 100644 --- a/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Views/Search/Index.cshtml +++ b/Console/BExIS.Web.Shell/Areas/DDM/BExIS.Modules.Ddm.UI/Views/Search/Index.cshtml @@ -2,15 +2,15 @@ ViewBag.Title = "Search"; Layout = "~/Themes/Default/Layouts/_svelteLayout.cshtml"; - bool isTemplateRequired = false; + string search_result_presentation = ""; - if (ViewData["isTemplateRequired"] != null) + if (ViewData["search_result_presentation"] != null) { - isTemplateRequired = (bool)ViewData["isTemplateRequired"]; + search_result_presentation = ViewData["search_result_presentation"].ToString(); } } -