Skip to content

Commit 2d67950

Browse files
committed
Added top menu and language switch components.
1 parent 868c0b5 commit 2d67950

File tree

19 files changed

+329
-37
lines changed

19 files changed

+329
-37
lines changed

src/AbpCompanyName.AbpProjectName.Core/AbpProjectNameCoreModule.cs

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
using System.Reflection;
2-
using Abp.Localization;
3-
using Abp.Localization.Dictionaries;
4-
using Abp.Localization.Dictionaries.Json;
52
using Abp.Modules;
3+
using AbpCompanyName.AbpProjectName.Localization;
64

75
namespace AbpCompanyName.AbpProjectName
86
{
@@ -11,18 +9,7 @@ public class AbpProjectNameCoreModule : AbpModule
119
public override void PreInitialize()
1210
{
1311
Configuration.Auditing.IsEnabledForAnonymousUsers = true;
14-
15-
Configuration.Localization.Languages.Add(new LanguageInfo("en", "English", isDefault: true));
16-
Configuration.Localization.Languages.Add(new LanguageInfo("tr", "Türkçe"));
17-
18-
Configuration.Localization.Sources.Add(
19-
new DictionaryBasedLocalizationSource(AbpProjectNameConsts.LocalizationSourceName,
20-
new JsonEmbeddedFileLocalizationDictionaryProvider(
21-
Assembly.GetExecutingAssembly(),
22-
"AbpCompanyName.AbpProjectName.Core.Localization.SourceFiles"
23-
)
24-
)
25-
);
12+
AbpProjectNameLocalizationConfigurer.Configure(Configuration.Localization);
2613
}
2714

2815
public override void Initialize()
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using System.Reflection;
2+
using Abp.Configuration.Startup;
3+
using Abp.Localization;
4+
using Abp.Localization.Dictionaries;
5+
using Abp.Localization.Dictionaries.Json;
6+
7+
namespace AbpCompanyName.AbpProjectName.Localization
8+
{
9+
public static class AbpProjectNameLocalizationConfigurer
10+
{
11+
public static void Configure(ILocalizationConfiguration localizationConfiguration)
12+
{
13+
localizationConfiguration.Languages.Add(new LanguageInfo("en", "English", "famfamfam-flags england", isDefault: true));
14+
localizationConfiguration.Languages.Add(new LanguageInfo("tr", "Türkçe", "famfamfam-flags tr"));
15+
16+
localizationConfiguration.Sources.Add(
17+
new DictionaryBasedLocalizationSource(AbpProjectNameConsts.LocalizationSourceName,
18+
new JsonEmbeddedFileLocalizationDictionaryProvider(
19+
Assembly.GetExecutingAssembly(),
20+
"AbpCompanyName.AbpProjectName.Core.Localization.SourceFiles"
21+
)
22+
)
23+
);
24+
}
25+
}
26+
}

src/AbpCompanyName.AbpProjectName.Core/Localization/SourceFiles/AbpProjectName-tr.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
"texts": {
44
"HelloWorld": "Merhaba Dünya!",
55
"ChangeLanguage": "Dil değiştir",
6-
"GetProducts": "Ürünleri getir"
6+
"GetProducts": "Ürünleri getir",
7+
8+
"HomePage": "Ana sayfa",
9+
"About": "Hakkında"
710
}
811
}

src/AbpCompanyName.AbpProjectName.Core/Localization/SourceFiles/AbpProjectName.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
"texts": {
44
"HelloWorld": "Hello World!",
55
"ChangeLanguage": "Change language",
6-
"GetProducts": "Get products"
6+
"GetProducts": "Get products",
7+
8+
"HomePage": "HomePage",
9+
"About": "About"
710
}
811
}

