Esempio n. 1
0
    public void RaisePostBackEvent(string eventArgument)
    {
        if (!CheckPermissions("cms.forums", CMSAdminControl.PERMISSION_MODIFY))
        {
            return;
        }

        string[] args = eventArgument.Split(';');
        if (args.Length == 2)
        {
            // Get info on currently selected item
            int permission = Convert.ToInt32(args[0]);
            int access     = Convert.ToInt32(args[1]);

            if (forum != null)
            {
                // Update forum permission access information
                switch (permission)
                {
                case 0:
                    // Set 'AllowAccess' permission to specified access
                    forum.AllowAccess = (SecurityAccessEnum)access;
                    break;

                case 1:
                    // Set 'AttachFiles' permission to specified access
                    forum.AllowAttachFiles = ((SecurityAccessEnum)access);
                    break;

                case 2:
                    // Set 'MarkAsAnswer' permission to specified access
                    forum.AllowMarkAsAnswer = (SecurityAccessEnum)access;
                    break;

                case 3:
                    // Set 'Post' permission to specified access
                    forum.AllowPost = ((SecurityAccessEnum)access);
                    break;

                case 4:
                    // Set 'Reply' permission to specified access
                    forum.AllowReply = (SecurityAccessEnum)access;
                    break;

                case 5:
                    // Set 'Subscribe' permission to specified access
                    forum.AllowSubscribe = (SecurityAccessEnum)access;
                    break;

                default:
                    break;
                }

                // Save changes to the forum
                ForumInfoProvider.SetForumInfo(forum);

                createMatrix = true;
            }
        }
    }
    /// <summary>
    /// Gets and bulk updates forums. Called when the "Get and bulk update forums" button is pressed.
    /// Expects the CreateForum method to be run first.
    /// </summary>
    private bool GetAndBulkUpdateForums()
    {
        // Prepare the parameters
        string where = "ForumName LIKE N'MyNewForum%'";
        string orderBy = "";
        string columns = "";
        int    topN    = 10;

        // Get the data
        DataSet forums = ForumInfoProvider.GetForums(where, orderBy, topN, columns);

        if (!DataHelper.DataSourceIsEmpty(forums))
        {
            // Loop through the individual items
            foreach (DataRow forumDr in forums.Tables[0].Rows)
            {
                // Create object from DataRow
                ForumInfo modifyForum = new ForumInfo(forumDr);

                // Update the properties
                modifyForum.ForumDisplayName = modifyForum.ForumDisplayName.ToUpper();

                // Save the changes
                ForumInfoProvider.SetForumInfo(modifyForum);
            }

            return(true);
        }

        return(false);
    }
    /// <summary>
    /// Creates forum. Called when the "Create forum" button is pressed.
    /// </summary>
    private bool CreateForum()
    {
        // Get the forum group
        ForumGroupInfo group = ForumGroupInfoProvider.GetForumGroupInfo("MyNewGroup", CMSContext.CurrentSiteID);

        if (group != null)
        {
            // Create new forum object
            ForumInfo newForum = new ForumInfo();

            // Set the properties
            newForum.ForumDisplayName = "My new forum";
            newForum.ForumName        = "MyNewForum";
            newForum.ForumGroupID     = group.GroupID;
            newForum.ForumSiteID      = group.GroupSiteID;
            newForum.AllowAccess      = SecurityAccessEnum.AllUsers;
            newForum.AllowAttachFiles = SecurityAccessEnum.AuthenticatedUsers;
            newForum.AllowPost        = SecurityAccessEnum.AllUsers;
            newForum.AllowReply       = SecurityAccessEnum.AllUsers;
            newForum.AllowSubscribe   = SecurityAccessEnum.AllUsers;
            newForum.ForumOpen        = true;
            newForum.ForumModerated   = false;
            newForum.ForumThreads     = 0;
            newForum.ForumPosts       = 0;


            // Save the forum
            ForumInfoProvider.SetForumInfo(newForum);

            return(true);
        }

        return(false);
    }
Esempio n. 4
0
    /// <summary>
    /// Change name checkbox handler.
    /// </summary>
    protected void chkChangeName_CheckedChanged(object sender, EventArgs e)
    {
        if (!CheckPermissions("cms.forums", CMSAdminControl.PERMISSION_MODIFY))
        {
            return;
        }

        if (forum != null)
        {
            forum.ForumAllowChangeName = this.chkChangeName.Checked;
            ForumInfoProvider.SetForumInfo(forum);
        }
    }
Esempio n. 5
0
    /// <summary>
    /// Board moderated checkbox change.
    /// </summary>
    protected void chkForumModerated_CheckedChanged(object sender, EventArgs e)
    {
        if (!CheckPermissions("cms.forums", PERMISSION_MODIFY))
        {
            return;
        }

        if (forum != null)
        {
            forum.ForumModerated = chkForumModerated.Checked;

            ForumInfoProvider.SetForumInfo(forum);

            ShowChangesSaved();

            RaiseOnSaved();
        }
    }
    /// <summary>
    /// Gets and updates forum. Called when the "Get and update forum" button is pressed.
    /// Expects the CreateForum method to be run first.
    /// </summary>
    private bool GetAndUpdateForum()
    {
        // Get the forum
        ForumInfo updateForum = ForumInfoProvider.GetForumInfo("MyNewForum", CMSContext.CurrentSiteID);

        if (updateForum != null)
        {
            // Update the properties
            updateForum.ForumDisplayName = updateForum.ForumDisplayName.ToLower();

            // Save the changes
            ForumInfoProvider.SetForumInfo(updateForum);

            return(true);
        }

        return(false);
    }
