public ActionResult FacultyDirectoryCorporateProfile() { FacultyDirectoryCorporateProfile facultyProfile = new FacultyDirectoryCorporateProfile(); facultyProfile.rendering = Sitecore.Mvc.Presentation.RenderingContext.CurrentOrNull.Rendering; facultyProfile.pageItem = PageContext.Current.Item; facultyProfile.showError = ""; try { // Set datasource if it is empty if (String.IsNullOrEmpty(facultyProfile.rendering.DataSource)) { using (new Sitecore.SecurityModel.SecurityDisabler()) { //Get current rendering item Sitecore.Layouts.RenderingReference[] renderings = facultyProfile.pageItem.Visualization.GetRenderings(Sitecore.Context.Device, true).Where(r => r.RenderingID == facultyProfile.rendering.RenderingItem.ID).ToArray(); // Get the layout definitions and the device Sitecore.Data.Fields.LayoutField layoutField = new Sitecore.Data.Fields.LayoutField(facultyProfile.pageItem.Fields[Sitecore.FieldIDs.FinalLayoutField]); Sitecore.Layouts.LayoutDefinition layoutDefinition = Sitecore.Layouts.LayoutDefinition.Parse(layoutField.Value); Sitecore.Layouts.DeviceDefinition deviceDefinition = layoutDefinition.GetDevice(Sitecore.Context.Device.ID.ToString()); foreach (Sitecore.Layouts.RenderingReference rendering in renderings) { // Update the renderings datasource value as current item path deviceDefinition.GetRendering(rendering.RenderingID.ToString()).Datasource = facultyProfile.pageItem.ID.ToString(); // Save the layout changes facultyProfile.pageItem.Editing.BeginEdit(); layoutField.Value = layoutDefinition.ToXml(); facultyProfile.pageItem.Editing.EndEdit(); } } } Sitecore.Marketing.Wildcards.WildcardTokenizedString wts = Sitecore.Marketing.Wildcards.WildcardManager.Provider.GetWildcardUrl(facultyProfile.PageItem, Sitecore.Context.Site); System.Collections.Specialized.NameValueCollection tokens = wts.FindTokenValues(Request.Path.ToLower().Replace(' ', '-')); facultyProfile.strPID = tokens["%Person_ID%"]; if (facultyProfile.strPID != null) { facultyProfile.validId = Int32.TryParse(facultyProfile.strPID, out facultyProfile.personID); } if (facultyProfile.validId && !Sitecore.Context.PageMode.IsExperienceEditorEditing) { facultyProfile.person = new HealthIS.Apps.FacultyDirectory.Profile(facultyProfile.personID, HealthIS.Apps.FacultyDirectory.Profile.ProfileType.Research, HealthIS.Apps.FacultyDirectory.Profile.ProfileParts.All); } } catch (Exception ex) { facultyProfile.showError = "Sorry for the inconvenience.<br />We’re performing some maintenance at the moment."; Sitecore.Diagnostics.Log.SingleWarn("Error from faculty profile page at " + Request.Url.Host + " - " + ex.Message, this); facultyProfile.person = null; } return(PartialView(facultyProfile)); }
public override void Process(GetChromeDataArgs args) { Assert.ArgumentNotNull(args, "args"); Assert.IsNotNull(args.ChromeData, "Chrome Data"); if ("placeholder".Equals(args.ChromeType, StringComparison.OrdinalIgnoreCase)) { string placeholderKey = args.CustomData["placeHolderKey"] as string; Sitecore.Data.Fields.LayoutField layoutField = new Sitecore.Data.Fields.LayoutField(Context.Item.Fields[Sitecore.FieldIDs.FinalLayoutField]); LayoutDefinition layoutDefinition = LayoutDefinition.Parse(layoutField.Value); DeviceDefinition deviceDefinition = layoutDefinition.GetDevice(Context.Device.ID.ToString()); // Initial repository path is "/sitecore/system/Modules/USF Health Restriction Manager/Remove Delete Button" Item removeDeleteButtonItem = Context.Item.Database.GetItem("/sitecore/system/Modules/USF Health Restriction Manager/Remove Delete Button"); if (removeDeleteButtonItem == null) { Assert.IsNull(removeDeleteButtonItem, "Item is null"); return; } MultilistField listOfRenderingItems = removeDeleteButtonItem.Fields["List of Rendering Items"]; string listOfUserRoles = removeDeleteButtonItem.Fields["List of User Roles"].Value.Trim(); List <string> eachListOfUserRoles = listOfUserRoles.Split(';').ToList(); // Remove "Delete" button in placeholder if (eachListOfUserRoles.Where(e => User.Current.IsInRole(e)).Any()) { args.ChromeData.Custom["removeAddHereButton"] = true; foreach (ID renderingItemId in listOfRenderingItems.TargetIDs) { RenderingItem r = RenderingItem.GetItem(renderingItemId, Context.Data.Database, true); string renderingName = Regex.Replace(r.Name.ToLower(), @"\s+", ""); string displayName = Regex.Replace(args.ChromeData.DisplayName.ToLower(), @"\s+", ""); // Only when rendering name matches to its display name // Only when rendering item's display name contains rendering name // Only when master rendering item has 'Main Layout' placeholder key if (renderingName == displayName || displayName.Contains(renderingName) || (r.Name.ToLower().Contains(" master") && displayName == "mainlayout")) { args.ChromeData.Custom["editable"] = false; } } } } }