Browse Source

Merge branch 'dev' into deniz/L

pull/19076/head
denizdemirkan 3 years ago
parent
commit
4934b88a95
  1. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ar.json
  2. 4
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/cs.json
  3. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/de.json
  4. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en-GB.json
  5. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json
  6. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/es.json
  7. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fi.json
  8. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fr.json
  9. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hi.json
  10. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hr.json
  11. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hu.json
  12. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/is.json
  13. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/it.json
  14. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/nl.json
  15. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pl-PL.json
  16. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pt-BR.json
  17. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ro-RO.json
  18. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ru.json
  19. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sk.json
  20. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sl.json
  21. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json
  22. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/vi.json
  23. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json
  24. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json
  25. 18
      docs/en/Road-Map.md
  26. 2
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContext.cs
  27. 2
      latest-versions.json
  28. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ar.json
  29. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/cs.json
  30. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/de.json
  31. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/el.json
  32. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en-GB.json
  33. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json
  34. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/es.json
  35. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fa.json
  36. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fi.json
  37. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fr.json
  38. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hi.json
  39. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hr.json
  40. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hu.json
  41. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/is.json
  42. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/it.json
  43. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/nl.json
  44. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pl-PL.json
  45. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pt-BR.json
  46. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ro-RO.json
  47. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ru.json
  48. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sk.json
  49. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sl.json
  50. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json
  51. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/vi.json
  52. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json
  53. 2
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json
  54. 3
      npm/ng-packs/nx.json
  55. 3
      npm/ng-packs/packages/core/src/lib/services/title-strategy.service.ts
  56. 121
      npm/ng-packs/packages/oauth/src/lib/tests/oauth-error-filter.service.spec.ts
  57. 2
      npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal-close.directive.ts
  58. 4
      npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ar.json

@ -796,6 +796,7 @@
"PaymentFailedInfo": "عذرا، فشل الدفع! ",
"UsedPayment": "لقد تم استخدام هذه الدفعة بالفعل",
"ManageLicense": "التحكم في الترخيص",
"AbpPlatformLeptonXTheme": "سمة LeptonX للوحة تحكم المشرف الخاصة بك من قبل <span class=\"gradient-commercial\">ABP Platform</span>"
"AbpPlatformLeptonXTheme": "سمة LeptonX للوحة تحكم المشرف الخاصة بك من قبل <span class=\"gradient-commercial\">ABP Platform</span>",
"Previous": "سابق"
}
}

4
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/cs.json

@ -410,7 +410,7 @@
"PaymentFailedInfo": "Omlouváme se, platba se nezdařila! ",
"UsedPayment": "Tato platba již byla použita",
"ManageLicense": "Správa licence",
"AbpPlatformLeptonXTheme": "LeptonX téma pro váš správce účtu od <span class=\"gradient-commercial\">ABP Platform</span>"
"AbpPlatformLeptonXTheme": "LeptonX téma pro váš správce účtu od <span class=\"gradient-commercial\">ABP Platform</span>",
"Previous": "Předchozí"
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/de.json

@ -391,6 +391,7 @@
"PaymentFailedInfo": "Entschuldigung, die Zahlung ist fehlgeschlagen! ",
"UsedPayment": "Diese Zahlung wurde bereits verwendet",
"ManageLicense": "Lizenz verwalten",
"AbpPlatformLeptonXTheme": "LeptonX-Theme für Ihr Admin-Dashboard von <span class=\"gradient-commercial\">ABP Platform</span>"
"AbpPlatformLeptonXTheme": "LeptonX-Theme für Ihr Admin-Dashboard von <span class=\"gradient-commercial\">ABP Platform</span>",
"Previous": "Vorherige"
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en-GB.json

@ -113,6 +113,7 @@
"BlackFridayDiscount": "Black Friday Discount",
"MultipleOrganizationInfo": "See All Your Organizations",
"PaymentFailedInfo": "Sorry, payment failed! This could be due to insufficient funds, invalid credit card numbers or invalid pin",
"UsedPayment": "This payment has been already used"
"UsedPayment": "This payment has been already used",
"Previous": "Previous"
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json

@ -1180,6 +1180,7 @@
"ReturnOfInvestmentPageAbout": "This page covers the fundamental steps of developing a software solution and explains how the ABP.IO Platform reduces your development costs at each step.",
"LearnMore": "Learn More",
"ReturnOfInvestment": "Return of Investment",
"ReturnOfInvestment_Description": "Learn how to reduce your development costs by more than %50."
"ReturnOfInvestment_Description": "Learn how to reduce your development costs by more than %50.",
"Previous": "Previous"
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/es.json

@ -391,6 +391,7 @@
"PaymentFailedInfo": "Lo sentimos, ¡el pago falló! ",
"UsedPayment": "Este pago ya ha sido utilizado.",
"ManageLicense": "Gestionar licencia",
"AbpPlatformLeptonXTheme": "Tema LeptonX para su panel de administración por <span class=\"gradient-commercial\">ABP Platform</span>"
"AbpPlatformLeptonXTheme": "Tema LeptonX para su panel de administración por <span class=\"gradient-commercial\">ABP Platform</span>",
"Previous": "Anterior"
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fi.json