Esempio n. 7
0
    /// <summary>
    /// Board moderated checkbox change.
    /// </summary>
    protected void chkForumModerated_CheckedChanged(object sender, EventArgs e)
    {
        if (!CheckPermissions("cms.forums", CMSAdminControl.PERMISSION_MODIFY))
        {
            return;
        }

        if (forum != null)
        {
            forum.ForumModerated = chkForumModerated.Checked;

            ForumInfoProvider.SetForumInfo(forum);

            lblInfo.Visible = true;
            lblInfo.Text    = GetString("General.Changessaved");

            this.RaiseOnSaved();
        }
    }
    /// <summary>
    /// Creates department forum group.
    /// </summary>
    /// <param name="departmentNode">Department node</param>
    private void CreateDepartmentForumGroup(TreeNode departmentNode)
    {
        // Set general values
        string departmentName = departmentNode.GetDocumentName();
        string suffix         = "";


        #region "Create forum group"

        // Get forum group code name
        string groupCodeName = "Department_" + departmentNode.NodeGUID;

        // Check if forum group with given name already exists
        if (ForumGroupInfoProvider.GetForumGroupInfo(groupCodeName, SiteContext.CurrentSiteID) != null)
        {
            return;
        }

        // Create base URL for forums
        string baseUrl = DocumentURLProvider.GetUrl(departmentNode.NodeAliasPath + "/" + FORUM_DOCUMENT_ALIAS);

        ForumGroupInfo forumGroupObj = new ForumGroupInfo();
        forumGroupObj.GroupDescription = "Forum group for " + departmentName + " department.";
        suffix = " forum group";
        forumGroupObj.GroupDisplayName = TextHelper.LimitLength(departmentName, 200 - suffix.Length, "") + suffix;
        forumGroupObj.GroupName        = groupCodeName;
        forumGroupObj.GroupOrder       = 0;
        forumGroupObj.GroupEnableQuote = true;
        forumGroupObj.GroupSiteID      = SiteContext.CurrentSiteID;
        forumGroupObj.GroupBaseUrl     = baseUrl;

        // Additional settings
        forumGroupObj.GroupEnableCodeSnippet   = true;
        forumGroupObj.GroupEnableFontBold      = true;
        forumGroupObj.GroupEnableFontColor     = true;
        forumGroupObj.GroupEnableFontItalics   = true;
        forumGroupObj.GroupEnableFontStrike    = true;
        forumGroupObj.GroupEnableFontUnderline = true;
        forumGroupObj.GroupEnableQuote         = true;
        forumGroupObj.GroupEnableURL           = true;
        forumGroupObj.GroupEnableImage         = true;

        ForumGroupInfoProvider.SetForumGroupInfo(forumGroupObj);

        #endregion


        #region "Create forum"

        string codeName = "Default_department_" + departmentNode.NodeGUID;

        // Check if forum with given name already exists
        if (ForumInfoProvider.GetForumInfo(codeName, SiteContext.CurrentSite.SiteID) != null)
        {
            return;
        }

        ForumInfo forumObj = new ForumInfo();
        forumObj.ForumSiteID        = SiteContext.CurrentSiteID;
        forumObj.ForumIsLocked      = false;
        forumObj.ForumOpen          = true;
        forumObj.ForumDisplayEmails = false;
        forumObj.ForumDescription   = "Forum for " + departmentName + " department.";
        forumObj.ForumRequireEmail  = false;
        suffix = " forum";
        forumObj.ForumDisplayName     = TextHelper.LimitLength(departmentName, 200 - suffix.Length, "") + suffix;
        forumObj.ForumName            = codeName;
        forumObj.ForumGroupID         = forumGroupObj.GroupID;
        forumObj.ForumModerated       = false;
        forumObj.ForumAccess          = 40000;
        forumObj.ForumPosts           = 0;
        forumObj.ForumThreads         = 0;
        forumObj.ForumPostsAbsolute   = 0;
        forumObj.ForumThreadsAbsolute = 0;
        forumObj.ForumOrder           = 0;
        forumObj.ForumUseCAPTCHA      = false;
        forumObj.SetValue("ForumHTMLEditor", null);

        // Set security
        forumObj.AllowAccess       = SecurityAccessEnum.AuthorizedRoles;
        forumObj.AllowAttachFiles  = SecurityAccessEnum.AuthorizedRoles;
        forumObj.AllowMarkAsAnswer = SecurityAccessEnum.AuthorizedRoles;
        forumObj.AllowPost         = SecurityAccessEnum.AuthorizedRoles;
        forumObj.AllowReply        = SecurityAccessEnum.AuthorizedRoles;
        forumObj.AllowSubscribe    = SecurityAccessEnum.AuthorizedRoles;

        if (ForumInfoProvider.LicenseVersionCheck(RequestContext.CurrentDomain, FeatureEnum.Forums, ObjectActionEnum.Insert))
        {
            ForumInfoProvider.SetForumInfo(forumObj);
        }

        #endregion
    }