src/AbpCompanyName.AbpProjectName.Web/Startup/AbpProjectNameWebModule.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public class AbpProjectNameWebModule : AbpModule
1414
{
1515
public override void PreInitialize()
1616
{
17-
Configuration.Auditing.IsEnabledForAnonymousUsers = true;
17+
Configuration.Navigation.Providers.Add<AbpProjectNameNavigationProvider>();
1818

1919
Configuration.Modules.AbpAspNetCore()
2020
.CreateControllersForAppServices(
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using System.Text.RegularExpressions;
2+
3+
namespace AbpCompanyName.AbpProjectName.Web.Utils
4+
{
5+
public static class UrlHelper
6+
{
7+
private static readonly Regex UrlWithProtocolRegex = new Regex("^.{1,10}://.*$");
8+
9+
public static bool IsRooted(string url)
10+
{
11+
if (url.StartsWith("/"))
12+
{
13+
return true;
14+
}
15+
16+
if (UrlWithProtocolRegex.IsMatch(url))
17+
{
18+
return true;
19+
}
20+
21+
return false;
22+
}
23+
}
24+
}

src/AbpCompanyName.AbpProjectName.Web/Views/Home/Index.cshtml

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,6 @@
1111

1212
<h2>@L("HelloWorld")!</h2>
1313

14-
<h3>@L("ChangeLanguage"):</h3>
15-
16-
<ul>
17-
@foreach (var languageInfo in LocalizationManager.GetAllLanguages())
18-
{
19-
<li>
20-
@if (LocalizationManager.CurrentLanguage.Name == languageInfo.Name)
21-
{
22-
<span class="text-muted">@languageInfo.DisplayName</span>
23-
}
24-
else
25-
{
26-
<a href="/AbpLocalization/[email protected]">@languageInfo.DisplayName</a>
27-
}
28-
</li>
29-
}
30-
</ul>
31-
3214
<div class="row">
3315
<div class="col-lg-12">
3416
<a id="GetProductsButton" class="btn btn-primary" href="#">@L("GetProducts")!</a>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
@model AbpCompanyName.AbpProjectName.Web.Views.Shared.Components.LanguageSelection.LanguageSelectionViewModel
2+
<li class="dropdown">
3+
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
4+
<div class="@Model.CurrentLanguage.Icon"></div>
5+
<span>@Model.CurrentLanguage.DisplayName</span>
6+
<b class="caret"></b>
7+
</a>
8+
<ul class="dropdown-menu">
9+
@foreach (var language in Model.Languages)
10+
{
11+
if (language.Name != Model.CurrentLanguage.Name)
12+
{
13+
<li><a href="@Url.Action("ChangeCulture", "AbpLocalization")?cultureName=@(language.Name)&returnUrl=@(Model.CurrentUrl)"><div class="@language.Icon"></div> @language.DisplayName</a></li>
14+
}
15+
}
16+
</ul>
17+
</li>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Threading.Tasks;
5+
using Abp.Localization;
6+
using Microsoft.AspNetCore.Mvc;
7+
8+
namespace AbpCompanyName.AbpProjectName.Web.Views.Shared.Components.LanguageSelection
9+
{
10+
public class LanguageSelectionViewComponent: ViewComponent
11+
{
12+
private readonly ILocalizationManager _localizationManager;
13+
14+
public LanguageSelectionViewComponent(ILocalizationManager localizationManager)
15+
{
16+
_localizationManager = localizationManager;
17+
}
18+
19+
public async Task<IViewComponentResult> InvokeAsync()
20+
{
21+
var model = new LanguageSelectionViewModel
22+
{
23+
CurrentLanguage = _localizationManager.CurrentLanguage,
24+
Languages = _localizationManager.GetAllLanguages(),
25+
CurrentUrl = Request.Path
26+
};
27+
28+
return View(model);
29+
}
30+
}
31+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using System.Collections.Generic;
2+
using Abp.Localization;
3+
using Microsoft.AspNetCore.Http;
4+
5+
namespace AbpCompanyName.AbpProjectName.Web.Views.Shared.Components.LanguageSelection
6+
{
7+
public class LanguageSelectionViewModel
8+
{
9+
public LanguageInfo CurrentLanguage { get; set; }
10+
11+
public IReadOnlyList<LanguageInfo> Languages { get; set; }
12+
13+
public PathString CurrentUrl { get; set; }
14+
}
15+
}

0 commit comments

Comments
 (0)