/// <summary> /// This should only run after the Post exists in the data store. /// </summary> /// <returns>The newly created ContentItemID from the data store.</returns> /// <remarks>This is for the first question in the thread. Not for replies or items with ParentID > 0.</remarks> internal ContentItem CreateContentItem(AlbumInfo objPost, int tabId) { var typeController = new ContentTypeController(); var colContentTypes = (from t in typeController.GetContentTypes() where t.ContentType == Constants.ContentTypeName select t); int contentTypeID; if (colContentTypes.Count() > 0) { var contentType = colContentTypes.Single(); contentTypeID = contentType == null?CreateContentType() : contentType.ContentTypeId; } else { contentTypeID = CreateContentType(); } var objContent = new ContentItem { Content = objPost.Body, ContentTypeId = contentTypeID, Indexed = false, ContentKey = "view=" + Constants.PageScope.Question.ToString().ToLower() + "&id=" + objPost.PostId, ModuleID = objPost.ModuleID, TabID = tabId }; objContent.ContentItemId = Util.GetContentController().AddContentItem(objContent); // Add Terms var cntTerm = new TermDnnController(); cntTerm.ManageQuestionTerms(objPost, objContent); return(objContent); }
/// <summary> /// Add New album /// 1 add tag /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void View_AddNewAlbum(object sender, Args.AlbumEventArgs <Entities.AlbumInfo, string> e) { //Insert new Album to DataBase string[] tags = e.Tags.Split(new[] { ',' }); if (tags.Length < 2) { DotNetNuke.UI.Skins.Skin.AddModuleMessage(sender as UserControl, LocalizeString("RequiredTagInput"), ModuleMessage.ModuleMessageType.RedError); return; } var userEnteredTerms = e.Tags.Split(',') .Where(s => s != string.Empty) .Select(p => p.Trim()) .Distinct().ToList(); foreach (var s in userEnteredTerms) { if (!UtilsGB.ContainsSpecialCharacter(s)) { continue; } var msg = Localization.GetString("UnAllowedCharacters", LocalResourceFile); msg = msg.Replace("{0}", Constants.DisallowedCharacters); DotNetNuke.UI.Skins.Skin.AddModuleMessage(sender as UserControl, msg, ModuleMessage.ModuleMessageType.RedError); return; } try { //add news term to vocabularyid var terms = new List <Term>(); userEnteredTerms.ForEach(t => terms.Add(TermDnnController.CreateAndReturnTerm(t, VocabularyId))); e.AlbumInfo.Terms = terms; AlbumController album = new AlbumController(); album.AddAlbum(e.AlbumInfo, ModuleContext.TabId); DotNetNuke.UI.Skins.Skin.AddModuleMessage(sender as UserControl, LocalizeString("SaveSuccess"), ModuleMessage.ModuleMessageType.GreenSuccess); }catch (Exception ex) { ProcessModuleLoadException(ex); DotNetNuke.UI.Skins.Skin.AddModuleMessage(sender as UserControl, LocalizeString("SaveError"), ModuleMessage.ModuleMessageType.RedError); } }
/// <summary> /// This is used to update the content in the ContentItems table. Should be called when a question is updated. /// </summary> internal void UpdateContentItem(AlbumInfo objPost, int tabId) { var objContent = Util.GetContentController().GetContentItem(objPost.ContentItemId); if (objContent == null) { return; } objContent.Content = objPost.Body; objContent.TabID = tabId; objContent.ContentKey = "view=" + Constants.PageScope.Question.ToString().ToLower() + "&id=" + objPost.PostId; Util.GetContentController().UpdateContentItem(objContent); // Update Terms var cntTerm = new TermDnnController(); cntTerm.ManageQuestionTerms(objPost, objContent); }
/// <summary> /// This removes a content item associated with a question/thread from the data store. Should run every time an entire thread is deleted. /// </summary> /// <param name="contentItemID"></param> internal void DeleteContentItem(int contentItemID) { if (contentItemID <= Null.NullInteger) { return; } var objContent = Util.GetContentController().GetContentItem(contentItemID); if (objContent == null) { return; } // remove any metadata/terms associated first (perhaps we should just rely on ContentItem cascade delete here?) var cntTerms = new TermDnnController(); cntTerms.RemoveQuestionTerms(objContent); Util.GetContentController().DeleteContentItem(objContent); }