Esempio n. 9
0
    /// <summary>
    /// OK click hadler.
    /// </summary>
    protected void btnOK_Click(object sender, EventArgs e)
    {
        #region "Security"

        // Check whether forum exists
        if (ForumContext.CurrentForum == null)
        {
            return;
        }

        // Check security
        bool securityCheck = true;
        switch (ForumContext.CurrentState)
        {
        case ForumStateEnum.NewThread:
            securityCheck = IsAvailable(ForumContext.CurrentForum, ForumActionType.NewThread);
            break;

        case ForumStateEnum.ReplyToPost:
            securityCheck = IsAvailable(ForumContext.CurrentForum, ForumActionType.Reply);
            break;

        case ForumStateEnum.EditPost:
            securityCheck = ForumContext.CurrentPost != null && IsAvailable(ForumContext.CurrentPost, ForumActionType.Edit);
            break;
        }

        if (!securityCheck)
        {
            ShowError(GetString("ForumNewPost.PermissionDenied"));
            return;
        }


        #region "Captcha"

        // Check security code if is required
        if ((ForumContext.CurrentForum.ForumUseCAPTCHA) && (!SecurityCode1.IsValid()) && (ForumContext.CurrentState != ForumStateEnum.EditPost))
        {
            ShowError(GetString("ForumNewPost.InvalidCaptcha"));
            return;
        }

        #endregion



        #region "Email field"

        // Create instance of validator
        Validator validator = new Validator();

        // Check whether email is valid
        string result = validator.IsEmail(txtEmail.Text, rfvEmail.ErrorMessage).Result;

        // Check whether email is present with correct format if email is required
        // or when subscribtion to current post is checked
        if ((ForumContext.CurrentForum.ForumRequireEmail || chkSubscribe.Checked) && (!String.IsNullOrEmpty(result)))
        {
            ShowError(result);
            return;
        }

        // Check if email is added if is in correct format
        if ((txtEmail.Text.Trim() != "") && (!String.IsNullOrEmpty(result)))
        {
            ShowError(rfvEmail.ErrorMessage);
            return;
        }

        #endregion


        #region "Subject"

        // Check whether subject is filled
        if (txtSubject.Text.Trim() == "")
        {
            ShowError(rfvSubject.ErrorMessage);
            return;
        }

        #endregion


        #region "Text"

        validator = new Validator();

        // Check post text in HTML editor or text area
        if (!ForumContext.CurrentForum.ForumHTMLEditor)
        {
            // Check whether post text is added in text area
            if ((result = validator.NotEmpty(DiscussionMacroHelper.RemoveTags(ucBBEditor.Text), rfvText.ErrorMessage).Result) != "")
            {
                ShowError(result);
                return;
            }
        }
        else
        {
            // Check whether post text is added in HTML editor
            if ((result = validator.NotEmpty(htmlTemplateBody.ResolvedValue, rfvText.ErrorMessage).Result) != "")
            {
                ShowError(result);
                return;
            }
        }

        #endregion


        #region "User name"

        // Check whether user name is filled if user name field is visible
        if (ForumContext.CurrentForum.ForumAllowChangeName || MembershipContext.AuthenticatedUser.IsPublic() || ((ForumContext.CurrentForum != null) && (ForumContext.UserIsModerator(ForumContext.CurrentForum.ForumID, ForumContext.CommunityGroupID))))
        {
            validator = new Validator();

            if (!String.IsNullOrEmpty(result = validator.NotEmpty(txtUserName.Text, rfvUserName.ErrorMessage).Result))
            {
                ShowError(result);
                return;
            }
        }

        #endregion


        #endregion


        #region "Forum post properties"

        bool newPost = false;

        // Current forum info object
        ForumInfo fi = ForumContext.CurrentForum;

        // Forum post info object
        ForumPostInfo fp = null;

        // Get forum post info with dependence on current state
        if (ForumContext.CurrentState == ForumStateEnum.EditPost)
        {
            // Get existing object
            fp = ForumContext.CurrentPost;
            fp.PostLastEdit = DateTime.Now;
        }
        else
        {
            // Create new forum post info object
            fp      = new ForumPostInfo();
            newPost = true;
        }


        #region "Ad-hoc forum"

        if (IsAdHocForum && (ForumContext.CurrentForum.ForumID == 0))
        {
            if (DocumentContext.CurrentDocument == null)
            {
                ShowError(GetString("forums.documentdoesnotexist"));
                return;
            }

            fi.ForumGroupID     = ForumGroupInfoProvider.GetAdHocGroupInfo(SiteID).GroupID;
            fi.ForumName        = "AdHoc-" + Guid.NewGuid();
            fi.ForumDisplayName = TextHelper.LimitLength(DocumentContext.CurrentDocument.GetDocumentName(), POST_USERNAME_LENGTH, String.Empty);
            fi.ForumOpen        = true;
            fi.ForumModerated   = false;
            fi.ForumAccess      = 040000;
            fi.ForumThreads     = 0;
            fi.ForumPosts       = 0;
            fi.ForumLogActivity = LogActivity;
            ForumInfoProvider.SetForumInfo(fi);

            ForumContext.CurrentForum.ForumID = fi.ForumID;
            ForumContext.ForumID = fi.ForumID;
            ForumID = fi.ForumID;
        }

        #endregion


        // Post forum
        fp.PostForumID = ForumContext.CurrentForum.ForumID;
        // Get forum post info with dependence on current state
        if (ForumContext.CurrentState != ForumStateEnum.EditPost)
        {
            // Post time
            fp.PostTime = DateTime.Now;
            // User IP address
            fp.PostInfo.IPAddress = RequestContext.UserHostAddress;
            // User agent
            fp.PostInfo.Agent = Request.UserAgent;
            // Post user id
            if (!MembershipContext.AuthenticatedUser.IsPublic())
            {
                fp.PostUserID = MembershipContext.AuthenticatedUser.UserID;
            }

            // Post signature
            fp.PostUserSignature = txtSignature.Text;
        }

        // Post subject
        fp.PostSubject = txtSubject.Text;
        // Post user email
        fp.PostUserMail = txtEmail.Text;


        // Post type
        int forumType = ForumContext.CurrentForum.ForumType;
        if (forumType == 0)
        {
            if (ForumContext.CurrentReplyThread == null)
            {
                // New thread - use type which user chosen
                fp.PostType = (radTypeDiscussion.Checked ? 0 : 1);
            }
            else
            {
                // Reply - use parent type
                fp.PostType = ForumContext.CurrentReplyThread.PostType;
            }
        }
        else
        {
            // Fixed type - use the forum setting
            fp.PostType = forumType - 1;
        }

        bool newThread = (ForumContext.CurrentReplyThread == null);

        // Set username if change name is allowed
        if (fi.ForumAllowChangeName || MembershipContext.AuthenticatedUser.IsPublic() || ForumContext.UserIsModerator(fp.PostForumID, ForumContext.CommunityGroupID))
        {
            fp.PostUserName = TextHelper.LimitLength(txtUserName.Text, POST_USERNAME_LENGTH, "");
        }
        else
        {
            // Get forum post info with dependence on current state
            if (ForumContext.CurrentState != ForumStateEnum.EditPost)
            {
                fp.PostUserName = UserName;
            }
        }

        // Post parent id -> reply to
        if (ForumContext.CurrentReplyThread != null)
        {
            fp.PostParentID = ForumContext.CurrentReplyThread.PostId;

            // Check max relative level
            if ((MaxRelativeLevel > -1) && (ForumContext.CurrentReplyThread.PostLevel >= MaxRelativeLevel))
            {
                ShowError(GetString("Forums.MaxRelativeLevelError"));
                return;
            }
        }

        // Get post text from HTML editor if is enabled
        fp.PostText = ForumContext.CurrentForum.ForumHTMLEditor ? htmlTemplateBody.ResolvedValue : ucBBEditor.Text;

        // Approve post if forum is not moderated
        if (newPost)
        {
            if (!ForumContext.CurrentForum.ForumModerated)
            {
                fp.PostApproved = true;
            }
            else
            {
                if (ForumContext.UserIsModerator(fp.PostForumID, CommunityGroupID))
                {
                    fp.PostApproved         = true;
                    fp.PostApprovedByUserID = MembershipContext.AuthenticatedUser.UserID;
                }
            }
        }

        // If signature is enabled then
        if (EnableSignature)
        {
            fp.PostUserSignature = MembershipContext.AuthenticatedUser.UserSignature;
        }

        #endregion


        if (!BadWordInfoProvider.CanUseBadWords(MembershipContext.AuthenticatedUser, SiteContext.CurrentSiteName))
        {
            // Prepare columns to check
            Dictionary <string, int> columns = new Dictionary <string, int>();
            columns.Add("PostText", 0);
            columns.Add("PostSubject", 450);
            columns.Add("PostUserSignature", 0);
            columns.Add("PostUserName", 200);

            // Perform bad words check
            string badMessage = BadWordsHelper.CheckBadWords(fp, columns, "PostApproved", "PostApprovedByUserID", fp.PostText, MembershipContext.AuthenticatedUser.UserID, () => { return(ValidatePost(fp)); });

            if (String.IsNullOrEmpty(badMessage))
            {
                if (!ValidatePost(fp))
                {
                    badMessage = GetString("ForumNewPost.EmptyBadWord");
                }
            }

            if (!String.IsNullOrEmpty(badMessage))
            {
                ShowError(badMessage);
                return;
            }
        }



        // Flood protection
        if (FloodProtectionHelper.CheckFlooding(SiteContext.CurrentSiteName, MembershipContext.AuthenticatedUser))
        {
            ShowError(GetString("General.FloodProtection"));
            return;
        }

        // Check banned ip
        if (!BannedIPInfoProvider.IsAllowed(SiteContext.CurrentSiteName, BanControlEnum.AllNonComplete))
        {
            ShowError(GetString("General.BannedIP"));
            return;
        }

        string baseUrl = ForumContext.CurrentForum.ForumBaseUrl;
        if (String.IsNullOrEmpty(baseUrl))
        {
            baseUrl = FriendlyBaseURL;
        }

        string unsubscriptionUrl = ForumContext.CurrentForum.ForumUnsubscriptionUrl;
        if (String.IsNullOrEmpty(unsubscriptionUrl))
        {
            unsubscriptionUrl = UnsubscriptionURL;
        }

        // USe parent post id for new post
        int subscibePostId = newPost ? fp.PostParentID : fp.PostId;

        // Check subscriptions
        if ((chkSubscribe.Checked) && (!String.IsNullOrEmpty(txtEmail.Text)) && (ForumSubscriptionInfoProvider.IsSubscribed(txtEmail.Text.Trim(), fp.PostForumID, subscibePostId)))
        {
            // Post of the forum is already subscribed to this email -> show an error
            chkSubscribe.Checked = false;
            ShowError(GetString("Forums.EmailAlreadySubscribed"));
            return;
        }

        // Save post object
        ForumPostInfoProvider.SetForumPostInfo(fp, baseUrl, unsubscriptionUrl);
        LogPostActivity(fp, fi);


        #region "Subscription"

        // If subscribe is checked create new subscription to the current post
        if ((chkSubscribe.Checked) && (!ForumSubscriptionInfoProvider.IsSubscribed(fp.PostUserMail, fp.PostForumID, fp.PostId)))
        {
            // Create new subscription info object
            ForumSubscriptionInfo fsi = new ForumSubscriptionInfo();
            // Set info properties
            fsi.SubscriptionForumID = fp.PostForumID;
            fsi.SubscriptionEmail   = fp.PostUserMail;
            fsi.SubscriptionPostID  = fp.PostId;
            fsi.SubscriptionUserID  = fp.PostUserID;
            fsi.SubscriptionGUID    = Guid.NewGuid();

            // Save subscription
            ForumSubscriptionInfoProvider.Subscribe(fsi, DateTime.Now, true, true);

            if (fsi.SubscriptionApproved)
            {
                LogSubscriptionActivity(fsi, fi);
            }
        }

        #endregion

        bool moderationRequired = false;
        if ((!fp.PostApproved) && (!ForumContext.UserIsModerator(fp.PostForumID, CommunityGroupID)))
        {
            moderationRequired = true;
            if (OnModerationRequired != null)
            {
                OnModerationRequired(this, null);
            }
        }

        // Keep current user info
        CurrentUserInfo currentUser = MembershipContext.AuthenticatedUser;

        if (currentUser.IsAuthenticated() && chkAttachFile.Checked && (currentUser.IsGlobalAdministrator || ForumContext.CurrentForum.AllowAttachFiles != SecurityAccessEnum.Nobody))
        {
            // Redirect to the post attachments
            string attachmentUrl = GetURL(fp, ForumActionType.Attachment);
            if (moderationRequired)
            {
                attachmentUrl = URLHelper.AddParameterToUrl(attachmentUrl, "moderated", "1");
            }
            URLHelper.Redirect(attachmentUrl);
        }
        else
        {
            if (!StopProcessing)
            {
                // Redirect back to the forum or forum thread
                URLHelper.Redirect(ClearURL());
            }
        }
    }
