Ejemplo n.º 1
0
        private void UpdateBBCodeInfo_Click(object sender, EventArgs e)
        {
            if (base.CheckCookie())
            {
                foreach (DictionaryEntry item in new SortedList
                {
                    {
                        "参数个数",
                        this.param.Text
                    },

                    {
                        "嵌套次数",
                        this.nest.Text
                    }
                })
                {
                    if (item.Value.ToInt(-1) < 0)
                    {
                        base.RegisterStartupScript("", "<script>alert('输入错误:" + item.Key + ",只能是0或者正整数');window.location.href='forum_editbbcode.aspx';</script>");
                        return;
                    }
                }
                string a = this.icon.UpdateFile();
                if (String.IsNullOrEmpty(a))
                {
                    a = this.ViewState["inco"].ToString();
                }
                this.replacement.is_replace = (this.example.is_replace = (this.explanation.is_replace = (this.paramsdescript.is_replace = (this.paramsdefvalue.is_replace = false))));
                BbCode.UpdateBBCode(int.Parse(this.available.SelectedValue), Regex.Replace(this.tag.Text.Replace("<", "").Replace(">", ""), "^[\\>]|[\\{]|[\\}]|[\\[]|[\\]]|[\\']|[\\.]", ""), a, this.replacement.Text, this.example.Text, this.explanation.Text, this.param.Text, this.nest.Text, this.paramsdescript.Text, this.paramsdefvalue.Text, DNTRequest.GetInt("id", 0));
                AdminVisitLog.InsertLog(this.userid, this.username, this.usergroupid, this.grouptitle, this.ip, "更新" + Utils.ProductName + "代码", "TAB为:" + this.tag.Text);
                base.RegisterStartupScript("PAGE", "window.location.href='forum_bbcodegrid.aspx';");
            }
        }
Ejemplo n.º 2
0
        public static IComment ToModel(this ApiWhitelabelCommentModel commentModel)
        {
            if (commentModel == null)
            {
                return(null);
            }

            var comment = new Comment
            {
                Id          = commentModel.Id,
                UserId      = commentModel.User?.Id ?? Guid.Empty,
                AvatarUrl   = commentModel.User?.Avatar?.Small,
                DateTime    = commentModel.DateTime,
                DisplayName = commentModel.User?.DisplayName,
                Text        = commentModel.Comment,
            };

            if (!string.IsNullOrWhiteSpace(commentModel.Comment))
            {
                var text = EmojiHelper.ShortnameToUnicode(commentModel.Comment);
                text = BbCode.ConvertToHtml(text);

                comment.Text = text;
            }

            return(comment);
        }
Ejemplo n.º 3
0
 private void DeleteBBCode_Click(object sender, EventArgs e)
 {
     if (base.CheckCookie())
     {
         BbCode.DeleteBBCode(Request["id"]);
         AdminVisitLog.InsertLog(this.userid, this.username, this.usergroupid, this.grouptitle, this.ip, "删除" + Utils.ProductName + "代码", "TAB为:" + this.tag.Text);
         base.RegisterStartupScript("PAGE", "window.location.href='forum_bbcodegrid.aspx';");
     }
 }
Ejemplo n.º 4
0
        public void bntCreate_Click(Object sender, EventArgs e)
        {
            var      userInSession = (Users)Session["userinsession"];
            var      id            = Page.Request.Params["id"];
            Feedback feedback;

            try
            {
                feedback = new Feedback {
                    ID = Convert.ToInt32(id)
                };
                feedback.GetById();
            }
            catch (Exception)
            {
                feedback = new Feedback {
                    SecureID = id
                };
                feedback.GetBySecureID();
            }

            if (feedback.ID == 0)
            {
                feedback = new Feedback {
                    SecureID = id
                };
                feedback.GetBySecureID();
            }

            var feedbackcomment = new FeedbackComments()
            {
                Comment    = BbCode.BBcodeToHtml(tbComment.Text),
                FeedbackID = feedback.ID,
                UserID     = userInSession.ID,
                IsViewed   = 0
            };

            feedbackcomment.Create();
            feedback.ChangeDate = DateTime.Now;
            feedback.Update();
            var userToMail = new Users {
                ID = Convert.ToInt32(feedback.UserID)
            };

            userToMail.GetById();
            var messageBody = String.Format("<table class='table'>" +
                                            "<tr><td colspan='2' style='padding-bottom: 15px; vertical-align: top'>Поступил новый комментарий к вашему обращению <a href='http://{2}/UserUI/FeedbackView.aspx?id={3}' target='_new'><i>{0}</i></a></td></tr>" +
                                            "<tr><td style='vertical-align: top'>Содержание комментария:</td><td>{1}</td></tr>" +
                                            "<tr><td colspan='2' style='padding-top: 15px; vertical-align: top'>Перейдите по <a href='http://{2}/UserUI/FeedbackView.aspx?id={3}' target='new'>этой</a> ссылке для ответа на комментарий.</td></tr></table>",
                                            feedback.Title,
                                            feedbackcomment.Comment,
                                            BackendHelper.TagToValue("current_app_address"),
                                            feedback.ID);

            EmailMethods.MailSendHTML("Новый комментарий к вашему обращению", messageBody, userToMail.Email);
            Page.Response.Redirect("~/ManagerUI/Menu/Souls/FeedbackView.aspx?id=" + id);
        }
