public virtual void WriteTo(TextWriter writer)
            {
                var engine = Html.ContentEngine();

                if (!Html.ViewContext.HttpContext.User.Identity.IsAuthenticated || !engine.SecurityManager.IsEditor(Html.ViewContext.HttpContext.User))
                {
                    return;
                }
                if (RegistrationExtensions.GetRegistrationExpression(Html) != null)
                {
                    return;
                }

                var item = currentItem ?? Html.CurrentItem() ?? Html.StartPage();

                var state    = ControlPanelExtensions.GetControlPanelState(Html);
                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)
                };

                var resources = Html.Resources(writer);

                if (includeJQuery)
                {
                    resources.JQuery();
                }
                if (includeJQueryPlugins)
                {
                    resources.JQueryPlugins().JQueryUi();
                }
                if (includePartScripts)
                {
                    resources.Constnats().JavaScript("{ManagementUrl}/Resources/Js/parts.js");
                }
                if (includePartStyles)
                {
                    resources.StyleSheet("{ManagementUrl}/Resources/Css/parts.css");
                }

                if (refreshNavigation)
                {
                    writer.Write(formatWithRefresh.Replace(settings));
                }
                else
                {
                    writer.Write(formatWithoutRefresh.Replace(settings));
                }

                if (state == ControlPanelState.DragDrop)
                {
                    Html.Resources().JavaScript(UI.WebControls.ControlPanel.DragDropScriptInitialization(), ScriptOptions.DocumentReady);
                }
            }
Example #2
0
            protected override void AppendControlPanel(TextWriter writer, IEngine engine, ContentItem item)
            {
                var state    = ControlPanelExtensions.GetControlPanelState(Html);
                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),
                    VersionIndex                = item.VersionIndex,
                    VersionKey                  = item.GetVersionKey(),
                    Force                       = ForceRefreshNavigationOnLoad ? "true" : "false",
                    State                       = item != null?item.State.ToString() : "NonContent",
                                           Mode = GetControlPanelState(Html).ToString()
                };

                var resources = Html.Resources(writer).Constants();

                if (IncludeJQuery)
                {
                    resources.JQuery();
                }
                if (IncludeJQueryPlugins)
                {
                    resources.JQueryPlugins(IncludeJQuery);
                }
                if (IncludeJQueryUi)
                {
                    resources.JQueryUi(IncludeJQuery);
                }
                if (IncludePartScripts)
                {
                    resources.PartsJs();
                }
                if (IncludePartStyles)
                {
                    resources.PartsCss(); resources.IconsCss();
                }

                if (RefreshNavigationOnLoad)
                {
                    resources.HtmlLiteral(formatWithRefresh.Replace(settings));
                }
                else
                {
                    resources.HtmlLiteral(formatWithoutRefresh.Replace(settings));
                }

                if (state.IsFlagSet(ControlPanelState.DragDrop))
                {
                    resources.JavaScript(UI.WebControls.ControlPanel.DragDropScriptInitialization(item), ScriptOptions.DocumentReady);
                }
                resources.Render(writer);
            }
        /// <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(BootstrapTagAlterations(startsFrom, current, htmlAttributes));
            }

            ClassifyAnchors(startsFrom, current, parallelRoot, tree);

            return(tree);
        }
Example #4
0
        private void RenderDisplayable(TextWriter writer)
        {
            var displayable = DefinitionMap.Instance.GetOrCreateDefinition(CurrentItem).Displayables.FirstOrDefault(d => d.Name == propertyName);

            if (displayable == null)
            {
                if (isOptional || swallowExceptions)
                {
                    return;
                }

                throw new N2Exception("No attribute implementing IDisplayable found on the property '{0}' of the item #{1} of type {2}", propertyName, CurrentItem.ID, CurrentItem.GetContentType());
            }

            if (Wrapper != null)
            {
                writer.Write(Wrapper.ToString(TagRenderMode.StartTag));
            }

            var ctx = new RenderingContext
            {
                Content      = CurrentItem,
                Displayable  = displayable,
                Html         = Html,
                PropertyName = propertyName,
                IsEditable   = isEditable && ControlPanelExtensions.GetControlPanelState(Html) == ControlPanelState.DragDrop
            };

            Html.ResolveService <DisplayableRendererSelector>()
            .Render(ctx, writer);

            if (Wrapper != null)
            {
                writer.Write(Wrapper.ToString(TagRenderMode.EndTag));
            }
        }
Example #5
0
            public virtual void WriteTo(TextWriter writer)
            {
                var engine = Html.ContentEngine();

                if (!Html.ViewContext.HttpContext.User.Identity.IsAuthenticated || !engine.SecurityManager.IsEditor(Html.ViewContext.HttpContext.User))
                {
                    return;
                }
                if (RegistrationExtensions.GetRegistrationExpression(Html) != null)
                {
                    return;
                }

                var item = currentItem ?? Html.CurrentItem() ?? Html.StartPage();

                var state    = ControlPanelExtensions.GetControlPanelState(Html);
                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),
                    VersionIndex                = item.VersionIndex,
                    VersionKey                  = item.GetVersionKey(),
                    Force                       = ForceRefreshNavigationOnLoad ? "true" : "false",
                    State                       = item != null?item.State.ToString() : "NonContent",
                                           Mode = GetControlPanelState(Html).ToString()
                };

                var resources = Html.Resources(writer).Constants();

                if (includeJQuery)
                {
                    resources.JQuery();
                }
                if (includeJQueryPlugins)
                {
                    resources.JQueryPlugins(includeJQuery);
                }
                if (includeJQueryUi)
                {
                    resources.JQueryUi(includeJQuery);
                }
                if (includePartScripts)
                {
                    resources.PartsJs();
                }
                if (includePartStyles)
                {
                    resources.PartsCss(); resources.IconsCss();
                }

                if (refreshNavigation)
                {
                    resources.HtmlLiteral(formatWithRefresh.Replace(settings));
                }
                else
                {
                    resources.HtmlLiteral(formatWithoutRefresh.Replace(settings));
                }

                if (state.IsFlagSet(ControlPanelState.DragDrop))
                {
                    resources.JavaScript(UI.WebControls.ControlPanel.DragDropScriptInitialization(item), ScriptOptions.DocumentReady);
                }
                resources.Render(writer);
            }