예제 #1
0
        public void Initialize()
        {
            _utilities =
                Telligent.Evolution.Extensibility.Version1.PluginManager.GetSingleton <IThemeUtilities>();

            if (_utilities == null || !_utilities.EnableThemePageControls)
            {
                return;
            }

            ContentFragmentPageService           = Services.Get <IContentFragmentPageService>();
            ContentFragmentScopedPropertyService = Services.Get <IContentFragmentScopedPropertyService>();
            ThemeTypeService        = Services.Get <IThemeTypeService>();
            _userThemeTypeId        = CSContext.Current.SiteSettings.UserThemeTypeID;
            _siteThemeTypeId        = SiteThemeContext.Instance().ThemeTypeID;
            _groupThemeTypeId       = CSContext.Current.SiteSettings.GroupThemeTypeID;
            _blogThemeTypeId        = CSContext.Current.SiteSettings.BlogThemeTypeID;
            _themeContextId         = Guid.Empty;
            _siteThemeName          = CSContext.Current.SiteTheme;
            _themeConfigurationData = ThemeConfigurationDatas.GetThemeConfigurationData(_siteThemeTypeId,
                                                                                        _themeContextId,
                                                                                        _siteThemeName, false);
            _themeFileFolders = new List <string>
            {
                Constants.ThemeStylesheetFiles,
                Constants.ThemePrintStylesheetFiles,
                Constants.ThemeJavascriptFiles,
                Constants.ThemeGeneralFiles
            };
        }
예제 #2
0
        internal void RevertFiles()
        {
            List <ThemeFileInfo>   themeFileInfoList = ThemeFileInfos.ToList();
            ThemeConfigurationData configuration     =
                ThemeConfigurationDatas.GetFactoryDefaultThemeConfigurationData(_siteThemeTypeId, _siteThemeName);

            themeFileInfoList.ForEach(info =>
            {
                if (info.HasConfiguredVersion)
                {
                    ThemeFiles.DeleteFile(info.ThemeFile.ThemeTypeID,
                                          info.ThemeFile.ThemeContextID, info.ThemeFile.ThemeName,
                                          info.ThemeFile.PropertyName, info.ThemeFile.FileName);

                    return;
                }

                if (info.HasDeletedConfiguredVersion)
                {
                    IEnumerable <ThemeFile> themeFiles = ThemeFiles.DeserializeThemeFiles(configuration,
                                                                                          info.ThemeFile.PropertyName,
                                                                                          configuration.GetCustomValue(info.ThemeFile.PropertyName, String.Empty));
                    ThemeFile themeFile =
                        themeFiles.FirstOrDefault(
                            t =>
                            String.Compare(t.FileName, info.ThemeFile.FileName,
                                           StringComparison.OrdinalIgnoreCase) == 0);

                    if (themeFile != null)
                    {
                        IList <ThemeFile> list = ThemeFiles.DeserializeThemeFiles(_siteThemeTypeId,
                                                                                  _themeContextId, _siteThemeName, info.ThemeFile.PropertyName,
                                                                                  _themeConfigurationData.GetCustomValue(
                                                                                      info.ThemeFile.PropertyName, String.Empty));

                        list.Add(themeFile);

                        string value = ThemeFiles.SerializeThemeFiles(list);

                        _themeConfigurationData.SetCustomValue(
                            info.ThemeFile.PropertyName, value);

                        ThemeConfigurationDatas.Update(_themeConfigurationData);
                    }
                }
            });
        }
예제 #3
0
        internal void RevertConfiguration()
        {
            ThemeConfigurationData themeConfigurationData = ThemeConfigurationDatas.GetThemeConfigurationData(_siteThemeTypeId,
                                                                                                              _themeContextId, _siteThemeName, false);

            if (themeConfigurationData == null)
            {
                return;
            }

            PropertyGroup[] propertyGroups = themeConfigurationData.PropertyGroups;

            foreach (
                Property current in
                propertyGroups.SelectMany(
                    propertyGroup =>
                    propertyGroup.GetAllProperties()
                    .Where(current => !_themeFileFolders.Contains(current.ID))))
            {
                themeConfigurationData.ClearValue(current);
            }

            themeConfigurationData.Commit();
        }