Example #1
0
        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));
        }
Example #2
0
        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()));
        }
Example #3
0
        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));
        }