Пример #1
0
        public static IHtmlContent CssFiles(this IHtmlHelper html, IUrlHelper urlHelper,
                                            KaynakKonumu konum, bool?paketDosyaları = null)
        {
            var sayfaHeadOluşturucu = EngineContext.Current.Resolve <ISayfaHeadOluşturucu>();

            return(new HtmlString(sayfaHeadOluşturucu.CssOluştur(urlHelper, konum, paketDosyaları)));
        }
Пример #2
0
        public static MvcHtmlString Scripts(this HtmlHelper html, UrlHelper urlHelper,
                                            KaynakKonumu konum, bool?paketDosyaları = null)
        {
            var sayfaHeadOluşturucu = EngineContext.Current.Resolve <ISayfaHeadOluşturucu>();

            return(MvcHtmlString.Create(sayfaHeadOluşturucu.ScriptsOluştur(urlHelper, konum, paketDosyaları)));
        }
Пример #3
0
        public virtual void ScriptParçasıIlaveEt(KaynakKonumu konum, string parça, string debugSrc, bool pakettinDışında, bool isAsync)
        {
            if (!_scriptParçaları.ContainsKey(konum))
            {
                _scriptParçaları.Add(konum, new List <ScriptReferenceMeta>());
            }

            if (string.IsNullOrEmpty(parça))
            {
                return;
            }

            if (string.IsNullOrEmpty(debugSrc))
            {
                debugSrc = parça;
            }

            _scriptParçaları[konum].Insert(0, new ScriptReferenceMeta
            {
                pakettinDışında = pakettinDışında,
                IsAsync         = isAsync,
                Parça           = parça,
                DebugSrc        = debugSrc
            });
        }
Пример #4
0
        public virtual void InlineScriptParçasıIlaveEt(KaynakKonumu konum, string script)
        {
            if (!_inlineScriptParçası.ContainsKey(konum))
            {
                _inlineScriptParçası.Add(konum, new List <string>());
            }

            if (string.IsNullOrEmpty(script))
            {
                return;
            }

            _inlineScriptParçası[konum].Insert(0, script);
        }
Пример #5
0
        public virtual void CssParçasıIlaveEt(KaynakKonumu konum, string parça, bool pakettinDışında = false)
        {
            if (!_cssParçaları.ContainsKey(konum))
            {
                _cssParçaları.Add(konum, new List <CssReferenceMeta>());
            }

            if (string.IsNullOrEmpty(parça))
            {
                return;
            }

            _cssParçaları[konum].Insert(0, new CssReferenceMeta
            {
                pakettinDışında = pakettinDışında,
                Parça           = parça
            });
        }
Пример #6
0
        public virtual void ScriptParçasıEkle(KaynakKonumu konum, string parça, bool pakettinDışında, bool isAsync)
        {
            if (!_scriptParçaları.ContainsKey(konum))
            {
                _scriptParçaları.Add(konum, new List <ScriptReferenceMeta>());
            }

            if (string.IsNullOrEmpty(parça))
            {
                return;
            }

            _scriptParçaları[konum].Add(new ScriptReferenceMeta
            {
                pakettinDışında = pakettinDışında,
                IsAsync         = isAsync,
                Parça           = parça
            });
        }
Пример #7
0
        public virtual string InlineScriptsOluştur(IUrlHelper urlHelper, KaynakKonumu konum)
        {
            if (!_inlineScriptParçası.ContainsKey(konum) || _inlineScriptParçası[konum] == null)
            {
                return("");
            }

            if (!_inlineScriptParçası.Any())
            {
                return("");
            }

            var sonuç = new StringBuilder();

            foreach (var item in _inlineScriptParçası[konum])
            {
                sonuç.Append(item);
                sonuç.Append(Environment.NewLine);
            }
            return(sonuç.ToString());
        }
