コード例 #1
0
        public static PackageWriterBase GetWriter(PackageInfo package)
        {
            PackageWriterBase writer = null;

            switch (package.PackageType)
            {
            case "Auth_System":
                writer = new AuthenticationPackageWriter(package);
                break;

            case "Module":
                writer = new ModulePackageWriter(package);
                break;

            case "Container":
                writer = new ContainerPackageWriter(package);
                break;

            case "Skin":
                writer = new SkinPackageWriter(package);
                break;

            case "CoreLanguagePack":
            case "ExtensionLanguagePack":
                writer = new LanguagePackWriter(package);
                break;

            case "SkinObject":
                writer = new SkinControlPackageWriter(package);
                break;

            case "Provider":
                writer = new ProviderPackageWriter(package);
                break;

            case "Library":
                writer = new LibraryPackageWriter(package);
                break;

            case "Widget":
                writer = new WidgetPackageWriter(package);
                break;

            default:
                CommonLibrary.Common.Lists.ListController listController = new CommonLibrary.Common.Lists.ListController();
                ListEntryInfo entry = listController.GetListEntryInfo("PackageWriter", package.PackageType);
                if (entry != null && !string.IsNullOrEmpty(entry.Text))
                {
                    writer = (PackageWriterBase)Reflection.CreateObject(entry.Text, "PackageWriter_" + entry.Value);
                }
                break;
            }
            return(writer);
        }
コード例 #2
0
ファイル: LegacyUtil.cs プロジェクト: rose-nneka/Dnn.Platform
        /// <summary>
        /// Process legacy language package (that is based on manifest xml file)
        /// </summary>
        public static void ProcessLegacyLanguages()
        {
            string filePath = Globals.ApplicationMapPath + Localization.Localization.SupportedLocalesFile.Substring(1).Replace("/", "\\");

            if (File.Exists(filePath))
            {
                var doc = new XPathDocument(filePath);

                //Check for Browser and Url settings
                XPathNavigator browserNav = doc.CreateNavigator().SelectSingleNode("root/browserDetection");
                if (browserNav != null)
                {
                    HostController.Instance.Update("EnableBrowserLanguage", Util.ReadAttribute(browserNav, "enabled", false, null, Null.NullString, "true"));
                }
                XPathNavigator urlNav = doc.CreateNavigator().SelectSingleNode("root/languageInUrl");
                if (urlNav != null)
                {
                    HostController.Instance.Update("EnableUrlLanguage", Util.ReadAttribute(urlNav, "enabled", false, null, Null.NullString, "true"));
                }

                //Process each language
                foreach (XPathNavigator nav in doc.CreateNavigator().Select("root/language"))
                {
                    if (nav.NodeType != XPathNodeType.Comment)
                    {
                        var language = new Locale();
                        language.Text     = Util.ReadAttribute(nav, "name");
                        language.Code     = Util.ReadAttribute(nav, "key");
                        language.Fallback = Util.ReadAttribute(nav, "fallback");
                        //Save Language
                        Localization.Localization.SaveLanguage(language);
                        if (language.Code != Localization.Localization.SystemLocale)
                        {
                            //Create a Package
                            var package = new PackageInfo(new InstallerInfo())
                            {
                                Name         = language.Text,
                                FriendlyName = language.Text,
                                Description  = Null.NullString,
                                Version      = new Version(1, 0, 0),
                                PackageType  = "CoreLanguagePack",
                                License      = Util.PACKAGE_NoLicense
                            };

                            //Create a LanguagePackWriter
                            var packageWriter = new LanguagePackWriter(language, package);

                            //Save the manifest
                            package.Manifest = packageWriter.WriteManifest(true);

                            //Save Package
                            PackageController.Instance.SaveExtensionPackage(package);

                            var languagePack = new LanguagePackInfo
                            {
                                LanguageID         = language.LanguageId,
                                PackageID          = package.PackageID,
                                DependentPackageID = -2
                            };
                            LanguagePackController.SaveLanguagePack(languagePack);
                        }
                    }
                }
            }

            //Process Portal Locales files
            foreach (PortalInfo portal in PortalController.Instance.GetPortals())
            {
                int portalID = portal.PortalID;
                filePath = string.Format(Globals.ApplicationMapPath + Localization.Localization.ApplicationResourceDirectory.Substring(1).Replace("/", "\\") + "\\Locales.Portal-{0}.xml", portalID);

                if (File.Exists(filePath))
                {
                    var doc = new XPathDocument(filePath);

                    //Check for Browser and Url settings
                    XPathNavigator browserNav = doc.CreateNavigator().SelectSingleNode("locales/browserDetection");
                    if (browserNav != null)
                    {
                        PortalController.UpdatePortalSetting(portalID, "EnableBrowserLanguage", Util.ReadAttribute(browserNav, "enabled", false, null, Null.NullString, "true"));
                    }
                    XPathNavigator urlNav = doc.CreateNavigator().SelectSingleNode("locales/languageInUrl");
                    if (urlNav != null)
                    {
                        PortalController.UpdatePortalSetting(portalID, "EnableUrlLanguage", Util.ReadAttribute(urlNav, "enabled", false, null, Null.NullString, "true"));
                    }
                    foreach (Locale installedLanguage in LocaleController.Instance.GetLocales(Null.NullInteger).Values)
                    {
                        string code   = installedLanguage.Code;
                        bool   bFound = false;

                        //Check if this language is "inactive"
                        foreach (XPathNavigator inactiveNav in doc.CreateNavigator().Select("locales/inactive/locale"))
                        {
                            if (inactiveNav.Value == code)
                            {
                                bFound = true;
                                break;
                            }
                        }
                        if (!bFound)
                        {
                            //Language is enabled - add to portal
                            Localization.Localization.AddLanguageToPortal(portalID, installedLanguage.LanguageId, false);
                        }
                    }
                }
                else
                {
                    foreach (Locale installedLanguage in LocaleController.Instance.GetLocales(Null.NullInteger).Values)
                    {
                        //Language is enabled - add to portal
                        Localization.Localization.AddLanguageToPortal(portalID, installedLanguage.LanguageId, false);
                    }
                }
            }
        }
