public void BuildEditItemUrl_EmptyElements_ThrowsException()
        {
            var elements  = new ElementIdentifier[0];
            var underTest = new EditLinkBuilder(DefaultOptions);

            Assert.Throws <ArgumentException>(() => underTest.BuildEditItemUrl(_language, elements));
        }
        public void BuildEditItemUrl_EmptyLanguageForElements_ThrowsException()
        {
            var underTest = new EditLinkBuilder(DefaultOptions);

            Assert.Throws <ArgumentException>(() => underTest.BuildEditItemUrl(string.Empty,
                                                                               new ElementIdentifier("76c06b74-bae9-4732-b629-1a59395e893d", "single-element-Codename")));
        }
        public override Uri BuildEditLink(ResourceContext instanceContext, ODataMetadataLevel metadataLevel, Uri idLink)
        {
            if (EditLinkBuilder != null)
            {
                return(EditLinkBuilder.Factory(instanceContext));
            }

            return(null);
        }
        public override Uri BuildEditLink(EntityInstanceContext instanceContext, ODataMetadataLevel metadataLevel, string idLink)
        {
            if (EditLinkBuilder != null)
            {
                return(EditLinkBuilder.Factory(instanceContext));
            }

            return(null);
        }
        public EditLinkHelper(string projectId)
        {
            var linkBuilderoptions = new ManagementHelpersOptions()
            {
                ProjectId = projectId
            };

            Builder = new EditLinkBuilder(linkBuilderoptions);
        }
        public void BuildEditItemUrl_ValidInput_ReturnsValidUrl()
        {
            var underTest = new EditLinkBuilder(DefaultOptions);
            var result    = underTest.BuildEditItemUrl(_language, _itemId);

            var expected = "https://app.kontent.ai/goto/edit-item/project/14dc0cf8-6cc1-4f20-8e2e-0b5edea89e43/variant-codename/some-Language-Codename/item/1cdaa8ef-cb2b-4f82-82e9-45467b2e01b9";

            Assert.Equal(expected, result);
        }
示例#7
0
        private EditLinkHelper()
        {
            var projectId          = AppSettingProvider.ProjectId.ToString() ?? AppSettingProvider.DefaultProjectId.ToString();
            var linkBuilderOptions = new ContentManagementHelpersOptions()
            {
                ProjectId = projectId
            };

            Builder = new EditLinkBuilder(linkBuilderOptions);
        }
示例#8
0
        private EditLinkHelper(IConfiguration configuration)
        {
            this.configuration = configuration;
            var projectId          = configuration.GetSection(nameof(DeliveryOptions))[nameof(DeliveryOptions.ProjectId)].ToString() ?? configuration.GetSection(nameof(AppConfiguration)).Get <AppConfiguration>().DefaultProjectId.ToString();
            var linkBuilderOptions = new ManagementHelpersOptions()
            {
                ProjectId = projectId
            };

            Builder = new EditLinkBuilder(linkBuilderOptions);
        }
        public void BuildEditItemUrl_SingleElement_ReturnsValidUrl()
        {
            var elementIdentifier = new ElementIdentifier(_itemId, "single-element-Codename");

            var underTest = new EditLinkBuilder(DefaultOptions);
            var result    = underTest.BuildEditItemUrl(_language, elementIdentifier);

            var expected = "https://app.kenticocloud.com/goto/edit-item/project/14dc0cf8-6cc1-4f20-8e2e-0b5edea89e43/variant-codename/some-Language-Codename/item/1cdaa8ef-cb2b-4f82-82e9-45467b2e01b9/element/single-element-Codename";

            Assert.Equal(expected, result);
        }
        public void BuildEditItemUrl_AdminUrlOtherThanDefault_ReturnsCorrectUrl()
        {
            var options = new ManagementHelpersOptions
            {
                AdminUrl  = "https://someOther.url/{0}",
                ProjectId = "34998683-4dd6-441c-b4cb-57493cafcaf0",
            };

            var underTest = new EditLinkBuilder(options);
            var result    = underTest.BuildEditItemUrl(_language, _itemId);

            var expected = "https://someOther.url/goto/edit-item/project/34998683-4dd6-441c-b4cb-57493cafcaf0/variant-codename/some-Language-Codename/item/1cdaa8ef-cb2b-4f82-82e9-45467b2e01b9";

            Assert.Equal(expected, result);
        }
