protected void Run(ClientPipelineArgs args) { Assert.ArgumentNotNull(args, "args"); if (!args.IsPostBack) { SheerResponse.Input("Name: ", "New Prefab", "New Prefab"); args.WaitForPostBack(); } else if (args.HasResult) { var name = args.Result; var pageId = args.Parameters["id"]; var uniqueId = args.Parameters["referenceId"]; var renderingId = args.Parameters["renderingId"]; var db = Client.ContentDatabase; LayoutDefinition layoutDefinition = GetCurrentLayoutDefinition(); var deviceId = WebEditUtil.GetClientDeviceId(); if (layoutDefinition == null || ID.IsNullOrEmpty(deviceId)) { SheerResponse.Alert("Action failed. Unable to find presentation details."); return; } var deviceRenderings = layoutDefinition?.GetDevice(deviceId.ToString()); if (deviceRenderings?.Renderings == null) { SheerResponse.Alert("Action failed. Unable to find current device."); return; } var index = GetIndex(deviceRenderings, uniqueId); if (index == -1) { SheerResponse.Alert("Action failed. Unable to find selected rendering"); return; } var item = UIUtil.GetItemFromQueryString(db); // Create prefab var prefab = _prefabService.CreatePrefab(name, deviceRenderings, index, item); SheerResponse.Alert("Prefab Created"); if (Config.Sxa.IsEnabled) // reload so toolbox shows new prefab { SheerResponse.Eval("window.parent.location.reload();"); } // TODO: Go Edit Prefab? return; } }
protected void PrefabCreate(ClientPipelineArgs args) { Assert.ArgumentNotNull(args, "args"); int selectedIndex = this.SelectedIndex; if (selectedIndex < 0) { return; } LayoutDefinition layoutDefinition = GetLayoutDefinition_exposed(); var deviceRenderings = layoutDefinition.GetDevice(this.DeviceID); if (deviceRenderings?.Renderings == null) { return; } if (selectedIndex < 0 || selectedIndex >= deviceRenderings.Renderings.Count) { return; } if (!args.IsPostBack) { SheerResponse.Input("Name: ", "New Prefab", "New Prefab"); args.WaitForPostBack(); } else if (args.HasResult) { var name = args.Result; var item = UIUtil.GetItemFromQueryString(Client.ContentDatabase); // manipulate layoutDefinition via device reference var prefab = _prefabService.CreatePrefab(name, deviceRenderings, this.SelectedIndex, item); SheerResponse.Alert("Prefab Created"); // TODO: Go Edit Prefab? return; } }