Пример #8
0
        public virtual void CssParçasıEkle(KaynakKonumu konum, string parça, string debugSrc, bool pakettinDışında = false)
        {
            if (!_cssParçaları.ContainsKey(konum))
            {
                _cssParçaları.Add(konum, new List <CssReferenceMeta>());
            }

            if (string.IsNullOrEmpty(parça))
            {
                return;
            }

            if (string.IsNullOrEmpty(debugSrc))
            {
                debugSrc = parça;
            }

            _cssParçaları[konum].Add(new CssReferenceMeta
            {
                pakettinDışında = pakettinDışında,
                Parça           = parça,
                DebugSrc        = debugSrc
            });
        }
Пример #9
0
        public static void ScriptParçasıIlaveEt(this IHtmlHelper html, KaynakKonumu konum, string parça, string debugSrc = "", bool pakettenÇıkar = false, bool async = false)
        {
            var sayfaHeadOluşturucu = EngineContext.Current.Resolve <ISayfaHeadOluşturucu>();

            sayfaHeadOluşturucu.ScriptParçasıIlaveEt(konum, parça, debugSrc, pakettenÇıkar, async);
        }
Пример #10
0
        public static void CssParçasıEkle(this IHtmlHelper html, KaynakKonumu konum, string parça, string debugSrc = "", bool pakettenÇıkar = false)
        {
            var sayfaHeadOluşturucu = EngineContext.Current.Resolve <ISayfaHeadOluşturucu>();

            sayfaHeadOluşturucu.CssParçasıEkle(konum, parça, debugSrc, pakettenÇıkar);
        }
Пример #11
0
        public virtual string CssOluştur(UrlHelper urlHelper, KaynakKonumu konum, bool?paketDosyaları = null)
        {
            if (!_cssParçaları.ContainsKey(konum) || _cssParçaları[konum] == null)
            {
                return("");
            }

            if (!_cssParçaları.Any())
            {
                return("");
            }

            if (!paketDosyaları.HasValue)
            {
                //Herhangi bir değer belirtilmemişse ayarı kullanın
                paketDosyaları = _seoAyarları.CssPaketlemeyeIzinVer && BundleTable.EnableOptimizations;
            }

            if (paketDosyaları.Value)
            {
                var pakettenParçalar = _cssParçaları[konum]
                                       .Where(x => !x.pakettinDışında)
                                       .Select(x => x.Parça)
                                       .Distinct()
                                       .ToArray();
                var paketinDışındakiParçalar = _cssParçaları[konum]
                                               .Where(x => x.pakettinDışında)
                                               .Select(x => x.Parça)
                                               .Distinct()
                                               .ToArray();


                var sonuç = new StringBuilder();

                if (pakettenParçalar.Length > 0)
                {
                    // ÖNEMLİ: Sanal dizinlerdeki CSS paketlemeyi kullanma
                    string paketSanalYolu = PaketSanalYolunuAl("~/bundles/styles/", ".css", pakettenParçalar);

                    //paket oluştur
                    lock (s_lock)
                    {
                        var paketIçin = BundleTable.Bundles.GetBundleFor(paketSanalYolu);
                        if (paketIçin == null)
                        {
                            var paket = new StyleBundle(paketSanalYolu);
                            //bundle.Transforms.Clear();

                            //sıralanmış olarak
                            paket.Orderer = new PaketSıralayıcı();
                            //dosya uzantısı değiştirmelerini devre dışı bırak. Bir geliştirici tarafından belirtilen betikleri işle
                            paket.EnableFileExtensionReplacements = false;
                            foreach (var ptb in pakettenParçalar)
                            {
                                paket.Include(ptb, CssDönüşümüAl());
                            }
                            BundleTable.Bundles.Add(paket);
                        }
                    }

                    //paket parçaları
                    sonuç.AppendLine(Styles.Render(paketSanalYolu).ToString());
                }

                //paketin dışındaki parçalar
                foreach (var item in paketinDışındakiParçalar)
                {
                    sonuç.AppendFormat("<link href=\"{0}\" rel=\"stylesheet\" type=\"{1}\" />", urlHelper.Content(item), MimeTipleri.TextCss);
                    sonuç.Append(Environment.NewLine);
                }

                return(sonuç.ToString());
            }
            else
            {
                //paketleme devredışı
                var sonuç = new StringBuilder();
                foreach (var yol in _cssParçaları[konum].Select(x => x.Parça).Distinct())
                {
                    sonuç.AppendFormat("<link href=\"{0}\" rel=\"stylesheet\" type=\"{1}\" />", urlHelper.Content(yol), MimeTipleri.TextCss);
                    sonuç.AppendLine();
                }
                return(sonuç.ToString());
            }
        }
