Example #1
0
        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&rsquo;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));
        }
Example #2
0
        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;
                        }
                    }
                }
            }
        }