Merge pull request #1045 from hishamco/language-management

Add Languages Management
This commit is contained in:
Shaun Walker
2021-01-18 08:30:31 -05:00
committed by GitHub
14 changed files with 410 additions and 4 deletions

View File

@ -1,4 +1,4 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.EntityFrameworkCore;
using Oqtane.Models;
@ -21,6 +21,8 @@ namespace Oqtane.Repository
public virtual DbSet<Folder> Folder { get; set; }
public virtual DbSet<File> File { get; set; }
public virtual DbSet<Language> Language { get; set; }
public TenantDBContext(ITenantResolver tenantResolver, IHttpContextAccessor accessor) : base(tenantResolver, accessor)
{
// DBContextBase handles multi-tenant database connections

View File

@ -0,0 +1,16 @@
using System.Collections.Generic;
using Oqtane.Models;
namespace Oqtane.Repository
{
public interface ILanguageRepository
{
IEnumerable<Language> GetLanguages(int siteId);
Language AddLanguage(Language language);
Language GetLanguage(int languageId);
void DeleteLanguage(int languageId);
}
}

View File

@ -0,0 +1,41 @@
using System.Collections.Generic;
using System.Linq;
using Oqtane.Models;
namespace Oqtane.Repository
{
public class LanguageRepository : ILanguageRepository
{
private TenantDBContext _db;
public LanguageRepository(TenantDBContext context)
{
_db = context;
}
public IEnumerable<Language> GetLanguages(int siteId) => _db.Language.Where(l => l.SiteId == siteId);
public Language AddLanguage(Language language)
{
if (language.IsCurrent)
{
// Ensure all other languages are not set to current
_db.Language.ToList().ForEach(l => l.IsCurrent = false);
}
_db.Language.Add(language);
_db.SaveChanges();
return language;
}
public Language GetLanguage(int languageId) => _db.Language.Find(languageId);
public void DeleteLanguage(int languageId)
{
var language = _db.Language.Find(languageId);
_db.Language.Remove(language);
_db.SaveChanges();
}
}
}

View File

@ -502,6 +502,37 @@ namespace Oqtane.Repository
}
});
pageTemplates.Add(new PageTemplate
{
Name = "Language Management",
Parent = "Admin",
Path = "admin/languages",
Icon = Icons.Text,
IsNavigation = false,
IsPersonalizable = false,
PagePermissions = new List<Permission>
{
new Permission(PermissionNames.View, RoleNames.Host, true),
new Permission(PermissionNames.Edit, RoleNames.Host, true),
new Permission(PermissionNames.View, RoleNames.Admin, true),
new Permission(PermissionNames.Edit, RoleNames.Admin, true)
}.EncodePermissions(),
PageTemplateModules = new List<PageTemplateModule>
{
new PageTemplateModule
{
ModuleDefinitionName = typeof(Oqtane.Modules.Admin.Languages.Index).ToModuleDefinitionName(), Title = "Language Management", Pane = "Content",
ModulePermissions = new List<Permission>
{
new Permission(PermissionNames.View, RoleNames.Host, true),
new Permission(PermissionNames.Edit, RoleNames.Host, true),
new Permission(PermissionNames.View, RoleNames.Admin, true),
new Permission(PermissionNames.Edit, RoleNames.Admin, true)
}.EncodePermissions(),
Content = ""
}
}
});
pageTemplates.Add(new PageTemplate
{
Name = "Scheduled Jobs", Parent = "Admin", Path = "admin/jobs", Icon = Icons.Timer, IsNavigation = false, IsPersonalizable = false,
PagePermissions = new List<Permission>