private static string SignatureForProperty(PropertyDefinition property, bool hyperLinked)
        {
            var hb = new HtmlBuilder();
            if (property.IsStatic())
            {
                hb.AddKeyword("static");
                hb.Add(" ");
            }
            hb.AddKeyword("public");
            hb.Add(" ");
            hb.AddTypeReference(property.PropertyType, hyperLinked);
            hb.Add(" ");
            hb.AddMemberReferenceName(property, false);
            hb.Add(" {");
            if (property.GetMethod != null)
            {
                hb.Add(" ");
                hb.AddKeyword("get");
                hb.Add(";");
            }
            if (property.SetMethod != null)
            {
                hb.Add(" ");
                hb.AddKeyword("set");
                hb.Add(";");
            }
            hb.Add(" }");

            return hb.ToString();
        }
Exemplo n.º 2
0
        public void HtmlBuilder_WithAttributeWithValue_ShouldRenderDivWithAttribute()
        {
            const string disabled = "disabled";
            var html = new HtmlBuilder("[" + disabled + "='" + disabled + "']");

            Assert.AreEqual("<div " + disabled + "=\"" + disabled + "\"></div>", html.ToString());
        }
        private static string SignatureForMethod(MethodDefinition method, bool hyperLinked)
        {
            var hb = new HtmlBuilder();
            if (method.IsStatic)
            {
                hb.AddKeyword("static");
                hb.Add(" ");
            }
            hb.AddKeyword("public");
            hb.Add(" ");
            hb.AddTypeReference(method.ReturnType, hyperLinked);
            hb.Add(" ");
            hb.AddMemberReferenceName(method, false);
            hb.Add(" (");

            bool first = true;
            foreach(var param in method.Parameters)
            {
                if (!first)
                    hb.Add(", ");

                hb.AddTypeReference(param.ParameterType,hyperLinked);
                hb.Add(" ");
                hb.Add(param.Name);
                first = false;
            }

            hb.Add(")");
            return hb.ToString();
        }
Exemplo n.º 4
0
 protected override void RenderMuxControl(HtmlBuilder builder)
 {
     using (Element el = builder.CreateElement("input"))
     {
         AddAttributes(el);
     }
 }
Exemplo n.º 5
0
        public void HtmlBuilder_WithIdPassed_ShouldRenderDivWithId()
        {
            const string id = "unique";
            var html = new HtmlBuilder("#" + id);

            Assert.AreEqual("<div id=\"" + id + "\"></div>", html.ToString());
        }
Exemplo n.º 6
0
        public void HtmlBuilder_WithClassPassed_ShouldRenderDivWithClass()
        {
            const string cls = "item";
            var html = new HtmlBuilder("." + cls);

            Assert.AreEqual("<div class=\"" + cls + "\"></div>", html.ToString());
        }
Exemplo n.º 7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="HtmlBuilderTableTag"/> class.
 /// </summary>
 /// <param name="b">The b.</param>
 /// <param name="attrib">The attrib.</param>
 public HtmlBuilderTableTag(HtmlBuilder b, TableAttrib attrib)
 {
     if (attrib != null)
     {
         int? columnCount = attrib.ColumnCount;
         ColumnCount = (columnCount != null ? columnCount.Value : 0);
         NullTdBody = attrib.NullTdBody;
         int? rowPitch = attrib.RowPitch;
         RowPitch = (rowPitch != null ? rowPitch.Value : 1);
         int? columnPitch = attrib.ColumnPitch;
         ColumnPitch = (columnPitch != null ? columnPitch.Value : 1);
         SelectedClass = attrib.SelectedClass;
         SelectedStyle = attrib.SelectedStyle;
         AlternateClass = attrib.AlternateClass;
         AlternateStyle = attrib.AlternateStyle;
         TableTrCloseMethod? trCloseMethod = attrib.TrCloseMethod;
         TrCloseMethod = (trCloseMethod != null ? trCloseMethod.Value : TableTrCloseMethod.Undefined);
         TableAlternateOrientation? alternateOrientation = attrib.AlternateOrientation;
         AlternateOrientation = (alternateOrientation != null ? alternateOrientation.Value : TableAlternateOrientation.Row);
     }
     else
     {
         ColumnCount = 0;
         NullTdBody = string.Empty;
         RowPitch = 1;
         ColumnPitch = 1;
         SelectedClass = string.Empty;
         SelectedStyle = string.Empty;
         AlternateClass = string.Empty;
         AlternateStyle = string.Empty;
         TrCloseMethod = TableTrCloseMethod.Undefined;
         AlternateOrientation = TableAlternateOrientation.Row;
     }
 }
Exemplo n.º 8
0
 protected override void RenderMuxControl(HtmlBuilder builder)
 {
     using (Element el = builder.CreateElement(Tag))
     {
         AddAttributes(el);
         RenderChildren(builder.Writer as System.Web.UI.HtmlTextWriter);
     }
 }
Exemplo n.º 9
0
        public void HtmlBuilder_WithMultipleClasses_ShouldRenderDivWithMultipleClasses()
        {
            const string one = "one";
            const string two = "two";
            var html = new HtmlBuilder("." + one + "." + two);

            Assert.AreEqual("<div class=\"" + one + " " + two + "\"></div>", html.ToString());
        }
Exemplo n.º 10
0
 protected override void RenderMuxControl(HtmlBuilder builder)
 {
     using (Element el = builder.CreateElement("textarea"))
     {
         AddAttributes(el);
         el.Write(Value);
     }
 }
Exemplo n.º 11
0
 public void RenderLinkTag_EscapesAttributesAndLinkText() {
     var actual = new HtmlBuilder().RenderLinkTag("<a href=\"link.com\">Click me!</a>", new Dictionary<string, object> {
         { "class", "big" },
         { "title", "<strong>hello world</strong>" }
     });
     var expected = "<a class=\"big\" title=\"&lt;strong>hello world&lt;/strong>\">&lt;a href=&quot;link.com&quot;&gt;Click me!&lt;/a&gt;</a>";
     Assert.AreEqual(expected, actual);
 }
Exemplo n.º 12
0
 public void RenderScriptTag_EscapesAttributes() {
     var actual = new HtmlBuilder().RenderScriptTag(new Dictionary<string, object> {
         { "id", 9 },
         { "src", "http://dom.com/script.js?a=1&b=2&c=3" }
     });
     var expected = "<script id=\"9\" src=\"http://dom.com/script.js?a=1&amp;b=2&amp;c=3\"></script>";
     Assert.AreEqual(expected, actual);
 }
Exemplo n.º 13
0
        public ControlMapper(MemberHandler m, string id, string name, object value)
        {
            this._id = id;
            this._name = name;

            _html = HtmlBuilder.New;

            ProcessField(m.Is.LazyLoad ? m.MemberType.GetGenericArguments()[0] : m.MemberType, m, value);
        }
Exemplo n.º 14
0
 public void RenderImageTag_EscapesAttributes() {
     var actual = new HtmlBuilder().RenderImageTag(htmlAttributes: new Dictionary<string, object> {
         { "class", "ok" },
         { "data-script", "\"><script type='text/javascript' src='badscript.js'></script><img \"" },
         { "id", 53 }
     });
     var expected = "<img class=\"ok\" data-script=\"&quot;>&lt;script type=&#39;text/javascript&#39; src=&#39;badscript.js&#39;>&lt;/script>&lt;img &quot;\" id=\"53\" />";
     Assert.AreEqual(expected, actual);
 }
Exemplo n.º 15
0
        public void HtmlBuilder_WithComplexSelector_ShouldRenderCorrectly()
        {
            var html = new HtmlBuilder("ul#test > li.items * 3 > a[href=\"/SomeURL\"]");

            Assert.AreEqual("<ul id=\"test\">" +
                "<li class=\"items\"><a href=\"/SomeURL\"></a></li>" +
                "<li class=\"items\"><a href=\"/SomeURL\"></a></li>" +
                "<li class=\"items\"><a href=\"/SomeURL\"></a></li>" +
            "</ul>", html.ToString());
        }
Exemplo n.º 16
0
        private static void RenderColumnsSection(IEnumerable<Column> columns, HtmlBuilder html)
        {
            html.div().attCls("section");
            html.h4("Columns");
            html.e("ul").attCls("table-columns");
            foreach (var c in columns)
                html.e("li").text(c.Name).c();

            html.c(); // ul
            html.c(); // section
        }
Exemplo n.º 17
0
        private void RenderColumnsTable(IEnumerable<Column> columns, HtmlBuilder html, DatabaseContext context)
        {
            html.h2("Columns");

            html.table(0, 0).att("width", "100%").attCls("members");

            html.dbColumnHeader();
            foreach (var c in columns)
            {
                html.tr();
                html.rowHeader(false);

                html.td();
                if (c.IsInPrimaryKey) html.attCls("key primary-key");
                else if (c.IsForeignKey) html.attCls("key foreign-key");
                else html.attCls("key");
                html.text(c.Name);
                if (!c.Descritpion.IsNullOrEmpty())
                {
                    html.div().attCls("summary");
                    html.text(c.Descritpion);
                    html.c(); // summary
                }
                html.c(); // td

                html.td();
                html.anchor(c.Name);
                html.dataType(c.DataType);
                html.c();

                html.td();

                if (c.ReferenceData != null)
                {
                    string relDoc = String.Format("{0}.{1}.Tables.{2}.{3}", context.BookName, context.DbName, c.ReferenceData.ReferencedTableSchema, c.ReferenceData.ReferencedTable);
                    html.internalLink(String.Format("{0}.{1}", c.ReferenceData.ReferencedTable, c.ReferenceData.ReferencedColumn), "db-entity-name", relDoc, c.ReferenceData.ReferencedColumn);
                }
                else
                    html.nbsp();

                html.c(); // td
                html.c(); // tr
            }

            html.c(); // table
        }
Exemplo n.º 18
0
 protected override void RenderMuxControl(HtmlBuilder builder)
 {
     using (Element el = builder.CreateElement("select"))
     {
         AddAttributes(el);
         foreach (ListItem idx in Items)
         {
             using (Element l = builder.CreateElement("option"))
             {
                 l.AddAttribute("value", idx.Value);
                 if (!idx.Enabled)
                     l.AddAttribute("disabled", "disabled");
                 if (idx.Selected)
                     l.AddAttribute("selected", "selected");
                 l.Write(idx.Text);
             }
         }
     }
 }
Exemplo n.º 19
0
        public void BuildsMultipleScripts()
        {
            var htmlBuilder = new HtmlBuilder
            {
                new ScriptElem(),
                new ScriptElem {Src = "../src/test.js"},
                new ScriptElem {Src = "http://cdn.com/test.js", Type = ScriptType.Javascript},
                new ScriptElem {Body = "function() {}"},
                new ScriptElem {Type = ScriptType.Javascript, Body = "function() {}"}
            };

            var html = htmlBuilder.Html;

            var expected = "<script></script>\r\n" +
                           "<script src=\"../src/test.js\"></script>\r\n" +
                           "<script src=\"http://cdn.com/test.js\" type=\"text/javascript\"></script>\r\n" +
                           "<script>function() {}</script>\r\n" +
                           "<script type=\"text/javascript\">function() {}</script>\r\n";

            Assert.AreEqual(expected, html);
        }