Пример #12
0
        public virtual string ScriptsOluştur(UrlHelper urlHelper, KaynakKonumu konum, bool?paketDosyaları = null)
        {
            if (!_scriptParçaları.ContainsKey(konum) || _scriptParçaları[konum] == null)
            {
                return("");
            }

            if (!_scriptParçaları.Any())
            {
                return("");
            }

            if (!paketDosyaları.HasValue)
            {
                //Herhangi bir değer belirtilmemişse ayarı kullanın
                paketDosyaları = _seoAyarları.JSPaketlemeyeIzinVer && BundleTable.EnableOptimizations;
            }

            if (paketDosyaları.Value)
            {
                var pakettenParçalar = _scriptParçaları[konum]
                                       .Where(x => !x.pakettinDışında)
                                       .Select(x => x.Parça)
                                       .Distinct()
                                       .ToArray();
                var paketinDışındakiParçalar = _scriptParçaları[konum]
                                               .Where(x => x.pakettinDışında)
                                               .Select(x => new { x.Parça, x.IsAsync })
                                               .Distinct()
                                               .ToArray();


                var sonuç = new StringBuilder();

                if (pakettenParçalar.Length > 0)
                {
                    string paketSanalYolu = PaketSanalYolunuAl("~/bundles/scripts/", ".js", pakettenParçalar);
                    //paket oluştur
                    lock (s_lock)
                    {
                        var paketIçin = BundleTable.Bundles.GetBundleFor(paketSanalYolu);
                        if (paketIçin == null)
                        {
                            var paket = new ScriptBundle(paketSanalYolu);
                            //bundle.Transforms.Clear();

                            //sıralanmış olarak
                            paket.Orderer = new PaketSıralayıcı();
                            //disable file extension replacements. renders scripts which were specified by a developer
                            paket.EnableFileExtensionReplacements = false;
                            paket.Include(pakettenParçalar);
                            BundleTable.Bundles.Add(paket);
                        }
                    }

                    //paket parçaları
                    sonuç.AppendLine(Scripts.Render(paketSanalYolu).ToString());
                }

                //paketten olmayan parçalar
                foreach (var item in paketinDışındakiParçalar)
                {
                    sonuç.AppendFormat("<script {2}src=\"{0}\" type=\"{1}\"></script>", urlHelper.Content(item.Parça), MimeTipleri.TextJavascript, item.IsAsync ? "async " : "");
                    sonuç.Append(Environment.NewLine);
                }
                return(sonuç.ToString());
            }
            else
            {
                //bundling is disabled
                var sonuç = new StringBuilder();
                foreach (var item in _scriptParçaları[konum].Select(x => new { x.Parça, x.IsAsync }).Distinct())
                {
                    sonuç.AppendFormat("<script {2}src=\"{0}\" type=\"{1}\"></script>", urlHelper.Content(item.Parça), MimeTipleri.TextJavascript, item.IsAsync ? "async " : "");
                    sonuç.Append(Environment.NewLine);
                }
                return(sonuç.ToString());
            }
        }
Пример #13
0
        public static void CssParçasıIlaveEt(this HtmlHelper html, KaynakKonumu konum, string parça, bool pakettenÇıkar = false)
        {
            var sayfaHeadOluşturucu = EngineContext.Current.Resolve <ISayfaHeadOluşturucu>();

            sayfaHeadOluşturucu.CssParçasıIlaveEt(konum, parça, pakettenÇıkar);
        }