Esempio n. 10
0
    /// <summary>
    /// Sets data to database.
    /// </summary>
    protected void btnOK_Click(object sender, EventArgs e)
    {
        // Check MODIFY permission for forums
        if (!CheckPermissions("cms.forums", CMSAdminControl.PERMISSION_MODIFY))
        {
            return;
        }

        string codeName = txtForumName.Text.Trim();

        // Get safe code name for simple display mode
        if (DisplayMode == ControlDisplayModeEnum.Simple)
        {
            codeName = ValidationHelper.GetCodeName(txtForumDisplayName.Text.Trim(), 50) + "_group_" + this.CommunityGroupGUID;
        }

        // Check required fields
        string errorMessage = new Validator().NotEmpty(txtForumDisplayName.Text, GetString("Forum_General.EmptyDisplayName")).NotEmpty(codeName, GetString("Forum_General.EmptyCodeName")).Result;

        if (errorMessage == String.Empty && !ValidationHelper.IsCodeName(codeName))
        {
            errorMessage = GetString("general.errorcodenameinidentificatorformat");
        }

        if (errorMessage == "")
        {
            if (CMSContext.CurrentSite != null)
            {
                // If forum with given name already exists show error message
                if (ForumInfoProvider.GetForumInfo(codeName, CMSContext.CurrentSiteID, CommunityGroupID) != null)
                {
                    lblError.Visible = true;
                    lblError.Text    = GetString("Forum_Edit.ForumAlreadyExists");
                    return;
                }

                // Create new object
                ForumInfo forumObj = new ForumInfo();

                // Set new properties
                forumObj.ForumSiteID           = CMSContext.CurrentSite.SiteID;
                forumObj.ForumIsLocked         = chkForumLocked.Checked;
                forumObj.ForumOpen             = chkForumOpen.Checked;
                forumObj.ForumDisplayEmails    = chkForumDisplayEmails.Checked;
                forumObj.ForumDescription      = txtForumDescription.Text.Trim();
                forumObj.ForumRequireEmail     = chkForumRequireEmail.Checked;
                forumObj.ForumDisplayName      = txtForumDisplayName.Text.Trim();
                forumObj.ForumName             = codeName;
                forumObj.ForumGroupID          = this.mGroupId;
                forumObj.ForumModerated        = chkForumModerated.Checked;
                forumObj.ForumAccess           = 40000;
                forumObj.ForumPosts            = 0;
                forumObj.ForumThreads          = 0;
                forumObj.ForumPostsAbsolute    = 0;
                forumObj.ForumThreadsAbsolute  = 0;
                forumObj.ForumOrder            = 0;
                forumObj.ForumUseCAPTCHA       = chkCaptcha.Checked;
                forumObj.ForumCommunityGroupID = CommunityGroupID;

                // For simple display mode skip some properties
                if (DisplayMode != ControlDisplayModeEnum.Simple)
                {
                    forumObj.ForumBaseUrl           = txtBaseUrl.Text.Trim();
                    forumObj.ForumUnsubscriptionUrl = txtUnsubscriptionUrl.Text.Trim();
                    forumObj.ForumHTMLEditor        = chkUseHTML.Checked;

                    if (chkInheritBaseUrl.Checked)
                    {
                        forumObj.ForumBaseUrl = null;
                    }

                    if (chkInheritUnsubscribeUrl.Checked)
                    {
                        forumObj.ForumUnsubscriptionUrl = null;
                    }
                }

                // Clear inherited values
                if (chkInheritUseHTML.Checked)
                {
                    forumObj.SetValue("ForumHTMLEditor", null);
                }

                if (chkInheritForumDisplayEmails.Checked)
                {
                    forumObj.SetValue("ForumDisplayEmails", null);
                }

                if (chkInheritForumRequireEmail.Checked)
                {
                    forumObj.SetValue("ForumRequireEmail", null);
                }

                if (chkInheritCaptcha.Checked)
                {
                    forumObj.SetValue("ForumUseCAPTCHA", null);
                }

                // Check licence
                if (ForumInfoProvider.LicenseVersionCheck(URLHelper.GetCurrentDomain(), FeatureEnum.Forums, VersionActionEnum.Insert))
                {
                    ForumInfoProvider.SetForumInfo(forumObj);
                    this.mForumId = forumObj.ForumID;
                    this.RaiseOnSaved();
                }
                else
                {
                    lblError.Visible = true;
                    lblError.Text    = GetString("LicenseVersionCheck.Forums");
                }
            }
        }
        else
        {
            lblError.Visible = true;
            lblError.Text    = errorMessage;
        }
    }
