static IHtmlControl GetUserRedoPanel(SiteState state, LightObject user) { return(new HPanel( Decor.PropertyEdit("editUserName", "Ваше имя (*):", user.Get(UserType.FirstName)), Decor.PropertyEdit("editUserEmail", "Email (*):", user.Get(UserType.Email)), Decor.PropertyEdit("editUserCountry", "Страна:", user.Get(BasketballUserType.Country)), Decor.PropertyEdit("editUserCity", "Город:", user.Get(BasketballUserType.City)), Decor.PropertyEdit("editUserInterests", "Интересы:", user.Get(BasketballUserType.Interests)), Decor.PropertyEdit("editUserAboutMe", "О себе:", user.Get(BasketballUserType.AboutMe)), Decor.PropertyEdit("editUserCommunity", "На basketball.ru с:", user.Get(BasketballUserType.CommunityMember)), Decor.Button("Сохранить") .Event("user_edit_save", "userContainer", delegate(JsonData json) { string name = json.GetText("editUserName"); string email = json.GetText("editUserEmail"); string country = json.GetText("editUserCountry"); string city = json.GetText("editUserCity"); string interests = json.GetText("editUserInterests"); string aboutMe = json.GetText("editUserAboutMe"); string community = json.GetText("editUserCommunity"); WebOperation operation = state.Operation; if (!operation.Validate(email, "Не задана электронная почта")) { return; } if (!operation.Validate(!email.Contains("@"), "Некорректный адрес электронной почты")) { return; } if (!operation.Validate(name, "Не задано имя")) { return; } LightObject editUser = DataBox.LoadObject(context.UserConnection, UserType.User, user.Id); editUser.Set(UserType.FirstName, name); editUser.Set(UserType.Email, email); editUser.Set(BasketballUserType.Country, country); editUser.Set(BasketballUserType.City, city); editUser.Set(BasketballUserType.Interests, interests); editUser.Set(BasketballUserType.AboutMe, aboutMe); editUser.Set(BasketballUserType.CommunityMember, community); editUser.Set(ObjectType.ActTill, DateTime.UtcNow); editUser.Box.Update(); context.UserStorage.Update(); state.BlockHint = ""; } ) ).EditContainer("userContainer")); }
static IHtmlControl GetModeratorPanel(LightObject user) { return(new HPanel( Decor.PropertyEdit("editBannedUntil", "Заблокировать до (например, 22.12.2018)", user.Get(BasketballUserType.BannedUntil)?.ToString("dd.MM.yyyy") ), Decor.PropertyEdit("editNotRedactorUntil", "Запретить добавление новостей до", user.Get(BasketballUserType.NotRedactorUntil)?.ToString("dd.MM.yyyy") ), Decor.Button("Сохранить").Event("user_rights_save", "moderatorEdit", delegate(JsonData json) { string bannedUntilStr = json.GetText("editBannedUntil"); string notRedactorUntilStr = json.GetText("editNotRedactorUntil"); LightObject editUser = DataBox.LoadObject(context.UserConnection, UserType.User, user.Id); DateTime bannedUntil; if (DateTime.TryParse(bannedUntilStr, out bannedUntil)) { editUser.Set(BasketballUserType.BannedUntil, bannedUntil); } else { editUser.Set(BasketballUserType.BannedUntil, null); } DateTime notRedactorUntil; if (DateTime.TryParse(notRedactorUntilStr, out notRedactorUntil)) { editUser.Set(BasketballUserType.NotRedactorUntil, notRedactorUntil); } else { editUser.Set(BasketballUserType.NotRedactorUntil, null); } editUser.Box.Update(); context.UserStorage.Update(); } ) ).EditContainer("moderatorEdit").MarginTop(10)); }
static IHtmlControl GetTopicRedoPanel(SiteState state, LightObject currentUser, LightSection forumSection, TopicStorage topic) { string blockHint = string.Format("topic_edit_{0}", topic.TopicId); IHtmlControl redoPanel = null; if (state.BlockHint == blockHint) { redoPanel = new HPanel( new HPanel( Decor.Button("Удалить тему").Event("delete_topic", "", delegate { int messageCount = topic.MessageLink.AllRows.Length; if (!state.Operation.Validate(messageCount > 1, "Тема с комментариями не может быть удалена")) { return; } MessageHlp.DeleteTopicMessages(context.ForumConnection, topic.Topic.Id); BasketballHlp.DeleteTopic(context.FabricConnection, topic.TopicId); topic.UpdateTopic(); topic.UpdateMessages(); context.UpdateLastComments(true); context.Forum.ForSection(forumSection.Id).Update(); state.RedirectUrl = "/"; } ) ).Align(false), Decor.PropertyEdit("editTopicTitle", "Заголовок темы", topic.Topic.Get(TopicType.Title)), Decor.Button("Переименовать тему") .Event("save_topic_edit", "editTopicData", delegate(JsonData json) { string title = json.GetText("editTopicTitle"); WebOperation operation = state.Operation; if (!operation.Validate(title, "Не задан заголовок")) { return; } LightObject editTopic = DataBox.LoadObject(context.FabricConnection, TopicType.Topic, topic.TopicId); editTopic.SetWithoutCheck(TopicType.Title, title); editTopic.Box.Update(); context.Forum.ForSection(forumSection.Id).Update(); topic.UpdateTopic(); state.BlockHint = ""; }, topic.TopicId ) ).EditContainer("editTopicData") .Padding(5, 10).MarginTop(5).Background(Decor.pageBackground); } return(new HPanel( Decor.Button("Редактировать") .Event("topic_edit", "", delegate { state.SetBlockHint(blockHint); } ), redoPanel ).MarginTop(5).MarginBottom(10)); }
static IHtmlControl GetTopicAddPanel(SiteState state, LightObject currentUser, LightSection section) { string blockHint = "topic_add"; IHtmlControl addPanel = null; if (state.BlockHint == blockHint) { addPanel = new HPanel( Decor.PropertyEdit("addTopicTitle", "Заголовок темы"), new HTextArea("addTopicText") .Width("100%").Height("6em").MarginBottom(5), Decor.Button("Сохранить").MarginTop(10) .Event("save_topic_add", "addTopicData", delegate(JsonData json) { string title = json.GetText("addTopicTitle"); string text = json.GetText("addTopicText"); WebOperation operation = state.Operation; if (!operation.Validate(title, "Не задан заголовок")) { return; } if (!operation.Validate(text, "Не задан текст")) { return; } KinBox editBox = new KinBox(context.FabricConnection, "1=0"); int addTopicId = editBox.CreateObject(TopicType.Topic, TopicType.Title.CreateXmlIds(title), DateTime.UtcNow); LightKin addTopic = new LightKin(editBox, addTopicId); addTopic.SetParentId(ForumSectionType.TopicLinks, section.Id); addTopic.Set(ObjectType.ActTill, DateTime.UtcNow); addTopic.Set(TopicType.PublisherId, currentUser.Id); editBox.Update(); MessageHlp.InsertMessage(context.ForumConnection, addTopic.Id, currentUser.Id, null, text); context.UpdateLastComments(true); context.Forum.ForSection(section.Id).Update(); state.BlockHint = ""; //context.Forum.TopicsStorages.ForTopic(addTopic.Id); } ) ).EditContainer("addTopicData").MarginTop(5); } return(new HPanel( Decor.Button("Создать тему") .Event("topic_add", "", delegate { state.SetBlockHint(blockHint); } ), addPanel ).MarginTop(5).MarginBottom(10)); }
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 )); }
static IHtmlControl GetArticleEditPanel(SiteState state, TopicStorage topic) { LightObject article = topic.Topic; string blockHint = string.Format("article_edit_{0}", article.Id); IHtmlControl redoPanel = null; if (state.BlockHint == blockHint) { IHtmlControl deletePanel = null; if (state.ModeratorMode) { deletePanel = ViewNewsHlp.DeleteTopicPanel(state, topic); } redoPanel = new HPanel( deletePanel, new HPanel( Decor.PropertyEdit("editArticleTitle", "Заголовок статьи", article.Get(NewsType.Title)), new HPanel( new HLabel("Аннотация").FontBold(), new HTextArea("editArticleAnnotation", article.Get(NewsType.Annotation)) .Width("100%").Height("4em").MarginBottom(5) ), new HPanel( new HInputCheck( "editArticleWideContent", article.Get(ArticleType.WideContent), new HAfter().Content("Таблицы шире колонки статьи").MarginLeft(18).MarginBottom(1) ).NoWrap() ).MarginBottom(5), HtmlHlp.CKEditorCreate("editArticleText", article.Get(NewsType.Text), "300px", true), Decor.PropertyEdit("editArticleAuthor", "Автор", article.Get(ArticleType.Author)), Decor.PropertyEdit("editArticleOriginName", "Источник (без префикса http://)", article.Get(NewsType.OriginName)), Decor.PropertyEdit("editArticleOriginUrl", "Ссылка (с префиксом http://)", article.Get(NewsType.OriginUrl)), Decor.Button("Сохранить статью").CKEditorOnUpdateAll().MarginTop(10).MarginBottom(10) .Event("save_article_edit", "editArticleData", delegate(JsonData json) { string title = json.GetText("editArticleTitle"); string annotation = json.GetText("editArticleAnnotation"); bool wideContent = json.GetBool("editArticleWideContent"); string text = json.GetText("editArticleText"); string author = json.GetText("editArticleAuthor"); string originName = json.GetText("editArticleOriginName"); string originUrl = json.GetText("editArticleOriginUrl"); WebOperation operation = state.Operation; if (!operation.Validate(title, "Не задан заголовок")) { return; } if (!operation.Validate(text, "Не задан текст")) { return; } LightObject editNews = DataBox.LoadObject(context.FabricConnection, ArticleType.Article, article.Id); editNews.SetWithoutCheck(NewsType.Title, title); editNews.Set(ArticleType.WideContent, wideContent); editNews.Set(NewsType.Annotation, annotation); editNews.Set(NewsType.Text, text); editNews.Set(ArticleType.Author, author); editNews.Set(NewsType.OriginName, originName); editNews.Set(NewsType.OriginUrl, originUrl); editNews.Set(ObjectType.ActTill, DateTime.UtcNow); editNews.Box.Update(); context.UpdateArticles(); context.ArticleStorages.ForTopic(article.Id).UpdateTopic(); state.BlockHint = ""; }, article.Id ) ).EditContainer("editArticleData"), new HPanel( EditElementHlp.GetImageThumb(article.Id) ), new HPanel( EditElementHlp.GetDescriptionImagesPanel(state.Option, article.Id) ) ).Padding(5, 10).MarginTop(10).Background(Decor.pageBackground); } return(new HPanel( Decor.Button("Редактировать") .Event("article_edit", "", delegate { state.SetBlockHint(blockHint); } ), redoPanel ).MarginTop(5)); }
public static IHtmlControl GetActualArticleBlock(SiteState state, LightObject currentUser) { IHtmlControl[] items = ViewArticleHlp.GetArticleItems(state, context.ActualArticles); HPanel editBlock = null; if (state.BlockHint == "articleAdd") { editBlock = new HPanel( Decor.PropertyEdit("addArticleTitle", "Заголовок статьи"), Decor.Button("Добавить статью").MarginTop(10) .Event("article_add_save", "addArticleData", delegate(JsonData json) { string title = json.GetText("addArticleTitle"); WebOperation operation = state.Operation; if (!operation.Validate(title, "Не задан заголовок")) { return; } ObjectBox editBox = new ObjectBox(context.FabricConnection, "1=0"); int addArticleId = editBox.CreateObject( ArticleType.Article, ArticleType.Title.CreateXmlIds(title), DateTime.UtcNow ); LightObject editArticle = new LightObject(editBox, addArticleId); editArticle.Set(ArticleType.PublisherId, currentUser.Id); editBox.Update(); context.UpdateArticles(); state.BlockHint = ""; state.RedirectUrl = UrlHlp.ShopUrl("article", addArticleId); } ) ).EditContainer("addArticleData") .Padding(5, 10).MarginTop(10).Background(Decor.pageBackground); } HButton addButton = null; if (currentUser != null && !BasketballHlp.NoRedactor(currentUser)) { addButton = Decor.Button("Добавить").Hide(currentUser == null).MarginLeft(10) .Event("article_add", "", delegate { state.SetBlockHint("articleAdd"); } ); } return(new HPanel( Decor.Subtitle("Статьи").MarginBottom(12), new HPanel( items.ToArray() ), new HPanel( new HLink("/stati", "Все статьи", new HBefore().ContentIcon(5, 12).BackgroundImage(UrlHlp.ImageUrl("pointer.gif")).MarginRight(5).VAlign(-2) ).FontBold(), addButton ).MarginTop(15), editBlock ).MarginTop(10)); }