public ContentHead Post(ContentHead content, [FromUri] int publishNow = 0) { cms.VerifyAuthorizationToEditContent(content.Kind); content.ContentUId = Guid.NewGuid().ToString(); content.CreateDate = DateTime.Now.ToUniversalTime(); content.Data.ContentUId = content.ContentUId; FormatContentTags(content); FormatContentCrossLinks(content); FormatLocation(content); if (content.ContentDate == DateTime.MinValue) { content.ContentDate = DateTime.Now.ToUniversalTime(); } if (publishNow > 0) { DateTime now = DateTime.Now.ToUniversalTime(); content.PublishAfter = new DateTime(now.Year, now.Month, now.Day, now.Hour, 0, 0); } SetCustomInfo(content); log.Log(String.Format(SharedStringsLog.CONTENT_0_CREATION_1, content.Kind, content.Name)); return(cms.SaveContent(content)); }
public ContentHead SaveContent(ContentHead content) { using (var context = new Data.CMSContext()) { ContentHead oldContent = GetContent(content.ContentUId); List <CrossLink> removedLinks = new List <CrossLink>(); List <CrossLink> addedLinks = content.CrossLinks.ToList(); if (oldContent == null) { context.ContentHeads.Add(content); } else { context.ContentHeads.Attach(oldContent); context.Entry <ContentHead>(oldContent).CurrentValues.SetValues(content); context.Entry <ContentData>(oldContent.Data).CurrentValues.SetValues(content.Data); if (oldContent.CustomInfo != null) { context.Entry <ContentCustomInfo>(oldContent.CustomInfo).CurrentValues.SetValues(content.CustomInfo); } } //context.ApplyCollectionValues<CrossLink>(oldContent != null ? oldContent.CrossLinks : null, content.CrossLinks, (t1, t2) => { return t1.PageArea == t2.PageArea; }); ApplyCollectionValuesCrossLinks(oldContent != null ? oldContent.CrossLinks : null, content.CrossLinks); context.ApplyCollectionValues <ContentTag>(oldContent != null ? oldContent.Tags : null, content.Tags, (t1, t2) => { return(t1.Tag == t2.Tag); }); context.SaveChanges(); } return(content); }
private void FormatContentCrossLinks(ContentHead content) { foreach (CrossLink x in content.CrossLinks) { x.ContentUId = content.ContentUId; } }
public ContentHead WithData(string id) { ContentHead head = cms.GetContent(id); cms.VerifyAuthorizationToEditContent(head.Kind); return(head); }
public ContentHead SaveContent(ContentHead content) { ContentHead oldContent = GetContent(content.ContentUId); List <CrossLink> removedLinks = new List <CrossLink>(); List <CrossLink> addedLinks = content.CrossLinks.ToList(); if (oldContent == null) { _context.ContentHeads.Add(content); } else { _context.ContentHeads.Attach(oldContent); _context.Entry <ContentHead>(oldContent).CurrentValues.SetValues(content); _context.Entry <ContentData>(oldContent.Data).CurrentValues.SetValues(content.Data); if (oldContent.CustomInfo != null) { _context.Entry <ContentCustomInfo>(oldContent.CustomInfo).CurrentValues.SetValues(content.CustomInfo); } } ApplyCollectionValuesCrossLinks(oldContent != null ? oldContent.CrossLinks : null, content.CrossLinks); //_context.ApplyCollectionValues<CrossLink>(oldContent != null ? oldContent.CrossLinks : null, content.CrossLinks, (c1, c2) => { return c1.PageArea == c2.PageArea; }); _context.ApplyCollectionValues <ContentTag>(oldContent != null ? oldContent.Tags : null, content.Tags, (t1, t2) => { return(t1.Tag == t2.Tag); }); _context.SaveChanges(); _log.Log($"Content '{content.Name}' ({content.Kind}) was created/updated."); return(content); }
private void FormatLocation(ContentHead content) { content.Name = content.Name.Trim(); content.CanonicalName = cms.CanonicalName(content.Name); if (!content.Location.EndsWith("/")) { content.Location = content.Location + "/"; } content.Location = content.Location.ToLower(); ContentHead contentWithSameUrl = cms.GetContentHeadByUrlAndKind(content.Location + content.CanonicalName, null, false); if (contentWithSameUrl == null || contentWithSameUrl.ContentUId == content.ContentUId) { return; } // if already exists a different content with the same url and browsable, throws an error ContentKind ckind = cms.GetContentKind(content.Kind); if (ckind.Browsable.HasValue && (bool)ckind.Browsable) { content.CanonicalName = MakeCanonicalNameUnique(content); } }
public ContentHead Post([FromBody] ContentHead content, [FromQuery] int publishNow = 0) { this._cmsService.VerifyAuthorizationToEditContent(User, content.Kind); content.ContentUId = Guid.NewGuid().ToString(); content.CreateDate = DateTime.Now.ToUniversalTime(); if (content.Data == null) { content.Data = new ContentData(); } content.Data.ContentUId = content.ContentUId; FormatContentTags(content); FormatContentCrossLinks(content); FormatLocation(content); if (content.ContentDate == DateTime.MinValue) { content.ContentDate = DateTime.Now.ToUniversalTime(); } if (publishNow > 0) { DateTime now = DateTime.Now.ToUniversalTime(); content.PublishAfter = new DateTime(now.Year, now.Month, now.Day, now.Hour, 0, 0); } SetCustomInfo(content); return(this._cmsService.SaveContent(content)); }
public ContentHead Get(string id) { ContentHead head = _cmsService.GetContent(id); _cmsService.VerifyAuthorizationToEditContent(User, head.Kind); return(head); }
public void Put(string id, [FromBody] string area, [FromUri] short changeDisplayOrder) { ContentHead head = cms.GetContentHead(id); cms.VerifyAuthorizationToEditContent(head.Kind); cms.AddCrossLink(id, area, changeDisplayOrderBy: changeDisplayOrder); }
private void SetCustomInfo(ContentHead head) { if (head.CustomInfo == null) { return; } head.CustomInfo.ContentUId = head.ContentUId; }
private void FormatContentTags(ContentHead content) { foreach (ContentTag t in content.Tags) { t.ContentUId = content.ContentUId; t.Tag = t.Tag.ToLower().Trim(); } content.Tags = content.Tags.Distinct().ToArray(); }
public void Delete(string id) { ContentHead head = cms.GetContentHead(id); cms.VerifyAuthorizationToEditContent(head.Kind); cms.RemoveContent(id); log.Log(String.Format(SharedStringsLog.CONTENT_0_REMOVE_1, head.Kind, head.Name)); }
public void Delete(string id, string area) { ContentHead head = cms.GetContentHead(id); cms.VerifyAuthorizationToEditContent(head.Kind); cms.RemoveCrossLink(id, area); log.Log(String.Format(SharedStringsLog.CROSSLINK_0_REMOVE_1, head.Kind, head.Name)); }
public static IHtmlContent ContentsRelatedWithHotestThread(Func<ContentHead, HelperResult> itemTemplate = null, string location = null, string[] kinds = null, ContentRanks rankBy = ContentRanks.PageViews, Periods period = Periods.LastDay, int top = 5, string navigationId = null) { DateTime? lastPublished = DateTime.Now; if (period != Periods.AnyTime) lastPublished = BoxLib.GetLastPublishDate(location, kinds); ContentHead hotContent = BoxLib.GetHotestContent(kinds, location, rankBy, period.StartDate(lastPublished), null); if (hotContent == null) return new HtmlString(""); return ContentsRelated(hotContent.TagsToArray(), itemTemplate, null, null, null, false, top, navigationId); }
public void RemoveContent(string contentUId) { ContentHead content = _context.ContentHeads.SingleOrDefault(c => c.ContentUId == contentUId); if (content == null) { return; } _context.ContentHeads.Remove(content); _context.SaveChanges(); }
private void FormatContentCrossLinks(ContentHead content) { if (content.CrossLinks == null) { content.CrossLinks = new CrossLink[0]; } foreach (CrossLink x in content.CrossLinks) { x.ContentUId = content.ContentUId; } }
/// <summary> /// Gets a BOX content. /// The content data will be parsed at the CONTENT property. /// </summary> /// <param name="contentUId">The content UId</param> /// <returns>The content</returns> public ContentHead GetContent(string contentUId) { ContentHead content = _cmsService.GetContent(contentUId, false); if (content == null) { return(null); } _cmsService.ParseContentData(content); return(content); }
public void RemoveContent(string contentUId) { using (var context = new Data.CMSContext()) { ContentHead content = context.ContentHeads.SingleOrDefault(c => c.ContentUId == contentUId); if (content == null) { return; } context.ContentHeads.Remove(content); context.SaveChanges(); } }
private void FormatContentTags(ContentHead content) { if (content.Tags == null) { content.Tags = new ContentTag[0]; } foreach (ContentTag t in content.Tags) { t.ContentUId = content.ContentUId; t.Tag = t.Tag.Trim(); } content.Tags = content.Tags.Distinct().ToArray(); }
public RedirectResult Preview(string id) { string siteHost = cms.SiteHost; string token = security.GetSignedUserToken(); ContentHead content = cms.GetContentHead(id); if (content == null) { throw new System.Exception("Colud not preview content. Content '" + id + "' not found."); } return(new RedirectResult("http://" + siteHost + content.Location + content.CanonicalName + "?previewToken=" + token)); }
private string MakeCanonicalNameUnique(ContentHead content) { string currentcanonicalname = content.CanonicalName += "-" + content.ContentDate.ToString("dd-MMM-yyyy-HH-mm-ss"); ContentHead contentWithSameUrl = cms.GetContentHeadByUrlAndKind(content.Location + content.CanonicalName, null, false); if (contentWithSameUrl == null || contentWithSameUrl.ContentUId == content.ContentUId) { return(currentcanonicalname); } throw new HttpResponseException(System.Net.HttpStatusCode.Conflict); }
public ContentHead Post(string id, [FromBody] int selectedAlternative) { ContentHead contentHead = cms.GetContent(id); cms.ParseContentData(contentHead); if (selectedAlternative == 1) { contentHead.CONTENT.TotalVotes1 += 1; } if (selectedAlternative == 2) { contentHead.CONTENT.TotalVotes2 += 1; } if (selectedAlternative == 3) { contentHead.CONTENT.TotalVotes3 += 1; } if (selectedAlternative == 4) { contentHead.CONTENT.TotalVotes4 += 1; } if (selectedAlternative == 5) { contentHead.CONTENT.TotalVotes5 += 1; } decimal total = SumOfAlternatives(contentHead.CONTENT); //Calculates percent for all alternatives contentHead.CONTENT.Percent1 = (contentHead.CONTENT.TotalVotes1 / total) * 100; contentHead.CONTENT.Percent2 = (contentHead.CONTENT.TotalVotes2 / total) * 100; contentHead.CONTENT.Percent3 = (contentHead.CONTENT.TotalVotes3 / total) * 100; contentHead.CONTENT.Percent4 = (contentHead.CONTENT.TotalVotes4 / total) * 100; contentHead.CONTENT.Percent5 = (contentHead.CONTENT.TotalVotes5 / total) * 100; contentHead.Data.JSON = contentHead.CONTENT.ToString(); cms.SaveContent(contentHead); //PageviewCount means number of votes SiteService site = new Box.CMS.Services.SiteService(); site.LogPageView(id); return(contentHead); }
public static string ContentTags(ContentHead content) { string str = String.Empty; foreach (ContentTag tag in content.Tags) { str = str + ", " + tag.Tag; } if (str.Length <= 2) { return(str); } return(str.Substring(2)); }
protected override void InitializePage() { base.InitializePage(); string id = UrlData[0]; SiteService site = new Box.CMS.Services.SiteService(); HEAD = site.GetContent(id); if (HEAD == null) { throw new System.Web.HttpException(404, "page not found"); } site.LogPageView(id); CONTENT_URL = Request.Url.Scheme + "://" + Request.Url.Host + (Request.Url.Port != 80?":" + Request.Url.Port:"") + HEAD.Location + HEAD.CanonicalName; CONTENT = HEAD.CONTENT; }
public static string GetContentLink(ContentHead head) { SiteService site = new SiteService(); if (!String.IsNullOrEmpty(head.ExternalLinkUrl)) { return(head.ExternalLinkUrl); } if (site.IgnoreVirtualAppPath) { return(head.Location + head.CanonicalName); } else { return(AppName + head.Location + head.CanonicalName); } }
public ContentHead Put(string id, ContentHead content, [FromUri] int publishNow = 0) { cms.VerifyAuthorizationToEditContent(content.Kind); content.Data.ContentUId = content.ContentUId; FormatContentCrossLinks(content); FormatContentTags(content); FormatLocation(content); if (publishNow > 0) { DateTime now = DateTime.Now.ToUniversalTime(); content.PublishAfter = new DateTime(now.Year, now.Month, now.Day, now.Hour, 0, 0); } SetCustomInfo(content); log.Log(String.Format(SharedStringsLog.CONTENT_0_UPDATE_1, content.Kind, content.Name)); return(cms.SaveContent(content)); }
public ContentHead Post(ContentHead content, [FromUri] int publishNow = 0) { cms.VerifyAuthorizationToEditContent(content.Kind); content.ContentUId = Guid.NewGuid().ToString(); content.CreateDate = DateTime.Now.ToUniversalTime(); content.Data.ContentUId = content.ContentUId; FormatContentTags(content); FormatContentCrossLinks(content); FormatLocation(content); if (content.ContentDate == DateTime.MinValue) content.ContentDate = DateTime.Now.ToUniversalTime(); if (publishNow > 0) { DateTime now = DateTime.Now.ToUniversalTime(); content.PublishAfter = new DateTime(now.Year, now.Month, now.Day, now.Hour, 0, 0); } SetCustomInfo(content); log.Log(String.Format(SharedStringsLog.CONTENT_0_CREATION_1, content.Kind, content.Name)); return cms.SaveContent(content); }
private void SetCustomInfo(ContentHead head) { if (head.CustomInfo == null) return; head.CustomInfo.ContentUId = head.ContentUId; }
private string MakeCanonicalNameUnique(ContentHead content) { string currentcanonicalname = content.CanonicalName += "/" + content.ContentDate.ToString("dd/MMM/yyyy"); ContentHead contentWithSameUrl = cms.GetContentHeadByUrlAndKind(content.Location + content.CanonicalName, null, false); if (contentWithSameUrl == null || contentWithSameUrl.ContentUId == content.ContentUId) return currentcanonicalname; throw new HttpResponseException(System.Net.HttpStatusCode.Conflict); }
private void FormatLocation(ContentHead content) { content.Name = content.Name.Trim(); content.CanonicalName = cms.CanonicalName(content.Name); if (!content.Location.EndsWith("/")) content.Location = content.Location + "/"; content.Location = content.Location.ToLower(); ContentHead contentWithSameUrl = cms.GetContentHeadByUrlAndKind(content.Location + content.CanonicalName, null, false); if (contentWithSameUrl == null || contentWithSameUrl.ContentUId == content.ContentUId) return; // if already exists a different content with the same url and browsable, throws an error ContentKind ckind = cms.GetContentKind(content.Kind); if (ckind.Browsable.HasValue && (bool)ckind.Browsable) content.CanonicalName = MakeCanonicalNameUnique(content); }
private void FormatContentCrossLinks(ContentHead content) { foreach (CrossLink x in content.CrossLinks) x.ContentUId = content.ContentUId; }
public void ParseContentData(ContentHead content) { content.CONTENT = JObject.Parse(content.Data.JSON); }
void context_AuthorizeRequest(object sender, EventArgs e) { System.Web.HttpApplication app = sender as System.Web.HttpApplication; if (app == null) { return; } string fullUrl = BoxLib.RemoveAppNameFromUrl(app.Context.Request.RawUrl); string redirectUrl = null; if (fullUrl.StartsWith("/where-is-my-db.htm")) { return; } // if true, can see not published contents bool canSeeOnlyPublished = GetShowOnlyPublished(app, fullUrl); string url = BoxLib.RemoveAppNameFromUrl(app.Request.FilePath); redirectCache.TryGetValue(url, out redirectUrl); if (redirectUrl == null) { Services.CMSService cms = new Services.CMSService(); ContentHead c = null; try { c = cms.GetContentHeadByUrlAndKind(url, null, canSeeOnlyPublished); } catch (Exception ex) { var SQLexception = Box.Core.Services.SecurityService.GetSqlException(ex); if (SQLexception != null && !Box.Core.Services.SecurityService.IsDebug) { app.Context.Response.Redirect("~/where-is-my-db.htm#" + SQLexception.Number); } else { throw ex; } } if (c == null) { return; } redirectUrl = "~/box_templates/" + c.Kind + "/" + c.ContentUId; // only add at cache published urls if (canSeeOnlyPublished) { redirectCache.TryAdd(url, redirectUrl); } } app.Context.RewritePath(redirectUrl + "?" + app.Context.Request.QueryString); }
public void LogPageShare(ContentHead content, string serverHost, bool logShare = true, bool logComments = false) { string url = serverHost + content.Location + content.CanonicalName; string appDataPath = System.Web.HttpContext.Current.Server.MapPath("~/App_Data"); System.Net.Http.HttpClient wc = new System.Net.Http.HttpClient(); wc.GetAsync("https://graph.facebook.com/?id=" + url) .ContinueWith(task => { if (task.IsFaulted && DebugCMS) { string filePath = appDataPath + "\\logShareError" + DateTime.Now.ToString().Replace("/", ".").Replace(":", ".") + ".txt"; using (StreamWriter sw = System.IO.File.CreateText(filePath)) { sw.WriteLine("https://graph.facebook.com/?id=" + url); sw.WriteLine("Exception: " + task.Exception.Message); if(task.Exception.InnerException!=null) sw.WriteLine("InnerException: " + task.Exception.InnerException.Message); if (task.Exception.InnerException.InnerException != null) sw.WriteLine("InnerException 2: " + task.Exception.InnerException.InnerException.Message); } } if (task.IsFaulted || task.IsCanceled) return; var msg = task.Result; dynamic data = null; if (msg.StatusCode != System.Net.HttpStatusCode.OK) return; string json = msg.Content.ReadAsStringAsync().Result; data = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(json); if (logShare) { if (data.shares == null) UpdateShareCount(content.ContentUId, 0); else UpdateShareCount(content.ContentUId, (long)data.shares); } if (logComments) { if (data.comments == null) UpdateCommentCount(content.ContentUId, 0); else UpdateCommentCount(content.ContentUId, (int)data.comments); } }); }
/* Some enviroments does not supports HTTP VERB PUT * Use this workaround */ public ContentHead UPDATE(string id, ContentHead content, [FromUri] int publishNow = 0) { return(Put(id, content, publishNow)); }
public ContentHead Put(string id, ContentHead content, [FromUri] int publishNow = 0) { cms.VerifyAuthorizationToEditContent(content.Kind); content.Data.ContentUId = content.ContentUId; FormatContentCrossLinks(content); FormatContentTags(content); FormatLocation(content); if (publishNow > 0) { DateTime now = DateTime.Now.ToUniversalTime(); content.PublishAfter = new DateTime(now.Year, now.Month, now.Day, now.Hour, 0, 0); } SetCustomInfo(content); log.Log(String.Format(SharedStringsLog.CONTENT_0_UPDATE_1, content.Kind, content.Name)); return cms.SaveContent(content); }
public ContentHead UPDATE(string id, ContentHead content, [FromUri] int publishNow = 0) { return Put(id, content, publishNow); }
public ContentHead SaveContent(ContentHead content) { using (var context = new Data.CMSContext()) { ContentHead oldContent = GetContent(content.ContentUId); List<CrossLink> removedLinks = new List<CrossLink>(); List<CrossLink> addedLinks = content.CrossLinks.ToList(); if (oldContent == null) { context.ContentHeads.Add(content); } else { context.ContentHeads.Attach(oldContent); context.Entry<ContentHead>(oldContent).CurrentValues.SetValues(content); context.Entry<ContentData>(oldContent.Data).CurrentValues.SetValues(content.Data); if(oldContent.CustomInfo!=null) context.Entry<ContentCustomInfo>(oldContent.CustomInfo).CurrentValues.SetValues(content.CustomInfo); } //context.ApplyCollectionValues<CrossLink>(oldContent != null ? oldContent.CrossLinks : null, content.CrossLinks, (t1, t2) => { return t1.PageArea == t2.PageArea; }); ApplyCollectionValuesCrossLinks(oldContent != null ? oldContent.CrossLinks : null, content.CrossLinks); context.ApplyCollectionValues<ContentTag>(oldContent != null ? oldContent.Tags : null, content.Tags, (t1, t2) => { return t1.Tag == t2.Tag; }); context.SaveChanges(); } return content; }
public async Task LogFBPageShare(ContentHead content, string serverHost, bool logShare = true, bool logComments = false) { string url = serverHost + content.Location + content.CanonicalName; System.Net.Http.HttpClient wc = new System.Net.Http.HttpClient(); var msg = await wc.GetAsync("https://graph.facebook.com/?id=" + url); // if (task.IsFaulted && _cmsService.Settings.CMS_DEBUG) { // string filePath = System.IO.Path.Combine(_cmsService.AppPath, "App_Data/logShareError" + DateTime.Now.ToString().Replace("/", ".").Replace(":", ".") + ".txt"); // using (StreamWriter sw = System.IO.File.CreateText(filePath)) { // sw.WriteLine("https://graph.facebook.com/?id=" + url); // sw.WriteLine("Exception: " + task.Exception.Message); // if(task.Exception.InnerException!=null) // sw.WriteLine("InnerException: " + task.Exception.InnerException.Message); // if (task.Exception.InnerException.InnerException != null) // sw.WriteLine("InnerException 2: " + task.Exception.InnerException.InnerException.Message); // } // } // if (task.IsFaulted || task.IsCanceled) // return; // var msg = task.Result; dynamic data = null; if (msg.StatusCode != System.Net.HttpStatusCode.OK) { if (_cmsService.Settings.CMS_DEBUG) { string filePath = System.IO.Path.Combine(_cmsService.AppPath, "App_Data/logShareError" + DateTime.Now.ToString().Replace("/", ".").Replace(":", ".") + ".txt"); using (StreamWriter sw = System.IO.File.CreateText(filePath)) { sw.WriteLine("https://graph.facebook.com/?id=" + url); sw.WriteLine("ERROR CODE: " + msg.StatusCode); sw.WriteLine("ERROR: " + await msg.Content.ReadAsStringAsync()); } } return; } string json = msg.Content.ReadAsStringAsync().Result; data = Newtonsoft.Json.JsonConvert.DeserializeObject <dynamic>(json); if (logShare) { if (data.shares == null) { UpdateShareCount(content.ContentUId, 0); } else { UpdateShareCount(content.ContentUId, (long)data.shares); } } if (logComments) { if (data.comments == null) { UpdateCommentCount(content.ContentUId, 0); } else { UpdateCommentCount(content.ContentUId, (int)data.comments); } } }