2012-05-04 22 views
2

使用Umbraco 5.1 API, 我可以使用下面的代碼創建一個新的內容類型(用於在內容選項卡下創建內容節點)。使用Umbraco 5.1流利的API編程式創建新的媒體類型

// create content type 
var typeBuilder = context.Hive.Cms().NewContentType("testType", "Test Type") 
      .Define("value", "contentPicker", "Content") 
      .Commit(); 

// create content node 
var packageNode = context.Hive.Cms().NewRevision(packageNodeName, packageNodeName, "testType"); 
     packageNode.SetUploadedFile("value", postedFile);    
     packageNode.Publish(); 
     packageNode.Commit(); 

但是有沒有辦法使用流利的API來創建媒體節點?我需要在媒體選項卡樹中使用自定義類型創建新的自定義媒體節點。 我曾嘗試下面的方法,但他們都不工作

1) context.Hive.Cms().NewRevision(); 
2) context.Hive.Cms<IMediaStore>().NewRevision(); 
3) builderStep.NewRevision<Media, IMediaStore>(); 
4) builderStep.NewRevision<TypedEntity, IMediaStore>(); 

回答

0

這工作,但由此產生的媒體類型是不完整的,因爲它拋出一個錯誤「的名字應該被指定爲」當我嘗試手動使用這種類型創建媒體。

CmsBuilderStep<IMediaStore> builderStep = new CmsBuilderStep<IMediaStore>(context.Hive); 
var typeBuilder = builderStep.NewMediaType<EntitySchema, IMediaStore>("testType")     
       .Define("package", "uploader", "General Properties") 
       .Commit(); 

最後,我決定手動創建的媒體類型,並使用下面的代碼通過代碼來創建媒體項

 // Creating a new Media item using the scorm package zip file. 
     var packageNode = context.Hive.Cms<IContentStore>().NewRevision(packageNodeName, packageNodeName, "testType") 
     .SetUploadedFile("package", postedFile) 

     // set parent to media root folder - this is what makes it come under media tree 
     .SetParent(FixedHiveIds.MediaVirtualRoot) 
     .Publish() 
     .Commit();