コード例 #1
0
        private void InstallJavaScriptFiles(string assemblyName, IEnumerable <string> resourceNames)
        {
            var jsFiles = GetJavaScriptFiles(assemblyName, resourceNames);

            foreach (var theme in Themes.List(ThemeTypes.Site))
            {
                var supportedTheme = SupportedThemes.Get(theme.Id);
                if (supportedTheme == null)
                {
                    continue;
                }

                var themeName = supportedTheme.Name;
                foreach (var jsFile in jsFiles.ToList())
                {
                    using (var stream = EmbeddedResources.GetStream(jsFile.Path))
                    {
                        if (theme.IsConfigurationBased)
                        {
                            ThemeFiles.AddUpdateFactoryDefault(theme, ThemeProperties.JavascriptFiles, jsFile.Name, stream, (int)stream.Length);
                            stream.Seek(0, SeekOrigin.Begin);
                        }
                        ThemeFiles.AddUpdate(theme, ThemeTypes.Site, ThemeProperties.JavascriptFiles, jsFile.Name, stream, (int)stream.Length);
                    }
                }
            }
        }
コード例 #2
0
        public void Ctor_ScriptsIsNull_ScriptsPropertyIsEmpty()
        {
            // arrange, act
            var sut = new ThemeFiles(Enumerable.Empty <ThemeInclude>(), null);

            // assert
            Assert.That(sut.Scripts, Is.Empty);
        }
コード例 #3
0
        public void Ctor_StylesheetsIsNull_StylesheetsPropertyIsEmpty()
        {
            // arrange, act
            var sut = new ThemeFiles(null, Enumerable.Empty <ThemeScriptInclude>());

            // assert
            Assert.That(sut.Stylesheets, Is.Empty);
        }
コード例 #4
0
        public override void Initialize(Rendering rendering)
        {
            base.Initialize(rendering);

#pragma warning disable CS0618 // Type or member is obsolete
            ThemeItem = CurrentBlog.Theme.Item;
#pragma warning restore CS0618 // Type or member is obsolete
            ThemeFiles = ThemeFileResolver.Resolve(CurrentBlog.Theme.Item);
        }
コード例 #5
0
 internal void ResetCache()
 {
     Services.Get <IFactoryDefaultScriptedContentFragmentService>().ExpireCache();
     Services.Get <IScriptedContentFragmentService>().ExpireCache();
     Services.Get <IContentFragmentPageService>().RemoveAllFromCache();
     Services.Get <IContentFragmentService>().RefreshContentFragments();
     ThemeFiles.RequestHostVersionedThemeFileRegeneration();
     SystemFileStore.RequestHostVersionedThemeFileRegeneration();
 }
コード例 #6
0
 private static string GetHostVersionPath(Guid themeTypeId, Guid themeContextId, string themeName, string propertyName)
 {
     return(CentralizedFileStorage.MakePath(new[]
     {
         "h",
         GetCurrentHostVersionKey(),
         ThemeFiles.MakePath(themeTypeId, themeContextId, themeName, propertyName)
     }));
 }
コード例 #7
0
 public void Install(Version lastInstalledVersion)
 {
     if (lastInstalledVersion == _emptyVersion)
     {
         var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Zimbra.Community.Extensions.TableOfContents.Resources.styles.css");
         foreach (var theme in Themes.List(ThemeTypes.Site))
         {
             ThemeFiles.AddUpdateFactoryDefault(theme, "cssFiles", "TableofContents.css", stream, (int)stream.Length);
         }
     }
 }
コード例 #8
0
        public void Ctor_WhenCalled_SetsScriptsProperty()
        {
            // arrange
            var script1 = new ThemeScriptInclude("url1.js", "fb1.js", "ob1");
            var script2 = new ThemeScriptInclude("url2.js", "fb2.js", "ob2");

            // act
            var sut = new ThemeFiles(Enumerable.Empty <ThemeInclude>(), new[] { script1, script2 });

            // assert
            var scripts = sut.Scripts;

            Assert.That(scripts, Contains.Item(script1));
            Assert.That(scripts, Contains.Item(script2));
        }
コード例 #9
0
        public void Ctor_WhenCalled_SetsStylesheetsProperty()
        {
            // arrange
            var stylesheet1 = new ThemeInclude("file1.css");
            var stylesheet2 = new ThemeInclude("file2.css");

            // act
            var sut = new ThemeFiles(new[] { stylesheet1, stylesheet2 }, Enumerable.Empty <ThemeScriptInclude>());

            // assert
            var stylesheets = sut.Stylesheets;

            Assert.That(stylesheets, Contains.Item(stylesheet1));
            Assert.That(stylesheets, Contains.Item(stylesheet2));
        }
コード例 #10
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);
                    }
                }
            });
        }
コード例 #11
0
        private void RemoveJavaScriptFiles(string assemblyName, IEnumerable <string> resourceNames)
        {
            List <string> jsFiles = GetJavaScriptFiles(assemblyName, resourceNames)
                                    .GroupBy(res => res.Name)
                                    .Select(res => res.Key).ToList();

            foreach (var theme in Themes.List(ThemeTypes.Site))
            {
                foreach (var jsFileName in jsFiles)
                {
                    ThemeFiles.Remove(theme, ThemeTypes.Site, ThemeProperties.JavascriptFiles, jsFileName);
                    if (theme.IsConfigurationBased)
                    {
                        ThemeFiles.RemoveFactoryDefault(theme, ThemeProperties.JavascriptFiles, jsFileName);
                    }
                }
            }
        }
コード例 #12
0
ファイル: Theme.cs プロジェクト: WeTeam/WeBlog
 public override void Initialize(Rendering rendering)
 {
     base.Initialize(rendering);
     ThemeFiles = ThemeFileResolver.Resolve(CurrentBlog.Theme.Item);
 }
コード例 #13
0
 protected void Page_Load(object sender, EventArgs e)
 {
     ThemeFiles = ThemeFileResolver.Resolve(CurrentBlog.Theme.Item);
 }