commit
ee3a4d1624
@ -54,16 +54,26 @@ namespace Oqtane.Repository
|
|||||||
) continue;
|
) continue;
|
||||||
|
|
||||||
string themeNamespace = themeControlType.Namespace;
|
string themeNamespace = themeControlType.Namespace;
|
||||||
string qualifiedModuleType = themeNamespace + ", " + themeControlType.Assembly.GetName().Name;
|
// 2dm disabled - not used anywhere in code
|
||||||
|
//string qualifiedModuleType = themeNamespace + ", " + themeControlType.Assembly.GetName().Name;
|
||||||
|
|
||||||
int index = themes.FindIndex(item => item.ThemeName == themeNamespace);
|
int index = themes.FindIndex(item => item.ThemeName == themeNamespace);
|
||||||
|
|
||||||
|
// Find all types in the assembly which have the same namespace-root as the theme file
|
||||||
|
// Check with "." in the end to
|
||||||
|
List<Type> typesInTheme = assembly.GetTypes()
|
||||||
|
.Where(item => item.Namespace != null)
|
||||||
|
// Namespace must be the same or start with "xxx." to ensure that
|
||||||
|
// similar namespaces like "MyTheme" and "MyTheme2" don't match in StartsWith(...)
|
||||||
|
.Where(item => item.Namespace == themeNamespace
|
||||||
|
|| item.Namespace.StartsWith(themeNamespace + "."))
|
||||||
|
.ToList();
|
||||||
|
|
||||||
if (index == -1)
|
if (index == -1)
|
||||||
{
|
{
|
||||||
// determine if this theme implements ITheme
|
// determine if this theme implements ITheme
|
||||||
Type themetype = assembly.GetTypes()
|
Type themetype = typesInTheme
|
||||||
.Where(item => item.Namespace != null)
|
.FirstOrDefault(item => item.GetInterfaces().Contains(typeof(ITheme)));
|
||||||
.Where(item => item.Namespace.StartsWith(themeNamespace))
|
|
||||||
.Where(item => item.GetInterfaces().Contains(typeof(ITheme))).FirstOrDefault();
|
|
||||||
if (themetype != null)
|
if (themetype != null)
|
||||||
{
|
{
|
||||||
var themeobject = Activator.CreateInstance(themetype) as ITheme;
|
var themeobject = Activator.CreateInstance(themetype) as ITheme;
|
||||||
@ -90,9 +100,7 @@ namespace Oqtane.Repository
|
|||||||
theme.ThemeControls += (themeControlType.FullName + ", " + themeControlType.Assembly.GetName().Name + ";");
|
theme.ThemeControls += (themeControlType.FullName + ", " + themeControlType.Assembly.GetName().Name + ";");
|
||||||
|
|
||||||
// layouts
|
// layouts
|
||||||
Type[] layouttypes = assembly.GetTypes()
|
Type[] layouttypes = typesInTheme
|
||||||
.Where(item => item.Namespace != null)
|
|
||||||
.Where(item => item.Namespace.StartsWith(themeNamespace))
|
|
||||||
.Where(item => item.GetInterfaces().Contains(typeof(ILayoutControl))).ToArray();
|
.Where(item => item.GetInterfaces().Contains(typeof(ILayoutControl))).ToArray();
|
||||||
foreach (Type layouttype in layouttypes)
|
foreach (Type layouttype in layouttypes)
|
||||||
{
|
{
|
||||||
@ -104,9 +112,7 @@ namespace Oqtane.Repository
|
|||||||
}
|
}
|
||||||
|
|
||||||
// containers
|
// containers
|
||||||
Type[] containertypes = assembly.GetTypes()
|
Type[] containertypes = typesInTheme
|
||||||
.Where(item => item.Namespace != null)
|
|
||||||
.Where(item => item.Namespace.StartsWith(themeNamespace))
|
|
||||||
.Where(item => item.GetInterfaces().Contains(typeof(IContainerControl))).ToArray();
|
.Where(item => item.GetInterfaces().Contains(typeof(IContainerControl))).ToArray();
|
||||||
foreach (Type containertype in containertypes)
|
foreach (Type containertype in containertypes)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user