@ -832,6 +832,7 @@
"PaymentFailedInfo": "Anteeksi, maksu epäonnistui! ",
"UsedPayment": "Tämä maksu on jo käytetty",
"ManageLicense": "Hallinnoi lisenssiä",
"AbpPlatformLeptonXTheme": "LeptonX-teema hallintapaneelillesi ABP Platformin toimesta <span class=\"gradient-commercial\">ABP Platform</span>"
"AbpPlatformLeptonXTheme": "LeptonX-teema hallintapaneelillesi ABP Platformin toimesta <span class=\"gradient-commercial\">ABP Platform</span>",
"Previous": "Edellinen"
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fr.json

@ -410,6 +410,7 @@
"PaymentFailedInfo": "Désolé, le paiement a échoué! ",
"UsedPayment": "Ce paiement a déjà été utilisé",
"ManageLicense": "Gérer la licence",
"AbpPlatformLeptonXTheme": "Thème LeptonX pour votre tableau de bord administrateur par <span class=\"gradient-commercial\">ABP Platform</span>"
"AbpPlatformLeptonXTheme": "Thème LeptonX pour votre tableau de bord administrateur par <span class=\"gradient-commercial\">ABP Platform</span>",
"Previous": "Précédent"
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hi.json

@ -409,6 +409,7 @@
"PaymentFailedInfo": "क्षमा करें, भुगतान विफल रहा! ",
"UsedPayment": "इस भुगतान का उपयोग पहले ही किया जा चुका है",
"ManageLicense": "लाइसेंस प्रबंधन",
"AbpPlatformLeptonXTheme": "ABP Platform द्वारा आपके व्यवस्थापक डैशबोर्ड के लिए LeptonX थीम"
"AbpPlatformLeptonXTheme": "ABP Platform द्वारा आपके व्यवस्थापक डैशबोर्ड के लिए LeptonX थीम",
"Previous": "पहले का"
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hr.json

@ -1088,6 +1088,7 @@
"PaymentFailedInfo": "Nažalost, plaćanje nije uspjelo! ",
"UsedPayment": "Ovo plaćanje je već iskorišteno",
"ManageLicense": "Upravljanje licencom",
"AbpPlatformLeptonXTheme": "LeptonX Tema za vašu administratorsku nadzornu ploču od strane <span class=\"gradient-commercial\">ABP Platform</span>"
"AbpPlatformLeptonXTheme": "LeptonX Tema za vašu administratorsku nadzornu ploču od strane <span class=\"gradient-commercial\">ABP Platform</span>",
"Previous": "Prethodno"
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hu.json

@ -758,6 +758,7 @@
"PaymentFailedInfo": "Sajnos a fizetés sikertelen! ",
"UsedPayment": "Ezt a fizetést már felhasználták",
"ManageLicense": "Licenc kezelése",
"AbpPlatformLeptonXTheme": "LeptonX téma az Adminisztrációs Vezérlőpultjához az <span class=\"gradient-commercial\">ABP Platform</span> által"
"AbpPlatformLeptonXTheme": "LeptonX téma az Adminisztrációs Vezérlőpultjához az <span class=\"gradient-commercial\">ABP Platform</span> által",
"Previous": "Előző"
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/is.json

@ -388,6 +388,7 @@
"PaymentFailedInfo": "Því miður, greiðsla mistókst! ",
"UsedPayment": "Þessi greiðsla hefur þegar verið notuð",
"ManageLicense": "Stjórna leyfi",
"AbpPlatformLeptonXTheme": "LeptonX Þema fyrir stjórnborð stjórnanda þíns af <span class=\"gradient-commercial\">ABP Platform</span>"
"AbpPlatformLeptonXTheme": "LeptonX Þema fyrir stjórnborð stjórnanda þíns af <span class=\"gradient-commercial\">ABP Platform</span>",
"Previous": "Fyrri"
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/it.json

@ -409,6 +409,7 @@
"PaymentFailedInfo": "Siamo spiacenti, pagamento non riuscito! ",
"UsedPayment": "Questo pagamento è già stato utilizzato",
"ManageLicense": "Gestisci la licenza",
"AbpPlatformLeptonXTheme": "Tema LeptonX per la tua bacheca amministrativa di <span class=\"gradient-commercial\">ABP Platform</span>"
"AbpPlatformLeptonXTheme": "Tema LeptonX per la tua bacheca amministrativa di <span class=\"gradient-commercial\">ABP Platform</span>",
"Previous": "Precedente"
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/nl.json