示例#11
0
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            var itemUrl = EditLinkBuilder.BuildEditItemUrl(Language, ElementIdentifiers);

            var style = Inline ? "inline" : "block";

            output.TagName = "a";
            output.Attributes.SetAttribute("target", "_blank");
            output.Attributes.SetAttribute("href", itemUrl);
            output.Attributes.Add("class", $"edit-link__overlay--{style}");
            output.TagMode = TagMode.StartTagAndEndTag;

            var btn = $@"<i aria-hidden=""true"" class=""edit-link__button-icon edit-link__button-icon--{style}""></i>";

            if (!Inline)
            {
                btn = $@"<span>{btn}</span>";
            }
            output.Content.SetHtmlContent(btn);
        }
示例#12
0
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            output.TagName = "div";
            output.Attributes.Add("class", "edit-mode-panel");
            output.TagMode = TagMode.StartTagAndEndTag;
            if (DeliveryOptions.CurrentValue.UsePreviewApi)
            {
                var    itemUrl = EditLinkBuilder.BuildEditItemUrl(Language, ContentItemId);
                string html    = $@"
    <div>
        <div class=""edit-mode-panel__toggle"">
            <label class=""switch"">
                <input id=""edit-mode-switch"" type=""checkbox"" onchange=""toggleEditMode(this.checked)"" autocomplete=""off"">
                <span class=""slider round""></span>
            </label>
        </div>
        <div class=""edit-mode-panel__caption"">
            <span class=""edit-mode-panel__title"">Edit mode</span>
        </div>
    </div>
    <div class=""edit-mode-panel__navigate-link"">
        <a target=""_blank"" href=""{itemUrl}"">Open content item in Kontent</a>
    </div>";
                output.Content.SetHtmlContent(html);

                string after = $@"
<script type=""text/javascript"">
    function toggleEditMode(isChecked) {{
        const body = document.getElementsByTagName('body')[0];
        isChecked ? body.classList.add('edit-mode') : body.classList.remove('edit-mode');
    }}
</script>";
                output.PostContent.SetHtmlContent(after);
            }
            else
            {
                output.SuppressOutput();
            }
        }
        public void BuildEditItemUrl_MultipleElements_ReturnsValidUrl()
        {
            var elements = new ElementIdentifier[]
            {
                new ElementIdentifier("76c06b74-bae9-4732-b629-1a59395e893d", "some-Element-Codename-1"),
                new ElementIdentifier("326c63aa-ae71-40b7-a6a8-56455b0b9751", "some-Element-Codename-2"),
                new ElementIdentifier("ffcd0436-8274-40ee-aaae-86fee1966fce", "some-Element-Codename-3"),
                new ElementIdentifier("d31d27cf-ddf6-4040-ab67-2f70edc0d46b", "some-Element-Codename-4"),
            };

            var underTest = new EditLinkBuilder(DefaultOptions);
            var result    = underTest.BuildEditItemUrl(_language, elements);

            var expected = "https://app.kontent.ai/goto/edit-item/" +
                           "project/14dc0cf8-6cc1-4f20-8e2e-0b5edea89e43/variant-codename/some-Language-Codename/" +
                           "item/76c06b74-bae9-4732-b629-1a59395e893d/element/some-Element-Codename-1/" +
                           "item/326c63aa-ae71-40b7-a6a8-56455b0b9751/element/some-Element-Codename-2/" +
                           "item/ffcd0436-8274-40ee-aaae-86fee1966fce/element/some-Element-Codename-3/" +
                           "item/d31d27cf-ddf6-4040-ab67-2f70edc0d46b/element/some-Element-Codename-4";

            Assert.Equal(expected, result);
        }
        public void BuildEditItemUrl_EmptyItemId_ThrowsException()
        {
            var underTest = new EditLinkBuilder(DefaultOptions);

            Assert.Throws <ArgumentException>(() => underTest.BuildEditItemUrl(_language, string.Empty));
        }
        public void BuildEditItemUrl_NoElements_ThrowsException()
        {
            var underTest = new EditLinkBuilder(DefaultOptions);

            Assert.Throws <ArgumentException>(() => underTest.BuildEditItemUrl(_language));
        }