To install the backend pages and register the widgets in the toolbox, add the following method:
public override void Install(SiteInitializer initializer)
{
#region Install Pages
// get page manager
var pageManager = initializer.PageManager;
// create Module Landing Page if doesn't exist
var landingPage = pageManager.GetPageNodes().SingleOrDefault(p => p.Id == this.LandingPageId);
if (landingPage == null)
{
// create admin list view control and add to new landing page
var ctrl = pageManager.CreateControl<PageControl>("~/Modules/Testimonials/Admin/TestimonialsAdminView.ascx", "Content");
CreatePage(pageManager, LandingPageId, SiteInitializer.ModulesNodeId, TestimonialsModule.ModuleName, true, TestimonialsModule.ModuleName, ctrl);
}
// create testimonials "Create" Page if doesn't exist
var createPage = pageManager.GetPageNodes().SingleOrDefault(p => p.Id == this.CreatePageId);
if (createPage == null)
{
// create admin control, set properties
var ctrl = pageManager.CreateControl<PageControl>("~/Modules/Testimonials/Admin/TestimonialsAddEditView.ascx", "Content");
var prop = ctrl.Properties.FirstOrDefault(p => p.Name == "Mode");
if (prop == null)
{
prop = new ControlProperty();
prop.Id = Guid.NewGuid();
prop.Name = "Mode";
ctrl.Properties.Add(prop);
}
// set control to "Create" mode
prop.Value = SitefinityWebApp.Modules.Testimonials.Admin.TestimonialsAddEditView.AdminControlMode.Create.ToString();
// create backend page and add control
CreatePage(pageManager, CreatePageId, LandingPageId, "Create", false, "Create Testimonial", ctrl);
}
// create testimonials "Edit" Page if doesn't exist
var editPage = pageManager.GetPageNodes().SingleOrDefault(p => p.Id == this.EditPageId);
if (editPage == null)
{
// create admin control, set properties
var ctrl = pageManager.CreateControl<PageControl>("~/Modules/Testimonials/Admin/TestimonialsAddEditView.ascx", "Content");
var prop = ctrl.Properties.FirstOrDefault(p => p.Name == "Mode");
if (prop == null)
{
prop = new ControlProperty();
prop.Id = Guid.NewGuid();
prop.Name = "Mode";
ctrl.Properties.Add(prop);
}
// set control to "Create" mode
prop.Value = SitefinityWebApp.Modules.Testimonials.Admin.TestimonialsAddEditView.AdminControlMode.Edit.ToString();
// create backend page and add control
CreatePage(pageManager, EditPageId, LandingPageId, "Edit", false, "Edit Testimonial", ctrl);
}
#endregion
#region Register Toolbox Widget
string toolboxName = "PageControls";
string sectionName = "Samples";
var config = initializer.Context.GetConfig<ToolboxesConfig>();
var controls = config.Toolboxes[toolboxName];
var section = controls.Sections.Where<ToolboxSection>(e => e.Name == sectionName).FirstOrDefault();
if (section == null)
{
section = new ToolboxSection(controls.Sections)
{
Name = sectionName,
Title = sectionName,
Description = sectionName,
ResourceClassId = typeof(PageResources).Name
};
controls.Sections.Add(section);
}
// Add TestimonialsView Widget if doesn't exist
if (!section.Tools.Any<ToolboxItem>(e => e.Name == TestimonialsView.ViewName))
{
var tool = new ToolboxItem(section.Tools)
{
Name = TestimonialsView.ViewName,
Title = "TestimonialsView",
Description = "Public control for the Testimonials module",
ControlType = "~/Modules/Testimonials/TestimonialsView.ascx",
CssClass = "sfTestimonialsWidget"
};
section.Tools.Add(tool);
}
// Add SubmitTestimonial Widget if doesn't exist
if (!section.Tools.Any<ToolboxItem>(e => e.Name == SubmitTestimonial.ViewName))
{
var tool = new ToolboxItem(section.Tools)
{
Name = SubmitTestimonial.ViewName,
Title = "SubmitTestimonial",
Description = "Public control for submitting Testimonial",
ControlType = "~/Modules/Testimonials/SubmitTestimonial.ascx",
CssClass = "sfTestimonialsWidget"
};
section.Tools.Add(tool);
}
#endregion
}