コード例 #1
0
 /// <summary>
 /// Returns all installed packages - only shows their latest versions
 /// </summary>
 /// <returns></returns>
 public IEnumerable <InstalledPackageModel> GetInstalled()
 {
     return(InstalledPackage.GetAllInstalledPackages()
            .GroupBy(
                //group by name
                x => x.Data.Name,
                //select the package with a parsed version
                pck =>
     {
         Version pckVersion;
         return Version.TryParse(pck.Data.Version, out pckVersion)
                     ? new { package = pck, version = pckVersion }
                     : new { package = pck, version = new Version(0, 0, 0) };
     })
            .Select(grouping =>
     {
         //get the max version for the package
         var maxVersion = grouping.Max(x => x.version);
         //only return the first package with this version
         return grouping.First(x => x.version == maxVersion).package;
     })
            .Select(pack => new InstalledPackageModel
     {
         Name = pack.Data.Name,
         Id = pack.Data.Id,
         Author = pack.Data.Author,
         Version = pack.Data.Version,
         Url = pack.Data.Url,
         License = pack.Data.License,
         LicenseUrl = pack.Data.LicenseUrl,
         Files = pack.Data.Files,
         IconUrl = pack.Data.IconUrl
     })
            .ToList());
 }
コード例 #2
0
        public async Task <HttpResponseMessage> Get()
        {
            var umbracoVersion   = UmbracoVersion.Current;
            var footprintVersion = InstalledPackage.GetAllInstalledPackages()
                                   .Select(x => x.Data)
                                   .Concat(CreatedPackage.GetAllCreatedPackages().Select(x => x.Data))
                                   .Where(x => x.Name == "Novicell Footprint")
                                   .Select(x => x.Version)
                                   .FirstOrDefault();

            if (footprintVersion == null)
            {
                LogHelper.Warn <DashboardController>("Footprint version is null.");
            }

            //Use this to return your own custom dashboard content
            //using (var http = new HttpClient())
            //{
            //    return await http.GetAsync($"http://novicell.io/Umbraco/Api/Documentation/Get?umbracoVersion={umbracoVersion}&packageVersion={footprintVersion}&cache={Random.Next()}");
            //}

            /*
             * Example structure:
             * {"umbracoVersion":"7.2.4","packageVersion":"1.4.2","content":"<div ng-controller=\"ncFootprint.Backoffice.OverviewDashboard.Controller\" class=\"ncbt-section-dashboard\">\r\n    <div class=\"span12\">\r\n        <h1>Novicell Footprint 1.4.2.1</h1>\r\n        <p>\r\n            Stay tuned on <a href=\"http://novicell.io/footprint\" target=\"_blank\" title=\"Novicell Footprint\">http://novicell.io/footprint</a> and Our for more information and documentation.\r\n        </p>\r\n\r\n        <p>\r\n        \t<b>The library provides the following methods:</b> <br /><br />\r\n        \t<code>\r\n        \tfootprint.currentVisitor.addToSegment(segmentAlias, onSuccess, onError); <br />\r\n\t\t\tfootprint.currentVisitor.isInSegment(segmentAlias, onSuccess, onError); <br />\r\n\t\t\tfootprint.currentVisitor.setId(visitorId, onSuccess, onError); <br />\r\n\t\t\tfootprint.currentVisitor.setProperties({ key1: value1, key2: value2 }, onSuccess, onError); <br />\r\n\t\t\t</code>\r\n        </p>\r\n        <br />\r\n        <p>\r\n        \t<b>Example</b><br /><br />\r\n        \t<code>\r\n        \tdocument.getElementById(\"newsletter-subscribe-form\").addEventListener(\"submit\", function (e) { <br/>\r\n\t\t\t    console.info(\"\\\"submit\\\" event listener hit.\", arguments);<br/>\r\n\t\t\t    <br/>\r\n\t\t\t    e.preventDefault();<br/>\r\n\t\t\t    <br/>\r\n\t\t\t    // TODO: Subscribe to newsletter via AJAX or somesuch.<br/>\r\n\t\t\t    <br/>\r\n\t\t\t    footprint.currentVisitor.addToSegment(\"newsletter\", function (response, xhr) {<br/>\r\n\t\t\t        console.info(\"\\\"addToSegment\\\" onSuccess.\", arguments);<br/>\r\n\t\t\t    }, function (xhr, statusText) {<br/>\r\n\t\t\t        console.info(\"\\\"addToSegment\\\" onError.\", arguments);<br/>\r\n\t\t\t    });<br/>\r\n\t\t\t});<br/>\r\n\t\t\t</code>\r\n        </p>\r\n\r\n<iframe width=\"420\" height=\"315\" src=\"https://www.youtube.com/embed/NXN0QQRWx5g?rel=0\" frameborder=\"0\" allowfullscreen></iframe>\r\n    </div>\r\n</div>"}
             *
             */
            return(null);
        }