Пример #14
0
        public virtual string CssOluştur(IUrlHelper urlHelper, KaynakKonumu konum, bool?paketDosyaları = null)
        {
            if (!_cssParçaları.ContainsKey(konum) || _cssParçaları[konum] == null)
            {
                return("");
            }

            if (!_cssParçaları.Any())
            {
                return("");
            }

            var debugModel = _hostingEnvironment.IsDevelopment();

            if (!paketDosyaları.HasValue)
            {
                //Herhangi bir değer belirtilmemişse ayarı kullanın
                paketDosyaları = _seoAyarları.CssPaketlemeyeIzinVer;
            }

            if (urlHelper.ActionContext.HttpContext.Request.PathBase.HasValue)
            {
                paketDosyaları = false;
            }

            if (paketDosyaları.Value)
            {
                var pakettenParçalar = _cssParçaları[konum]
                                       .Where(x => !x.pakettinDışında)
                                       .Distinct()
                                       .ToArray();
                var paketinDışındakiParçalar = _cssParçaları[konum]
                                               .Where(x => x.pakettinDışında)
                                               .Distinct()
                                               .ToArray();


                var sonuç = new StringBuilder();

                if (pakettenParçalar.Length > 0)
                {
                    // ÖNEMLİ: Sanal dizinlerdeki CSS paketlemeyi kullanma
                    Directory.CreateDirectory(Path.Combine(_hostingEnvironment.WebRootPath, "bundles"));
                    var bundle = new Bundle();
                    foreach (var item in pakettenParçalar)
                    {
                        var src = debugModel ? item.DebugSrc : item.Parça;
                        src = urlHelper.Content(src);
                        var srcPath = Path.Combine(_hostingEnvironment.ContentRootPath, src.Remove(0, 1).Replace("/", "\\"));
                        if (File.Exists(srcPath))
                        {
                            src = src.Remove(0, 1);
                        }
                        else
                        {
                            src = "wwwroot/" + src;
                        }
                        bundle.InputFiles.Add(src);
                    }
                    //output file
                    var outputFileName = PaketSanalYolunuAl(pakettenParçalar.Select(x => { return(debugModel ? x.DebugSrc : x.Parça); }).ToArray());
                    bundle.OutputFileName = "wwwroot/bundles/" + outputFileName + ".css";
                    //save
                    var configFilePath = _hostingEnvironment.ContentRootPath + "\\" + outputFileName + ".json";
                    bundle.FileName = configFilePath;
                    //paket oluştur
                    lock (s_lock)
                    {
                        var cacheKey      = $"Rota.minification.shouldrebuild.css-{outputFileName}";
                        var shouldRebuild = _cacheManager.Al <bool>(cacheKey, RecheckBundledFilesPeriod, () => true);
                        if (shouldRebuild)
                        {
                            //process
                            _processor.Process(configFilePath, new List <Bundle> {
                                bundle
                            });
                            _cacheManager.Ayarla(cacheKey, false, RecheckBundledFilesPeriod);
                        }
                    }
                    sonuç.AppendFormat("<link href=\"{0}\" rel=\"stylesheet\" type=\"{1}\" />", urlHelper.Content("~/bundles/" + outputFileName + ".min.css"), MimeTipleri.TextCss);
                    sonuç.Append(Environment.NewLine);
                }

                foreach (var item in pakettenParçalar)
                {
                    var src = debugModel ? item.DebugSrc : item.Parça;
                    sonuç.AppendFormat("<link href=\"{0}\" rel=\"stylesheet\" type=\"{1}\" />", urlHelper.Content(src), MimeTipleri.TextCss);
                    sonuç.Append(Environment.NewLine);
                }

                return(sonuç.ToString());
            }
            else
            {
                //paketleme devredışı
                var sonuç = new StringBuilder();
                foreach (var item in _cssParçaları[konum].Distinct())
                {
                    var src = debugModel ? item.DebugSrc : item.Parça;
                    sonuç.AppendFormat("<link href=\"{0}\" rel=\"stylesheet\" type=\"{1}\" />", urlHelper.Content(src), MimeTipleri.TextCss);
                    sonuç.AppendLine();
                }
                return(sonuç.ToString());
            }
        }
