static IHtmlControl GetNewsEditPanel(SiteState state, TopicStorage topic) { LightObject news = topic.Topic; string blockHint = string.Format("news_edit_{0}", news.Id); IHtmlControl redoPanel = null; if (state.BlockHint == blockHint) { IHtmlControl deletePanel = null; if (state.ModeratorMode) { deletePanel = DeleteTopicPanel(state, topic); } if (state.Tag == null) { state.Tag = ViewTagHlp.GetTopicDisplayTags(context.Tags.TagBox, topic.Topic); } redoPanel = new HPanel( deletePanel, Decor.PropertyEdit("newsTitle", "Заголовок новости", news.Get(NewsType.Title)), new HPanel( HtmlHlp.CKEditorCreate("newsText", news.Get(NewsType.Text), "300px", true) ), ViewTagHlp.GetEditTagsPanel(state, context.Tags.TagBox, state.Tag as List <string>, false), Decor.PropertyEdit("newsOriginName", "Источник", news.Get(NewsType.OriginName)), Decor.PropertyEdit("newsOriginUrl", "Ссылка", news.Get(NewsType.OriginUrl)), Decor.Button("Изменить новость").CKEditorOnUpdateAll().MarginTop(10) .Event("save_news_edit", "editNewsData", delegate(JsonData json) { string title = json.GetText("newsTitle"); string text = json.GetText("newsText"); string originName = json.GetText("newsOriginName"); string originUrl = json.GetText("newsOriginUrl"); WebOperation operation = state.Operation; if (!operation.Validate(title, "Не задан заголовок")) { return; } if (!operation.Validate(text, "Не задан текст")) { return; } LightKin editNews = DataBox.LoadKin(context.FabricConnection, NewsType.News, news.Id); editNews.SetWithoutCheck(NewsType.Title, title); editNews.Set(NewsType.Text, text); editNews.Set(NewsType.OriginName, originName); editNews.Set(NewsType.OriginUrl, originUrl); editNews.Set(ObjectType.ActTill, DateTime.UtcNow); ViewTagHlp.SaveTags(context, state, editNews); editNews.Box.Update(); context.UpdateNews(); context.NewsStorages.ForTopic(news.Id).UpdateTopic(); state.BlockHint = ""; }, news.Id ) ).EditContainer("editNewsData") .Padding(5, 10).MarginTop(10).Background(Decor.pageBackground); } return(new HPanel( Decor.Button("Редактировать") .Event("news_edit", "", delegate { state.SetBlockHint(blockHint); } ), redoPanel ).MarginTop(10)); }
public static IHtmlControl GetActualNewsBlock(SiteState state, LightObject currentUser) { IHtmlControl[] items = ViewNewsHlp.GetNewsItems(state, context.ActualNews); HPanel editBlock = null; string editHint = "news_add"; if (state.BlockHint == editHint) { if (state.Tag == null) { state.Tag = new List <string>(); } string unsaveText = BasketballHlp.AddCommentFromCookie(); editBlock = new HPanel( Decor.PropertyEdit("newsTitle", "Заголовок новости"), new HPanel( HtmlHlp.CKEditorCreate("newsText", unsaveText, "300px", true) ), ViewTagHlp.GetEditTagsPanel(state, context.Tags.TagBox, state.Tag as List <string>, true), Decor.PropertyEdit("newsOriginName", "Источник"), Decor.PropertyEdit("newsOriginUrl", "Ссылка"), Decor.Button("Добавить новость").MarginTop(10) //.CKEditorOnUpdateAll() .OnClick(string.Format("CK_updateAll(); {0}", BasketballHlp.AddCommentToCookieScript("newsText"))) .Event("save_news_add", "addNewsData", delegate(JsonData json) { string title = json.GetText("newsTitle"); string text = json.GetText("newsText"); string originName = json.GetText("newsOriginName"); string originUrl = json.GetText("newsOriginUrl"); WebOperation operation = state.Operation; if (!operation.Validate(title, "Не задан заголовок")) { return; } if (!operation.Validate(text, "Не задан текст")) { return; } ParentBox editBox = new ParentBox(context.FabricConnection, "1=0"); int addNewsId = editBox.CreateObject(NewsType.News, NewsType.Title.CreateXmlIds(title), DateTime.UtcNow); LightParent editNews = new LightParent(editBox, addNewsId); editNews.Set(NewsType.PublisherId, currentUser.Id); editNews.Set(NewsType.Text, text); editNews.Set(NewsType.OriginName, originName); editNews.Set(NewsType.OriginUrl, originUrl); ViewTagHlp.SaveTags(context, state, editNews); editBox.Update(); context.UpdateNews(); state.BlockHint = ""; state.Tag = null; BasketballHlp.ResetAddComment(); } ) ).EditContainer("addNewsData").Padding(5, 10).MarginTop(10).Background(Decor.pageBackground); } IHtmlControl addButton = null; if (currentUser != null && !BasketballHlp.NoRedactor(currentUser)) { addButton = Decor.Button("Добавить").MarginLeft(10) .Event("news_add", "", delegate { state.Tag = null; state.SetBlockHint(editHint); } ); } return(new HPanel( Decor.Subtitle("Новости"), new HPanel( items.ToArray() ), new HPanel( new HLink("/novosti", "Все новости", new HBefore().ContentIcon(5, 12).BackgroundImage(UrlHlp.ImageUrl("pointer.gif")).MarginRight(5).VAlign(-2) ).FontBold(), addButton ).MarginTop(15), editBlock )); }