@@ -405,6 +405,23 @@ private IContentType CreateContentTypeFromXml(XElement documentType)
405
405
if ( parent != null )
406
406
contentType . AddContentType ( parent ) ;
407
407
408
+ var compositionsElement = infoElement . Element ( "Compositions" ) ;
409
+ if ( compositionsElement != null && compositionsElement . HasElements )
410
+ {
411
+ var compositions = compositionsElement . Elements ( "Composition" ) ;
412
+ if ( compositions . Any ( ) )
413
+ {
414
+ foreach ( var composition in compositions )
415
+ {
416
+ var compositionAlias = composition . Value ;
417
+ var compositionContentType = _importedContentTypes . ContainsKey ( compositionAlias )
418
+ ? _importedContentTypes [ compositionAlias ]
419
+ : _contentTypeService . GetContentType ( compositionAlias ) ;
420
+ var added = contentType . AddContentType ( compositionContentType ) ;
421
+ }
422
+ }
423
+ }
424
+
408
425
return UpdateContentTypeFromXml ( documentType , contentType ) ;
409
426
}
410
427
@@ -417,15 +434,47 @@ private IContentType UpdateContentTypeFromXml(XElement documentType, IContentTyp
417
434
contentType . Icon = infoElement . Element ( "Icon" ) . Value ;
418
435
contentType . Thumbnail = infoElement . Element ( "Thumbnail" ) . Value ;
419
436
contentType . Description = infoElement . Element ( "Description" ) . Value ;
437
+
420
438
//NOTE AllowAtRoot is a new property in the package xml so we need to verify it exists before using it.
421
439
var allowAtRoot = infoElement . Element ( "AllowAtRoot" ) ;
422
440
if ( allowAtRoot != null )
423
441
contentType . AllowedAsRoot = allowAtRoot . Value . InvariantEquals ( "true" ) ;
442
+
424
443
//NOTE IsListView is a new property in the package xml so we need to verify it exists before using it.
425
444
var isListView = infoElement . Element ( "IsListView" ) ;
426
445
if ( isListView != null )
427
446
contentType . IsContainer = isListView . Value . InvariantEquals ( "true" ) ;
428
447
448
+ //Name of the master corresponds to the parent and we need to ensure that the Parent Id is set
449
+ var masterElement = infoElement . Element ( "Master" ) ;
450
+ if ( masterElement != null )
451
+ {
452
+ var masterAlias = masterElement . Value ;
453
+ IContentType parent = _importedContentTypes . ContainsKey ( masterAlias )
454
+ ? _importedContentTypes [ masterAlias ]
455
+ : _contentTypeService . GetContentType ( masterAlias ) ;
456
+
457
+ contentType . SetLazyParentId ( new Lazy < int > ( ( ) => parent . Id ) ) ;
458
+ }
459
+
460
+ //Update Compositions on the ContentType to ensure that they are as is defined in the package xml
461
+ var compositionsElement = infoElement . Element ( "Compositions" ) ;
462
+ if ( compositionsElement != null && compositionsElement . HasElements )
463
+ {
464
+ var compositions = compositionsElement . Elements ( "Composition" ) ;
465
+ if ( compositions . Any ( ) )
466
+ {
467
+ foreach ( var composition in compositions )
468
+ {
469
+ var compositionAlias = composition . Value ;
470
+ var compositionContentType = _importedContentTypes . ContainsKey ( compositionAlias )
471
+ ? _importedContentTypes [ compositionAlias ]
472
+ : _contentTypeService . GetContentType ( compositionAlias ) ;
473
+ var added = contentType . AddContentType ( compositionContentType ) ;
474
+ }
475
+ }
476
+ }
477
+
429
478
UpdateContentTypesAllowedTemplates ( contentType , infoElement . Element ( "AllowedTemplates" ) , defaultTemplateElement ) ;
430
479
UpdateContentTypesTabs ( contentType , documentType . Element ( "Tabs" ) ) ;
431
480
UpdateContentTypesProperties ( contentType , documentType . Element ( "GenericProperties" ) ) ;
0 commit comments