public void CanEvaluate_Selected_AsSelected_AndUrlEncoded_ItemPath()
		{
			PluginContext ctx = new PluginContext(new SelectionUtility(new Items.CustomExtensionPage(), null), null, null, ControlPanelState.Visible, null, null);

			var result = ctx.Format("Selected: {selected}", true);
			Assert.That(result, Is.EqualTo("Selected: " + HttpUtility.UrlEncode("/")));
		}
		public void CanEvaluate()
		{
			PluginContext ctx = new PluginContext(new SelectionUtility(new Items.CustomExtensionPage(), null), null, null, ControlPanelState.Visible, null, null);

			var result = ctx.Format("{Selected.ID}", false);
			Assert.That(result, Is.EqualTo("0"));
		}
Example #3
0
        public void CanEvaluate_Selected_AsSelected_ItemPath()
        {
            PluginContext ctx = new PluginContext(new Items.CustomExtensionPage(), null, null, null, ControlPanelState.Visible, null, null);

            var result = ctx.Format("Selected: {selected}", false);
            Assert.That(result, Is.EqualTo("Selected: /"));
        }
		public override Control AddTo(Control container, PluginContext context)
		{
			var requiredPermission = context.Selected.State == ContentState.Published ? Permission.Publish : Permission.Write;
			if (!context.Engine.SecurityManager.IsAuthorized(context.HttpContext.User, context.Selected, requiredPermission))
				return null;

			if(!ActiveFor(container, context.State)) return null;
			
			if (!context.Selected.VersionOf.HasValue) 
				return base.AddTo(container, context);

			HyperLink hl = new HyperLink();
			hl.Text = GetInnerHtml(context, "{IconsUrl}/cross_orange.png", ToolTip, Title);
			hl.NavigateUrl = Url.Parse("{ManagementUrl}/Content/DiscardPreview.aspx").ResolveTokens()
				.AppendQuery("selectedUrl", context.Selected.Url)
				.AppendQuery(PathData.ItemQueryKey, context.Selected.VersionOf.ID)
				.AppendQuery(PathData.VersionIndexQueryKey, context.Selected.VersionIndex);
			hl.CssClass = "cancel";
			hl.Attributes["onclick"] = "return confirm('Are you certain?');";

			hl.ToolTip = Utility.GetResourceString(GlobalResourceClassName, Name + ".ToolTip") ?? context.Format("Delete this version", false);

			container.Controls.Add(hl);

			return hl;
		}
		protected virtual Url GetNavigateUrl(PluginContext context)
		{
			Url url = context.Rebase(context.Format(NavigateUrl, UrlEncode));
			if (!string.IsNullOrEmpty(NavigateQuery))
				url = url.AppendQuery(context.Format(NavigateQuery, UrlEncode));
			return url;
		}
		public override Control AddTo(Control container, PluginContext context)
		{
			Control control = base.AddTo(container, context);
			if(control != null)
				container.Page.PreRender += delegate { control.Visible = container.Page.Items[Zone.PageKey] != null;};
			return control;
		}
        public override Control AddTo(Control container, PluginContext context)
        {
            ILanguageGateway gateway = N2.Context.Current.Resolve<ILanguageGateway>();
            if (!gateway.Enabled)
                return null;

            HtmlGenericControl div = new HtmlGenericControl("div");
            div.Attributes["class"] = "languages";
            container.Controls.Add(div);

            base.AddTo(div, context);

            foreach (ILanguage language in gateway.GetAvailableLanguages())
            {
                Url url = Engine.ManagementPaths.ResolveResourceUrl("{ManagementUrl}/Content/Globalization/Translate.aspx");
                url = url.AppendQuery("language", language.LanguageCode);
                url = url.AppendQuery("selected={selected}");

                HyperLink h = new HyperLink();
                h.ID = language.LanguageCode.Replace('-', '_').Replace(' ', '_');
                h.Target = Targets.Preview;
                h.NavigateUrl = context.Rebase(context.Format(url, true));
                h.CssClass = "language";
                h.ToolTip = language.LanguageTitle;
                h.Text = string.Format("<img src='{0}' alt=''/>", Url.ToAbsolute(language.FlagUrl));
                div.Controls.Add(h);

                RegisterToolbarUrl(container, h.ClientID, url);
            }

            return div;
        }
		protected virtual HyperLink AddAnchor(Control container, PluginContext context)
		{
			string tooltip = Utility.GetResourceString(GlobalResourceClassName, Name + ".ToolTip") ?? ToolTip;
			string title = Utility.GetResourceString(GlobalResourceClassName, Name + ".Title") ?? Title;
			string alternative = Utility.GetResourceString(GlobalResourceClassName, Name + ".AlternativeText") ?? AlternativeText;

			HyperLink a = new HyperLink();
			a.ID = "h" + Name;
			a.NavigateUrl = context.Rebase(context.Format(UrlFormat, true));
			a.SkinID = "ToolBarLink_" + Name;

			a.Target = Target;
			a.Attributes["class"] = Name + " " + RequiredPermission.ToString() + (string.IsNullOrEmpty(IconUrl) ? "" : " iconed");				
			if (UrlFormat.Contains("{"))
			{
				a.Attributes["class"] += " templatedurl";
				a.Attributes["data-url-template"] = context.Rebase(UrlFormat);
			}
			a.ToolTip = tooltip;
			a.Text = title;
			ApplyStyles(context, a);

			container.Controls.Add(a);
			return a;
		}
        public override Control AddTo(Control container, PluginContext context)
        {
            var selector = context.Engine.Resolve<LanguageGatewaySelector>();
            if (!selector.Enabled || selector.LanguagesPerSite /*avoid showing options that might not be relevant */)
                return null;

            ILanguageGateway gateway = selector.GetAllLanguages();

            HtmlGenericControl div = new HtmlGenericControl("div");
            div.Attributes["class"] = "languages";
            container.Controls.Add(div);

            base.AddTo(div, context);

            foreach (ILanguage language in gateway.GetAvailableLanguages())
            {
                Url url = Engine.ManagementPaths.ResolveResourceUrl("{ManagementUrl}/Content/Globalization/Translate.aspx");
                url = url.AppendQuery("language", language.LanguageCode);
                url = url.AppendQuery(SelectionUtility.SelectedQueryKey + "={selected}");

                HyperLink h = new HyperLink();
                h.ID = language.LanguageCode.Replace('-', '_').Replace(' ', '_');
                h.Target = Targets.Preview;
                h.NavigateUrl = context.Rebase(context.Format(url, true));
                h.CssClass = "templatedurl language";
                h.ToolTip = language.LanguageTitle;
                h.Text = string.Format("<img src='{0}' alt=''/>", Url.ToAbsolute(language.FlagUrl));
                h.Attributes["data-url-template"] = context.Rebase(url);
                div.Controls.Add(h);
            }

            return div;
        }
		public override Control AddTo(Control container, PluginContext context)
		{
			HtmlGenericControl hgc = new HtmlGenericControl("div");
			hgc.Attributes["class"] = "separator";
			container.Controls.Add(hgc);
			return hgc;
		}
