public static JsonResponse SavePost(
string id,
string content,
string title,
string desc,
string slug,
string tags,
string author,
bool isPublished,
bool hasCommentsEnabled,
string cats,
string date,
string time)
{
if (!WebUtils.CheckRightsForAdminPostPages(false)) { return null; }
var response = new JsonResponse { Success = false };
var settings = BlogSettings.Instance;
if (string.IsNullOrEmpty(id) && !Security.IsAuthorizedTo(Rights.CreateNewPosts))
{
response.Message = "Not authorized to create new Posts.";
return response;
}
try
{
var post = string.IsNullOrEmpty(id) ? new BlogEngine.Core.Post() : BlogEngine.Core.Post.GetPost(new Guid(id));
if (post == null)
{
response.Message = "Post to Edit was not found.";
return response;
}
else if (!string.IsNullOrEmpty(id) && !post.CanUserEdit)
{
response.Message = "Not authorized to edit this Post.";
return response;
}
bool isSwitchingToPublished = isPublished && (post.New || !post.IsPublished);
if (isSwitchingToPublished)
{
if (!post.CanPublish(author))
{
response.Message = "Not authorized to publish this Post.";
return response;
}
}
if (string.IsNullOrEmpty(content))
{
content = "[No text]";
}
post.Author = author;
post.Title = title;
post.Content = content;
post.Description = desc;
if (!string.IsNullOrEmpty(slug))
{
post.Slug = Utils.RemoveIllegalCharacters(slug.Trim());
}
post.DateCreated =
DateTime.ParseExact(date + " " + time, "yyyy-MM-dd HH\\:mm", null).AddHours(
-BlogSettings.Instance.Timezone);
post.IsPublished = isPublished;
post.HasCommentsEnabled = hasCommentsEnabled;
post.Tags.Clear();
if (tags.Trim().Length > 0)
{
var vtags = tags.Trim().Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries);
foreach (var tag in
vtags.Where(tag => string.IsNullOrEmpty(post.Tags.Find(t => t.Equals(tag.Trim(), StringComparison.OrdinalIgnoreCase)))))
{
post.Tags.Add(tag.Trim());
}
}
post.Categories.Clear();
if (cats.Trim().Length > 0)
{
var vcats = cats.Trim().Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries);
foreach (var cat in vcats)
{
post.Categories.Add(Category.GetCategory(new Guid(cat)));
}
}
post.Save();
// If this is an unpublished post and the user does not have rights to
// view unpublished posts, then redirect to the Posts list.
if (post.IsVisible)
response.Data = post.RelativeLink;
else
response.Data = string.Format("{0}admin/Posts/Posts.aspx", Utils.RelativeWebRoot);
HttpContext.Current.Session.Remove("content");
HttpContext.Current.Session.Remove("title");
HttpContext.Current.Session.Remove("description");
HttpContext.Current.Session.Remove("slug");
HttpContext.Current.Session.Remove("tags");
}
catch (Exception ex)
{
Utils.Log(string.Format("Admin.AjaxHelper.SavePost(): {0}", ex.Message));
response.Message = string.Format("Could not save post: {0}", ex.Message);
return response;
}
response.Success = true;
response.Message = "Post saved";
return response;
}