Exemplo n.º 20
0
        public void BuildsMultipleLinks()
        {
            var htmlBuilder = new HtmlBuilder
            {
                new LinkElem {Href = "img/icon.png", Type = LinkType.Icon},
                new LinkElem(),
                new LinkElem {Href = "../css/test.css"},
                new LinkElem {Href = "http://localhost/test.css", Type = LinkType.Css},
                new LinkElem {Href = "https://cdn.net/test/test.css", Rel = LinkRelType.Stylesheet},
                new LinkElem {Href = "test.css", Type = LinkType.Css, Rel = LinkRelType.Stylesheet}
            };

            var html = htmlBuilder.Html;

            var expected = "<link href=\"img/icon.png\" type=\"image/icon\">\r\n" +
                           "<link>\r\n" +
                           "<link href=\"../css/test.css\">\r\n" +
                           "<link href=\"http://localhost/test.css\" type=\"text/css\">\r\n" +
                           "<link href=\"https://cdn.net/test/test.css\" rel=\"stylesheet\">\r\n" +
                           "<link href=\"test.css\" type=\"text/css\" rel=\"stylesheet\">\r\n";

            Assert.AreEqual(expected, html);
        }
Exemplo n.º 21
0
        public void BuildsMultipleHtmlDefTypes()
        {
            var htmlBuilder = new HtmlBuilder
            {
                new BaseElem {Href = "http://a.website.com/"},
                new LinkElem { Href="favicon.ico", Type = LinkType.XIcon, Rel= LinkRelType.ShortcutIcon },
                new LinkElem {Href = "img/icon.png", Type = LinkType.Icon},
                new LinkElem(),
                new LinkElem {Href = "../css/test.css"},
                new LinkElem {Href = "http://localhost/test.css", Type = LinkType.Css},
                new LinkElem {Href = "https://cdn.net/test/test.css", Rel = LinkRelType.Stylesheet},
                new LinkElem {Href = "test.css", Type = LinkType.Css, Rel = LinkRelType.Stylesheet},
                new ScriptElem(),
                new ScriptElem {Src = "../src/test.js"},
                new ScriptElem {Src = "http://cdn.com/test.js", Type = ScriptType.Javascript},
                new ScriptElem {Body = "function() {}"},
                new ScriptElem {Type = ScriptType.Javascript, Body = "function() {}"}
            };

            var html = htmlBuilder.Html;

            var expected = "<base href=\"http://a.website.com/\">\r\n" +
                           "<link href=\"favicon.ico\" type=\"image/x-icon\" rel=\"shortcut icon\">\r\n" +
                           "<link href=\"img/icon.png\" type=\"image/icon\">\r\n" +
                           "<link>\r\n" +
                           "<link href=\"../css/test.css\">\r\n" +
                           "<link href=\"http://localhost/test.css\" type=\"text/css\">\r\n" +
                           "<link href=\"https://cdn.net/test/test.css\" rel=\"stylesheet\">\r\n" +
                           "<link href=\"test.css\" type=\"text/css\" rel=\"stylesheet\">\r\n" +
                           "<script></script>\r\n" +
                           "<script src=\"../src/test.js\"></script>\r\n" +
                           "<script src=\"http://cdn.com/test.js\" type=\"text/javascript\"></script>\r\n" +
                           "<script>function() {}</script>\r\n" +
                           "<script type=\"text/javascript\">function() {}</script>\r\n";

            Assert.AreEqual(expected, html);
        }
Exemplo n.º 22
0
        /// <summary>
        /// Fixed:
        /// </summary>
        private static HtmlBuilder Editor(
            this HtmlBuilder hb,
            SiteSettings ss,
            WikiModel wikiModel)
        {
            var commentsColumn = ss.GetColumn("Comments");
            var commentsColumnPermissionType = commentsColumn.ColumnPermissionType();
            var showComments = ss.ShowComments(commentsColumnPermissionType);
            var tabsCss      = showComments ? null : "max";

            return(hb.Div(id: "Editor", action: () => hb
                          .Form(
                              attributes: new HtmlAttributes()
                              .Id("WikiForm")
                              .Class("main-form")
                              .Action(Locations.ItemAction(wikiModel.WikiId != 0
                            ? wikiModel.WikiId
                            : wikiModel.SiteId)),
                              action: () => hb
                              .RecordHeader(
                                  ss: ss,
                                  baseModel: wikiModel,
                                  tableName: "Wikis")
                              .Div(
                                  id: "EditorComments", action: () => hb
                                  .Comments(
                                      comments: wikiModel.Comments,
                                      column: commentsColumn,
                                      verType: wikiModel.VerType,
                                      columnPermissionType: commentsColumnPermissionType),
                                  _using: showComments)
                              .Div(id: "EditorTabsContainer", css: tabsCss, action: () => hb
                                   .EditorTabs(wikiModel: wikiModel, ss: ss)
                                   .FieldSetGeneral(
                                       ss: ss,
                                       wikiModel: wikiModel)
                                   .FieldSet(
                                       attributes: new HtmlAttributes()
                                       .Id("FieldSetHistories")
                                       .DataAction("Histories")
                                       .DataMethod("post"),
                                       _using: wikiModel.MethodType != BaseModel.MethodTypes.New)
                                   .FieldSet(
                                       attributes: new HtmlAttributes()
                                       .Id("FieldSetRecordAccessControl")
                                       .DataAction("Permissions")
                                       .DataMethod("post"),
                                       _using: ss.CanManagePermission())
                                   .MainCommands(
                                       ss: ss,
                                       siteId: wikiModel.SiteId,
                                       verType: wikiModel.VerType,
                                       referenceId: wikiModel.WikiId,
                                       updateButton: true,
                                       copyButton: false,
                                       moveButton: false,
                                       mailButton: true,
                                       deleteButton: true))
                              .Hidden(controlId: "BaseUrl", value: Locations.BaseUrl())
                              .Hidden(controlId: "MethodType", value: "edit")
                              .Hidden(
                                  controlId: "Wikis_Timestamp",
                                  css: "always-send",
                                  value: wikiModel.Timestamp)
                              .Hidden(
                                  controlId: "SwitchTargets",
                                  css: "always-send",
                                  value: wikiModel.WikiId.ToString(),
                                  _using: !Request.IsAjax() || Routes.Action() == "create"))
                          .OutgoingMailsForm("Wikis", wikiModel.WikiId, wikiModel.Ver)
                          .CopyDialog("items", wikiModel.WikiId)
                          .MoveDialog()
                          .OutgoingMailDialog()));
        }
Exemplo n.º 23
0
 public BodyTag()
     : base("body")
 {
     HtmlBuilder = new HtmlBuilder(Children);
     IsSelfClosing = false;
 }
Exemplo n.º 24
0
 public static HtmlBuilder Td(
     this HtmlBuilder hb, Context context, Column column, decimal value)
 {
     return(hb.Td(action: () => hb
                  .Text(text: column.Display(value, unit: true))));
 }
Exemplo n.º 25
0
 private static HtmlBuilder EditorExtensions(
     this HtmlBuilder hb, SiteSettings ss, WikiModel wikiModel)
 {
     return(hb);
 }
Exemplo n.º 26
0
        public static HtmlBuilder TextBox(
            this HtmlBuilder hb,
            HtmlTypes.TextTypes textType = HtmlTypes.TextTypes.Normal,
            string controlId             = null,
            string controlCss            = null,
            string text               = null,
            string placeholder        = null,
            string onChange           = null,
            string format             = null,
            bool timepicker           = false,
            string accept             = null,
            string dataId             = null,
            bool validateRequired     = false,
            bool validateNumber       = false,
            decimal validateMinNumber = 0,
            decimal validateMaxNumber = 0,
            bool validateDate         = false,
            bool validateEmail        = false,
            string validateEqualTo    = null,
            int validateMaxLength     = 0,
            string action             = null,
            string method             = null,
            Dictionary <string, string> attributes = null,
            bool _using = true)
        {
            if (!_using)
            {
                return(hb);
            }
            switch (textType)
            {
            case HtmlTypes.TextTypes.Normal:
                return(hb.Input(attributes: new HtmlAttributes()
                                .Id(controlId)
                                .Class(Css.Class("control-textbox", controlCss))
                                .Type("text")
                                .Value(text)
                                .Placeholder(placeholder)
                                .OnChange(onChange)
                                .DataId(dataId)
                                .DataValidateRequired(validateRequired)
                                .DataValidateNumber(validateNumber)
                                .DataValidateMinNumber(
                                    validateMinNumber, _using: validateMinNumber != validateMaxNumber)
                                .DataValidateMaxNumber(
                                    validateMaxNumber, _using: validateMinNumber != validateMaxNumber)
                                .DataValidateDate(validateDate)
                                .DataValidateEmail(validateEmail)
                                .DataValidateEqualTo(validateEqualTo)
                                .DataValidateMaxLength(validateMaxLength)
                                .DataAction(action)
                                .DataMethod(method)
                                .Add(attributes)));

            case HtmlTypes.TextTypes.DateTime:
                return(hb.Input(attributes: new HtmlAttributes()
                                .Id(controlId)
                                .Class(Css.Class("control-textbox datepicker", controlCss))
                                .Type("text")
                                .Value(text)
                                .Placeholder(placeholder)
                                .OnChange(onChange)
                                .DataId(dataId)
                                .DataFormat(format)
                                .DataTimepicker(timepicker)
                                .DataValidateRequired(validateRequired)
                                .DataValidateNumber(validateNumber)
                                .DataValidateDate(validateDate)
                                .DataValidateEmail(validateEmail)
                                .DataValidateEqualTo(validateEqualTo)
                                .DataValidateMaxLength(validateMaxLength)
                                .DataAction(action)
                                .DataMethod(method)
                                .Add(attributes)));

            case HtmlTypes.TextTypes.MultiLine:
                return(hb.TextArea(
                           attributes: new HtmlAttributes()
                           .Id(controlId)
                           .Class(Css.Class("control-textarea", controlCss))
                           .Placeholder(placeholder)
                           .OnChange(onChange)
                           .DataId(dataId)
                           .DataValidateRequired(validateRequired)
                           .DataValidateNumber(validateNumber)
                           .DataValidateDate(validateDate)
                           .DataValidateEmail(validateEmail)
                           .DataValidateEqualTo(validateEqualTo)
                           .DataValidateMaxLength(validateMaxLength)
                           .DataAction(action)
                           .DataMethod(method)
                           .Add(attributes),
                           action: () => hb
                           .Text(text: text)));

            case HtmlTypes.TextTypes.Password:
                return(hb.Input(attributes: new HtmlAttributes()
                                .Id(controlId)
                                .Class(Css.Class("control-textbox", controlCss))
                                .Type("password")
                                .Value(text)
                                .Placeholder(placeholder)
                                .OnChange(onChange)
                                .DataId(dataId)
                                .DataValidateRequired(validateRequired)
                                .DataValidateNumber(validateNumber)
                                .DataValidateDate(validateDate)
                                .DataValidateEmail(validateEmail)
                                .DataValidateEqualTo(validateEqualTo)
                                .DataValidateMaxLength(validateMaxLength)
                                .Add(attributes)));

            case HtmlTypes.TextTypes.File:
                return(hb.Input(attributes: new HtmlAttributes()
                                .Id(controlId)
                                .Class(Css.Class("control-textbox", controlCss))
                                .Type("file")
                                .Value(text)
                                .Placeholder(placeholder)
                                .OnChange(onChange)
                                .Accept(accept)
                                .DataId(dataId)
                                .DataValidateRequired(validateRequired)
                                .DataValidateNumber(validateNumber)
                                .DataValidateDate(validateDate)
                                .DataValidateEmail(validateEmail)
                                .DataValidateEqualTo(validateEqualTo)
                                .DataValidateMaxLength(validateMaxLength)
                                .DataAction(action)
                                .DataMethod(method)
                                .Add(attributes)));

            default:
                return(hb);
            }
        }