Ejemplo n.º 5
0
        public void bntCreate_Click(Object sender, EventArgs e)
        {
            var userInSession = (Users)Session["userinsession"];
            var id            = Page.Request.Params["id"];

            var feedbackcomment = new FeedbackComments()
            {
                Comment    = BbCode.BBcodeToHtml(tbComment.Text),
                FeedbackID = Convert.ToInt32(id),
                UserID     = userInSession.ID,
                IsViewed   = 1
            };

            feedbackcomment.Create();

            var feedback = new Feedback()
            {
                ID = Convert.ToInt32(id),
            };

            feedback.GetById();
            feedback.ChangeDate = DateTime.Now;
            feedback.Update();

            var roles = (List <Roles>)HttpContext.Current.Application["RolesList"];

            if (feedback.TypeID == 0)
            {
                SendNotification(roles.Where(u => u.Feedback0 == 1).ToList(), feedback, feedbackcomment);
            }
            if (feedback.TypeID == 1)
            {
                SendNotification(roles.Where(u => u.Feedback1 == 1).ToList(), feedback, feedbackcomment);
            }
            if (feedback.TypeID == 2)
            {
                SendNotification(roles.Where(u => u.Feedback2 == 1).ToList(), feedback, feedbackcomment);
            }
            if (feedback.TypeID == 3)
            {
                SendNotification(roles.Where(u => u.Feedback3 == 1).ToList(), feedback, feedbackcomment);
            }
            if (feedback.TypeID == 4)
            {
                SendNotification(roles.Where(u => u.Feedback4 == 1).ToList(), feedback, feedbackcomment);
            }
            if (feedback.TypeID == 5)
            {
                SendNotification(roles.Where(u => u.Feedback5 == 1).ToList(), feedback, feedbackcomment);
            }
            if (feedback.TypeID == 6)
            {
                SendNotification(roles.Where(u => u.Feedback6 == 1).ToList(), feedback, feedbackcomment);
            }

            Page.Response.Redirect("~/UserUI/FeedbackView.aspx?id=" + id);
        }
Ejemplo n.º 6
0
 private void AddAdInfo_Click(object sender, EventArgs e)
 {
     if (base.CheckCookie())
     {
         this.replacement.is_replace = (this.example.is_replace = (this.explanation.is_replace = (this.paramsdescript.is_replace = (this.paramsdefvalue.is_replace = false))));
         BbCode.CreateBBCCode(int.Parse(this.available.SelectedValue), Regex.Replace(this.tag.Text.Replace("<", "").Replace(">", ""), "^[\\>]|[\\{]|[\\}]|[\\[]|[\\]]|[\\']|[\\.]", ""), this.icon.UpdateFile(), this.replacement.Text, this.example.Text, this.explanation.Text, this.param.Text, this.nest.Text, this.paramsdescript.Text, this.paramsdefvalue.Text);
         AdminVisitLog.InsertLog(this.userid, this.username, this.usergroupid, this.grouptitle, this.ip, "添加" + Utils.ProductName + "代码", "TAG为:" + this.tag.Text);
         base.RegisterStartupScript("", "<script>window.location.href='forum_bbcodegrid.aspx';</script>");
     }
 }
Ejemplo n.º 7
0
 private void SetUnAvailable_Click(object sender, EventArgs e)
 {
     if (base.CheckCookie())
     {
         if (Request["id"] != "")
         {
             BbCode.BatchUpdateAvailable(0, Request["id"]);
             base.Response.Redirect("forum_bbcodegrid.aspx");
             return;
         }
         base.RegisterStartupScript("", "<script>alert('您未选中任何选项');window.location.href='forum_bbcodegrid.aspx';</script>");
     }
 }
Ejemplo n.º 8
0
        public static CustomEditorButtonInfo[] GetCustomEditButtonListWithInfo()
        {
            //var cacheService = XCache.Current;
            //CustomEditorButtonInfo[] array = cacheService.RetrieveObject(CacheKeys.FORUM_UI_CUSTOM_EDIT_BUTTON_INFO) as CustomEditorButtonInfo[];
            //if (array == null)
            //{
            //	array = BBX.Data.Editors.GetCustomEditButtonListWithInfo();
            //	XCache.Add(CacheKeys.FORUM_UI_CUSTOM_EDIT_BUTTON_INFO, array);
            //	Editors.ResetRegexCustomTag(array);
            //}
            //return array;

            return(BbCode.FindAllByAvailable(1).ToList().Select(e => e.Cast <CustomEditorButtonInfo>()).ToArray());
        }
