Exemple #1
0
        public override async ValueTask <RouteValueDictionary> TransformAsync(HttpContext httpContext, RouteValueDictionary values)
        {
            var displayUrl = httpContext.Request.GetDisplayUrl();
            var uri        = ConvertStringToUri(displayUrl);

            if (uri != null)
            {
                CmsTreeNode?cmsTreeNode = await cmsTreeService.GetCmsTreeNode(CmsTreeType, uri.AbsolutePath, null).ConfigureAwait(false);

                if (cmsTreeNode != null && cmsTreeNode.CmsItemId.HasValue)
                {
                    var cmsItem = await readCmsItemService.Read <CmsItem>(CmsTreeType, cmsTreeNode.CmsItemId.Value, null).ConfigureAwait(false);

                    if (cmsItem != null)
                    {
                        return(new RouteValueDictionary()
                        {
                            { "controller", cmsTreeNode.CmsItemType },
                            { "action", "Index" },
                            { "area", null },
                            { "cmsItemId", cmsTreeNode.CmsItemId.Value },
                        });
                    }
                }
            }

            return(new RouteValueDictionary());
        }
Exemple #2
0
        public async Task <IActionResult> EditTree([FromRoute] string cmsTreeType, [FromRoute] string slug, [FromQuery] string?treeItemSchemaKey, [FromQuery] string?lang)
        {
            slug ??= string.Empty;
            slug = slug.TrimStart('/');
            slug = "/" + slug;


            var cmsMenuItem = schemaService.GetCmsType(cmsTreeType);

            if (cmsMenuItem == null || !cmsMenuItem.SchemaKeys.Any())
            {
                return(new NotFoundResult());
            }

            CmsTreeNode?cmsTreeItem = await cmsTreeService.GetCmsTreeNode(cmsTreeType, slug, lang).ConfigureAwait(false);

            if (cmsTreeItem == null)
            {
                cmsTreeItem = await cmsTreeService.CreateOrUpdateCmsTreeNodeForSlug(cmsTreeType, slug, new CmsTreeNode()
                {
                    CmsItemId = Guid.NewGuid()
                }, lang, this.User.Identity?.Name);
            }

            if (string.IsNullOrEmpty(cmsTreeItem.CmsItemType) && string.IsNullOrEmpty(treeItemSchemaKey))
            {
                EditTreeViewModel vm = new EditTreeViewModel
                {
                    MenuCmsItem       = cmsMenuItem,
                    CmsType           = cmsTreeType,
                    Language          = lang,
                    TreeItemSchemaKey = treeItemSchemaKey,
                    TreeNodeId        = cmsTreeItem?.NodeId
                };

                return(View(vm));
            }

            Guid?id = cmsTreeItem.CmsItemId;

            if (!id.HasValue)
            {
                id = Guid.NewGuid();
            }

            return(RedirectToAction("Edit", new { cmsType = cmsTreeType, id = id, lang = lang, treeItemSchemaKey = treeItemSchemaKey, treeNodeId = cmsTreeItem.NodeId }));
        }