Beispiel #1
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));
        }