Ejemplo n.º 9
0
        //public static string GetSmiliesCache()
        //{
        //    string text = XCache.Retrieve<String>(CacheKeys.FORUM_UI_SMILIES_LIST);
        //    if (text.IsNullOrEmpty())
        //    {
        //        var sb = new StringBuilder();
        //        //DataTable smiliesListDataTable = BBX.Data.Smilies.GetSmiliesListDataTable();
        //        var list = Smilie.FindAllWithCache();
        //        foreach (var sm in list)
        //        {
        //            if (sm.Type != 0) continue;

        //            sb.AppendFormat("'{0}': [\r\n", sm.Code.Trim().Replace("'", "\\'"));
        //            bool flag = false;
        //            foreach (var sm2 in list)
        //            {
        //                if (sm2.Type == sm.ID)
        //                {
        //                    sb.Append("{'code' : '");
        //                    sb.Append(sm2.Code.Trim().Replace("'", "\\'"));
        //                    sb.Append("', 'url' : '");
        //                    sb.Append(sm2.Url.Trim().Replace("'", "\\'"));
        //                    sb.Append("'},\r\n");
        //                    flag = true;
        //                }
        //            }
        //            if (sb.Length > 0 && flag)
        //            {
        //                sb.Remove(sb.Length - 3, 3);
        //            }
        //            sb.Append("\r\n],\r\n");
        //        }
        //        sb.Remove(sb.Length - 3, 3);
        //        text = sb.ToString();
        //        XCache.Add(CacheKeys.FORUM_UI_SMILIES_LIST, text);
        //    }
        //    return text;
        //}

        //public static string GetSmiliesFirstPageCache()
        //{
        //	string text = XCache.Retrieve<String>("/Forum/UI/SmiliesListFirstPage");
        //	if (text.IsNullOrEmpty())
        //	{
        //		var sb = new StringBuilder();
        //		//DataTable smiliesListDataTable = BBX.Data.Smilies.GetSmiliesListDataTable();
        //		var list = Smilie.FindAllWithCache();
        //		foreach (var sm in list)
        //		{
        //			if (sm.Type != 0) continue;

        //			sb.AppendFormat("'{0}': [\r\n", sm.Code.Trim().Replace("'", "\\'"));
        //			bool flag = false;
        //			int num = 0;
        //			foreach (var sm2 in list)
        //			{
        //				if (sm2.Type == sm.ID && num < 16)
        //				{
        //					sb.Append("{'code' : '");
        //					sb.Append(sm2.Code.Trim().Replace("'", "\\'"));
        //					sb.Append("', 'url' : '");
        //					sb.Append(sm2.Url.Trim().Replace("'", "\\'"));
        //					sb.Append("'},\r\n");
        //					flag = true;
        //					num++;
        //				}
        //			}
        //			if (sb.Length > 0 && flag)
        //			{
        //				sb.Remove(sb.Length - 3, 3);
        //			}
        //			sb.Append("\r\n],\r\n");
        //			break;
        //		}
        //		sb.Remove(sb.Length - 3, 3);
        //		text = sb.ToString();
        //		XCache.Add("/Forum/UI/SmiliesListFirstPage", text);
        //	}
        //	return text;
        //}

        //public static DataTable GetSmilieTypesCache()
        //{
        //    DataTable dataTable = XCache.Retrieve<DataTable>("/Forum/UI/SmiliesTypeList");
        //    if (dataTable == null || dataTable.Rows.Count == 0)
        //    {
        //        dataTable = BBX.Data.Smilies.GetSmiliesTypes();
        //        XCache.Add("/Forum/UI/SmiliesTypeList", dataTable);
        //    }
        //    return dataTable;
        //}

        public static string GetCustomEditButtonList()
        {
            string result;

            lock (lockHelper)
            {
                string text = XCache.Retrieve <String>(CacheKeys.FORUM_UI_CUSTOM_EDIT_BUTTON_LIST);
                if (text == null)
                {
                    var sb = new StringBuilder();
                    //var customEditButtonList = DatabaseProvider.GetInstance().GetCustomEditButtonList();
                    var customEditButtonList = BbCode.FindAllByAvailable(1);
                    //try
                    //{
                    foreach (var bb in customEditButtonList)
                    //while (customEditButtonList.Read())
                    {
                        sb.AppendFormat(",'{0}':['", Utils.ReplaceStrToScript(bb.Tag));
                        sb.Append(Utils.ReplaceStrToScript(bb.Tag));
                        sb.Append("','");
                        sb.Append(Utils.ReplaceStrToScript(bb.Icon));
                        sb.Append("','");
                        sb.Append(Utils.ReplaceStrToScript(bb.Explanation));
                        sb.Append("',['");
                        sb.Append(Utils.ReplaceStrToScript(bb.ParamsDescript).Replace(",", "','"));
                        sb.Append("'],['");
                        sb.Append(Utils.ReplaceStrToScript(bb.ParamsDefValue).Replace(",", "','"));
                        sb.Append("'],");
                        sb.Append(Utils.ReplaceStrToScript(bb.Params + ""));
                        sb.Append("]");
                    }
                    if (sb.Length > 0)
                    {
                        sb.Remove(0, 1);
                    }
                    text = Utils.ClearBR(sb.ToString());
                    XCache.Add(CacheKeys.FORUM_UI_CUSTOM_EDIT_BUTTON_LIST, text);
                    //}
                    //finally
                    //{
                    //	customEditButtonList.Close();
                    //}
                }
                result = text;
            }
            return(result);
        }
