예제 #1
0
        private static void General(HtmlTagWriter container)
        {
            using (var table = container.Tag("table"))
            {
                Action <string, string> Line = (name, value) =>
                {
                    using (var tr = table.Tag("tr"))
                    {
                        tr.EchoTag("td", name, new { @class = "e" });
                        tr.EchoTag("td", value, new { @class = "v" });
                    }
                };

                Line("System", $"{GetOsName()} {System.Environment.MachineName} {RuntimeInformation.OSDescription} {RuntimeInformation.OSArchitecture}");
                Line("Architecture", RuntimeInformation.ProcessArchitecture.ToString());
                Line("Debug build",
#if DEBUG
                     true
#else
                     false
#endif
                    ? "yes" : "no");
                Line("IPv6 Support", System.Net.Sockets.Socket.OSSupportsIPv6 ? "yes" : "no");
                Line("Registered PHP Streams", string.Join(", ", Streams.StreamWrapper.SystemStreamWrappers.Keys));
                Line("Registered Stream Filters", string.Join(", ", Streams.PhpFilter.GetFilterNames()));
            }
        }
예제 #2
0
        private void WriteTableDataForOwningGroupCondition(AclExpansionAccessConditions conditions)
        {
            Assertion.IsFalse(conditions.GroupHierarchyCondition == GroupHierarchyCondition.Undefined && conditions.OwningGroup != null);
            HtmlTagWriter.Tags.td();
            HtmlTagWriter.Value(""); // To force <td></td> instead of <td />
            var owningGroup = conditions.OwningGroup;

            if (owningGroup != null)
            {
                HtmlTagWriter.Value(owningGroup.DisplayName);
            }

            var groupHierarchyCondition = conditions.GroupHierarchyCondition;

            // Bitwise operation is OK (alas marking GroupHierarchyCondition with [Flags] is not supported).
            if ((groupHierarchyCondition & GroupHierarchyCondition.Parent) != 0)
            {
                HtmlTagWriter.Tags.br();
                HtmlTagWriter.Value(AclToolsExpansion.OrItsParents); // or its parents
            }

            // Bitwise operation is OK (alas marking GroupHierarchyCondition with [Flags] is not supported).
            if ((groupHierarchyCondition & GroupHierarchyCondition.Children) != 0)
            {
                HtmlTagWriter.Tags.br();
                HtmlTagWriter.Value(AclToolsExpansion.OrItsChildren); // or its children
            }

            HtmlTagWriter.Tags.tdEnd();
        }
 public void EchoTag(string tag, string text, object attributes = null)
 {
     using (HtmlTagWriter w = new HtmlTagWriter(this.m_ctx, tag, attributes))
     {
         w.EchoEscaped(text);
     }
 }
예제 #4
0
        public void WriteTableDataBodyForSingleState(AclExpansionEntry aclExpansionEntry)
        {
            if (aclExpansionEntry.AccessControlList is StatelessAccessControlList)
            {
                HtmlTagWriter.Value(StatelessAclStateHtmlText);
            }
            else
            {
                IOrderedEnumerable <StateDefinition> stateDefinitions = GetAllStatesForAclExpansionEntry(aclExpansionEntry);

                if (!stateDefinitions.Any())
                {
                    HtmlTagWriter.Value(AclWithNoAssociatedStatesHtmlText);
                }
                else
                {
                    bool firstElement = true;
                    foreach (StateDefinition stateDefiniton in stateDefinitions)
                    {
                        if (!firstElement)
                        {
                            HtmlTagWriter.Value(", ");
                        }

                        string stateName = _settings.ShortenNames ? stateDefiniton.ShortName() : stateDefiniton.DisplayName;

                        HtmlTagWriter.Value(stateName);
                        firstElement = false;
                    }
                }
            }
        }
예제 #5
0
 private void WriteRowspanAttribute(int rowCount)
 {
     if (rowCount > 0)
     {
         HtmlTagWriter.Attribute("rowspan", Convert.ToString(rowCount));
     }
 }
예제 #6
0
 private void WriteTableDataAddendum(object addendum)
 {
     if (addendum != null)
     {
         HtmlTagWriter.Value(" (");
         HtmlTagWriter.Value(addendum);
         HtmlTagWriter.Value(") ");
     }
 }
예제 #7
0
 public virtual void WriteTableDataWithRowCount(string value, int rowCount)
 {
     WriteTableRowBeginIfNotInTableRow();
     HtmlTagWriter.Tags.td();
     WriteRowspanAttribute(rowCount);
     HtmlTagWriter.Value(value);
     if (_settings.OutputRowCount)
     {
         WriteTableDataAddendum(rowCount);
     }
     HtmlTagWriter.Tags.tdEnd();
 }
예제 #8
0
 public void WriteTableDataForRole(Role role, int rowCount)
 {
     WriteTableRowBeginIfNotInTableRow();
     HtmlTagWriter.Tags.td();
     WriteRowspanAttribute(rowCount);
     HtmlTagWriter.Value(role.Group.DisplayName);
     HtmlTagWriter.Value(", ");
     HtmlTagWriter.Value(role.Position.DisplayName);
     if (_settings.OutputRowCount)
     {
         WriteTableDataAddendum(rowCount);
     }
     HtmlTagWriter.Tags.tdEnd();
 }