Esempio n. 11
0
    /// <summary>
    /// Sets data to database.
    /// </summary>
    protected void btnOK_Click(object sender, EventArgs e)
    {
        // Check MODIFY permission for forums
        if (!CheckPermissions("cms.forums", PERMISSION_MODIFY))
        {
            return;
        }

        string codeName = txtForumName.Text.Trim();

        // Get safe code name for simple display mode
        if (DisplayMode == ControlDisplayModeEnum.Simple)
        {
            codeName = ValidationHelper.GetCodeName(txtForumDisplayName.Text.Trim(), 50) + "_group_" + CommunityGroupGUID;
        }

        // Check required fields
        string errorMessage = new Validator().NotEmpty(txtForumDisplayName.Text, GetString("Forum_General.EmptyDisplayName")).NotEmpty(codeName, GetString("Forum_General.EmptyCodeName")).Result;

        if (errorMessage == String.Empty && !ValidationHelper.IsCodeName(codeName))
        {
            errorMessage = GetString("general.errorcodenameinidentifierformat");
        }

        if (String.IsNullOrEmpty(errorMessage))
        {
            if (SiteContext.CurrentSite != null)
            {
                // If forum with given name already exists show error message
                if (ForumInfoProvider.GetForumInfo(codeName, SiteContext.CurrentSiteID, CommunityGroupID) != null)
                {
                    ShowError(GetString("Forum_Edit.ForumAlreadyExists"));
                    return;
                }

                // Set properties to newly created object
                Forum.ForumSiteID   = SiteContext.CurrentSite.SiteID;
                Forum.ForumIsLocked = chkForumLocked.Checked;
                Forum.ForumOpen     = chkForumOpen.Checked;
                chkForumDisplayEmails.SetThreeStateValue(Forum, "ForumDisplayEmails");
                Forum.ForumDescription = txtForumDescription.Text.Trim();
                chkForumRequireEmail.SetThreeStateValue(Forum, "ForumRequireEmail");
                Forum.ForumDisplayName     = txtForumDisplayName.Text.Trim();
                Forum.ForumName            = codeName;
                Forum.ForumGroupID         = mGroupId;
                Forum.ForumModerated       = chkForumModerated.Checked;
                Forum.ForumAccess          = 40000;
                Forum.ForumPosts           = 0;
                Forum.ForumThreads         = 0;
                Forum.ForumPostsAbsolute   = 0;
                Forum.ForumThreadsAbsolute = 0;
                Forum.ForumOrder           = 0;
                chkCaptcha.SetThreeStateValue(Forum, "ForumUseCAPTCHA");
                Forum.ForumCommunityGroupID = CommunityGroupID;

                // For simple display mode skip some properties
                if (DisplayMode != ControlDisplayModeEnum.Simple)
                {
                    Forum.ForumBaseUrl           = txtBaseUrl.Text.Trim();
                    Forum.ForumUnsubscriptionUrl = txtUnsubscriptionUrl.Text.Trim();
                    chkUseHTML.SetThreeStateValue(Forum, "ForumHTMLEditor");

                    if (chkInheritBaseUrl.Checked)
                    {
                        Forum.ForumBaseUrl = null;
                    }

                    if (chkInheritUnsubscribeUrl.Checked)
                    {
                        Forum.ForumUnsubscriptionUrl = null;
                    }
                }

                // Check license
                if (ForumInfoProvider.LicenseVersionCheck(RequestContext.CurrentDomain, FeatureEnum.Forums, ObjectActionEnum.Insert))
                {
                    ForumInfoProvider.SetForumInfo(Forum);
                    mForumId = Forum.ForumID;
                    RaiseOnSaved();
                }
                else
                {
                    ShowError(GetString("LicenseVersionCheck.Forums"));
                }
            }
        }
        else
        {
            ShowError(errorMessage);
        }
    }
