Example #1
0
        public ActionResult MobileReset()
        {
            var handler = new ThemeHandler(MASTERdomain, true);
            var source  = handler.GetMobileThemeRepositorySourceDir();

            handler.CopyThemeToUserThemeDirectory(source);

            return(Json("Mobile theme has been reset".ToJsonOKMessage()));
        }
Example #2
0
        public ActionResult InstallMobileTheme()
        {
            foreach (var sd in db.MASTERsubdomains)
            {
                var handler = new ThemeHandler(sd, true);
                var source  = handler.GetMobileThemeRepositorySourceDir();

                handler.CopyThemeToUserThemeDirectory(source);
            }

            return(Content("done"));
        }
Example #3
0
        public ActionResult Current(string name)
        {
            const string  rootdir  = GeneralConstants.APP_ROOT_DIR + Themepath;
            var           dir      = new DirectoryInfo(rootdir);
            DirectoryInfo selected = null;

            foreach (var themedir in dir.GetDirectories())
            {
                if (themedir.Name == name)
                {
                    selected = themedir;
                    break;
                }
            }

            if (selected == null)
            {
                return(RedirectToAction("Index", "error", new { Area = "" }));
            }

            try
            {
                var handler = new ThemeHandler(MASTERdomain, false);
                handler.CopyThemeToUserThemeDirectory(selected);
            }
            catch (Exception ex)
            {
                Syslog.Write(ex);
                return(RedirectToAction("Index", "error", new { Area = "" }));
            }

            // save theme
            var theme = MASTERdomain.theme;

            if (theme == null)
            {
                theme = new theme();
                MASTERdomain.theme = theme;
            }

            theme.title   = name;
            theme.url     = string.Format("{0}/{1}/thumb.jpg", Themepath, selected.Name);
            theme.created = DateTime.UtcNow;

            repository.Save();

            // need to invalidate any cached liquid assets
            CacheHelper.Instance.invalidate_dependency(DependencyType.liquid_assets, MASTERdomain.uniqueid);

            return(RedirectToAction("Index"));
        }
Example #4
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));
        }