public ActionResult AddSnippet(string name, bool ismobile) { var handler = new ThemeHandler(MASTERdomain, ismobile); var dirs = handler.GetThemeDirectory().GetDirectories("snippets"); if (dirs.Length == 0) { return(new EmptyResult()); } // try to get existing template // if none exist then create blank file var filename = string.Format("{0}.liquid", name); var dest = Path.Combine(dirs[0].FullName, filename); // if destination file exist, then delete destination file if (System.IO.File.Exists(dest)) { System.IO.File.Delete(dest); } System.IO.File.Create(dest).Dispose(); var viewmodel = new LiquidFileContent(handler.GetThemeUrl(), string.Format("/snippets/{0}", filename)); return(View("filecontent", viewmodel)); }
public ActionResult AddAsset(string qqfile, bool ismobile) { Stream inputStream; if (Request.Files.Count != 0) { inputStream = Request.Files[0].InputStream; } else { inputStream = Request.InputStream; } inputStream.Position = 0; var handler = new ThemeHandler(MASTERdomain, ismobile); var dirs = handler.GetThemeDirectory().GetDirectories("assets"); if (dirs.Length == 0) { return(Json("Theme directory corrupted. Please select theme from gallery again.".ToJsonFail())); } // try to get existing template // if none exist then create blank file var filename = qqfile; var dest = Path.Combine(dirs[0].FullName, filename); // if destination file exist, then delete destination file if (System.IO.File.Exists(dest)) { System.IO.File.Delete(dest); } using (Stream file = System.IO.File.OpenWrite(dest)) { Utility.CopyStream(inputStream, file); } return(Json("File uploaded successfully".ToJsonOKMessage())); }
public ActionResult Editor(bool ismobile) { // check that there are theme files, otherwise copy var handler = new ThemeHandler(MASTERdomain, ismobile); if (!handler.IsCustom && !handler.ThemeCopiedOK()) { DirectoryInfo sourceThemeDir = ismobile ? handler.GetMobileThemeRepositorySourceDir() : handler.GetThemeRepositorySourceDir(); if (sourceThemeDir == null) { throw new NotImplementedException(); } handler.CopyThemeToUserThemeDirectory(sourceThemeDir); } var viewmodel = new ThemeEditorViewModel() { themeType = ismobile ? ThemeType.MOBILE : ThemeType.MAIN }; var themedir = handler.GetThemeDirectory(); foreach (var dir in themedir.GetDirectories().OrderByDescending(x => x.Name)) { var folder = new ThemeDirectory() { foldername = dir.Name }; switch (dir.Name) { case "templates": viewmodel.templates_folder = folder; break; case "assets": viewmodel.asset_folder = folder; break; case "snippets": viewmodel.snippets_folder = folder; break; case "layout": viewmodel.layout_folder = folder; break; case "config": viewmodel.config_folder = folder; break; default: throw new ArgumentException("Unknown directory " + dir.Name); } foreach (var entry in dir.GetFiles()) { var ext = entry.Extension.ToLower(); var file = new ThemeFile(); file.classname = string.Format("ext_{0}", ext.Substring(1)); file.url = string.Format("/{0}/{1}", dir.Name, entry.Name); file.filename = entry.Name; folder.files.Add(file); } } return(View(viewmodel)); }