/// <summary> /// Sends the notifications. /// </summary> /// <param name="uow">The Unit Of Work.</param> /// <param name="topic">The topic.</param> /// <param name="name">The name.</param> /// <param name="email">The email.</param> /// <param name="comment">The comment.</param> /// <param name="ipaddress">The IP Address.</param> public static void SendNotifications( UnitOfWork uow, Topic topic, string name, string email, string comment, string ipaddress) { if (topic != null) { List<string> lstEmailsAddresses = new TopicBO(uow).GetNotificationEmails(topic); if (lstEmailsAddresses.Count > 0) { DotNetNuke.Entities.Portals.PortalSettings objPortalSettings = DotNetNuke.Entities.Portals.PortalController.GetCurrentPortalSettings(); string strResourceFile = Globals.ApplicationPath + "/DesktopModules/Wiki/Views/" + Localization.LocalResourceDirectory + "/" + Localization.LocalSharedResourceFile; string strSubject = Localization.GetString("NotificationSubject", strResourceFile); string strBody = Localization.GetString("NotificationBody", strResourceFile); string redirectUrl = DotNetNuke.Common.Globals.NavigateURL(objPortalSettings.ActiveTab.TabID, objPortalSettings, string.Empty, "topic=" + WikiMarkup.EncodeTitle(topic.Name)); strBody = strBody.Replace("[URL]", redirectUrl); strBody = strBody.Replace("[NAME]", name); strBody = strBody.Replace("[EMAIL]", email); strBody = strBody.Replace("[COMMENT]", comment); strBody = strBody.Replace("[IP]", string.Empty); System.Text.StringBuilder usersToEmailSB = new System.Text.StringBuilder(); foreach (string userToEmail in lstEmailsAddresses) { usersToEmailSB.Append(userToEmail); usersToEmailSB.Append(";"); } // remove the last ; usersToEmailSB.Remove(usersToEmailSB.Length - 1, 1); // Services.Mail.Mail.SendMail(objPortalSettings.Email, objPortalSettings.Email, //// sbUsersToEmail.ToString, strSubject, strBody, "", "", "", "", "", "") Mail.SendMail( objPortalSettings.Email, usersToEmailSB.ToString(), string.Empty, string.Empty, MailPriority.Normal, strSubject, MailFormat.Html, Encoding.UTF8, strBody, string.Empty, Host.SMTPServer, Host.SMTPAuthentication, Host.SMTPUsername, Host.SMTPPassword, Host.EnableSMTPSSL); } } }
/// <summary> /// Saves the topic. /// </summary> /// <param name="content">The content.</param> /// <param name="allowDiscuss">if set to <c>true</c> [allow discuss].</param> /// <param name="allowRating">if set to <c>true</c> [allow rating].</param> /// <param name="title">The title.</param> /// <param name="description">The description.</param> /// <param name="keywords">The keywords.</param> /// <param name="out_crudOperation">The crud operation performed, only update or /// insert</param> protected void SaveTopic( string content, bool allowDiscuss, bool allowRating, string title, string description, string keywords, out SharedEnum.CrudOperation out_crudOperation) { TopicHistory topicHistory = new TopicHistory(); topicHistory.TabID = this.TabId; topicHistory.PortalSettings = this.PortalSettings; if (this.mTopicObject.TopicID != 0) { if (!content.Equals(this.mTopicObject.Content) | !title.Equals(this.mTopicObject.Title) | !description.Equals(this.mTopicObject.Description) | !keywords.Equals(this.mTopicObject.Keywords)) { topicHistory.Name = this.mTopicObject.Name; topicHistory.TopicId = this.mTopicObject.TopicID; topicHistory.Content = this.mTopicObject.Content; topicHistory.UpdatedBy = this.mTopicObject.UpdatedBy; topicHistory.UpdateDate = DateTime.Now; topicHistory.UpdatedByUserID = this.mTopicObject.UpdatedByUserID; topicHistory.Title = this.mTopicObject.Title; topicHistory.Description = this.mTopicObject.Description; topicHistory.Keywords = this.mTopicObject.Keywords; this.mTopicObject.UpdateDate = DateTime.Now; if (UserInfo.UserID == -1) { this.mTopicObject.UpdatedBy = Localization.GetString("Anonymous", this.RouterResourceFile); } else { this.mTopicObject.UpdatedBy = UserInfo.Username; } this.mTopicObject.UpdatedByUserID = this.UserId; this.mTopicObject.Content = content; this.mTopicObject.Title = title; this.mTopicObject.Description = description; this.mTopicObject.Keywords = keywords; this.TopicHistoryBo.Add(topicHistory); } this.mTopicObject.Name = this.mPageTopicValue; this.mTopicObject.Title = title; this.mTopicObject.Description = description; this.mTopicObject.Keywords = keywords; this.mTopicObject.AllowDiscussions = allowDiscuss; this.mTopicObject.AllowRatings = allowRating; this.mTopicObject.Content = content; this.TopicBo.Update(this.mTopicObject); out_crudOperation = SharedEnum.CrudOperation.Update; } else { this.mTopicObject = new Topic(); this.mTopicObject.TabID = this.TabId; this.mTopicObject.PortalSettings = this.PortalSettings; this.mTopicObject.Content = content; this.mTopicObject.Name = this.mPageTopicValue; this.mTopicObject.ModuleId = this.ModuleId; if (UserInfo.UserID == -1) { this.mTopicObject.UpdatedBy = Localization.GetString("Anonymous", this.RouterResourceFile); } else { this.mTopicObject.UpdatedBy = UserInfo.Username; } this.mTopicObject.UpdatedByUserID = this.UserId; this.mTopicObject.UpdateDate = DateTime.Now; this.mTopicObject.AllowDiscussions = allowDiscuss; this.mTopicObject.AllowRatings = allowRating; this.mTopicObject.Title = title; this.mTopicObject.Description = description; this.mTopicObject.Keywords = keywords; this.mTopicObject = this.TopicBo.Add(this.mTopicObject); this.mTopicIdValue = this.mTopicObject.TopicID; out_crudOperation = SharedEnum.CrudOperation.Insert; } }
/// <summary> /// Loads the topic. /// </summary> protected void LoadTopic() { this.mTopicObject = this.TopicBo.GetByNameForModule(this.ModuleId, this.mPageTopicValue); if (this.mTopicObject == null) { this.mTopicObject = new Topic(); this.mTopicObject.TopicID = 0; } this.mTopicObject.TabID = this.TabId; this.mTopicObject.PortalSettings = this.PortalSettings; this.mTopicIdValue = this.mTopicObject.TopicID; }
/// <summary> /// Creates the table. /// </summary> /// <param name="topicCollection">The topic collection.</param> /// <returns>html for the topics</returns> protected string CreateTable(List<Topic> topicCollection) { System.Text.StringBuilder tableHTML = new System.Text.StringBuilder("<table><tr><th>"); tableHTML.Append(Localization.GetString("BaseCreateTableTopic", this.RouterResourceFile)); tableHTML.Append("</th><th>"); tableHTML.Append(Localization.GetString("BaseCreateTableModBy", this.RouterResourceFile)); tableHTML.Append("</th><th>"); tableHTML.Append(Localization.GetString("BaseCreateTableModDate", this.RouterResourceFile)); tableHTML.Append("</th></tr>"); //// Dim TopicTable As String Topic localTopic = new Topic(); int i = 0; if (topicCollection != null && topicCollection.Any()) { for (i = 0; i <= topicCollection.Count - 1; i++) { localTopic = (Topic)topicCollection[i]; localTopic.TabID = this.TabId; localTopic.PortalSettings = this.PortalSettings; string nameToUse = string.Empty; if (!string.IsNullOrWhiteSpace(localTopic.Title)) { nameToUse = localTopic.Title.Replace(WikiModuleBase.WikiHomeName, "Home"); } else { nameToUse = localTopic.Name.Replace(WikiHomeName, "Home"); } tableHTML.Append("<tr>"); tableHTML.Append("<td><a class=\"CommandButton\" href=\""); tableHTML.Append(DotNetNuke.Common.Globals.NavigateURL(this.TabId, this.PortalSettings, string.Empty, "topic=" + WikiMarkup.EncodeTitle(localTopic.Name))); tableHTML.Append("\">"); tableHTML.Append(nameToUse); tableHTML.Append("</a></td>"); tableHTML.Append("<td class=\"Normal\">"); tableHTML.Append(localTopic.UpdatedByUsername); tableHTML.Append("</td>"); tableHTML.Append("<td class=\"Normal\">"); tableHTML.Append(localTopic.UpdateDate.ToString(CultureInfo.CurrentCulture)); tableHTML.Append("</td>"); tableHTML.Append("</tr>"); } } else { tableHTML.Append("<tr><td colspan=3 class=\"Normal\">"); tableHTML.Append(Localization.GetString("BaseCreateTableNoResults", this.RouterResourceFile)); tableHTML.Append("</td></tr>"); } tableHTML.Append("</table>"); return tableHTML.ToString(); }
/// <summary> /// Imports the module. /// </summary> /// <param name="moduleID">The module unique identifier.</param> /// <param name="content">The content.</param> /// <param name="version">The version.</param> /// <param name="userID">The user unique identifier.</param> public void ImportModule(int moduleID, string content, string version, int userID) { using (UnitOfWork uow = new UnitOfWork()) { XmlNode node = null; XmlNode nodes = Globals.GetContent(content, "Wiki"); ModuleController objModules = new ModuleController(); foreach (XmlNode node_loopVariable in nodes.SelectSingleNode("Settings")) { node = node_loopVariable; objModules.UpdateModuleSetting(moduleID, node.Attributes["Name"].Value, node.Attributes["Value"].Value); } TopicBO topicBo = new TopicBO(uow); // clean up var topics = topicBo.GetAllByModuleID(moduleID); foreach (var topic in topics) { // TODO - On the old version topics where deleted via the SPROC // [Wiki_TopicDelete], it should be dropped in this new version topicBo.Delete(new Topic { TopicID = topic.TopicID }); } try { foreach (XmlNode node_loopVariable in nodes.SelectNodes("Topics/Topic")) { node = node_loopVariable; var topic = new Topic(); topic.PortalSettings = PortalController.GetCurrentPortalSettings(); topic.AllowDiscussions = bool.Parse(node.Attributes["AllowDiscussions"].Value); topic.AllowRatings = bool.Parse(node.Attributes["AllowRatings"].Value); topic.Content = node.Attributes["Content"].Value; topic.Description = node.Attributes["Description"].Value; topic.Keywords = node.Attributes["Keywords"].Value; topic.ModuleId = moduleID; //// Here we need to define the TabID otherwise the import won't work until //// the content is saved again. ModuleController mc = new ModuleController(); ModuleInfo mi = mc.GetModule(moduleID, -1); topic.TabID = mi.TabID; topic.Name = node.Attributes["Name"].Value; topic.RatingOneCount = 0; topic.RatingTwoCount = 0; topic.RatingThreeCount = 0; topic.RatingFourCount = 0; topic.RatingFiveCount = 0; topic.RatingSixCount = 0; topic.RatingSevenCount = 0; topic.RatingEightCount = 0; topic.RatingNineCount = 0; topic.RatingTenCount = 0; topic.Title = node.Attributes["Title"].Value; topic.UpdateDate = DateTime.Parse(node.Attributes["UpdateDate"].Value); topic.UpdatedBy = node.Attributes["UpdatedBy"].Value; topic.UpdatedByUserID = int.Parse(node.Attributes["UpdatedByUserID"].Value); topicBo.Add(topic); } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); } } }