Esempio n. 12
0
    /// <summary>
    /// Sets data to database.
    /// </summary>
    protected void btnOK_Click(object sender, EventArgs e)
    {
        // Check MODIFY permission
        if (!CheckPermissions("cms.forums", PERMISSION_MODIFY))
        {
            return;
        }

        // Check required fields
        string errorMessage = new Validator().NotEmpty(txtForumDisplayName.Text, GetString("Forum_General.EmptyDisplayName")).Result;

        if ((errorMessage == String.Empty) && (DisplayMode != ControlDisplayModeEnum.Simple))
        {
            errorMessage = new Validator().NotEmpty(txtForumName.Text, GetString("Forum_General.EmptyCodeName")).IsCodeName(txtForumName.Text.Trim(), GetString("general.errorcodenameinidentifierformat")).Result;
        }

        if (!String.IsNullOrEmpty(errorMessage))
        {
            ShowError(errorMessage);
            return;
        }

        // Forum must be on some site
        if (SiteContext.CurrentSite != null)
        {
            int       communityGroupId = 0;
            ForumInfo fi = ForumInfoProvider.GetForumInfo(mForumId);
            if (fi != null)
            {
                ForumGroupInfo fgi = ForumGroupInfoProvider.GetForumGroupInfo(fi.ForumGroupID);
                if (fgi != null)
                {
                    communityGroupId = fgi.GroupGroupID;
                }
            }

            ForumInfo forumObj = ForumInfoProvider.GetForumInfo(txtForumName.Text.Trim(), SiteContext.CurrentSiteID, communityGroupId);

            // If forum exists
            if ((forumObj == null) || (forumObj.ForumID == mForumId))
            {
                if (forumObj == null)
                {
                    forumObj = ForumInfoProvider.GetForumInfo(mForumId);
                }

                if (forumObj != null)
                {
                    if (txtForumDisplayName.Text.Trim() != forumObj.ForumDisplayName)
                    {
                        // Refresh a breadcrumb if used in the tabs layout
                        ScriptHelper.RefreshTabHeader(Page, txtForumDisplayName.Text);
                    }

                    // Set properties
                    forumObj.ForumIsLocked = chkForumLocked.Checked;
                    forumObj.ForumOpen     = chkForumOpen.Checked;
                    chkForumDisplayEmails.SetThreeStateValue(forumObj, "ForumDisplayEmails");
                    forumObj.ForumDescription = txtForumDescription.Text.Trim();
                    chkForumRequireEmail.SetThreeStateValue(forumObj, "ForumRequireEmail");
                    forumObj.ForumDisplayName = txtForumDisplayName.Text.Trim();
                    chkCaptcha.SetThreeStateValue(forumObj, "ForumUseCAPTCHA");

                    // If display mode is default set other properties
                    if (DisplayMode != ControlDisplayModeEnum.Simple)
                    {
                        chkUseHTML.SetThreeStateValue(forumObj, "ForumHTMLEditor");
                        forumObj.ForumName = txtForumName.Text.Trim();

                        // Base URL
                        if (chkInheritBaseUrl.Checked)
                        {
                            forumObj.SetValue("ForumBaseUrl", null);
                        }
                        else
                        {
                            forumObj.ForumBaseUrl = txtBaseUrl.Text;
                        }

                        // Unsubcription URL
                        if (chkInheritUnsubscribeUrl.Checked)
                        {
                            forumObj.SetValue("ForumUnsubscriptionUrl", null);
                        }
                        else
                        {
                            forumObj.ForumUnsubscriptionUrl = txtUnsubscriptionUrl.Text.Trim();
                        }
                    }

                    // Author can delete own posts
                    chkAuthorDelete.SetThreeStateValue(forumObj, "ForumAuthorDelete");

                    // Author can delete own posts
                    chkAuthorEdit.SetThreeStateValue(forumObj, "ForumAuthorEdit");

                    // Image max side size
                    if (chkInheritMaxSideSize.Checked)
                    {
                        forumObj.SetValue("ForumImageMaxSideSize", null);
                    }
                    else
                    {
                        forumObj.ForumImageMaxSideSize = ValidationHelper.GetInteger(txtImageMaxSideSize.Text, 400);
                    }

                    // Answer limit
                    if (chkInheritIsAnswerLimit.Checked)
                    {
                        forumObj.SetValue("ForumIsAnswerLimit", null);
                    }
                    else
                    {
                        forumObj.ForumIsAnswerLimit = ValidationHelper.GetInteger(txtIsAnswerLimit.Text, 5);
                    }

                    // Forum type
                    if (chkInheritType.Checked)
                    {
                        forumObj.SetValue("ForumType", null);
                    }
                    else
                    {
                        forumObj.ForumType = (radTypeChoose.Checked ? 0 : (radTypeDiscussion.Checked ? 1 : 2));
                    }

                    // Inherited values
                    if (chkInheritBaseUrl.Checked)
                    {
                        forumObj.ForumBaseUrl = null;
                    }

                    if (chkInheritUnsubscribeUrl.Checked)
                    {
                        forumObj.ForumUnsubscriptionUrl = null;
                    }

                    if (chkInheritMaxAttachmentSize.Checked)
                    {
                        forumObj.ForumAttachmentMaxFileSize = -1;
                    }
                    else
                    {
                        forumObj.ForumAttachmentMaxFileSize = ValidationHelper.GetInteger(txtMaxAttachmentSize.Text, 0);
                    }

                    // Double opt-in
                    forumObj.ForumOptInApprovalURL = chkInheritOptInURL.Checked ? null : txtOptInURL.Text.Trim();
                    chkEnableOptIn.SetThreeStateValue(forumObj, "ForumEnableOptIn");
                    chkSendOptInConfirmation.SetThreeStateValue(forumObj, "ForumSendOptInConfirmation");

                    // Only if on-line marketing is available
                    if (plcOnline.Visible)
                    {
                        if (chkInheritLogActivity.Checked)
                        {
                            forumObj.SetValue("ForumLogActivity", null);
                        }
                        else
                        {
                            forumObj.ForumLogActivity = chkLogActivity.Checked;
                        }
                    }


                    #region "Discussion"

                    if (chkInheritDiscussion.Checked)
                    {
                        // Inherited
                        forumObj.SetValue("ForumDiscussionActions", null);
                    }
                    else
                    {
                        // Set discussion properties
                        forumObj.ForumEnableQuote         = chkEnableQuote.Checked;
                        forumObj.ForumEnableFontBold      = chkEnableBold.Checked;
                        forumObj.ForumEnableFontItalics   = chkEnableItalic.Checked;
                        forumObj.ForumEnableFontUnderline = chkEnableUnderline.Checked;
                        forumObj.ForumEnableFontStrike    = chkEnableStrike.Checked;
                        forumObj.ForumEnableFontColor     = chkEnableColor.Checked;
                        forumObj.ForumEnableCodeSnippet   = chkEnableCode.Checked;
                        forumObj.ForumEnableAdvancedImage = radImageAdvanced.Checked;
                        forumObj.ForumEnableAdvancedURL   = radUrlAdvanced.Checked;
                        forumObj.ForumEnableImage         = radImageSimple.Checked;
                        forumObj.ForumEnableURL           = radUrlSimple.Checked;
                    }

                    #endregion


                    ForumInfoProvider.SetForumInfo(forumObj);

                    ReloadData();

                    RaiseOnSaved();

                    ShowChangesSaved();
                }
                else
                {
                    // Forum does not exist
                    ShowError(GetString("Forum_Edit.ForumDoesNotExist"));
                }
            }
            else
            {
                // Forum already exists
                ShowError(GetString("Forum_Edit.ForumAlreadyExists"));
            }
        }
    }