Example #11
0
        protected override N2.Web.Url GetNavigateUrl(PluginContext context)
        {
            if (!Engine.Config.Sections.Management.Legacy)
                return base.GetNavigateUrl(context);

            return context.Rebase(context.Format("{ManagementUrl}/Content/Default.aspx?{Selection.SelectedQueryKey}={Selected.Path}", UrlEncode));
        }
Example #12
0
        public override Control AddTo(Control container, PluginContext context)
        {
            HyperLink a = AddAnchor(container, context);

            RegisterToolbarUrl(container, a.ClientID, context.Rebase(UrlFormat));

            return a;
        }
		protected string GetInnerHtml(PluginContext pluginContext, string iconUrl, string alt, string text)
		{
			if (!string.IsNullOrEmpty(IconClass))
				return string.Format("<b class='{0}'></b> {1}", IconClass, text);
			if (string.IsNullOrEmpty(iconUrl))
				return text;
			return string.Format("<img src='{0}' alt='{1}'/>{2}", pluginContext.Rebase(iconUrl), alt, text);
		}
		public override System.Web.UI.Control AddTo(System.Web.UI.Control container, PluginContext context)
		{
			HyperLink link = (HyperLink)base.AddTo(container, context);
			if (context.HttpContext.Request.QueryString["edit"] == "drag")
				link.CssClass += " toggled";
			else
				link.NavigateUrl = link.NavigateUrl.ToUrl().AppendQuery("edit=drag");
			return link;
		}
		public override System.Web.UI.Control AddTo(System.Web.UI.Control container, PluginContext context)
		{
			if (context.Selected == null)
				return null;

			if (!context.Engine.Config.Sections.Management.Collaboration.ActivityTrackingEnabled)
				return null;

			var script = new LiteralControl(string.Format(@"<script>
setInterval(function() {{ $.get('{0}?activity=View&{1}={2}'); }}, 60000);
</script>", Url.ResolveTokens("{ManagementUrl}/Content/Activity/Notify.ashx"), PathData.SelectedQueryKey, context.Selected.Path));
			container.Controls.Add(script);
			return script;
		}
        public override Control AddTo(Control container, PluginContext context)
        {
            if(!ActiveFor(container, context.State))
                return null;

            HtmlImage img = new HtmlImage();
            img.Src = Engine.ManagementPaths.ResolveResourceUrl("{ManagementUrl}/Resources/Img/separator.png");
            img.Attributes["class"] = "separator";
            img.Height = 16;
            img.Width = 1;
            img.Alt = "|";
            container.Controls.Add(img);
            return img;
        }
        public override System.Web.UI.Control AddTo(System.Web.UI.Control container, PluginContext context)
        {
            if (context.Selected == null)
                return null;

			var collaboration = context.Engine.Config.Sections.Management.Collaboration;
			if (!collaboration.ActivityTrackingEnabled)
                return null;

            var script = new LiteralControl(string.Format(@"<script>
setInterval(function() {{ $.get('{0}?activity=View&{1}={2}', function(result){{ try {{ n2 && n2.context && n2.context(result) }} catch (ex) {{ console.log(ex); }} }}).fail(function(result){{ try {{ n2 && n2.failure && n2.failure(result) }} catch (ex) {{ console.log(ex); }} }}); }}, {3});
</script>", Url.ResolveTokens(collaboration.PingPath), PathData.SelectedQueryKey, context.Selected.Path, collaboration.PingInterval * 1000));
            container.Controls.Add(script);
            return script;
        }
 public override System.Web.UI.Control AddTo(System.Web.UI.Control container, PluginContext context)
 {
     HyperLink link = (HyperLink)base.AddTo(container, context);
     if (context.HttpContext.Request.QueryString["edit"] == "drag")
     {
         link.CssClass += " toggled";
         link.NavigateUrl = Engine.ManagementPaths.GetManagementInterfaceUrl().ToUrl().AppendSelection(context.Selected);
     }
     else
     {
         link.CssClass += " complementary";
         link.NavigateUrl = Engine.ManagementPaths.GetManagementInterfaceUrl().ToUrl().AppendQuery("mode=Organize").AppendSelection(context.Selected);
     }
     return link;
 }
        public override Control AddTo(Control container, PluginContext context)
        {
            if (!IsAuthorized(container.Page.User))
                return null;

            if (!ActiveFor(container, context.State))
                return null;

            HyperLink hl = new HyperLink();
            hl.Text = GetInnerHtml(IconUrl, ToolTip, Title);
            hl.NavigateUrl = Url.Parse("~/N2/Content/PublishPreview.aspx").AppendQuery("selectedUrl", context.Selected.Url);
            hl.ToolTip = Utility.GetResourceString(GlobalResourceClassName, Name + ".ToolTip") ?? context.Format(ToolTip, false);
            hl.CssClass = "publish";
            container.Controls.Add(hl);

            return hl;
        }
        public override Control AddTo(Control container, PluginContext context)
        {
            if (!IsAuthorized(container.Page.User))
                return null;
            if(!ActiveFor(container, context.State)) return null;
            if (context.Selected.VersionOf == null) return null;

            HyperLink hl = new HyperLink();
            hl.Text = GetInnerHtml(context, IconUrl, ToolTip, Title);
            hl.NavigateUrl = Url.Parse("{ManagementUrl}/Content/DiscardPreview.aspx").ResolveTokens().AppendQuery("selectedUrl", context.Selected.Url);
            hl.CssClass = "cancel";
            hl.Attributes["onclick"] = "return confirm('Are you certain?');";

            hl.ToolTip = Utility.GetResourceString(GlobalResourceClassName, Name + ".ToolTip") ?? context.Format(ToolTip, false);

            container.Controls.Add(hl);

            return hl;
        }
        public override Control AddTo(Control container, PluginContext context)
        {
            if (!context.Engine.SecurityManager.IsAuthorized(this, context.HttpContext.User, context.Selected))
                return null;

            if (!ActiveFor(container, context.State))
                return null;

            HyperLink hl = new HyperLink();
            hl.Text = GetInnerHtml(context, IconUrl, ToolTip, Title);
            hl.NavigateUrl = Url.Parse("{ManagementUrl}/Content/PublishPreview.aspx").ResolveTokens()
                .AppendQuery("selectedUrl", context.Selected.Url)
                .AppendQuery(PathData.ItemQueryKey, context.Selected.VersionOf.ID)
                .AppendQuery(PathData.VersionIndexQueryKey, context.Selected.VersionIndex);
            hl.ToolTip = Utility.GetResourceString(GlobalResourceClassName, Name + ".ToolTip") ?? context.Format(ToolTip, false);
            hl.CssClass = "publish";
            container.Controls.Add(hl);

            return hl;
        }
		public override Control AddTo(Control container, PluginContext context)
		{
			if(RequireCurrentItem && context.Selected == null)
				return null;
			if(!ActiveFor(container, context.State))
				return null;

			HyperLink link = new HyperLink();
			string tooltip = Utility.GetResourceString(GlobalResourceClassName, Name + ".ToolTip") ?? ToolTip;
			string title = Utility.GetResourceString(GlobalResourceClassName, Name + ".Title") ?? Title;
			link.Text = GetInnerHtml(context, IconUrl, tooltip, title);
			Url url = GetNavigateUrl(context);
			link.NavigateUrl = url;
			link.ToolTip = context.Format(tooltip, false);
			link.CssClass = Name + " authorized" + context.Engine.SecurityManager.IsAuthorized(this, context.HttpContext.User, context.Selected) + " " + CssClass;
			
			AddTargetAttribute(link);

			container.Controls.Add(link);

			return link;
		}
        public override Control AddTo(Control container, PluginContext context)
        {
            if(!ActiveFor(container, context.State))
                return null;

            LinkButton btn = new LinkButton();
            btn.Text = GetInnerHtml(IconUrl, ToolTip, Title);
            btn.ToolTip = Utility.GetResourceString(GlobalResourceClassName, Name + ".ToolTip") ?? context.Format(ToolTip, false);
            btn.CssClass = "save";
            container.Controls.Add(btn);
            btn.Command += delegate
                {
                    IList<IItemEditor> itemEditors = GetEditedItems(container.Page);

                    foreach (IItemEditor itemEditor in itemEditors)
                    {
                        Context.Current.EditManager.Save(itemEditor.CurrentItem, itemEditor.AddedEditors, itemEditor.VersioningMode, container.Page.User);
                    }

                    RedirectTo(container.Page, context.Selected);
                };
            return btn;
        }
Example #24
0
        protected virtual HyperLink AddAnchor(Control container, PluginContext context)
        {
            string tooltip = Utility.GetResourceString(GlobalResourceClassName, Name + ".ToolTip") ?? ToolTip;
            string title = Utility.GetResourceString(GlobalResourceClassName, Name + ".Title") ?? Title;
            string alternative = Utility.GetResourceString(GlobalResourceClassName, Name + ".AlternativeText") ?? AlternativeText;

            HyperLink a = new HyperLink();
            a.ID = "h" + Name;
            a.NavigateUrl = context.Rebase(context.Format(UrlFormat, true));
            a.SkinID = "ToolBarLink_" + Name;

            a.Target = Target;
            a.Attributes["class"] = Name;
            a.Text = tooltip;
            a.ToolTip = tooltip;
            a.Text = title;
            ApplyStyles(context, a);

            container.Controls.Add(a);
            return a;
        }
		public override Control AddTo(Control container, PluginContext context)
		{
			Control c = container.Page.LoadControl(context.Rebase(userControlUrl));
			container.Controls.Add(c);
			return c;
		}
		public override Control AddTo(Control container, PluginContext context)
		{
			HyperLink a = AddAnchor(container, context);
			return a;
		}
        public override Control AddTo(Control container, PluginContext context)
        {
            if(RequireCurrentItem && context.Selected == null)
                return null;
            if(!ActiveFor(container, context.State))
                return null;

            HyperLink link = new HyperLink();
            string tooltip = Utility.GetResourceString(GlobalResourceClassName, Name + ".ToolTip") ?? ToolTip;
            string title = Utility.GetResourceString(GlobalResourceClassName, Name + ".Title") ?? Title;
            link.Text = GetInnerHtml(context, IconUrl, tooltip, title);
            Url url = context.Rebase(context.Format(NavigateUrl, UrlEncode));
            if (!string.IsNullOrEmpty(NavigateQuery))
                url = url.AppendQuery(context.Format(NavigateQuery, UrlEncode));
            link.NavigateUrl = url;
            link.ToolTip = context.Format(tooltip, false);
            link.CssClass = Name;

            AddTargetAttribute(link);

            container.Controls.Add(link);

            return link;
        }
		public abstract Control AddTo(Control container, PluginContext context);
		protected virtual void ApplyStyles(PluginContext pluginContext, WebControl ctrl)
		{
			if (!string.IsNullOrEmpty(IconUrl))
				ctrl.Style[HtmlTextWriterStyle.BackgroundImage] = pluginContext.Rebase(IconUrl);
		}