Ejemplo n.º 10
0
        public string ConvertToHtml(string bbcodeValue)
        {
            try
            {
                string ap = null;

                if (CommonTools.isEmpty(bbcodeValue) == false)
                {
                    var html = BbCode.ToHtml(bbcodeValue);
                    ap = html;
                }
                return(ap);
            }
            catch (Exception ex)
            {
                CommonTools.ErrorReporting(ex);
                return(null);
            }
        }
Ejemplo n.º 11
0
        public void LoadAnnounceInf(int id)
        {
            //DataTable bBCode = BBCodes.GetBBCode(id);
            var code = BbCode.FindByID(id);

            if (code != null)
            {
                this.available.SelectedValue = code.Available.ToString();
                this.tag.Text            = code.Tag;
                this.replacement.Text    = code.Replacement;
                this.example.Text        = code.Example;
                this.explanation.Text    = code.Explanation;
                this.paramsdescript.Text = code.ParamsDescript;
                this.paramsdefvalue.Text = code.ParamsDefValue;
                this.nest.Text           = code.Nest.ToString();
                this.param.Text          = code.Params.ToString();
                this.icon.Text           = code.Icon;
                this.ViewState["inco"]   = code.Icon;
            }
        }
Ejemplo n.º 12
0
        private void UpdateText(Style style)
        {
            _activeLibrary.Clear();
            _lines.Clear();

            var def = new TextElement();

            def.Font = style.Font;

            var elements     = BbCode.Parse(_text, style, BbCodeEnabled);
            var textElements = new List <TextElement>();

            var pos   = new Point();
            var tsize = new Point();
            var advx  = 0;

            var lineHeight = 0;
            var thisLine   = new List <TextElement>();

            _textSize = Point.Zero;

            if (TextWrap)
            {
                #region TextWrap = true
                var firstInLine = true;

                foreach (var element in elements)
                {
                    var font = Gui.Renderer.GetFont(element.Font);

                    if (element.Linebreak)
                    {
                        if (firstInLine)
                        {
                            lineHeight = Gui.Renderer.GetTextSize(" ", font).Y;
                        }

                        pos.X  = 0;
                        pos.Y += lineHeight + Leading;

                        foreach (var el in thisLine)
                        {
                            el.Position.Y += lineHeight - el.Size.Y;
                        }

                        thisLine.Clear();
                        lineHeight = 0;

                        textElements.Add(element);
                        firstInLine = true;
                    }
                    else if (element.IsControl)
                    {
                        Control ctrl = null;

                        if (_library.ContainsKey(element.Control))
                        {
                            ctrl = _library[element.Control];
                        }
                        else if (ControlRequest != null)
                        {
                            ctrl = ControlRequest(element.Control);
                            _library.Add(element.Control, ctrl);
                        }

                        if (ctrl != null)
                        {
                            _activeLibrary.Add(element.Control, true);

                            ctrl.Position = pos;
                            ctrl.UserData = element.Control;

                            if (ctrl.Parent == null)
                            {
                                Elements.Add(ctrl);
                            }

                            element.Size = ctrl.Size;
                            tsize        = ctrl.Size;

                            if (pos.X + tsize.X < Size.X - (style.TextPadding.Left + style.TextPadding.Right))
                            {
                                element.Position = pos;
                                pos.X           += ctrl.Size.X;
                                lineHeight       = Math.Max(lineHeight, tsize.Y);
                            }
                            else
                            {
                                pos.X  = 0;
                                pos.Y += lineHeight + Leading;

                                foreach (var el in thisLine)
                                {
                                    el.Position.Y += lineHeight - el.Size.Y;
                                }

                                thisLine.Clear();

                                textElements.Add(new TextElement {
                                    Linebreak = true
                                });

                                firstInLine = true;

                                element.Position = pos;
                                pos.X           += ctrl.Size.X;
                                lineHeight       = tsize.Y;
                            }

                            textElements.Add(element);
                            //thisLine.Add(element);
                        }
                    }
                    else
                    {
                        #region wrap

                        var words = System.Text.RegularExpressions.Regex.Split(element.Text, @"(?=(?<=[^\s])\s+)");

                        var sub = new List <TextElement>();

                        var e = new TextElement(element);
                        e.Text     = string.Empty;
                        e.Position = pos;

                        var c       = 0;
                        var isBreak = false;

                        foreach (var word in words)
                        {
                            if (word.Length == 0)
                            {
                                continue;
                            }

                            var temp = word;

                            // if this is the first word in a new line
                            // remove leading whitespaces
                            if (firstInLine)
                            {
                                temp = word.TrimStart();
                            }

                            tsize      = Gui.Renderer.GetTextSize(e.Text + temp, font);
                            lineHeight = Math.Max(lineHeight, tsize.Y);

                            if (pos.X + tsize.X < Size.X - (style.TextPadding.Left + style.TextPadding.Right))
                            {
                                // the word fits, add to current element
                                e.Text     += temp;
                                e.Size      = tsize;
                                firstInLine = false;
                            }
                            else
                            {
                                #region new

                                if (firstInLine)
                                {
                                    // the word fits, add to current element
                                    e.Text     += temp;
                                    e.Size      = tsize;
                                    firstInLine = false;
                                }
                                else
                                {
                                    // word does not fit, add the current element
                                    thisLine.Add(e);
                                    sub.Add(e);
                                    textElements.AddRange(sub);

                                    foreach (var el in thisLine)
                                    {
                                        el.Position.Y += lineHeight - el.Size.Y;
                                    }

                                    sub.Clear();
                                    thisLine.Clear();

                                    // reset line pos
                                    pos.X  = 0;
                                    pos.Y += lineHeight + Leading;

                                    lineHeight = 0;

                                    // add a break
                                    var linebreak = new TextElement(e);
                                    linebreak.Linebreak = true;
                                    sub.Add(linebreak);

                                    // create new starting element
                                    e           = new TextElement(element);
                                    e.Text      = temp.TrimStart();
                                    e.Position  = pos;
                                    e.Size      = Gui.Renderer.GetTextSize(e.Text, font);
                                    lineHeight  = Math.Max(lineHeight, e.Size.Y);
                                    firstInLine = false;
                                }

                                #endregion

                                #region old

                                //if (c > 0)
                                //{
                                //    isBreak = true;

                                //    // the word does not fit
                                //    pos.x = 0;
                                //    pos.y += lineHeight + Leading;
                                //}

                                //// is more than one word in this line exceeding the break limit?
                                //if (c > 0)
                                //{
                                //    // if so, we need to first add the current element,
                                //    thisLine.Add(e);
                                //    sub.Add(e);

                                //    foreach (TextElement el in thisLine)
                                //    {
                                //        el.Position.y += lineHeight - el.Size.y;
                                //        // el.Size.y += lineHeight - el.Size.y;
                                //    }

                                //    thisLine.Clear();
                                //    lineHeight = 0;

                                //    TextElement linebreak = new TextElement(e);
                                //    linebreak.Linebreak = true;
                                //    sub.Add(linebreak);

                                //    e = new TextElement(element);
                                //    e.Text = temp.TrimStart();
                                //    e.Position = pos;
                                //    e.Size = Gui.Renderer.GetTextSize(e.Text, font);

                                //    lineHeight = Math.Max(lineHeight, e.Size.y);

                                //    if (c <= words.Length)
                                //        isBreak = false;
                                //}
                                //else
                                //{
                                //    // if not, we just add the current word
                                //    e.Position = pos;
                                //    e.Text = temp;
                                //    e.Size = Gui.Renderer.GetTextSize(e.Text, font);
                                //    //sub.Add(e);
                                //}

                                #endregion

                                //pos.x += tsize.x;
                            }

                            c++;
                        }

                        if (!isBreak)
                        {
                            //e.Size = Gui.Renderer.GetTextSize(e.Text, font);
                            pos.X      = pos.X + e.Size.X;
                            lineHeight = Math.Max(lineHeight, e.Size.Y);
                            sub.Add(e);
                        }

                        thisLine.AddRange(sub);
                        textElements.AddRange(sub);

                        #endregion
                    }
                }

                foreach (var el in thisLine)
                {
                    el.Position.Y += lineHeight - el.Size.Y;
                }

                #endregion
            }
            else
            {
                #region TextWrap = false

                var firstInLine = true;
                var singleLine  = true;

                foreach (var element in elements)
                {
                    var font = Gui.Renderer.GetFont(element.Font);

                    if (element.Linebreak)
                    {
                        if (firstInLine)
                        {
                            lineHeight = Gui.Renderer.GetTextSize(" ", font).Y;
                        }

                        pos.X  = 0;
                        pos.Y += lineHeight + Leading;

                        foreach (var el in thisLine)
                        {
                            el.Position.Y += lineHeight - el.Size.Y;
                            // el.Size.y += lineHeight - el.Size.y;
                        }

                        thisLine.Clear();
                        lineHeight = 0;

                        element.Position = pos;
                        textElements.Add(element);
                        firstInLine = true;
                        singleLine  = false;
                    }
                    else if (element.IsControl)
                    {
                        Control ctrl = null;

                        if (_library.ContainsKey(element.Control))
                        {
                            ctrl = _library[element.Control];
                        }
                        else if (ControlRequest != null)
                        {
                            ctrl = ControlRequest(element.Control);
                            _library.Add(element.Control, ctrl);
                        }

                        if (ctrl != null)
                        {
                            ctrl.Position = pos;

                            if (ctrl.Parent == null)
                            {
                                Elements.Add(ctrl);
                            }

                            _activeLibrary.Add(element.Control, true);

                            element.Position = pos;
                            element.Size     = ctrl.Size;

                            pos.X += ctrl.Size.X;

                            tsize      = element.Size;
                            lineHeight = Math.Max(lineHeight, tsize.Y);
                            textElements.Add(element);
                            //thisLine.Add(element);
                        }
                    }
                    else
                    {
                        if (firstInLine)
                        {
                            element.Text = element.Text.TrimStart();
                            firstInLine  = false;
                        }

                        tsize      = Gui.Renderer.GetTextSize(string.IsNullOrEmpty(element.Text) ? " " : element.Text, font);
                        lineHeight = Math.Max(lineHeight, tsize.Y);

                        element.Position = pos;
                        element.Size     = tsize;

                        textElements.Add(element);

                        pos.X += tsize.X;

                        thisLine.Add(element);
                    }
                }

                foreach (var el in thisLine)
                {
                    el.Position.Y += lineHeight - el.Size.Y;
                }

                #endregion

                #region AutoEllipsis (...)

                if (singleLine && AutoEllipsis && (AutoSize == AutoSize.None || AutoSize == AutoSize.Vertical))
                {
                    var removeAt = -1;
                    var width    = 0;
                    var limit    = Size.X - style.TextPadding.Left - style.TextPadding.Right;

                    var align = TextAlign != Alignment.Inherit ? TextAlign : style.TextAlign;

                    if (align == Alignment.TopLeft || align == Alignment.MiddleLeft || align == Alignment.BottomLeft)
                    {
                        for (var i = 0; i < textElements.Count; i++)
                        {
                            var font     = Gui.Renderer.GetFont(textElements[i].Font);
                            var ellipsis = Gui.Renderer.GetTextSize("...", font).X;

                            if (width + textElements[i].Size.X + ellipsis <= limit)
                            {
                                width += textElements[i].Size.X;
                                continue;
                            }
                            else
                            {
                                var text  = string.Empty;
                                var final = string.Empty;
                                removeAt = i + 1;

                                foreach (var c in textElements[i].Text)
                                {
                                    final = text + c + "...";

                                    var w = Gui.Renderer.GetTextSize(final, font).X;

                                    if (width + w >= limit)
                                    {
                                        textElements[i].Text = text + "...";
                                        break;
                                    }
                                    else
                                    {
                                        text += c;
                                    }
                                }

                                break;
                            }
                        }

                        if (removeAt > -1)
                        {
                            textElements.RemoveRange(removeAt, textElements.Count - removeAt);
                        }
                    }
                    else if (align == Alignment.TopRight || align == Alignment.MiddleRight || align == Alignment.BottomRight)
                    {
                        for (var i = textElements.Count - 1; i >= 0; i--)
                        {
                            var font     = Gui.Renderer.GetFont(textElements[i].Font);
                            var ellipsis = Gui.Renderer.GetTextSize("...", font).X;
                            var fullsize = textElements[i].Size.X;
                            var oldpos   = textElements[i].Position;

                            if (width + textElements[i].Size.X + ellipsis <= limit)
                            {
                                width += textElements[i].Size.X;
                            }
                            else
                            {
                                var inc   = string.Empty;
                                var final = string.Empty;
                                var text  = textElements[i].Text;
                                removeAt = i;

                                for (var j = text.Length; j >= 0; j--)
                                {
                                    var c = new char();

                                    if (j < text.Length)
                                    {
                                        c     = text[j];
                                        final = "..." + c + inc;
                                        inc   = c + inc;
                                    }
                                    else
                                    {
                                        final = "..." + inc;
                                    }

                                    if (j == 0 && removeAt == 0)
                                    {
                                        final = inc;
                                    }

                                    var w = Gui.Renderer.GetTextSize(final, font).X;

                                    var position = oldpos;
                                    position.X               = oldpos.X + (fullsize - w);
                                    textElements[i].Text     = final;
                                    textElements[i].Position = position;

                                    if (width + w > limit && j > 0)
                                    {
                                        break;
                                    }
                                }

                                break;
                            }
                        }

                        if (removeAt > 0)
                        {
                            var ww = 0;
                            for (var i = 0; i < removeAt; i++)
                            {
                                ww += textElements[i].Size.X;
                            }

                            textElements.RemoveRange(0, removeAt);

                            for (var i = 0; i < textElements.Count; i++)
                            {
                                var position = textElements[i].Position;
                                position.X -= ww;
                                textElements[i].Position = position;
                            }
                        }
                    }
                }

                #endregion
            }

            var line = new TextLine();

            foreach (var element in textElements)
            {
                line.Width += element.Size.X;
                line.Elements.Add(element);

                _textSize.X = Math.Max(_textSize.X, line.Width);
                _textSize.Y = Math.Max(_textSize.Y, element.Position.Y + element.Size.Y);

                if (element.Linebreak)
                {
                    _lines.Add(line);
                    line = new TextLine();
                }
            }

            _textSize += new Point(style.TextPadding.Left + style.TextPadding.Right, style.TextPadding.Top + style.TextPadding.Bottom);

            _lines.Add(line);

            _lastSize = Size;
            _isDirty  = false;

            FinalizeTextLayout(style);

            foreach (var pair in _library)
            {
                if (!_activeLibrary.ContainsKey(pair.Key))
                {
                    Elements.Remove(pair.Value);
                }
            }
        }
