Example #1
0
            public static TabInfo LocaliseTab(TabInfo tab, int portalId)
            {
                var culture = DNNAbstract.GetCurrentCulture();
                Dictionary <int, EaloTabInfo> ealoTabs;

                if (!ealoTabLookup.TryGetValue(culture, out ealoTabs))
                {
                    ealoTabs = Tabs.GetAllTabsAsDictionary(culture, true);
                    lock (ealoTabLookup)
                    {
                        if (!ealoTabLookup.ContainsKey(culture))
                        {
                            ealoTabLookup.Add(culture, ealoTabs);
                        }
                    }
                }

                EaloTabInfo ealoTab;

                if (ealoTabs.TryGetValue(tab.TabID, out ealoTab))
                {
                    if (ealoTab.EaloTabName != null)
                    {
                        tab.TabName = ealoTab.EaloTabName.StringTextOrFallBack;
                    }

                    if (ealoTab.EaloTitle != null)
                    {
                        tab.Title = ealoTab.EaloTitle.StringTextOrFallBack;
                    }
                }

                return(tab);
            }
        private static string CreateScript(string jsObject, string scriptPath)
        {
            string result;

            jsObject = jsObject ?? "";

            if (String.IsNullOrEmpty(scriptPath))
            {
                var scheme = HttpContext.Current.Request.Url.Scheme;
                switch (jsObject)
                {
                case "jQuery":
                case "DDRjQuery":
                    scriptPath = DNNAbstract.RequestJQuery()
                                                                ? ""
                                                                : (scheme + "://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js");
                    break;

                case "jQuery.ui":
                    scriptPath = scheme + "://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js";
                    break;

                default:
                    throw new ApplicationException(String.Format("Can't deduce script path for JavaScript object '{0}'", jsObject));
                }
            }

            if (string.IsNullOrEmpty(jsObject))
            {
                result = String.IsNullOrEmpty(scriptPath)
                                                ? ""
                                                : String.Format(@"<script type=""text/javascript"" src=""{0}""></script>", scriptPath);
            }
            else
            {
                if (jsObject == "DDRjQuery")
                {
                    result = String.IsNullOrEmpty(scriptPath)
                                                        ? @"<script type=""text/javascript"">DDRjQuery=window.DDRjQuery||jQuery;</script>"
                                                        : String.Format(
                        @"<script type=""text/javascript"">if (!window.DDRjQuery) {{if (window.jQuery && (jQuery.fn.jquery>=""1.3"")) DDRjQuery=jQuery; else document.write(unescape('%3Cscript src=""{0}"" type=""text/javascript""%3E%3C/script%3E'));}}</script><script type=""text/javascript"">if (!window.DDRjQuery) DDRjQuery=jQuery.noConflict(true);</script>",
                        scriptPath);
                }
                else
                {
                    result = String.IsNullOrEmpty(scriptPath)
                                                        ? ""
                                                        : String.Format(
                        @"<script type=""text/javascript"">if (!({0})) document.write(unescape('%3Cscript src=""{1}"" type=""text/javascript""%3E%3C/script%3E'));</script>",
                        GetObjectCheckScript(jsObject),
                        scriptPath);
                }
            }

            return(result);
        }
        internal static TemplateDefinition FromManifest(string manifestUrl)
        {
            var httpContext  = HttpContext.Current;
            var cache        = httpContext.Cache;
            var manifestPath = httpContext.Server.MapPath(manifestUrl);

            var baseDef = cache[manifestPath] as TemplateDefinition;

            if (baseDef == null)
            {
                baseDef = new TemplateDefinition {
                    Folder = Path.GetDirectoryName(manifestUrl)
                };

                var xml = new XmlDocument {
                    XmlResolver = null
                };
                xml.Load(manifestPath);

                var resolver = new PathResolver(baseDef.Folder);

                // ReSharper disable PossibleNullReferenceException
                foreach (XmlNode node in xml.DocumentElement.ChildNodes)

                // ReSharper restore PossibleNullReferenceException
                {
                    if (node.NodeType == XmlNodeType.Element)
                    {
                        var elt = (XmlElement)node;
                        switch (elt.LocalName)
                        {
                        case "template":
                            baseDef.TemplateVirtualPath = GetResolvedPath(elt, resolver);
                            baseDef.TemplatePath        = httpContext.Server.MapPath(baseDef.TemplateVirtualPath);
                            break;

                        case "templateHead":
                            baseDef.TemplateHeadPath = httpContext.Server.MapPath(GetResolvedPath(elt, resolver));
                            break;

                        case "scripts":
                            foreach (XmlElement scriptElt in elt.GetElementsByTagName("script"))
                            {
                                var jsObject   = scriptElt.GetAttribute("jsObject");
                                var scriptPath = string.IsNullOrEmpty(scriptElt.InnerText.Trim())
                                                        ? string.Empty
                                                        : Globals.ResolveUrl(GetResolvedPath(scriptElt, resolver));
                                if (string.IsNullOrEmpty(jsObject))
                                {
                                    var jsLibraryName = scriptElt.GetAttribute("name");
                                    if (!string.IsNullOrEmpty(jsLibraryName))
                                    {
                                        SpecificVersion specificityTemp;
                                        SpecificVersion?specificity = null;
                                        Version         libraryVersion;
                                        if (!Version.TryParse(scriptElt.GetAttribute("version"), out libraryVersion))
                                        {
                                            libraryVersion = null;
                                        }
                                        else if (Enum.TryParse(scriptElt.GetAttribute("specificVersion"), true, out specificityTemp))
                                        {
                                            specificity = specificityTemp;
                                        }

                                        baseDef.ScriptLibraries[jsLibraryName] = Tuple.Create(libraryVersion, specificity);
                                        continue;
                                    }

                                    baseDef.ScriptUrls.Add(scriptPath);
                                    continue;
                                }

                                if (string.IsNullOrEmpty(scriptPath))
                                {
                                    // support legacy named jsObjects that map to libraries
                                    if (jsObject.Equals("jQuery"))
                                    {
                                        Version         libraryVersion = null;
                                        SpecificVersion?specificity    = null;
                                        baseDef.ScriptLibraries[CommonJs.jQuery]        = Tuple.Create(libraryVersion, specificity);
                                        baseDef.ScriptLibraries[CommonJs.jQueryMigrate] = Tuple.Create(libraryVersion, specificity);
                                    }
                                    else if (jsObject.Equals("jQuery.ui"))
                                    {
                                        Version         libraryVersion = null;
                                        SpecificVersion?specificity    = null;
                                        baseDef.ScriptLibraries[CommonJs.jQueryUI] = Tuple.Create(libraryVersion, specificity);
                                    }

                                    continue;
                                }

                                var script = CreateScript(jsObject, scriptPath);
                                if (!string.IsNullOrEmpty(script))
                                {
                                    baseDef.ScriptKeys.Add(jsObject);
                                    baseDef.Scripts.Add(jsObject, script);
                                }
                            }

                            break;

                        case "stylesheets":
                            foreach (XmlElement cssElt in elt.GetElementsByTagName("stylesheet"))
                            {
                                var cssPath = Globals.ResolveUrl(GetResolvedPath(cssElt, resolver));
                                baseDef.StyleSheets.Add(cssPath);
                            }

                            break;

                        case "defaultClientOptions":
                            foreach (XmlElement optionElt in elt.GetElementsByTagName("clientOption"))
                            {
                                var optionName  = optionElt.GetAttribute("name");
                                var optionType  = optionElt.GetAttribute("type");
                                var optionValue = optionElt.GetAttribute("value");
                                if (string.IsNullOrEmpty(optionType))
                                {
                                    optionType = "passthrough";
                                }

                                switch (optionType)
                                {
                                case "number":
                                    baseDef.DefaultClientOptions.Add(new ClientNumber(optionName, optionValue));
                                    break;

                                case "boolean":
                                    baseDef.DefaultClientOptions.Add(new ClientBoolean(optionName, optionValue));
                                    break;

                                case "string":
                                    baseDef.DefaultClientOptions.Add(new ClientString(optionName, optionValue));
                                    break;

                                default:
                                    baseDef.DefaultClientOptions.Add(new ClientOption(optionName, optionValue));
                                    break;
                                }
                            }

                            break;

                        case "defaultTemplateArguments":
                            foreach (XmlElement argElt in elt.GetElementsByTagName("templateArgument"))
                            {
                                var argName  = argElt.GetAttribute("name");
                                var argValue = argElt.GetAttribute("value");
                                baseDef.DefaultTemplateArguments.Add(new TemplateArgument(argName, argValue));
                            }

                            break;
                        }
                    }
                }

                foreach (var processor in DNNAbstract.SupportedTemplateProcessors())
                {
                    if (processor.LoadDefinition(baseDef))
                    {
                        baseDef.Processor = processor;
                        break;
                    }
                }

                if (baseDef.Processor == null)
                {
                    throw new ApplicationException(string.Format("Can't find processor for manifest {0}", manifestPath));
                }

                cache.Insert(manifestPath, baseDef, new CacheDependency(new[] { manifestPath, baseDef.TemplatePath }));
            }

            var result = baseDef.Clone();

            result.Reset();
            return(result);
        }