@ -388,6 +388,7 @@
"PaymentFailedInfo": "Excuses, betaling mislukt! ",
"UsedPayment": "Deze betaling is al gebruikt",
"ManageLicense": "Licentie beheren",
"AbpPlatformLeptonXTheme": "LeptonX-thema voor uw beheerdersdashboard door <span class=\"gradient-commercial\">ABP Platform</span>"
"AbpPlatformLeptonXTheme": "LeptonX-thema voor uw beheerdersdashboard door <span class=\"gradient-commercial\">ABP Platform</span>",
"Previous": "Vorig"
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pl-PL.json

@ -388,6 +388,7 @@
"PaymentFailedInfo": "Przepraszamy, płatność nie powiodła się! ",
"UsedPayment": "Ta płatność została już wykorzystana",
"ManageLicense": "Zarządzaj licencją",
"AbpPlatformLeptonXTheme": "Motyw LeptonX dla Twojej konsoli administracyjnej od <span class=\"gradient-commercial\">ABP Platform</span>"
"AbpPlatformLeptonXTheme": "Motyw LeptonX dla Twojej konsoli administracyjnej od <span class=\"gradient-commercial\">ABP Platform</span>",
"Previous": "Poprzedni"
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pt-BR.json

@ -411,6 +411,7 @@
"PaymentFailedInfo": "Desculpe, o pagamento falhou! ",
"UsedPayment": "Este pagamento já foi usado",
"ManageLicense": "Gerenciar Licença",
"AbpPlatformLeptonXTheme": "Tema LeptonX para o seu Painel de Administração por <span class=\"gradient-commercial\">ABP Platform</span>"
"AbpPlatformLeptonXTheme": "Tema LeptonX para o seu Painel de Administração por <span class=\"gradient-commercial\">ABP Platform</span>",
"Previous": "Anterior"
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ro-RO.json

@ -388,6 +388,7 @@
"PaymentFailedInfo": "Ne pare rău, plata nu a reușit! ",
"UsedPayment": "Această plată a fost deja utilizată",
"ManageLicense": "Administrare licență",
"AbpPlatformLeptonXTheme": "Tema LeptonX pentru panoul tău de administrare de la <span class=\"gradient-commercial\">ABP Platform</span>"
"AbpPlatformLeptonXTheme": "Tema LeptonX pentru panoul tău de administrare de la <span class=\"gradient-commercial\">ABP Platform</span>",
"Previous": "Anterior"
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ru.json

@ -1089,6 +1089,7 @@
"PaymentFailedInfo": "Извините, оплата не удалась! ",
"UsedPayment": "Этот платеж уже использован",
"ManageLicense": "Управление лицензией",
"AbpPlatformLeptonXTheme": "Тема LeptonX для вашей панели администратора от <span class=\"gradient-commercial\">ABP Platform</span>"
"AbpPlatformLeptonXTheme": "Тема LeptonX для вашей панели администратора от <span class=\"gradient-commercial\">ABP Platform</span>",
"Previous": "Предыдущий"
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sk.json

@ -407,6 +407,7 @@
"PaymentFailedInfo": "Ľutujeme, platba zlyhala! ",
"UsedPayment": "Táto platba už bola použitá",
"ManageLicense": "Spravovať licenciu",
"AbpPlatformLeptonXTheme": "Téma LeptonX pre váš administratívny panel od <span class=\"gradient-commercial\">ABP Platform</span>"
"AbpPlatformLeptonXTheme": "Téma LeptonX pre váš administratívny panel od <span class=\"gradient-commercial\">ABP Platform</span>",
"Previous": "Predchádzajúce"
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sl.json

@ -388,6 +388,7 @@
"PaymentFailedInfo": "Žal plačilo ni uspelo! ",
"UsedPayment": "To plačilo je že bilo uporabljeno",
"ManageLicense": "Upravljanje licenco",
"AbpPlatformLeptonXTheme": "LeptonX Tema za vaš upraviteljski nadzorni pult s strani <span class=\"gradient-commercial\">ABP Platform</span>"
"AbpPlatformLeptonXTheme": "LeptonX Tema za vaš upraviteljski nadzorni pult s strani <span class=\"gradient-commercial\">ABP Platform</span>",
"Previous": "Prejšnja"
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json

@ -998,6 +998,7 @@
"MyOrganizations_Detail_LicenseStartDate": "Lisans Başlangıç Tarihi",
"MyOrganizations_Detail_LicenseExpiryDate": "Bitiş Tarihi",
"ManageLicense": "Lisansı Yönet",
"AbpPlatformLeptonXTheme": "<span class=\"gradient-commercial\">ABP Platform</span> Yönetici Kontrol Paneliniz için LeptonX Teması"
"AbpPlatformLeptonXTheme": "<span class=\"gradient-commercial\">ABP Platform</span> Yönetici Kontrol Paneliniz için LeptonX Teması",
"Previous": "Önceki"
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/vi.json

