public void FieldWithSpacesReturningNullIssue()
        {
            /*
             * This test is in response to issue 53 raised on the Glass.Sitecore.Mapper
             * project. When two interfaces have similar names are created as proxies
             * the method GetTypeConfiguration returns the wrong config.
             */


            //Assign
            string path = "/sitecore/content/Tests/Misc/FieldWithSpace";
            string expected = "Hello space";
            string imageValue =
                "<image mediaid=\"{C2CE5623-1E36-4535-9A01-669E1541DDAF}\" mediapath=\"/Tests/Dayonta\" src=\"~/media/C2CE56231E3645359A01669E1541DDAF.ashx\" />";

            var context = Context.Create(Utilities.CreateStandardResolver());
            context.Load(new SitecoreAttributeConfigurationLoader("Glass.Mapper.Sc.Integration"));

            var db = Sitecore.Configuration.Factory.GetDatabase("master");

            var item = db.GetItem(path);

            using (new ItemEditing(item, true))
            {
                item["Field With Space"] = expected;
                item["Image Field"] = imageValue;
            }
            
            var scContext = new SitecoreContext(db);

            var glassHtml = new GlassHtml(scContext);

            //Act
            var instance = scContext.GetItem<FieldWithSpaceIssue>(path);
           

            //Assert
            Assert.AreEqual(expected, instance.FieldWithSpace);
            Assert.IsNotNull(instance.ImageSpace);

        }
Exemple #2
0
        public void QueryRelative_RetrievesSiblings()
        {
            //Assign
            var db      = Sitecore.Configuration.Factory.GetDatabase("master");
            var context = Context.Create(Utilities.CreateStandardResolver());

            context.Load(new SitecoreAttributeConfigurationLoader("Glass.Mapper.Sc.Integration"));

            var path      = "/sitecore/content/Tests/SitecoreContext/QueryRelative/Source";
            var scContext = new SitecoreContext();

            Sitecore.Context.Item = db.GetItem(path);

            var target1 = db.GetItem("/sitecore/content/Tests/SitecoreContext/QueryRelative/Target1");
            var target2 = db.GetItem("/sitecore/content/Tests/SitecoreContext/QueryRelative/Target2");

            //Act
            var results = scContext.QueryRelative <StubClass>("../*");

            //Assert
            Assert.AreEqual(3, results.Count());
            Assert.IsTrue(results.Any(x => x.Id == target1.ID));
            Assert.IsTrue(results.Any(x => x.Id == target1.ID));
            Assert.IsTrue(results.Any(x => x.Id == Sitecore.Context.Item.ID));
        }
        public ActionResult GetAttraction()
        {
            var        context = new SitecoreContext();
            Attraction model   = GetDataSourceItem <Attraction>();

            return(View("~/Views/Museum/Main/_ThemesAndAttractions.cshtml", model));
        }
 public T GetItem(Item item)
 {
     using (var context = new SitecoreContext())
     {
         return(context.Cast <T>(item));
     }
 }
Exemple #5
0
        public ISitecoreContext GetSitecoreContext(Context context)
        {
            if (context == null)
            {
                Context providerContext = GlassContextProvider.GetContext();
                if (providerContext == null)
                {
                    throw new NotSupportedException("Sitecore Context Requires a Glass Context");
                }

                context = providerContext;
            }

            string cacheKey = String.Format("GlassContext_{0}_{1}", context.Name, CachedContextsKey);

            SitecoreContext sitecoreContext = Sitecore.Context.Items[cacheKey] as SitecoreContext;

            if (sitecoreContext == null)
            {
                string contextName = context.Name;
                sitecoreContext = new SitecoreContext(contextName);
                Sitecore.Context.Items[cacheKey] = sitecoreContext;
            }

            return(sitecoreContext);
        }
        public void QuerySingleRelative_RetrievesSibling()
        {
            //Assign
            using (Db database = new Db
            {
                new Sitecore.FakeDb.DbItem("QueryRelative")
                {
                    new Sitecore.FakeDb.DbItem("Source"),
                    new Sitecore.FakeDb.DbItem("Target1"),
                    new Sitecore.FakeDb.DbItem("Target2")
                }
            })
            {
                var context = Context.Create(Utilities.CreateStandardResolver());
                context.Load(new OnDemandLoader <SitecoreTypeConfiguration>(typeof(StubClass)));

                var path      = "/sitecore/content/QueryRelative/Source";
                var scContext = new SitecoreContext();

                Sitecore.Context.Item = database.GetItem(path);

                var target1 = database.GetItem("/sitecore/content/QueryRelative/Target1");

                //Act
                var result = scContext.QuerySingleRelative <StubClass>("../*[@@name='Target1']");

                //Assert
                Assert.AreEqual(target1.ID, result.Id);
            }
        }
Exemple #7
0
        public override void Initialize(Rendering rendering)
        {
            base.Initialize(rendering);
            var glassService = new SitecoreContext();

            // Set Current Site's Home Page Item
            HomePage = glassService.Cast <CoreInferred>(DatabaseContext.GetItem(Sitecore.Context.Site.StartPath), true, true) as CoreHome;
            if (HomePage == null || !HomePage.Children.Any())
            {
                return;
            }

            // Fill First level of content pages
            ContentPages = HomePage.Children.OfType <CoreFolder>().ToList();

            // Fill the Micro Sites
            var microSiteFolders = HomePage.Children.OfType <SiteFolder>().ToList();

            if (!microSiteFolders.Any())
            {
                return;
            }

            // Get home pages under Site Folder
            MicroSites = microSiteFolders.SelectMany(
                f => f.Children.OfType <CoreHome>(),
                (f, c) => c
                ).ToList();
        }
