alias management improvements
This commit is contained in:
@ -8,9 +8,9 @@ namespace Oqtane.Migrations.Master
|
||||
{
|
||||
[DbContext(typeof(MasterDBContext))]
|
||||
[Migration("Master.03.00.02.01")]
|
||||
public class AddAliasRedirect : MultiDatabaseMigration
|
||||
public class AddAliasIsDefault : MultiDatabaseMigration
|
||||
{
|
||||
public AddAliasRedirect(IDatabase database) : base(database)
|
||||
public AddAliasIsDefault(IDatabase database) : base(database)
|
||||
{
|
||||
}
|
||||
|
||||
@ -19,7 +19,7 @@ namespace Oqtane.Migrations.Master
|
||||
//Add Column to Alias table
|
||||
var aliasEntityBuilder = new AliasEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
aliasEntityBuilder.AddBooleanColumn("IsDefault", true);
|
||||
aliasEntityBuilder.UpdateColumn("IsDefault", "1", "bool", "");
|
||||
aliasEntityBuilder.UpdateColumn("IsDefault", "0", "bool", "");
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
@ -86,12 +86,17 @@ namespace Oqtane.Pages
|
||||
// redirect non-default alias
|
||||
if (!alias.IsDefault)
|
||||
{
|
||||
var redirect = _aliases.GetAliases()
|
||||
.Where(item => item.TenantId == alias.TenantId && item.SiteId == alias.SiteId && item.IsDefault)
|
||||
.FirstOrDefault();
|
||||
if (redirect != null)
|
||||
var aliases = _aliases.GetAliases().Where(item => item.TenantId == alias.TenantId && item.SiteId == alias.SiteId);
|
||||
if (aliases.Where(item => item.IsDefault).FirstOrDefault() != null)
|
||||
{
|
||||
return RedirectPermanent(url.Replace(alias.Name, redirect.Name));
|
||||
return RedirectPermanent(url.Replace(alias.Name, aliases.Where(item => item.IsDefault).FirstOrDefault().Name));
|
||||
}
|
||||
else // no default specified - use first alias
|
||||
{
|
||||
if (alias.Name.Trim() != aliases.First().Name.Trim())
|
||||
{
|
||||
return RedirectPermanent(url.Replace(alias.Name, aliases.First().Name));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -303,7 +308,7 @@ namespace Oqtane.Pages
|
||||
var obj = Activator.CreateInstance(type) as IHostResources;
|
||||
foreach (var resource in obj.Resources)
|
||||
{
|
||||
ProcessResource(resource);
|
||||
ProcessResource(resource, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -323,7 +328,7 @@ namespace Oqtane.Pages
|
||||
{
|
||||
if (resource.Declaration == ResourceDeclaration.Global)
|
||||
{
|
||||
ProcessResource(resource);
|
||||
ProcessResource(resource, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -341,24 +346,25 @@ namespace Oqtane.Pages
|
||||
var obj = Activator.CreateInstance(type) as IThemeControl;
|
||||
if (obj.Resources != null)
|
||||
{
|
||||
int count = 0; // required for local stylesheets for current theme
|
||||
foreach (var resource in obj.Resources)
|
||||
{
|
||||
if (resource.Declaration == ResourceDeclaration.Global || (Utilities.GetFullTypeName(type.AssemblyQualifiedName) == ThemeType && resource.ResourceType == ResourceType.Stylesheet))
|
||||
{
|
||||
ProcessResource(resource);
|
||||
ProcessResource(resource, count++);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private void ProcessResource(Resource resource)
|
||||
private void ProcessResource(Resource resource, int count)
|
||||
{
|
||||
switch (resource.ResourceType)
|
||||
{
|
||||
case ResourceType.Stylesheet:
|
||||
if (!HeadResources.Contains(resource.Url, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
var id = (resource.Declaration == ResourceDeclaration.Global) ? "" : "id=\"app-stylesheet-" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + "-00\" ";
|
||||
var id = (resource.Declaration == ResourceDeclaration.Global) ? "" : "id=\"app-stylesheet-" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + "-" + count.ToString("00") + "\" ";
|
||||
HeadResources += "<link " + id + "rel=\"stylesheet\" href=\"" + resource.Url + "\"" + CrossOrigin(resource.CrossOrigin) + Integrity(resource.Integrity) + " />" + Environment.NewLine;
|
||||
}
|
||||
break;
|
||||
|
Reference in New Issue
Block a user