@ -388,6 +388,7 @@
"PaymentFailedInfo": "Rất tiếc, thanh toán không thành công! ",
"UsedPayment": "Khoản thanh toán này đã được sử dụng",
"ManageLicense": "Quản lý Giấy phép",
"AbpPlatformLeptonXTheme": "Chủ đề LeptonX cho Bảng điều khiển quản trị của bạn bởi <span class=\"gradient-commercial\">ABP Platform</span>"
"AbpPlatformLeptonXTheme": "Chủ đề LeptonX cho Bảng điều khiển quản trị của bạn bởi <span class=\"gradient-commercial\">ABP Platform</span>",
"Previous": "Trước"
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json

@ -1090,6 +1090,7 @@
"PaymentFailedInfo": "抱歉,支付失败!",
"UsedPayment": "该付款已被使用",
"ManageLicense": "管理许可证",
"AbpPlatformLeptonXTheme": "由 <span class=\"gradient-commercial\">ABP Platform</span> 提供的您的管理仪表板的 LeptonX 主题"
"AbpPlatformLeptonXTheme": "由 <span class=\"gradient-commercial\">ABP Platform</span> 提供的您的管理仪表板的 LeptonX 主题",
"Previous": "以前的"
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json

@ -1079,6 +1079,7 @@
"PaymentFailedInfo": "抱歉,支付失败!",
"UsedPayment": "该付款已被使用",
"ManageLicense": "管理許可證",
"AbpPlatformLeptonXTheme": "由 <span class=\"gradient-commercial\">ABP Platform</span> 提供的您的管理儀表板的 LeptonX 主題"
"AbpPlatformLeptonXTheme": "由 <span class=\"gradient-commercial\">ABP Platform</span> 提供的您的管理儀表板的 LeptonX 主題",
"Previous": "以前的"
}
}

18
docs/en/Road-Map.md