Exemplo n.º 27
0
 public static HtmlBuilder Td(
     this HtmlBuilder hb, Context context, Column column, TimeZoneInfo value)
 {
     return(hb.Td(action: () => hb
                  .Text(text: value.StandardName)));
 }
Exemplo n.º 28
0
 private static HtmlBuilder AccountMenu(this HtmlBuilder hb, Context context)
 {
     return(hb.Ul(id: "AccountMenu", css: "menu", action: () => hb
                  .Li(action: () => hb
                      .A(
                          href: Locations.Logout(context: context),
                          action: () => hb
                          .Span(css: "ui-icon ui-icon-locked")
                          .Text(text: Displays.Logout(context: context))))
                  .Li(
                      action: () => hb
                      .A(
                          href: Locations.Edit(
                              context: context,
                              controller: "Users",
                              id: context.UserId),
                          action: () => hb
                          .Span(css: "ui-icon ui-icon-wrench")
                          .Text(text: Displays.EditProfile(context: context))),
                      _using: Parameters.Service.ShowProfiles)
                  .Li(
                      action: () => hb
                      .A(
                          href: Locations.Get(
                              context: context,
                              parts: new string[]
     {
         "Users",
         "EditApi"
     }),
                          action: () => hb
                          .Span(css: "ui-icon ui-icon-link")
                          .Text(text: Displays.ApiSettings(context: context))),
                      _using: context.ContractSettings.Api != false && Parameters.Api.Enabled)
                  .Li(action: () => hb
                      .A(
                          href: Parameters.General.HtmlUsageGuideUrl,
                          target: "_blank",
                          action: () => hb
                          .Span(css: "ui-icon ui-icon-help")
                          .Text(text: Displays.UsageGuide(context: context))))
                  .Li(action: () => hb
                      .A(
                          href: Parameters.General.HtmlBlogUrl,
                          target: "_blank",
                          action: () => hb
                          .Span(css: "ui-icon ui-icon-info")
                          .Text(text: Displays.Blog(context: context))))
                  .Li(action: () => hb
                      .A(
                          href: Parameters.General.HtmlSupportUrl,
                          target: "_blank",
                          action: () => hb
                          .Span(css: "ui-icon ui-icon-contact")
                          .Text(text: Displays.Support(context: context))))
                  .Li(action: () => hb
                      .A(
                          href: Parameters.General.HtmlContactUrl,
                          target: "_blank",
                          action: () => hb
                          .Span(css: "ui-icon ui-icon-contact")
                          .Text(text: Displays.Contact(context: context))))
                  .Li(action: () => hb
                      .A(
                          href: Parameters.General.HtmlPortalUrl,
                          target: "_blank",
                          action: () => hb
                          .Span(css: "ui-icon ui-icon-cart")
                          .Text(text: Displays.Portal(context: context))))
                  .Li(action: () => hb
                      .A(
                          href: Locations.Get(
                              context: context,
                              parts: "versions"),
                          action: () => hb
                          .Span(css: "ui-icon ui-icon-info")
                          .Text(text: Displays.Version(context: context))))));
 }
Exemplo n.º 29
0
 private void RenderVisibleControl(HtmlTextWriter writer)
 {
     if (Manager.Instance.IsAjaxCallback)
     {
         RenderVisibleControlInCallback(writer);
     }
     else
     {
         HtmlBuilder builder = new HtmlBuilder(writer);
         RenderMuxControl(builder);
         Manager.Instance.InternalJavaScriptWriter.Write(GetClientSideScript());
     }
 }
Exemplo n.º 30
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public static string MultiUpload(Context context, long id)
        {
            var controlId = context.Forms.ControlId();
            var ss        = new ItemModel(
                context: context,
                referenceId: id).GetSite(
                context: context,
                initSiteSettings: true)
                            .SiteSettings;
            var column = ss.GetColumn(
                context: context,
                columnName: context.Forms.Data("ColumnName"));
            var attachments = context.Forms.Data("AttachmentsData").Deserialize <Attachments>();
            var invalid     = BinaryValidators.OnUploading(
                context: context,
                column: column,
                attachments: attachments);

            switch (invalid)
            {
            case Error.Types.OverLimitQuantity:
                return(Messages.ResponseOverLimitQuantity(
                           context: context,
                           data: column.LimitQuantity.ToString()).ToJson());

            case Error.Types.OverLimitSize:
                return(Messages.ResponseOverLimitSize(
                           context: context,
                           data: column.LimitSize.ToString()).ToJson());

            case Error.Types.OverTotalLimitSize:
                return(Messages.ResponseOverTotalLimitSize(
                           context: context,
                           data: column.TotalLimitSize.ToString()).ToJson());

            case Error.Types.OverTenantStorageSize:
                return(Messages.ResponseOverTenantStorageSize(
                           context: context,
                           data: context.ContractSettings.StorageSize.ToString()).ToJson());

            case Error.Types.None: break;

            default: return(invalid.MessageJson(context: context));
            }
            context.PostedFiles.ForEach(file => attachments.Add(new Attachment()
            {
                Guid        = file.Guid,
                Name        = file.FileName.Split('\\').Last(),
                Size        = file.Size,
                Extention   = file.Extension,
                ContentType = file.ContentType,
                Added       = true,
                Deleted     = false
            }));
            var hb = new HtmlBuilder();

            return(new ResponseCollection()
                   .ReplaceAll($"#{controlId}Field", new HtmlBuilder()
                               .Field(
                                   context: context,
                                   ss: ss,
                                   column: column,
                                   value: attachments.ToJson(),
                                   columnPermissionType: column
                                   .ColumnPermissionType(context: context)))
                   .SetData("#" + controlId)
                   .ToJson());
        }
Exemplo n.º 31
0
 private static HtmlBuilder SettingsMenu(
     this HtmlBuilder hb,
     Context context,
     SiteSettings ss,
     long siteId,
     bool canManageSite,
     bool canManageDepts,
     bool canManageGroups,
     bool canManageUsers,
     bool canManageTenants,
     bool canManageTrashBox)
 {
     return(hb.Ul(
                id: "SettingsMenu",
                css: "menu",
                action: () => hb
                .Li(
                    action: () => hb
                    .A(
                        href: Locations.ItemEdit(
                            context: context,
                            id: siteId),
                        action: () => hb
                        .Span(css: "ui-icon ui-icon-gear")
                        .Text(text: SiteSettingsDisplayName(
                                  context: context,
                                  ss: ss))),
                    _using: canManageSite)
                .Li(
                    action: () => hb
                    .A(
                        href: Locations.Edit(
                            context: context,
                            controller: "Tenants"),
                        action: () => hb
                        .Span(css: "ui-icon ui-icon-gear")
                        .Text(text: Displays.TenantAdmin(context: context))),
                    _using: canManageTenants)
                .Li(
                    action: () => hb
                    .A(
                        href: Locations.Index(
                            context: context,
                            controller: "Depts"),
                        action: () => hb
                        .Span(css: "ui-icon ui-icon-gear")
                        .Text(text: Displays.DeptAdmin(context: context))),
                    _using: canManageDepts)
                .Li(
                    action: () => hb
                    .A(
                        href: Locations.Index(
                            context: context,
                            controller: "Groups"),
                        action: () => hb
                        .Span(css: "ui-icon ui-icon-gear")
                        .Text(text: Displays.GroupAdmin(context: context))),
                    _using: canManageGroups)
                .Li(
                    action: () => hb
                    .A(
                        href: Locations.Index(
                            context: context,
                            controller: "Users"),
                        action: () => hb
                        .Span(css: "ui-icon ui-icon-gear")
                        .Text(text: Displays.UserAdmin(context: context))),
                    _using: canManageUsers)
                .Li(
                    action: () => hb
                    .A(
                        href: Locations.ItemTrashBox(
                            context: context,
                            id: siteId),
                        action: () => hb
                        .Span(css: "ui-icon ui-icon-trash")
                        .Text(text: Displays.TrashBox(context: context))),
                    _using: canManageTrashBox)));
 }
Exemplo n.º 32
0
 public virtual HtmlBuilder Td(HtmlBuilder hb, Context context, Column column)
 {
     return(hb.Td(action: () => hb
                  .P(action: () => TdTitle(hb: hb, context: context, column: column))));
 }
