Creating a custom module for Orchard

Posted by Moran Monovich on Stack Overflow See other posts from Stack Overflow or by Moran Monovich
Published on 2012-06-03T09:43:55Z Indexed on 2012/06/03 16:40 UTC
Read the original article Hit count: 194

Filed under:
|
|

I created a custom module using this guide from Orchard documentation, but for some reason I can't see the fields in the content type when I want to create a new one.

this is my model:

public class CustomerPartRecord : ContentPartRecord
{
    public virtual string FirstName { get; set; }
    public virtual string LastName { get; set; }
    public virtual int PhoneNumber { get; set; }
    public virtual string Address { get; set; }
    public virtual string Profession { get; set; }
    public virtual string ProDescription { get; set; }
    public virtual int Hours { get; set; }
}
public class CustomerPart : ContentPart<CustomerPartRecord>
{

    [Required(ErrorMessage="you must enter your first name")]
    [StringLength(200)]
    public string FirstName { get { return Record.FirstName; } set { Record.FirstName = value; } }

    [Required(ErrorMessage = "you must enter your last name")]
    [StringLength(200)]
    public string LastName { get { return Record.LastName; } set { Record.LastName = value; } }

    [Required(ErrorMessage = "you must enter your phone number")]
    [DataType(DataType.PhoneNumber)]
    public int PhoneNumber { get { return Record.PhoneNumber; } set { Record.PhoneNumber = value; } }

    [StringLength(200)]
    public string Address { get { return Record.Address; } set { Record.Address = value; } }

    [Required(ErrorMessage = "you must enter your profession")]
    [StringLength(200)]
    public string Profession { get { return Record.Profession; } set { Record.Profession = value; } }

    [StringLength(500)]
    public string ProDescription { get { return Record.ProDescription; } set { Record.ProDescription = value; } }

    [Required(ErrorMessage = "you must enter your hours")]
    public int Hours { get { return Record.Hours; } set { Record.Hours = value; } }
}

this is the Handler:

class CustomerHandler : ContentHandler
{
    public CustomerHandler(IRepository<CustomerPartRecord> repository)
    {
        Filters.Add(StorageFilter.For(repository));
    }
}

the Driver:

class CustomerDriver : ContentPartDriver<CustomerPart>
{
    protected override DriverResult Display(CustomerPart part, string displayType, dynamic shapeHelper)
    {
        return ContentShape("Parts_Customer", () => shapeHelper.Parts_BankCustomer(
            FirstName: part.FirstName,
            LastName: part.LastName,
            PhoneNumber: part.PhoneNumber,
            Address: part.Address,
            Profession: part.Profession,
            ProDescription: part.ProDescription,
            Hours: part.Hours));
    }
    //GET
    protected override DriverResult Editor(CustomerPart part, dynamic shapeHelper)
    {
        return ContentShape("Parts_Customer", () => shapeHelper.EditorTemplate(
            TemplateName:"Parts/Customer",
            Model: part,
            Prefix: Prefix));
    }
    //POST
    protected override DriverResult Editor(CustomerPart part, IUpdateModel updater, dynamic shapeHelper)
    {
        updater.TryUpdateModel(part, Prefix, null, null);
        return Editor(part, shapeHelper);
    }

the migration:

public class Migrations : DataMigrationImpl
{
    public int Create()
    {
        // Creating table CustomerPartRecord
        SchemaBuilder.CreateTable("CustomerPartRecord", table => table
            .ContentPartRecord()
            .Column("FirstName", DbType.String)
            .Column("LastName", DbType.String)
            .Column("PhoneNumber", DbType.Int32)
            .Column("Address", DbType.String)
            .Column("Profession", DbType.String)
            .Column("ProDescription", DbType.String)
            .Column("Hours", DbType.Int32)
        );
        return 1;
    }
    public int UpdateFrom1()
    {
        ContentDefinitionManager.AlterPartDefinition("CustomerPart",
          builder => builder.Attachable());
        return 2;
    }
    public int UpdateFrom2()
    {
        ContentDefinitionManager.AlterTypeDefinition("Customer", cfg => cfg
          .WithPart("CommonPart")
          .WithPart("RoutePart")
          .WithPart("BodyPart")
          .WithPart("CustomerPart")
          .WithPart("CommentsPart")
          .WithPart("TagsPart")
          .WithPart("LocalizationPart")
          .Creatable()
          .Indexed());
        return 3;
    }

}

Can someone please tell me if I am missing something?

© Stack Overflow or respective owner

Related posts about asp.net-mvc

Related posts about module