public ActionResult Index() { var model = new PageTemplatesIndexViewModel(); model.SelectedTemplate = settingService.Get <string>(SettingField.Theme); var viewDirectory = Server.MapPath("~/Views"); foreach (var directory in Directory.GetDirectories(viewDirectory)) { var name = directory.Substring(directory.LastIndexOf('\\') + 1); if (name == "Shared") { continue; } var thumbUrl = Url.Content("~/Content/Themes/" + name + "/screenshot.png"); if (!System.IO.File.Exists(Server.MapPath(thumbUrl))) { try { ScreenshotHelper.GenerateScreenshot( Url.Action("Index", "Home", new { area = "" }, Request.Url.Scheme) + "?theme=" + name, Server.MapPath(thumbUrl)); } catch { // Unable to generate screenshot. No big deal } } thumbUrl += "?seed=" + new Random().Next(); model.Templates.Add(new PageTemplateIndexViewModel { Name = name, Thumbnail = thumbUrl }); } return(View(model)); }
public ActionResult Create(string name, HttpPostedFileBase file) { if (name.Contains(".") || name.Contains("/") || name.Contains("\\") || file == null || file.ContentLength <= 0) { return(null); } var importDir = Server.MapPath("~/Import"); var zipFile = Path.Combine(importDir, "Template_" + name + "_" + DateTime.Now.ToString("yyyyMMddTHHmmss") + ".zip"); file.SaveAs(zipFile); var viewsDir = Path.Combine(Server.MapPath("~/Views"), name); if (!Directory.Exists(viewsDir)) { Directory.CreateDirectory(viewsDir); } var contentDir = Path.Combine(Server.MapPath("~/Content/Themes"), name); if (!Directory.Exists(contentDir)) { Directory.CreateDirectory(contentDir); } using (var zip = ZipFile.Read(zipFile)) { foreach (var zipEntry in zip.Entries) { string fileName; string targetPath; if (zipEntry.FileName.StartsWith("Views/")) { fileName = zipEntry.FileName.Replace("Views/", ""); targetPath = Path.Combine(viewsDir, fileName); } else if (zipEntry.FileName.StartsWith("Content/")) { fileName = zipEntry.FileName.Replace("Content/", ""); targetPath = Path.Combine(contentDir, fileName); } else { continue; } if (string.IsNullOrWhiteSpace(fileName)) { continue; } if (zipEntry.IsDirectory) { if (!Directory.Exists(targetPath)) { Directory.CreateDirectory(targetPath); } } else { using (var outfile = System.IO.File.OpenWrite(targetPath)) { zipEntry.Extract(outfile); } } } } try { var thumbUrl = Url.Content("~/Content/Themes/" + name + "/screenshot.png"); ScreenshotHelper.GenerateScreenshot( Url.Action("Index", "Home", new { area = "" }, Request.Url.Scheme) + "?theme=" + name, Server.MapPath(thumbUrl)); } catch { // Unable to generate screenshot. No big deal } refreshBundles(); return(RedirectToAction("Index").WithSuccess("The template has been uploaded successfully".TA())); }