예제 #1
0
        /// <summary>
        ///     Determines whether the command is supported for the given item
        /// </summary>
        /// <param name="item">the context item</param>
        /// <returns>a value indicating if the command is supported</returns>
        public bool CanExecute(Item item)
        {
            if (!_pageModeAccess.CanWebEdit() || !_pageModeAccess.CanDesignItem(item) ||
                !item.IsBaseLayoutItem())
            {
                return(false);
            }

            var args = new GetBaseLayoutItemsArgs(item);

            _pipelineRunner.Run(args);

            return(args.BaseLayoutItems.Count > 0);
        }
        public void Process_WithItemWithoutBaseLayoutField_DoesNotCallGetItems()
        {
            // Arrange
            var args      = new GetBaseLayoutItemsArgs(MasterFakesFactory.CreateFakeItem(null, null, null, null, null, false));
            var processor = Substitute.ForPartsOf <GetLookupSourceItems>();

            processor.When(p => p.GetItems(Arg.Any <Item>(), Arg.Any <string>())).DoNotCallBase();

            // Act
            processor.Process(args);

            // Assert
            processor.DidNotReceive().GetItems(Arg.Any <Item>(), Arg.Any <string>());
        }
        public void Process_WhenGetItemsReturnsItems_AddsItemsToArgs()
        {
            // Arrange
            var item1     = MasterFakesFactory.CreateFakeItem();
            var item2     = MasterFakesFactory.CreateFakeItem();
            var args      = new GetBaseLayoutItemsArgs(MasterFakesFactory.CreateFakeItem());
            var processor = Substitute.ForPartsOf <GetLookupSourceItems>();

            processor.When(p => p.GetItems(Arg.Any <Item>(), Arg.Any <string>())).DoNotCallBase();
            processor.GetItems(Arg.Any <Item>(), Arg.Any <string>()).Returns(new[] { item1, item2 });

            // Act
            processor.Process(args);

            // Assert
            Assert.Equal(2, args.BaseLayoutItems.Count);
        }
예제 #4
0
        /// <summary>
        ///     Gets the select base layout dialog URL with parameters for the given item
        /// </summary>
        /// <param name="item">the item</param>
        /// <returns>the dialog url</returns>
        public string GetDialogUrl(Item item)
        {
            var args = new GetBaseLayoutItemsArgs(item);

            _pipelineRunner.Run(args);

            if (args.BaseLayoutItems.Count == 0)
            {
                return(null);
            }

            BaseLayoutItem baseLayoutItem = item;
            var            options        = new SelectBaseLayoutOptions {
                Items = args.BaseLayoutItems
            };

            if (baseLayoutItem.BaseLayout != null)
            {
                options.CurrentBaseLayoutId = baseLayoutItem.BaseLayout.ID;
            }

            return(GetUrl(options, item.Database));
        }