예제 #9
0
 private static void PageTitle(HtmlTagWriter container)
 {
     using (var table = container.Tag("table"))
         using (var tr = table.Tag("tr", new { @class = "h" }))
             using (var td = tr.Tag("td"))
             {
                 using (var a = td.Tag("a", new { href = Resources.InfoResources.LogoHref, target = "_blank" }))
                 {
                     a.EchoTagSelf("img", new { border = "0", src = Resources.InfoResources.LogoSrc, alt = Resources.InfoResources.LogoAlt });
                 }
                 using (var title = td.Tag("h1", new { @class = "p" }))
                 {
                     title.EchoEscaped("Peachpie Version " + Core.Utilities.ContextExtensions.GetRuntimeInformationalVersion());
                 }
             }
 }
예제 #10
0
 private static void PageTitle(HtmlTagWriter container)
 {
     using (var table = container.Tag("table"))
         using (var tr = table.Tag("tr", new { @class = "h" }))
             using (var td = tr.Tag("td"))
             {
                 using (var a = td.Tag("a", new { href = Resources.InfoResources.LogoHref, target = "_blank" }))
                 {
                     a.EchoTagSelf("img", new { border = "0", src = Resources.InfoResources.LogoSrc, alt = Resources.InfoResources.LogoAlt });
                 }
                 using (var title = td.Tag("h1", new { @class = "p" }))
                 {
                     title.EchoEscaped("Peachpie Version " + typeof(Context).GetTypeInfo().Assembly.GetName().Version.ToString(3)); // TODO: suffix (-preview...)
                 }
             }
 }
예제 #11
0
        private static void Configuration(HtmlTagWriter container, Context ctx)
        {
            container.EchoTag("h1", "Configuration");

            var extensions = Context.GetLoadedExtensions();

            foreach (string ext in extensions)
            {
                container.EchoTag("h2", ext);
            }

            // TODO: extensions configuration
            var options = StandardPhpOptions.DumpOptions(ctx, null);

            foreach (var extensionopt in options.GroupBy(opt => opt.ExtensionName))
            {
            }
        }
예제 #12
0
        private static void Variables(HtmlTagWriter container)
        {
            container.EchoTag("h2", "PHP Variables");
            using (var table = container.Tag("table"))
            {
                using (var tr = table.Tag("tr", new { @class = "h" }))
                {
                    tr.EchoTag("th", "Variable");
                    tr.EchoTag("th", "Value");
                }

                Action <string, string> Line = (name, value) =>
                {
                    using (var tr = table.Tag("tr", new { @class = "h" }))
                    {
                        tr.EchoTag("td", name, new { @class = "e" });
                        using (var td = tr.Tag("td", new { @class = "v" }))
                        {
                            if (string.IsNullOrEmpty(value))
                            {
                                td.EchoRaw("&nbsp;");
                            }
                            else
                            {
                                td.EchoEscaped(value);
                            }
                        }
                    }
                };

                Action <PhpArray, string> DumpArray = (arr, name) =>
                {
                    foreach (var entry in arr.Keys)
                    {
                        Line($"{name}[{entry}]", arr[entry].ToStringOrNull());
                    }
                };

                DumpArray(container.Context.Cookie, "_COOKIE");
                DumpArray(container.Context.Server, "_SERVER");
            }
        }
예제 #13
0
        public void WriteTableDataForAccessTypes(AccessTypeDefinition[] accessTypeDefinitions)
        {
            var accessTypeDefinitionsSorted = from atd in accessTypeDefinitions
                                              orderby atd.DisplayName
                                              select atd;

            HtmlTagWriter.Tags.td();
            bool firstElement = true;

            foreach (AccessTypeDefinition accessTypeDefinition in accessTypeDefinitionsSorted)
            {
                if (!firstElement)
                {
                    HtmlTagWriter.Value(", ");
                }
                HtmlTagWriter.Value(accessTypeDefinition.DisplayName);
                firstElement = false;
            }
            HtmlTagWriter.Tags.tdEnd();
        }
예제 #14
0
        private static void Env(HtmlTagWriter container)
        {
            container.EchoTag("h2", "Environment");
            using (var table = container.Tag("table"))
            {
                using (var tr = table.Tag("tr", new { @class = "h" }))
                {
                    tr.EchoTag("th", "Variable");
                    tr.EchoTag("th", "Value");
                }

                Action <string, string> Line = (name, value) =>
                {
                    using (var tr = table.Tag("tr", new { @class = "h" }))
                    {
                        tr.EchoTag("td", name, new { @class = "e" });
                        using (var td = tr.Tag("td", new { @class = "v" }))
                        {
                            if (string.IsNullOrEmpty(value))
                            {
                                td.EchoRaw("&nbsp;");
                            }
                            else
                            {
                                td.EchoEscaped(value);
                            }
                        }
                    }
                };

                foreach (var entry in container.Context.Env.Keys)
                {
                    Line(entry.ToString(), container.Context.Env[entry].ToStringOrNull());
                }
            }
        }
예제 #15
0
        private static void Credits(HtmlTagWriter container)
        {
            container.EchoTag("h1", "Credits");

            // TODO: creditz, can we pull it from git?
        }
예제 #16
0
 public void WriteTableDataForBooleanCondition(bool required)
 {
     HtmlTagWriter.Tags.td();
     HtmlTagWriter.Value(required ? "X" : "");
     HtmlTagWriter.Tags.tdEnd();
 }
예제 #17
0
 public void WriteTableDataForAbstractRoleCondition(AclExpansionAccessConditions accessConditions)
 {
     HtmlTagWriter.Tags.td();
     HtmlTagWriter.Value(accessConditions.IsAbstractRoleRequired ? accessConditions.AbstractRole.DisplayName : "");
     HtmlTagWriter.Tags.tdEnd();
 }
 private static HtmlTagWriter Tag(this HtmlTagWriter tagWriter, string tag, object attributes = null)
 {
     return(new HtmlTagWriter(tagWriter.Context, tag, attributes));
 }