Ejemplo n.º 13
0
 public void BindData()
 {
     this.DataGrid1.AllowCustomPaging = false;
     this.DataGrid1.DataSource        = BbCode.FindAllWithCache();
     this.DataGrid1.DataBind();
 }
Ejemplo n.º 14
0
        private void UpdateText(Style style)
        {
            _lines.Clear();

            if (string.IsNullOrEmpty(_text))
            {
                return;
            }

            var def = new TextElement();

            def.Font = style.Font;

            var elements     = BbCode.Parse(_text, style, false);
            var textElements = new List <TextElement>();

            var pos   = new Point();
            var tsize = new Point();

            var lineHeight = 0;
            var thisLine   = new List <TextElement>();

            _textSize = Point.Zero;

            if (TextWrap)
            {
                #region TextWrap = true
                foreach (var element in elements)
                {
                    var font = Gui.Renderer.GetFont(element.Font);

                    if (element.Linebreak)
                    {
                        pos.X  = 0;
                        pos.Y += lineHeight + Leading;

                        element.Position = pos;
                        element.Size     = Gui.Renderer.GetTextSize(" ", font);

                        foreach (var el in thisLine)
                        {
                            if (!el.Linebreak)
                            {
                                el.Position.Y += lineHeight - el.Size.Y;
                            }
                        }

                        thisLine.Clear();
                        lineHeight = element.Size.Y;
                        textElements.Add(element);
                    }
                    else
                    {
                        #region wrap

                        var words = element.Text.Split(' ');

                        var sub = new List <TextElement>();

                        var e = new TextElement(element);
                        e.Text     = string.Empty;
                        e.Position = pos;
                        sub.Add(e);

                        var i = 0;

                        foreach (var word in words)
                        {
                            var temp = word;
                            if (i > 0)
                            {
                                temp = " " + word;
                            }

                            tsize      = Gui.Renderer.GetTextSize(temp, font);
                            lineHeight = Math.Max(lineHeight, tsize.Y);
                            var limit = Size.X - (style.TextPadding.Left + style.TextPadding.Right);

                            i++;

                            // the word fits, add to current element
                            if (pos.X + tsize.X < limit)
                            {
                                e.Text += temp;
                                e.Size  = Gui.Renderer.GetTextSize(e.Text, font);
                                pos.X  += tsize.X;
                            }
                            else
                            {
                                // the whole word is larger than the text area
                                if (tsize.X > limit)
                                {
                                }
                                // the whole word fits into text area
                                else
                                {
                                    pos.X  = 0;
                                    pos.Y += lineHeight + Leading;
                                    thisLine.Add(e);

                                    foreach (var el in thisLine)
                                    {
                                        if (!el.Linebreak)
                                        {
                                            el.Position.Y += lineHeight - el.Size.Y;
                                        }
                                    }

                                    thisLine.Clear();
                                    lineHeight = 0;

                                    var linebreak = new TextElement(e);
                                    linebreak.Text      = string.Empty;
                                    linebreak.Linebreak = true;
                                    linebreak.Position  = pos;
                                    sub.Add(linebreak);

                                    e          = new TextElement(element);
                                    e.Text     = word;
                                    e.Position = pos;
                                    e.Size     = Gui.Renderer.GetTextSize(e.Text, font);
                                    sub.Add(e);

                                    lineHeight = Math.Max(lineHeight, e.Size.Y);

                                    pos.X += tsize.X;
                                }
                            }
                        }

                        thisLine.AddRange(sub);
                        textElements.AddRange(sub);
                        #endregion
                    }
                }

                foreach (var el in thisLine)
                {
                    if (!el.Linebreak)
                    {
                        el.Position.Y += lineHeight - el.Size.Y;
                    }
                }
                #endregion
            }
            else
            {
                foreach (var element in elements)
                {
                    var font = Gui.Renderer.GetFont(element.Font);

                    if (element.Linebreak)
                    {
                        pos.X  = 0;
                        pos.Y += lineHeight + Leading;

                        element.Position = pos;
                        element.Size     = Gui.Renderer.GetTextSize(" ", font);

                        foreach (var el in thisLine)
                        {
                            if (!el.Linebreak)
                            {
                                el.Position.Y += lineHeight - el.Size.Y;
                            }
                        }

                        thisLine.Clear();
                        lineHeight = element.Size.Y;

                        textElements.Add(element);
                    }
                    else
                    {
                        //if (!string.IsNullOrEmpty(element.Text))
                        //{
                        tsize      = Gui.Renderer.GetTextSize(string.IsNullOrEmpty(element.Text) ? " " : element.Text, font);
                        lineHeight = Math.Max(lineHeight, tsize.Y);

                        element.Position = pos;
                        element.Size     = tsize;

                        textElements.Add(element);

                        pos.X += tsize.X;

                        thisLine.Add(element);
                        //}
                    }
                }

                foreach (var el in thisLine)
                {
                    if (!el.Linebreak)
                    {
                        el.Position.Y += lineHeight - el.Size.Y;
                    }
                }
            }

            var line = new TextLine();

            foreach (var element in textElements)
            {
                if (element.Linebreak)
                {
                    line.CharLength += 1;
                    line.Elements.Add(element);
                    _lines.Add(line);
                    line = new TextLine();
                }
                else
                {
                    line.Width      += element.Size.X;
                    line.CharLength += element.Text.Length;
                    line.Elements.Add(element);
                }

                _textSize.X = Math.Max(_textSize.X, line.Width);
                _textSize.Y = Math.Max(_textSize.Y, element.Position.Y + element.Size.Y);
            }

            _lines.Add(line);

            _textSize += new Point(style.TextPadding.Left + style.TextPadding.Right, style.TextPadding.Top + style.TextPadding.Bottom);

            _lastSize = Size;
            _isDirty  = false;

            //GetLineAndCol();
        }