Exemple #8
0
 protected T GetItem <T>(Item item) where T : class
 {
     using (var context = new SitecoreContext())
     {
         return(context.Cast <T>(item));
     }
 }
        public override void Process(GetModelArgs args)
        {
            if (args.Result == null)
            {

                try
                {
                    Type type = GetFromField(args.Rendering, args);
                    if (Context.StaticContext.Classes.ContainsKey(type))
                    {
                        ISitecoreContext context = new SitecoreContext();
                        var result = context.GetCurrentItem(type);
                        args.Result = result;
                    }
                }
                catch (MapperException ex)
                {
                    //do nothing
                }
                catch (System.TypeLoadException ex)
                {
                    //do nothing
                }
            }
        }
        public void RenderingParameters_StringPassedInWithParametersUsingIdOnType_ReturnsModelWithValues()
        {
            //Arrange
            var expectedNumber     = 234;
            var expectedId1        = new Guid("{032B690F-5113-44C4-AEC7-A16B44382D4C}");
            var expectedId2        = new Guid("{6CF01319-0234-42C8-AEC1-FE757169F7A0}");
            var expectedFieldValue = "hello world";

            var parameters = "StringField={0}&Number={1}&Items={2}"
                             .Formatted(
                WebUtil.UrlEncode(expectedFieldValue),
                WebUtil.UrlEncode(expectedNumber.ToString()),
                WebUtil.UrlEncode("{0}|{1}".Formatted(expectedId1, expectedId2)));

            var db      = Sitecore.Configuration.Factory.GetDatabase("master");
            var context = Context.Create(Utilities.CreateStandardResolver());

            context.Load(new SitecoreAttributeConfigurationLoader("Glass.Mapper.Sc.Integration"));
            var service = new SitecoreContext(db);

            var html = new GlassHtml(service);

            //Act
            var result = html.GetRenderingParameters <RenderingTestWithAttribute>(parameters);

            //Assert
            Assert.AreEqual(expectedNumber, result.Number);
            Assert.AreEqual(expectedFieldValue, result.StringField);
            Assert.IsTrue(result.Items.Any(x => x.Id == expectedId1));
            Assert.IsTrue(result.Items.Any(x => x.Id == expectedId2));
            Assert.AreEqual(2, result.Items.Count());
        }
        private void AddCssClassToNavItem(Models.NavigationItem item)
        {
            var currentitem = SitecoreContext.GetCurrentItem <Models.NavigationItem>();

            item.CssClass = "";
            if (currentitem.Parent != null && currentitem.Parent.Id == item.Id)
            {
                item.CssClass += " is-open";
            }
            else if (currentitem.Parent != null && currentitem.Parent.Parent != null && currentitem.Parent.Parent.Id == item.Id)
            {
                item.CssClass += " is-open";
            }
            if (item.Id == currentitem.Id)
            {
                item.CssClass += " is-current is-open";
            }
            else
            {
                if (item.NavigationItems != null)
                {
                    foreach (var i in item.NavigationItems)
                    {
                        AddCssClassToNavItem(i);
                    }
                }
            }
        }
        public ISitecoreContext GetSitecoreContext(Context context)
        {
            if (context == null)
            {
                Context providerContext = GlassContextProvider.GetContext();
                if (providerContext == null)
                {
                    throw new NotSupportedException("Sitecore Context Requires a Glass Context");
                }

                context = providerContext;
            }

            string cacheKey = String.Format("GlassContext_{0}_{1}", context.Name, CachedContextsKey);
            
            SitecoreContext sitecoreContext = Sitecore.Context.Items[cacheKey] as SitecoreContext;

            if (sitecoreContext == null)
            {
                string contextName = context.Name;
                sitecoreContext = new SitecoreContext(contextName);
                Sitecore.Context.Items[cacheKey] = sitecoreContext;
            }

            return sitecoreContext;
        }
Exemple #13
0
        public ActionResult Index()
        {
            ISitecoreContext context = new SitecoreContext();
            var result = context.GetCurrentItem <IHeader>();

            return(View(result));
        }
Exemple #14
0
        void CommentSubmit_Click(object sender, EventArgs e)
        {
            var contextService = new SitecoreContext();
            var masterService  = new SitecoreService("master");

            var page = contextService.GetCurrentItem <CommentPage>();

            var comment = new Comment();

            //This value will be used for the name   of the item
            comment.Name     = DateTime.Now.ToString("yy-MM-ddThh-mm-ss");
            comment.Content  = CommentContent.Text;
            comment.FullName = CommentName.Text;
            comment.Email    = CommentEmail.Text;

            using (new SecurityDisabler())
            {
                masterService.Create(page, comment);
            }

            CommentThankYou.Visible = true;
            comment.Content         = string.Empty;
            comment.FullName        = string.Empty;
            comment.Email           = string.Empty;
        }
        public virtual T GetControllerItem <T>(bool isLazy = false, bool inferType = false) where T : class
        {
            try
            {
                //The call to Sitecore.Mvc.Presentation.RenderingContext.Current cause the exception
                //      attempt to retrieve context object of type 'Sitecore.Mvc.Presentation.RenderingContext' from empty stack.
                //when used in a controller that is targeted by a route and not a rendering.

                if (Sitecore.Mvc.Presentation.RenderingContext.Current == null ||
                    Sitecore.Mvc.Presentation.RenderingContext.Current.Rendering == null ||
                    Sitecore.Mvc.Presentation.RenderingContext.Current.Rendering.DataSource.IsNullOrEmpty())
                {
                    return(SitecoreContext.GetCurrentItem <T>());
                }



                return(SitecoreContext.GetItem <T>(
                           Sitecore.Mvc.Presentation.RenderingContext.Current.Rendering.DataSource, isLazy, inferType
                           ));
            }
            catch (InvalidOperationException ex)
            {
                return(SitecoreContext.GetCurrentItem <T>());
            }
        }
Exemple #16
0
        /// <summary>
        /// return current item if the item path is null or empty else return item for the corresponding path
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="path"></param>
        /// <returns></returns>

        protected T GetItem <T>(string path = "") where T : class
        {
            using (var context = new SitecoreContext())
            {
                return(string.IsNullOrEmpty(path) ? context.GetCurrentItem <T>() : context.GetItem <T>(path));
            }
        }
