in code/src/UI/ViewModels/NewProject/UserSelectionViewModel.cs [85:163]
public IEnumerable<string> GetPageNames()
=> Groups.First(g => g.TemplateType == TemplateType.Page).GetNames(p => p.ItemNameEditable);
public async Task AddAsync(TemplateOrigin templateOrigin, TemplateInfoViewModel template, string layoutName = null, bool isReadOnly = false)
{
if (template.Exclusions.Any())
{
var exlusionsTemplateNames = AllTemplates.Where(t => template.Exclusions.Select(e => e.Identity).Contains(t.Identity)).Select(t => t.Template.Name).Distinct();
if (exlusionsTemplateNames.Any())
{
await ShowAddTemplateExclusionsNotificationAsync(template.Name, exlusionsTemplateNames);
return;
}
}
if (template.Requirements.Any())
{
if (!AllTemplates.Any(t => template.Requirements.Select(r => r.Identity).Contains(t.Identity)))
{
await ShowAddTemplateWithRequirementNotificationAsync(template.Name, template.Requirements.Select(r => r.Name));
return;
}
}
if (template.IsGroupExclusiveSelection)
{
var collection = GetCollection(template.TemplateType);
var exclusiveSelectionAddedTemplates = collection.Where(f => f.Group == template.Group).ToList();
foreach (var exclusiveFeature in exclusiveSelectionAddedTemplates)
{
await RemoveAsync(exclusiveFeature);
}
}
foreach (var dependency in template.Template.Dependencies)
{
var dependencyTemplate = MainViewModel.Instance.GetTemplate(dependency);
if (dependencyTemplate == null)
{
// Case of hidden templates, it's not found on templat lists
dependencyTemplate = new TemplateInfoViewModel(dependency, _context);
}
await AddAsync(templateOrigin, dependencyTemplate);
}
template.IncreaseSelection();
var savedTemplate = new SavedTemplateViewModel(template, templateOrigin, isReadOnly);
var focus = false;
if (!IsTemplateAdded(template) || template.MultipleInstance)
{
if (!string.IsNullOrEmpty(layoutName))
{
savedTemplate.SetName(layoutName, true);
}
else
{
if (template.ItemNameEditable)
{
savedTemplate.SetName(ValidationService.InferTemplateName(template.Name));
focus = true;
}
else
{
savedTemplate.SetName(template.Template.DefaultName);
}
}
AddToGroup(template.TemplateType, savedTemplate);
UpdateHasItemsAddedByUser();
BuildLicenses();
CheckForMissingVersions();
if (focus)
{
savedTemplate.IsTextSelected = true;
}
}
}