Ejemplo n.º 15
0
        public void bntCreate_Click(Object sender, EventArgs e)
        {
            var fileName = String.Empty;

            if (fuImage.HasFile)
            {
                if (!Directory.Exists(HttpContext.Current.Server.MapPath("~/Images/Feedback/")))
                {
                    Directory.CreateDirectory(HttpContext.Current.Server.MapPath("~/Images/Feedback/"));
                }
                if (fuImage.FileBytes.Length > 4000000)
                {
                    lblError.Text = "Размер картинки должен быть меньее 4 мб.";
                    return;
                }
                String ext = System.IO.Path.GetExtension(fuImage.FileName);
                if (ext.ToLower() != ".jpg" && ext.ToLower() != ".png" && ext.ToLower() != ".gif" && ext.ToLower() != ".jpeg")
                {
                    lblError.Text = "Загружать можно исключительно картинки.";
                    return;
                }
                fileName = OtherMethods.CreateUniqId(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")) + ext;
                fuImage.PostedFile.SaveAs(Server.MapPath("~/Images/Feedback/") + fileName);
            }
            var userInSession = (Users)Session["userinsession"];
            var feedback      = new Feedback()
            {
                TypeID     = Convert.ToInt32(ddlType.SelectedValue),
                PriorityID = Convert.ToInt32(ddlPriority.SelectedValue),
                StatusID   = 0,
                Title      = tbTitle.Text,
                Body       = BbCode.BBcodeToHtml(tbBody.Text),
                UserID     = userInSession.ID,
                PhotoName  = fileName,
                ChangeDate = DateTime.Now,
                SecureID   = OtherMethods.CreateFullUniqId(DateTime.Now.ToString("yyMdHms"))
            };

            feedback.Create();

            var roles = (List <Roles>)HttpContext.Current.Application["RolesList"];

            if (feedback.TypeID == 0)
            {
                SendNotification(roles.Where(u => u.Feedback0 == 1).ToList(), feedback);
            }
            if (feedback.TypeID == 1)
            {
                SendNotification(roles.Where(u => u.Feedback1 == 1).ToList(), feedback);
            }
            if (feedback.TypeID == 2)
            {
                SendNotification(roles.Where(u => u.Feedback2 == 1).ToList(), feedback);
            }
            if (feedback.TypeID == 3)
            {
                SendNotification(roles.Where(u => u.Feedback3 == 1).ToList(), feedback);
            }
            if (feedback.TypeID == 4)
            {
                SendNotification(roles.Where(u => u.Feedback4 == 1).ToList(), feedback);
            }
            if (feedback.TypeID == 5)
            {
                SendNotification(roles.Where(u => u.Feedback5 == 1).ToList(), feedback);
            }
            if (feedback.TypeID == 6)
            {
                SendNotification(roles.Where(u => u.Feedback6 == 1).ToList(), feedback);
            }
            Page.Response.Redirect("~/UserUI/FeedbacksView.aspx");
        }