@ -1,33 +1,31 @@
# ABP Framework Road Map
This document provides a road map, release schedule and planned features for the ABP Framework.
This document provides a road map, release schedule, and planned features for the ABP Framework.
## Next Versions
### v8.1
### v8.2
The next version will be 8.1 and planned to release the stable 8.1 version in February, 2024. We will be mostly working on the following topics:
The next version will be 8.2 and planned to release the stable 8.2 version in June 2024. We will be mostly working on the following topics:
* Blazor Full-Stack UI ([#16156](https://github.com/abpframework/abp/issues/16156))
* Upgrade to OpenIddict 5.x ([#17605](https://github.com/abpframework/abp/issues/17605))
* Blazor Full-Stack UI ([#18289](https://github.com/abpframework/abp/issues/18289))
* Angular Universal ([#15782](https://github.com/abpframework/abp/issues/15782))
* Blazor - Forms & Validation Documentation ([#16400](https://github.com/abpframework/abp/issues/16400))
* Upgrading React Native template to the latest major release 0.72.7 ([#18191](https://github.com/abpframework/abp/issues/18191))
* Deployment Documents Improvements ([#15034](https://github.com/abpframework/abp/issues/15034))
* Improvements on the existing features and provide more guides.
See the [8.1 milestone](https://github.com/abpframework/abp/milestone/94) for all the issues we've planned to work on.
See the [8.2 milestone](https://github.com/abpframework/abp/milestone/95) for all the issues we've planned to work on.
## Backlog Items
The *Next Versions* section above shows the main focus of the planned versions. However, in each release we add new features to the core framework and the [application modules](Modules/Index.md).
The *Next Versions* section above shows the main focus of the planned versions. However, in each release, we add new features to the core framework and the [application modules](Modules/Index.md).
Here is a list of major items in the backlog we are considering working on in the next versions.
* [#6655](https://github.com/abpframework/abp/pull/6655) / Use Typescript for the MVC UI
* [#86](https://github.com/abpframework/abp/issues/86) / GrapQL Integration
* [#236](https://github.com/abpframework/abp/issues/236) / Resource based authorization system
* [#2882](https://github.com/abpframework/abp/issues/2882) / Providing a gRPC integration infrastructure (while it is [already possible](https://github.com/abpframework/abp-samples/tree/master/GrpcDemo) to create or consume gRPC endpoints for your application, we plan to create endpoints for the [standard application modules](https://docs.abp.io/en/abp/latest/Modules/Index))
* [#57](https://github.com/abpframework/abp/issues/57) / Built-in CQRS infrastructure
* [#2532](https://github.com/abpframework/abp/issues/2532) / CosmosDB integration with EF Core and MongoDB API
* [#4223](https://github.com/abpframework/abp/issues/4223) / WebHook system
* [#162](https://github.com/abpframework/abp/issues/162) / Azure ElasticDB Integration for multitenancy
* [#2296](https://github.com/abpframework/abp/issues/2296) / Feature toggling infrastructure

2
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContext.cs

@ -316,7 +316,7 @@ public abstract class AbpDbContext<TDbContext> : DbContext, IAbpEfCoreDbContext,
break;
case EntityState.Modified:
ApplyAbpConceptsForModifiedEntity(entry);
if (entry.Properties.Any(x => x.IsModified && x.Metadata.ValueGenerated == ValueGenerated.Never))
if (entry.Properties.Any(x => x.IsModified && (x.Metadata.ValueGenerated == ValueGenerated.Never || x.Metadata.ValueGenerated == ValueGenerated.OnAdd)))
{
if (entry.Entity is ISoftDelete && entry.Entity.As<ISoftDelete>().IsDeleted)
{

2
latest-versions.json

@ -1,6 +1,6 @@
[
{
"version": "8.0.3",
"version": "8.0.4",
"releaseDate": "",
"type": "stable",
"message": ""

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ar.json

@ -27,7 +27,7 @@
"DisplayName:PhoneNumber": "رقم الهاتف",
"DisplayName:TwoFactorEnabled": "التحقق من عاملين",
"DisplayName:IsActive": "نشيط",
"DisplayName:LockoutEnabled": "تأمين الحساب بعد محاولات تسجيل الدخول الفاشلة",
"DisplayName:LockoutEnabled": "تأمين الحساب",
"NewRole": "دور جديد",
"RoleName": "اسم الدور",
"CreationTime": "وقت الإنشاء",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/cs.json

@ -27,7 +27,7 @@
"DisplayName:PhoneNumber": "Telefonní číslo",
"DisplayName:TwoFactorEnabled": "Dvoufázové ověřování",
"DisplayName:IsActive": "Aktivní",
"DisplayName:LockoutEnabled": "Zamčení účtu po neúspěšných pokusech",
"DisplayName:LockoutEnabled": "Zamčení účtu",
"NewRole": "Nová role",
"RoleName": "Název role",
"CreationTime": "Vytvořeno",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/de.json

@ -27,7 +27,7 @@
"DisplayName:PhoneNumber": "Telefonnummer",
"DisplayName:TwoFactorEnabled": "Zwei-Faktor-Überprüfung",
"DisplayName:IsActive": "Aktiv",
"DisplayName:LockoutEnabled": "Benutzerkonto nach fehlgeschlagenen Anmeldeversuchen sperren",
"DisplayName:LockoutEnabled": "Konto-Sperrung",
"NewRole": "Neue Rolle",
"RoleName": "Rollenname",
"CreationTime": "Erstellungszeitpunkt",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/el.json

@ -26,7 +26,7 @@
"DisplayName:PhoneNumber": "Τηλεφωνικό νούμερο",
"DisplayName:TwoFactorEnabled": "Επαλήθευση δύο παραγόντων",
"DisplayName:IsActive": "Ενεργός",
"DisplayName:LockoutEnabled": "Κλείδωμα λογαριασμού μετά από αποτυχημένες προσπάθειες σύνδεσης",
"DisplayName:LockoutEnabled": "Κλείδωμα λογαριασμού",
"NewRole": "Νέος ρόλος",
"RoleName": "Όνομα ρόλου",
"CreationTime": "Χρόνος δημιουργίας",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en-GB.json

@ -26,7 +26,7 @@
"DisplayName:Email": "Email Address",
"DisplayName:PhoneNumber": "Phone Number",
"DisplayName:TwoFactorEnabled": "Two factor verification",
"DisplayName:LockoutEnabled": "Lock account after failed login attempts",
"DisplayName:LockoutEnabled": "Account lockout",
"NewRole": "New role",
"RoleName": "Role name",
"CreationTime": "Creation time",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json

@ -27,7 +27,7 @@
"DisplayName:PhoneNumber": "Phone number",
"DisplayName:TwoFactorEnabled": "Two factor verification",
"DisplayName:IsActive": "Active",
"DisplayName:LockoutEnabled": "Lock account after failed login attempts",
"DisplayName:LockoutEnabled": "Account lockout",
"NewRole": "New role",
"RoleName": "Role name",
"CreationTime": "Creation time",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/es.json

@ -27,7 +27,7 @@
"DisplayName:PhoneNumber": "Número de teléfono",
"DisplayName:TwoFactorEnabled": "Autenticación en dos pasos",
"DisplayName:IsActive": "Activo",
"DisplayName:LockoutEnabled": "Bloquear la cuenta después de intentos de inicio de sesión fallidos",
"DisplayName:LockoutEnabled": "Bloqueo de cuenta",
"NewRole": "Nuevo rol",
"RoleName": "Nombre de rol",
"CreationTime": "Fecha de creación",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fa.json

@ -26,7 +26,7 @@
"DisplayName:PhoneNumber": "شماره تلفن",
"DisplayName:TwoFactorEnabled": "احراز هویت دو مرحله ای",
"DisplayName:IsActive": "فعال",
"DisplayName:LockoutEnabled": "قفل کردن حساب در صورت عدم موفقیت در ورود به سیستم",
"DisplayName:LockoutEnabled": "قفل کردن حساب",
"NewRole": "نقش/وظیفه جدید",
"RoleName": "نام نقش/وظیفه",
"CreationTime": "زمان ایجاد",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fi.json

@ -27,7 +27,7 @@
"DisplayName:PhoneNumber": "Puhelinnumero",
"DisplayName:TwoFactorEnabled": "Kahden tekijän todentaminen",
"DisplayName:IsActive": "Aktiivinen",
"DisplayName:LockoutEnabled": "Lukitse tili epäonnistuneiden kirjautumisyritysten jälkeen",
"DisplayName:LockoutEnabled": "Tilin lukitus",
"NewRole": "Uusi rooli",
"RoleName": "Roolinimi",
"CreationTime": "Luomisaika",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fr.json

@ -27,7 +27,7 @@
"DisplayName:PhoneNumber": "Numéro de téléphone",
"DisplayName:TwoFactorEnabled": "Vérification de deux facteurs",
"DisplayName:IsActive": "actif",
"DisplayName:LockoutEnabled": "Verrouiller le compte après l’échec des tentatives de connexion",
"DisplayName:LockoutEnabled": "Verrouillage du compte",
"NewRole": "Nouveau rôle",
"RoleName": "Nom du rôle",
"CreationTime": "Temps de création",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hi.json

@ -27,7 +27,7 @@
"DisplayName:PhoneNumber": "फ़ोन नंबर",
"DisplayName:TwoFactorEnabled": "दो कारक सत्यापन",
"DisplayName:IsActive": "सक्रिय",
"DisplayName:LockoutEnabled": "असफल लॉगिन प्रयासों के बाद लॉक खाता",
"DisplayName:LockoutEnabled": "खाता लॉकआउट",
"NewRole": "नयी भूमिका",
"RoleName": "भूमिका का नाम",
"CreationTime": "रचना समय",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hr.json

@ -27,7 +27,7 @@
"DisplayName:PhoneNumber": "Broj telefona",
"DisplayName:TwoFactorEnabled": "Two factor verifikacija",
"DisplayName:IsActive": "Aktivan",
"DisplayName:LockoutEnabled": "Zaključaj račun nakon neuspjelih pokušaja prijave",
"DisplayName:LockoutEnabled": "Zaključavanje računa",
"NewRole": "Nova uloga",
"RoleName": "Naziv uloge",
"CreationTime": "Vrijeme stvaranja",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hu.json

@ -27,7 +27,7 @@
"DisplayName:PhoneNumber": "Telefonszám",
"DisplayName:TwoFactorEnabled": "Kétlépcsős azonosítás",
"DisplayName:IsActive": "Aktív",
"DisplayName:LockoutEnabled": "Fiók zárolása sikertelen bejelentkezési kísérletek után",
"DisplayName:LockoutEnabled": "Fiók zárolása",
"NewRole": "Új szerepkör",
"RoleName": "Szerepkör neve",
"CreationTime": "Létrehozás időpontja",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/is.json

@ -27,7 +27,7 @@
"DisplayName:PhoneNumber": "Símanúmer",
"DisplayName:TwoFactorEnabled": "Tvíþætt sannprófun",
"DisplayName:IsActive": "Virkur",
"DisplayName:LockoutEnabled": "Læsa notandareikning eftir misheppnaðar innskráningar",
"DisplayName:LockoutEnabled": "Loka reikningi",
"NewRole": "Nýtt hlutverk",
"RoleName": "Nafn hlutverks",
"CreationTime": "Búið til",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/it.json

@ -27,7 +27,7 @@
"DisplayName:PhoneNumber": "Numero di telefono",
"DisplayName:TwoFactorEnabled": "Verifica a due fattori",
"DisplayName:IsActive": "Attivo",
"DisplayName:LockoutEnabled": "Blocca account dopo tentativi di accesso falliti",
"DisplayName:LockoutEnabled": "Blocco account",
"NewRole": "Nuovo ruolo",
"RoleName": "Nome del ruolo",
"CreationTime": "Orario di creazione",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/nl.json

@ -27,7 +27,7 @@
"DisplayName:PhoneNumber": "Telefoonnummer",
"DisplayName:TwoFactorEnabled": "Tweefactor authenticatie",
"DisplayName:IsActive": "Actief",
"DisplayName:LockoutEnabled": "Account vergrendelen na mislukte inlogpogingen",
"DisplayName:LockoutEnabled": "Account vergrendelen",
"NewRole": "Nieuwe rol",
"RoleName": "Rol naam",
"CreationTime": "Creatie tijd",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pl-PL.json

@ -27,7 +27,7 @@
"DisplayName:PhoneNumber": "Numer telefonu",
"DisplayName:TwoFactorEnabled": "Dwustopniowa weryfikacja",
"DisplayName:IsActive": "Aktywny",
"DisplayName:LockoutEnabled": "Blokowanie konta po nieudanych próbach zalogowania",
"DisplayName:LockoutEnabled": "Blokada konta",
"NewRole": "Nowa rola",
"RoleName": "Nazwa roli",
"CreationTime": "Data utworzenia",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pt-BR.json

@ -27,7 +27,7 @@
"DisplayName:PhoneNumber": "Telefone",
"DisplayName:TwoFactorEnabled": "Verificação em dois fatores",
"DisplayName:IsActive": "Ativo",
"DisplayName:LockoutEnabled": "Bloquear conta após falhas ao entrar",
"DisplayName:LockoutEnabled": "Bloqueio de Conta",
"NewRole": "Novo Perfil",
"RoleName": "Perfil",
"CreationTime": "Data de Criação",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ro-RO.json

@ -27,7 +27,7 @@
"DisplayName:PhoneNumber": "Număr de telefon",
"DisplayName:TwoFactorEnabled": "Autentificare în doi paşi",
"DisplayName:IsActive": "Activ",
"DisplayName:LockoutEnabled": "Blocaţi contul după încercări eşuate de autentificare",
"DisplayName:LockoutEnabled": "Blocare cont",
"NewRole": "Rol nou",
"RoleName": "Nume rol",
"CreationTime": "Data creării",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ru.json

@ -27,7 +27,7 @@
"DisplayName:PhoneNumber": "Номер телефона",
"DisplayName:TwoFactorEnabled": "Двухфакторная проверка подлинности",
"DisplayName:IsActive": "Активный",
"DisplayName:LockoutEnabled": "Заблокировать учетную запись после неудачных попыток входа",
"DisplayName:LockoutEnabled": "Блокировка учетной записи",
"NewRole": "Новая роль",
"RoleName": "Имя роли",
"CreationTime": "Время создания",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sk.json

@ -27,7 +27,7 @@
"DisplayName:PhoneNumber": "Telefónne číslo",
"DisplayName:TwoFactorEnabled": "Dvojfaktorové overenie",
"DisplayName:IsActive": "Aktívne",
"DisplayName:LockoutEnabled": "Uzamknúť účet po neúspešných pokusoch o prihlásenie",
"DisplayName:LockoutEnabled": "Uzamknúť účet",
"NewRole": "Nová rola",
"RoleName": "Názov roly",
"CreationTime": "Čas vytvorenia",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sl.json

@ -27,7 +27,7 @@
"DisplayName:PhoneNumber": "Telefonska številka",
"DisplayName:TwoFactorEnabled": "Dvostopenjsko preverjanje",
"DisplayName:IsActive": "Aktiven",
"DisplayName:LockoutEnabled": "Zaklepanje računa po neuspelih poskusih prijave",
"DisplayName:LockoutEnabled": "Zaklepanje računa",
"NewRole": "Nova vloga",
"RoleName": "Naziv vloge",
"CreationTime": "Čas nastanka",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json

@ -27,7 +27,7 @@
"DisplayName:PhoneNumber": "Telefon numarası",
"DisplayName:TwoFactorEnabled": "İki aşamalı doğrulama",
"DisplayName:IsActive": "Aktif",
"DisplayName:LockoutEnabled": "Başarısız giriş denemeleri sonrası hesabı kilitleme",
"DisplayName:LockoutEnabled": "Hesap kilitlenmesi",
"NewRole": "Yeni rol",
"RoleName": "Rol adı",
"CreationTime": "Oluşturma zamanı",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/vi.json

@ -27,7 +27,7 @@
"DisplayName:PhoneNumber": "Số điện thoại",
"DisplayName:TwoFactorEnabled": "Xác thực hai yếu tố",
"DisplayName:IsActive": "Tích cực",
"DisplayName:LockoutEnabled": "Khóa tài khoản sau những lần đăng nhập thất bại",
"DisplayName:LockoutEnabled": "Khóa tài khoản",
"NewRole": "Vai trò mới",
"RoleName": "Tên vai trò",
"CreationTime": "Thời gian tạo",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json

@ -27,7 +27,7 @@
"DisplayName:PhoneNumber": "手机号码",
"DisplayName:TwoFactorEnabled": "二次认证",
"DisplayName:IsActive": "启用",
"DisplayName:LockoutEnabled": "登录失败,账户被锁定",
"DisplayName:LockoutEnabled": "账户锁定",
"NewRole": "新角色",
"RoleName": "角色名称",
"CreationTime": "创建时间",

2
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json

@ -27,7 +27,7 @@
"DisplayName:PhoneNumber": "手機號碼",
"DisplayName:TwoFactorEnabled": "二次認證",
"DisplayName:IsActive": "啟用",
"DisplayName:LockoutEnabled": "登入失敗,帳號被鎖定",
"DisplayName:LockoutEnabled": "帳號鎖定",
"NewRole": "新角色",
"RoleName": "角色名稱",
"CreationTime": "建立時間",

3
npm/ng-packs/nx.json

@ -77,6 +77,5 @@
"!{projectRoot}/.eslintrc.json"
]
},
"parallel": 3,
"nxCloudAccessToken": "NjEzZTliYmMtYmU1MC00ZmI4LWFhOTAtYWY0ZDhiMjhiNzQ0fHJlYWQtd3JpdGU="
"parallel": 3
}

3
npm/ng-packs/packages/core/src/lib/services/title-strategy.service.ts

@ -29,6 +29,7 @@ export class AbpTitleStrategy extends TitleStrategy {
}
override updateTitle(routerState: RouterStateSnapshot) {
this.routerState = routerState;
let title = this.buildTitle(routerState);
if (!title) {
@ -36,8 +37,6 @@ export class AbpTitleStrategy extends TitleStrategy {
return;
}
this.routerState = routerState;
const localizedTitle = this.localizationService.instant({ key: title, defaultValue: title });
this.title.setTitle(`${localizedTitle} | ${this.projectName()}`);
}

121
npm/ng-packs/packages/oauth/src/lib/tests/oauth-error-filter.service.spec.ts

@ -0,0 +1,121 @@
import { createServiceFactory, SpectatorService } from '@ngneat/spectator';
import { OAuthErrorFilterService } from '../services';
import { AuthErrorEvent, AuthErrorFilter } from '@abp/ng.core';
import { OAuthErrorEvent } from 'angular-oauth2-oidc';
const ids = {
firstFilter: 'firstFilter',
secondFilter: 'secondFilter',
};
type Reason = object & { error: { grant_type: string | undefined; }; };
describe('AuthService', () => {
let spectator: SpectatorService<OAuthErrorFilterService>;
let oAuthErrorFilterService: OAuthErrorFilterService;
const createService = createServiceFactory(OAuthErrorFilterService);
let firstFilter: AuthErrorFilter = {
id: '',
executable: Boolean(),
execute: () => Boolean(),
};
let secondFilter: AuthErrorFilter = {
id: '',
executable: Boolean(),
execute: () => Boolean(),
};
beforeEach(() => {
spectator = createService();
oAuthErrorFilterService = spectator.inject(OAuthErrorFilterService);
firstFilter = {
id: ids.firstFilter,
executable: true,
execute: (event: AuthErrorEvent) => {
const { reason } = event;
const {
error: { grant_type },
} = <Reason>(reason || {});
return !!grant_type && grant_type === ids.firstFilter;
},
};
secondFilter = {
id: ids.secondFilter,
executable: true,
execute: (event: AuthErrorEvent) => {
const { reason } = event;
const {
error: { grant_type },
} = <Reason>(reason || {});
return !!grant_type && grant_type === ids.secondFilter;
},
};
});
it('should add filter to filter service', () => {
oAuthErrorFilterService.add(firstFilter);
expect(oAuthErrorFilterService.filters()).toContain(firstFilter);
expect(oAuthErrorFilterService.filters()).toHaveLength(1);
oAuthErrorFilterService.add(secondFilter);
expect(oAuthErrorFilterService.filters()).toHaveLength(2);
});
it('should be able to get item by id', () => {
oAuthErrorFilterService.add(firstFilter);
expect(oAuthErrorFilterService.get(ids.firstFilter)).toBe(firstFilter);
});
it('should be able to patch item', () => {
oAuthErrorFilterService.add(firstFilter);
oAuthErrorFilterService.patch({ id: ids.firstFilter, executable: false });
expect(oAuthErrorFilterService.get(ids.firstFilter)?.executable).toBe(false);
});
it('should be able to remove item', () => {
oAuthErrorFilterService.add(firstFilter);
oAuthErrorFilterService.add(secondFilter);
oAuthErrorFilterService.remove(ids.firstFilter);
expect(oAuthErrorFilterService.filters()).not.toContain(firstFilter);
expect(oAuthErrorFilterService.filters()).toContain(secondFilter);
expect(oAuthErrorFilterService.filters()).toHaveLength(1);
});
it('if any execute method returns true, it should return the true value.', () => {
oAuthErrorFilterService.add(firstFilter);
oAuthErrorFilterService.add(secondFilter);
const event = {
reason: {
error: {
grant_type: ids.secondFilter,
},
},
} as OAuthErrorEvent;
expect(oAuthErrorFilterService.run(event)).toBe(true);
});
it('if none of execute method returns true, it should return the false.', () => {
oAuthErrorFilterService.add(firstFilter);
oAuthErrorFilterService.add(secondFilter);
const event = {
reason: {
error: {
grant_type: 'random-event',
},
},
} as OAuthErrorEvent;
expect(oAuthErrorFilterService.run(event)).toBe(false);
});
});

2
npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal-close.directive.ts

@ -13,4 +13,4 @@ export class ModalCloseDirective {
onClick() {
this.modal?.close();
}
}
}

4
npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts

@ -51,7 +51,9 @@ export class ModalComponent implements OnInit, OnDestroy, DismissableModal {
this._busy = value;
}
@Input() options: NgbModalOptions = {};
@Input() options: NgbModalOptions = {
keyboard: true,
};
@Input() suppressUnsavedChangesWarning = this.suppressUnsavedChangesWarningToken;

Loading…
Cancel
Save