Exemple #17
0
        public void ItemPropertySave_SavesItemOnProperty_SetsField()
        {
            /*
             * Tests that we can save to an item property.
             */

            //Assign
            var context = Context.Create(Utilities.CreateStandardResolver());

            var db = Factory.GetDatabase("master");
            var scContext = new SitecoreContext(db);
            string path = "/sitecore/content/Tests/Misc/ItemPropertySave";

            var expected = "some expected value";
            var item = db.GetItem(path);

            using (new ItemEditing(item, true))
            {
                item["Field1"] = string.Empty;
            }

            var instance = scContext.GetItem<ItemPropertySaveStub>(path);

            //Act
            instance.Field1 = expected;

            using (new SecurityDisabler())
            {
                scContext.Save(instance);
            }

            //Assert
            Assert.AreEqual(expected, instance.Item["Field1"]);

        }
        public ActionResult AllSessions()
        {
            var context     = new SitecoreContext();
            var currentItem = context.GetCurrentItem <ISessionOverview>();

            return(View(currentItem));
        }
Exemple #19
0
        public new ActionResult Index()
        {
            var context = new SitecoreContext();
            var result  = context.GetCurrentItem <Article>();

            return(View(result));
        }
        public void GetCurrentItem_OneParameters()
        {
            //Assign
            using (Db database = new Db
            {
                new Sitecore.FakeDb.DbItem("Target")
            })
            {
                var context = Context.Create(Utilities.CreateStandardResolver());
                context.Load(new OnDemandLoader <SitecoreTypeConfiguration>(typeof(StubClass)));

                string param1 = "1para";

                var path      = "/sitecore/content/Target";
                var scContext = new SitecoreContext();

                Sitecore.Context.Item = database.GetItem(path);

                //Act
                var result = scContext.GetCurrentItem <StubClass, string>(param1);

                //Assert
                Assert.AreEqual(Sitecore.Context.Item.ID, result.Id);
                Assert.AreEqual(param1, result.Param1);
            }
        }
Exemple #21
0
        public ActionResult BodyText()
        {
            var vm = SitecoreContext.GetCurrentItem <IBasePage>();

            return(!string.IsNullOrEmpty(vm.BodyText) || Sitecore.Context.PageMode.IsExperienceEditor
                ? PartialView(vm) : null);
        }
        public void QueryRelative_NoResultsReturnsEmptyResult()
        {
            //Assign
            using (Db database = new Db
            {
                new Sitecore.FakeDb.DbItem("QueryRelative")
                {
                    new Sitecore.FakeDb.DbItem("Source"),
                    new Sitecore.FakeDb.DbItem("Target1"),
                    new Sitecore.FakeDb.DbItem("Target2")
                }
            })
            {
                var context = Context.Create(Utilities.CreateStandardResolver());
                context.Load(new OnDemandLoader <SitecoreTypeConfiguration>(typeof(StubClass)));

                var path      = "/sitecore/content/QueryRelative/Source";
                var scContext = new SitecoreContext();

                Sitecore.Context.Item = database.GetItem(path);

                var target1 = database.GetItem("/sitecore/content/QueryRelative/Target1");
                var target2 = database.GetItem("/sitecore/content/QueryRelative/Target2");

                using (new SecurityDisabler())
                {
                    //Act
                    var results = scContext.QueryRelative <StubClass>("/*[@@templatename='notthere']");

                    //Assert
                    Assert.AreEqual(0, results.Count());
                }
            }
        }
Exemple #23
0
        ///// <summary>
        ///// Redirect to Knowledge Gateway Home Page
        ///// </summary>
        ///// <returns></returns>
        public ActionResult RedirectToHomePage()
        {
            PageBase homeItem    = SitecoreContext.GetHomeItem <PageBase>();
            string   homePageUrl = homeItem.Url;

            return(Redirect(homePageUrl));
        }
 public T GetItem(string path = "")
 {
     using (var context = new SitecoreContext())
     {
         return(string.IsNullOrEmpty(path) ? context.GetCurrentItem <T>() : context.GetItem <T>(path));
     }
 }
Exemple #25
0
        public ActionResult MenuRender()
        {
            var context = new SitecoreContext();
            var model   = context.GetHomeItem <Item>();

            return(View());
        }
Exemple #26
0
        public object CreateElementInstance(Type baseType, IDictionary <string, object> fieldValues, IEnumerable <IExecutionContext> executionContexts)
        {
            var typeConfig = Context.Default.GetTypeConfiguration <SitecoreTypeConfiguration>(baseType);

            if (typeConfig == null || typeConfig.TemplateId == (ID)null)
            {
                return(_defaultDocumentMapper.CreateElementInstance(baseType, fieldValues, executionContexts));
            }

            var sitecoreService     = new SitecoreContext();
            var typeCreationContext = new SitecoreTypeCreationContext
            {
                SitecoreService = sitecoreService,
                RequestedType   = baseType,
                InferType       = true,
                IsLazy          = true,
                TemplateId      = ID.Parse(fieldValues[BuiltinFields.Template]),
            };

            using (new SearchSwitcher())
            {
                var proxy = sitecoreService.InstantiateObject(typeCreationContext);
                SetupProxy(ID.Parse(fieldValues[BuiltinFields.Group]), fieldValues, proxy as IProxyTargetAccessor);
                return(proxy);
            }
        }
Exemple #27
0
        public ActionResult commentPage()
        {
            var context = new SitecoreContext();
            var model   = context.GetCurrentItem <Page_Site>();

            return(View("~/Views/Detail/commentPage.cshtml", model));
        }
Exemple #28
0
        public static IEnumerable <AgendaModel> GetPastAgendaItemsForPerson(PersonModel model)
        {
            ISitecoreContext context = new SitecoreContext();
            var archiveItem          = context.GetItem <AgendaOverviewModel>(new Guid("{BA01B6B5-BF68-46DE-900F-BCE1227E72B0}"));

            return(archiveItem.ChildrenAsAgendaItems.Where(agendaModel => agendaModel.Speakers.Any(personModel => personModel.Id.ToString() == model.Id.ToString())).ToList());
        }
        // GET: Session
        public ActionResult SessionDetails()
        {
            var context     = new SitecoreContext();
            var currentItem = context.GetCurrentItem <ISessionDetail>();

            return(View(currentItem));
        }