コード例 #3
0
        public IHttpActionResult Uninstall(int packageId)
        {
            try
            {
                var pack = InstalledPackage.GetById(packageId);
                if (pack == null)
                {
                    return(NotFound());
                }

                PerformUninstall(pack);

                //now get all other packages by this name since we'll uninstall all versions
                foreach (var installed in InstalledPackage.GetAllInstalledPackages()
                         .Where(x => x.Data.Name == pack.Data.Name && x.Data.Id != pack.Data.Id))
                {
                    //remove from teh xml
                    installed.Delete(Security.GetUserId());
                }
            }
            catch (Exception e)
            {
                Logger.Error <PackageInstallController>("Failed to uninstall.", e);
                throw;
            }

            return(Ok());
        }
コード例 #4
0
        private bool ValidateInstalledInternal(string name, string version)
        {
            var allInstalled = InstalledPackage.GetAllInstalledPackages();
            var found        = allInstalled.FirstOrDefault(x =>
            {
                if (x.Data.Name != name)
                {
                    return(false);
                }
                //match the exact version
                if (x.Data.Version == version)
                {
                    return(true);
                }
                //now try to compare the versions
                Version installed;
                Version selected;
                if (Version.TryParse(x.Data.Version, out installed) && Version.TryParse(version, out selected))
                {
                    if (installed >= selected)
                    {
                        return(true);
                    }
                }
                return(false);
            });

            if (found != null)
            {
                //this package is already installed
                return(false);
            }
            return(true);
        }
コード例 #5
0
        public void Install()
        {
            List <InstalledPackage> teaCommercePackages = InstalledPackage.GetAllInstalledPackages().Where(ip => ip.Data.Name.Equals("Tea Commerce") || ip.Data.Name.Equals("teacommerce")).ToList();

            if (teaCommercePackages.Count > 1)
            {
                teaCommercePackages.RemoveAt(teaCommercePackages.Count - 1);
                foreach (InstalledPackage package in teaCommercePackages)
                {
                    package.Delete();
                }
            }
        }
コード例 #6
0
        public bool Execute(string packageName, XmlNode xmlData)
        {
            List <InstalledPackage> teaCommercePackages = InstalledPackage.GetAllInstalledPackages().Where(ip => ip.Data.Name.Equals("Tea Commerce") || ip.Data.Name.Equals("teacommerce")).ToList();

            if (teaCommercePackages.Count > 1)
            {
                teaCommercePackages.RemoveAt(teaCommercePackages.Count - 1);
                foreach (InstalledPackage package in teaCommercePackages)
                {
                    package.Delete();
                }
            }
            return(true);
        }
コード例 #7
0
        public bool Execute(string packageName, XmlNode xmlData)
        {
            List <InstalledPackage> list = InstalledPackage.GetAllInstalledPackages().Where(x => x.Data.Name.Equals("TheDashboard")).ToList();

            if (list.Count > 1)
            {
                list.RemoveAt(list.Count - 1);
                foreach (InstalledPackage package in list)
                {
                    package.Delete();
                }
            }
            return(true);
        }
コード例 #8
0
        public PingData GetPingData()
        {
            PingData pingData = null;

            InstalledPackage package = InstalledPackage.GetAllInstalledPackages().SingleOrDefault(ip => ip.Data.Name.Equals("Tea Commerce") || ip.Data.Name.Equals("teacommerce"));

            if (package != null)
            {
                string        teaCommerceVersion = package.Data.Version;
                const string  cms                = "Umbraco";
                string        cmsVersion         = UmbracoVersion.Current.ToString();
                string        databaseTechnology = _databaseFactory.Get().DatabaseType.ToString();
                string        technology         = "ASP.NET Web Forms";
                List <string> renderingEngines   = new List <string>();

                XmlNode renderingEngineXml = UmbracoSettings._umbracoSettings.SelectSingleNode("//templates/defaultRenderingEngine");
                if (renderingEngineXml != null && renderingEngineXml.InnerText.ToLowerInvariant() == "mvc")
                {
                    technology = "ASP.NET MVC";
                }

                if (technology == "ASP.NET MVC")
                {
                    renderingEngines.Add("Razor");
                }
                else
                {
                    string macroScriptsFolderPath = HostingEnvironment.MapPath("~/macroScripts");
                    if (macroScriptsFolderPath != null && Directory.Exists(macroScriptsFolderPath) && Directory.GetFiles(macroScriptsFolderPath, "*.cshtml", SearchOption.AllDirectories).Any())
                    {
                        renderingEngines.Add("Razor");
                    }
                }

                string xsltFolderPath = HostingEnvironment.MapPath("~/xslt");
                if (xsltFolderPath != null && Directory.Exists(xsltFolderPath) && Directory.GetFiles(xsltFolderPath, "*.xslt", SearchOption.AllDirectories).Any())
                {
                    renderingEngines.Add("XSLT");
                }

                pingData = new PingData(teaCommerceVersion, cms, cmsVersion, databaseTechnology, technology)
                {
                    RenderingEngines = renderingEngines
                };
            }

            return(pingData);
        }
コード例 #9
0
        public List <PackageInstance> GetPackages()
        {
            var allPackages = new List <PackageInstance>();

            //Get packages
            var packages = InstalledPackage.GetAllInstalledPackages();

            //loop over them
            foreach (var item in packages)
            {
                allPackages.Add(item.Data);
            }

            //Return the list
            return(allPackages);
        }
コード例 #10
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //check if a starter kit is already isntalled

            var installed = InstalledPackage.GetAllInstalledPackages();

            if (installed.Count == 0)
            {
                ShowStarterKits();
                return;
            }

            var repo = global::umbraco.cms.businesslogic.packager.repositories.Repository.getByGuid(RepoGuid);

            if (repo.HasConnection())
            {
                try
                {
                    var kits   = repo.Webservice.StarterKits();
                    var kitIds = kits.Select(x => x.RepoGuid).ToArray();

                    //if a starter kit is already installed show finish
                    if (installed.Any(x => kitIds.Contains(Guid.Parse(x.Data.PackageGuid))))
                    {
                        StarterKitNotInstalled.Visible = false;
                        installationCompleted.Visible  = true;
                    }
                    else
                    {
                        ShowStarterKits();
                    }
                }
                catch (Exception ex)
                {
                    LogHelper.Error <StarterKits>("Cannot connect to package repository", ex);
                    InstallationDirectoryNotAvailable.Visible = true;
                    StarterKitNotInstalled.Visible            = false;
                }
            }
            else
            {
                InstallationDirectoryNotAvailable.Visible = true;
                StarterKitNotInstalled.Visible            = false;
            }
        }
コード例 #11
0
        public override bool RequiresExecution(Guid?model)
        {
            //Don't execute if it's an empty GUID - meaning the user has chosen not to install one
            if (model.HasValue && model.Value == Guid.Empty)
            {
                return(false);
            }

            if (InstalledPackage.GetAllInstalledPackages().Count > 0)
            {
                return(false);
            }

            if (_applicationContext.Services.ContentService.GetRootContent().Any())
            {
                return(false);
            }

            return(true);
        }
コード例 #12
0
ファイル: Skinning.cs プロジェクト: KerwinMa/justEdit-
        public override bool Completed()
        {
            if (!String.IsNullOrEmpty(GlobalSettings.ConfigurationStatus.Trim()))
            {
                return(true);
            }

            if (InstalledPackage.GetAllInstalledPackages().Count > 0)
            {
                return(true);
            }

            if (Document.GetRootDocuments().Count() > 0)
            {
                return(true);
            }


            return(false);
        }
コード例 #13
0
ファイル: Skinning.cs プロジェクト: KerwinMa/Umbraco
        public override bool Completed()
        {
            if (String.IsNullOrWhiteSpace(GlobalSettings.ConfigurationStatus) == false)
            {
                return(true);
            }

            if (InstalledPackage.GetAllInstalledPackages().Count > 0)
            {
                return(true);
            }

            if (Document.GetRootDocuments().Count() > 0)
            {
                return(true);
            }


            return(false);
        }
コード例 #14
0
        public async Task <HttpResponseMessage> Get()
        {
            var umbracoVersion   = UmbracoVersion.Current;
            var footprintVersion = InstalledPackage.GetAllInstalledPackages()
                                   .Select(x => x.Data)
                                   .Concat(CreatedPackage.GetAllCreatedPackages().Select(x => x.Data))
                                   .Where(x => x.Name == "Novicell Footprint")
                                   .Select(x => x.Version)
                                   .FirstOrDefault();

            if (footprintVersion == null)
            {
                LogHelper.Warn <DashboardController>("Footprint version is null.");
            }

            using (var http = new HttpClient())
            {
                return(await http.GetAsync($"http://novicell.io/Umbraco/Api/Documentation/Get?umbracoVersion={umbracoVersion}&packageVersion={footprintVersion}&cache={Random.Next()}"));
            }
        }
コード例 #15
0
        //borrowed from Core
        private bool IsPackageVersionAlreadyInstalled(string name, string version, out bool sameVersion, out int packageId)
        {
            var allInstalled = InstalledPackage.GetAllInstalledPackages();
            var found        = allInstalled.Where(x => x.Data.Name == name).ToArray();

            sameVersion = false;

            if (found.Length > 0)
            {
                var foundVersion = found.FirstOrDefault(x =>
                {
                    //match the exact version
                    if (x.Data.Version == version)
                    {
                        return(true);
                    }
                    //now try to compare the versions
                    if (Version.TryParse(x.Data.Version, out Version installed) && Version.TryParse(version, out Version selected))
                    {
                        if (installed >= selected)
                        {
                            return(true);
                        }
                    }
                    return(false);
                });

                sameVersion = foundVersion != null;

                //this package is already installed, find the highest package id for this package name that is installed
                packageId = found.Max(x => x.Data.Id);
                return(true);
            }

            packageId = -1;
            return(false);
        }
コード例 #16
0
        public override void Render(ref XmlTree tree)
        {
            _packageType = HttpContext.Current.Request.QueryString["packageType"];

            switch (_packageType)
            {
            case "installed":
                Version v;
                // Display the unique packages, ordered by the latest version number. [LK 2013-06-10]
                var uniquePackages = InstalledPackage.GetAllInstalledPackages()
                                     .OrderByDescending(x => Version.TryParse(x.Data.Version, out v) ? v : new Version())
                                     .GroupBy(x => x.Data.Name)
                                     .Select(x => x.First())
                                     .OrderBy(x => x.Data.Name);
                foreach (var p in uniquePackages)
                {
                    var xNode = XmlTreeNode.Create(this);
                    xNode.NodeID   = string.Concat(PACKAGE_TREE_PREFIX, p.Data.Id);
                    xNode.Text     = p.Data.Name;
                    xNode.Action   = string.Format("javascript:openInstalledPackage('{0}');", p.Data.Id);
                    xNode.Icon     = "icon-box";
                    xNode.OpenIcon = "icon-box";
                    xNode.NodeType = "createdPackageInstance";
                    tree.Add(xNode);
                }
                break;

            case "created":
                foreach (CreatedPackage p in CreatedPackage.GetAllCreatedPackages())
                {
                    XmlTreeNode xNode = XmlTreeNode.Create(this);
                    xNode.NodeID   = PACKAGE_TREE_PREFIX + p.Data.Id.ToString();
                    xNode.Text     = p.Data.Name;
                    xNode.Action   = "javascript:openCreatedPackage('" + p.Data.Id.ToString() + "');";
                    xNode.Icon     = "icon-box";
                    xNode.OpenIcon = "icon-box";
                    xNode.NodeType = "createdPackageInstance";
                    xNode.Menu.Add(umbraco.BusinessLogic.Actions.ActionDelete.Instance);
                    tree.Add(xNode);
                }
                break;

            case "repositories":
                List <cms.businesslogic.packager.repositories.Repository> repos = cms.businesslogic.packager.repositories.Repository.getAll();

                foreach (cms.businesslogic.packager.repositories.Repository repo in repos)
                {
                    XmlTreeNode xNode = XmlTreeNode.Create(this);
                    xNode.Text     = repo.Name;
                    xNode.Action   = "javascript:openPackageCategory('BrowseRepository.aspx?repoGuid=" + repo.Guid + "');";
                    xNode.Icon     = "icon-server-alt";
                    xNode.OpenIcon = "icon-server-alt";
                    xNode.NodeType = "packagesRepo" + repo.Guid;
                    xNode.Menu.Add(umbraco.BusinessLogic.Actions.ActionRefresh.Instance);
                    xNode.Source = "tree.aspx?app=" + this._app + "&id=" + this._id + "&treeType=packagerPackages&packageType=repository&repoGuid=" + repo.Guid + "&rnd=" + Guid.NewGuid();
                    tree.Add(xNode);
                }

                break;

            case "repository":

                _repoGuid = HttpContext.Current.Request.QueryString["repoGuid"];
                Umbraco.Web.org.umbraco.our.Repository r = new Umbraco.Web.org.umbraco.our.Repository();

                foreach (var cat in r.Categories(_repoGuid))
                {
                    XmlTreeNode xNode = XmlTreeNode.Create(this);
                    xNode.NodeID   = cat.Id.ToInvariantString();
                    xNode.Text     = cat.Text;
                    xNode.Action   = "javascript:openPackageCategory('BrowseRepository.aspx?category=" + cat.Id + "&repoGuid=" + _repoGuid + "');";
                    xNode.Icon     = "icon-folder";
                    xNode.OpenIcon = "icon-folder";
                    xNode.NodeType = "packagesCategory" + cat.Id;
                    tree.Add(xNode);
                }

                break;
            }
        }