コード例 #3
0
        public static XPathNavigator ConvertLegacyNavigator(XPathNavigator rootNav, InstallerInfo info)
        {
            XPathNavigator nav = null;

            var packageType = Null.NullString;

            if (rootNav.Name == "dotnetnuke")
            {
                packageType = Util.ReadAttribute(rootNav, "type");
            }
            else if (rootNav.Name.ToLower() == "languagepack")
            {
                packageType = "LanguagePack";
            }

            XPathDocument legacyDoc;
            string        legacyManifest;

            switch (packageType.ToLower())
            {
            case "module":
                var sb     = new StringBuilder();
                var writer = XmlWriter.Create(sb, XmlUtils.GetXmlWriterSettings(ConformanceLevel.Fragment));

                //Write manifest start element
                PackageWriterBase.WriteManifestStartElement(writer);

                //Legacy Module - Process each folder
                foreach (XPathNavigator folderNav in rootNav.Select("folders/folder"))
                {
                    var modulewriter = new ModulePackageWriter(folderNav, info);
                    modulewriter.WriteManifest(writer, true);
                }

                //Write manifest end element
                PackageWriterBase.WriteManifestEndElement(writer);

                //Close XmlWriter
                writer.Close();

                //Load manifest into XPathDocument for processing
                legacyDoc = new XPathDocument(new StringReader(sb.ToString()));

                //Parse the package nodes
                nav = legacyDoc.CreateNavigator().SelectSingleNode("dotnetnuke");
                break;

            case "languagepack":
                //Legacy Language Pack
                var languageWriter = new LanguagePackWriter(rootNav, info);
                info.LegacyError = languageWriter.LegacyError;
                if (string.IsNullOrEmpty(info.LegacyError))
                {
                    legacyManifest = languageWriter.WriteManifest(false);
                    legacyDoc      = new XPathDocument(new StringReader(legacyManifest));

                    //Parse the package nodes
                    nav = legacyDoc.CreateNavigator().SelectSingleNode("dotnetnuke");
                }
                break;

            case "skinobject":
                //Legacy Skin Object
                var skinControlwriter = new SkinControlPackageWriter(rootNav, info);
                legacyManifest = skinControlwriter.WriteManifest(false);
                legacyDoc      = new XPathDocument(new StringReader(legacyManifest));

                //Parse the package nodes
                nav = legacyDoc.CreateNavigator().SelectSingleNode("dotnetnuke");
                break;
            }

            return(nav);
        }
