Wizard dil desteği ve hatalar giderildi.
This commit is contained in:
parent
3622764923
commit
0941b9143b
26 changed files with 704 additions and 600 deletions
5
.github/instructions/ai.instructions.md
vendored
5
.github/instructions/ai.instructions.md
vendored
|
|
@ -879,8 +879,9 @@ embedded elsewhere as a SubGrid/part. Default is `true`.
|
||||||
The wizard's permission group comes from a select list backed by `GetWizardPermissionGroups`.
|
The wizard's permission group comes from a select list backed by `GetWizardPermissionGroups`.
|
||||||
Display names are read from the language key whose name equals the group name.
|
Display names are read from the language key whose name equals the group name.
|
||||||
|
|
||||||
- Selecting an existing group fills `PermissionGroupDisplayNameEn/Tr`; if left blank the server
|
- Selecting an existing group fills `PermissionGroupEn/Tr` (seed file: `Language.PermissionGroupEn/Tr`);
|
||||||
writes the database values back, so the seed file always carries both languages.
|
if left blank the server writes the database values back, so the seed file always carries both
|
||||||
|
languages.
|
||||||
- Defining a new group writes those texts to the language key with the same name as the group.
|
- Defining a new group writes those texts to the language key with the same name as the group.
|
||||||
- AI must never propose a permission group without EN + TR display names.
|
- AI must never propose a permission group without EN + TR display names.
|
||||||
|
|
||||||
|
|
|
||||||
63
.github/instructions/lowcode.instructions.md
vendored
63
.github/instructions/lowcode.instructions.md
vendored
|
|
@ -572,13 +572,12 @@ Okuyan: `WizardDataSeeder` · Yazan: `ListFormWizardAppService` ve `WizardSeedSy
|
||||||
"Wizard": { // yalnızca ekrandan üretilemeyen bilgiler — 4.2
|
"Wizard": { // yalnızca ekrandan üretilemeyen bilgiler — 4.2
|
||||||
"ComponentKind": 0, "WizardName": "Tags", "SeededAt": "2026-09-01T09:03:00",
|
"ComponentKind": 0, "WizardName": "Tags", "SeededAt": "2026-09-01T09:03:00",
|
||||||
"WizardCode": "App.Prj.Tags", "CustomComponentName": "",
|
"WizardCode": "App.Prj.Tags", "CustomComponentName": "",
|
||||||
"PermissionGroupName": "App.Prj", "PermissionGroupDisplayNameEn": "…", "PermissionGroupDisplayNameTr": "…",
|
"PermissionGroupName": "App.Prj", "DataSourceConnectionString": "", "ModuleId": "Prj",
|
||||||
"DataSourceConnectionString": "", "ModuleId": "Prj",
|
|
||||||
"Menu": { "MenuCode": "…", "MenuOrder": 2, "MenuUrl": "…", "MenuIcon": "…",
|
"Menu": { "MenuCode": "…", "MenuOrder": 2, "MenuUrl": "…", "MenuIcon": "…",
|
||||||
"MenuParentCode": "…", "MenuParentIcon": "…" }, // "CreateMenu": false ise eklenir
|
"MenuParentCode": "…", "MenuParentIcon": "…" }, // "CreateMenu": false ise eklenir
|
||||||
"Language": { "LanguageTextMenuEn": "…", /* Menu/Title/Desc/MenuParent · EN + TR */ },
|
"Language": { "MenuEn": "…", /* Menu/Title/Desc/MenuParent/PermissionGroup · EN + TR */ },
|
||||||
"Groups": [ { "Items": [ { "FieldName": "…", "CaptionName": "…",
|
"Groups": [ { "Items": [ { "FieldName": "…", "CaptionName": "…",
|
||||||
"EnglishCaption": "…", "TurkishCaption": "…" } ] } ]
|
"En": "…", "Tr": "…" } ] } ]
|
||||||
},
|
},
|
||||||
"ListForm": { /* GridOptionsEditDto — ekranın kendisi, ListForm detayıyla aynı sözleşme */ },
|
"ListForm": { /* GridOptionsEditDto — ekranın kendisi, ListForm detayıyla aynı sözleşme */ },
|
||||||
"Fields": [ /* ColumnFormatEditDto — alanlar, alan detayıyla aynı sözleşme */ ],
|
"Fields": [ /* ColumnFormatEditDto — alanlar, alan detayıyla aynı sözleşme */ ],
|
||||||
|
|
@ -657,15 +656,17 @@ saklanır. Dosya okunurken bu alanlar `ListForm`/`Fields` üzerinden geri doldur
|
||||||
|
|
||||||
| Alan | Anlam |
|
| Alan | Anlam |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
> `LanguageText*` alanlarının tamamı dosyada `Language` başlığı altındadır. `ListForm` yalnızca
|
> Dil metinlerinin tamamı dosyada `Language` başlığı altındadır; başlık zaten bölümü işaretlediği
|
||||||
> dil **anahtarını** taşır (`Title = "{ListFormCode}.Title"`), metinlerin tek kaynağı burasıdır.
|
> için anahtarlar ortak `LanguageText` öneki olmadan yazılır (C# sözleşmesinde önek durur).
|
||||||
|
> `ListForm` yalnızca dil **anahtarını** taşır (`Title = "{ListFormCode}.Title"`), metinlerin tek
|
||||||
|
> kaynağı burasıdır.
|
||||||
|
|
||||||
| `PermissionGroupName` | Var olan grup ya da yeni grup adı. |
|
| `PermissionGroupName` | Var olan grup ya da yeni grup adı. |
|
||||||
| `PermissionGroupDisplayNameEn` / `Tr` | Grup adıyla aynı dil anahtarına yazılır. Var olan grup seçilip boş bırakılırsa sunucu veritabanındaki değeri geri yazar. |
|
| `Language.PermissionGroupEn` / `Tr` | Grup adıyla aynı dil anahtarına yazılır. Var olan grup seçilip boş bırakılırsa sunucu veritabanındaki değeri geri yazar. |
|
||||||
| `LanguageTextMenuEn` / `Tr` | Menü etiketi. |
|
| `Language.MenuEn` / `Tr` | Menü etiketi. |
|
||||||
| `LanguageTextTitleEn` / `Tr` | Ekran başlığı (yalnızca List yolunda üretilir). |
|
| `Language.TitleEn` / `Tr` | Ekran başlığı (yalnızca List yolunda üretilir). |
|
||||||
| `LanguageTextDescEn` / `Tr` | Ekran açıklaması (yalnızca List yolunda). |
|
| `Language.DescEn` / `Tr` | Ekran açıklaması (yalnızca List yolunda). |
|
||||||
| `LanguageTextMenuParentEn` / `Tr` | Üst menü etiketi. |
|
| `Language.MenuParentEn` / `Tr` | Üst menü etiketi. |
|
||||||
|
|
||||||
Üretilen yetkiler: `{MenuCode}` (okuma, kök) + List yolunda `.Create .Update .Delete .Export
|
Üretilen yetkiler: `{MenuCode}` (okuma, kök) + List yolunda `.Create .Update .Delete .Export
|
||||||
.Import .Note`, Custom yolunda yalnızca `.Create .Update .Delete`. Hepsi admin rolüne grant
|
.Import .Note`, Custom yolunda yalnızca `.Create .Update .Delete`. Hepsi admin rolüne grant
|
||||||
|
|
@ -719,7 +720,7 @@ kaynağı odur. Grup yapısı yalnızca düzenleme formunun yerleşimini belirle
|
||||||
|
|
||||||
Seed dosyasında `Groups` **kırpılmış** hâlde durur: grup başlığı/kolon sayısı ve alanların
|
Seed dosyasında `Groups` **kırpılmış** hâlde durur: grup başlığı/kolon sayısı ve alanların
|
||||||
editör bilgileri `ListForm.EditingFormDto` ve `Fields` içinde olduğu için tekrarlanmaz; dosyada
|
editör bilgileri `ListForm.EditingFormDto` ve `Fields` içinde olduğu için tekrarlanmaz; dosyada
|
||||||
her öğe yalnızca `FieldName`, `CaptionName` ve `TurkishCaption`/`EnglishCaption` taşır — çünkü
|
her öğe yalnızca `FieldName`, `CaptionName` ve `En`/`Tr` taşır — çünkü
|
||||||
alan başlıklarının dil metinlerinin başka kaynağı yoktur. Okurken tümü geri doldurulur.
|
alan başlıklarının dil metinlerinin başka kaynağı yoktur. Okurken tümü geri doldurulur.
|
||||||
|
|
||||||
Her `Items` öğesi:
|
Her `Items` öğesi:
|
||||||
|
|
@ -728,7 +729,7 @@ Her `Items` öğesi:
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| `FieldName` | Veri kolonunun adı (SQL'deki adıyla birebir). |
|
| `FieldName` | Veri kolonunun adı (SQL'deki adıyla birebir). |
|
||||||
| `CaptionName` | Dil anahtarı ya da düz başlık. |
|
| `CaptionName` | Dil anahtarı ya da düz başlık. |
|
||||||
| `TurkishCaption` / `EnglishCaption` | Dil metinleri; ikisi de doldurulur. |
|
| `En` / `Tr` | Alan başlığının dil metinleri; ikisi de doldurulur. |
|
||||||
| `EditorType` | `[Fields]` Bkz. §3. |
|
| `EditorType` | `[Fields]` Bkz. §3. |
|
||||||
| `EditorOptions` | `[Fields]` DevExtreme editör JSON'u — §6. |
|
| `EditorOptions` | `[Fields]` DevExtreme editör JSON'u — §6. |
|
||||||
| `EditorScript` | `[Fields]` Alan davranış script'i — §5. |
|
| `EditorScript` | `[Fields]` Alan davranış script'i — §5. |
|
||||||
|
|
@ -754,7 +755,7 @@ Bir kolon `Groups[].Items[]` içine eklendiğinde varsayılanlar şöyle türeti
|
||||||
| `DbSourceType` | SQL tipinden `System.Data.DbType` karşılığına eşlenir (§3) |
|
| `DbSourceType` | SQL tipinden `System.Data.DbType` karşılığına eşlenir (§3) |
|
||||||
| `IsRequired` | Kolon `NOT NULL` ise `true` |
|
| `IsRequired` | Kolon `NOT NULL` ise `true` |
|
||||||
| Anahtar alan | `KeyFieldName` ilk grubun ilk alanı olarak `IncludeInEditingForm: false` ile eklenir (`DbSourceType` = `KeyFieldDbSourceType`); listede gizli sütun olur, forma girmez |
|
| Anahtar alan | `KeyFieldName` ilk grubun ilk alanı olarak `IncludeInEditingForm: false` ile eklenir (`DbSourceType` = `KeyFieldDbSourceType`); listede gizli sütun olur, forma girmez |
|
||||||
| `TurkishCaption` / `EnglishCaption` | Kolon adı PascalCase'ten kelimelere ayrılır: `OrderNo` → `Order No` |
|
| `En` / `Tr` | Kolon adı PascalCase'ten kelimelere ayrılır: `OrderNo` → `Order No` |
|
||||||
| `CaptionName` | `App.Listform.ListformField.{KolonAdı}` |
|
| `CaptionName` | `App.Listform.ListformField.{KolonAdı}` |
|
||||||
| `ColSpan` | `1` |
|
| `ColSpan` | `1` |
|
||||||
| `IncludeInEditingForm` | `true` |
|
| `IncludeInEditingForm` | `true` |
|
||||||
|
|
@ -1059,13 +1060,13 @@ varsayılan değeri olur ve **yeni kayıtta o alanı otomatik doldurur**.
|
||||||
"Grid": true, "Card": true, "Pivot": true, "Chart": true,
|
"Grid": true, "Card": true, "Pivot": true, "Chart": true,
|
||||||
"Tree": false, "Gantt": false, "Scheduler": false, "Todo": false,
|
"Tree": false, "Gantt": false, "Scheduler": false, "Todo": false,
|
||||||
|
|
||||||
"LanguageTextMenuEn": "Orders", "LanguageTextMenuTr": "Siparişler",
|
"MenuEn": "Orders", "MenuTr": "Siparişler",
|
||||||
"LanguageTextTitleEn": "Orders", "LanguageTextTitleTr": "Siparişler",
|
"TitleEn": "Orders", "TitleTr": "Siparişler",
|
||||||
"LanguageTextDescEn": "Order list", "LanguageTextDescTr": "Sipariş listesi",
|
"DescEn": "Order list", "DescTr": "Sipariş listesi",
|
||||||
"LanguageTextMenuParentEn": "MRP", "LanguageTextMenuParentTr": "MRP",
|
"MenuParentEn": "MRP", "MenuParentTr": "MRP",
|
||||||
|
|
||||||
"PermissionGroupName": "App.Mrp",
|
"PermissionGroupName": "App.Mrp",
|
||||||
"PermissionGroupDisplayNameEn": "MRP", "PermissionGroupDisplayNameTr": "MRP",
|
"PermissionGroupEn": "MRP", "PermissionGroupTr": "MRP",
|
||||||
"MenuParentCode": "App.Mrp", "MenuParentModuleId": "MRP", "MenuParentIcon": "FcFactory",
|
"MenuParentCode": "App.Mrp", "MenuParentModuleId": "MRP", "MenuParentIcon": "FcFactory",
|
||||||
"MenuIcon": "FcShipped",
|
"MenuIcon": "FcShipped",
|
||||||
|
|
||||||
|
|
@ -1081,20 +1082,20 @@ varsayılan değeri olur ve **yeni kayıtta o alanı otomatik doldurur**.
|
||||||
"Items": [
|
"Items": [
|
||||||
{
|
{
|
||||||
"FieldName": "Id", "CaptionName": "App.Listform.ListformField.Id",
|
"FieldName": "Id", "CaptionName": "App.Listform.ListformField.Id",
|
||||||
"TurkishCaption": "Kimlik", "EnglishCaption": "Id",
|
"Tr": "Kimlik", "En": "Id",
|
||||||
"EditorType": "dxTextBox", "DbSourceType": 11,
|
"EditorType": "dxTextBox", "DbSourceType": 11,
|
||||||
"IsRequired": false, "IncludeInEditingForm": false, "ColSpan": 1
|
"IsRequired": false, "IncludeInEditingForm": false, "ColSpan": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "OrderNo", "CaptionName": "App.Listform.ListformField.OrderNo",
|
"FieldName": "OrderNo", "CaptionName": "App.Listform.ListformField.OrderNo",
|
||||||
"TurkishCaption": "Sipariş No", "EnglishCaption": "Order No",
|
"Tr": "Sipariş No", "En": "Order No",
|
||||||
"EditorType": "dxTextBox", "DbSourceType": 16,
|
"EditorType": "dxTextBox", "DbSourceType": 16,
|
||||||
"IsRequired": true, "IncludeInEditingForm": true, "ColSpan": 1,
|
"IsRequired": true, "IncludeInEditingForm": true, "ColSpan": 1,
|
||||||
"EditorOptions": "{\"showClearButton\":true,\"maxLength\":20}"
|
"EditorOptions": "{\"showClearButton\":true,\"maxLength\":20}"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "CustomerId", "CaptionName": "App.Listform.ListformField.Customer",
|
"FieldName": "CustomerId", "CaptionName": "App.Listform.ListformField.Customer",
|
||||||
"TurkishCaption": "Cari", "EnglishCaption": "Customer",
|
"Tr": "Cari", "En": "Customer",
|
||||||
"EditorType": "dxSelectBox", "DbSourceType": 11,
|
"EditorType": "dxSelectBox", "DbSourceType": 11,
|
||||||
"IsRequired": true, "IncludeInEditingForm": true, "ColSpan": 1,
|
"IsRequired": true, "IncludeInEditingForm": true, "ColSpan": 1,
|
||||||
"LookupDataSourceType": 2,
|
"LookupDataSourceType": 2,
|
||||||
|
|
@ -1103,21 +1104,21 @@ varsayılan değeri olur ve **yeni kayıtta o alanı otomatik doldurur**.
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "Quantity", "CaptionName": "App.Listform.ListformField.Quantity",
|
"FieldName": "Quantity", "CaptionName": "App.Listform.ListformField.Quantity",
|
||||||
"TurkishCaption": "Miktar", "EnglishCaption": "Quantity",
|
"Tr": "Miktar", "En": "Quantity",
|
||||||
"EditorType": "dxNumberBox", "DbSourceType": 7,
|
"EditorType": "dxNumberBox", "DbSourceType": 7,
|
||||||
"IsRequired": true, "IncludeInEditingForm": true, "ColSpan": 1,
|
"IsRequired": true, "IncludeInEditingForm": true, "ColSpan": 1,
|
||||||
"EditorOptions": "{\"format\":{\"type\":\"fixedPoint\",\"precision\":2},\"showSpinButtons\":true}"
|
"EditorOptions": "{\"format\":{\"type\":\"fixedPoint\",\"precision\":2},\"showSpinButtons\":true}"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "UnitPrice", "CaptionName": "App.Listform.ListformField.UnitPrice",
|
"FieldName": "UnitPrice", "CaptionName": "App.Listform.ListformField.UnitPrice",
|
||||||
"TurkishCaption": "Birim Fiyat", "EnglishCaption": "Unit Price",
|
"Tr": "Birim Fiyat", "En": "Unit Price",
|
||||||
"EditorType": "dxNumberBox", "DbSourceType": 7,
|
"EditorType": "dxNumberBox", "DbSourceType": 7,
|
||||||
"IsRequired": true, "IncludeInEditingForm": true, "ColSpan": 1,
|
"IsRequired": true, "IncludeInEditingForm": true, "ColSpan": 1,
|
||||||
"EditorOptions": "{\"format\":{\"type\":\"fixedPoint\",\"precision\":2}}"
|
"EditorOptions": "{\"format\":{\"type\":\"fixedPoint\",\"precision\":2}}"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "Total", "CaptionName": "App.Listform.ListformField.Total",
|
"FieldName": "Total", "CaptionName": "App.Listform.ListformField.Total",
|
||||||
"TurkishCaption": "Tutar", "EnglishCaption": "Total",
|
"Tr": "Tutar", "En": "Total",
|
||||||
"EditorType": "dxNumberBox", "DbSourceType": 7,
|
"EditorType": "dxNumberBox", "DbSourceType": 7,
|
||||||
"IsRequired": false, "IncludeInEditingForm": true, "ColSpan": 2,
|
"IsRequired": false, "IncludeInEditingForm": true, "ColSpan": 2,
|
||||||
"EditorOptions": "{\"readOnly\":true,\"format\":{\"type\":\"fixedPoint\",\"precision\":2}}",
|
"EditorOptions": "{\"readOnly\":true,\"format\":{\"type\":\"fixedPoint\",\"precision\":2}}",
|
||||||
|
|
@ -1519,8 +1520,8 @@ bölümünü doldurur.** Keşif turu (§0.6) soruları da bu adımlarla bire bir
|
||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
| 0 | Komponent Tipi | her zaman | `ComponentKind` (`0` List · `1` Custom) |
|
| 0 | Komponent Tipi | her zaman | `ComponentKind` (`0` List · `1` Custom) |
|
||||||
| 1 | Custom Component | yalnız Custom yolu | `CustomComponentName`, `MenuUrl` (bileşenin `RoutePath`'i) |
|
| 1 | Custom Component | yalnız Custom yolu | `CustomComponentName`, `MenuUrl` (bileşenin `RoutePath`'i) |
|
||||||
| 2 | Menü | her zaman | `WizardName`, `CreateMenu`, `MenuParentCode`, `MenuCode`, `LanguageTextMenuEn/Tr`, `PermissionGroupName` (+ görünen adlar), `MenuIcon`, `MenuOrder` |
|
| 2 | Menü | her zaman | `WizardName`, `CreateMenu`, `MenuParentCode`, `MenuCode`, `Language.MenuEn/Tr`, `PermissionGroupName` (+ görünen adlar), `MenuIcon`, `MenuOrder` |
|
||||||
| 3 | Ayarlar | yalnız List yolu | `ListFormCode`, `DataSourceCode` (+`DataSourceConnectionString`), `SelectCommandType`, `SelectCommand`, `KeyFieldName`, `KeyFieldDbSourceType`, `IsTenant/IsBranch/IsOrganizationUnit`, `AllowAdding/Updating/Deleting`, `ConfirmDelete`, `AllowDetail`, `DefaultLayout` + 8 görünüm bayrağı, `LanguageTextTitleEn/Tr`, `LanguageTextDescEn/Tr` |
|
| 3 | Ayarlar | yalnız List yolu | `ListFormCode`, `DataSourceCode` (+`DataSourceConnectionString`), `SelectCommandType`, `SelectCommand`, `KeyFieldName`, `KeyFieldDbSourceType`, `IsTenant/IsBranch/IsOrganizationUnit`, `AllowAdding/Updating/Deleting`, `ConfirmDelete`, `AllowDetail`, `DefaultLayout` + 8 görünüm bayrağı, `Language.TitleEn/Tr`, `Language.DescEn/Tr` |
|
||||||
| 4 | Alanlar | yalnız List | `Groups[]` (aşağıda) |
|
| 4 | Alanlar | yalnız List | `Groups[]` (aşağıda) |
|
||||||
| 5 | Alt Formlar | yalnız List | `SubForms[]` |
|
| 5 | Alt Formlar | yalnız List | `SubForms[]` |
|
||||||
| 6 | Widget'lar | yalnız List | `Widgets[]` |
|
| 6 | Widget'lar | yalnız List | `Widgets[]` |
|
||||||
|
|
@ -2333,8 +2334,8 @@ Bileşen tek başına bir ekran değildir; menü ve yetki Wizard'ın `Custom` yo
|
||||||
"CreateMenu": true,
|
"CreateMenu": true,
|
||||||
"MenuParentCode": "App.Mrp",
|
"MenuParentCode": "App.Mrp",
|
||||||
"PermissionGroupName": "App.Mrp",
|
"PermissionGroupName": "App.Mrp",
|
||||||
"PermissionGroupDisplayNameEn": "MRP", "PermissionGroupDisplayNameTr": "MRP",
|
"PermissionGroupEn": "MRP", "PermissionGroupTr": "MRP",
|
||||||
"LanguageTextMenuEn": "Order Board", "LanguageTextMenuTr": "Sipariş Panosu",
|
"MenuEn": "Order Board", "MenuTr": "Sipariş Panosu",
|
||||||
"MenuIcon": "FcKanban", "MenuOrder": 2
|
"MenuIcon": "FcKanban", "MenuOrder": 2
|
||||||
},
|
},
|
||||||
"IsDeletedField": false, "IsCreatedField": false,
|
"IsDeletedField": false, "IsCreatedField": false,
|
||||||
|
|
@ -3510,8 +3511,8 @@ isteniyorsa geçilir.
|
||||||
6. **Yetki** — wizard `App.Hr.AdvanceRequests` kökünü ve `.Create/.Update/.Delete/.Export/
|
6. **Yetki** — wizard `App.Hr.AdvanceRequests` kökünü ve `.Create/.Update/.Delete/.Export/
|
||||||
.Import/.Note` alt yetkilerini üretir. Onaylayanların rolüne kök + `.Update` verilir;
|
.Import/.Note` alt yetkilerini üretir. Onaylayanların rolüne kök + `.Update` verilir;
|
||||||
talep sahiplerine kök + `.Create` yeter.
|
talep sahiplerine kök + `.Create` yeter.
|
||||||
7. **Dil** — menü/başlık/açıklama metinleri wizard dosyasındaki `LanguageText*` alanlarından,
|
7. **Dil** — menü/başlık/açıklama metinleri wizard dosyasındaki `Language` bölümünden,
|
||||||
alan başlıkları her `Items` öğesinin `TurkishCaption`/`EnglishCaption` alanlarından üretilir.
|
alan başlıkları her `Items` öğesinin `En`/`Tr` alanlarından üretilir.
|
||||||
Ayrıca `LanguagesData.json`'a dokunmaya gerek yoktur.
|
Ayrıca `LanguagesData.json`'a dokunmaya gerek yoktur.
|
||||||
8. **Teslim** — dosyaları listele, DB Migrate gerektiğini söyle, §11 kontrol listesini geç.
|
8. **Teslim** — dosyaları listele, DB Migrate gerektiğini söyle, §11 kontrol listesini geç.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -535,7 +535,7 @@ alanı taşımayan eski seed dosyaları etkilenmez.
|
||||||
|
|
||||||
**İzin grubu seçimi.** Menü adımında izin grubu bir seçim listesinden gelir
|
**İzin grubu seçimi.** Menü adımında izin grubu bir seçim listesinden gelir
|
||||||
(`GetWizardPermissionGroups`). Görünen adlar, grup adıyla aynı olan dil anahtarının metinlerinden
|
(`GetWizardPermissionGroups`). Görünen adlar, grup adıyla aynı olan dil anahtarının metinlerinden
|
||||||
okunur; seçim yapıldığında `PermissionGroupDisplayNameEn/Tr` forma doldurulur. Yeni bir grup
|
okunur; seçim yapıldığında `PermissionGroupEn/Tr` forma doldurulur. Yeni bir grup
|
||||||
tanımlanırsa grup adıyla aynı dil anahtarına bu metinler yazılır; mevcut grup seçilip alanlar boş
|
tanımlanırsa grup adıyla aynı dil anahtarına bu metinler yazılır; mevcut grup seçilip alanlar boş
|
||||||
bırakılırsa sunucu veritabanındaki değeri geri yazar. Böylece seed dosyası her durumda iki dilli
|
bırakılırsa sunucu veritabanındaki değeri geri yazar. Böylece seed dosyası her durumda iki dilli
|
||||||
görünen adı taşır.
|
görünen adı taşır.
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ public class GanttOptionDto
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Düzenlemeye izin verilsin mi
|
/// Düzenlemeye izin verilsin mi
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool AllowEditing { get; set; } = false;
|
public bool EditingEnabled { get; set; } = false;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Task eklemeye izin verilsin mi
|
/// Task eklemeye izin verilsin mi
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
|
|
@ -87,14 +87,14 @@ public class ListFormWizardDto
|
||||||
public bool Scheduler { get; set; }
|
public bool Scheduler { get; set; }
|
||||||
public bool Todo { get; set; }
|
public bool Todo { get; set; }
|
||||||
|
|
||||||
public string LanguageTextMenuEn { get; set; }
|
public string MenuEn { get; set; }
|
||||||
public string LanguageTextMenuTr { get; set; }
|
public string MenuTr { get; set; }
|
||||||
public string LanguageTextTitleEn { get; set; }
|
public string TitleEn { get; set; }
|
||||||
public string LanguageTextTitleTr { get; set; }
|
public string TitleTr { get; set; }
|
||||||
public string LanguageTextDescEn { get; set; }
|
public string DescEn { get; set; }
|
||||||
public string LanguageTextDescTr { get; set; }
|
public string DescTr { get; set; }
|
||||||
public string LanguageTextMenuParentEn { get; set; }
|
public string MenuParentEn { get; set; }
|
||||||
public string LanguageTextMenuParentTr { get; set; }
|
public string MenuParentTr { get; set; }
|
||||||
|
|
||||||
public string PermissionGroupName { get; set; }
|
public string PermissionGroupName { get; set; }
|
||||||
|
|
||||||
|
|
@ -103,10 +103,10 @@ public class ListFormWizardDto
|
||||||
/// anahtarina bu metin yazilir; mevcut bir grup secildiginde bos gelirse sunucu veritabanindaki
|
/// anahtarina bu metin yazilir; mevcut bir grup secildiginde bos gelirse sunucu veritabanindaki
|
||||||
/// degeri geri yazar, boylece seed dosyasi her durumda iki dilli gorunen adi tasir.
|
/// degeri geri yazar, boylece seed dosyasi her durumda iki dilli gorunen adi tasir.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string PermissionGroupDisplayNameEn { get; set; }
|
public string PermissionGroupEn { get; set; }
|
||||||
|
|
||||||
/// <summary>Izin grubunun Turkce gorunen adi; <see cref="PermissionGroupDisplayNameEn"/> ile ayni kurallara tabidir.</summary>
|
/// <summary>Izin grubunun Turkce gorunen adi; <see cref="PermissionGroupEn"/> ile ayni kurallara tabidir.</summary>
|
||||||
public string PermissionGroupDisplayNameTr { get; set; }
|
public string PermissionGroupTr { get; set; }
|
||||||
|
|
||||||
public string MenuParentModuleId { get; set; }
|
public string MenuParentModuleId { get; set; }
|
||||||
public string MenuParentCode { get; set; }
|
public string MenuParentCode { get; set; }
|
||||||
|
|
|
||||||
|
|
@ -96,14 +96,17 @@ public class WizardSeedFileDto
|
||||||
nameof(WizardColumnItemInputDto.LookupQuery),
|
nameof(WizardColumnItemInputDto.LookupQuery),
|
||||||
];
|
];
|
||||||
|
|
||||||
/// <summary>Dosyada `Menu` basligi altinda toplanan wizard alanlari.</summary>
|
/// <summary>Dosyada `Menu` basligi altinda toplanan wizard alanlari; adlari degismez.</summary>
|
||||||
private static readonly string[] MenuKeys =
|
private static readonly (string Property, string SeedKey)[] MenuKeys =
|
||||||
[
|
[
|
||||||
nameof(ListFormWizardDto.CreateMenu), nameof(ListFormWizardDto.MenuCode), nameof(ListFormWizardDto.MenuOrder),
|
Same(nameof(ListFormWizardDto.MenuParentCode)), Same(nameof(ListFormWizardDto.MenuParentIcon)),
|
||||||
nameof(ListFormWizardDto.MenuUrl), nameof(ListFormWizardDto.MenuIcon), nameof(ListFormWizardDto.MenuParentCode),
|
Same(nameof(ListFormWizardDto.CreateMenu)), Same(nameof(ListFormWizardDto.MenuCode)),
|
||||||
nameof(ListFormWizardDto.MenuParentIcon),
|
Same(nameof(ListFormWizardDto.MenuOrder)), Same(nameof(ListFormWizardDto.MenuUrl)),
|
||||||
|
Same(nameof(ListFormWizardDto.MenuIcon)),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
private static (string Property, string SeedKey) Same(string key) => (key, key);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Dosyada daha okunakli adla yazilan alanlar. Modul, wizard'in ana bilgisidir; menu ve
|
/// Dosyada daha okunakli adla yazilan alanlar. Modul, wizard'in ana bilgisidir; menu ve
|
||||||
/// yetkilerin hangi modul altinda filtrelenecegini belirler.
|
/// yetkilerin hangi modul altinda filtrelenecegini belirler.
|
||||||
|
|
@ -125,22 +128,33 @@ public class WizardSeedFileDto
|
||||||
[
|
[
|
||||||
nameof(ListFormWizardDto.ComponentKind), nameof(ListFormWizardDto.WizardName), WizardCodeKey,
|
nameof(ListFormWizardDto.ComponentKind), nameof(ListFormWizardDto.WizardName), WizardCodeKey,
|
||||||
nameof(ListFormWizardDto.SeededAt), nameof(ListFormWizardDto.CustomComponentName),
|
nameof(ListFormWizardDto.SeededAt), nameof(ListFormWizardDto.CustomComponentName),
|
||||||
nameof(ListFormWizardDto.PermissionGroupName), nameof(ListFormWizardDto.PermissionGroupDisplayNameEn),
|
nameof(ListFormWizardDto.PermissionGroupName), "ModuleId",
|
||||||
nameof(ListFormWizardDto.PermissionGroupDisplayNameTr), "ModuleId",
|
|
||||||
nameof(ListFormWizardDto.DataSourceConnectionString),
|
nameof(ListFormWizardDto.DataSourceConnectionString),
|
||||||
MenuSection, LanguageSection, nameof(ListFormWizardDto.Groups),
|
MenuSection, LanguageSection, nameof(ListFormWizardDto.Groups),
|
||||||
];
|
];
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Dosyada `Language` basligi altinda toplanan dil metinleri. ListForm yalnizca dil
|
/// Dosyada `Language` basligi altinda toplanan dil metinleri: menu, ekran ve izin grubunun
|
||||||
/// anahtarini tasir (`Title = "{ListFormCode}.Title"`); metinlerin tek kaynagi burasidir.
|
/// iki dilli gorunen adlari. ListForm yalnizca dil anahtarini tasir
|
||||||
|
/// (`Title = "{ListFormCode}.Title"`); metinlerin tek kaynagi burasidir.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private static readonly string[] LanguageKeys =
|
private static readonly (string Property, string SeedKey)[] LanguageKeys =
|
||||||
[
|
[
|
||||||
nameof(ListFormWizardDto.LanguageTextMenuEn), nameof(ListFormWizardDto.LanguageTextMenuTr),
|
Same(nameof(ListFormWizardDto.MenuParentEn)), Same(nameof(ListFormWizardDto.MenuParentTr)),
|
||||||
nameof(ListFormWizardDto.LanguageTextTitleEn), nameof(ListFormWizardDto.LanguageTextTitleTr),
|
Same(nameof(ListFormWizardDto.PermissionGroupEn)), Same(nameof(ListFormWizardDto.PermissionGroupTr)),
|
||||||
nameof(ListFormWizardDto.LanguageTextDescEn), nameof(ListFormWizardDto.LanguageTextDescTr),
|
Same(nameof(ListFormWizardDto.MenuEn)), Same(nameof(ListFormWizardDto.MenuTr)),
|
||||||
nameof(ListFormWizardDto.LanguageTextMenuParentEn), nameof(ListFormWizardDto.LanguageTextMenuParentTr),
|
Same(nameof(ListFormWizardDto.TitleEn)), Same(nameof(ListFormWizardDto.TitleTr)),
|
||||||
|
Same(nameof(ListFormWizardDto.DescEn)), Same(nameof(ListFormWizardDto.DescTr)),
|
||||||
|
];
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Alan basliginin iki dilli metinleri. Oge zaten bir alan tanimi oldugu icin dosyada dilin
|
||||||
|
/// adiyla degil koduyla yazilir.
|
||||||
|
/// </summary>
|
||||||
|
private static readonly (string Property, string SeedKey)[] CaptionKeys =
|
||||||
|
[
|
||||||
|
(nameof(WizardColumnItemInputDto.EnglishCaption), "En"),
|
||||||
|
(nameof(WizardColumnItemInputDto.TurkishCaption), "Tr"),
|
||||||
];
|
];
|
||||||
|
|
||||||
private const string MenuSection = "Menu";
|
private const string MenuSection = "Menu";
|
||||||
|
|
@ -203,6 +217,12 @@ public class WizardSeedFileDto
|
||||||
foreach (var (property, seedKey) in RenamedKeys)
|
foreach (var (property, seedKey) in RenamedKeys)
|
||||||
Rename(wizardNode, property, seedKey);
|
Rename(wizardNode, property, seedKey);
|
||||||
|
|
||||||
|
foreach (var item in ItemNodes(wizardNode))
|
||||||
|
{
|
||||||
|
foreach (var (property, seedKey) in CaptionKeys)
|
||||||
|
Rename(item, property, seedKey);
|
||||||
|
}
|
||||||
|
|
||||||
MoveIntoSection(wizardNode, MenuSection, MenuKeys);
|
MoveIntoSection(wizardNode, MenuSection, MenuKeys);
|
||||||
MoveIntoSection(wizardNode, LanguageSection, LanguageKeys);
|
MoveIntoSection(wizardNode, LanguageSection, LanguageKeys);
|
||||||
|
|
||||||
|
|
@ -221,16 +241,29 @@ public class WizardSeedFileDto
|
||||||
var node = JsonNode.Parse(json);
|
var node = JsonNode.Parse(json);
|
||||||
if (node?[nameof(Wizard)] is JsonObject wizardNode)
|
if (node?[nameof(Wizard)] is JsonObject wizardNode)
|
||||||
{
|
{
|
||||||
FlattenSection(wizardNode, MenuSection);
|
FlattenSection(wizardNode, MenuSection, MenuKeys);
|
||||||
FlattenSection(wizardNode, LanguageSection);
|
FlattenSection(wizardNode, LanguageSection, LanguageKeys);
|
||||||
|
|
||||||
foreach (var (property, seedKey) in RenamedKeys)
|
foreach (var (property, seedKey) in RenamedKeys)
|
||||||
Rename(wizardNode, seedKey, property);
|
Rename(wizardNode, seedKey, property);
|
||||||
|
|
||||||
|
foreach (var item in ItemNodes(wizardNode))
|
||||||
|
{
|
||||||
|
foreach (var (property, seedKey) in CaptionKeys)
|
||||||
|
Rename(item, seedKey, property);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return node.Deserialize<WizardSeedFileDto>(SeedReadOptions)?.Rehydrate();
|
return node.Deserialize<WizardSeedFileDto>(SeedReadOptions)?.Rehydrate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>Wizard bolumundeki tum grup ogeleri; ad donusumu her ogeye ayni sekilde uygulanir.</summary>
|
||||||
|
private static IEnumerable<JsonObject> ItemNodes(JsonObject wizard) =>
|
||||||
|
(wizard[nameof(ListFormWizardDto.Groups)] as JsonArray ?? [])
|
||||||
|
.OfType<JsonObject>()
|
||||||
|
.SelectMany(g => g[nameof(WizardColumnGroupInputDto.Items)] as JsonArray ?? [])
|
||||||
|
.OfType<JsonObject>();
|
||||||
|
|
||||||
private static void Rename(JsonObject wizard, string from, string to)
|
private static void Rename(JsonObject wizard, string from, string to)
|
||||||
{
|
{
|
||||||
if (wizard.Remove(from, out var value))
|
if (wizard.Remove(from, out var value))
|
||||||
|
|
@ -255,13 +288,13 @@ public class WizardSeedFileDto
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Verilen anahtarlari wizard bolumunden alip tek bir baslik altina tasir.</summary>
|
/// <summary>Verilen anahtarlari wizard bolumunden alip tek bir baslik altina tasir.</summary>
|
||||||
private static void MoveIntoSection(JsonObject wizard, string section, string[] keys)
|
private static void MoveIntoSection(JsonObject wizard, string section, (string Property, string SeedKey)[] keys)
|
||||||
{
|
{
|
||||||
var target = new JsonObject();
|
var target = new JsonObject();
|
||||||
foreach (var key in keys)
|
foreach (var (property, seedKey) in keys)
|
||||||
{
|
{
|
||||||
if (wizard.Remove(key, out var value))
|
if (wizard.Remove(property, out var value))
|
||||||
target[key] = value;
|
target[seedKey] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (target.Count > 0)
|
if (target.Count > 0)
|
||||||
|
|
@ -269,15 +302,15 @@ public class WizardSeedFileDto
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Baslik altindaki alanlari wizard bolumune geri tasir.</summary>
|
/// <summary>Baslik altindaki alanlari wizard bolumune geri tasir.</summary>
|
||||||
private static void FlattenSection(JsonObject wizard, string section)
|
private static void FlattenSection(JsonObject wizard, string section, (string Property, string SeedKey)[] keys)
|
||||||
{
|
{
|
||||||
if (!wizard.Remove(section, out var value) || value is not JsonObject group)
|
if (!wizard.Remove(section, out var value) || value is not JsonObject group)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
foreach (var key in group.Select(x => x.Key).ToArray())
|
foreach (var (property, seedKey) in keys)
|
||||||
{
|
{
|
||||||
if (group.Remove(key, out var item))
|
if (group.Remove(seedKey, out var item))
|
||||||
wizard[key] = item;
|
wizard[property] = item;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -125,13 +125,13 @@ public class ListFormWizardAppService(
|
||||||
var inserted = new WizardInsertedRecordsDto();
|
var inserted = new WizardInsertedRecordsDto();
|
||||||
|
|
||||||
//Dil - Language Keys
|
//Dil - Language Keys
|
||||||
await CreateLangKey(nameLangKey, input.LanguageTextMenuEn, input.LanguageTextMenuTr, inserted);
|
await CreateLangKey(nameLangKey, input.MenuEn, input.MenuTr, inserted);
|
||||||
// Title/Desc anahtarları yalnızca ListForm tarafından tüketilir; Custom yolunda
|
// Title/Desc anahtarları yalnızca ListForm tarafından tüketilir; Custom yolunda
|
||||||
// öksüz kayıt bırakmamak için üretilmez.
|
// öksüz kayıt bırakmamak için üretilmez.
|
||||||
if (!isCustomComponent)
|
if (!isCustomComponent)
|
||||||
{
|
{
|
||||||
await CreateLangKey(titleLangKey, input.LanguageTextTitleEn, input.LanguageTextTitleTr, inserted);
|
await CreateLangKey(titleLangKey, input.TitleEn, input.TitleTr, inserted);
|
||||||
await CreateLangKey(descLangKey, input.LanguageTextDescEn, input.LanguageTextDescTr, inserted);
|
await CreateLangKey(descLangKey, input.DescEn, input.DescTr, inserted);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Permission Group
|
//Permission Group
|
||||||
|
|
@ -234,7 +234,7 @@ public class ListFormWizardAppService(
|
||||||
: !string.IsNullOrWhiteSpace(input.MenuIcon)
|
: !string.IsNullOrWhiteSpace(input.MenuIcon)
|
||||||
? input.MenuIcon
|
? input.MenuIcon
|
||||||
: WizardConsts.MenuIcon;
|
: WizardConsts.MenuIcon;
|
||||||
await CreateLangKey(input.MenuParentCode, input.LanguageTextMenuParentEn, input.LanguageTextMenuParentTr, inserted);
|
await CreateLangKey(input.MenuParentCode, input.MenuParentEn, input.MenuParentTr, inserted);
|
||||||
menuParent = await repoMenu.InsertAsync(new Menu
|
menuParent = await repoMenu.InsertAsync(new Menu
|
||||||
{
|
{
|
||||||
Code = input.MenuParentCode,
|
Code = input.MenuParentCode,
|
||||||
|
|
@ -1445,20 +1445,24 @@ public class ListFormWizardAppService(
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private async Task ApplyPermissionGroupAsync(ListFormWizardDto input, string groupName, WizardInsertedRecordsDto inserted)
|
private async Task ApplyPermissionGroupAsync(ListFormWizardDto input, string groupName, WizardInsertedRecordsDto inserted)
|
||||||
{
|
{
|
||||||
var displayEn = input.PermissionGroupDisplayNameEn?.Trim();
|
var displayEn = input.PermissionGroupEn?.Trim();
|
||||||
var displayTr = input.PermissionGroupDisplayNameTr?.Trim();
|
var displayTr = input.PermissionGroupTr?.Trim();
|
||||||
|
|
||||||
if (!await repoPermGroup.AnyAsync(a => a.Name == groupName))
|
if (!await repoPermGroup.AnyAsync(a => a.Name == groupName))
|
||||||
{
|
{
|
||||||
await repoPermGroup.InsertAsync(new PermissionGroupDefinitionRecord(GuidGenerator.Create(), groupName, groupName), autoSave: false);
|
await repoPermGroup.InsertAsync(new PermissionGroupDefinitionRecord(GuidGenerator.Create(), groupName, groupName), autoSave: false);
|
||||||
|
|
||||||
// Grup adi ust menu koduyla ayniysa dil anahtari menu metinleriyle zaten uretilir;
|
// Grup adi ust menu koduyla ayniysa anahtar menu adiyla ortaktir; metin varsa uzerine
|
||||||
// burada uzerine yazmak menu adini bozar.
|
// yazmak menu adini bozar, ust menu daha once baska bir wizard'la olustuysa metin hic
|
||||||
|
// uretilmemis olabilir - o durumda menu metinleriyle tamamlanir.
|
||||||
if (string.Equals(groupName, input.MenuParentCode, StringComparison.OrdinalIgnoreCase))
|
if (string.Equals(groupName, input.MenuParentCode, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
await EnsureLangKey(groupName, inserted);
|
displayEn = string.IsNullOrWhiteSpace(displayEn) ? input.MenuParentEn?.Trim() : displayEn;
|
||||||
displayEn = string.IsNullOrWhiteSpace(displayEn) ? input.LanguageTextMenuParentEn?.Trim() : displayEn;
|
displayTr = string.IsNullOrWhiteSpace(displayTr) ? input.MenuParentTr?.Trim() : displayTr;
|
||||||
displayTr = string.IsNullOrWhiteSpace(displayTr) ? input.LanguageTextMenuParentTr?.Trim() : displayTr;
|
|
||||||
|
var (menuEn, menuTr) = await GetLangTextsAsync(groupName);
|
||||||
|
if (string.IsNullOrWhiteSpace(menuEn) || string.IsNullOrWhiteSpace(menuTr))
|
||||||
|
await CreateLangKey(groupName, displayEn ?? groupName, displayTr ?? groupName, inserted);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -1484,8 +1488,8 @@ public class ListFormWizardAppService(
|
||||||
await CreateLangKey(groupName, displayEn, displayTr, inserted);
|
await CreateLangKey(groupName, displayEn, displayTr, inserted);
|
||||||
}
|
}
|
||||||
|
|
||||||
input.PermissionGroupDisplayNameEn = string.IsNullOrWhiteSpace(displayEn) ? groupName : displayEn;
|
input.PermissionGroupEn = string.IsNullOrWhiteSpace(displayEn) ? groupName : displayEn;
|
||||||
input.PermissionGroupDisplayNameTr = string.IsNullOrWhiteSpace(displayTr) ? groupName : displayTr;
|
input.PermissionGroupTr = string.IsNullOrWhiteSpace(displayTr) ? groupName : displayTr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Bir dil anahtarinin Ingilizce/Turkce metinlerini dondurur; yoksa null.</summary>
|
/// <summary>Bir dil anahtarinin Ingilizce/Turkce metinlerini dondurur; yoksa null.</summary>
|
||||||
|
|
@ -1541,16 +1545,4 @@ public class ListFormWizardAppService(
|
||||||
|
|
||||||
return existing;
|
return existing;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<LanguageKey> EnsureLangKey(string key, WizardInsertedRecordsDto inserted = null)
|
|
||||||
{
|
|
||||||
var res = PlatformConsts.AppName;
|
|
||||||
|
|
||||||
var existing = await repoLangKey.FirstOrDefaultAsync(a => a.ResourceName == res && a.Key == key);
|
|
||||||
if (existing != null) return existing;
|
|
||||||
|
|
||||||
existing = await repoLangKey.InsertAsync(new LanguageKey { ResourceName = res, Key = key }, autoSave: true);
|
|
||||||
inserted?.LanguageKeys.Add(key);
|
|
||||||
return existing;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5262,6 +5262,12 @@
|
||||||
"en": "Allow Updating",
|
"en": "Allow Updating",
|
||||||
"tr": "Güncellemeye İzin Ver"
|
"tr": "Güncellemeye İzin Ver"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "App.ListFormEdit.EditingEnabled",
|
||||||
|
"en": "Gantt Editing Enabled",
|
||||||
|
"tr": "Gantt Düzenleme Etkin"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"resourceName": "Platform",
|
"resourceName": "Platform",
|
||||||
"key": "App.ListFormEdit.AllowEditing",
|
"key": "App.ListFormEdit.AllowEditing",
|
||||||
|
|
@ -5295,8 +5301,8 @@
|
||||||
{
|
{
|
||||||
"resourceName": "Platform",
|
"resourceName": "Platform",
|
||||||
"key": "App.ListFormEdit.AllowTaskResourceUpdating",
|
"key": "App.ListFormEdit.AllowTaskResourceUpdating",
|
||||||
"en": "Allow Task Resource Updating",
|
"en": "Resource Editing Enabled",
|
||||||
"tr": "Görev Kaynaklarını Güncelleme İzni"
|
"tr": "Görev Kaynak Güncelleme İzni"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"resourceName": "Platform",
|
"resourceName": "Platform",
|
||||||
|
|
|
||||||
|
|
@ -150,7 +150,12 @@ public class WizardDataSeeder : IDataSeedContributor, ITransientDependency
|
||||||
|
|
||||||
if (alreadySeeded)
|
if (alreadySeeded)
|
||||||
{
|
{
|
||||||
_logger.LogInformation("[{File}] '{WizardName}' already exists, skipped.", fileName, wizardName);
|
// Ekran kurulu olsa da dil metinleri eksik kalmis olabilir: seed dosyasina yeni
|
||||||
|
// bir alan eklendiginde ya da ekran seeder disinda olustugunda sutun basliklari
|
||||||
|
// ham anahtar olarak gorunur. Mevcut metinlerin uzerine yazilmadigi icin bu
|
||||||
|
// tamamlama ekrani degistirmez.
|
||||||
|
await SeedLanguageTextsAsync(seedFile.Wizard, isCustomComponent);
|
||||||
|
_logger.LogInformation("[{File}] '{WizardName}' already exists, only missing language texts were created.", fileName, wizardName);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -172,9 +177,7 @@ public class WizardDataSeeder : IDataSeedContributor, ITransientDependency
|
||||||
|
|
||||||
var code = input.ResolveMenuCode();
|
var code = input.ResolveMenuCode();
|
||||||
var listFormCode = input.ResolveListFormCode();
|
var listFormCode = input.ResolveListFormCode();
|
||||||
var titleLangKey = $"{listFormCode}.Title";
|
|
||||||
var nameLangKey = code;
|
var nameLangKey = code;
|
||||||
var descLangKey = $"{listFormCode}.Desc";
|
|
||||||
var permCreateName = $"{code}.Create";
|
var permCreateName = $"{code}.Create";
|
||||||
var permUpdateName = $"{code}.Update";
|
var permUpdateName = $"{code}.Update";
|
||||||
var permDeleteName = $"{code}.Delete";
|
var permDeleteName = $"{code}.Delete";
|
||||||
|
|
@ -187,16 +190,10 @@ public class WizardDataSeeder : IDataSeedContributor, ITransientDependency
|
||||||
var customRoutePath = NormalizeSeedCustomRoutePath(input);
|
var customRoutePath = NormalizeSeedCustomRoutePath(input);
|
||||||
|
|
||||||
// Dil - Language Keys
|
// Dil - Language Keys
|
||||||
await CreateLangKeyAsync(nameLangKey, input.LanguageTextMenuEn, input.LanguageTextMenuTr);
|
await SeedLanguageTextsAsync(input, isCustomComponent);
|
||||||
if (!isCustomComponent)
|
|
||||||
{
|
|
||||||
await CreateLangKeyAsync(titleLangKey, input.LanguageTextTitleEn, input.LanguageTextTitleTr);
|
|
||||||
await CreateLangKeyAsync(descLangKey, input.LanguageTextDescEn, input.LanguageTextDescTr);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Permission Group
|
// Permission Group - gorunen adin dil anahtari SeedLanguageTextsAsync icinde uretilir.
|
||||||
// Menuye eklenmeyen wizard'da izin grubu sorulmaz; bos geldiginde varsayilan gruba dusar.
|
var groupName = ResolvePermissionGroupName(input);
|
||||||
var groupName = string.IsNullOrWhiteSpace(input.PermissionGroupName) ? AppName : input.PermissionGroupName.Trim();
|
|
||||||
input.PermissionGroupName = groupName;
|
input.PermissionGroupName = groupName;
|
||||||
if (!await _repoPermGroup.AnyAsync(a => a.Name == groupName))
|
if (!await _repoPermGroup.AnyAsync(a => a.Name == groupName))
|
||||||
{
|
{
|
||||||
|
|
@ -204,13 +201,6 @@ public class WizardDataSeeder : IDataSeedContributor, ITransientDependency
|
||||||
new PermissionGroupDefinitionRecord(Guid.NewGuid(), groupName, groupName), autoSave: true);
|
new PermissionGroupDefinitionRecord(Guid.NewGuid(), groupName, groupName), autoSave: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Grup adi ust menu koduyla ayniysa dil anahtari menu metinleriyle uretilir; aksi halde
|
|
||||||
// gorunen adlar yazilir. CreateLangKeyAsync mevcut metinlerin uzerine yazmaz.
|
|
||||||
if (string.Equals(groupName, input.MenuParentCode, StringComparison.OrdinalIgnoreCase))
|
|
||||||
await EnsureLangKeyAsync(groupName);
|
|
||||||
else
|
|
||||||
await CreateLangKeyAsync(groupName, input.PermissionGroupDisplayNameEn?.Trim(), input.PermissionGroupDisplayNameTr?.Trim());
|
|
||||||
|
|
||||||
// Permissions - tek seferde mevcut permission'ları çek, sonra her birini kontrol et
|
// Permissions - tek seferde mevcut permission'ları çek, sonra her birini kontrol et
|
||||||
var permQueryable = await _repoPerm.GetQueryableAsync();
|
var permQueryable = await _repoPerm.GetQueryableAsync();
|
||||||
var existingPerms = permQueryable.Where(a => a.GroupName == groupName).ToList();
|
var existingPerms = permQueryable.Where(a => a.GroupName == groupName).ToList();
|
||||||
|
|
@ -287,7 +277,6 @@ public class WizardDataSeeder : IDataSeedContributor, ITransientDependency
|
||||||
: !string.IsNullOrWhiteSpace(input.MenuIcon)
|
: !string.IsNullOrWhiteSpace(input.MenuIcon)
|
||||||
? input.MenuIcon
|
? input.MenuIcon
|
||||||
: WizardConsts.MenuIcon;
|
: WizardConsts.MenuIcon;
|
||||||
await CreateLangKeyAsync(input.MenuParentCode, input.LanguageTextMenuParentEn, input.LanguageTextMenuParentTr);
|
|
||||||
menuParent = await _repoMenu.InsertAsync(new Menu
|
menuParent = await _repoMenu.InsertAsync(new Menu
|
||||||
{
|
{
|
||||||
Code = input.MenuParentCode,
|
Code = input.MenuParentCode,
|
||||||
|
|
@ -382,12 +371,6 @@ public class WizardDataSeeder : IDataSeedContributor, ITransientDependency
|
||||||
await _repoListFormField.InsertAsync(field, autoSave: true);
|
await _repoListFormField.InsertAsync(field, autoSave: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Alan basliklarinin iki dilli metinleri yalnizca wizard bolumunde tasinir.
|
|
||||||
foreach (var item in input.Groups.SelectMany(g => g.Items))
|
|
||||||
{
|
|
||||||
await CreateLangKeyAsync(item.CaptionName, item.EnglishCaption, item.TurkishCaption);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (var criteria in seedFile.ListForm.WorkflowDto.Criteria)
|
foreach (var criteria in seedFile.ListForm.WorkflowDto.Criteria)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(criteria.Id))
|
if (string.IsNullOrWhiteSpace(criteria.Id))
|
||||||
|
|
@ -486,6 +469,57 @@ public class WizardDataSeeder : IDataSeedContributor, ITransientDependency
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Wizard'in urettigi ekranin dil metinleri: menu adi, ust menu adi, izin grubu gorunen adi,
|
||||||
|
/// ekran basligi/aciklamasi ve alan basliklari. Ekran kurulumundan bagimsiz calisir; boylece
|
||||||
|
/// zaten kurulu bir ekranda eksik kalan anahtarlar da her seed calismasinda tamamlanir.
|
||||||
|
/// </summary>
|
||||||
|
private async Task SeedLanguageTextsAsync(ListFormWizardDto input, bool isCustomComponent)
|
||||||
|
{
|
||||||
|
await CreateLangKeyAsync(input.ResolveMenuCode(), input.MenuEn, input.MenuTr);
|
||||||
|
|
||||||
|
// Ust menu ve izin grubu paylasilan kayitlardir: ilk wizard onlari uretmis olsa bile dil
|
||||||
|
// metinleri eksik kalabilir, bu yuzden menu/grup kaydinin varligindan bagimsiz yazilir.
|
||||||
|
if (input.CreateMenu)
|
||||||
|
await CreateLangKeyAsync(input.MenuParentCode, input.MenuParentEn, input.MenuParentTr);
|
||||||
|
|
||||||
|
var groupName = ResolvePermissionGroupName(input);
|
||||||
|
|
||||||
|
// Grup adi ust menu koduyla ayniysa anahtar tektir; menu adi ile izin grubu adi ayni
|
||||||
|
// metni gosterir, ayrica gorunen ad girilmediyse menu metinlerine duser.
|
||||||
|
if (!string.Equals(groupName, input.MenuParentCode, StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
await CreateLangKeyAsync(groupName, input.PermissionGroupEn?.Trim(), input.PermissionGroupTr?.Trim());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
await CreateLangKeyAsync(groupName,
|
||||||
|
input.PermissionGroupEn?.Trim() ?? input.MenuParentEn,
|
||||||
|
input.PermissionGroupTr?.Trim() ?? input.MenuParentTr);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Custom yolunda ListForm ekosistemi (baslik, aciklama, alan basliklari) uretilmez.
|
||||||
|
if (isCustomComponent)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var listFormCode = input.ResolveListFormCode();
|
||||||
|
await CreateLangKeyAsync($"{listFormCode}.Title", input.TitleEn, input.TitleTr);
|
||||||
|
await CreateLangKeyAsync($"{listFormCode}.Desc", input.DescEn, input.DescTr);
|
||||||
|
|
||||||
|
// Alan basliklarinin iki dilli metinleri yalnizca wizard bolumunde tasinir.
|
||||||
|
foreach (var item in (input.Groups ?? []).SelectMany(g => g.Items ?? []))
|
||||||
|
{
|
||||||
|
await CreateLangKeyAsync(item.CaptionName, item.EnglishCaption, item.TurkishCaption);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Yetkilerin toplanacagi izin grubu adi. Menuye eklenmeyen wizard'da grup sorulmaz; bos
|
||||||
|
/// geldiginde varsayilan uygulama grubuna duser.
|
||||||
|
/// </summary>
|
||||||
|
private static string ResolvePermissionGroupName(ListFormWizardDto input) =>
|
||||||
|
string.IsNullOrWhiteSpace(input.PermissionGroupName) ? AppName : input.PermissionGroupName.Trim();
|
||||||
|
|
||||||
private async Task CreateLangKeyAsync(string key, string textEn, string textTr)
|
private async Task CreateLangKeyAsync(string key, string textEn, string textTr)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(key)) return;
|
if (string.IsNullOrWhiteSpace(key)) return;
|
||||||
|
|
@ -519,16 +553,6 @@ public class WizardDataSeeder : IDataSeedContributor, ITransientDependency
|
||||||
}, autoSave: true);
|
}, autoSave: true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task EnsureLangKeyAsync(string key)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrWhiteSpace(key)) return;
|
|
||||||
|
|
||||||
if (!await _repoLangKey.AnyAsync(a => a.ResourceName == _appName && a.Key == key))
|
|
||||||
{
|
|
||||||
await _repoLangKey.InsertAsync(new LanguageKey { ResourceName = _appName, Key = key }, autoSave: true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,26 +6,26 @@
|
||||||
"SeededAt": "2026-09-02T11:24:22.3331299\u002B03:00",
|
"SeededAt": "2026-09-02T11:24:22.3331299\u002B03:00",
|
||||||
"CustomComponentName": null,
|
"CustomComponentName": null,
|
||||||
"PermissionGroupName": "App.Wizard.Sales",
|
"PermissionGroupName": "App.Wizard.Sales",
|
||||||
"PermissionGroupDisplayNameEn": "Sales",
|
|
||||||
"PermissionGroupDisplayNameTr": "Sat\u0131\u015F",
|
|
||||||
"ModuleId": "Sal",
|
"ModuleId": "Sal",
|
||||||
"Menu": {
|
"Menu": {
|
||||||
|
"MenuParentCode": "App.Wizard.Sales",
|
||||||
|
"MenuParentIcon": "FcAssistant",
|
||||||
"MenuCode": "App.Wizard.Approval",
|
"MenuCode": "App.Wizard.Approval",
|
||||||
"MenuOrder": 1,
|
"MenuOrder": 1,
|
||||||
"MenuUrl": "/admin/list/App.Wizard.Approval",
|
"MenuUrl": "/admin/list/App.Wizard.Approval",
|
||||||
"MenuIcon": "FcBadDecision",
|
"MenuIcon": "FcBadDecision"
|
||||||
"MenuParentCode": "App.Wizard.Sales",
|
|
||||||
"MenuParentIcon": "FcAssistant"
|
|
||||||
},
|
},
|
||||||
"Language": {
|
"Language": {
|
||||||
"LanguageTextMenuEn": "Approval",
|
"MenuParentEn": "Sales",
|
||||||
"LanguageTextMenuTr": "Approval",
|
"MenuParentTr": "Sat\u0131\u015F",
|
||||||
"LanguageTextTitleEn": "Approval",
|
"PermissionGroupEn": "Sales",
|
||||||
"LanguageTextTitleTr": "Approval",
|
"PermissionGroupTr": "Sat\u0131\u015F",
|
||||||
"LanguageTextDescEn": "Approval",
|
"MenuEn": "Approval",
|
||||||
"LanguageTextDescTr": "Approval",
|
"MenuTr": "Approval",
|
||||||
"LanguageTextMenuParentEn": "Sales",
|
"TitleEn": "Approval",
|
||||||
"LanguageTextMenuParentTr": "Sat\u0131\u015F"
|
"TitleTr": "Approval",
|
||||||
|
"DescEn": "Approval",
|
||||||
|
"DescTr": "Approval"
|
||||||
},
|
},
|
||||||
"Groups": [
|
"Groups": [
|
||||||
{
|
{
|
||||||
|
|
@ -33,38 +33,38 @@
|
||||||
{
|
{
|
||||||
"FieldName": "Id",
|
"FieldName": "Id",
|
||||||
"CaptionName": "App.Listform.ListformField.Id",
|
"CaptionName": "App.Listform.ListformField.Id",
|
||||||
"TurkishCaption": "Id",
|
"En": "Id",
|
||||||
"EnglishCaption": "Id"
|
"Tr": "Id"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "UserName",
|
"FieldName": "UserName",
|
||||||
"CaptionName": "App.Listform.ListformField.UserName",
|
"CaptionName": "App.Listform.ListformField.UserName",
|
||||||
"TurkishCaption": "User Name",
|
"En": "User Name",
|
||||||
"EnglishCaption": "User Name"
|
"Tr": "User Name"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "Status",
|
"FieldName": "Status",
|
||||||
"CaptionName": "App.Listform.ListformField.Status",
|
"CaptionName": "App.Listform.ListformField.Status",
|
||||||
"TurkishCaption": "Status",
|
"En": "Status",
|
||||||
"EnglishCaption": "Status"
|
"Tr": "Status"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "Date",
|
"FieldName": "Date",
|
||||||
"CaptionName": "App.Listform.ListformField.Date",
|
"CaptionName": "App.Listform.ListformField.Date",
|
||||||
"TurkishCaption": "Date",
|
"En": "Date",
|
||||||
"EnglishCaption": "Date"
|
"Tr": "Date"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "Description",
|
"FieldName": "Description",
|
||||||
"CaptionName": "App.Listform.ListformField.Description",
|
"CaptionName": "App.Listform.ListformField.Description",
|
||||||
"TurkishCaption": "Description",
|
"En": "Description",
|
||||||
"EnglishCaption": "Description"
|
"Tr": "Description"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "Text",
|
"FieldName": "Text",
|
||||||
"CaptionName": "App.Listform.ListformField.Text",
|
"CaptionName": "App.Listform.ListformField.Text",
|
||||||
"TurkishCaption": "Text",
|
"En": "Text",
|
||||||
"EnglishCaption": "Text"
|
"Tr": "Text"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -214,7 +214,7 @@
|
||||||
"StartExpr": null,
|
"StartExpr": null,
|
||||||
"EndExpr": null,
|
"EndExpr": null,
|
||||||
"ProgressExpr": null,
|
"ProgressExpr": null,
|
||||||
"AllowEditing": false,
|
"EditingEnabled": false,
|
||||||
"AllowTaskAdding": false,
|
"AllowTaskAdding": false,
|
||||||
"AllowTaskUpdating": false,
|
"AllowTaskUpdating": false,
|
||||||
"AllowTaskResourceUpdating": false,
|
"AllowTaskResourceUpdating": false,
|
||||||
|
|
|
||||||
|
|
@ -6,26 +6,26 @@
|
||||||
"SeededAt": "2026-09-01T09:05:00",
|
"SeededAt": "2026-09-01T09:05:00",
|
||||||
"CustomComponentName": "",
|
"CustomComponentName": "",
|
||||||
"PermissionGroupName": "App.Prj",
|
"PermissionGroupName": "App.Prj",
|
||||||
"PermissionGroupDisplayNameEn": "Project",
|
|
||||||
"PermissionGroupDisplayNameTr": "Proje",
|
|
||||||
"ModuleId": "Prj",
|
"ModuleId": "Prj",
|
||||||
"Menu": {
|
"Menu": {
|
||||||
|
"MenuParentCode": "App.Prj",
|
||||||
|
"MenuParentIcon": "FcTimeline",
|
||||||
"MenuCode": "App.Prj.Customers",
|
"MenuCode": "App.Prj.Customers",
|
||||||
"MenuOrder": 4,
|
"MenuOrder": 4,
|
||||||
"MenuUrl": "/admin/list/App.Prj.Customers",
|
"MenuUrl": "/admin/list/App.Prj.Customers",
|
||||||
"MenuIcon": "FcBusinessContact",
|
"MenuIcon": "FcBusinessContact"
|
||||||
"MenuParentCode": "App.Prj",
|
|
||||||
"MenuParentIcon": "FcTimeline"
|
|
||||||
},
|
},
|
||||||
"Language": {
|
"Language": {
|
||||||
"LanguageTextMenuEn": "Customers",
|
"MenuParentEn": "Project",
|
||||||
"LanguageTextMenuTr": "M\u00FC\u015Fteriler",
|
"MenuParentTr": "Proje",
|
||||||
"LanguageTextTitleEn": "Customers",
|
"PermissionGroupEn": "Project",
|
||||||
"LanguageTextTitleTr": "M\u00FC\u015Fteriler",
|
"PermissionGroupTr": "Proje",
|
||||||
"LanguageTextDescEn": "Customers linked to tasks",
|
"MenuEn": "Customers",
|
||||||
"LanguageTextDescTr": "G\u00F6revlerin ba\u011Fl\u0131 oldu\u011Fu m\u00FC\u015Fteriler",
|
"MenuTr": "M\u00FC\u015Fteriler",
|
||||||
"LanguageTextMenuParentEn": "Project",
|
"TitleEn": "Customers",
|
||||||
"LanguageTextMenuParentTr": "Proje"
|
"TitleTr": "M\u00FC\u015Fteriler",
|
||||||
|
"DescEn": "Customers linked to tasks",
|
||||||
|
"DescTr": "G\u00F6revlerin ba\u011Fl\u0131 oldu\u011Fu m\u00FC\u015Fteriler"
|
||||||
},
|
},
|
||||||
"Groups": [
|
"Groups": [
|
||||||
{
|
{
|
||||||
|
|
@ -33,32 +33,32 @@
|
||||||
{
|
{
|
||||||
"FieldName": "Id",
|
"FieldName": "Id",
|
||||||
"CaptionName": "App.Listform.ListformField.Id",
|
"CaptionName": "App.Listform.ListformField.Id",
|
||||||
"TurkishCaption": "Kimlik",
|
"En": "Id",
|
||||||
"EnglishCaption": "Id"
|
"Tr": "Kimlik"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "Name",
|
"FieldName": "Name",
|
||||||
"CaptionName": "App.Listform.ListformField.Name",
|
"CaptionName": "App.Listform.ListformField.Name",
|
||||||
"TurkishCaption": "M\u00FC\u015Fteri",
|
"En": "Customer",
|
||||||
"EnglishCaption": "Customer"
|
"Tr": "M\u00FC\u015Fteri"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "ContactName",
|
"FieldName": "ContactName",
|
||||||
"CaptionName": "App.Listform.ListformField.ContactName",
|
"CaptionName": "App.Listform.ListformField.ContactName",
|
||||||
"TurkishCaption": "\u0130lgili Ki\u015Fi",
|
"En": "Contact",
|
||||||
"EnglishCaption": "Contact"
|
"Tr": "\u0130lgili Ki\u015Fi"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "Email",
|
"FieldName": "Email",
|
||||||
"CaptionName": "App.Listform.ListformField.Email",
|
"CaptionName": "App.Listform.ListformField.Email",
|
||||||
"TurkishCaption": "E-posta",
|
"En": "Email",
|
||||||
"EnglishCaption": "Email"
|
"Tr": "E-posta"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "Phone",
|
"FieldName": "Phone",
|
||||||
"CaptionName": "App.Listform.ListformField.Phone",
|
"CaptionName": "App.Listform.ListformField.Phone",
|
||||||
"TurkishCaption": "Telefon",
|
"En": "Phone",
|
||||||
"EnglishCaption": "Phone"
|
"Tr": "Telefon"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -236,7 +236,7 @@
|
||||||
"StartExpr": null,
|
"StartExpr": null,
|
||||||
"EndExpr": null,
|
"EndExpr": null,
|
||||||
"ProgressExpr": null,
|
"ProgressExpr": null,
|
||||||
"AllowEditing": false,
|
"EditingEnabled": false,
|
||||||
"AllowTaskAdding": false,
|
"AllowTaskAdding": false,
|
||||||
"AllowTaskUpdating": false,
|
"AllowTaskUpdating": false,
|
||||||
"AllowTaskResourceUpdating": false,
|
"AllowTaskResourceUpdating": false,
|
||||||
|
|
|
||||||
|
|
@ -6,26 +6,26 @@
|
||||||
"SeededAt": "2026-09-01T09:04:00",
|
"SeededAt": "2026-09-01T09:04:00",
|
||||||
"CustomComponentName": "",
|
"CustomComponentName": "",
|
||||||
"PermissionGroupName": "App.Prj",
|
"PermissionGroupName": "App.Prj",
|
||||||
"PermissionGroupDisplayNameEn": "Project",
|
|
||||||
"PermissionGroupDisplayNameTr": "Proje",
|
|
||||||
"ModuleId": "Prj",
|
"ModuleId": "Prj",
|
||||||
"Menu": {
|
"Menu": {
|
||||||
|
"MenuParentCode": "App.Prj",
|
||||||
|
"MenuParentIcon": "FcTimeline",
|
||||||
"MenuCode": "App.Prj.Milestones",
|
"MenuCode": "App.Prj.Milestones",
|
||||||
"MenuOrder": 3,
|
"MenuOrder": 3,
|
||||||
"MenuUrl": "/admin/list/App.Prj.Milestones",
|
"MenuUrl": "/admin/list/App.Prj.Milestones",
|
||||||
"MenuIcon": "FcCalendar",
|
"MenuIcon": "FcCalendar"
|
||||||
"MenuParentCode": "App.Prj",
|
|
||||||
"MenuParentIcon": "FcTimeline"
|
|
||||||
},
|
},
|
||||||
"Language": {
|
"Language": {
|
||||||
"LanguageTextMenuEn": "Milestones",
|
"MenuParentEn": "Project",
|
||||||
"LanguageTextMenuTr": "D\u00F6n\u00FCm Noktalar\u0131",
|
"MenuParentTr": "Proje",
|
||||||
"LanguageTextTitleEn": "Milestones",
|
"PermissionGroupEn": "Project",
|
||||||
"LanguageTextTitleTr": "D\u00F6n\u00FCm Noktalar\u0131",
|
"PermissionGroupTr": "Proje",
|
||||||
"LanguageTextDescEn": "Project milestones",
|
"MenuEn": "Milestones",
|
||||||
"LanguageTextDescTr": "Proje d\u00F6n\u00FCm noktalar\u0131",
|
"MenuTr": "D\u00F6n\u00FCm Noktalar\u0131",
|
||||||
"LanguageTextMenuParentEn": "Project",
|
"TitleEn": "Milestones",
|
||||||
"LanguageTextMenuParentTr": "Proje"
|
"TitleTr": "D\u00F6n\u00FCm Noktalar\u0131",
|
||||||
|
"DescEn": "Project milestones",
|
||||||
|
"DescTr": "Proje d\u00F6n\u00FCm noktalar\u0131"
|
||||||
},
|
},
|
||||||
"Groups": [
|
"Groups": [
|
||||||
{
|
{
|
||||||
|
|
@ -33,26 +33,26 @@
|
||||||
{
|
{
|
||||||
"FieldName": "Id",
|
"FieldName": "Id",
|
||||||
"CaptionName": "App.Listform.ListformField.Id",
|
"CaptionName": "App.Listform.ListformField.Id",
|
||||||
"TurkishCaption": "Kimlik",
|
"En": "Id",
|
||||||
"EnglishCaption": "Id"
|
"Tr": "Kimlik"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "Name",
|
"FieldName": "Name",
|
||||||
"CaptionName": "App.Listform.ListformField.Name",
|
"CaptionName": "App.Listform.ListformField.Name",
|
||||||
"TurkishCaption": "D\u00F6n\u00FCm Noktas\u0131",
|
"En": "Milestone",
|
||||||
"EnglishCaption": "Milestone"
|
"Tr": "D\u00F6n\u00FCm Noktas\u0131"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "TargetDate",
|
"FieldName": "TargetDate",
|
||||||
"CaptionName": "App.Listform.ListformField.TargetDate",
|
"CaptionName": "App.Listform.ListformField.TargetDate",
|
||||||
"TurkishCaption": "Hedef Tarih",
|
"En": "Target Date",
|
||||||
"EnglishCaption": "Target Date"
|
"Tr": "Hedef Tarih"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "IsCompleted",
|
"FieldName": "IsCompleted",
|
||||||
"CaptionName": "App.Listform.ListformField.IsCompleted",
|
"CaptionName": "App.Listform.ListformField.IsCompleted",
|
||||||
"TurkishCaption": "Tamamland\u0131",
|
"En": "Completed",
|
||||||
"EnglishCaption": "Completed"
|
"Tr": "Tamamland\u0131"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -230,7 +230,7 @@
|
||||||
"StartExpr": null,
|
"StartExpr": null,
|
||||||
"EndExpr": null,
|
"EndExpr": null,
|
||||||
"ProgressExpr": null,
|
"ProgressExpr": null,
|
||||||
"AllowEditing": false,
|
"EditingEnabled": false,
|
||||||
"AllowTaskAdding": false,
|
"AllowTaskAdding": false,
|
||||||
"AllowTaskUpdating": false,
|
"AllowTaskUpdating": false,
|
||||||
"AllowTaskResourceUpdating": false,
|
"AllowTaskResourceUpdating": false,
|
||||||
|
|
|
||||||
|
|
@ -6,26 +6,26 @@
|
||||||
"SeededAt": "2026-09-01T09:03:00",
|
"SeededAt": "2026-09-01T09:03:00",
|
||||||
"CustomComponentName": "",
|
"CustomComponentName": "",
|
||||||
"PermissionGroupName": "App.Prj",
|
"PermissionGroupName": "App.Prj",
|
||||||
"PermissionGroupDisplayNameEn": "Project",
|
|
||||||
"PermissionGroupDisplayNameTr": "Proje",
|
|
||||||
"ModuleId": "Prj",
|
"ModuleId": "Prj",
|
||||||
"Menu": {
|
"Menu": {
|
||||||
|
"MenuParentCode": "App.Prj",
|
||||||
|
"MenuParentIcon": "FcTimeline",
|
||||||
"MenuCode": "App.Prj.Tags",
|
"MenuCode": "App.Prj.Tags",
|
||||||
"MenuOrder": 2,
|
"MenuOrder": 2,
|
||||||
"MenuUrl": "/admin/list/App.Prj.Tags",
|
"MenuUrl": "/admin/list/App.Prj.Tags",
|
||||||
"MenuIcon": "FcRules",
|
"MenuIcon": "FcRules"
|
||||||
"MenuParentCode": "App.Prj",
|
|
||||||
"MenuParentIcon": "FcTimeline"
|
|
||||||
},
|
},
|
||||||
"Language": {
|
"Language": {
|
||||||
"LanguageTextMenuEn": "Tags",
|
"MenuParentEn": "Project",
|
||||||
"LanguageTextMenuTr": "Etiketler",
|
"MenuParentTr": "Proje",
|
||||||
"LanguageTextTitleEn": "Tags",
|
"PermissionGroupEn": "Project",
|
||||||
"LanguageTextTitleTr": "Etiketler",
|
"PermissionGroupTr": "Proje",
|
||||||
"LanguageTextDescEn": "Task tags",
|
"MenuEn": "Tags",
|
||||||
"LanguageTextDescTr": "G\u00F6rev etiketleri",
|
"MenuTr": "Etiketler",
|
||||||
"LanguageTextMenuParentEn": "Project",
|
"TitleEn": "Tags",
|
||||||
"LanguageTextMenuParentTr": "Proje"
|
"TitleTr": "Etiketler",
|
||||||
|
"DescEn": "Task tags",
|
||||||
|
"DescTr": "G\u00F6rev etiketleri"
|
||||||
},
|
},
|
||||||
"Groups": [
|
"Groups": [
|
||||||
{
|
{
|
||||||
|
|
@ -33,20 +33,20 @@
|
||||||
{
|
{
|
||||||
"FieldName": "Id",
|
"FieldName": "Id",
|
||||||
"CaptionName": "App.Listform.ListformField.Id",
|
"CaptionName": "App.Listform.ListformField.Id",
|
||||||
"TurkishCaption": "Kimlik",
|
"En": "Id",
|
||||||
"EnglishCaption": "Id"
|
"Tr": "Kimlik"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "Name",
|
"FieldName": "Name",
|
||||||
"CaptionName": "App.Listform.ListformField.Name",
|
"CaptionName": "App.Listform.ListformField.Name",
|
||||||
"TurkishCaption": "Etiket Ad\u0131",
|
"En": "Tag Name",
|
||||||
"EnglishCaption": "Tag Name"
|
"Tr": "Etiket Ad\u0131"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "ColorCode",
|
"FieldName": "ColorCode",
|
||||||
"CaptionName": "App.Listform.ListformField.ColorCode",
|
"CaptionName": "App.Listform.ListformField.ColorCode",
|
||||||
"TurkishCaption": "Renk",
|
"En": "Color",
|
||||||
"EnglishCaption": "Color"
|
"Tr": "Renk"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -224,7 +224,7 @@
|
||||||
"StartExpr": null,
|
"StartExpr": null,
|
||||||
"EndExpr": null,
|
"EndExpr": null,
|
||||||
"ProgressExpr": null,
|
"ProgressExpr": null,
|
||||||
"AllowEditing": false,
|
"EditingEnabled": false,
|
||||||
"AllowTaskAdding": false,
|
"AllowTaskAdding": false,
|
||||||
"AllowTaskUpdating": false,
|
"AllowTaskUpdating": false,
|
||||||
"AllowTaskResourceUpdating": false,
|
"AllowTaskResourceUpdating": false,
|
||||||
|
|
|
||||||
|
|
@ -6,27 +6,27 @@
|
||||||
"SeededAt": "2026-09-01T09:02:00",
|
"SeededAt": "2026-09-01T09:02:00",
|
||||||
"CustomComponentName": "",
|
"CustomComponentName": "",
|
||||||
"PermissionGroupName": "App.Prj",
|
"PermissionGroupName": "App.Prj",
|
||||||
"PermissionGroupDisplayNameEn": "Project",
|
|
||||||
"PermissionGroupDisplayNameTr": "Proje",
|
|
||||||
"ModuleId": "Prj",
|
"ModuleId": "Prj",
|
||||||
"Menu": {
|
"Menu": {
|
||||||
|
"MenuParentCode": "App.Prj",
|
||||||
|
"MenuParentIcon": "FcTimeline",
|
||||||
"CreateMenu": false,
|
"CreateMenu": false,
|
||||||
"MenuCode": "App.Prj.TaskDependencies",
|
"MenuCode": "App.Prj.TaskDependencies",
|
||||||
"MenuOrder": 1,
|
"MenuOrder": 1,
|
||||||
"MenuUrl": "/admin/list/App.Prj.TaskDependencies",
|
"MenuUrl": "/admin/list/App.Prj.TaskDependencies",
|
||||||
"MenuIcon": "FcTodoList",
|
"MenuIcon": "FcTodoList"
|
||||||
"MenuParentCode": "App.Prj",
|
|
||||||
"MenuParentIcon": "FcTimeline"
|
|
||||||
},
|
},
|
||||||
"Language": {
|
"Language": {
|
||||||
"LanguageTextMenuEn": "Blocking Tasks",
|
"MenuParentEn": "Project",
|
||||||
"LanguageTextMenuTr": "Beklenen G\u00F6revler",
|
"MenuParentTr": "Proje",
|
||||||
"LanguageTextTitleEn": "Blocking Tasks",
|
"PermissionGroupEn": "Project",
|
||||||
"LanguageTextTitleTr": "Beklenen G\u00F6revler",
|
"PermissionGroupTr": "Proje",
|
||||||
"LanguageTextDescEn": "Tasks this task waits for",
|
"MenuEn": "Blocking Tasks",
|
||||||
"LanguageTextDescTr": "G\u00F6revin bekledi\u011Fi g\u00F6revler",
|
"MenuTr": "Beklenen G\u00F6revler",
|
||||||
"LanguageTextMenuParentEn": "Project",
|
"TitleEn": "Blocking Tasks",
|
||||||
"LanguageTextMenuParentTr": "Proje"
|
"TitleTr": "Beklenen G\u00F6revler",
|
||||||
|
"DescEn": "Tasks this task waits for",
|
||||||
|
"DescTr": "G\u00F6revin bekledi\u011Fi g\u00F6revler"
|
||||||
},
|
},
|
||||||
"Groups": [
|
"Groups": [
|
||||||
{
|
{
|
||||||
|
|
@ -34,26 +34,26 @@
|
||||||
{
|
{
|
||||||
"FieldName": "Id",
|
"FieldName": "Id",
|
||||||
"CaptionName": "App.Listform.ListformField.Id",
|
"CaptionName": "App.Listform.ListformField.Id",
|
||||||
"TurkishCaption": "Kimlik",
|
"En": "Id",
|
||||||
"EnglishCaption": "Id"
|
"Tr": "Kimlik"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "TaskId",
|
"FieldName": "TaskId",
|
||||||
"CaptionName": "App.Listform.ListformField.TaskId",
|
"CaptionName": "App.Listform.ListformField.TaskId",
|
||||||
"TurkishCaption": "G\u00F6rev",
|
"En": "Task",
|
||||||
"EnglishCaption": "Task"
|
"Tr": "G\u00F6rev"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "DependsOnTaskId",
|
"FieldName": "DependsOnTaskId",
|
||||||
"CaptionName": "App.Listform.ListformField.DependsOnTaskId",
|
"CaptionName": "App.Listform.ListformField.DependsOnTaskId",
|
||||||
"TurkishCaption": "Beklenen G\u00F6rev",
|
"En": "Blocking Task",
|
||||||
"EnglishCaption": "Blocking Task"
|
"Tr": "Beklenen G\u00F6rev"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "Note",
|
"FieldName": "Note",
|
||||||
"CaptionName": "App.Listform.ListformField.Note",
|
"CaptionName": "App.Listform.ListformField.Note",
|
||||||
"TurkishCaption": "Not",
|
"En": "Note",
|
||||||
"EnglishCaption": "Note"
|
"Tr": "Not"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -231,7 +231,7 @@
|
||||||
"StartExpr": null,
|
"StartExpr": null,
|
||||||
"EndExpr": null,
|
"EndExpr": null,
|
||||||
"ProgressExpr": null,
|
"ProgressExpr": null,
|
||||||
"AllowEditing": false,
|
"EditingEnabled": false,
|
||||||
"AllowTaskAdding": false,
|
"AllowTaskAdding": false,
|
||||||
"AllowTaskUpdating": false,
|
"AllowTaskUpdating": false,
|
||||||
"AllowTaskResourceUpdating": false,
|
"AllowTaskResourceUpdating": false,
|
||||||
|
|
|
||||||
|
|
@ -6,27 +6,27 @@
|
||||||
"SeededAt": "2026-09-01T09:01:00",
|
"SeededAt": "2026-09-01T09:01:00",
|
||||||
"CustomComponentName": "",
|
"CustomComponentName": "",
|
||||||
"PermissionGroupName": "App.Prj",
|
"PermissionGroupName": "App.Prj",
|
||||||
"PermissionGroupDisplayNameEn": "Project",
|
|
||||||
"PermissionGroupDisplayNameTr": "Proje",
|
|
||||||
"ModuleId": "Prj",
|
"ModuleId": "Prj",
|
||||||
"Menu": {
|
"Menu": {
|
||||||
|
"MenuParentCode": "App.Prj",
|
||||||
|
"MenuParentIcon": "FcTimeline",
|
||||||
"CreateMenu": false,
|
"CreateMenu": false,
|
||||||
"MenuCode": "App.Prj.TaskSubTasks",
|
"MenuCode": "App.Prj.TaskSubTasks",
|
||||||
"MenuOrder": 1,
|
"MenuOrder": 1,
|
||||||
"MenuUrl": "/admin/list/App.Prj.TaskSubTasks",
|
"MenuUrl": "/admin/list/App.Prj.TaskSubTasks",
|
||||||
"MenuIcon": "FcTodoList",
|
"MenuIcon": "FcTodoList"
|
||||||
"MenuParentCode": "App.Prj",
|
|
||||||
"MenuParentIcon": "FcTimeline"
|
|
||||||
},
|
},
|
||||||
"Language": {
|
"Language": {
|
||||||
"LanguageTextMenuEn": "Sub Tasks",
|
"MenuParentEn": "Project",
|
||||||
"LanguageTextMenuTr": "Alt G\u00F6revler",
|
"MenuParentTr": "Proje",
|
||||||
"LanguageTextTitleEn": "Sub Tasks",
|
"PermissionGroupEn": "Project",
|
||||||
"LanguageTextTitleTr": "Alt G\u00F6revler",
|
"PermissionGroupTr": "Proje",
|
||||||
"LanguageTextDescEn": "Sub task list",
|
"MenuEn": "Sub Tasks",
|
||||||
"LanguageTextDescTr": "Alt g\u00F6rev listesi",
|
"MenuTr": "Alt G\u00F6revler",
|
||||||
"LanguageTextMenuParentEn": "Project",
|
"TitleEn": "Sub Tasks",
|
||||||
"LanguageTextMenuParentTr": "Proje"
|
"TitleTr": "Alt G\u00F6revler",
|
||||||
|
"DescEn": "Sub task list",
|
||||||
|
"DescTr": "Alt g\u00F6rev listesi"
|
||||||
},
|
},
|
||||||
"Groups": [
|
"Groups": [
|
||||||
{
|
{
|
||||||
|
|
@ -34,50 +34,50 @@
|
||||||
{
|
{
|
||||||
"FieldName": "Id",
|
"FieldName": "Id",
|
||||||
"CaptionName": "App.Listform.ListformField.Id",
|
"CaptionName": "App.Listform.ListformField.Id",
|
||||||
"TurkishCaption": "Kimlik",
|
"En": "Id",
|
||||||
"EnglishCaption": "Id"
|
"Tr": "Kimlik"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "Name",
|
"FieldName": "Name",
|
||||||
"CaptionName": "App.Listform.ListformField.Name",
|
"CaptionName": "App.Listform.ListformField.Name",
|
||||||
"TurkishCaption": "G\u00F6rev Ad\u0131",
|
"En": "Task Name",
|
||||||
"EnglishCaption": "Task Name"
|
"Tr": "G\u00F6rev Ad\u0131"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "ParentTaskId",
|
"FieldName": "ParentTaskId",
|
||||||
"CaptionName": "App.Listform.ListformField.ParentTaskId",
|
"CaptionName": "App.Listform.ListformField.ParentTaskId",
|
||||||
"TurkishCaption": "\u00DCst G\u00F6rev",
|
"En": "Parent Task",
|
||||||
"EnglishCaption": "Parent Task"
|
"Tr": "\u00DCst G\u00F6rev"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "Status",
|
"FieldName": "Status",
|
||||||
"CaptionName": "App.Listform.ListformField.Status",
|
"CaptionName": "App.Listform.ListformField.Status",
|
||||||
"TurkishCaption": "Durum",
|
"En": "Status",
|
||||||
"EnglishCaption": "Status"
|
"Tr": "Durum"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "AssigneeIds",
|
"FieldName": "AssigneeIds",
|
||||||
"CaptionName": "App.Listform.ListformField.AssigneeIds",
|
"CaptionName": "App.Listform.ListformField.AssigneeIds",
|
||||||
"TurkishCaption": "Atananlar",
|
"En": "Assignees",
|
||||||
"EnglishCaption": "Assignees"
|
"Tr": "Atananlar"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "ProgressPercent",
|
"FieldName": "ProgressPercent",
|
||||||
"CaptionName": "App.Listform.ListformField.ProgressPercent",
|
"CaptionName": "App.Listform.ListformField.ProgressPercent",
|
||||||
"TurkishCaption": "\u0130lerleme (%)",
|
"En": "Progress (%)",
|
||||||
"EnglishCaption": "Progress (%)"
|
"Tr": "\u0130lerleme (%)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "PlannedStartDate",
|
"FieldName": "PlannedStartDate",
|
||||||
"CaptionName": "App.Listform.ListformField.PlannedStartDate",
|
"CaptionName": "App.Listform.ListformField.PlannedStartDate",
|
||||||
"TurkishCaption": "Planlanan Ba\u015Flang\u0131\u00E7",
|
"En": "Planned Start",
|
||||||
"EnglishCaption": "Planned Start"
|
"Tr": "Planlanan Ba\u015Flang\u0131\u00E7"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "PlannedEndDate",
|
"FieldName": "PlannedEndDate",
|
||||||
"CaptionName": "App.Listform.ListformField.PlannedEndDate",
|
"CaptionName": "App.Listform.ListformField.PlannedEndDate",
|
||||||
"TurkishCaption": "Planlanan Biti\u015F",
|
"En": "Planned End",
|
||||||
"EnglishCaption": "Planned End"
|
"Tr": "Planlanan Biti\u015F"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -255,7 +255,7 @@
|
||||||
"StartExpr": null,
|
"StartExpr": null,
|
||||||
"EndExpr": null,
|
"EndExpr": null,
|
||||||
"ProgressExpr": null,
|
"ProgressExpr": null,
|
||||||
"AllowEditing": false,
|
"EditingEnabled": false,
|
||||||
"AllowTaskAdding": false,
|
"AllowTaskAdding": false,
|
||||||
"AllowTaskUpdating": false,
|
"AllowTaskUpdating": false,
|
||||||
"AllowTaskResourceUpdating": false,
|
"AllowTaskResourceUpdating": false,
|
||||||
|
|
|
||||||
|
|
@ -6,27 +6,27 @@
|
||||||
"SeededAt": "2026-09-01T09:00:00",
|
"SeededAt": "2026-09-01T09:00:00",
|
||||||
"CustomComponentName": "",
|
"CustomComponentName": "",
|
||||||
"PermissionGroupName": "App.Prj",
|
"PermissionGroupName": "App.Prj",
|
||||||
"PermissionGroupDisplayNameEn": "Project",
|
|
||||||
"PermissionGroupDisplayNameTr": "Proje",
|
|
||||||
"ModuleId": "Prj",
|
"ModuleId": "Prj",
|
||||||
"Menu": {
|
"Menu": {
|
||||||
|
"MenuParentCode": "App.Prj",
|
||||||
|
"MenuParentIcon": "FcTimeline",
|
||||||
"CreateMenu": false,
|
"CreateMenu": false,
|
||||||
"MenuCode": "App.Prj.TaskTimesheets",
|
"MenuCode": "App.Prj.TaskTimesheets",
|
||||||
"MenuOrder": 1,
|
"MenuOrder": 1,
|
||||||
"MenuUrl": "/admin/list/App.Prj.TaskTimesheets",
|
"MenuUrl": "/admin/list/App.Prj.TaskTimesheets",
|
||||||
"MenuIcon": "FcTodoList",
|
"MenuIcon": "FcTodoList"
|
||||||
"MenuParentCode": "App.Prj",
|
|
||||||
"MenuParentIcon": "FcTimeline"
|
|
||||||
},
|
},
|
||||||
"Language": {
|
"Language": {
|
||||||
"LanguageTextMenuEn": "Timesheets",
|
"MenuParentEn": "Project",
|
||||||
"LanguageTextMenuTr": "\u00C7al\u0131\u015Fma \u00C7izelgeleri",
|
"MenuParentTr": "Proje",
|
||||||
"LanguageTextTitleEn": "Timesheets",
|
"PermissionGroupEn": "Project",
|
||||||
"LanguageTextTitleTr": "\u00C7al\u0131\u015Fma \u00C7izelgeleri",
|
"PermissionGroupTr": "Proje",
|
||||||
"LanguageTextDescEn": "Task timesheets",
|
"MenuEn": "Timesheets",
|
||||||
"LanguageTextDescTr": "G\u00F6rev \u00E7al\u0131\u015Fma \u00E7izelgeleri",
|
"MenuTr": "\u00C7al\u0131\u015Fma \u00C7izelgeleri",
|
||||||
"LanguageTextMenuParentEn": "Project",
|
"TitleEn": "Timesheets",
|
||||||
"LanguageTextMenuParentTr": "Proje"
|
"TitleTr": "\u00C7al\u0131\u015Fma \u00C7izelgeleri",
|
||||||
|
"DescEn": "Task timesheets",
|
||||||
|
"DescTr": "G\u00F6rev \u00E7al\u0131\u015Fma \u00E7izelgeleri"
|
||||||
},
|
},
|
||||||
"Groups": [
|
"Groups": [
|
||||||
{
|
{
|
||||||
|
|
@ -34,38 +34,38 @@
|
||||||
{
|
{
|
||||||
"FieldName": "Id",
|
"FieldName": "Id",
|
||||||
"CaptionName": "App.Listform.ListformField.Id",
|
"CaptionName": "App.Listform.ListformField.Id",
|
||||||
"TurkishCaption": "Kimlik",
|
"En": "Id",
|
||||||
"EnglishCaption": "Id"
|
"Tr": "Kimlik"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "TaskId",
|
"FieldName": "TaskId",
|
||||||
"CaptionName": "App.Listform.ListformField.TaskId",
|
"CaptionName": "App.Listform.ListformField.TaskId",
|
||||||
"TurkishCaption": "G\u00F6rev",
|
"En": "Task",
|
||||||
"EnglishCaption": "Task"
|
"Tr": "G\u00F6rev"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "WorkDate",
|
"FieldName": "WorkDate",
|
||||||
"CaptionName": "App.Listform.ListformField.WorkDate",
|
"CaptionName": "App.Listform.ListformField.WorkDate",
|
||||||
"TurkishCaption": "Tarih",
|
"En": "Date",
|
||||||
"EnglishCaption": "Date"
|
"Tr": "Tarih"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "UserId",
|
"FieldName": "UserId",
|
||||||
"CaptionName": "App.Listform.ListformField.UserId",
|
"CaptionName": "App.Listform.ListformField.UserId",
|
||||||
"TurkishCaption": "Kullan\u0131c\u0131",
|
"En": "User",
|
||||||
"EnglishCaption": "User"
|
"Tr": "Kullan\u0131c\u0131"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "Hours",
|
"FieldName": "Hours",
|
||||||
"CaptionName": "App.Listform.ListformField.Hours",
|
"CaptionName": "App.Listform.ListformField.Hours",
|
||||||
"TurkishCaption": "S\u00FCre (saat)",
|
"En": "Hours",
|
||||||
"EnglishCaption": "Hours"
|
"Tr": "S\u00FCre (saat)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "Description",
|
"FieldName": "Description",
|
||||||
"CaptionName": "App.Listform.ListformField.Description",
|
"CaptionName": "App.Listform.ListformField.Description",
|
||||||
"TurkishCaption": "A\u00E7\u0131klama",
|
"En": "Description",
|
||||||
"EnglishCaption": "Description"
|
"Tr": "A\u00E7\u0131klama"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -243,7 +243,7 @@
|
||||||
"StartExpr": null,
|
"StartExpr": null,
|
||||||
"EndExpr": null,
|
"EndExpr": null,
|
||||||
"ProgressExpr": null,
|
"ProgressExpr": null,
|
||||||
"AllowEditing": false,
|
"EditingEnabled": false,
|
||||||
"AllowTaskAdding": false,
|
"AllowTaskAdding": false,
|
||||||
"AllowTaskUpdating": false,
|
"AllowTaskUpdating": false,
|
||||||
"AllowTaskResourceUpdating": false,
|
"AllowTaskResourceUpdating": false,
|
||||||
|
|
|
||||||
|
|
@ -6,26 +6,26 @@
|
||||||
"SeededAt": "2026-09-01T09:06:00",
|
"SeededAt": "2026-09-01T09:06:00",
|
||||||
"CustomComponentName": "",
|
"CustomComponentName": "",
|
||||||
"PermissionGroupName": "App.Prj",
|
"PermissionGroupName": "App.Prj",
|
||||||
"PermissionGroupDisplayNameEn": "Project",
|
|
||||||
"PermissionGroupDisplayNameTr": "Proje",
|
|
||||||
"ModuleId": "Prj",
|
"ModuleId": "Prj",
|
||||||
"Menu": {
|
"Menu": {
|
||||||
|
"MenuParentCode": "App.Prj",
|
||||||
|
"MenuParentIcon": "FcTimeline",
|
||||||
"MenuCode": "App.Prj.Tasks",
|
"MenuCode": "App.Prj.Tasks",
|
||||||
"MenuOrder": 1,
|
"MenuOrder": 1,
|
||||||
"MenuUrl": "/admin/list/App.Prj.Tasks",
|
"MenuUrl": "/admin/list/App.Prj.Tasks",
|
||||||
"MenuIcon": "FcTodoList",
|
"MenuIcon": "FcTodoList"
|
||||||
"MenuParentCode": "App.Prj",
|
|
||||||
"MenuParentIcon": "FcTimeline"
|
|
||||||
},
|
},
|
||||||
"Language": {
|
"Language": {
|
||||||
"LanguageTextMenuEn": "Tasks",
|
"MenuParentEn": "Project",
|
||||||
"LanguageTextMenuTr": "G\u00F6revler",
|
"MenuParentTr": "Proje",
|
||||||
"LanguageTextTitleEn": "Tasks",
|
"PermissionGroupEn": "Project",
|
||||||
"LanguageTextTitleTr": "G\u00F6revler",
|
"PermissionGroupTr": "Proje",
|
||||||
"LanguageTextDescEn": "Task card and tracking",
|
"MenuEn": "Tasks",
|
||||||
"LanguageTextDescTr": "G\u00F6rev kart\u0131 ve takibi",
|
"MenuTr": "G\u00F6revler",
|
||||||
"LanguageTextMenuParentEn": "Project",
|
"TitleEn": "Tasks",
|
||||||
"LanguageTextMenuParentTr": "Proje"
|
"TitleTr": "G\u00F6revler",
|
||||||
|
"DescEn": "Task card and tracking",
|
||||||
|
"DescTr": "G\u00F6rev kart\u0131 ve takibi"
|
||||||
},
|
},
|
||||||
"Groups": [
|
"Groups": [
|
||||||
{
|
{
|
||||||
|
|
@ -33,92 +33,92 @@
|
||||||
{
|
{
|
||||||
"FieldName": "Id",
|
"FieldName": "Id",
|
||||||
"CaptionName": "App.Listform.ListformField.Id",
|
"CaptionName": "App.Listform.ListformField.Id",
|
||||||
"TurkishCaption": "Kimlik",
|
"En": "Id",
|
||||||
"EnglishCaption": "Id"
|
"Tr": "Kimlik"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "Name",
|
"FieldName": "Name",
|
||||||
"CaptionName": "App.Listform.ListformField.Name",
|
"CaptionName": "App.Listform.ListformField.Name",
|
||||||
"TurkishCaption": "G\u00F6rev Ad\u0131",
|
"En": "Task Name",
|
||||||
"EnglishCaption": "Task Name"
|
"Tr": "G\u00F6rev Ad\u0131"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "MilestoneId",
|
"FieldName": "MilestoneId",
|
||||||
"CaptionName": "App.Listform.ListformField.MilestoneId",
|
"CaptionName": "App.Listform.ListformField.MilestoneId",
|
||||||
"TurkishCaption": "D\u00F6n\u00FCm Noktas\u0131",
|
"En": "Milestone",
|
||||||
"EnglishCaption": "Milestone"
|
"Tr": "D\u00F6n\u00FCm Noktas\u0131"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "Status",
|
"FieldName": "Status",
|
||||||
"CaptionName": "App.Listform.ListformField.Status",
|
"CaptionName": "App.Listform.ListformField.Status",
|
||||||
"TurkishCaption": "Durum",
|
"En": "Status",
|
||||||
"EnglishCaption": "Status"
|
"Tr": "Durum"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "AssigneeIds",
|
"FieldName": "AssigneeIds",
|
||||||
"CaptionName": "App.Listform.ListformField.AssigneeIds",
|
"CaptionName": "App.Listform.ListformField.AssigneeIds",
|
||||||
"TurkishCaption": "Atananlar",
|
"En": "Assignees",
|
||||||
"EnglishCaption": "Assignees"
|
"Tr": "Atananlar"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "TagIds",
|
"FieldName": "TagIds",
|
||||||
"CaptionName": "App.Listform.ListformField.TagIds",
|
"CaptionName": "App.Listform.ListformField.TagIds",
|
||||||
"TurkishCaption": "Etiketler",
|
"En": "Tags",
|
||||||
"EnglishCaption": "Tags"
|
"Tr": "Etiketler"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "CustomerId",
|
"FieldName": "CustomerId",
|
||||||
"CaptionName": "App.Listform.ListformField.CustomerId",
|
"CaptionName": "App.Listform.ListformField.CustomerId",
|
||||||
"TurkishCaption": "M\u00FC\u015Fteri",
|
"En": "Customer",
|
||||||
"EnglishCaption": "Customer"
|
"Tr": "M\u00FC\u015Fteri"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "CustomerContact",
|
"FieldName": "CustomerContact",
|
||||||
"CaptionName": "App.Listform.ListformField.CustomerContact",
|
"CaptionName": "App.Listform.ListformField.CustomerContact",
|
||||||
"TurkishCaption": "\u0130lgili Ki\u015Fi",
|
"En": "Contact",
|
||||||
"EnglishCaption": "Contact"
|
"Tr": "\u0130lgili Ki\u015Fi"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "PlannedHours",
|
"FieldName": "PlannedHours",
|
||||||
"CaptionName": "App.Listform.ListformField.PlannedHours",
|
"CaptionName": "App.Listform.ListformField.PlannedHours",
|
||||||
"TurkishCaption": "\u0130lk Planlanan Saatler",
|
"En": "Planned Hours",
|
||||||
"EnglishCaption": "Planned Hours"
|
"Tr": "\u0130lk Planlanan Saatler"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "ProgressPercent",
|
"FieldName": "ProgressPercent",
|
||||||
"CaptionName": "App.Listform.ListformField.ProgressPercent",
|
"CaptionName": "App.Listform.ListformField.ProgressPercent",
|
||||||
"TurkishCaption": "\u0130lerleme (%)",
|
"En": "Progress (%)",
|
||||||
"EnglishCaption": "Progress (%)"
|
"Tr": "\u0130lerleme (%)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "SalesOrderLine",
|
"FieldName": "SalesOrderLine",
|
||||||
"CaptionName": "App.Listform.ListformField.SalesOrderLine",
|
"CaptionName": "App.Listform.ListformField.SalesOrderLine",
|
||||||
"TurkishCaption": "Sat\u0131\u015F Sipari\u015F Sat\u0131r\u0131",
|
"En": "Sales Order Line",
|
||||||
"EnglishCaption": "Sales Order Line"
|
"Tr": "Sat\u0131\u015F Sipari\u015F Sat\u0131r\u0131"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "PlannedStartDate",
|
"FieldName": "PlannedStartDate",
|
||||||
"CaptionName": "App.Listform.ListformField.PlannedStartDate",
|
"CaptionName": "App.Listform.ListformField.PlannedStartDate",
|
||||||
"TurkishCaption": "Planlanan Tarih",
|
"En": "Planned Date",
|
||||||
"EnglishCaption": "Planned Date"
|
"Tr": "Planlanan Tarih"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "PlannedEndDate",
|
"FieldName": "PlannedEndDate",
|
||||||
"CaptionName": "App.Listform.ListformField.PlannedEndDate",
|
"CaptionName": "App.Listform.ListformField.PlannedEndDate",
|
||||||
"TurkishCaption": "Planlanan Biti\u015F",
|
"En": "Planned End",
|
||||||
"EnglishCaption": "Planned End"
|
"Tr": "Planlanan Biti\u015F"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "ParentTaskId",
|
"FieldName": "ParentTaskId",
|
||||||
"CaptionName": "App.Listform.ListformField.ParentTaskId",
|
"CaptionName": "App.Listform.ListformField.ParentTaskId",
|
||||||
"TurkishCaption": "\u00DCst G\u00F6rev",
|
"En": "Parent Task",
|
||||||
"EnglishCaption": "Parent Task"
|
"Tr": "\u00DCst G\u00F6rev"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "IsFavorite",
|
"FieldName": "IsFavorite",
|
||||||
"CaptionName": "App.Listform.ListformField.IsFavorite",
|
"CaptionName": "App.Listform.ListformField.IsFavorite",
|
||||||
"TurkishCaption": "Favori",
|
"En": "Favorite",
|
||||||
"EnglishCaption": "Favorite"
|
"Tr": "Favori"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
@ -127,8 +127,8 @@
|
||||||
{
|
{
|
||||||
"FieldName": "Description",
|
"FieldName": "Description",
|
||||||
"CaptionName": "App.Listform.ListformField.Description",
|
"CaptionName": "App.Listform.ListformField.Description",
|
||||||
"TurkishCaption": "A\u00E7\u0131klama",
|
"En": "Description",
|
||||||
"EnglishCaption": "Description"
|
"Tr": "A\u00E7\u0131klama"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -306,16 +306,16 @@
|
||||||
"StartExpr": "PlannedStartDate",
|
"StartExpr": "PlannedStartDate",
|
||||||
"EndExpr": "PlannedEndDate",
|
"EndExpr": "PlannedEndDate",
|
||||||
"ProgressExpr": "ProgressPercent",
|
"ProgressExpr": "ProgressPercent",
|
||||||
"AllowEditing": false,
|
"EditingEnabled": true,
|
||||||
"AllowTaskAdding": false,
|
"AllowTaskAdding": true,
|
||||||
"AllowTaskUpdating": false,
|
"AllowTaskUpdating": true,
|
||||||
"AllowTaskResourceUpdating": false,
|
"AllowTaskResourceUpdating": true,
|
||||||
"AllowTaskDeleting": false,
|
"AllowTaskDeleting": true,
|
||||||
"AllowDependencyAdding": false,
|
"AllowDependencyAdding": true,
|
||||||
"AllowDependencyDeleting": false,
|
"AllowDependencyDeleting": true,
|
||||||
"AllowResourceAdding": false,
|
"AllowResourceAdding": true,
|
||||||
"AllowResourceUpdating": false,
|
"AllowResourceUpdating": true,
|
||||||
"AllowResourceDeleting": false
|
"AllowResourceDeleting": true
|
||||||
},
|
},
|
||||||
"SchedulerOptionDto": {
|
"SchedulerOptionDto": {
|
||||||
"TextExpr": null,
|
"TextExpr": null,
|
||||||
|
|
@ -870,7 +870,7 @@
|
||||||
"GroupInterval": "",
|
"GroupInterval": "",
|
||||||
"WordWrapEnabled": false
|
"WordWrapEnabled": false
|
||||||
},
|
},
|
||||||
"Alignment": null,
|
"Alignment": "left",
|
||||||
"Format": null,
|
"Format": null,
|
||||||
"EditOrderNo": null,
|
"EditOrderNo": null,
|
||||||
"EditGroupOrderNo": null,
|
"EditGroupOrderNo": null,
|
||||||
|
|
@ -1008,7 +1008,7 @@
|
||||||
"GroupInterval": "",
|
"GroupInterval": "",
|
||||||
"WordWrapEnabled": false
|
"WordWrapEnabled": false
|
||||||
},
|
},
|
||||||
"Alignment": null,
|
"Alignment": "left",
|
||||||
"Format": null,
|
"Format": null,
|
||||||
"EditOrderNo": 1,
|
"EditOrderNo": 1,
|
||||||
"EditGroupOrderNo": 1,
|
"EditGroupOrderNo": 1,
|
||||||
|
|
@ -1134,7 +1134,7 @@
|
||||||
"GroupInterval": "",
|
"GroupInterval": "",
|
||||||
"WordWrapEnabled": false
|
"WordWrapEnabled": false
|
||||||
},
|
},
|
||||||
"Alignment": null,
|
"Alignment": "left",
|
||||||
"Format": null,
|
"Format": null,
|
||||||
"EditOrderNo": 2,
|
"EditOrderNo": 2,
|
||||||
"EditGroupOrderNo": 1,
|
"EditGroupOrderNo": 1,
|
||||||
|
|
@ -1272,7 +1272,7 @@
|
||||||
"GroupInterval": "",
|
"GroupInterval": "",
|
||||||
"WordWrapEnabled": false
|
"WordWrapEnabled": false
|
||||||
},
|
},
|
||||||
"Alignment": null,
|
"Alignment": "left",
|
||||||
"Format": null,
|
"Format": null,
|
||||||
"EditOrderNo": 3,
|
"EditOrderNo": 3,
|
||||||
"EditGroupOrderNo": 1,
|
"EditGroupOrderNo": 1,
|
||||||
|
|
@ -1398,7 +1398,7 @@
|
||||||
"GroupInterval": "",
|
"GroupInterval": "",
|
||||||
"WordWrapEnabled": false
|
"WordWrapEnabled": false
|
||||||
},
|
},
|
||||||
"Alignment": null,
|
"Alignment": "left",
|
||||||
"Format": null,
|
"Format": null,
|
||||||
"EditOrderNo": 4,
|
"EditOrderNo": 4,
|
||||||
"EditGroupOrderNo": 1,
|
"EditGroupOrderNo": 1,
|
||||||
|
|
@ -1532,7 +1532,7 @@
|
||||||
"GroupInterval": "",
|
"GroupInterval": "",
|
||||||
"WordWrapEnabled": false
|
"WordWrapEnabled": false
|
||||||
},
|
},
|
||||||
"Alignment": null,
|
"Alignment": "left",
|
||||||
"Format": null,
|
"Format": null,
|
||||||
"EditOrderNo": 5,
|
"EditOrderNo": 5,
|
||||||
"EditGroupOrderNo": 1,
|
"EditGroupOrderNo": 1,
|
||||||
|
|
@ -1666,7 +1666,7 @@
|
||||||
"GroupInterval": "",
|
"GroupInterval": "",
|
||||||
"WordWrapEnabled": false
|
"WordWrapEnabled": false
|
||||||
},
|
},
|
||||||
"Alignment": null,
|
"Alignment": "left",
|
||||||
"Format": null,
|
"Format": null,
|
||||||
"EditOrderNo": 6,
|
"EditOrderNo": 6,
|
||||||
"EditGroupOrderNo": 1,
|
"EditGroupOrderNo": 1,
|
||||||
|
|
@ -1792,7 +1792,7 @@
|
||||||
"GroupInterval": "",
|
"GroupInterval": "",
|
||||||
"WordWrapEnabled": false
|
"WordWrapEnabled": false
|
||||||
},
|
},
|
||||||
"Alignment": null,
|
"Alignment": "left",
|
||||||
"Format": null,
|
"Format": null,
|
||||||
"EditOrderNo": 7,
|
"EditOrderNo": 7,
|
||||||
"EditGroupOrderNo": 1,
|
"EditGroupOrderNo": 1,
|
||||||
|
|
@ -1918,7 +1918,7 @@
|
||||||
"GroupInterval": "",
|
"GroupInterval": "",
|
||||||
"WordWrapEnabled": false
|
"WordWrapEnabled": false
|
||||||
},
|
},
|
||||||
"Alignment": null,
|
"Alignment": "left",
|
||||||
"Format": null,
|
"Format": null,
|
||||||
"EditOrderNo": 8,
|
"EditOrderNo": 8,
|
||||||
"EditGroupOrderNo": 1,
|
"EditGroupOrderNo": 1,
|
||||||
|
|
@ -2044,7 +2044,7 @@
|
||||||
"GroupInterval": "",
|
"GroupInterval": "",
|
||||||
"WordWrapEnabled": false
|
"WordWrapEnabled": false
|
||||||
},
|
},
|
||||||
"Alignment": null,
|
"Alignment": "left",
|
||||||
"Format": null,
|
"Format": null,
|
||||||
"EditOrderNo": 9,
|
"EditOrderNo": 9,
|
||||||
"EditGroupOrderNo": 1,
|
"EditGroupOrderNo": 1,
|
||||||
|
|
@ -2170,7 +2170,7 @@
|
||||||
"GroupInterval": "",
|
"GroupInterval": "",
|
||||||
"WordWrapEnabled": false
|
"WordWrapEnabled": false
|
||||||
},
|
},
|
||||||
"Alignment": null,
|
"Alignment": "left",
|
||||||
"Format": null,
|
"Format": null,
|
||||||
"EditOrderNo": 10,
|
"EditOrderNo": 10,
|
||||||
"EditGroupOrderNo": 1,
|
"EditGroupOrderNo": 1,
|
||||||
|
|
@ -2296,7 +2296,7 @@
|
||||||
"GroupInterval": "",
|
"GroupInterval": "",
|
||||||
"WordWrapEnabled": false
|
"WordWrapEnabled": false
|
||||||
},
|
},
|
||||||
"Alignment": null,
|
"Alignment": "left",
|
||||||
"Format": null,
|
"Format": null,
|
||||||
"EditOrderNo": 11,
|
"EditOrderNo": 11,
|
||||||
"EditGroupOrderNo": 1,
|
"EditGroupOrderNo": 1,
|
||||||
|
|
@ -2422,7 +2422,7 @@
|
||||||
"GroupInterval": "",
|
"GroupInterval": "",
|
||||||
"WordWrapEnabled": false
|
"WordWrapEnabled": false
|
||||||
},
|
},
|
||||||
"Alignment": null,
|
"Alignment": "left",
|
||||||
"Format": null,
|
"Format": null,
|
||||||
"EditOrderNo": 12,
|
"EditOrderNo": 12,
|
||||||
"EditGroupOrderNo": 1,
|
"EditGroupOrderNo": 1,
|
||||||
|
|
@ -2548,7 +2548,7 @@
|
||||||
"GroupInterval": "",
|
"GroupInterval": "",
|
||||||
"WordWrapEnabled": false
|
"WordWrapEnabled": false
|
||||||
},
|
},
|
||||||
"Alignment": null,
|
"Alignment": "left",
|
||||||
"Format": null,
|
"Format": null,
|
||||||
"EditOrderNo": 13,
|
"EditOrderNo": 13,
|
||||||
"EditGroupOrderNo": 1,
|
"EditGroupOrderNo": 1,
|
||||||
|
|
@ -2674,7 +2674,7 @@
|
||||||
"GroupInterval": "",
|
"GroupInterval": "",
|
||||||
"WordWrapEnabled": false
|
"WordWrapEnabled": false
|
||||||
},
|
},
|
||||||
"Alignment": null,
|
"Alignment": "left",
|
||||||
"Format": null,
|
"Format": null,
|
||||||
"EditOrderNo": 14,
|
"EditOrderNo": 14,
|
||||||
"EditGroupOrderNo": 1,
|
"EditGroupOrderNo": 1,
|
||||||
|
|
@ -2800,7 +2800,7 @@
|
||||||
"GroupInterval": "",
|
"GroupInterval": "",
|
||||||
"WordWrapEnabled": false
|
"WordWrapEnabled": false
|
||||||
},
|
},
|
||||||
"Alignment": null,
|
"Alignment": "left",
|
||||||
"Format": null,
|
"Format": null,
|
||||||
"EditOrderNo": 1,
|
"EditOrderNo": 1,
|
||||||
"EditGroupOrderNo": 2,
|
"EditGroupOrderNo": 2,
|
||||||
|
|
|
||||||
|
|
@ -82,19 +82,19 @@ export interface ListFormWizardDto {
|
||||||
scheduler: boolean
|
scheduler: boolean
|
||||||
todo: boolean
|
todo: boolean
|
||||||
|
|
||||||
languageTextMenuEn: string
|
menuEn: string
|
||||||
languageTextMenuTr: string
|
menuTr: string
|
||||||
languageTextTitleEn: string
|
titleEn: string
|
||||||
languageTextTitleTr: string
|
titleTr: string
|
||||||
languageTextDescEn: string
|
descEn: string
|
||||||
languageTextDescTr: string
|
descTr: string
|
||||||
languageTextMenuParentEn: string
|
menuParentEn: string
|
||||||
languageTextMenuParentTr: string
|
menuParentTr: string
|
||||||
permissionGroupName: string
|
permissionGroupName: string
|
||||||
/** Izin grubunun Ingilizce gorunen adi; grup adiyla ayni olan dil anahtarina yazilir. */
|
/** Izin grubunun Ingilizce gorunen adi; grup adiyla ayni olan dil anahtarina yazilir. */
|
||||||
permissionGroupDisplayNameEn: string
|
permissionGroupEn: string
|
||||||
/** Izin grubunun Turkce gorunen adi. */
|
/** Izin grubunun Turkce gorunen adi. */
|
||||||
permissionGroupDisplayNameTr: string
|
permissionGroupTr: string
|
||||||
menuParentCode: string
|
menuParentCode: string
|
||||||
menuParentModuleId?: string
|
menuParentModuleId?: string
|
||||||
menuParentIcon?: string
|
menuParentIcon?: string
|
||||||
|
|
|
||||||
|
|
@ -417,7 +417,7 @@ export interface GanttOptionDto {
|
||||||
endExpr?: string
|
endExpr?: string
|
||||||
progressExpr?: string
|
progressExpr?: string
|
||||||
scaleType: GanttScaleType
|
scaleType: GanttScaleType
|
||||||
allowEditing?: boolean
|
editingEnabled?: boolean
|
||||||
allowTaskAdding?: boolean
|
allowTaskAdding?: boolean
|
||||||
allowTaskUpdating?: boolean
|
allowTaskUpdating?: boolean
|
||||||
allowTaskResourceUpdating?: boolean
|
allowTaskResourceUpdating?: boolean
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,18 @@ import { gantScaleOptions } from './options'
|
||||||
|
|
||||||
const validationSchema = Yup.object().shape({})
|
const validationSchema = Yup.object().shape({})
|
||||||
|
|
||||||
|
const ganttEditPermissionFields = [
|
||||||
|
'allowTaskAdding',
|
||||||
|
'allowTaskUpdating',
|
||||||
|
'allowTaskDeleting',
|
||||||
|
'allowTaskResourceUpdating',
|
||||||
|
'allowDependencyAdding',
|
||||||
|
'allowDependencyDeleting',
|
||||||
|
'allowResourceAdding',
|
||||||
|
'allowResourceUpdating',
|
||||||
|
'allowResourceDeleting',
|
||||||
|
] as const
|
||||||
|
|
||||||
function FormTabGantt(props: FormEditProps) {
|
function FormTabGantt(props: FormEditProps) {
|
||||||
const { listFormCode } = useParams()
|
const { listFormCode } = useParams()
|
||||||
const { translate } = useLocalization()
|
const { translate } = useLocalization()
|
||||||
|
|
@ -345,82 +357,35 @@ function FormTabGantt(props: FormEditProps) {
|
||||||
className="mt-4"
|
className="mt-4"
|
||||||
header={translate('::App.ListFormSchedulerOptions.InteractionSettings')}
|
header={translate('::App.ListFormSchedulerOptions.InteractionSettings')}
|
||||||
>
|
>
|
||||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-3">
|
|
||||||
<div>
|
<div>
|
||||||
<FormItem
|
<FormItem
|
||||||
label={translate('::App.ListFormEdit.AllowEditing')}
|
label={translate('::App.ListFormEdit.EditingEnabled')}
|
||||||
invalid={
|
invalid={
|
||||||
errors.ganttOptionDto?.allowEditing && touched.ganttOptionDto?.allowEditing
|
errors.ganttOptionDto?.editingEnabled &&
|
||||||
|
touched.ganttOptionDto?.editingEnabled
|
||||||
}
|
}
|
||||||
errorMessage={errors.ganttOptionDto?.allowEditing}
|
errorMessage={errors.ganttOptionDto?.editingEnabled}
|
||||||
>
|
>
|
||||||
<Field
|
<Field name="ganttOptionDto.editingEnabled">
|
||||||
name="ganttOptionDto.allowEditing"
|
{({ field, form }: FieldProps) => (
|
||||||
placeholder={translate('::App.ListFormEdit.AllowEditing')}
|
<Checkbox
|
||||||
component={Checkbox}
|
checked={field.value === true}
|
||||||
/>
|
onChange={(checked) => {
|
||||||
</FormItem>
|
form.setFieldValue(field.name, checked)
|
||||||
|
// Düzenleme kapatıldığında alt izinler açık kalırsa
|
||||||
<FormItem
|
// ekranda etkisiz ama kayıtta true görünür.
|
||||||
label={translate('::App.ListFormEdit.AllowTaskUpdating')}
|
if (!checked) {
|
||||||
invalid={
|
ganttEditPermissionFields.forEach((name) =>
|
||||||
errors.ganttOptionDto?.allowTaskUpdating &&
|
form.setFieldValue(`ganttOptionDto.${name}`, false),
|
||||||
touched.ganttOptionDto?.allowTaskUpdating
|
)
|
||||||
}
|
}
|
||||||
errorMessage={errors.ganttOptionDto?.allowTaskUpdating}
|
}}
|
||||||
>
|
|
||||||
<Field
|
|
||||||
name="ganttOptionDto.allowTaskUpdating"
|
|
||||||
placeholder={translate('::App.ListFormEdit.AllowTaskUpdating')}
|
|
||||||
component={Checkbox}
|
|
||||||
/>
|
|
||||||
</FormItem>
|
|
||||||
|
|
||||||
<FormItem
|
|
||||||
label={translate('::App.ListFormEdit.AllowDependencyAdding')}
|
|
||||||
invalid={
|
|
||||||
errors.ganttOptionDto?.allowDependencyAdding &&
|
|
||||||
touched.ganttOptionDto?.allowDependencyAdding
|
|
||||||
}
|
|
||||||
errorMessage={errors.ganttOptionDto?.allowDependencyAdding}
|
|
||||||
>
|
|
||||||
<Field
|
|
||||||
name="ganttOptionDto.allowDependencyAdding"
|
|
||||||
placeholder={translate('::App.ListFormEdit.AllowDependencyAdding')}
|
|
||||||
component={Checkbox}
|
|
||||||
/>
|
|
||||||
</FormItem>
|
|
||||||
|
|
||||||
<FormItem
|
|
||||||
label={translate('::App.ListFormEdit.AllowResourceAdding')}
|
|
||||||
invalid={
|
|
||||||
errors.ganttOptionDto?.allowResourceAdding &&
|
|
||||||
touched.ganttOptionDto?.allowResourceAdding
|
|
||||||
}
|
|
||||||
errorMessage={errors.ganttOptionDto?.allowResourceAdding}
|
|
||||||
>
|
|
||||||
<Field
|
|
||||||
name="ganttOptionDto.allowResourceAdding"
|
|
||||||
placeholder={translate('::App.ListFormEdit.AllowResourceAdding')}
|
|
||||||
component={Checkbox}
|
|
||||||
/>
|
|
||||||
</FormItem>
|
|
||||||
|
|
||||||
<FormItem
|
|
||||||
label={translate('::App.ListFormEdit.AllowResourceDeleting')}
|
|
||||||
invalid={
|
|
||||||
errors.ganttOptionDto?.allowResourceDeleting &&
|
|
||||||
touched.ganttOptionDto?.allowResourceDeleting
|
|
||||||
}
|
|
||||||
errorMessage={errors.ganttOptionDto?.allowResourceDeleting}
|
|
||||||
>
|
|
||||||
<Field
|
|
||||||
name="ganttOptionDto.allowResourceDeleting"
|
|
||||||
placeholder={translate('::App.ListFormEdit.AllowResourceDeleting')}
|
|
||||||
component={Checkbox}
|
|
||||||
/>
|
/>
|
||||||
|
)}
|
||||||
|
</Field>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
</div>
|
</div>
|
||||||
|
<div className="grid grid-cols-1 md:grid-cols-3 gap-3 border-t border-gray-200 pt-1">
|
||||||
<div>
|
<div>
|
||||||
<FormItem
|
<FormItem
|
||||||
label={translate('::App.ListFormEdit.AllowTaskAdding')}
|
label={translate('::App.ListFormEdit.AllowTaskAdding')}
|
||||||
|
|
@ -434,9 +399,28 @@ function FormTabGantt(props: FormEditProps) {
|
||||||
name="ganttOptionDto.allowTaskAdding"
|
name="ganttOptionDto.allowTaskAdding"
|
||||||
placeholder={translate('::App.ListFormEdit.AllowTaskAdding')}
|
placeholder={translate('::App.ListFormEdit.AllowTaskAdding')}
|
||||||
component={Checkbox}
|
component={Checkbox}
|
||||||
|
disabled={!values.ganttOptionDto.editingEnabled}
|
||||||
/>
|
/>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<FormItem
|
||||||
|
label={translate('::App.ListFormEdit.AllowTaskUpdating')}
|
||||||
|
invalid={
|
||||||
|
errors.ganttOptionDto?.allowTaskUpdating &&
|
||||||
|
touched.ganttOptionDto?.allowTaskUpdating
|
||||||
|
}
|
||||||
|
errorMessage={errors.ganttOptionDto?.allowTaskUpdating}
|
||||||
|
>
|
||||||
|
<Field
|
||||||
|
name="ganttOptionDto.allowTaskUpdating"
|
||||||
|
placeholder={translate('::App.ListFormEdit.AllowTaskUpdating')}
|
||||||
|
component={Checkbox}
|
||||||
|
disabled={!values.ganttOptionDto.editingEnabled}
|
||||||
|
/>
|
||||||
|
</FormItem>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
<FormItem
|
<FormItem
|
||||||
label={translate('::App.ListFormEdit.AllowTaskDeleting')}
|
label={translate('::App.ListFormEdit.AllowTaskDeleting')}
|
||||||
invalid={
|
invalid={
|
||||||
|
|
@ -449,24 +433,49 @@ function FormTabGantt(props: FormEditProps) {
|
||||||
name="ganttOptionDto.allowTaskDeleting"
|
name="ganttOptionDto.allowTaskDeleting"
|
||||||
placeholder={translate('::App.ListFormEdit.AllowTaskDeleting')}
|
placeholder={translate('::App.ListFormEdit.AllowTaskDeleting')}
|
||||||
component={Checkbox}
|
component={Checkbox}
|
||||||
|
disabled={!values.ganttOptionDto.editingEnabled}
|
||||||
/>
|
/>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
<FormItem
|
<FormItem
|
||||||
label={translate('::App.ListFormEdit.AllowDependencyDeleting')}
|
label={translate('::App.ListFormEdit.AllowTaskResourceUpdating')}
|
||||||
invalid={
|
invalid={
|
||||||
errors.ganttOptionDto?.allowDependencyDeleting &&
|
errors.ganttOptionDto?.allowTaskResourceUpdating &&
|
||||||
touched.ganttOptionDto?.allowDependencyDeleting
|
touched.ganttOptionDto?.allowTaskResourceUpdating
|
||||||
}
|
}
|
||||||
errorMessage={errors.ganttOptionDto?.allowDependencyDeleting}
|
errorMessage={errors.ganttOptionDto?.allowTaskResourceUpdating}
|
||||||
>
|
>
|
||||||
<Field
|
<Field
|
||||||
name="ganttOptionDto.allowDependencyDeleting"
|
name="ganttOptionDto.allowTaskResourceUpdating"
|
||||||
placeholder={translate('::App.ListFormEdit.AllowDependencyDeleting')}
|
placeholder={translate('::App.ListFormEdit.AllowTaskResourceUpdating')}
|
||||||
component={Checkbox}
|
component={Checkbox}
|
||||||
|
disabled={!values.ganttOptionDto.editingEnabled}
|
||||||
/>
|
/>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="grid grid-cols-1 md:grid-cols-3 gap-3 border-t border-gray-200 pt-1">
|
||||||
|
<div>
|
||||||
|
<FormItem
|
||||||
|
label={translate('::App.ListFormEdit.AllowResourceAdding')}
|
||||||
|
invalid={
|
||||||
|
errors.ganttOptionDto?.allowResourceAdding &&
|
||||||
|
touched.ganttOptionDto?.allowResourceAdding
|
||||||
|
}
|
||||||
|
errorMessage={errors.ganttOptionDto?.allowResourceAdding}
|
||||||
|
>
|
||||||
|
<Field
|
||||||
|
name="ganttOptionDto.allowResourceAdding"
|
||||||
|
placeholder={translate('::App.ListFormEdit.AllowResourceAdding')}
|
||||||
|
component={Checkbox}
|
||||||
|
disabled={!values.ganttOptionDto.editingEnabled}
|
||||||
|
/>
|
||||||
|
</FormItem>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
<FormItem
|
<FormItem
|
||||||
label={translate('::App.ListFormEdit.AllowResourceUpdating')}
|
label={translate('::App.ListFormEdit.AllowResourceUpdating')}
|
||||||
invalid={
|
invalid={
|
||||||
|
|
@ -479,23 +488,61 @@ function FormTabGantt(props: FormEditProps) {
|
||||||
name="ganttOptionDto.allowResourceUpdating"
|
name="ganttOptionDto.allowResourceUpdating"
|
||||||
placeholder={translate('::App.ListFormEdit.AllowResourceUpdating')}
|
placeholder={translate('::App.ListFormEdit.AllowResourceUpdating')}
|
||||||
component={Checkbox}
|
component={Checkbox}
|
||||||
|
disabled={!values.ganttOptionDto.editingEnabled}
|
||||||
/>
|
/>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
<FormItem
|
<FormItem
|
||||||
label={translate('::App.ListFormEdit.AllowTaskResourceUpdating')}
|
label={translate('::App.ListFormEdit.AllowResourceDeleting')}
|
||||||
invalid={
|
invalid={
|
||||||
errors.ganttOptionDto?.allowTaskResourceUpdating &&
|
errors.ganttOptionDto?.allowResourceDeleting &&
|
||||||
touched.ganttOptionDto?.allowTaskResourceUpdating
|
touched.ganttOptionDto?.allowResourceDeleting
|
||||||
}
|
}
|
||||||
errorMessage={errors.ganttOptionDto?.allowTaskResourceUpdating}
|
errorMessage={errors.ganttOptionDto?.allowResourceDeleting}
|
||||||
>
|
>
|
||||||
<Field
|
<Field
|
||||||
name="ganttOptionDto.allowTaskResourceUpdating"
|
name="ganttOptionDto.allowResourceDeleting"
|
||||||
placeholder={translate(
|
placeholder={translate('::App.ListFormEdit.AllowResourceDeleting')}
|
||||||
'::App.ListFormEdit.AllowTaskResourceUpdating',
|
|
||||||
)}
|
|
||||||
component={Checkbox}
|
component={Checkbox}
|
||||||
|
disabled={!values.ganttOptionDto.editingEnabled}
|
||||||
|
/>
|
||||||
|
</FormItem>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="grid grid-cols-1 md:grid-cols-3 gap-3 border-t border-gray-200 pt-1">
|
||||||
|
<div>
|
||||||
|
<FormItem
|
||||||
|
label={translate('::App.ListFormEdit.AllowDependencyAdding')}
|
||||||
|
invalid={
|
||||||
|
errors.ganttOptionDto?.allowDependencyAdding &&
|
||||||
|
touched.ganttOptionDto?.allowDependencyAdding
|
||||||
|
}
|
||||||
|
errorMessage={errors.ganttOptionDto?.allowDependencyAdding}
|
||||||
|
>
|
||||||
|
<Field
|
||||||
|
name="ganttOptionDto.allowDependencyAdding"
|
||||||
|
placeholder={translate('::App.ListFormEdit.AllowDependencyAdding')}
|
||||||
|
component={Checkbox}
|
||||||
|
disabled={!values.ganttOptionDto.editingEnabled}
|
||||||
|
/>
|
||||||
|
</FormItem>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<FormItem
|
||||||
|
label={translate('::App.ListFormEdit.AllowDependencyDeleting')}
|
||||||
|
invalid={
|
||||||
|
errors.ganttOptionDto?.allowDependencyDeleting &&
|
||||||
|
touched.ganttOptionDto?.allowDependencyDeleting
|
||||||
|
}
|
||||||
|
errorMessage={errors.ganttOptionDto?.allowDependencyDeleting}
|
||||||
|
>
|
||||||
|
<Field
|
||||||
|
name="ganttOptionDto.allowDependencyDeleting"
|
||||||
|
placeholder={translate('::App.ListFormEdit.AllowDependencyDeleting')}
|
||||||
|
component={Checkbox}
|
||||||
|
disabled={!values.ganttOptionDto.editingEnabled}
|
||||||
/>
|
/>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@ const initialValues: ListFormWizardDto = {
|
||||||
endExpr: '',
|
endExpr: '',
|
||||||
progressExpr: '',
|
progressExpr: '',
|
||||||
scaleType: 'weeks',
|
scaleType: 'weeks',
|
||||||
allowEditing: false,
|
editingEnabled: false,
|
||||||
allowTaskAdding: false,
|
allowTaskAdding: false,
|
||||||
allowTaskUpdating: false,
|
allowTaskUpdating: false,
|
||||||
allowTaskResourceUpdating: false,
|
allowTaskResourceUpdating: false,
|
||||||
|
|
@ -154,17 +154,17 @@ const initialValues: ListFormWizardDto = {
|
||||||
approvalIsResetWorkflow: false,
|
approvalIsResetWorkflow: false,
|
||||||
criteria: [],
|
criteria: [],
|
||||||
},
|
},
|
||||||
languageTextMenuEn: '',
|
menuEn: '',
|
||||||
languageTextMenuTr: '',
|
menuTr: '',
|
||||||
languageTextTitleEn: '',
|
titleEn: '',
|
||||||
languageTextTitleTr: '',
|
titleTr: '',
|
||||||
languageTextDescEn: '',
|
descEn: '',
|
||||||
languageTextDescTr: '',
|
descTr: '',
|
||||||
languageTextMenuParentEn: '',
|
menuParentEn: '',
|
||||||
languageTextMenuParentTr: '',
|
menuParentTr: '',
|
||||||
permissionGroupName: '',
|
permissionGroupName: '',
|
||||||
permissionGroupDisplayNameEn: '',
|
permissionGroupEn: '',
|
||||||
permissionGroupDisplayNameTr: '',
|
permissionGroupTr: '',
|
||||||
menuParentCode: '',
|
menuParentCode: '',
|
||||||
menuParentModuleId: '',
|
menuParentModuleId: '',
|
||||||
menuParentIcon: '',
|
menuParentIcon: '',
|
||||||
|
|
@ -194,10 +194,10 @@ const step1ValidationSchema = Yup.object().shape({
|
||||||
// İzin grubu menüden bağımsızdır: menüsüz wizard'da da izinler üretilir ve bir gruba yazılır.
|
// İzin grubu menüden bağımsızdır: menüsüz wizard'da da izinler üretilir ve bir gruba yazılır.
|
||||||
permissionGroupName: Yup.string().required(),
|
permissionGroupName: Yup.string().required(),
|
||||||
// Grup adi ile birlikte iki dilli gorunen ad da seed dosyasina yazilir; bos birakilamaz.
|
// Grup adi ile birlikte iki dilli gorunen ad da seed dosyasina yazilir; bos birakilamaz.
|
||||||
permissionGroupDisplayNameEn: Yup.string().required(),
|
permissionGroupEn: Yup.string().required(),
|
||||||
permissionGroupDisplayNameTr: Yup.string().required(),
|
permissionGroupTr: Yup.string().required(),
|
||||||
languageTextMenuEn: Yup.string().required(),
|
menuEn: Yup.string().required(),
|
||||||
languageTextMenuTr: Yup.string().required(),
|
menuTr: Yup.string().required(),
|
||||||
})
|
})
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -213,10 +213,10 @@ const requiredForListComponent = <T extends Yup.Schema>(schema: T) =>
|
||||||
|
|
||||||
const step2ValidationSchema = Yup.object().shape({
|
const step2ValidationSchema = Yup.object().shape({
|
||||||
listFormCode: requiredForListComponent(Yup.string()),
|
listFormCode: requiredForListComponent(Yup.string()),
|
||||||
languageTextTitleEn: requiredForListComponent(Yup.string()),
|
titleEn: requiredForListComponent(Yup.string()),
|
||||||
languageTextTitleTr: requiredForListComponent(Yup.string()),
|
titleTr: requiredForListComponent(Yup.string()),
|
||||||
languageTextDescEn: requiredForListComponent(Yup.string()),
|
descEn: requiredForListComponent(Yup.string()),
|
||||||
languageTextDescTr: requiredForListComponent(Yup.string()),
|
descTr: requiredForListComponent(Yup.string()),
|
||||||
dataSourceCode: requiredForListComponent(Yup.string()),
|
dataSourceCode: requiredForListComponent(Yup.string()),
|
||||||
dataSourceConnectionString: Yup.string(),
|
dataSourceConnectionString: Yup.string(),
|
||||||
selectCommandType: requiredForListComponent(Yup.string()),
|
selectCommandType: requiredForListComponent(Yup.string()),
|
||||||
|
|
@ -610,8 +610,8 @@ const Wizard = () => {
|
||||||
const formik = formikRef.current
|
const formik = formikRef.current
|
||||||
formik?.setFieldValue('permissionGroupName', groupName)
|
formik?.setFieldValue('permissionGroupName', groupName)
|
||||||
if (!groupName) {
|
if (!groupName) {
|
||||||
formik?.setFieldValue('permissionGroupDisplayNameEn', '')
|
formik?.setFieldValue('permissionGroupEn', '')
|
||||||
formik?.setFieldValue('permissionGroupDisplayNameTr', '')
|
formik?.setFieldValue('permissionGroupTr', '')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// Sirasiyla: mevcut grubun metinleri, cagiranin verdigi metinler, ayni koda sahip menunun
|
// Sirasiyla: mevcut grubun metinleri, cagiranin verdigi metinler, ayni koda sahip menunun
|
||||||
|
|
@ -619,11 +619,11 @@ const Wizard = () => {
|
||||||
const texts = permissionGroupTextsRef.current[groupName]
|
const texts = permissionGroupTextsRef.current[groupName]
|
||||||
const menu = rawMenuItems.find((item) => item.code === groupName)
|
const menu = rawMenuItems.find((item) => item.code === groupName)
|
||||||
formik?.setFieldValue(
|
formik?.setFieldValue(
|
||||||
'permissionGroupDisplayNameEn',
|
'permissionGroupEn',
|
||||||
texts?.en || fallbackTexts?.en || menu?.menuTextEn || groupName,
|
texts?.en || fallbackTexts?.en || menu?.menuTextEn || groupName,
|
||||||
)
|
)
|
||||||
formik?.setFieldValue(
|
formik?.setFieldValue(
|
||||||
'permissionGroupDisplayNameTr',
|
'permissionGroupTr',
|
||||||
texts?.tr || fallbackTexts?.tr || menu?.menuTextTr || groupName,
|
texts?.tr || fallbackTexts?.tr || menu?.menuTextTr || groupName,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -651,8 +651,8 @@ const Wizard = () => {
|
||||||
: [...prev, { value: group.name, label: permissionGroupLabel(group) }],
|
: [...prev, { value: group.name, label: permissionGroupLabel(group) }],
|
||||||
)
|
)
|
||||||
formik?.setFieldValue('permissionGroupName', group.name)
|
formik?.setFieldValue('permissionGroupName', group.name)
|
||||||
formik?.setFieldValue('permissionGroupDisplayNameEn', group.displayNameEn)
|
formik?.setFieldValue('permissionGroupEn', group.displayNameEn)
|
||||||
formik?.setFieldValue('permissionGroupDisplayNameTr', group.displayNameTr)
|
formik?.setFieldValue('permissionGroupTr', group.displayNameTr)
|
||||||
}
|
}
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
@ -723,17 +723,17 @@ const Wizard = () => {
|
||||||
schedulerOptionDto: w.schedulerOptionDto ?? initialValues.schedulerOptionDto,
|
schedulerOptionDto: w.schedulerOptionDto ?? initialValues.schedulerOptionDto,
|
||||||
todoOptionDto: w.todoOptionDto ?? initialValues.todoOptionDto,
|
todoOptionDto: w.todoOptionDto ?? initialValues.todoOptionDto,
|
||||||
workflowDto: w.workflowDto ?? initialValues.workflowDto,
|
workflowDto: w.workflowDto ?? initialValues.workflowDto,
|
||||||
languageTextMenuEn: w.languageTextMenuEn ?? '',
|
menuEn: w.menuEn ?? '',
|
||||||
languageTextMenuTr: w.languageTextMenuTr ?? '',
|
menuTr: w.menuTr ?? '',
|
||||||
languageTextTitleEn: w.languageTextTitleEn ?? '',
|
titleEn: w.titleEn ?? '',
|
||||||
languageTextTitleTr: w.languageTextTitleTr ?? '',
|
titleTr: w.titleTr ?? '',
|
||||||
languageTextDescEn: w.languageTextDescEn ?? '',
|
descEn: w.descEn ?? '',
|
||||||
languageTextDescTr: w.languageTextDescTr ?? '',
|
descTr: w.descTr ?? '',
|
||||||
languageTextMenuParentEn: w.languageTextMenuParentEn ?? '',
|
menuParentEn: w.menuParentEn ?? '',
|
||||||
languageTextMenuParentTr: w.languageTextMenuParentTr ?? '',
|
menuParentTr: w.menuParentTr ?? '',
|
||||||
permissionGroupName: w.permissionGroupName ?? '',
|
permissionGroupName: w.permissionGroupName ?? '',
|
||||||
permissionGroupDisplayNameEn: w.permissionGroupDisplayNameEn ?? '',
|
permissionGroupEn: w.permissionGroupEn ?? '',
|
||||||
permissionGroupDisplayNameTr: w.permissionGroupDisplayNameTr ?? '',
|
permissionGroupTr: w.permissionGroupTr ?? '',
|
||||||
menuParentCode: w.menuParentCode ?? '',
|
menuParentCode: w.menuParentCode ?? '',
|
||||||
menuParentModuleId: w.menuParentModuleId ?? '',
|
menuParentModuleId: w.menuParentModuleId ?? '',
|
||||||
menuParentIcon: w.menuParentIcon ?? '',
|
menuParentIcon: w.menuParentIcon ?? '',
|
||||||
|
|
@ -830,12 +830,12 @@ const Wizard = () => {
|
||||||
const setAutoText = (
|
const setAutoText = (
|
||||||
field: keyof Pick<
|
field: keyof Pick<
|
||||||
ListFormWizardDto,
|
ListFormWizardDto,
|
||||||
| 'languageTextMenuEn'
|
| 'menuEn'
|
||||||
| 'languageTextMenuTr'
|
| 'menuTr'
|
||||||
| 'languageTextTitleEn'
|
| 'titleEn'
|
||||||
| 'languageTextTitleTr'
|
| 'titleTr'
|
||||||
| 'languageTextDescEn'
|
| 'descEn'
|
||||||
| 'languageTextDescTr'
|
| 'descTr'
|
||||||
>,
|
>,
|
||||||
) => {
|
) => {
|
||||||
const current = formik?.values[field]
|
const current = formik?.values[field]
|
||||||
|
|
@ -847,12 +847,12 @@ const Wizard = () => {
|
||||||
formik?.setFieldValue('wizardName', name)
|
formik?.setFieldValue('wizardName', name)
|
||||||
formik?.setFieldValue('listFormCode', derived)
|
formik?.setFieldValue('listFormCode', derived)
|
||||||
formik?.setFieldValue('menuCode', derived)
|
formik?.setFieldValue('menuCode', derived)
|
||||||
setAutoText('languageTextMenuEn')
|
setAutoText('menuEn')
|
||||||
setAutoText('languageTextMenuTr')
|
setAutoText('menuTr')
|
||||||
setAutoText('languageTextTitleEn')
|
setAutoText('titleEn')
|
||||||
setAutoText('languageTextTitleTr')
|
setAutoText('titleTr')
|
||||||
setAutoText('languageTextDescEn')
|
setAutoText('descEn')
|
||||||
setAutoText('languageTextDescTr')
|
setAutoText('descTr')
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -943,8 +943,8 @@ const Wizard = () => {
|
||||||
formik?.setFieldValue('menuParentCode', '')
|
formik?.setFieldValue('menuParentCode', '')
|
||||||
formik?.setFieldValue('menuParentModuleId', '')
|
formik?.setFieldValue('menuParentModuleId', '')
|
||||||
formik?.setFieldValue('menuParentIcon', '')
|
formik?.setFieldValue('menuParentIcon', '')
|
||||||
formik?.setFieldValue('languageTextMenuParentEn', '')
|
formik?.setFieldValue('menuParentEn', '')
|
||||||
formik?.setFieldValue('languageTextMenuParentTr', '')
|
formik?.setFieldValue('menuParentTr', '')
|
||||||
if (derivedFromParent) handlePermissionGroupChange('')
|
if (derivedFromParent) handlePermissionGroupChange('')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -961,8 +961,8 @@ const Wizard = () => {
|
||||||
formik?.setFieldValue('menuParentCode', '')
|
formik?.setFieldValue('menuParentCode', '')
|
||||||
formik?.setFieldValue('menuParentModuleId', '')
|
formik?.setFieldValue('menuParentModuleId', '')
|
||||||
formik?.setFieldValue('menuParentIcon', '')
|
formik?.setFieldValue('menuParentIcon', '')
|
||||||
formik?.setFieldValue('languageTextMenuParentEn', '')
|
formik?.setFieldValue('menuParentEn', '')
|
||||||
formik?.setFieldValue('languageTextMenuParentTr', '')
|
formik?.setFieldValue('menuParentTr', '')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -977,8 +977,8 @@ const Wizard = () => {
|
||||||
formik?.setFieldValue('menuParentCode', '')
|
formik?.setFieldValue('menuParentCode', '')
|
||||||
formik?.setFieldValue('menuParentModuleId', '')
|
formik?.setFieldValue('menuParentModuleId', '')
|
||||||
formik?.setFieldValue('menuParentIcon', '')
|
formik?.setFieldValue('menuParentIcon', '')
|
||||||
formik?.setFieldValue('languageTextMenuParentEn', '')
|
formik?.setFieldValue('menuParentEn', '')
|
||||||
formik?.setFieldValue('languageTextMenuParentTr', '')
|
formik?.setFieldValue('menuParentTr', '')
|
||||||
formik?.setFieldValue('menuIcon', '')
|
formik?.setFieldValue('menuIcon', '')
|
||||||
formik?.setFieldValue('menuOrder', 0)
|
formik?.setFieldValue('menuOrder', 0)
|
||||||
}
|
}
|
||||||
|
|
@ -996,8 +996,8 @@ const Wizard = () => {
|
||||||
}
|
}
|
||||||
const selectedMenu = rawMenuItems.find((item) => item.code === code)
|
const selectedMenu = rawMenuItems.find((item) => item.code === code)
|
||||||
formikRef.current?.setFieldValue('menuParentIcon', selectedMenu?.icon ?? '')
|
formikRef.current?.setFieldValue('menuParentIcon', selectedMenu?.icon ?? '')
|
||||||
formikRef.current?.setFieldValue('languageTextMenuParentEn', selectedMenu?.menuTextEn ?? '')
|
formikRef.current?.setFieldValue('menuParentEn', selectedMenu?.menuTextEn ?? '')
|
||||||
formikRef.current?.setFieldValue('languageTextMenuParentTr', selectedMenu?.menuTextTr ?? '')
|
formikRef.current?.setFieldValue('menuParentTr', selectedMenu?.menuTextTr ?? '')
|
||||||
if (!code) {
|
if (!code) {
|
||||||
formikRef.current?.setFieldValue('menuParentModuleId', '')
|
formikRef.current?.setFieldValue('menuParentModuleId', '')
|
||||||
return
|
return
|
||||||
|
|
@ -1023,8 +1023,8 @@ const Wizard = () => {
|
||||||
.reduce((max, item) => Math.max(max, item.order ?? 0), 0) + 1
|
.reduce((max, item) => Math.max(max, item.order ?? 0), 0) + 1
|
||||||
formikRef.current?.setFieldValue('menuOrder', nextMenuOrder)
|
formikRef.current?.setFieldValue('menuOrder', nextMenuOrder)
|
||||||
formikRef.current?.setFieldValue('menuParentIcon', menu.icon ?? '')
|
formikRef.current?.setFieldValue('menuParentIcon', menu.icon ?? '')
|
||||||
formikRef.current?.setFieldValue('languageTextMenuParentEn', menu.menuTextEn)
|
formikRef.current?.setFieldValue('menuParentEn', menu.menuTextEn)
|
||||||
formikRef.current?.setFieldValue('languageTextMenuParentTr', menu.menuTextTr)
|
formikRef.current?.setFieldValue('menuParentTr', menu.menuTextTr)
|
||||||
|
|
||||||
const rootCode = menu.parentCode ? findRootCode(rawMenuItems, menu.parentCode) : menu.code
|
const rootCode = menu.parentCode ? findRootCode(rawMenuItems, menu.parentCode) : menu.code
|
||||||
const existingRoot = rawMenuItems.find((item) => item.code === rootCode)
|
const existingRoot = rawMenuItems.find((item) => item.code === rootCode)
|
||||||
|
|
|
||||||
|
|
@ -133,10 +133,10 @@ const WizardStepDataSettings = ({
|
||||||
translate('::App.Listform.ListformField.ConnectionString'),
|
translate('::App.Listform.ListformField.ConnectionString'),
|
||||||
!values.selectCommand && translate('::App.WizardStep2.SelectCommand'),
|
!values.selectCommand && translate('::App.WizardStep2.SelectCommand'),
|
||||||
!values.keyFieldName && translate('::App.WizardStep4.KeyField'),
|
!values.keyFieldName && translate('::App.WizardStep4.KeyField'),
|
||||||
!values.languageTextDescEn && translate('::App.WizardStep2.DescriptionTextEnglish'),
|
!values.descEn && translate('::App.WizardStep2.DescriptionTextEnglish'),
|
||||||
!values.languageTextDescTr && translate('::App.WizardStep2.DescriptionTextTurkish'),
|
!values.descTr && translate('::App.WizardStep2.DescriptionTextTurkish'),
|
||||||
!values.languageTextTitleEn && translate('::App.WizardStep2.TitleTextEnglish'),
|
!values.titleEn && translate('::App.WizardStep2.TitleTextEnglish'),
|
||||||
!values.languageTextTitleTr && translate('::App.WizardStep2.TitleTextTurkish'),
|
!values.titleTr && translate('::App.WizardStep2.TitleTextTurkish'),
|
||||||
selectedColumns.size === 0 && translate('::App.WizardStep2.ColumnSelection'),
|
selectedColumns.size === 0 && translate('::App.WizardStep2.ColumnSelection'),
|
||||||
].filter(Boolean) as string[]
|
].filter(Boolean) as string[]
|
||||||
const step2CanGo = step2Missing.length === 0
|
const step2CanGo = step2Missing.length === 0
|
||||||
|
|
@ -653,13 +653,13 @@ const WizardStepDataSettings = ({
|
||||||
<FormItem
|
<FormItem
|
||||||
label={translate('::App.WizardStep2.TitleTextEnglish')}
|
label={translate('::App.WizardStep2.TitleTextEnglish')}
|
||||||
asterisk={true}
|
asterisk={true}
|
||||||
invalid={!!(errors.languageTextTitleEn && touched.languageTextTitleEn)}
|
invalid={!!(errors.titleEn && touched.titleEn)}
|
||||||
errorMessage={errors.languageTextTitleEn}
|
errorMessage={errors.titleEn}
|
||||||
>
|
>
|
||||||
<Field
|
<Field
|
||||||
type="text"
|
type="text"
|
||||||
autoComplete="off"
|
autoComplete="off"
|
||||||
name="languageTextTitleEn"
|
name="titleEn"
|
||||||
placeholder={translate('::App.WizardStep2.TitleTextEnglish')}
|
placeholder={translate('::App.WizardStep2.TitleTextEnglish')}
|
||||||
component={Input}
|
component={Input}
|
||||||
/>
|
/>
|
||||||
|
|
@ -668,13 +668,13 @@ const WizardStepDataSettings = ({
|
||||||
<FormItem
|
<FormItem
|
||||||
label={translate('::App.WizardStep2.TitleTextTurkish')}
|
label={translate('::App.WizardStep2.TitleTextTurkish')}
|
||||||
asterisk={true}
|
asterisk={true}
|
||||||
invalid={!!(errors.languageTextTitleTr && touched.languageTextTitleTr)}
|
invalid={!!(errors.titleTr && touched.titleTr)}
|
||||||
errorMessage={errors.languageTextTitleTr}
|
errorMessage={errors.titleTr}
|
||||||
>
|
>
|
||||||
<Field
|
<Field
|
||||||
type="text"
|
type="text"
|
||||||
autoComplete="off"
|
autoComplete="off"
|
||||||
name="languageTextTitleTr"
|
name="titleTr"
|
||||||
placeholder={translate('::App.WizardStep2.TitleTextTurkish')}
|
placeholder={translate('::App.WizardStep2.TitleTextTurkish')}
|
||||||
component={Input}
|
component={Input}
|
||||||
/>
|
/>
|
||||||
|
|
@ -683,13 +683,13 @@ const WizardStepDataSettings = ({
|
||||||
<FormItem
|
<FormItem
|
||||||
label={translate('::App.WizardStep2.DescriptionTextEnglish')}
|
label={translate('::App.WizardStep2.DescriptionTextEnglish')}
|
||||||
asterisk={true}
|
asterisk={true}
|
||||||
invalid={!!(errors.languageTextDescEn && touched.languageTextDescEn)}
|
invalid={!!(errors.descEn && touched.descEn)}
|
||||||
errorMessage={errors.languageTextDescEn}
|
errorMessage={errors.descEn}
|
||||||
>
|
>
|
||||||
<Field
|
<Field
|
||||||
type="text"
|
type="text"
|
||||||
autoComplete="off"
|
autoComplete="off"
|
||||||
name="languageTextDescEn"
|
name="descEn"
|
||||||
placeholder={translate('::App.WizardStep2.DescriptionTextEnglish')}
|
placeholder={translate('::App.WizardStep2.DescriptionTextEnglish')}
|
||||||
component={Input}
|
component={Input}
|
||||||
/>
|
/>
|
||||||
|
|
@ -698,13 +698,13 @@ const WizardStepDataSettings = ({
|
||||||
<FormItem
|
<FormItem
|
||||||
label={translate('::App.WizardStep2.DescriptionTextTurkish')}
|
label={translate('::App.WizardStep2.DescriptionTextTurkish')}
|
||||||
asterisk={true}
|
asterisk={true}
|
||||||
invalid={!!(errors.languageTextDescTr && touched.languageTextDescTr)}
|
invalid={!!(errors.descTr && touched.descTr)}
|
||||||
errorMessage={errors.languageTextDescTr}
|
errorMessage={errors.descTr}
|
||||||
>
|
>
|
||||||
<Field
|
<Field
|
||||||
type="text"
|
type="text"
|
||||||
autoComplete="off"
|
autoComplete="off"
|
||||||
name="languageTextDescTr"
|
name="descTr"
|
||||||
placeholder={translate('::App.WizardStep2.DescriptionTextTurkish')}
|
placeholder={translate('::App.WizardStep2.DescriptionTextTurkish')}
|
||||||
component={Input}
|
component={Input}
|
||||||
/>
|
/>
|
||||||
|
|
|
||||||
|
|
@ -85,14 +85,14 @@ function buildLogSteps(
|
||||||
{
|
{
|
||||||
id: 3,
|
id: 3,
|
||||||
label: translate('::App.Step4Log.SavingLanguageTexts'),
|
label: translate('::App.Step4Log.SavingLanguageTexts'),
|
||||||
detail: `EN: ${values.languageTextMenuEn} / TR: ${values.languageTextMenuTr}`,
|
detail: `EN: ${values.menuEn} / TR: ${values.menuTr}`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 4,
|
id: 4,
|
||||||
label: translate('::App.Step4Log.ConfiguringPermission', {
|
label: translate('::App.Step4Log.ConfiguringPermission', {
|
||||||
0: values.permissionGroupName,
|
0: values.permissionGroupName,
|
||||||
}),
|
}),
|
||||||
detail: `EN: ${values.permissionGroupDisplayNameEn} / TR: ${values.permissionGroupDisplayNameTr}`,
|
detail: `EN: ${values.permissionGroupEn} / TR: ${values.permissionGroupTr}`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 5,
|
id: 5,
|
||||||
|
|
@ -116,14 +116,14 @@ function buildLogSteps(
|
||||||
{
|
{
|
||||||
id: 3,
|
id: 3,
|
||||||
label: translate('::App.Step4Log.SavingLanguageTexts'),
|
label: translate('::App.Step4Log.SavingLanguageTexts'),
|
||||||
detail: `EN: ${values.languageTextMenuEn} / TR: ${values.languageTextMenuTr}`,
|
detail: `EN: ${values.menuEn} / TR: ${values.menuTr}`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 4,
|
id: 4,
|
||||||
label: translate('::App.Step4Log.ConfiguringPermission', {
|
label: translate('::App.Step4Log.ConfiguringPermission', {
|
||||||
0: values.permissionGroupName,
|
0: values.permissionGroupName,
|
||||||
}),
|
}),
|
||||||
detail: `EN: ${values.permissionGroupDisplayNameEn} / TR: ${values.permissionGroupDisplayNameTr}`,
|
detail: `EN: ${values.permissionGroupEn} / TR: ${values.permissionGroupTr}`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 5,
|
id: 5,
|
||||||
|
|
@ -324,22 +324,22 @@ const WizardStepDeploy = ({
|
||||||
/>
|
/>
|
||||||
<Row
|
<Row
|
||||||
label={translate('::App.WizardStep1.PermissionGroupDisplayNameTr')}
|
label={translate('::App.WizardStep1.PermissionGroupDisplayNameTr')}
|
||||||
value={values.permissionGroupDisplayNameTr}
|
value={values.permissionGroupTr}
|
||||||
/>
|
/>
|
||||||
<Row
|
<Row
|
||||||
label={translate('::App.WizardStep1.PermissionGroupDisplayNameEn')}
|
label={translate('::App.WizardStep1.PermissionGroupDisplayNameEn')}
|
||||||
value={values.permissionGroupDisplayNameEn}
|
value={values.permissionGroupEn}
|
||||||
/>
|
/>
|
||||||
<Row label={translate('::App.Listform.ListformField.Icon')} value={values.menuIcon} />
|
<Row label={translate('::App.Listform.ListformField.Icon')} value={values.menuIcon} />
|
||||||
<Row label={translate('::App.WizardStep4.MenuTr')} value={values.languageTextMenuTr} />
|
<Row label={translate('::App.WizardStep4.MenuTr')} value={values.menuTr} />
|
||||||
<Row label={translate('::App.WizardStep4.MenuEn')} value={values.languageTextMenuEn} />
|
<Row label={translate('::App.WizardStep4.MenuEn')} value={values.menuEn} />
|
||||||
<Row
|
<Row
|
||||||
label={translate('::App.WizardStep4.MenuParentTr')}
|
label={translate('::App.WizardStep4.MenuParentTr')}
|
||||||
value={values.languageTextMenuParentTr}
|
value={values.menuParentTr}
|
||||||
/>
|
/>
|
||||||
<Row
|
<Row
|
||||||
label={translate('::App.WizardStep4.MenuParentEn')}
|
label={translate('::App.WizardStep4.MenuParentEn')}
|
||||||
value={values.languageTextMenuParentEn}
|
value={values.menuParentEn}
|
||||||
/>
|
/>
|
||||||
</Section>
|
</Section>
|
||||||
|
|
||||||
|
|
@ -362,19 +362,19 @@ const WizardStepDeploy = ({
|
||||||
/>
|
/>
|
||||||
<Row
|
<Row
|
||||||
label={translate('::App.WizardStep4.TitleTr')}
|
label={translate('::App.WizardStep4.TitleTr')}
|
||||||
value={values.languageTextTitleTr}
|
value={values.titleTr}
|
||||||
/>
|
/>
|
||||||
<Row
|
<Row
|
||||||
label={translate('::App.WizardStep4.TitleEn')}
|
label={translate('::App.WizardStep4.TitleEn')}
|
||||||
value={values.languageTextTitleEn}
|
value={values.titleEn}
|
||||||
/>
|
/>
|
||||||
<Row
|
<Row
|
||||||
label={translate('::App.WizardStep4.DescTr')}
|
label={translate('::App.WizardStep4.DescTr')}
|
||||||
value={values.languageTextDescTr}
|
value={values.descTr}
|
||||||
/>
|
/>
|
||||||
<Row
|
<Row
|
||||||
label={translate('::App.WizardStep4.DescEn')}
|
label={translate('::App.WizardStep4.DescEn')}
|
||||||
value={values.languageTextDescEn}
|
value={values.descEn}
|
||||||
/>
|
/>
|
||||||
<Row label={translate('::App.Platform.DataSource')} value={values.dataSourceCode} />
|
<Row label={translate('::App.Platform.DataSource')} value={values.dataSourceCode} />
|
||||||
<Row
|
<Row
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ const WizardStepGanttLayout = ({
|
||||||
['progressExpr', translate('::App.ListFormEdit.ProgressExpr')],
|
['progressExpr', translate('::App.ListFormEdit.ProgressExpr')],
|
||||||
] as const
|
] as const
|
||||||
const permissionFields = [
|
const permissionFields = [
|
||||||
['allowEditing', '::App.ListFormEdit.AllowEditing'],
|
['editingEnabled', '::App.ListFormEdit.EditingEnabled'],
|
||||||
['allowTaskAdding', '::App.ListFormEdit.AllowTaskAdding'],
|
['allowTaskAdding', '::App.ListFormEdit.AllowTaskAdding'],
|
||||||
['allowTaskUpdating', '::App.ListFormEdit.AllowTaskUpdating'],
|
['allowTaskUpdating', '::App.ListFormEdit.AllowTaskUpdating'],
|
||||||
['allowTaskDeleting', '::App.ListFormEdit.AllowTaskDeleting'],
|
['allowTaskDeleting', '::App.ListFormEdit.AllowTaskDeleting'],
|
||||||
|
|
|
||||||
|
|
@ -637,12 +637,12 @@ const WizardStepMenu = ({
|
||||||
// burada kontrol edilmezse "Next" aktif görünüp sessizce çalışmıyordu.
|
// burada kontrol edilmezse "Next" aktif görünüp sessizce çalışmıyordu.
|
||||||
createMenu && !(Number(values.menuOrder) >= 1) && translate('::App.WizardStep1.MenuOrder'),
|
createMenu && !(Number(values.menuOrder) >= 1) && translate('::App.WizardStep1.MenuOrder'),
|
||||||
!values.permissionGroupName && translate('::App.WizardStep1.PermissionGroupName'),
|
!values.permissionGroupName && translate('::App.WizardStep1.PermissionGroupName'),
|
||||||
!values.permissionGroupDisplayNameEn &&
|
!values.permissionGroupEn &&
|
||||||
translate('::App.WizardStep1.PermissionGroupDisplayNameEn'),
|
translate('::App.WizardStep1.PermissionGroupDisplayNameEn'),
|
||||||
!values.permissionGroupDisplayNameTr &&
|
!values.permissionGroupTr &&
|
||||||
translate('::App.WizardStep1.PermissionGroupDisplayNameTr'),
|
translate('::App.WizardStep1.PermissionGroupDisplayNameTr'),
|
||||||
!values.languageTextMenuEn && translate('::App.WizardStep4.MenuEn'),
|
!values.menuEn && translate('::App.WizardStep4.MenuEn'),
|
||||||
!values.languageTextMenuTr && translate('::App.WizardStep4.MenuTr'),
|
!values.menuTr && translate('::App.WizardStep4.MenuTr'),
|
||||||
createMenu && !values.menuIcon && translate('::App.WizardStep4.MenuIcon'),
|
createMenu && !values.menuIcon && translate('::App.WizardStep4.MenuIcon'),
|
||||||
].filter(Boolean) as string[]
|
].filter(Boolean) as string[]
|
||||||
// Geçersiz ya da çakışan ad deploy'da menü/permission kayıtlarını bozar; adım burada durur.
|
// Geçersiz ya da çakışan ad deploy'da menü/permission kayıtlarını bozar; adım burada durur.
|
||||||
|
|
@ -805,13 +805,13 @@ const WizardStepMenu = ({
|
||||||
<FormItem
|
<FormItem
|
||||||
label={translate('::App.Platform.DisplayNameEnglish')}
|
label={translate('::App.Platform.DisplayNameEnglish')}
|
||||||
asterisk={true}
|
asterisk={true}
|
||||||
invalid={!!(errors.languageTextMenuEn && touched.languageTextMenuEn)}
|
invalid={!!(errors.menuEn && touched.menuEn)}
|
||||||
errorMessage={errors.languageTextMenuEn}
|
errorMessage={errors.menuEn}
|
||||||
>
|
>
|
||||||
<Field
|
<Field
|
||||||
type="text"
|
type="text"
|
||||||
autoComplete="off"
|
autoComplete="off"
|
||||||
name="languageTextMenuEn"
|
name="menuEn"
|
||||||
placeholder={translate('::App.Platform.DisplayNameEnglish')}
|
placeholder={translate('::App.Platform.DisplayNameEnglish')}
|
||||||
component={Input}
|
component={Input}
|
||||||
/>
|
/>
|
||||||
|
|
@ -821,13 +821,13 @@ const WizardStepMenu = ({
|
||||||
<FormItem
|
<FormItem
|
||||||
label={translate('::App.Platform.DisplayNameTurkish')}
|
label={translate('::App.Platform.DisplayNameTurkish')}
|
||||||
asterisk={true}
|
asterisk={true}
|
||||||
invalid={!!(errors.languageTextMenuTr && touched.languageTextMenuTr)}
|
invalid={!!(errors.menuTr && touched.menuTr)}
|
||||||
errorMessage={errors.languageTextMenuTr}
|
errorMessage={errors.menuTr}
|
||||||
>
|
>
|
||||||
<Field
|
<Field
|
||||||
type="text"
|
type="text"
|
||||||
autoComplete="off"
|
autoComplete="off"
|
||||||
name="languageTextMenuTr"
|
name="menuTr"
|
||||||
placeholder={translate('::App.Platform.DisplayNameTurkish')}
|
placeholder={translate('::App.Platform.DisplayNameTurkish')}
|
||||||
component={Input}
|
component={Input}
|
||||||
/>
|
/>
|
||||||
|
|
@ -881,8 +881,8 @@ const WizardStepMenu = ({
|
||||||
existingNames={permissionGroupList.map((o) => o.value ?? '')}
|
existingNames={permissionGroupList.map((o) => o.value ?? '')}
|
||||||
initialValue={{
|
initialValue={{
|
||||||
name: values.permissionGroupName ?? '',
|
name: values.permissionGroupName ?? '',
|
||||||
displayNameEn: values.permissionGroupDisplayNameEn ?? '',
|
displayNameEn: values.permissionGroupEn ?? '',
|
||||||
displayNameTr: values.permissionGroupDisplayNameTr ?? '',
|
displayNameTr: values.permissionGroupTr ?? '',
|
||||||
}}
|
}}
|
||||||
onClose={() => setPermissionGroupDialogOpen(false)}
|
onClose={() => setPermissionGroupDialogOpen(false)}
|
||||||
onSave={onPermissionGroupDefine}
|
onSave={onPermissionGroupDefine}
|
||||||
|
|
|
||||||
|
|
@ -585,7 +585,7 @@ const GanttView = (props: GanttViewProps) => {
|
||||||
</Toolbar>
|
</Toolbar>
|
||||||
|
|
||||||
<Editing
|
<Editing
|
||||||
enabled={gridDto.gridOptions.ganttOptionDto?.allowEditing}
|
enabled={gridDto.gridOptions.ganttOptionDto?.editingEnabled}
|
||||||
allowTaskAdding={gridDto.gridOptions.ganttOptionDto?.allowTaskAdding}
|
allowTaskAdding={gridDto.gridOptions.ganttOptionDto?.allowTaskAdding}
|
||||||
allowTaskUpdating={gridDto.gridOptions.ganttOptionDto?.allowTaskUpdating}
|
allowTaskUpdating={gridDto.gridOptions.ganttOptionDto?.allowTaskUpdating}
|
||||||
allowTaskDeleting={gridDto.gridOptions.ganttOptionDto?.allowTaskDeleting}
|
allowTaskDeleting={gridDto.gridOptions.ganttOptionDto?.allowTaskDeleting}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue