Beispiel #1
0
		/// <summary>Creates a navigation using unordered list elements.</summary>
		public static N2.Web.Tree Tree(this HtmlHelper html,
			ContentItem startsFrom = null,
			ContentItem current = null,
			int takeLevels = 2,
			bool parallelRoot = true,
			bool appendCreatorNode = false,
			ItemFilter filter = null,
			object htmlAttributes = null)
		{
			if (startsFrom == null) startsFrom = html.StartPage();
			if (current == null) current = html.CurrentPage();
			if (filter == null) filter = new NavigationFilter(html.ViewContext.HttpContext.User, html.ContentEngine().SecurityManager);

			var builder = parallelRoot
				? (HierarchyBuilder)new ParallelRootHierarchyBuilder(startsFrom, takeLevels)
				: (HierarchyBuilder)new TreeHierarchyBuilder(startsFrom, takeLevels);

			if (builder == null)
				throw new ArgumentException("builder == null");

			if (appendCreatorNode && ControlPanelExtensions.GetControlPanelState(html).IsFlagSet(ControlPanelState.DragDrop))
				builder.GetChildren = (i) => i == null ? null : i.Children.FindNavigatablePages().Where(filter).AppendCreatorNode(html.ContentEngine(), i);
			else
				builder.GetChildren = (i) => i == null ? null : i.Children.FindNavigatablePages().Where(filter);

			var tree = N2.Web.Tree.Using(builder);
			if (htmlAttributes != null)
				tree.Tag(ApplyToRootUl(htmlAttributes));

			ClassifyAnchors(startsFrom, current, parallelRoot, tree);

			return tree;
		}
        public static void RenderControlPanel(this HtmlHelper html)
        {
            var engine = html.ContentEngine();
            var item = html.CurrentItem() ?? html.StartPage();

            if (!engine.SecurityManager.IsEditor(html.ViewContext.HttpContext.User))
                return;
            if (RegistrationExtensions.GetRegistrationExpression(html) != null)
                return;

            var state = ControlPanel.GetState(html.ViewContext.HttpContext.User, html.ViewContext.HttpContext.Request.QueryString);
            var settings = new
            {
                NavigationUrl = engine.ManagementPaths.GetNavigationUrl(item),
                ManagementUrl = engine.ManagementPaths.GetManagementInterfaceUrl(),
                Path = item.Path,
                Plugins = Plugins(html, item, state),
                Definitions = Definitions(html, engine, item, state),
                Version = typeof(ContentItem).Assembly.GetName().Version.ToString(),
                Permission = engine.GetContentAdapter<NodeAdapter>(item).GetMaximumPermission(item)
            };

            html.Resources().JQuery()
                .JQueryPlugins()
                .JQueryUi()
                .JavaScript("{ManagementUrl}/Resources/Js/parts.js").StyleSheet("{ManagementUrl}/Resources/Css/parts.css");

            string controlPanelHtml = format.Replace(settings);
            html.ViewContext.Writer.Write(controlPanelHtml);

            if (state == ControlPanelState.DragDrop)
                html.Resources().JavaScript(ControlPanel.DragDropScriptInitialization(), ScriptOptions.DocumentReady);
        }
		/// <summary>Gets the curent state of the control panel.</summary>
		/// <param name="html"></param>
		/// <returns></returns>
		public static ControlPanelState GetControlPanelState(this HtmlHelper html)
		{
			return UI.WebControls.ControlPanel.GetState(html.ContentEngine());
		}
Beispiel #4
0
		/// <summary>Begins an editable wrapper that can be used to edit a single property in a view.</summary>
		/// <param name="html"></param>
		/// <param name="item"></param>
		/// <param name="displayableName"></param>
		/// <returns>A disposable object that must be called to close the editable wrapper element.</returns>
		public static IDisposable BeginEditableWrapper(this HtmlHelper html, ContentItem item, string displayableName)
		{
			return WebExtensions.GetEditableWrapper(item, true, displayableName, html.ContentEngine().Definitions.GetDefinition(item).Displayables[displayableName], html.ViewContext.Writer);
		}
        /// <summary>Begins an editable wrapper that can be used to edit a single property in a view.</summary>
        /// <param name="html"></param>
        /// <param name="item"></param>
        /// <param name="displayableName"></param>
        /// <returns>A disposable object that must be called to close the editable wrapper element.</returns>
        public static IDisposable BeginEditableWrapper(this HtmlHelper html, ContentItem item, string displayableName)
        {
			if (ControlPanel.GetState(html.ContentEngine()) == ControlPanelState.DragDrop)
			{
				return WebExtensions.GetEditableWrapper(item, true, displayableName, html.ContentEngine().Definitions.GetDefinition(item).Displayables[displayableName], html.ViewContext.Writer);
			}
			else
			{
				return new EmptyDisposable();
			}
		}
Beispiel #6
0
 /// <summary>
 /// determines if user is actively managing (administering) the site vs. using the site
 /// </summary>
 /// <param name="html"></param>
 /// <returns>true if managing</returns>
 public static bool IsManaging(this HtmlHelper html)
 {
     return IsManaging(html.ContentEngine());
 }
Beispiel #7
0
        /// <summary>
        /// determines if user is actively organizing parts / editing the page interactively via drag & drop
        /// </summary>
        /// <param name="html"></param>
        /// <returns>true if managing</returns>
        public static bool IsOrganizing(this HtmlHelper html)
        {
            var engine = html.ContentEngine();

            return engine != null && ControlPanel.GetState(engine).IsFlagSet(ControlPanelState.DragDrop);
        }
		/// <summary>Gets the curent state of the control panel.</summary>
		/// <param name="html"></param>
		/// <returns></returns>
		public static ControlPanelState GetControlPanelState(this HtmlHelper html)
		{
			return UI.WebControls.ControlPanel.GetState(html.ContentEngine().SecurityManager, html.ViewContext.HttpContext.User, html.ViewContext.HttpContext.Request.QueryString);
		}