public void InjectPrefab(RenderingItem prefabProxy, DeviceDefinition deviceLayout, string placeholderPath, int index, Item pageItem) { var getItemArgs = new PrefabsGetItemArgs { DeviceLayout = deviceLayout, DestinationPlaceholderPath = placeholderPath, PrefabProxy = prefabProxy, PageItem = pageItem }; CorePipeline.Run("prefabsGetItem", getItemArgs); if (!getItemArgs.Handled || getItemArgs.Result == null) { throw new System.Exception($"Prefab not found"); } var getRenderingsArgs = new PrefabGetRenderingsArgs { Prefab = getItemArgs.Result, DeviceLayout = deviceLayout, DestinationPlaceholderPath = placeholderPath, PrefabProxy = prefabProxy, PageItem = pageItem, Index = index }; CorePipeline.Run("prefabGetRenderings", getRenderingsArgs); if (!getRenderingsArgs.Handled) { throw new System.Exception($"Prefab had no renderings to add"); } getRenderingsArgs.Reuse(); CorePipeline.Run("prefabApplyRenderings", getRenderingsArgs); }
/// <summary> /// Assume convention that rendering name matches prefab name /// Lookup item from defined global repository /// </summary> /// <param name="args"></param> public override void Process(PrefabsGetItemArgs args) { if (args.Handled) { return; } using (new SecurityDisabler()) { var globalFolder = args.PrefabProxy.Database.GetItem(Config.Paths.Prefabs); var result = globalFolder?.Axes.GetDescendant(args.PrefabProxy.Name); if (result == null) { return; } args.Result = result; args.AbortPipeline(); } }
public abstract void Process(PrefabsGetItemArgs args);