Exemple #30
0
        public void ItemPropertySave_SavesItemOnProperty_SetsField()
        {
            /*
             * Tests that we can save to an item property.
             */

            //Assign
            var context = Context.Create(Utilities.CreateStandardResolver());

            var    db        = Sitecore.Configuration.Factory.GetDatabase("master");
            var    scContext = new SitecoreContext(db);
            string path      = "/sitecore/content/Tests/Misc/ItemPropertySave";

            var expected = "some expected value";
            var item     = db.GetItem(path);

            using (new ItemEditing(item, true))
            {
                item["Field1"] = string.Empty;
            }

            var instance = scContext.GetItem <ItemPropertySaveStub>(path);

            //Act
            instance.Field1 = expected;

            using (new SecurityDisabler())
            {
                scContext.Save(instance);
            }

            //Assert
            Assert.AreEqual(expected, instance.Item["Field1"]);
        }
        public ActionResult GetShowsForToday()
        {
            var list        = new List <PlanEvent>();
            var sc          = new SitecoreContext();
            var itemBuckets = Sitecore.Configuration.Factory.GetDatabase("master").GetItem("/sitecore/content/EPG/Sections/PlanBuckets/AsiaPlan/");

            if (itemBuckets != null && BucketManager.IsBucket(itemBuckets))
            {
                using (var searchContext = ContentSearchManager.GetIndex("sitecore_master_index").CreateSearchContext())
                {
                    var result = searchContext.GetQueryable <SearchResultItem>().Where(x => x.Path.Contains("Sections/PlanBuckets/AsiaPlan/") && x.TemplateId == new ID("{50B06575-9906-4B50-8E63-3E8BBEF1F858}"));
                    if (result != null)
                    {
                        foreach (var item in result)
                        {
                            list.Add(sc.Cast <PlanEvent>(item.GetItem()));
                        }
                    }
                }
            }

            if (list.Count > 0)
            {
                string today = DateTime.Now.ToString("dd/MM/yyyy");//9/1/2015"
                //  today = "01/12/2017";
                //get shows after today 12:00 AM
                IEnumerable <PlanEvent> elist = list.Where(x => DateTime.ParseExact(x.BroadcastDate, "dd/MM/yyyy", null).CompareTo(DateTime.ParseExact(today, "dd/MM/yyyy", null)) > 0);
                list = new List <PlanEvent>(elist);
                //sort them in ascending
                list.Sort((date1, date2) => DateTime.ParseExact(date1.BroadcastDate + " " + date1.PlanTime, "dd/MM/yyyy HH:mm", null).CompareTo(DateTime.ParseExact(date2.BroadcastDate + " " + date2.PlanTime, "dd/MM/yyyy HH:mm", null)));
                int a = list.Count;
            }
            return(View(list));
        }
        public void InterfaceIssueInPageEditorWhenInterfaceInheritsFromAnInterfaceWithSimilarName()
        {
            /*
             * This test is in response to issue 53 raised on the Glass.Sitecore.Mapper
             * project. When two interfaces have similar names are created as proxies
             * the method GetTypeConfiguration returns the wrong config.
             */
             
            
            //Assign
            var context = Context.Create(Utilities.CreateStandardResolver());
            context.Load(new SitecoreAttributeConfigurationLoader("Glass.Mapper.Sc.Integration"));

            var db = Sitecore.Configuration.Factory.GetDatabase("master");
            var scContext = new SitecoreContext(db);

            var glassHtml = new GlassHtml(scContext);
            var instance = scContext.GetItem<IBasePage>("/sitecore");

            //Act
            glassHtml.Editable(instance, x => x.Title);

            //This method should execute without error


        }
Exemple #33
0
        public object GetObject(string model)
        {
            if (model.IsNullOrEmpty())
            {
                return(null);
            }

            var type = Type.GetType(model, true);

            if (type == null)
            {
                return(null);
            }

            var context = Context.Contexts[ContextName];

            if (context == null)
            {
                throw new MapperException("Failed to find context {0}".Formatted(ContextName));
            }

            if (context.TypeConfigurations.ContainsKey(type))
            {
                ISitecoreContext scContext = new SitecoreContext(context);
                var result = scContext.GetCurrentItem(type);
                return(result);
            }
            return(null);
        }
Exemple #34
0
        public ActionResult AllSpeakers()
        {
            var ctx         = new SitecoreContext();
            var currentItem = ctx.GetCurrentItem <ISpeakers>();

            return(View(currentItem));
        }
