コード例 #1
0
        public void AddRendering([NotNull] RenderingItem rendering)
        {
            Assert.ArgumentNotNull(rendering, nameof(rendering));

            var insertionIndex         = List.SelectedIndex;
            var selectedRenderingIndex = List.SelectedIndex;

            if (insertionIndex < 0)
            {
                insertionIndex         = items.Count;
                selectedRenderingIndex = insertionIndex;
            }
            else
            {
                insertionIndex++;
            }

            List.SelectedItem = AddRendering(rendering, insertionIndex, selectedRenderingIndex);

            NoItems.Visibility         = Visibility.Collapsed;
            ListContextMenu.Visibility = Visibility.Visible;

            List.UpdateLayout();
            var selectedItem = List.ItemContainerGenerator.ContainerFromItem(List.SelectedItem) as ListViewItem;

            if (selectedItem != null)
            {
                selectedItem.Focus();
            }

            Modified = true;
        }
コード例 #2
0
        private string GetFilePath([NotNull] RenderingItem renderingItem, [NotNull] LayoutDesignerContext context)
        {
            Debug.ArgumentNotNull(context, nameof(context));
            Debug.ArgumentNotNull(renderingItem, nameof(renderingItem));

            var filePath = renderingItem.FilePath;

            if (string.IsNullOrEmpty(filePath))
            {
                return(string.Empty);
            }

            if (filePath.StartsWith(@"/"))
            {
                filePath = filePath.Mid(1);
            }

            try
            {
                filePath = Path.Combine(context.LayoutDesigner.DatabaseUri.Site.WebRootPath, filePath);
            }
            catch (ArgumentException ex)
            {
                AppHost.MessageBox(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }

            return(GetPath(renderingItem, filePath));
        }
コード例 #3
0
        public void LocateInLayoutPane([NotNull] RenderingItem rendering)
        {
            Assert.ArgumentNotNull(rendering, nameof(rendering));

            var renderingTreeViewItem = FindItem <RenderingTreeViewItem>(i => i.Rendering == rendering);

            if (renderingTreeViewItem == null)
            {
                return;
            }

            var treeViewItem = renderingTreeViewItem.GetParentTreeViewItem() as BaseTreeViewItem;

            while (treeViewItem != null)
            {
                treeViewItem.IsExpanded = true;
                treeViewItem            = treeViewItem.GetParentTreeViewItem() as BaseTreeViewItem;
            }

            renderingTreeViewItem.BringIntoView();

            renderingTreeViewItem.IsSelected = true;
            renderingTreeViewItem.Focus();
            Keyboard.Focus(renderingTreeViewItem);
        }
コード例 #4
0
        private Tuple <string, string> GetFromRenderingItem(Rendering rendering, GetRendererArgs args)
        {
            Template renderingTemplate = args.RenderingTemplate;

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

            if (!renderingTemplate.DescendsFromOrEquals(TemplateIds.ControllerRendering))
            {
                return(null);
            }

            RenderingItem renderingItem = rendering.RenderingItem;

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

            string controllerName = renderingItem.InnerItem["Controller"];
            string actionName     = renderingItem.InnerItem["Controller Action"];

            if (controllerName.IsWhiteSpaceOrNull())
            {
                controllerName = NameConverter.ConvertItemNameToClassName(renderingItem.Name);
            }

            return(new Tuple <string, string>(controllerName, actionName));
        }
コード例 #5
0
        protected override string GetPath(RenderingItem renderingItem, string filePath)
        {
            Debug.ArgumentNotNull(renderingItem, nameof(renderingItem));
            Debug.ArgumentNotNull(filePath, nameof(filePath));

            return(Path.ChangeExtension(filePath, ".css"));
        }
コード例 #6
0
        protected override string GetPath(RenderingItem renderingItem, string filePath)
        {
            Debug.ArgumentNotNull(renderingItem, nameof(renderingItem));
            Debug.ArgumentNotNull(filePath, nameof(filePath));

            return(filePath);
        }
コード例 #7
0
        public void InjectPrefab(RenderingItem prefabProxy, DeviceDefinition deviceLayout, string placeholderPath, int index, Item pageItem)
        {
            var getItemArgs = new PrefabsGetItemArgs {
                DeviceLayout = deviceLayout,
                DestinationPlaceholderPath = placeholderPath,
                PrefabProxy = prefabProxy,
                PageItem    = pageItem
            };

            CorePipeline.Run("prefabsGetItem", getItemArgs);
            if (!getItemArgs.Handled || getItemArgs.Result == null)
            {
                throw new System.Exception($"Prefab not found");
            }

            var getRenderingsArgs = new PrefabGetRenderingsArgs
            {
                Prefab       = getItemArgs.Result,
                DeviceLayout = deviceLayout,
                DestinationPlaceholderPath = placeholderPath,
                PrefabProxy = prefabProxy,
                PageItem    = pageItem,
                Index       = index
            };

            CorePipeline.Run("prefabGetRenderings", getRenderingsArgs);
            if (!getRenderingsArgs.Handled)
            {
                throw new System.Exception($"Prefab had no renderings to add");
            }

            getRenderingsArgs.Reuse();
            CorePipeline.Run("prefabApplyRenderings", getRenderingsArgs);
        }
コード例 #8
0
        private IEnumerable <object> GetProperties(RenderingItem renderingItem)
        {
            var properties = TypeDescriptor.GetProperties(renderingItem);

            yield return("Rendering");

            foreach (PropertyDescriptor property in properties)
            {
                if (property.Attributes.OfType <BrowsableAttribute>().Any(a => !a.Browsable))
                {
                    continue;
                }

                var columnName = property.Name;

                switch (columnName)
                {
                case "Id":
                    columnName = "ID";
                    break;

                case "DataSource":
                    columnName = "Data Source";
                    break;

                case "PlaceholderKey":
                    columnName = "Placeholder";
                    break;
                }

                yield return(columnName);
            }
        }
コード例 #9
0
        private void OnItemClicked(DictionaryItem item)
        {
            RenderingItem renderingItem = new RenderingItem(item, false);

            _parametersManager.Set(Parameters.RenderingItem, renderingItem);
            ShowViewModel <ArticleViewModel>();
        }
コード例 #10
0
        private Renderer GetRenderer(Rendering rendering, GetRendererArgs args)
        {
            RenderingItem renderingItem = rendering.RenderingItem;

            if (renderingItem != null && renderingItem.InnerItem.TemplateID == TemplateIds.ControllerRendering)
            {
                string controller = renderingItem.InnerItem[Templates.CDNControllerRendering.Fields.CDNDefaultController];
                string action     = renderingItem.InnerItem[Templates.CDNControllerRendering.Fields.CDNDefaultControllerAction];
                if (controller.IsWhiteSpaceOrNull() || action.IsWhiteSpaceOrNull())
                {
                    return(new ControllerRenderer
                    {
                        ControllerName = "CDN",
                        ActionName = "DefaultLoader"
                    });
                }

                return(new ControllerRenderer
                {
                    ControllerName = controller,
                    ActionName = action
                });
            }

            return(null);
        }
コード例 #11
0
        private Renderer GetRenderer(Rendering rendering, GetRendererArgs args)
        {
            RenderingItem renderingItem = rendering.RenderingItem;

            if (renderingItem != null && renderingItem.InnerItem.TemplateID == TemplateIds.ViewRendering)
            {
                string viewPath = renderingItem.InnerItem[Templates.CDNViewRendering.Fields.CDNDefaultPath];
                if (viewPath.IsWhiteSpaceOrNull())
                {
                    return(new ViewRenderer
                    {
                        ViewPath = "/Views/CDN/DefaultLoader.cshtml",
                        Rendering = rendering
                    });
                }

                return(new ViewRenderer
                {
                    ViewPath = viewPath,
                    Rendering = rendering
                });
            }

            return(null);
        }
コード例 #12
0
 internal RenderingItemBorderTablix(int rowZIndex, int columnZIndex, int rowIndex, int columnIndex, RenderingItem item)
 {
     RowZIndex    = rowZIndex;
     ColumnZIndex = columnZIndex;
     RowIndex     = rowIndex;
     ColumnIndex  = columnIndex;
     Item         = item;
 }
コード例 #13
0
        public void GetDataBindingValues(RenderingItem renderingItem, DynamicProperty dynamicProperty, List <string> values)
        {
            Assert.ArgumentNotNull(renderingItem, nameof(renderingItem));
            Assert.ArgumentNotNull(dynamicProperty, nameof(dynamicProperty));
            Assert.ArgumentNotNull(values, nameof(values));

            this.GetRenderingContainerDataBindingValues(renderingItem, dynamicProperty, values);
        }
コード例 #14
0
        public PropertyDesignerControl([NotNull] RenderingItem rendering)
        {
            Assert.ArgumentNotNull(rendering, nameof(rendering));

            InitializeComponent();

            Rendering = rendering;
        }
コード例 #15
0
        public EditorBuilder([NotNull] Grid grid, [NotNull] RenderingItem renderingItem)
        {
            Assert.ArgumentNotNull(grid, nameof(grid));
            Assert.ArgumentNotNull(renderingItem, nameof(renderingItem));

            Grid          = grid;
            RenderingItem = renderingItem;
        }
        public string GetId(RenderingItem renderingItem)
        {
            if (renderingItem == null)
            {
                return(null);
            }

            return($"{renderingItem.ID.Guid:N}");
        }
コード例 #17
0
 private static AreaRouteData GetAreaRouteDataFromRenderingItem(RenderingItem renderingItem)
 {
     var fields = renderingItem.InnerItem.Fields;
     var action = fields[Constants.Fields.Controller.Action].GetValue(true);
     var controller = fields[Constants.Fields.Controller.Name].GetValue(true);
     var area = fields[Constants.Fields.Controller.Area].GetValue(true);
     var useChildActionBehavior = new CheckboxField(fields[Constants.Fields.Controller.UseChildActionBehavior]).Checked;
     return new AreaRouteData(controller, action, area, useChildActionBehavior);
 }
コード例 #18
0
        private void InsertRenderings([CanBeNull] LayoutDesignerItem target, ControlDragAdornerPosition position, [NotNull] IEnumerable <IItem> items)
        {
            Debug.ArgumentNotNull(items, nameof(items));

            int index;

            if (target != null)
            {
                index = this.items.IndexOf(target);
                if (position == ControlDragAdornerPosition.Bottom)
                {
                    index++;
                }
            }
            else
            {
                index = this.items.Count;
            }

            string placeholderKey  = null;
            var    renderingTarget = target as RenderingItem;

            if (renderingTarget != null)
            {
                placeholderKey = renderingTarget.PlaceholderKey.Key;
            }

            var modified = false;
            LayoutDesignerItem selectedRendering = null;

            foreach (var item in items)
            {
                var renderingItem = new RenderingItem(this, item);

                var layoutItem = AddRendering(renderingItem, index, index);

                var rendering = layoutItem as RenderingItem;
                if (rendering != null && string.IsNullOrEmpty(rendering.PlaceholderKey.Key) && !string.IsNullOrEmpty(placeholderKey))
                {
                    rendering.PlaceholderKey = new PlaceHolderKey(placeholderKey);
                }

                if (selectedRendering == null)
                {
                    selectedRendering = layoutItem;
                }

                modified = true;
            }

            List.SelectedItem = selectedRendering;
            Keyboard.Focus(List);
            if (modified)
            {
                Modified = true;
            }
        }
コード例 #19
0
        public DataSourceDesignerControl([NotNull] RenderingItem rendering)
        {
            Assert.ArgumentNotNull(rendering, nameof(rendering));

            InitializeComponent();

            DataContext = rendering;
            Rendering   = rendering;
        }
コード例 #20
0
        private static AreaRouteData GetAreaRouteDataFromRenderingItem(RenderingItem renderingItem)
        {
            var fields     = renderingItem.InnerItem.Fields;
            var action     = fields[Constants.Fields.Controller.Action].GetValue(true);
            var controller = fields[Constants.Fields.Controller.Name].GetValue(true);
            var area       = fields[Constants.Fields.Controller.Area].GetValue(true);

            return(new AreaRouteData(controller, action, area));
        }
コード例 #21
0
        private static AreaRouteData GetAreaRouteDataFromRenderingItem(RenderingItem renderingItem)
        {
            var fields                 = renderingItem.InnerItem.Fields;
            var action                 = fields[Constants.Fields.Controller.Action].GetValue(true);
            var controller             = fields[Constants.Fields.Controller.Name].GetValue(true);
            var area                   = fields[Constants.Fields.Controller.Area].GetValue(true);
            var useChildActionBehavior = new CheckboxField(fields[Constants.Fields.Controller.UseChildActionBehavior]).Checked;

            return(new AreaRouteData(controller, action, area, useChildActionBehavior));
        }
コード例 #22
0
        public ParameterDesignerControl([NotNull] PageModel pageModel, [NotNull] RenderingItem rendering)
        {
            Assert.ArgumentNotNull(pageModel, nameof(pageModel));
            Assert.ArgumentNotNull(rendering, nameof(rendering));

            InitializeComponent();

            PageModel = pageModel;
            Rendering = rendering;
        }
コード例 #23
0
        /// <summary>
        /// Gets the standard values item.
        /// </summary>
        /// <param name="renderingDefinition">
        /// The rendering definition.
        /// </param>
        /// <returns>
        /// The standard values item.
        /// </returns>
        private Item GetStandardValuesItem(RenderingDefinition renderingDefinition)
        {
            Assert.ArgumentNotNull(renderingDefinition, "renderingDefinition");
            Item renderingItem = GetRenderingItem(renderingDefinition);

            if (renderingItem == null)
            {
                return(null);
            }
            return(RenderingItem.GetStandardValuesItemFromParametersTemplate(renderingItem));
        }
コード例 #24
0
        private void RenderPopup(DictionaryItem item)
        {
            _previousItem = _renderingItem;

            _renderingItem = new RenderingItem(item, false);
            Render(true);

            FavoriteCommand.IsExecutable    = false;
            UnfavoriteCommand.IsExecutable  = false;
            MorphoTableCommand.IsExecutable = false;
            PlaySoundCommand.IsExecutable   = false;
        }
コード例 #25
0
        public BindingAnchor([NotNull] PageModel pageModel, [NotNull] RenderingItem rendering, [NotNull] DynamicProperty dynamicProperty)
        {
            Assert.ArgumentNotNull(pageModel, nameof(pageModel));
            Assert.ArgumentNotNull(rendering, nameof(rendering));
            Assert.ArgumentNotNull(dynamicProperty, nameof(dynamicProperty));

            InitializeComponent();

            PageModel       = pageModel;
            Rendering       = rendering;
            DynamicProperty = dynamicProperty;
        }
コード例 #26
0
        public RenderingTreeViewItem AddRendering([NotNull] PlaceHolderTreeViewItem placeHolderTreeViewItem, [NotNull] IItem item, int treeViewIndex, int renderingIndex)
        {
            Assert.ArgumentNotNull(placeHolderTreeViewItem, nameof(placeHolderTreeViewItem));
            Assert.ArgumentNotNull(item, nameof(item));

            var rendering = new RenderingItem(Device, item)
            {
                PlaceholderKey = new PlaceHolderKey(placeHolderTreeViewItem.PlaceHolderName)
            };

            return(AddRendering(placeHolderTreeViewItem, rendering, treeViewIndex, renderingIndex));
        }
コード例 #27
0
        public override void Execute(CommandContext context)
        {
            string           formValue        = WebUtil.GetFormValue("scLayout");
            string           xml              = WebEditUtil.ConvertJSONLayoutToXML(formValue);
            string           id               = ShortID.Decode(WebUtil.GetFormValue("scDeviceID"));
            LayoutDefinition layoutDefinition = LayoutDefinition.Parse(xml);

            if (layoutDefinition == null)
            {
                ReturnLayout();
                return;
            }
            DeviceDefinition device = layoutDefinition.GetDevice(id);

            if (device == null)
            {
                ReturnLayout();
                return;
            }
            string uniqueId = Guid.Parse(context.Parameters["renderingUid"]).ToString("B").ToUpperInvariant();
            RenderingDefinition renderingByUniqueId = device.GetRenderingByUniqueId(uniqueId);

            if (renderingByUniqueId == null)
            {
                ReturnLayout();
                return;
            }
            if (string.IsNullOrEmpty(renderingByUniqueId.Parameters))
            {
                if (!string.IsNullOrEmpty(renderingByUniqueId.ItemID))
                {
                    RenderingItem renderingItem = Client.ContentDatabase.GetItem(renderingByUniqueId.ItemID);
                    renderingByUniqueId.Parameters = ((renderingItem != null) ? renderingItem.Parameters : string.Empty);
                }
                else
                {
                    renderingByUniqueId.Parameters = string.Empty;
                }
            }
            NameValueCollection nameValueCollection = WebUtil.ParseUrlParameters(renderingByUniqueId.Parameters);
            string input = nameValueCollection["FieldNames"];
            string text  = context.Parameters["variant"];

            if (Guid.TryParse(input, out Guid result) && result == Guid.Parse(text))
            {
                ReturnLayout();
                return;
            }
            nameValueCollection["FieldNames"] = text;
            renderingByUniqueId.Parameters    = new UrlString(nameValueCollection.EscapeDataValues()).GetUrl();
            formValue = WebEditUtil.ConvertXMLLayoutToJSON(layoutDefinition.ToXml());
            ReturnLayout(formValue);
        }
コード例 #28
0
        public QueryDataSourceDesignerControl([NotNull] RenderingItem rendering)
        {
            Assert.ArgumentNotNull(rendering, nameof(rendering));

            InitializeComponent();

            DataContext = rendering;
            Rendering   = rendering;

            Rendering.PropertyChanged += SetProperty;
            QueryBuilder.TextChanged  += HandleTextChanged;
        }
コード例 #29
0
        protected string RenderControllerRendering(Database contextDatabase, ID dataSourceItemId)
        {
            var ri        = new RenderingItem(contextDatabase.GetItem(ID.Parse(Constants.FormMvcRenderingId)));
            var rendering = new Rendering {
                RenderingType = "Controller", UniqueId = Guid.NewGuid(), DataSource = dataSourceItemId.ToString(), Placeholder = "forms", RenderingItem = ri
            };
            var stringBuilder = new StringBuilder();
            var renderingArgs = new RenderRenderingArgs(rendering, new StringWriter(stringBuilder));

            CorePipeline.Run("mvc.renderRendering", renderingArgs);
            return(stringBuilder.ToString());
        }
コード例 #30
0
        public void LoadDevice([NotNull] XElement device)
        {
            Assert.ArgumentNotNull(device, nameof(device));

            items.Clear();

            DeviceId = device.GetAttributeValue("id");

            var layout = device.GetAttributeValue("l");

            if (!string.IsNullOrEmpty(layout))
            {
                LayoutUri = new ItemUri(DatabaseUri, new ItemId(new Guid(layout)));
            }
            else
            {
                LayoutUri = ItemUri.Empty;
            }

            LayoutName          = device.GetAttributeValue("ln");
            LayoutPath          = device.GetAttributeValue("lp");
            LayoutSelector.Text = device.GetAttributeValue("lp");

            foreach (var element in device.Elements(@"r"))
            {
                var renderingItem = new RenderingItem(this, DatabaseUri, element);
                renderingItem.Modified += SetModified;

                items.Add(renderingItem);
            }

            foreach (var element in device.Elements(@"p"))
            {
                var placeholderItem = new PlaceholderItem(DatabaseUri, element);

                placeholderItem.Modified += SetModified;

                items.Add(placeholderItem);
            }

            if (items.Count > 0 || !string.IsNullOrEmpty(LayoutSelector.Text))
            {
                ListContextMenu.Visibility = Visibility.Visible;
                NoItems.Visibility         = Visibility.Collapsed;
                List.SelectedIndex         = 0;
            }
            else
            {
                NoItems.Visibility         = Visibility.Visible;
                ListContextMenu.Visibility = Visibility.Collapsed;
            }
        }
コード例 #31
0
        public void AddRendering(RenderingItem rendering)
        {
            Assert.ArgumentNotNull(rendering, nameof(rendering));

            var treeViewIndex  = -1;
            var renderingIndex = -1;

            var selectedItems = TreeView.SelectedItems;

            if (selectedItems.Count() != 1)
            {
                AppHost.MessageBox("Select a Placeholder first.", "Information", MessageBoxButton.OK, MessageBoxImage.Information);
                return;
            }

            var placeHolderTreeViewItem = selectedItems.FirstOrDefault() as PlaceHolderTreeViewItem;

            if (placeHolderTreeViewItem == null)
            {
                var renderingTreeViewItem = selectedItems.FirstOrDefault() as RenderingTreeViewItem;
                if (renderingTreeViewItem != null)
                {
                    placeHolderTreeViewItem = renderingTreeViewItem.GetAncestor <PlaceHolderTreeViewItem>();
                    if (placeHolderTreeViewItem != null)
                    {
                        treeViewIndex  = placeHolderTreeViewItem.Items.IndexOf(renderingTreeViewItem);
                        renderingIndex = placeHolderTreeViewItem.DeviceTreeViewItem.Device.Renderings.IndexOf(renderingTreeViewItem.Rendering);
                    }
                }
            }

            if (placeHolderTreeViewItem == null)
            {
                AppHost.MessageBox("Select a Placeholder first.", "Information", MessageBoxButton.OK, MessageBoxImage.Information);
                return;
            }

            var deviceTreeViewItem = placeHolderTreeViewItem.GetAncestor <DeviceTreeViewItem>();

            if (deviceTreeViewItem == null)
            {
                return;
            }

            rendering.PlaceholderKey = new PlaceHolderKey(placeHolderTreeViewItem.PlaceHolderName);

            var newRenderingTreeViewItem = deviceTreeViewItem.AddRendering(placeHolderTreeViewItem, rendering, treeViewIndex, renderingIndex);

            newRenderingTreeViewItem.BringIntoView();
            newRenderingTreeViewItem.Focus();
            Keyboard.Focus(newRenderingTreeViewItem);
        }
コード例 #32
0
        public virtual void Process(GetRenderingDatasourceArgs args)
        {
            Assert.IsNotNull(args, "args");
            RenderingItem rendering = new RenderingItem(args.RenderingItem);
            UrlString urlString = new UrlString(rendering.Parameters);
            var contentFolder = urlString.Parameters[TEMPLATE_PARAMETER];
            if (string.IsNullOrEmpty(contentFolder))
            {
                return;
            }
            if (!ID.IsID(contentFolder))
            {
                Log.Warn(string.Format("{0} for Rendering {1} contains improperly formatted ID: {2}", TEMPLATE_PARAMETER, args.RenderingItem.Name, contentFolder), this);
                return;
            }

            string text = args.RenderingItem["Datasource Location"];
            if (!string.IsNullOrEmpty(text))
            {
                if (text.StartsWith("./") && !string.IsNullOrEmpty(args.ContextItemPath))
                {
                    var itemPath = args.ContextItemPath + text.Remove(0, 1);
                    var item = args.ContentDatabase.GetItem(itemPath);
                    var contextItem = args.ContentDatabase.GetItem(args.ContextItemPath);
                    if (item == null && contextItem != null)
                    {
                        string itemName = text.Remove(0, 2);
                        //if we create an item in the current site context, the WebEditRibbonForm will see an ItemSaved event and think it needs to reload the page
                        using (new SiteContextSwitcher(SiteContextFactory.GetSiteContext("system")))
                        {
                            var datasourceLocationitem = contextItem.Add(itemName, new TemplateID(ID.Parse(contentFolder)));

                            // Set the sort order for the datasource location to 0 so it sorts to the top.
                            using (new EditContext(datasourceLocationitem))
                            {
                                datasourceLocationitem.Fields["__Sortorder"].Value = "0";
                            }
                        }
                    }
                }
            }
        }