コード例 #4
0
ファイル: Installer.cs プロジェクト: gvhung/thegioicuaban.com
        private void ReadManifest(Stream stream)
        {
            XPathDocument  doc       = new XPathDocument(stream);
            XPathNavigator rootNav   = doc.CreateNavigator();
            XPathDocument  legacyDoc = null;

            rootNav.MoveToFirstChild();
            string packageType    = Null.NullString;
            string legacyManifest = Null.NullString;

            if (rootNav.Name == "CommonLibrary")
            {
                packageType = Util.ReadAttribute(rootNav, "type");
            }
            else if (rootNav.Name.ToLower() == "languagepack")
            {
                packageType = "LanguagePack";
            }
            else
            {
                InstallerInfo.Log.AddFailure(Util.PACKAGE_UnRecognizable);
            }
            switch (packageType.ToLower())
            {
            case "package":
                InstallerInfo.IsLegacyMode = false;
                ProcessPackages(rootNav);
                break;

            case "module":
                InstallerInfo.IsLegacyMode = true;
                StringBuilder sb     = new StringBuilder();
                XmlWriter     writer = XmlWriter.Create(sb, XmlUtils.GetXmlWriterSettings(ConformanceLevel.Fragment));
                PackageWriterBase.WriteManifestStartElement(writer);
                foreach (XPathNavigator folderNav in rootNav.Select("folders/folder"))
                {
                    ModulePackageWriter modulewriter = new ModulePackageWriter(folderNav, InstallerInfo);
                    modulewriter.WriteManifest(writer, true);
                }

                PackageWriterBase.WriteManifestEndElement(writer);
                writer.Close();
                legacyDoc = new XPathDocument(new StringReader(sb.ToString()));
                ProcessPackages(legacyDoc.CreateNavigator().SelectSingleNode("CommonLibrary"));
                break;

            case "languagepack":
                InstallerInfo.IsLegacyMode = true;
                LanguagePackWriter languageWriter = new LanguagePackWriter(rootNav, InstallerInfo);
                LegacyError = languageWriter.LegacyError;
                if (string.IsNullOrEmpty(LegacyError))
                {
                    legacyManifest = languageWriter.WriteManifest(false);
                    legacyDoc      = new XPathDocument(new StringReader(legacyManifest));
                    ProcessPackages(legacyDoc.CreateNavigator().SelectSingleNode("CommonLibrary"));
                }
                break;

            case "skinobject":
                InstallerInfo.IsLegacyMode = true;
                SkinControlPackageWriter skinControlwriter = new SkinControlPackageWriter(rootNav, InstallerInfo);
                legacyManifest = skinControlwriter.WriteManifest(false);
                legacyDoc      = new XPathDocument(new StringReader(legacyManifest));
                ProcessPackages(legacyDoc.CreateNavigator().SelectSingleNode("CommonLibrary"));
                break;
            }
        }