Esempio n. 13
0
    /// <summary>
    /// Creates group forum.
    /// </summary>
    /// <param name="group">Particular group info object</param>
    private void CreateGroupForum(GroupInfo group)
    {
        #region "Create forum group"

        // Get forum group code name
        string forumGroupCodeName = "Forums_group_" + group.GroupGUID;

        // Check if forum group with given name already exists
        if (ForumGroupInfoProvider.GetForumGroupInfo(forumGroupCodeName, SiteContext.CurrentSiteID) != null)
        {
            return;
        }

        // Create forum base URL
        string   baseUrl       = null;
        TreeNode groupDocument = TreeProvider.SelectSingleNode(group.GroupNodeGUID, DocumentContext.CurrentDocumentCulture.CultureCode, SiteContext.CurrentSiteName);
        if (groupDocument != null)
        {
            baseUrl = DocumentURLProvider.GetUrl(groupDocument.NodeAliasPath + "/" + FORUM_DOCUMENT_ALIAS);
        }

        ForumGroupInfo forumGroupObj = new ForumGroupInfo();
        const string   suffix        = " forums";
        forumGroupObj.GroupDisplayName = TextHelper.LimitLength(group.GroupDisplayName, 200 - suffix.Length, string.Empty) + suffix;
        forumGroupObj.GroupName        = forumGroupCodeName;
        forumGroupObj.GroupOrder       = 0;
        forumGroupObj.GroupEnableQuote = true;
        forumGroupObj.GroupGroupID     = group.GroupID;
        forumGroupObj.GroupSiteID      = SiteContext.CurrentSiteID;
        forumGroupObj.GroupBaseUrl     = baseUrl;

        // Additional settings
        forumGroupObj.GroupEnableCodeSnippet   = true;
        forumGroupObj.GroupEnableFontBold      = true;
        forumGroupObj.GroupEnableFontColor     = true;
        forumGroupObj.GroupEnableFontItalics   = true;
        forumGroupObj.GroupEnableFontStrike    = true;
        forumGroupObj.GroupEnableFontUnderline = true;
        forumGroupObj.GroupEnableQuote         = true;
        forumGroupObj.GroupEnableURL           = true;
        forumGroupObj.GroupEnableImage         = true;

        // Set forum group info
        ForumGroupInfoProvider.SetForumGroupInfo(forumGroupObj);

        #endregion


        #region "Create forum"

        string codeName = "General_discussion_group_" + group.GroupGUID;

        // Check if forum with given name already exists
        if (ForumInfoProvider.GetForumInfo(codeName, SiteContext.CurrentSiteID, group.GroupID) != null)
        {
            return;
        }

        // Create new forum object
        ForumInfo forumObj = new ForumInfo();
        forumObj.ForumSiteID          = SiteContext.CurrentSiteID;
        forumObj.ForumIsLocked        = false;
        forumObj.ForumOpen            = true;
        forumObj.ForumDisplayEmails   = false;
        forumObj.ForumRequireEmail    = false;
        forumObj.ForumDisplayName     = "General discussion";
        forumObj.ForumName            = codeName;
        forumObj.ForumGroupID         = forumGroupObj.GroupID;
        forumObj.ForumModerated       = false;
        forumObj.ForumAccess          = 40000;
        forumObj.ForumPosts           = 0;
        forumObj.ForumThreads         = 0;
        forumObj.ForumPostsAbsolute   = 0;
        forumObj.ForumThreadsAbsolute = 0;
        forumObj.ForumOrder           = 0;
        forumObj.ForumUseCAPTCHA      = false;
        forumObj.SetValue("ForumHTMLEditor", null);

        // Set security
        forumObj.AllowAccess       = SecurityAccessEnum.GroupMembers;
        forumObj.AllowAttachFiles  = SecurityAccessEnum.GroupMembers;
        forumObj.AllowMarkAsAnswer = SecurityAccessEnum.GroupMembers;
        forumObj.AllowPost         = SecurityAccessEnum.GroupMembers;
        forumObj.AllowReply        = SecurityAccessEnum.GroupMembers;
        forumObj.AllowSubscribe    = SecurityAccessEnum.GroupMembers;

        if (ForumInfoProvider.LicenseVersionCheck(RequestContext.CurrentDomain, FeatureEnum.Forums, ObjectActionEnum.Insert))
        {
            ForumInfoProvider.SetForumInfo(forumObj);
        }

        #endregion
    }