Пример #15
0
        public virtual string ScriptsOluştur(IUrlHelper urlHelper, KaynakKonumu konum, bool?paketDosyaları = null)
        {
            if (!_scriptParçaları.ContainsKey(konum) || _scriptParçaları[konum] == null)
            {
                return("");
            }

            if (!_scriptParçaları.Any())
            {
                return("");
            }

            var debugModel = _hostingEnvironment.IsDevelopment();

            if (!paketDosyaları.HasValue)
            {
                //Herhangi bir değer belirtilmemişse ayarı kullanın
                paketDosyaları = _seoAyarları.JSPaketlemeyeIzinVer;
            }

            if (paketDosyaları.Value)
            {
                var pakettenParçalar = _scriptParçaları[konum]
                                       .Where(x => !x.pakettinDışında)
                                       .Distinct()
                                       .ToArray();
                var paketinDışındakiParçalar = _scriptParçaları[konum]
                                               .Where(x => x.pakettinDışında)
                                               .Distinct()
                                               .ToArray();


                var sonuç = new StringBuilder();

                if (pakettenParçalar.Length > 0)
                {
                    //paket oluştur
                    Directory.CreateDirectory(Path.Combine(_hostingEnvironment.WebRootPath, "bundles"));

                    var bundle = new Bundle();
                    foreach (var item in pakettenParçalar)
                    {
                        new PathString(urlHelper.Content(debugModel ? item.DebugSrc : item.Parça))
                        .StartsWithSegments(urlHelper.ActionContext.HttpContext.Request.PathBase, out PathString path);
                        var src = path.Value.TrimStart('/');

                        //check whether this file exists, if not it should be stored into /wwwroot directory
                        if (!File.Exists(Path.Combine(_hostingEnvironment.ContentRootPath, src.Replace("/", "\\"))))
                        {
                            src = $"wwwroot/{src}";
                        }

                        bundle.InputFiles.Add(src);
                    }
                    //output file
                    var outputFileName = PaketSanalYolunuAl(pakettenParçalar.Select(x => { return(debugModel ? x.DebugSrc : x.Parça); }).ToArray());
                    bundle.OutputFileName = "wwwroot/bundles/" + outputFileName + ".js";
                    //save
                    var configFilePath = _hostingEnvironment.ContentRootPath + "\\" + outputFileName + ".json";
                    bundle.FileName = configFilePath;
                    lock (s_lock)
                    {
                        var cacheKey      = $"Rota.minification.shouldrebuild.css-{outputFileName}";
                        var shouldRebuild = _cacheManager.Al <bool>(cacheKey, RecheckBundledFilesPeriod, () => true);
                        if (shouldRebuild)
                        {
                            //store json file to see a generated config file (for debugging purposes)
                            //BundleHandler.AddBundle(configFilePath, bundle);

                            //process
                            _processor.Process(configFilePath, new List <Bundle> {
                                bundle
                            });
                            _cacheManager.Ayarla(cacheKey, false, RecheckBundledFilesPeriod);
                        }
                    }
                    sonuç.AppendFormat("<script src=\"{0}\" type=\"{1}\"></script>", urlHelper.Content("~/bundles/" + outputFileName + ".min.js"), MimeTipleri.TextJavascript);
                    sonuç.Append(Environment.NewLine);
                }

                //paketten olmayan parçalar
                foreach (var item in paketinDışındakiParçalar)
                {
                    var src = debugModel ? item.DebugSrc : item.Parça;
                    sonuç.AppendFormat("<script {2}src=\"{0}\" type=\"{1}\"></script>", urlHelper.Content(src), MimeTipleri.TextJavascript, item.IsAsync ? "async " : "");
                    sonuç.Append(Environment.NewLine);
                }
                return(sonuç.ToString());
            }
            else
            {
                //bundling is disabled
                var sonuç = new StringBuilder();
                foreach (var item in _scriptParçaları[konum].Distinct())
                {
                    var src = debugModel ? item.DebugSrc : item.Parça;
                    sonuç.AppendFormat("<script {2}src=\"{0}\" type=\"{1}\"></script>", urlHelper.Content(src), MimeTipleri.TextJavascript, item.IsAsync ? "async " : "");
                    sonuç.Append(Environment.NewLine);
                }
                return(sonuç.ToString());
            }
        }