コード例 #5
0
        public static void ProcessLegacyLanguages()
        {
            string filePath = Common.Globals.ApplicationMapPath + Localization.Localization.SupportedLocalesFile.Substring(1).Replace("/", "\\");

            if (File.Exists(filePath))
            {
                XPathDocument          doc        = new XPathDocument(filePath);
                HostSettingsController controller = new HostSettingsController();
                XPathNavigator         browserNav = doc.CreateNavigator().SelectSingleNode("root/browserDetection");
                if (browserNav != null)
                {
                    controller.UpdateHostSetting("EnableBrowserLanguage", Util.ReadAttribute(browserNav, "enabled", false, null, Null.NullString, "true"));
                }
                XPathNavigator urlNav = doc.CreateNavigator().SelectSingleNode("root/languageInUrl");
                if (urlNav != null)
                {
                    controller.UpdateHostSetting("EnableUrlLanguage", Util.ReadAttribute(urlNav, "enabled", false, null, Null.NullString, "true"));
                }
                foreach (XPathNavigator nav in doc.CreateNavigator().Select("root/language"))
                {
                    if (nav.NodeType != XPathNodeType.Comment)
                    {
                        Locale language = new Locale();
                        language.Text     = Util.ReadAttribute(nav, "name");
                        language.Code     = Util.ReadAttribute(nav, "key");
                        language.Fallback = Util.ReadAttribute(nav, "fallback");
                        if (language.Code != Localization.Localization.SystemLocale)
                        {
                            PackageInfo package = new PackageInfo(new InstallerInfo());
                            package.Name         = language.Text;
                            package.FriendlyName = language.Text;
                            package.Description  = Null.NullString;
                            package.Version      = new Version(1, 0, 0);
                            package.PackageType  = "CoreLanguagePack";
                            package.License      = Util.PACKAGE_NoLicense;
                            LanguagePackWriter packageWriter = new LanguagePackWriter(language, package);
                            package.Manifest = packageWriter.WriteManifest(true);
                            PackageController.SavePackage(package);
                            Localization.Localization.SaveLanguage(language);
                            LanguagePackInfo languagePack = new LanguagePackInfo();
                            languagePack.LanguageID         = language.LanguageID;
                            languagePack.PackageID          = package.PackageID;
                            languagePack.DependentPackageID = -2;
                            LanguagePackController.SaveLanguagePack(languagePack);
                        }
                    }
                }
            }
            foreach (PortalInfo portal in new PortalController().GetPortals())
            {
                int portalID = portal.PortalID;
                filePath = string.Format(Common.Globals.ApplicationMapPath + Localization.Localization.ApplicationResourceDirectory.Substring(1).Replace("/", "\\") + "\\Locales.Portal-{0}.xml", portalID.ToString());
                if (File.Exists(filePath))
                {
                    XPathDocument  doc        = new XPathDocument(filePath);
                    XPathNavigator browserNav = doc.CreateNavigator().SelectSingleNode("locales/browserDetection");
                    if (browserNav != null)
                    {
                        PortalController.UpdatePortalSetting(portalID, "EnableBrowserLanguage", Util.ReadAttribute(browserNav, "enabled", false, null, Null.NullString, "true"));
                    }
                    XPathNavigator urlNav = doc.CreateNavigator().SelectSingleNode("locales/languageInUrl");
                    if (urlNav != null)
                    {
                        PortalController.UpdatePortalSetting(portalID, "EnableUrlLanguage", Util.ReadAttribute(urlNav, "enabled", false, null, Null.NullString, "true"));
                    }
                    foreach (Locale installedLanguage in Localization.Localization.GetLocales(Null.NullInteger).Values)
                    {
                        string code   = installedLanguage.Code;
                        bool   bFound = false;
                        foreach (XPathNavigator inactiveNav in doc.CreateNavigator().Select("locales/inactive/locale"))
                        {
                            if (inactiveNav.Value == code)
                            {
                                bFound = true;
                                break;
                            }
                        }
                        if (!bFound)
                        {
                            Localization.Localization.AddLanguageToPortal(portalID, installedLanguage.LanguageID, false);
                        }
                    }
                }
                else
                {
                    foreach (Locale installedLanguage in Localization.Localization.GetLocales(Null.NullInteger).Values)
                    {
                        Localization.Localization.AddLanguageToPortal(portalID, installedLanguage.LanguageID, false);
                    }
                }
            }
        }