Example #4
0
 public string GetUserURL()
 {
     return(DNNAbstract.GetUserUrl());
 }
Example #5
0
 public string GetLoginURL()
 {
     return(DNNAbstract.GetLoginUrl());
 }
        internal static TemplateDefinition FromManifest(string manifestUrl)
        {
            var httpContext  = HttpContext.Current;
            var cache        = httpContext.Cache;
            var manifestPath = httpContext.Server.MapPath(manifestUrl);

            var baseDef = cache[manifestPath] as TemplateDefinition;

            if (baseDef == null)
            {
                baseDef = new TemplateDefinition {
                    Folder = Path.GetDirectoryName(manifestUrl)
                };

                var xml = new XmlDocument();
                xml.Load(manifestPath);

                var resolver = new PathResolver(baseDef.Folder);

                // ReSharper disable PossibleNullReferenceException
                foreach (XmlNode node in xml.DocumentElement.ChildNodes)
                // ReSharper restore PossibleNullReferenceException
                {
                    if (node.NodeType == XmlNodeType.Element)
                    {
                        var elt = (XmlElement)node;
                        switch (elt.LocalName)
                        {
                        case "template":
                            baseDef.TemplateVirtualPath = GetResolvedPath(elt, resolver);
                            baseDef.TemplatePath        = httpContext.Server.MapPath(baseDef.TemplateVirtualPath);
                            break;

                        case "templateHead":
                            baseDef.TemplateHeadPath = httpContext.Server.MapPath(GetResolvedPath(elt, resolver));
                            break;

                        case "scripts":
                            foreach (XmlElement scriptElt in elt.GetElementsByTagName("script"))
                            {
                                var jsObject   = scriptElt.GetAttribute("jsObject");
                                var scriptPath = String.IsNullOrEmpty(scriptElt.InnerText.Trim())
                                                                                                ? ""
                                                                                                : Globals.ResolveUrl(GetResolvedPath(scriptElt, resolver));
                                var key    = String.IsNullOrEmpty(jsObject) ? scriptPath : jsObject;
                                var script = CreateScript(jsObject, scriptPath);
                                if (!String.IsNullOrEmpty(script))
                                {
                                    baseDef.ScriptKeys.Add(key);
                                    baseDef.Scripts.Add(key, script);
                                }
                            }
                            break;

                        case "stylesheets":
                            foreach (XmlElement cssElt in elt.GetElementsByTagName("stylesheet"))
                            {
                                var cssPath = Globals.ResolveUrl(GetResolvedPath(cssElt, resolver));
                                baseDef.StyleSheets.Add(cssPath);
                            }
                            break;

                        case "defaultClientOptions":
                            foreach (XmlElement optionElt in elt.GetElementsByTagName("clientOption"))
                            {
                                var optionName  = optionElt.GetAttribute("name");
                                var optionType  = optionElt.GetAttribute("type");
                                var optionValue = optionElt.GetAttribute("value");
                                if (String.IsNullOrEmpty(optionType))
                                {
                                    optionType = "passthrough";
                                }
                                switch (optionType)
                                {
                                case "number":
                                    baseDef.DefaultClientOptions.Add(new ClientNumber(optionName, optionValue));
                                    break;

                                case "boolean":
                                    baseDef.DefaultClientOptions.Add(new ClientBoolean(optionName, optionValue));
                                    break;

                                case "string":
                                    baseDef.DefaultClientOptions.Add(new ClientString(optionName, optionValue));
                                    break;

                                default:
                                    baseDef.DefaultClientOptions.Add(new ClientOption(optionName, optionValue));
                                    break;
                                }
                            }
                            break;

                        case "defaultTemplateArguments":
                            foreach (XmlElement argElt in elt.GetElementsByTagName("templateArgument"))
                            {
                                var argName  = argElt.GetAttribute("name");
                                var argValue = argElt.GetAttribute("value");
                                baseDef.DefaultTemplateArguments.Add(new TemplateArgument(argName, argValue));
                            }
                            break;
                        }
                    }
                }

                foreach (var processor in DNNAbstract.SupportedTemplateProcessors())
                {
                    if (processor.LoadDefinition(baseDef))
                    {
                        baseDef.Processor = processor;
                        break;
                    }
                }

                if (baseDef.Processor == null)
                {
                    throw new ApplicationException(String.Format("Can't find processor for manifest {0}", manifestPath));
                }

                cache.Insert(manifestPath, baseDef, new CacheDependency(new[] { manifestPath, baseDef.TemplatePath }));
            }

            var result = baseDef.Clone();

            result.Reset();
            return(result);
        }