Exemplo n.º 33
0
        public async Task <string> RenderAsync(SerializableList <PageDefinition.AllowedUser> model)
        {
            HtmlBuilder hb = new HtmlBuilder();

            bool header = PropData.GetAdditionalAttributeValue("Header", true);

            GridModel grid = new GridModel()
            {
                GridDef = GetGridModel(header)
            };

            grid.GridDef.DirectDataAsync = async(int skip, int take, List <DataProviderSortInfo> sorts, List <DataProviderFilterInfo> filters) => {
                List <GridAllowedUser> list;
                if (model != null)
                {
                    list = new List <GridAllowedUser>();
                    foreach (PageDefinition.AllowedUser allowedUser in model)
                    {
                        string userName = await Resource.ResourceAccess.GetUserNameAsync(allowedUser.UserId);

                        list.Add(new GridAllowedUser(allowedUser, userName));
                    }
                }
                else
                {
                    list = new List <GridAllowedUser>();
                }
                DataSourceResult data = new DataSourceResult {
                    Data  = list.ToList <object>(),
                    Total = list.Count,
                };
                return(data);
            };

            hb.Append($@"
<div class='yt_yetawf_pageedit_allowedusers t_edit' id='{DivId}'>
    {await HtmlHelper.ForDisplayAsAsync(Container, PropertyName, FieldName, grid, nameof(grid.GridDef), grid.GridDef, "Grid", HtmlAttributes: HtmlAttributes)}");

            using (Manager.StartNestedComponent(FieldName)) {
                NewModel newModel = new NewModel();
                hb.Append($@"
    <div class='t_newvalue'>
        {await HtmlHelper.ForLabelAsync(newModel, nameof(newModel.NewValue))}
        {await HtmlHelper.ForEditAsync(newModel, nameof(newModel.NewValue))}
        <input name='btnAdd' type='button' value='Add' disabled='disabled' />
    </div>");
            }

            GridModel gridAll = new GridModel()
            {
                GridDef = GetGridAllUsersModel()
            };
            AllowedUsersSetup setup = new AllowedUsersSetup {
                AddUrl    = Utility.UrlFor(typeof(AllowedUsersController), nameof(AllowedUsersController.AddUserToPage)),
                GridId    = grid.GridDef.Id,
                GridAllId = gridAll.GridDef.Id
            };

            hb.Append($@"
    <div id='{DivId}_coll'>
        {await ModuleActionHelper.BuiltIn_ExpandAction(__ResStr("lblFindUsers", "Find Users"), __ResStr("ttFindUsers", "Expand to find user names available on this site")).RenderAsNormalLinkAsync() }
    </div>
    <div id='{DivId}_exp' style='display:none'>
        {await ModuleActionHelper.BuiltIn_CollapseAction(__ResStr("lblAllUserNames", "All User Names"), __ResStr("ttAllUserNames", "Shows all user names available on this site - Select a user name to update the text box above, so the user name can be added to the list of user names - Click to close")).RenderAsNormalLinkAsync() }
        {await HtmlHelper.ForDisplayAsAsync(Container, PropertyName, FieldName, gridAll, nameof(gridAll.GridDef), gridAll.GridDef, "Grid")}
    </div>
</div>");

            Manager.ScriptManager.AddLast($@"
$YetaWF.expandCollapseHandling('{DivId}', '{DivId}_coll', '{DivId}_exp');
new YetaWF_PageEdit.AllowedUsersEditComponent('{DivId}', {Utility.JsonSerialize(setup)});");

            return(hb.ToString());
        }
 public static HtmlBuilder MarkDown(
     this HtmlBuilder hb,
     Context context,
     string controlId      = null,
     string controlCss     = null,
     string text           = null,
     string placeholder    = null,
     bool readOnly         = false,
     bool allowImage       = true,
     bool allowBulkUpdate  = false,
     bool mobile           = false,
     bool alwaysSend       = false,
     bool validateRequired = false,
     Dictionary <string, string> attributes = null,
     bool preview                     = false,
     bool _using                      = true,
     int validateMaxLength            = 0,
     string validateRegex             = null,
     string validateRegexErrorMessage = null)
 {
     if (preview)
     {
         controlId = Strings.NewGuid();
     }
     return(_using
         ? hb
            .Div(attributes: new HtmlAttributes()
                 .Id(controlId + ".viewer")
                 .Class("control-markup not-send")
                 .OnDblClick("$p.editMarkdown($(this));"))
            .Div(
                attributes: new HtmlAttributes()
                .Id(controlId + ".editor")
                .Class("ui-icon ui-icon-pencil button-edit-markdown")
                .OnClick("$p.editMarkdown($(this));"),
                _using: !readOnly)
            .TextArea(
                attributes: new HtmlAttributes()
                .Id(controlId)
                .Name(controlId)
                .Class(Css.Class(
                           "control-markdown" +
                           (CanUploadImage(context, readOnly, allowImage, preview)
                                 ? " upload-image"
                                 : string.Empty),
                           controlCss))
                .Placeholder(placeholder)
                .DataAlwaysSend(alwaysSend)
                .DataValidateMaxLength(validateMaxLength)
                .DataValidateRequired(validateRequired, _using: !readOnly)
                .DataValidateRegex(validateRegex)
                .DataValidateRegexErrorMessage(validateRegexErrorMessage)
                .Add(attributes),
                text: text)
            .MarkDownCommands(
                context: context,
                controlId: controlId,
                readOnly: readOnly,
                allowImage: allowImage,
                mobile: mobile,
                preview: preview)
         : hb);
 }
Exemplo n.º 35
0
        public static string FormatExceptionForWeb(Exception ex)
        {
            StringBuilder msg = new StringBuilder();

            msg.Append(HtmlBuilder.WrapInBoldTags("Date/time: ") + DateTime.Now.ToString() + HtmlBuilder.GetLineBreak(2));

            do
            {
                msg.Append(HtmlBuilder.WrapInBoldTags("****EXCEPTION DETAILS****") + HtmlBuilder.GetLineBreak());
                msg.Append(HtmlBuilder.WrapInBoldTags("Source: ") + ex.Source + HtmlBuilder.GetLineBreak());
                msg.Append(HtmlBuilder.WrapInBoldTags("Message: ") + ex.Message + HtmlBuilder.GetLineBreak());
                msg.Append(HtmlBuilder.WrapInBoldTags("Target Site: ") + ex.TargetSite + HtmlBuilder.GetLineBreak());
                msg.Append(HtmlBuilder.WrapInBoldTags("Stack Trace: ") + ex.StackTrace);

                msg.Append(HtmlBuilder.GetLineBreak(2));

                ex = ex.InnerException;
            }while (ex != null);

            Literal lit = new Literal();

            lit.Text = msg.ToString();

            Panel pnl = new Panel();

            pnl.ForeColor  = ColorTranslator.FromHtml("#4d4f53");
            pnl.Font.Names = new string[] { "Tahoma", "Arial" };
            pnl.Font.Size  = new FontUnit("13px");
            pnl.Controls.Add(lit);

            return(HtmlBuilder.GetServerControlHtml(pnl));
        }
Exemplo n.º 36
0
        private static HtmlBuilder Columns(this HtmlBuilder hb, SiteSettings ss, View view)
        {
            ss.GetFilterColumns(checkPermission: true).ForEach(column =>
            {
                switch (column.TypeName.CsTypeSummary())
                {
                case Types.CsBool:
                    hb.CheckBox(
                        column: column,
                        ss: ss,
                        view: view);
                    break;

                case Types.CsNumeric:
                    hb.DropDown(
                        ss: ss,
                        column: column,
                        view: view,
                        optionCollection: column.HasChoices()
                                ? column.EditChoices(addNotSet: true)
                                : column.NumFilterOptions());
                    break;

                case Types.CsDateTime:
                    hb.DropDown(
                        ss: ss,
                        column: column,
                        view: view,
                        optionCollection: column.DateFilterOptions());
                    break;

                case Types.CsString:
                    if (column.HasChoices())
                    {
                        if (view.ColumnFilterHash?.ContainsKey(column.ColumnName) == true &&
                            column.UseSearch == true &&
                            ss.Links?.Any(o => o.ColumnName == column.ColumnName) == true)
                        {
                            ss.SetChoiceHash(
                                columnName: column?.ColumnName,
                                selectedValues: view.ColumnFilter(column.ColumnName)
                                .Select(o => o.ToString()));
                        }
                        hb.DropDown(
                            ss: ss,
                            column: column,
                            view: view,
                            optionCollection: column.EditChoices(addNotSet: true));
                    }
                    else if (ss.EditorColumns.Contains(column.ColumnName))
                    {
                        hb.FieldTextBox(
                            controlId: "ViewFilters_" + column.Id,
                            fieldCss: "field-auto-thin",
                            controlCss: " auto-postback",
                            labelText: Displays.Get(column.GridLabelText),
                            text: view.ColumnFilter(column.ColumnName),
                            method: "post");
                    }
                    break;

                default:
                    break;
                }
            });
            return(hb);
        }
Exemplo n.º 37
0
 private void AncestorReRendering(HtmlTextWriter writer)
 {
     HtmlBuilder builder = new HtmlBuilder(writer);
     RenderMuxControl(builder);
 }
Exemplo n.º 38
0
        public async Task <string> RenderAsync(CarouselInfo model)
        {
            HtmlBuilder hb = new HtmlBuilder();

            hb.Append($@"
<div id='{ControlId}' class='yt_bootstrapcarousel_slideshow t_display carousel slide' data-interval='{model.Interval}'
            data-wrap='{(model.Wrap ? "true" : "false")}' data-pause='{(model.Pause ? "hover" : "false")}' data-keyboard='{(model.Keyboard ? "true" : "false")}'>
    <!-- Indicators -->
    <ol class='carousel-indicators'>");

            int index = 0;

            foreach (CarouselInfo.CarouselItem slide in model.Slides)
            {
                if (index == 0)
                {
                    hb.Append($@"
        <li data-target='#{ControlId}' data-slide-to='{index}' class='active'></li>");
                }
                else
                {
                    hb.Append($@"
        <li data-target='#{ControlId}' data-slide-to='{index}'></li>");
                }
                ++index;
            }
            hb.Append($@"
    </ol>
    <!-- Wrapper for slides -->
    <div class='carousel-inner' role='listbox'>");

            index = 0;
            foreach (CarouselInfo.CarouselItem slide in model.Slides)
            {
                hb.Append($@"
        <div class='carousel-item{(index == 0 ? " active" : "")}'>");

                using (Manager.StartNestedComponent($"{FieldNamePrefix}.{nameof(model.Slides)}[{index}]")) {
                    if (!string.IsNullOrWhiteSpace(slide.Url))
                    {
                        hb.Append($@"
            <a href='{HAE(Manager.CurrentSite.MakeUrl(slide.Url))}' target='_blank' rel='noopener noreferrer' class='{YetaWF.Core.Addons.Basics.CssNoTooltip}'>
                {await HtmlHelper.ForDisplayAsync(slide, nameof(CarouselInfo.CarouselItem.ImageDisplay))}
            </a>");
                    }
                    else
                    {
                        hb.Append(await HtmlHelper.ForDisplayAsync(slide, nameof(CarouselInfo.CarouselItem.ImageDisplay)));
                    }
                }
                if (!string.IsNullOrWhiteSpace(slide.CompleteCaption.ToString()))
                {
                    hb.Append($@"
            <div class='carousel-caption'>
                {Utility.HtmlEncode(slide.CompleteCaption.ToString())}
            </div>");
                }
                hb.Append(@"
        </div>");

                ++index;
            }
            hb.Append($@"
    </div>
    <!-- Controls -->
    <a class='carousel-control-prev' href='#{ControlId}' role='button' data-slide='prev'>
        <span class='carousel-control-prev-icon' aria-hidden='true'></span>
        <span class='sr-only'>Previous</span>
    </a>
    <a class='carousel-control-next' href='#{ControlId}' role='button' data-slide='next'>
        <span class='carousel-control-next-icon' aria-hidden='true'></span>
        <span class='sr-only'>Next</span>
    </a>
</div>");

            Manager.ScriptManager.AddLast($@"$('#{ControlId}').carousel();");

            return(hb.ToString());
        }
Exemplo n.º 39
0
		protected override void RenderMuxControl(HtmlBuilder builder)
		{
			using (Element el = builder.CreateElement("div"))
			{
				AddAttributes(el);

				RenderChildren(builder.Writer);

				using (Element ul = builder.CreateElement("ul"))
				{
					ul.AddAttribute("id", this.ClientID + "_ul");
				}
			}
		}
Exemplo n.º 40
0
 private static HtmlBuilder SettingsMenu(
     this HtmlBuilder hb,
     Context context,
     SiteSettings ss,
     long siteId,
     bool canManageSite,
     bool canManageDepts,
     bool canManageGroups,
     bool canManageUsers,
     bool canManageRegistrations,
     bool canManageTenants,
     bool canManageTrashBox)
 {
     return(hb.Ul(
                id: "SettingsMenu",
                css: "menu",
                action: () => hb
                .Li(
                    action: () => hb
                    .A(
                        href: Locations.ItemEdit(
                            context: context,
                            id: siteId),
                        action: () => hb
                        .Span(css: "ui-icon ui-icon-gear")
                        .Text(text: SiteSettingsDisplayName(
                                  context: context,
                                  ss: ss))),
                    _using: canManageSite)
                .LockTableMenu(
                    context: context,
                    ss: ss,
                    canManageSite: canManageSite)
                .Li(
                    action: () => hb
                    .A(
                        href: Locations.Edit(
                            context: context,
                            controller: "Tenants"),
                        action: () => hb
                        .Span(css: "ui-icon ui-icon-gear")
                        .Text(text: Displays.TenantAdmin(context: context))),
                    _using: canManageTenants)
                .Li(
                    action: () => hb
                    .A(
                        href: Locations.Index(
                            context: context,
                            controller: "Depts"),
                        action: () => hb
                        .Span(css: "ui-icon ui-icon-gear")
                        .Text(text: Displays.DeptAdmin(context: context))),
                    _using: canManageDepts)
                .Li(
                    action: () => hb
                    .A(
                        href: Locations.Index(
                            context: context,
                            controller: "Groups"),
                        action: () => hb
                        .Span(css: "ui-icon ui-icon-gear")
                        .Text(text: Displays.GroupAdmin(context: context))),
                    _using: canManageGroups)
                .Li(
                    action: () => hb
                    .A(
                        href: Locations.Index(
                            context: context,
                            controller: "Users"),
                        action: () => hb
                        .Span(css: "ui-icon ui-icon-gear")
                        .Text(text: Displays.UserAdmin(context: context))),
                    _using: canManageUsers)
                .Li(
                    action: () => hb
                    .A(
                        href: "javascript:void(0);",
                        attributes: new HtmlAttributes()
                        .OnClick("$p.openImportSitePackageDialog($(this));")
                        .DataAction("OpenImportSitePackageDialog")
                        .DataMethod("post"),
                        action: () => hb
                        .Span(css: "ui-icon ui-icon-arrowreturnthick-1-e")
                        .Text(text: Displays.ImportSitePackage(context: context))),
                    _using: Parameters.SitePackage.Import &&
                    canManageSite &&
                    ss.IsSite(context: context) &&
                    ss.ReferenceType == "Sites" ||
                    (ss.SiteId == 0 &&
                     context.UserSettings.DisableTopSiteCreation != true))
                .Li(
                    action: () => hb
                    .A(
                        href: "javascript:void(0);",
                        attributes: new HtmlAttributes()
                        .OnClick("$p.openExportSitePackageDialog($(this));")
                        .DataAction("OpenExportSitePackageDialog")
                        .DataMethod("post"),
                        action: () => hb
                        .Span(css: "ui-icon ui-icon-arrowreturnthick-1-w")
                        .Text(text: Displays.ExportSitePackage(context: context))),
                    _using: Parameters.SitePackage.Export &&
                    canManageSite &&
                    ss.IsSite(context: context))
                .Li(
                    action: () => hb
                    .A(
                        href: Locations.Index(
                            context: context,
                            controller: "Registrations"),
                        action: () => hb
                        .Span(css: "ui-icon ui-icon-gear")
                        .Text(text: Displays.Registrations(context: context))),
                    _using: canManageRegistrations)
                .Li(
                    action: () => hb
                    .A(
                        href: Locations.ItemTrashBox(
                            context: context,
                            id: siteId),
                        action: () => hb
                        .Span(css: "ui-icon ui-icon-trash")
                        .Text(text: Displays.TrashBox(context: context))),
                    _using: canManageTrashBox)));
 }
 private static HtmlBuilder EditorExtensions(
     this HtmlBuilder hb, DeptModel deptModel, SiteSettings ss)
 {
     return(hb);
 }
Exemplo n.º 42
0
        private static HtmlBuilder NavigationMenu(
            this HtmlBuilder hb,
            Context context,
            SiteSettings ss,
            long siteId,
            string referenceType)
        {
            var canManageGroups        = context.UserSettings?.DisableGroupAdmin != true;
            var canManageSite          = siteId != 0 && context.CanManageSite(ss: ss, site: true);
            var canManageDepts         = Permissions.CanManageTenant(context: context);
            var canManageUsers         = Permissions.CanManageTenant(context: context);
            var canManageRegistrations = Permissions.CanManageRegistrations(context: context);
            var canManageTenants       = Permissions.CanManageTenant(context: context) ||
                                         context.UserSettings?.EnableManageTenant == true;
            var canManageTrashBox = CanManageTrashBox(context: context, ss: ss);

            return(hb.Ul(
                       id: "NavigationMenu",
                       action: () => hb
                       .Li(
                           id: "NewMenuContainer",
                           action: () => hb
                           .Div(action: () => hb
                                .A(
                                    href: NewHref(
                                        context: context,
                                        ss: ss),
                                    attributes: SiteIndex(
                                        context: context,
                                        ss: ss)
                                        ? new HtmlAttributes()
                                    .OnClick("$p.templates($(this));")
                                    .DataAction("Templates")
                                    .DataMethod("post")
                                        : null,
                                    action: () => hb
                                    .Span(css: "ui-icon ui-icon-plus")
                                    .Text(text: Displays.New(context: context)))),
                           _using: ss.ReferenceType == "Sites" && context.Action == "index"
                            ? context.CanManageSite(ss: ss)
                            : context.CanCreate(ss: ss) &&
                           ss.ReferenceType != "Wikis" &&
                           context.Action != "trashbox")
                       .Li(
                           id: "ViewModeMenuContainer",
                           css: "sub-menu",
                           action: () => hb
                           .Div(
                               attributes: new HtmlAttributes().DataId("ViewModeMenu"),
                               action: () => hb
                               .Span(css: "ui-icon ui-icon-triangle-1-e")
                               .Text(text: Displays.View(context: context)))
                           .ViewModeMenu(
                               context: context,
                               ss: ss),
                           _using: Def.ViewModeDefinitionCollection
                           .Any(o => o.ReferenceType == referenceType))
                       .Li(
                           id: "SettingsMenuContainer",
                           css: "sub-menu",
                           action: () => hb
                           .Div(
                               attributes: new HtmlAttributes().DataId("SettingsMenu"),
                               action: () => hb
                               .Span(css: "ui-icon ui-icon-gear")
                               .Text(text: Displays.Manage(context: context)))
                           .SettingsMenu(
                               context: context,
                               ss: ss,
                               siteId: siteId,
                               canManageSite: canManageSite,
                               canManageDepts: canManageDepts,
                               canManageGroups: canManageGroups,
                               canManageUsers: canManageUsers,
                               canManageRegistrations: canManageRegistrations,
                               canManageTenants: canManageTenants,
                               canManageTrashBox: canManageTrashBox),
                           _using:
                           canManageSite ||
                           canManageDepts ||
                           canManageGroups ||
                           canManageUsers)
                       .Li(
                           id: "HelpMenuContainer",
                           css: "sub-menu",
                           action: () => hb
                           .Div(
                               attributes: new HtmlAttributes().DataId("HelpMenu"),
                               action: () => hb
                               .Span(css: "ui-icon ui-icon-help")
                               .Text(text: Displays.HelpMenu(context: context)))
                           .HelpMenu(context: context))
                       .Li(
                           id: "AccountMenuContainer",
                           css: "sub-menu",
                           action: () => hb
                           .Div(
                               attributes: new HtmlAttributes()
                               .DataId("AccountMenu")
                               .Id("AccountUserName"),
                               action: () => hb
                               .Span(css: "ui-icon ui-icon-person")
                               .Text(text: SiteInfo.UserName(
                                         context: context,
                                         userId: context.UserId)))
                           .AccountMenu(context: context))));
        }
Exemplo n.º 43
0
 public static HtmlBuilder Td(
     this HtmlBuilder hb, Context context, Column column, long value)
 {
     return(hb.Td(action: () => hb
                  .Text(text: value.ToString(column.StringFormat) + column.Unit)));
 }
Exemplo n.º 44
0
        private HtmlBuilder LimitText(HtmlBuilder hb, Context context)
        {
            var value = Value.ToLocal(context: context);

            if (!Times.InRange(value))
            {
                return(hb);
            }
            var now = VerType == Versions.VerTypes.Latest
                ? DateTime.Now.ToLocal(context: context)
                : UpdatedTime.ToLocal(context: context);
            var css   = LimitCss(now, value);
            var years = Times.DateDiff(Times.Types.Years, now, value);

            if (Math.Abs(years) >= 2)
            {
                return(years > 0
                    ? hb.P(css: css, action: () => hb
                           .Text(text: Displays.LimitAfterYears(
                                     context: context,
                                     data: years.ToString())))
                    : hb.P(css: css, action: () => hb
                           .Text(text: Displays.LimitBeforeYears(
                                     context: context,
                                     data: (years * -1).ToString()))));
            }
            var months = Times.DateDiff(Times.Types.Months, now, value);

            if (Math.Abs(months) >= 2)
            {
                return(months > 0
                    ? hb.P(css: css, action: () => hb
                           .Text(text: Displays.LimitAfterMonths(
                                     context: context,
                                     data: months.ToString())))
                    : hb.P(css: css, action: () => hb
                           .Text(text: Displays.LimitBeforeMonths(
                                     context: context,
                                     data: (months * -1).ToString()))));
            }
            var days = Times.DateDiff(Times.Types.Days, now, value);

            if ((days >= 0 && days >= 2) || (days < 0))
            {
                return(days > 0
                    ? hb.P(css: css, action: () => hb
                           .Text(text: Displays.LimitAfterDays(
                                     context: context,
                                     data: (days - 1).ToString())))
                    : hb.P(css: css, action: () => hb
                           .Text(text: Displays.LimitBeforeDays(
                                     context: context,
                                     data: ((days * -1) + 1).ToString()))));
            }
            var hours = Times.DateDiff(Times.Types.Hours, now, value);

            if (Math.Abs(hours) >= 3)
            {
                return(hours > 0
                    ? hb.P(css: css, action: () => hb
                           .Text(text: Displays.LimitAfterHours(
                                     context: context,
                                     data: hours.ToString())))
                    : hb.P(css: css, action: () => hb
                           .Text(text: Displays.LimitBeforeHours(
                                     context: context,
                                     data: (hours * -1).ToString()))));
            }
            var minutes = Times.DateDiff(Times.Types.Minutes, now, value);

            if (Math.Abs(minutes) >= 3)
            {
                return(minutes > 0
                    ? hb.P(css: css, action: () => hb
                           .Text(text: Displays.LimitAfterMinutes(
                                     context: context,
                                     data: minutes.ToString())))
                    : hb.P(css: css, action: () => hb
                           .Text(text: Displays.LimitBeforeMinutes(
                                     context: context,
                                     data: (minutes * -1).ToString()))));
            }
            var seconds = Times.DateDiff(Times.Types.Seconds, now, value);

            if (Math.Abs(seconds) >= 1)
            {
                return(seconds > 0
                    ? hb.P(css: css, action: () => hb
                           .Text(text: Displays.LimitAfterSeconds(
                                     context: context,
                                     data: seconds.ToString())))
                    : hb.P(css: css, action: () => hb
                           .Text(text: Displays.LimitBeforeSeconds(
                                     context: context,
                                     data: (seconds * -1).ToString()))));
            }
            return(hb.P(css: "Display-just", action: () => hb
                        .Text(text: Displays.LimitJust(context: context))));
        }
Exemplo n.º 45
0
        public static HtmlBuilder MainCommands(
            this HtmlBuilder hb,
            Context context,
            SiteSettings ss,
            long siteId,
            Versions.VerTypes verType,
            long referenceId  = 0,
            bool backButton   = true,
            bool updateButton = false,
            bool copyButton   = false,
            bool moveButton   = false,
            bool mailButton   = false,
            bool deleteButton = false,
            Action extensions = null)
        {
            return(hb.Div(id: "MainCommandsContainer", action: () => hb
                          .Div(id: "MainCommands", action: () =>
            {
                if (backButton)
                {
                    hb.Button(
                        controlId: "GoBack",
                        text: Displays.GoBack(context: context),
                        controlCss: "button-icon",
                        accessKey: "q",
                        onClick: "$p.back();",
                        icon: "ui-icon-circle-arrow-w");
                }
                if (context.Action == "new")
                {
                    hb.Button(
                        text: Displays.Create(context: context),
                        controlCss: "button-icon validate",
                        accessKey: "s",
                        onClick: "$p.send($(this));",
                        icon: "ui-icon-disk",
                        action: "Create",
                        method: "post");
                }
                else if (context.CanRead(ss: ss) && verType == Versions.VerTypes.Latest)
                {
                    hb
                    .Button(
                        text: Displays.Update(context: context),
                        controlCss: "button-icon validate",
                        accessKey: "s",
                        onClick: "$p.send($(this));",
                        icon: "ui-icon-disk",
                        action: "Update",
                        method: "put",
                        _using: updateButton && context.CanUpdate(ss: ss))
                    .Button(
                        text: Displays.Copy(context: context),
                        controlCss: "button-icon open-dialog",
                        accessKey: "c",
                        onClick: "$p.openDialog($(this));",
                        icon: "ui-icon-copy",
                        selector: "#CopyDialog",
                        _using: copyButton && context.CanCreate(ss: ss))
                    .Button(
                        text: Displays.Move(context: context),
                        controlCss: "button-icon open-dialog",
                        accessKey: "o",
                        onClick: "$p.moveTargets($(this));",
                        icon: "ui-icon-transferthick-e-w",
                        selector: "#MoveDialog",
                        action: "MoveTargets",
                        method: "get",
                        _using: moveButton && context.CanUpdate(ss: ss))
                    .Button(
                        controlId: "EditOutgoingMail",
                        text: Displays.Mail(context: context),
                        controlCss: "button-icon",
                        onClick: "$p.openOutgoingMailDialog($(this));",
                        icon: "ui-icon-mail-closed",
                        action: "Edit",
                        method: "put",
                        accessKey: "m",
                        _using: mailButton && context.CanSendMail(ss: ss))
                    .Button(
                        text: Displays.Delete(context: context),
                        controlCss: "button-icon",
                        accessKey: "r",
                        onClick: "$p.send($(this));",
                        icon: "ui-icon-trash",
                        action: "Delete",
                        method: "delete",
                        confirm: "ConfirmDelete",
                        _using: deleteButton &&
                        context.CanDelete(ss: ss) &&
                        !ss.IsSite(context: context))
                    .Button(
                        text: Displays.DeleteSite(context: context),
                        controlCss: "button-icon",
                        accessKey: "r",
                        onClick: "$p.openDeleteSiteDialog($(this));",
                        icon: "ui-icon-trash",
                        _using: deleteButton &&
                        context.CanDelete(ss: ss) &&
                        ss.IsSite(context: context));
                    if (context.Controller == "items" && ss.ReferenceType != "Sites")
                    {
                        switch (context.Action)
                        {
                        case "index":
                            hb
                            .Button(
                                text: Displays.BulkMove(context: context),
                                controlCss: "button-icon open-dialog",
                                accessKey: "o",
                                onClick: "$p.moveTargets($(this));",
                                icon: "ui-icon-transferthick-e-w",
                                selector: "#MoveDialog",
                                action: "MoveTargets",
                                method: "get",
                                _using: context.CanUpdate(ss: ss))
                            .Button(
                                text: Displays.BulkDelete(context: context),
                                controlCss: "button-icon",
                                accessKey: "r",
                                onClick: "$p.send($(this));",
                                icon: "ui-icon-trash",
                                action: "BulkDelete",
                                method: "delete",
                                confirm: "ConfirmDelete",
                                _using: context.CanDelete(ss: ss))
                            .Button(
                                controlId: "EditImportSettings",
                                text: Displays.Import(context: context),
                                controlCss: "button-icon",
                                accessKey: "w",
                                onClick: "$p.openImportSettingsDialog($(this));",
                                icon: "ui-icon-arrowreturnthick-1-e",
                                selector: "#ImportSettingsDialog",
                                _using: context.CanImport(ss: ss))
                            .Button(
                                text: Displays.Export(context: context),
                                controlCss: "button-icon",
                                accessKey: "x",
                                onClick: "$p.openExportSelectorDialog($(this));",
                                icon: "ui-icon-arrowreturnthick-1-w",
                                action: "OpenExportSelectorDialog",
                                method: "post",
                                _using: context.CanExport(ss: ss));
                            break;

                        case "crosstab":
                            hb.Button(
                                text: Displays.Export(context: context),
                                controlCss: "button-icon",
                                accessKey: "x",
                                onClick: "$p.exportCrosstab();",
                                icon: "ui-icon-arrowreturnthick-1-w",
                                _using: context.CanExport(ss: ss));
                            break;
                        }
                    }
                }
                extensions?.Invoke();
            })));
        }
Exemplo n.º 46
0
        public static HtmlBuilder MainCommands(
            this HtmlBuilder hb,
            Context context,
            SiteSettings ss,
            View view = null,
            Versions.VerTypes verType = Versions.VerTypes.Latest,
            bool readOnly             = false,
            bool backButton           = true,
            bool updateButton         = false,
            bool copyButton           = false,
            bool moveButton           = false,
            bool mailButton           = false,
            bool deleteButton         = false,
            Action extensions         = null)
        {
            return(hb.Div(id: "MainCommandsContainer", action: () => hb
                          .Div(id: "MainCommands", action: () =>
            {
                if (backButton)
                {
                    hb.Button(
                        controlId: "GoBack",
                        text: Displays.GoBack(context: context),
                        controlCss: "button-icon",
                        accessKey: "q",
                        onClick: "$p.back();",
                        icon: "ui-icon-circle-arrow-w");
                }
                if (context.Action == "new")
                {
                    switch (context.Controller)
                    {
                    case "registrations":
                        hb.Button(
                            controlId: "RegistrationId",
                            controlCss: "button-icon validate",
                            text: Displays.Invite(context: context),
                            onClick: "$p.send($(this));",
                            icon: "ui-icon-mail-closed",
                            action: "Create",
                            method: "post");
                        break;

                    default:
                        hb.Button(
                            controlId: "CreateCommand",
                            text: Displays.Create(context: context),
                            controlCss: "button-icon validate",
                            accessKey: "s",
                            onClick: "$p.send($(this));",
                            icon: "ui-icon-disk",
                            action: "Create",
                            method: "post");
                        break;
                    }
                }
                else if (verType == Versions.VerTypes.Latest)
                {
                    switch (context.Controller)
                    {
                    case "users":
                        hb.Common(
                            context: context,
                            ss: ss,
                            readOnly: readOnly,
                            updateButton: updateButton,
                            copyButton: copyButton,
                            moveButton: moveButton,
                            mailButton: mailButton,
                            deleteButton: deleteButton);
                        switch (context.Action)
                        {
                        case "index":
                            hb
                            .Button(
                                controlId: "BulkDeleteCommand",
                                text: Displays.BulkDelete(context: context),
                                controlCss: "button-icon",
                                accessKey: "r",
                                onClick: "$p.send($(this));",
                                icon: "ui-icon-trash",
                                action: "BulkDelete",
                                method: "delete",
                                confirm: "ConfirmDelete",
                                _using: context.CanDelete(ss: ss) &&
                                !readOnly)
                            .Button(
                                controlId: "EditImportSettings",
                                text: Displays.Import(context: context),
                                controlCss: "button-icon",
                                accessKey: "w",
                                onClick: "$p.openImportSettingsDialog($(this));",
                                icon: "ui-icon-arrowreturnthick-1-e",
                                selector: "#ImportSettingsDialog",
                                _using: context.CanImport(ss: ss) &&
                                !readOnly)
                            .Button(
                                controlId: "OpenExportSelectorDialogCommand",
                                text: Displays.Export(context: context),
                                controlCss: "button-icon",
                                accessKey: "x",
                                onClick: "$p.openExportSelectorDialog($(this));",
                                icon: "ui-icon-arrowreturnthick-1-w",
                                action: "OpenExportSelectorDialog",
                                method: "post",
                                _using: context.CanExport(ss: ss));
                            break;
                        }
                        break;

                    case "registrations":
                        switch (context.Action)
                        {
                        case "login":
                            hb.Button(
                                controlId: "RegistrationId",
                                controlCss: "button-icon validate",
                                text: Displays.ApprovalRequest(context: context),
                                onClick: "$p.send($(this));",
                                icon: "ui-icon-mail-closed",
                                action: "ApprovalRequest",
                                method: "post");
                            break;

                        case "edit":
                            hb
                            .Button(
                                controlId: "RegistrationApproval",
                                text: Displays.Approval(context: context),
                                controlCss: "button-icon",
                                onClick: "$p.send($(this));",
                                icon: "ui-icon-mail-closed",
                                action: "Approval",
                                method: "put",
                                _using: Permissions.PrivilegedUsers(loginId: context.LoginId))
                            .Button(
                                controlId: "DeleteCommand",
                                text: Displays.Delete(context: context),
                                controlCss: "button-icon",
                                accessKey: "r",
                                onClick: "$p.send($(this));",
                                icon: "ui-icon-trash",
                                action: "Delete",
                                method: "delete",
                                confirm: "ConfirmDelete",
                                _using: deleteButton &&
                                context.CanDelete(ss: ss) &&
                                !ss.IsSite(context: context) &&
                                !readOnly);
                            break;

                        case "index":
                            hb.Button(
                                controlId: "BulkDeleteCommand",
                                text: Displays.BulkDelete(context: context),
                                controlCss: "button-icon",
                                accessKey: "r",
                                onClick: "$p.send($(this));",
                                icon: "ui-icon-trash",
                                action: "BulkDelete",
                                method: "delete",
                                confirm: "ConfirmDelete",
                                _using: context.CanDelete(ss: ss) &&
                                !readOnly);
                            break;
                        }
                        break;

                    case "items":
                        hb.Common(
                            context: context,
                            ss: ss,
                            readOnly: readOnly,
                            updateButton: updateButton,
                            copyButton: copyButton,
                            moveButton: moveButton,
                            mailButton: mailButton,
                            deleteButton: deleteButton);
                        if (context.Forms.Bool("EditOnGrid"))
                        {
                            hb
                            .Button(
                                controlId: "UpdateByGridCommand",
                                text: Displays.Update(context: context),
                                controlCss: "button-icon validate",
                                accessKey: "s",
                                onClick: "$p.send($(this));",
                                icon: "ui-icon-disk",
                                action: "UpdateByGrid",
                                method: "post",
                                _using: context.CanRead(ss: ss))
                            .Button(
                                controlId: "EditOnGridCommand",
                                text: Displays.ListMode(context: context),
                                controlCss: "button-icon",
                                onClick: "$p.editOnGrid($(this),0);",
                                icon: "ui-icon-arrowreturnthick-1-w",
                                action: "Index",
                                method: "post",
                                _using: context.CanRead(ss: ss));
                        }
                        else if (ss.ReferenceType != "Sites")
                        {
                            switch (context.Action)
                            {
                            case "index":
                                hb
                                .Button(
                                    controlId: "MoveTargetsCommand",
                                    text: Displays.BulkMove(context: context),
                                    controlCss: "button-icon open-dialog",
                                    accessKey: "o",
                                    onClick: "$p.moveTargets($(this));",
                                    icon: "ui-icon-transferthick-e-w",
                                    selector: "#MoveDialog",
                                    action: "MoveTargets",
                                    method: "get",
                                    _using: ss.MoveTargets?.Any() == true &&
                                    context.CanUpdate(ss: ss) &&
                                    !ss.GridColumnsHasSources(gridColumns: view?.GridColumns) &&
                                    ss.MoveTargetsOptions(sites: ss.NumberOfMoveTargetsTable(context: context))
                                    .Any(o => ss.MoveTargets.Contains(o.Key.ToLong())) &&
                                    !readOnly)
                                .Button(
                                    controlId: "BulkDeleteCommand",
                                    text: Displays.BulkDelete(context: context),
                                    controlCss: "button-icon",
                                    accessKey: "r",
                                    onClick: "$p.send($(this));",
                                    icon: "ui-icon-trash",
                                    action: "BulkDelete",
                                    method: "delete",
                                    confirm: "ConfirmDelete",
                                    _using: context.CanDelete(ss: ss) &&
                                    !ss.GridColumnsHasSources(gridColumns: view?.GridColumns) &&
                                    !readOnly)
                                .Button(
                                    controlId: "EditImportSettings",
                                    text: Displays.Import(context: context),
                                    controlCss: "button-icon",
                                    accessKey: "w",
                                    onClick: "$p.openImportSettingsDialog($(this));",
                                    icon: "ui-icon-arrowreturnthick-1-e",
                                    selector: "#ImportSettingsDialog",
                                    _using: context.CanImport(ss: ss) &&
                                    !readOnly)
                                .Button(
                                    controlId: "OpenExportSelectorDialogCommand",
                                    text: Displays.Export(context: context),
                                    controlCss: "button-icon",
                                    accessKey: "x",
                                    onClick: "$p.openExportSelectorDialog($(this));",
                                    icon: "ui-icon-arrowreturnthick-1-w",
                                    action: "OpenExportSelectorDialog",
                                    method: "post",
                                    _using: context.CanExport(ss: ss))
                                .Button(
                                    controlId: "OpenBulkUpdateSelectorDialogCommand",
                                    text: Displays.BulkUpdate(context: context),
                                    controlCss: "button-icon",
                                    accessKey: "s",
                                    onClick: "$p.openBulkUpdateSelectorDialog($(this));",
                                    icon: "ui-icon-disk",
                                    action: "OpenBulkUpdateSelectorDialog",
                                    method: "post",
                                    _using: context.CanUpdate(ss: ss) &&
                                    ss.GetAllowBulkUpdateColumns(context, ss).Any() &&
                                    !readOnly)
                                .Button(
                                    controlId: "EditOnGridCommand",
                                    text: Displays.EditMode(context: context),
                                    controlCss: "button-icon",
                                    onClick: "$p.editOnGrid($(this),1);",
                                    icon: "ui-icon-arrowreturnthick-1-w",
                                    action: "Index",
                                    method: "post",
                                    _using: ss.GridEditorType == SiteSettings.GridEditorTypes.Grid &&
                                    context.CanUpdate(ss: ss) &&
                                    !ss.GridColumnsHasSources(gridColumns: view?.GridColumns) &&
                                    ss.IntegratedSites?.Any() != true &&
                                    !readOnly);
                                break;

                            case "crosstab":
                                hb.Button(
                                    controlId: "ExportCrosstabCommand",
                                    text: Displays.Export(context: context),
                                    controlCss: "button-icon",
                                    accessKey: "x",
                                    onClick: "$p.exportCrosstab();",
                                    icon: "ui-icon-arrowreturnthick-1-w",
                                    _using: context.CanExport(ss: ss));
                                break;
                            }
                        }
                        break;

                    default:
                        hb.Common(
                            context: context,
                            ss: ss,
                            readOnly: readOnly,
                            updateButton: updateButton,
                            copyButton: copyButton,
                            moveButton: moveButton,
                            mailButton: mailButton,
                            deleteButton: deleteButton);
                        break;
                    }
                    extensions?.Invoke();
                }
            })));
        }
Exemplo n.º 47
0
 protected override void RenderMuxControl(HtmlBuilder builder)
 {
     using (Element el = builder.CreateElement("span"))
     {
         AddAttributes(el);
         el.Write("&nbsp;");
     }
 }
Exemplo n.º 48
0
 private static HtmlBuilder Common(
     this HtmlBuilder hb,
     Context context,
     SiteSettings ss,
     bool readOnly,
     bool updateButton,
     bool copyButton,
     bool moveButton,
     bool mailButton,
     bool deleteButton)
 {
     return(hb
            .Button(
                controlId: "UpdateCommand",
                text: Displays.Update(context: context),
                controlCss: "button-icon validate",
                accessKey: "s",
                onClick: "$p.send($(this));",
                icon: "ui-icon-disk",
                action: "Update",
                method: "put",
                _using: updateButton &&
                context.CanUpdate(ss: ss) &&
                !readOnly)
            .Button(
                controlId: "OpenCopyDialogCommand",
                text: Displays.Copy(context: context),
                controlCss: "button-icon open-dialog",
                accessKey: "c",
                onClick: "$p.openDialog($(this));",
                icon: "ui-icon-copy",
                selector: "#CopyDialog",
                _using: copyButton &&
                context.CanCreate(ss: ss))
            .Button(
                controlId: "MoveTargetsCommand",
                text: Displays.Move(context: context),
                controlCss: "button-icon open-dialog",
                accessKey: "o",
                onClick: "$p.moveTargets($(this));",
                icon: "ui-icon-transferthick-e-w",
                selector: "#MoveDialog",
                action: "MoveTargets",
                method: "get",
                _using: moveButton &&
                ss.MoveTargets?.Any() == true &&
                context.CanUpdate(ss: ss) &&
                ss.MoveTargetsOptions(sites: ss.NumberOfMoveTargetsTable(context: context))
                .Any(o => ss.MoveTargets.Contains(o.Key.ToLong())) &&
                !readOnly)
            .Button(
                controlId: "EditOutgoingMail",
                text: Displays.Mail(context: context),
                controlCss: "button-icon",
                onClick: "$p.openOutgoingMailDialog($(this));",
                icon: "ui-icon-mail-closed",
                action: "Edit",
                method: "put",
                accessKey: "m",
                _using: mailButton && context.CanSendMail(ss: ss))
            .Button(
                controlId: "DeleteCommand",
                text: Displays.Delete(context: context),
                controlCss: "button-icon",
                accessKey: "r",
                onClick: "$p.send($(this));",
                icon: "ui-icon-trash",
                action: "Delete",
                method: "delete",
                confirm: "ConfirmDelete",
                _using: deleteButton &&
                context.CanDelete(ss: ss) &&
                !ss.IsSite(context: context) &&
                !readOnly)
            .Button(
                controlId: "OpenDeleteSiteDialogCommand",
                text: Displays.DeleteSite(context: context),
                controlCss: "button-icon",
                accessKey: "r",
                onClick: "$p.openDeleteSiteDialog($(this));",
                icon: "ui-icon-trash",
                _using: deleteButton &&
                context.CanDelete(ss: ss) &&
                ss.IsSite(context: context) &&
                !readOnly));
 }
Exemplo n.º 49
0
 /// <summary>
 /// Initializes a new instance of the <see cref="HtmlBuilderDivTag"/> class.
 /// </summary>
 /// <param name="b">The b.</param>
 /// <param name="args">The args.</param>
 public HtmlBuilderDivTag(HtmlBuilder b, Nparams args)
 {
 }
        public static HtmlBuilder Breadcrumb(
            this HtmlBuilder hb, Context context, SiteSettings ss, View view, bool _using)
        {
            if ((!context.Authenticated && !context.Publish) || !_using)
            {
                return(hb);
            }
            switch (context.Controller)
            {
            case "admins":
                return(Breadcrumb(
                           hb: hb,
                           context: context,
                           ss: ss,
                           controller: context.Controller));

            case "depts":
                return(Breadcrumb(
                           hb: hb,
                           context: context,
                           ss: ss,
                           controller: context.Controller,
                           display: Displays.Depts(context: context)));

            case "tenants":
                return(Permissions.CanManageTenant(context: context)
                        ? Breadcrumb(
                           hb: hb,
                           context: context,
                           ss: ss,
                           controller: context.Controller,
                           display: Displays.Tenants(context: context),
                           action: "Edit")
                        : (context.UserSettings?.EnableManageTenant == true)
                            ? BreadcrumbWithoutAdmins(
                           hb: hb,
                           context: context,
                           ss: ss,
                           controller: context.Controller,
                           display: Displays.Tenants(context: context),
                           action: "Edit")
                            : Breadcrumb(
                           hb: hb,
                           context: context,
                           ss: ss));

            case "groups":
                return(Permissions.CanManageTenant(context: context)
                        ? Breadcrumb(
                           hb: hb,
                           context: context,
                           ss: ss,
                           controller: context.Controller,
                           display: Displays.Groups(context: context))
                        : Breadcrumb(
                           hb: hb,
                           context: context,
                           ss: ss));

            case "users":
                switch (context.Action)
                {
                case "editapi":
                    return(hb.Breadcrumb(
                               context: context,
                               ss: ss,
                               data: new Dictionary <string, string>
                    {
                        {
                            Locations.Get(
                                context: context,
                                parts: new string[]
                            {
                                "Users",
                                "EditApi"
                            }),
                            Displays.ApiSettings(context: context)
                        }
                    }));

                default:
                    return(Permissions.CanManageTenant(context: context)
                                ? Breadcrumb(
                               hb: hb,
                               context: context,
                               ss: ss,
                               controller: context.Controller,
                               display: Displays.Users(context: context))
                                : Breadcrumb(
                               hb: hb,
                               context: context,
                               ss: ss));
                }

            case "publishes":
            case "items":
                return(hb
                       .CopyDirectUrlToClipboard(
                           context: context,
                           view: view)
                       .Breadcrumb(
                           context: context,
                           ss: ss));

            case "permissions":
                return(hb.Breadcrumb(context: context, ss: ss));

            default:
                return(hb);
            }
        }
Exemplo n.º 51
0
 /// <summary>
 /// Fixed:
 /// </summary>
 public HtmlBuilder Td(HtmlBuilder hb, Column column)
 {
     return(hb.Td(action: () => hb
                  .HtmlDept(DeptId)));
 }
        public static HtmlBuilder TdValue(
            this HtmlBuilder hb, SiteSettings ss, Column column, DeptModel deptModel)
        {
            if (!column.GridDesign.IsNullOrEmpty())
            {
                return(hb.TdCustomValue(
                           ss: ss,
                           gridDesign: column.GridDesign,
                           deptModel: deptModel));
            }
            else
            {
                var mine = deptModel.Mine();
                switch (column.Name)
                {
                case "DeptId":
                    return(ss.ReadColumnAccessControls.Allowed(column, ss.PermissionType, mine)
                            ? hb.Td(column: column, value: deptModel.DeptId)
                            : hb.Td(column: column, value: string.Empty));

                case "Ver":
                    return(ss.ReadColumnAccessControls.Allowed(column, ss.PermissionType, mine)
                            ? hb.Td(column: column, value: deptModel.Ver)
                            : hb.Td(column: column, value: string.Empty));

                case "DeptCode":
                    return(ss.ReadColumnAccessControls.Allowed(column, ss.PermissionType, mine)
                            ? hb.Td(column: column, value: deptModel.DeptCode)
                            : hb.Td(column: column, value: string.Empty));

                case "Dept":
                    return(ss.ReadColumnAccessControls.Allowed(column, ss.PermissionType, mine)
                            ? hb.Td(column: column, value: deptModel.Dept)
                            : hb.Td(column: column, value: string.Empty));

                case "Body":
                    return(ss.ReadColumnAccessControls.Allowed(column, ss.PermissionType, mine)
                            ? hb.Td(column: column, value: deptModel.Body)
                            : hb.Td(column: column, value: string.Empty));

                case "Comments":
                    return(ss.ReadColumnAccessControls.Allowed(column, ss.PermissionType, mine)
                            ? hb.Td(column: column, value: deptModel.Comments)
                            : hb.Td(column: column, value: string.Empty));

                case "Creator":
                    return(ss.ReadColumnAccessControls.Allowed(column, ss.PermissionType, mine)
                            ? hb.Td(column: column, value: deptModel.Creator)
                            : hb.Td(column: column, value: string.Empty));

                case "Updator":
                    return(ss.ReadColumnAccessControls.Allowed(column, ss.PermissionType, mine)
                            ? hb.Td(column: column, value: deptModel.Updator)
                            : hb.Td(column: column, value: string.Empty));

                case "CreatedTime":
                    return(ss.ReadColumnAccessControls.Allowed(column, ss.PermissionType, mine)
                            ? hb.Td(column: column, value: deptModel.CreatedTime)
                            : hb.Td(column: column, value: string.Empty));

                case "UpdatedTime":
                    return(ss.ReadColumnAccessControls.Allowed(column, ss.PermissionType, mine)
                            ? hb.Td(column: column, value: deptModel.UpdatedTime)
                            : hb.Td(column: column, value: string.Empty));

                default: return(hb);
                }
            }
        }
Exemplo n.º 53
0
 protected virtual void RenderMuxControl(HtmlBuilder builder)
 {
 }
        private static HtmlBuilder Editor(
            this HtmlBuilder hb, SiteSettings ss, DeptModel deptModel)
        {
            var commentsColumn = ss.GetColumn("Comments");
            var commentsColumnPermissionType = commentsColumn.ColumnPermissionType();
            var showComments = ss.ShowComments(commentsColumnPermissionType);
            var tabsCss      = showComments ? null : "max";

            return(hb.Div(id: "Editor", action: () => hb
                          .Form(
                              attributes: new HtmlAttributes()
                              .Id("DeptForm")
                              .Class("main-form confirm-reload")
                              .Action(deptModel.DeptId != 0
                            ? Locations.Action("Depts", deptModel.DeptId)
                            : Locations.Action("Depts")),
                              action: () => hb
                              .RecordHeader(
                                  ss: ss,
                                  baseModel: deptModel,
                                  tableName: "Depts")
                              .Div(
                                  id: "EditorComments", action: () => hb
                                  .Comments(
                                      comments: deptModel.Comments,
                                      column: commentsColumn,
                                      verType: deptModel.VerType,
                                      columnPermissionType: commentsColumnPermissionType),
                                  _using: showComments)
                              .Div(id: "EditorTabsContainer", css: tabsCss, action: () => hb
                                   .EditorTabs(deptModel: deptModel)
                                   .FieldSetGeneral(ss: ss, deptModel: deptModel)
                                   .FieldSet(
                                       attributes: new HtmlAttributes()
                                       .Id("FieldSetHistories")
                                       .DataAction("Histories")
                                       .DataMethod("post"),
                                       _using: deptModel.MethodType != BaseModel.MethodTypes.New)
                                   .MainCommands(
                                       ss: ss,
                                       siteId: 0,
                                       verType: deptModel.VerType,
                                       referenceId: deptModel.DeptId,
                                       updateButton: true,
                                       mailButton: true,
                                       deleteButton: true,
                                       extensions: () => hb
                                       .MainCommandExtensions(
                                           deptModel: deptModel,
                                           ss: ss)))
                              .Hidden(controlId: "BaseUrl", value: Locations.BaseUrl())
                              .Hidden(
                                  controlId: "MethodType",
                                  value: deptModel.MethodType.ToString().ToLower())
                              .Hidden(
                                  controlId: "Depts_Timestamp",
                                  css: "always-send",
                                  value: deptModel.Timestamp)
                              .Hidden(
                                  controlId: "SwitchTargets",
                                  css: "always-send",
                                  value: deptModel.SwitchTargets?.Join(),
                                  _using: !Request.IsAjax()))
                          .OutgoingMailsForm("Depts", deptModel.DeptId, deptModel.Ver)
                          .CopyDialog("Depts", deptModel.DeptId)
                          .OutgoingMailDialog()
                          .EditorExtensions(deptModel: deptModel, ss: ss)));
        }
Exemplo n.º 55
0
 private void ControlVisibleForFirstTime(HtmlTextWriter writer)
 {
     using (HtmlBuilder builder = new HtmlBuilder())
     {
         RenderMuxControl(builder);
         Manager.Instance.InternalJavaScriptWriter.Write(
             "MUX.$('{0}').repl('{1}');{2}{3}",
             ClientID,
             builder.ToStringJson(),
             GetClientSideScript(),
             GetChildrenClientSideScript(Controls));
     }
 }
        private static HtmlBuilder FieldSetGeneralColumns(
            this HtmlBuilder hb,
            SiteSettings ss,
            DeptModel deptModel,
            bool preview = false)
        {
            ss.GetEditorColumns().ForEach(column =>
            {
                switch (column.Name)
                {
                case "DeptId":
                    hb.Field(
                        ss,
                        column,
                        deptModel.MethodType,
                        deptModel.DeptId.ToControl(ss, column),
                        column.ColumnPermissionType(),
                        preview: preview);
                    break;

                case "Ver":
                    hb.Field(
                        ss,
                        column,
                        deptModel.MethodType,
                        deptModel.Ver.ToControl(ss, column),
                        column.ColumnPermissionType(),
                        preview: preview);
                    break;

                case "DeptCode":
                    hb.Field(
                        ss,
                        column,
                        deptModel.MethodType,
                        deptModel.DeptCode.ToControl(ss, column),
                        column.ColumnPermissionType(),
                        preview: preview);
                    break;

                case "DeptName":
                    hb.Field(
                        ss,
                        column,
                        deptModel.MethodType,
                        deptModel.DeptName.ToControl(ss, column),
                        column.ColumnPermissionType(),
                        preview: preview);
                    break;

                case "Body":
                    hb.Field(
                        ss,
                        column,
                        deptModel.MethodType,
                        deptModel.Body.ToControl(ss, column),
                        column.ColumnPermissionType(),
                        preview: preview);
                    break;
                }
            });
            if (!preview)
            {
                hb.VerUpCheckBox(deptModel);
            }
            return(hb);
        }
Exemplo n.º 57
0
 private void ReRenderWidget(HtmlTextWriter writer)
 {
     // discarding incoming writer
     using (HtmlBuilder builder = new HtmlBuilder())
     {
         RenderMuxControl(builder);
         Manager.Instance.InternalJavaScriptWriter.Write(
             "MUX.Control.$('{0}').reRender('{1}');{2}",
             ClientID,
             builder.ToStringJson(),
             GetChildrenClientSideScript(Controls));
     }
 }
 private static HtmlBuilder MainCommandExtensions(
     this HtmlBuilder hb, SiteSettings ss, DeptModel deptModel)
 {
     return(hb);
 }
Exemplo n.º 59
0
        public static HtmlBuilder Breadcrumb(this HtmlBuilder hb, SiteSettings ss, bool _using)
        {
            if (!Sessions.LoggedIn() || !_using)
            {
                return(hb);
            }
            var controller = Routes.Controller();

            switch (controller)
            {
            case "admins":
                return(Breadcrumb(
                           hb: hb,
                           ss: ss,
                           controller: controller));

            case "depts":
                return(Breadcrumb(
                           hb: hb,
                           ss: ss,
                           controller: controller,
                           display: Displays.Depts()));

            case "groups":
                return(Permissions.CanManageTenant()
                        ? Breadcrumb(
                           hb: hb,
                           ss: ss,
                           controller: controller,
                           display: Displays.Groups())
                        : Breadcrumb(
                           hb: hb,
                           ss: ss));

            case "users":
                switch (Routes.Action())
                {
                case "editapi":
                    return(hb.Breadcrumb(ss: ss, data: new Dictionary <string, string>
                    {
                        { Locations.Get("Users", "EditApi"), Displays.ApiSettings() }
                    }));

                default:
                    return(Permissions.CanManageTenant()
                                ? Breadcrumb(
                               hb: hb,
                               ss: ss,
                               controller: controller,
                               display: Displays.Users())
                                : Breadcrumb(
                               hb: hb,
                               ss: ss));
                }

            case "items":
                return(hb
                       .Breadcrumb(ss: ss)
                       .CopyDirectUrlToClipboard(ss: ss));

            case "permissions":
                return(hb.Breadcrumb(ss: ss));

            default:
                return(hb);
            }
        }
Exemplo n.º 60
0
        public static HtmlBuilder Attachments(
            this HtmlBuilder hb,
            Context context,
            string controlId      = null,
            string columnName     = null,
            string controlCss     = null,
            string value          = null,
            string placeholder    = null,
            bool readOnly         = false,
            bool validateRequired = false,
            Dictionary <string, string> attributes = null,
            bool preview = false,
            bool _using  = true)
        {
            if (preview)
            {
                controlId = Strings.NewGuid();
            }
            var attachments = value.Deserialize <Attachments>();

            return(_using
                ? hb
                   .Hidden(
                       controlId: controlId,
                       css: "control-attachments",
                       value: value)
                   .Div(
                       id: columnName + ".upload",
                       css: "control-attachments-upload",
                       attributes: new HtmlAttributes()
                       .DataName(columnName)
                       .DataAction("binaries/multiupload"),
                       action: () => hb
                       .Text(text: Displays.FileDragDrop(context: context))
                       .Input(
                           id: columnName + ".input",
                           attributes: new HtmlAttributes()
                           .Class("hidden")
                           .Type("file")
                           .Multiple(true)),
                       _using: !readOnly && !preview)
                   .Div(
                       id: columnName + ".items",
                       css: "control-attachments-items",
                       action: () => attachments?
                       .ForEach(item => hb
                                .AttachmentItem(
                                    context: context,
                                    controlId: controlId,
                                    guid: item.Guid,
                                    css: item.Added == true
                                        ? string.Empty
                                        : item.Deleted == true
                                            ? "already-attachments preparation-delete "
                                            : "already-attachments ",
                                    fileName: item.Name,
                                    displaySize: item.DisplaySize(),
                                    added: item.Added,
                                    deleted: item.Deleted,
                                    readOnly: readOnly)))
                   .Div(
                       id: columnName + ".status",
                       attributes: new HtmlAttributes()
                       .Style("display: none; "),
                       action: () => hb
                       .Div(
                           id: columnName + ".progress",
                           css: "progress-bar",
                           action: () => hb
                           .Div())
                       .Div(
                           id: columnName + ".abort",
                           css: "abort",
                           action: () => hb
                           .Text(text: Displays.Cancel(context: context))),
                       _using: !readOnly)
                : hb);
        }