コード例 #17
0
        public override void Render(ref XmlTree tree)
        {
            m_packageType = HttpContext.Current.Request.QueryString["packageType"];

            switch (m_packageType)
            {
            case "installed":
                Version v;
                // Display the unique packages, ordered by the latest version number. [LK 2013-06-10]
                var uniquePackages = InstalledPackage.GetAllInstalledPackages()
                                     .OrderByDescending(x => Version.TryParse(x.Data.Version, out v) ? v : new Version())
                                     .GroupBy(x => x.Data.Name)
                                     .Select(x => x.First())
                                     .OrderBy(x => x.Data.Id);
                foreach (var p in uniquePackages)
                {
                    var xNode = XmlTreeNode.Create(this);
                    xNode.NodeID   = string.Concat(PACKAGE_TREE_PREFIX, p.Data.Id);
                    xNode.Text     = p.Data.Name;
                    xNode.Action   = string.Format("javascript:openInstalledPackage('{0}');", p.Data.Id);
                    xNode.Icon     = "package.gif";
                    xNode.OpenIcon = "package.gif";
                    xNode.NodeType = "createdPackageInstance";
                    xNode.Menu     = null;
                    tree.Add(xNode);
                }
                break;

            case "created":
                foreach (cms.businesslogic.packager.CreatedPackage p in cms.businesslogic.packager.CreatedPackage.GetAllCreatedPackages())
                {
                    XmlTreeNode xNode = XmlTreeNode.Create(this);
                    xNode.NodeID   = PACKAGE_TREE_PREFIX + p.Data.Id.ToString();
                    xNode.Text     = p.Data.Name;
                    xNode.Action   = "javascript:openCreatedPackage('" + p.Data.Id.ToString() + "');";
                    xNode.Icon     = "package.gif";
                    xNode.OpenIcon = "package.gif";
                    xNode.NodeType = "createdPackageInstance";
//                        xNode.Menu.Add( umbraco.BusinessLogic.Actions.ActionDelete.Instance );

                    tree.Add(xNode);
                }
                break;

            case "repositories":
                List <cms.businesslogic.packager.repositories.Repository> repos = cms.businesslogic.packager.repositories.Repository.getAll();

                foreach (cms.businesslogic.packager.repositories.Repository repo in repos)
                {
                    XmlTreeNode xNode = XmlTreeNode.Create(this);
                    xNode.Text     = repo.Name;
                    xNode.Action   = "javascript:openPackageCategory('BrowseRepository.aspx?repoGuid=" + repo.Guid + "');";
                    xNode.Icon     = "repository.gif";
                    xNode.OpenIcon = "repository.gif";
                    xNode.NodeType = "packagesRepo" + repo.Guid;
                    xNode.Menu.Add(umbraco.BusinessLogic.Actions.ActionRefresh.Instance);
                    xNode.Source = "tree.aspx?app=" + this.m_app + "&id=" + this.m_id + "&treeType=packagerPackages&packageType=repository&repoGuid=" + repo.Guid + "&rnd=" + Guid.NewGuid();
                    tree.Add(xNode);

                    /*
                     * XmlElement catElement = Tree.CreateElement("tree");
                     * catElement.SetAttribute("text", repo.Name);
                     * catElement.SetAttribute("menu", "L");
                     *
                     * catElement.SetAttribute("icon", "repository.gif");
                     * catElement.SetAttribute("openIcon", "repository.gif");
                     *
                     * catElement.SetAttribute("nodeType", "packagesRepo" + repo.Guid);
                     * catElement.SetAttribute("src", "tree.aspx?app=" + this.m_app + "&id=" + this.m_id + "&treeType=packagerPackages&packageType=repository&repoGuid=" + repo.Guid + "&rnd=" + Guid.NewGuid());
                     * catElement.SetAttribute("action", "javascript:openPackageCategory('BrowseRepository.aspx?repoGuid=" + repo.Guid + "');");
                     * root.AppendChild(catElement);
                     * */
                }

                break;

            case "repository":

                m_repoGuid = HttpContext.Current.Request.QueryString["repoGuid"];
                cms.businesslogic.packager.repositories.Repository currentRepo = cms.businesslogic.packager.repositories.Repository.getByGuid(m_repoGuid);
                if (currentRepo != null)
                {
                    foreach (cms.businesslogic.packager.repositories.Category cat in currentRepo.Webservice.Categories(currentRepo.Guid))
                    {
                        XmlTreeNode xNode = XmlTreeNode.Create(this);
                        xNode.Text     = cat.Text;
                        xNode.Action   = "javascript:openPackageCategory('BrowseRepository.aspx?category=" + cat.Id + "&repoGuid=" + currentRepo.Guid + "');";
                        xNode.Icon     = "folder.gif";
                        xNode.OpenIcon = "folder.gif";
                        xNode.NodeType = "packagesCategory" + cat.Id;
                        tree.Add(xNode);

                        /*
                         * XmlElement catElement = Tree.CreateElement("tree");
                         * catElement.SetAttribute("text", cat.Text);
                         * //catElement.SetAttribute("menu", "");
                         * catElement.SetAttribute("icon", "folder.gif");
                         * catElement.SetAttribute("openIcon", "folder_o.gif");
                         * catElement.SetAttribute("nodeType", "packagesCategory" + cat.Id);
                         * catElement.SetAttribute("action", "javascript:openPackageCategory('BrowseRepository.aspx?category=" + cat.Id + "&repoGuid=" + currentRepo.Guid + "');");
                         * root.AppendChild(catElement);*/
                    }
                }
                break;
            }
        }