in code/src/CoreTemplateStudio/CoreTemplateStudio.Core/Templates/TemplatesRepository.cs [246:292]
public IEnumerable<LayoutInfo> GetLayoutTemplates(UserSelectionContext context)
{
if (string.IsNullOrEmpty(context.ProjectType))
{
throw new ArgumentNullException(nameof(context.ProjectType));
}
var projectTemplates = GetTemplates(TemplateType.Project, context);
foreach (var projectTemplate in projectTemplates)
{
var layout = projectTemplate?
.GetLayout()
.Where(l => l.ProjectType == null || l.ProjectType.GetMultiValue().Contains(context.ProjectType));
if (layout != null)
{
foreach (var item in layout)
{
var template = Find(t => t.GroupIdentity == item.TemplateGroupIdentity
&& (t.GetProjectTypeList().Contains(context.ProjectType) || t.GetProjectTypeList().Contains(All))
&& IsMatchFrontEnd(t, context.FrontEndFramework)
&& IsMatchBackEnd(t, context.BackEndFramework)
&& IsMatchPropertyBag(t, context.PropertyBag)
&& t.GetPlatform() == context.Platform);
if (template == null)
{
LogOrAlertException(string.Format(StringRes.ErrorLayoutNotFound, item.TemplateGroupIdentity, context.FrontEndFramework, context.BackEndFramework, context.Platform));
}
else
{
var templateType = template.GetTemplateType();
if (!templateType.IsItemTemplate())
{
LogOrAlertException(string.Format(StringRes.ErrorLayoutType, template.Identity));
}
else
{
var templateInfo = GetTemplateInfo(template, context);
yield return new LayoutInfo() { Layout = item, Template = templateInfo };
}
}
}
}
}
}