Exemple #35
0
        public void GetHomeItem_ReturnsHomeItem()
        {
            //Assign
            var db      = Sitecore.Configuration.Factory.GetDatabase("master");
            var context = Context.Create(Utilities.CreateStandardResolver());

            context.Load(new SitecoreAttributeConfigurationLoader("Glass.Mapper.Sc.Integration"));

            var doc = new XmlDocument();

            doc.LoadXml("<site name='GetHomeItem' virtualFolder='/' physicalFolder='/' rootPath='/sitecore/content/Tests/SitecoreContext/GetHomeItem' startItem='/Target1' database='master' domain='extranet' allowDebug='true' cacheHtml='true' htmlCacheSize='10MB' registryCacheSize='0' viewStateCacheSize='0' xslCacheSize='5MB' filteredItemsCacheSize='2MB' enablePreview='true' enableWebEdit='true' enableDebugger='true' disableClientData='false' />");

            Sitecore.Context.Site = new SiteContext(
                new SiteInfo(
                    doc.FirstChild
                    )
                );
            //Sitecore.Context.Site = Sitecore.Configuration.Factory.GetSite("GetHomeItem");

            var scContext = new SitecoreContext();

            var target1 = db.GetItem("/sitecore/content/Tests/SitecoreContext/GetHomeItem/Target1");

            //Act
            var result = scContext.GetHomeItem <StubClass>();

            //Assert
            Assert.AreEqual(target1.ID, result.Id);
        }
        public void RenderImage_MatchesSitecoreOutput_Issue133()
        {
            //Assign
            string targetPath = "/sitecore/content/Tests/GlassHtml/RenderImage/Target";

            var db = Sitecore.Configuration.Factory.GetDatabase("master");
            var context = Context.Create(Utilities.CreateStandardResolver());
            context.Load(new SitecoreAttributeConfigurationLoader("Glass.Mapper.Sc.Integration"));
            var service = new SitecoreContext(db);

            var html = new GlassHtml(service);


            string fieldValue= "<image mediaid=\"{D897833C-1F53-4FAE-B54B-BB5B11B8F851}\" mediapath=\"/Files/20121222_001405\" src=\"~/media/D897833C1F534FAEB54BBB5B11B8F851.ashx\" hspace=\"15\" vspace=\"20\" />";

            var item = db.GetItem(targetPath);
            var field = item.Fields["Image"];

            using (new ItemEditing(item, true))
            {
                field.Value = fieldValue;
            }

            var model = service.GetItem<StubClassWithImage>(targetPath);


            var scControl = new Sitecore.Web.UI.WebControls.Image();
            scControl.Item = item;
            scControl.Field = "Image";
            scControl.Parameters = "mw=200";
           
            var doc = new XmlDocument();
            doc.LoadXml("<site name='GetHomeItem' virtualFolder='/' physicalFolder='/' rootPath='/sitecore/content/Tests/SitecoreContext/GetHomeItem' startItem='/Target1' database='master' domain='extranet' allowDebug='true' cacheHtml='true' htmlCacheSize='10MB' registryCacheSize='0' viewStateCacheSize='0' xslCacheSize='5MB' filteredItemsCacheSize='2MB' enablePreview='true' enableWebEdit='true' enableDebugger='true' disableClientData='false' />");

            var siteContext = new SiteContextStub(
                new SiteInfo(
                    doc.FirstChild
                    )
                );

            siteContext.SetDisplayMode(DisplayMode.Normal);

            Sitecore.Context.Site = siteContext;

            StringBuilder sb = new StringBuilder();
            HtmlTextWriter writer  = new HtmlTextWriter(new StringWriter(sb));
            //Act
            scControl.RenderControl(writer);
            var scResult = sb.ToString();
            var result = html.RenderImage(model, x => x.Image, new {mw=200});

            //Assert
            Assert.AreEqual(result,scResult);




        }
        public void DropRead()
        {
            ISitecoreContext context = new SitecoreContext();

            DemoItem current = context.GetCurrentItem<DemoItem>();

            if (current.Drop != null)
            {
                string otherName = current.Drop.Name;
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            ISitecoreContext context = new SitecoreContext();
            var home = context.GetCurrentItem<Home>();

            Title.Text = home.Title;
            Text.Text = home.Text;
            CreateBy.Text = home.CreatedBy;
            CreatedOn.Text = home.Created.ToShortDateString();
            Path.Text = home.Path;
        }
        public void DropSave()
        {
            ISitecoreContext context = new SitecoreContext();

            DemoItem current = context.GetCurrentItem<DemoItem>();
            OtherItem other = context.GetItem<OtherItem>("/sitecore/content/home/someOtherItem");

            current.Drop = other;

            context.Save(current);
        }
        protected void Page_Load(object sender, EventArgs e)
        {

            ISitecoreContext context = new SitecoreContext();

            Home item = context.GetCurrentItem<Home>();

            title.Text = item.Title;
            body.Text = item.Body;
            date.Text = item.Date.ToString("dd MMM yyyy");

        }
        public void DoWork()
        {
            var context = new SitecoreContext();

            using (new VersionCountDisabler())
            {
                var current = context.GetCurrentItem<MyModel>();

                //you will need to evaluate the query before you exit the VersionCountDisabler scope
                var results = current.Query.ToList();
            }
            
        }
Exemple #42
0
        /// <summary>
        /// Handles the Load event of the Page control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void Page_Load(object sender, EventArgs e)
        {
            ISitecoreContext context = new SitecoreContext();
            BasePageModel = context.GetCurrentItem<BasePageModel>();
            HomeModel = context.GetHomeItem<HomeModel>();

            LoadMetaData();
            RegisterGoogleAnalyticsScript();

            if (BasePageModel.Id == HomeModel.Id)
            {
                body.Attributes.Add("class", "homepage");
            }
        }
        public void Editable_InEditMode_StringFieldWithEditReturned()
        {
            //Assign
            string targetPath = "/sitecore/content/Tests/GlassHtml/MakeEditable/Target";

            var db = Sitecore.Configuration.Factory.GetDatabase("master");
            var context = Context.Create(Utilities.CreateStandardResolver());
            context.Load(new SitecoreAttributeConfigurationLoader("Glass.Mapper.Sc.Integration"));
            var service = new SitecoreContext(db);

            var html = new GlassHtml(service);
            
            var model = service.GetItem<StubClass>(targetPath);

            var fieldValue = "test content field";

            model.StringField = fieldValue ;

            using (new SecurityDisabler())
            {
                service.Save(model);
            }

            var doc = new XmlDocument();
            doc.LoadXml("<site name='GetHomeItem' virtualFolder='/' physicalFolder='/' rootPath='/sitecore/content/Tests/SitecoreContext/GetHomeItem' startItem='/Target1' database='master' domain='extranet' allowDebug='true' cacheHtml='true' htmlCacheSize='10MB' registryCacheSize='0' viewStateCacheSize='0' xslCacheSize='5MB' filteredItemsCacheSize='2MB' enablePreview='true' enableWebEdit='true' enableDebugger='true' disableClientData='false' />");

            var siteContext = new SiteContextStub(
                new SiteInfo(
                    doc.FirstChild
                    )
                );

            siteContext.SetDisplayMode(DisplayMode.Edit);

            Sitecore.Context.Site = siteContext;

            //Act
            string result;

            using (new SecurityDisabler())
            {
                result = html.Editable(model, x => x.StringField);
            }

            //Assert
            Assert.IsTrue(result.Contains(fieldValue));
            //this is the webedit class
            Assert.IsTrue(result.Contains("scWebEditInput"));
            Console.WriteLine("result "+result);
        }
        public void  MultiTreeRead()
        {
            ISitecoreContext context = new SitecoreContext();

            DemoItem current = context.GetCurrentItem<DemoItem>();

            foreach (OtherItem other in current.Multi)
            {
                string title = other.Title;
            }

            foreach (OtherItem other in current.Tree)
            {
                string title = other.Title;
            }
        }
        public void MultiTreeRead()
        {
            ISitecoreContext context = new SitecoreContext();

            DemoItem current = context.GetCurrentItem<DemoItem>();

            OtherItem forRemoval = current.Multi.First();

            current.Multi.Remove(forRemoval);

            OtherItem toAdd = context.GetItem<OtherItem>("/sitecore/content/home/someOtherItem");

            current.Multi.Add(toAdd);

            context.Save(current);

        }
        public void RenderLink_LinkContainsAnchor_Issue155()
        {
            //Assign
            string targetPath = "/sitecore/content/Tests/GlassHtml/MakeEditable/Target";

            var db = Sitecore.Configuration.Factory.GetDatabase("master");
            var context = Context.Create(Utilities.CreateStandardResolver());
            context.Load(new SitecoreAttributeConfigurationLoader("Glass.Mapper.Sc.Integration"));
            var service = new SitecoreContext(db);

            var html = new GlassHtml(service);


            string fieldValue = "<link text='text' linktype='anchor' anchor='footer' title='' class='' />";
            string expected = "<a href='#footer' >text</a>";

            var item = db.GetItem(targetPath);
            var field = item.Fields["StringField"];

            using (new ItemEditing(item, true))
            {
                field.Value = fieldValue;
            }

            var model = service.GetItem<IStubLinkClass>(targetPath);

            var doc = new XmlDocument();
            doc.LoadXml("<site name='GetHomeItem' virtualFolder='/' physicalFolder='/' rootPath='/sitecore/content/Tests/SitecoreContext/GetHomeItem' startItem='/Target1' database='master' domain='extranet' allowDebug='true' cacheHtml='true' htmlCacheSize='10MB' registryCacheSize='0' viewStateCacheSize='0' xslCacheSize='5MB' filteredItemsCacheSize='2MB' enablePreview='true' enableWebEdit='true' enableDebugger='true' disableClientData='false' />");

            var siteContext = new SiteContextStub(
                new SiteInfo(
                    doc.FirstChild
                    )
                );

            siteContext.SetDisplayMode(DisplayMode.Normal);

            Sitecore.Context.Site = siteContext;

            StringBuilder sb = new StringBuilder();
            //Act
            var result = html.RenderLink(model, x => x.Link);

            //Assert
            Assert.AreEqual(expected, result);
        }
        public void GetCurrentItem_NoParameters()
        {
            //Assign
            var db = Sitecore.Configuration.Factory.GetDatabase("master");
            var context = Context.Create(Utilities.CreateStandardResolver());
            context.Load(new SitecoreAttributeConfigurationLoader("Glass.Mapper.Sc.Integration"));

            var path = "/sitecore/content/Tests/SitecoreContext/GetCurrentItem/Target";
            var scContext = new SitecoreContext();

            Sitecore.Context.Item = db.GetItem(path);

            //Act
            var result = scContext.GetCurrentItem<StubClass>();

            //Assert
            Assert.AreEqual(Sitecore.Context.Item.ID, result.Id);

        }
        /// <summary>
        /// Called by the ASP.NET page framework to notify server controls that use composition-based implementation to create any child controls they contain in preparation for posting back or rendering.
        /// </summary>
        protected override void CreateChildControls()
        {

            Type type =  Type.GetType(TypeName);

            Type razorControlType = typeof(AbstractRazorControl<>);
            Type finalControlType = razorControlType.MakeGenericType(type);

            WebControl finalControl =Activator.CreateInstance(finalControlType) as WebControl;



            ISitecoreContext _context = new SitecoreContext(Context);
            var model = _context.GetCurrentItem(type);

            TypeDescriptor.GetProperties(finalControlType).Find("Model", false).SetValue(finalControl, model);

            this.Controls.Add(finalControl);

            base.CreateChildControls();
        }
        public void GetCurrentItem_NoParameters()
        {
            //Assign
            using (Db database = new Db
            {
                new Sitecore.FakeDb.DbItem("Target")
            })
            {
                var context = Context.Create(Utilities.CreateStandardResolver());
                context.Load(new OnDemandLoader<SitecoreTypeConfiguration>(typeof(StubClass)));

                var path = "/sitecore/content/Target";
                var scContext = new SitecoreContext();

                Sitecore.Context.Item = database.GetItem(path);

                //Act
                var result = scContext.GetCurrentItem<StubClass>();

                //Assert
                Assert.AreEqual(Sitecore.Context.Item.ID, result.Id);
            }
        }
        public void QuerySingleRelative_RetrievesSibling()
        {
            //Assign
            using (Db database = new Db
            {
                new Sitecore.FakeDb.DbItem("QueryRelative")
                {
                    new Sitecore.FakeDb.DbItem("Source"),
                    new Sitecore.FakeDb.DbItem("Target1"),
                    new Sitecore.FakeDb.DbItem("Target2")
                }
            })
            {
                var context = Context.Create(Utilities.CreateStandardResolver());
                context.Load(new OnDemandLoader<SitecoreTypeConfiguration>(typeof(StubClass)));

                var path = "/sitecore/content/QueryRelative/Source";
                var scContext = new SitecoreContext();

                Sitecore.Context.Item = database.GetItem(path);

                var target1 = database.GetItem("/sitecore/content/QueryRelative/Target1");

                //Act
                var result = scContext.QuerySingleRelative<StubClass>("../*[@@name='Target1']");

                //Assert
                Assert.AreEqual(target1.ID, result.Id);
            }

        }
        public void OrderOfIgnoreIssue2_ConfiguredShouldBeSet_TitleShouldBeIgnored()
        {
            //Assign
            string path = "/sitecore/content/Tests/Misc/FieldConfigOrder";
            string expected = "Hello space";


            var fluentConfig = new SitecoreFluentConfigurationLoader();

            var typeConfig = fluentConfig.Add<FieldOrderOnIgnore>();
            typeConfig.AutoMap();
            typeConfig.Field(x => x.ConfiguredTitle).FieldName("Title");
            typeConfig.Ignore(x => x.Title);

            var context = Context.Create(Utilities.CreateStandardResolver());
            context.Load(fluentConfig);

            var db = Sitecore.Configuration.Factory.GetDatabase("master");

            var item = db.GetItem(path);

            using (new ItemEditing(item, true))
            {
                item["Title"] = expected;
            }

            var scContext = new SitecoreContext(db);


            //Act
            var instance = scContext.GetItem<FieldOrderOnIgnore>(path);


            //Assert
            Assert.AreEqual(expected, instance.ConfiguredTitle);
            Assert.IsNullOrEmpty(instance.Title);
        }
        public void QueryRelative_RetrievesSiblings()
        {
            //Assign
            var db = Factory.GetDatabase("master");
            var context = Context.Create(Utilities.CreateStandardResolver());
            context.Load(new SitecoreAttributeConfigurationLoader("Glass.Mapper.Sc.Integration"));

            var path = "/sitecore/content/Tests/SitecoreContext/QueryRelative/Source";
            var scContext = new SitecoreContext();

            Sitecore.Context.Item = db.GetItem(path);

            var target1 = db.GetItem("/sitecore/content/Tests/SitecoreContext/QueryRelative/Target1");
            var target2 = db.GetItem("/sitecore/content/Tests/SitecoreContext/QueryRelative/Target2");

            //Act
            var results = scContext.QueryRelative<StubClass>("../*");

            //Assert
            Assert.AreEqual(3, results.Count());
            Assert.IsTrue(results.Any(x => x.Id == target1.ID));
            Assert.IsTrue(results.Any(x => x.Id == target1.ID));
            Assert.IsTrue(results.Any(x => x.Id == Sitecore.Context.Item.ID));

        }
        public void QueryRelative_NoResultsReturnsEmptyResult()
        {
            //Assign
            var db = Sitecore.Configuration.Factory.GetDatabase("master");
            var context = Context.Create(Utilities.CreateStandardResolver());
            context.Load(new SitecoreAttributeConfigurationLoader("Glass.Mapper.Sc.Integration"));

            var path = "/sitecore/content/Tests/SitecoreContext/QueryRelative/Source";
            var scContext = new SitecoreContext();

            Sitecore.Context.Item = db.GetItem(path);

            var target1 = db.GetItem("/sitecore/content/Tests/SitecoreContext/QueryRelative/Target1");
            var target2 = db.GetItem("/sitecore/content/Tests/SitecoreContext/QueryRelative/Target2");

            using (new SecurityDisabler())
            {
                //Act
                var results = scContext.QueryRelative<StubClass>("/*[@@templatename='notthere']");

                //Assert
                Assert.AreEqual(0, results.Count());
            }
        }
        public void GetCurrentItem_FourParameters()
        {
            //Assign
            using (Db database = new Db
            {
                new Sitecore.FakeDb.DbItem("Target")
            })
            {
                var context = Context.Create(Utilities.CreateStandardResolver());
                context.Load(new OnDemandLoader<SitecoreTypeConfiguration>(typeof(StubClass)));

                string param1 = "1para";
                string param2 = "2para";
                string param3 = "3para";
                string param4 = "4para";

                var path = "/sitecore/content/Target";
                var scContext = new SitecoreContext();

                Sitecore.Context.Item = database.GetItem(path);

                //Act
                var result = scContext.GetCurrentItem<StubClass, string, string, string, string>(param1, param2, param3,
                    param4);

                //Assert
                Assert.AreEqual(Sitecore.Context.Item.ID, result.Id);
                Assert.AreEqual(param1, result.Param1);
                Assert.AreEqual(param2, result.Param2);
                Assert.AreEqual(param3, result.Param3);
                Assert.AreEqual(param4, result.Param4);
            }
        }
        public void GetHomeItem_ReturnsHomeItem()
        {
            //Assign
            using (Db database = new Db
            {
                new Sitecore.FakeDb.DbItem("Target")
            })
            {
                var context = Context.Create(Utilities.CreateStandardResolver());
                context.Load(new OnDemandLoader<SitecoreTypeConfiguration>(typeof(StubClass)));

                var doc = new XmlDocument();
                doc.LoadXml(
                    "<site name='GetHomeItem' virtualFolder='/' physicalFolder='/' rootPath='/sitecore/content' startItem='/Target' database='master' domain='extranet' allowDebug='true' cacheHtml='true' htmlCacheSize='10MB' registryCacheSize='0' viewStateCacheSize='0' xslCacheSize='5MB' filteredItemsCacheSize='2MB' enablePreview='true' enableWebEdit='true' enableDebugger='true' disableClientData='false' />");

                Sitecore.Context.Site = new SiteContext(
                    new SiteInfo(
                        doc.FirstChild
                        )
                    );
                //Sitecore.Context.Site = Sitecore.Configuration.Factory.GetSite("GetHomeItem");

                using (new SiteContextSwitcher(new SiteContext(new SiteInfo(
                    doc.FirstChild
                    ))))
                {
                    var scContext = new SitecoreContext();

                    var target1 = database.GetItem("/sitecore/content/Target");

                    //Act
                    var result = scContext.GetHomeItem<StubClass>();

                    //Assert
                    Assert.AreEqual(target1.ID, result.Id);
                }
            }

        }
        /// <summary>
        /// Gets the object.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <param name="db">The db.</param>
        /// <returns></returns>
        /// <exception cref="Glass.Mapper.MapperException">Failed to find context {0}.Formatted(ContextName)</exception>
        public object GetObject(string model, Database db, Rendering renderingItem)
        {

            if (model.IsNullOrEmpty())
                return null;

            //must be a path to a Model item
            if (model.StartsWith("/sitecore"))
            {
                var target = db.GetItem(model);
                if (target == null)
                    return null;

                string newModel = target[ModelTypeField];
                return GetObject(newModel, db, renderingItem);
            }
            //if guid must be that to Model item
            Guid targetId;
            if (Guid.TryParse(model, out targetId))
            {
                var target = db.GetItem(new ID(targetId));
                if (target == null)
                    return null;

                string newModel = target[ModelTypeField];
                return GetObject(newModel, db, renderingItem);
            }


            var type = Type.GetType(model, false);

            if (type == null)
                return null;

            var context = Context.Contexts.ContainsKey(ContextName) ? Context.Contexts[ContextName] : null;
            if (context == null) throw new MapperException("Failed to find context {0}".Formatted(ContextName));

            //this is really aggressive
            if (!context.TypeConfigurations.ContainsKey(type))
            {
                //if the config is null then it is probably an ondemand mapping so we have to load the ondemand part

                IConfigurationLoader loader =
                    new OnDemandLoader<SitecoreTypeConfiguration>(type);
                context.Load(loader);

            }
            ISitecoreContext scContext = new SitecoreContext(context);

            if (renderingItem.DataSource.IsNotNullOrEmpty())
            {
                var item = scContext.Database.GetItem(renderingItem.DataSource);
                return scContext.CreateType(type, item, false, false, null);
            }

            return scContext.GetCurrentItem(type);

        }
        public void RenderingParameters_StringPassedInWithParametersUsingIdOnType_ReturnsModelWithValues()
        {
            //Arrange
            var expectedNumber = 234;
            var expectedId1 = new Guid("{032B690F-5113-44C4-AEC7-A16B44382D4C}");
            var expectedId2 = new Guid("{6CF01319-0234-42C8-AEC1-FE757169F7A0}");
            var expectedFieldValue = "hello world";

            var parameters = "StringField={0}&Number={1}&Items={2}"
                .Formatted(
                    WebUtil.UrlEncode(expectedFieldValue),
                    WebUtil.UrlEncode(expectedNumber.ToString()),
                    WebUtil.UrlEncode("{0}|{1}".Formatted(expectedId1, expectedId2)));

            var db = Sitecore.Configuration.Factory.GetDatabase("master");
            var context = Context.Create(Utilities.CreateStandardResolver());
            context.Load(new SitecoreAttributeConfigurationLoader("Glass.Mapper.Sc.Integration"));
            var service = new SitecoreContext(db);

            var html = new GlassHtml(service);

            //Act
            var result = html.GetRenderingParameters<RenderingTestWithAttribute>(parameters);

            //Assert
            Assert.AreEqual(expectedNumber, result.Number);
            Assert.AreEqual(expectedFieldValue, result.StringField);
            Assert.IsTrue(result.Items.Any(x => x.Id == expectedId1));
            Assert.IsTrue(result.Items.Any(x => x.Id == expectedId2));
            Assert.AreEqual(2, result.Items.Count());
        }
        public void GetHomeItem_ReturnsHomeItem()
        {
            //Assign
            var db = Sitecore.Configuration.Factory.GetDatabase("master");
            var context = Context.Create(Utilities.CreateStandardResolver());
            context.Load(new SitecoreAttributeConfigurationLoader("Glass.Mapper.Sc.Integration"));

            var doc = new XmlDocument();
            doc.LoadXml("<site name='GetHomeItem' virtualFolder='/' physicalFolder='/' rootPath='/sitecore/content/Tests/SitecoreContext/GetHomeItem' startItem='/Target1' database='master' domain='extranet' allowDebug='true' cacheHtml='true' htmlCacheSize='10MB' registryCacheSize='0' viewStateCacheSize='0' xslCacheSize='5MB' filteredItemsCacheSize='2MB' enablePreview='true' enableWebEdit='true' enableDebugger='true' disableClientData='false' />");

            Sitecore.Context.Site = new SiteContext(
                new SiteInfo(
                    doc.FirstChild
                    )
                );
            //Sitecore.Context.Site = Sitecore.Configuration.Factory.GetSite("GetHomeItem");

            var scContext = new SitecoreContext();

            var target1 = db.GetItem("/sitecore/content/Tests/SitecoreContext/GetHomeItem/Target1");

            //Act
            var result = scContext.GetHomeItem<StubClass>();

            //Assert
            Assert.AreEqual(target1.ID, result.Id);

        }
        public void QuerySingleRelative_RetrievesSibling()
        {
            //Assign
            var db = Sitecore.Configuration.Factory.GetDatabase("master");
            var context = Context.Create(Utilities.CreateStandardResolver());
            context.Load(new SitecoreAttributeConfigurationLoader("Glass.Mapper.Sc.Integration"));

            var path = "/sitecore/content/Tests/SitecoreContext/QueryRelative/Source";
            var scContext = new SitecoreContext();

            Sitecore.Context.Item = db.GetItem(path);

            var target1 = db.GetItem("/sitecore/content/Tests/SitecoreContext/QueryRelative/Target1");

            //Act
            var result = scContext.QuerySingleRelative<StubClass>("../*[@@name='Target1']");

            //Assert
            Assert.AreEqual(target1.ID, result.Id);

        }
        public void QueryRelative_NoResultsReturnsEmptyResult()
        {
            //Assign
            using (Db database = new Db
            {
                new Sitecore.FakeDb.DbItem("QueryRelative")
                {
                    new Sitecore.FakeDb.DbItem("Source"),
                    new Sitecore.FakeDb.DbItem("Target1"),
                    new Sitecore.FakeDb.DbItem("Target2")
                }
            })
            {
                var context = Context.Create(Utilities.CreateStandardResolver());
                context.Load(new OnDemandLoader<SitecoreTypeConfiguration>(typeof(StubClass)));

                var path = "/sitecore/content/QueryRelative/Source";
                var scContext = new SitecoreContext();

                Sitecore.Context.Item = database.GetItem(path);

                var target1 = database.GetItem("/sitecore/content/QueryRelative/Target1");
                var target2 = database.GetItem("/sitecore/content/QueryRelative/Target2");

                using (new SecurityDisabler())
                {
                    //Act
                    var results = scContext.QueryRelative<StubClass>("/*[@@templatename='notthere']");

                    //Assert
                    Assert.AreEqual(0, results.Count());
                }
            }
        }