Example #1
0
	private bool SaveForumData()
	{
		bool result = false;
		try
		{
			Page.Validate("ForumEdit");
			if (!Page.IsValid)
				throw new Exception();

			AccessEdit.State.Validate(false);

			if (forum == null)
				forum = new BXForum();

			forum.Active = ForumActive.Checked;

			int categoryId;
			if (int.TryParse(ForumCategory.SelectedValue, out categoryId) && (categoryId == 0 || BXForumCategory.GetById(categoryId) != null))
				forum.CategoryId = categoryId;

			forum.Sites.Clear();
			foreach (ListItem item in ForumSites.Items)
				if (item.Selected)
					forum.Sites.Add(item.Value);
			
			forum.Name = ForumName.Text;
			forum.Description = ForumDescription.Text;

			int sort;
			if (int.TryParse(ForumSort.Text, out sort))
				forum.Sort = sort;

			forum.AllowBBCode = ForumBBCode.Checked;
			forum.AllowSmiles = ForumSmiles.Checked;
            forum.AllowVotingForTopic = ForumVotingForTopic.Checked;
            forum.AllowVotingForPost = ForumVotingForPost.Checked;

			forum.IndexContent = ForumIndexContent.Checked;
			forum.Code = ForumCode.Text;
			forum.XmlId = ForumXmlId.Text;

			forum.Save();

            if (IsSearchModuleInstalled && ForumRebuildSearchIndex.Checked)
            {
                BXSchedulerAgent a = new BXSchedulerAgent();
                a.SetClassNameAndAssembly(typeof(Bitrix.Forum.BXForum.IndexSynchronizer));
                a.Parameters.Add("Action", Bitrix.Forum.BXForum.IndexSynchronizerAction.Rebuild.ToString("G"));
                a.Parameters.Add("ForumId", Id);
                a.StartTime = DateTime.Now.AddSeconds(5D);
                a.Save();
            }

			if (forum.Id > 0)
			{
				BXRoleManager.RemoveRoleFromTasks("forum", forum.Id.ToString());
				BXRoleManager.RemoveRoleFromOperations("forum", forum.Id.ToString());
			}
			
			SaveAccessState();

			id = forum.Id;
			result = true;
		}
		catch (Exception ex)
		{
			errorMessage.AddErrorMessage(ex.Message);
		}

		return result;
	}
Example #2
0
	private void LoadForumData()
	{
		int requestId;
		if (int.TryParse(Request.QueryString["id"], out requestId) && requestId > 0)
			id = requestId;

		if (id > 0)
		{
			forum = BXForum.GetById(Id, BXTextEncoder.EmptyTextEncoder);
			if (forum == null)
			{
				errorMessage.AddErrorMessage(GetMessage("Error.ForumNotFound"));
				TabControl.Visible = false;
				return;
			}

			BXForum.BXForumSiteCollection currentSites = forum.Sites;
			foreach (ListItem item in ForumSites.Items)
			{
				if (currentSites.Exists(
						delegate(BXForum.BXForumSite forumSite) { return String.Equals(forumSite.SiteId, item.Value, StringComparison.OrdinalIgnoreCase); }))
					item.Selected = true;
			}

			if (forum.CategoryId > 0)
				ForumCategory.SelectedValue = forum.CategoryId.ToString();

			ForumActive.Checked = forum.Active;
			ForumName.Text = forum.Name;
			ForumDescription.Text = forum.Description;
			ForumSort.Text = forum.Sort.ToString();

			ForumBBCode.Checked = forum.AllowBBCode;
			ForumSmiles.Checked = forum.AllowSmiles;
            ForumVotingForTopic.Checked = forum.AllowVotingForTopic;
            ForumVotingForPost.Checked = forum.AllowVotingForPost;
			ForumIndexContent.Checked = forum.IndexContent;
			ForumCode.Text = forum.Code;
			ForumXmlId.Text = forum.XmlId;
		}
		else
		{
			ForumSort.Text = "10";
			ForumActive.Checked = true;
			ForumIndexContent.Checked = true;
			ForumBBCode.Checked = true;
			ForumSmiles.Checked = true;
		}
	}