diff --git a/src/Umbraco.Core/Configuration/UmbracoSettings/IRepository.cs b/src/Umbraco.Core/Configuration/UmbracoSettings/IRepository.cs index f7815e4103..bb1757748c 100644 --- a/src/Umbraco.Core/Configuration/UmbracoSettings/IRepository.cs +++ b/src/Umbraco.Core/Configuration/UmbracoSettings/IRepository.cs @@ -6,5 +6,8 @@ namespace Umbraco.Core.Configuration.UmbracoSettings { string Name { get; } Guid Id { get; } + string RepositoryUrl { get; } + string WebServiceUrl { get; } + bool HasCustomWebServiceUrl { get; } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Configuration/UmbracoSettings/RepositoryElement.cs b/src/Umbraco.Core/Configuration/UmbracoSettings/RepositoryElement.cs index d88b56add8..4f2b8931ee 100644 --- a/src/Umbraco.Core/Configuration/UmbracoSettings/RepositoryElement.cs +++ b/src/Umbraco.Core/Configuration/UmbracoSettings/RepositoryElement.cs @@ -5,19 +5,42 @@ namespace Umbraco.Core.Configuration.UmbracoSettings { internal class RepositoryElement : ConfigurationElement, IRepository { - [ConfigurationProperty("name")] + [ConfigurationProperty("name", IsRequired = true)] public string Name { get { return (string)base["name"]; } set { base["name"] = value; } } - [ConfigurationProperty("guid")] + [ConfigurationProperty("guid", IsRequired = true)] public Guid Id { get { return (Guid)base["guid"]; } set { base["guid"] = value; } } + [ConfigurationProperty("repositoryurl", DefaultValue = "http://packages.umbraco.org")] + public string RepositoryUrl + { + get { return (string)base["repositoryurl"]; } + set { base["repositoryurl"] = value; } + } + + [ConfigurationProperty("repositoryurl", DefaultValue = "/umbraco/webservices/api/repository.asmx")] + public string WebServiceUrl + { + get { return (string)base["repositoryurl"]; } + set { base["repositoryurl"] = value; } + } + + public bool HasCustomWebServiceUrl + { + get + { + var prop = Properties["repositoryurl"]; + var repoUrl = this[prop] as ConfigurationElement; + return (repoUrl != null && repoUrl.ElementInformation.IsPresent); + } + } } } \ No newline at end of file diff --git a/src/Umbraco.Web.UI/install/steps/Skinning/LoadStarterKits.ascx.cs b/src/Umbraco.Web.UI/install/steps/Skinning/LoadStarterKits.ascx.cs index 1cb969985d..5c8f77f9f1 100644 --- a/src/Umbraco.Web.UI/install/steps/Skinning/LoadStarterKits.ascx.cs +++ b/src/Umbraco.Web.UI/install/steps/Skinning/LoadStarterKits.ascx.cs @@ -64,6 +64,11 @@ namespace Umbraco.Web.UI.Install.Steps.Skinning { base.OnInit(e); + if (_repo == null) + { + throw new InvalidOperationException("Could not find repository with id " + RepoGuid); + } + //clear progressbar cache InstallHelper.ClearProgress(); diff --git a/src/Umbraco.Web.UI/install/steps/Skinning/loadStarterKitDesigns.ascx.cs b/src/Umbraco.Web.UI/install/steps/Skinning/loadStarterKitDesigns.ascx.cs index 65226533b3..b45e00e586 100644 --- a/src/Umbraco.Web.UI/install/steps/Skinning/loadStarterKitDesigns.ascx.cs +++ b/src/Umbraco.Web.UI/install/steps/Skinning/loadStarterKitDesigns.ascx.cs @@ -38,6 +38,11 @@ namespace Umbraco.Web.UI.Install.Steps.Skinning { base.OnInit(e); + if (_repo == null) + { + throw new InvalidOperationException("Could not find repository with id " + RepoGuid); + } + if (_repo.HasConnection()) { try diff --git a/src/Umbraco.Web/Cache/DistributedCacheExtensions.cs b/src/Umbraco.Web/Cache/DistributedCacheExtensions.cs index 54087db3a1..04ddd7e696 100644 --- a/src/Umbraco.Web/Cache/DistributedCacheExtensions.cs +++ b/src/Umbraco.Web/Cache/DistributedCacheExtensions.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Linq; using Umbraco.Core; +using Umbraco.Core.Configuration; using Umbraco.Core.Models; using umbraco; using umbraco.cms.businesslogic.web; diff --git a/src/Umbraco.Web/Install/InstallPackageController.cs b/src/Umbraco.Web/Install/InstallPackageController.cs index 8531303090..8944f27ae7 100644 --- a/src/Umbraco.Web/Install/InstallPackageController.cs +++ b/src/Umbraco.Web/Install/InstallPackageController.cs @@ -53,6 +53,10 @@ namespace Umbraco.Web.Install public JsonResult DownloadPackageFiles(Guid kitGuid) { var repo = global::umbraco.cms.businesslogic.packager.repositories.Repository.getByGuid(RepoGuid); + if (repo == null) + { + return Json(new { success = false, error = "No repository found with id " + RepoGuid }); + } if (!repo.HasConnection()) { return Json(new {success = false, error = "cannot_connect"}); diff --git a/src/Umbraco.Web/LegacyScheduledTasks.cs b/src/Umbraco.Web/LegacyScheduledTasks.cs index edfcc5ec54..7c2557a872 100644 --- a/src/Umbraco.Web/LegacyScheduledTasks.cs +++ b/src/Umbraco.Web/LegacyScheduledTasks.cs @@ -6,6 +6,7 @@ using System.Threading; using System.Web; using System.Web.Caching; using Umbraco.Core; +using Umbraco.Core.Configuration; using Umbraco.Core.Logging; using global::umbraco.BusinessLogic; @@ -54,8 +55,8 @@ namespace Umbraco.Web int interval = 24 * 60 * 60; //24 hours try { - if (global::umbraco.UmbracoConfiguration.Current.UmbracoSettings.Logging.CleaningMiliseconds > -1) - interval = global::umbraco.UmbracoConfiguration.Current.UmbracoSettings.Logging.CleaningMiliseconds; + if (UmbracoConfiguration.Current.UmbracoSettings.Logging.CleaningMiliseconds > -1) + interval = UmbracoConfiguration.Current.UmbracoSettings.Logging.CleaningMiliseconds; } catch (Exception e) { @@ -69,8 +70,8 @@ namespace Umbraco.Web int maximumAge = 24 * 60 * 60; try { - if (global::umbraco.UmbracoConfiguration.Current.UmbracoSettings.Logging.MaxLogAge > -1) - maximumAge = global::umbraco.UmbracoConfiguration.Current.UmbracoSettings.Logging.MaxLogAge; + if (UmbracoConfiguration.Current.UmbracoSettings.Logging.MaxLogAge > -1) + maximumAge = UmbracoConfiguration.Current.UmbracoSettings.Logging.MaxLogAge; } catch (Exception e) { diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/LiveEditing/Modules/SkinModule/ModuleInstaller.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/LiveEditing/Modules/SkinModule/ModuleInstaller.aspx.cs index eb9014cdf4..1c3cbd306d 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/LiveEditing/Modules/SkinModule/ModuleInstaller.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/LiveEditing/Modules/SkinModule/ModuleInstaller.aspx.cs @@ -17,6 +17,12 @@ namespace umbraco.presentation.umbraco.LiveEditing.Modules.SkinModule public ModuleInstaller() { _repo = cms.businesslogic.packager.repositories.Repository.getByGuid(RepoGuid); + + if (_repo == null) + { + throw new InvalidOperationException("Could not find repository with id " + RepoGuid); + } + //for skinning, you need to be a developer CurrentApp = DefaultApps.developer.ToString(); } diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/LiveEditing/Modules/SkinModule/ModuleSelector.ascx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/LiveEditing/Modules/SkinModule/ModuleSelector.ascx.cs index 629e063baf..4e3df9371a 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/LiveEditing/Modules/SkinModule/ModuleSelector.ascx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/LiveEditing/Modules/SkinModule/ModuleSelector.ascx.cs @@ -20,6 +20,11 @@ namespace umbraco.presentation.umbraco.LiveEditing.Modules.SkinModule public ModuleSelector() { this.repo = cms.businesslogic.packager.repositories.Repository.getByGuid(this.repoGuid); + + if (repo == null) + { + throw new InvalidOperationException("Could not find repository with id " + this.repoGuid); + } } protected void Page_Load(object sender, EventArgs e) diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/LiveEditing/Modules/SkinModule/SkinCustomizer.ascx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/LiveEditing/Modules/SkinModule/SkinCustomizer.ascx.cs index 75194be3b2..b494147ef6 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/LiveEditing/Modules/SkinModule/SkinCustomizer.ascx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/LiveEditing/Modules/SkinModule/SkinCustomizer.ascx.cs @@ -4,12 +4,12 @@ using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; +using Umbraco.Core.IO; using Umbraco.Core.Logging; using umbraco.cms.businesslogic.skinning; using System.Xml; using System.Text; using umbraco.interfaces.skinning; -using umbraco.IO; using umbraco.cms.businesslogic.template; using umbraco.BusinessLogic; using umbraco.NodeFactory; @@ -157,12 +157,12 @@ namespace umbraco.presentation.LiveEditing.Modules.SkinModule protected void LoadSkins() { - List skinNames = new List(); + var skinNames = new List(); - Guid? nullable = Skinning.StarterKitGuid(Node.GetCurrent().template); + var nullable = Skinning.StarterKitGuid(Node.GetCurrent().template); if(nullable.HasValue){ - InstalledPackage p = InstalledPackage.GetByGuid(nullable.Value.ToString()); + var p = InstalledPackage.GetByGuid(nullable.Value.ToString()); if(p.Data.SkinRepoGuid != null && p.Data.SkinRepoGuid != Guid.Empty && p.Data.SkinRepoGuid.ToString() != repoGuid) this.repo = cms.businesslogic.packager.repositories.Repository.getByGuid(p.Data.SkinRepoGuid.ToString()); } diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadPackages.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadPackages.cs index dc42af8820..2b4e95b846 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadPackages.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadPackages.cs @@ -121,7 +121,7 @@ namespace umbraco case "repository": m_repoGuid = HttpContext.Current.Request.QueryString["repoGuid"]; - cms.businesslogic.packager.repositories.Repository currentRepo = cms.businesslogic.packager.repositories.Repository.getByGuid(m_repoGuid); + var currentRepo = cms.businesslogic.packager.repositories.Repository.getByGuid(m_repoGuid); if (currentRepo != null) { @@ -233,7 +233,7 @@ namespace umbraco case "repository": m_repoGuid = HttpContext.Current.Request.QueryString["repoGuid"]; - cms.businesslogic.packager.repositories.Repository currentRepo = cms.businesslogic.packager.repositories.Repository.getByGuid(m_repoGuid); + var currentRepo = cms.businesslogic.packager.repositories.Repository.getByGuid(m_repoGuid); if (currentRepo != null) { diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/BrowseRepository.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/BrowseRepository.aspx.cs index 1d5c9a01bc..95471ece48 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/BrowseRepository.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/BrowseRepository.aspx.cs @@ -34,7 +34,12 @@ namespace umbraco.presentation.developer.packages { string category = Request.QueryString["category"]; string repoGuid = Request.QueryString["repoGuid"]; - cms.businesslogic.packager.repositories.Repository repo = cms.businesslogic.packager.repositories.Repository.getByGuid(repoGuid); + var repo = cms.businesslogic.packager.repositories.Repository.getByGuid(repoGuid); + if (repo == null) + { + throw new InvalidOperationException("Could not find repository with id " + repoGuid); + } + string url = repo.RepositoryUrl; Panel1.Text = "Browse repository: " + repo.Name; diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/LoadNitros.ascx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/LoadNitros.ascx.cs index ae4c511371..59ff27b0ec 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/LoadNitros.ascx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/LoadNitros.ascx.cs @@ -26,8 +26,13 @@ namespace umbraco.presentation.developer.packages { string repoGuid = "65194810-1f85-11dd-bd0b-0800200c9a66"; //Hardcoded official package repo key. - cms.businesslogic.packager.Installer p = new cms.businesslogic.packager.Installer(); - cms.businesslogic.packager.repositories.Repository repo = cms.businesslogic.packager.repositories.Repository.getByGuid(repoGuid); + var p = new cms.businesslogic.packager.Installer(); + var repo = cms.businesslogic.packager.repositories.Repository.getByGuid(repoGuid); + + if (repo == null) + { + throw new InvalidOperationException("Could not find repository with id " + repoGuid); + } foreach (CheckBox cb in _nitroList) { if (cb.Checked) { @@ -155,9 +160,14 @@ namespace umbraco.presentation.developer.packages { base.OnInit(e); string repoGuid = "65194810-1f85-11dd-bd0b-0800200c9a66"; - cms.businesslogic.packager.repositories.Repository repo = cms.businesslogic.packager.repositories.Repository.getByGuid(repoGuid); + var repo = cms.businesslogic.packager.repositories.Repository.getByGuid(repoGuid); - uicontrols.Feedback fb = new global::umbraco.uicontrols.Feedback(); + if (repo == null) + { + throw new InvalidOperationException("Could not find repository with id " + repoGuid); + } + + var fb = new global::umbraco.uicontrols.Feedback(); fb.type = global::umbraco.uicontrols.Feedback.feedbacktype.error; fb.Text = "No connection to repository. Modules could not be fetched from the repository as there was no connection to: '" + repo.RepositoryUrl + "'"; diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/SubmitPackage.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/SubmitPackage.aspx.cs index 2b3a32e24b..67e69a4b99 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/SubmitPackage.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/SubmitPackage.aspx.cs @@ -77,8 +77,14 @@ namespace umbraco.presentation.developer.packages { if (Page.IsValid) { try { - cms.businesslogic.packager.repositories.Repository repo = cms.businesslogic.packager.repositories.Repository.getByGuid(dd_repositories.SelectedValue); - string memberKey = repo.Webservice.authenticate(tb_email.Text, library.md5(tb_password.Text)); + var repo = cms.businesslogic.packager.repositories.Repository.getByGuid(dd_repositories.SelectedValue); + + if (repo == null) + { + throw new InvalidOperationException("Could not find repository with id " + dd_repositories.SelectedValue); + } + + var memberKey = repo.Webservice.authenticate(tb_email.Text, library.md5(tb_password.Text)); byte[] doc = new byte[0]; diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installer.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installer.aspx.cs index cf766f7737..bdf76d2b9b 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installer.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installer.aspx.cs @@ -68,8 +68,8 @@ namespace umbraco.presentation.developer.packages { //we'll fetch the local information we have about our repo, to find out what webservice to query. _repo = cms.businesslogic.packager.repositories.Repository.getByGuid(Request.GetItemAsString("repoGuid")); - - if (_repo.HasConnection()) + + if (_repo != null && _repo.HasConnection()) { //from the webservice we'll fetch some info about the package. cms.businesslogic.packager.repositories.Package pack = _repo.Webservice.PackageByGuid(Request.GetItemAsString("guid")); diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/TemplateSkinning.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/TemplateSkinning.aspx.cs index 067077ef6f..78c6ef69f6 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/TemplateSkinning.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/TemplateSkinning.aspx.cs @@ -23,6 +23,11 @@ namespace umbraco.presentation.umbraco.dialogs { CurrentApp = DefaultApps.settings.ToString(); _repo = cms.businesslogic.packager.repositories.Repository.getByGuid(RepoGuid); + + if (_repo == null) + { + throw new InvalidOperationException("Could not find repository with id " + RepoGuid); + } } protected void Page_Load(object sender, EventArgs e) diff --git a/src/umbraco.cms/businesslogic/Packager/Repositories/Repository.cs b/src/umbraco.cms/businesslogic/Packager/Repositories/Repository.cs index 7524deca36..64a415579f 100644 --- a/src/umbraco.cms/businesslogic/Packager/Repositories/Repository.cs +++ b/src/umbraco.cms/businesslogic/Packager/Repositories/Repository.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Text; using System.Xml; using System.IO; @@ -8,50 +9,36 @@ using Umbraco.Core.Configuration; using Umbraco.Core.Logging; using umbraco.IO; -namespace umbraco.cms.businesslogic.packager.repositories { - public class Repository { +namespace umbraco.cms.businesslogic.packager.repositories +{ + public class Repository + { + public string Guid { get; private set; } - private string m_guid; - private string m_name; + public string Name { get; private set; } - //this is our standard urls. - private string m_repositoryUrl = "http://packages.umbraco.org"; - private string m_webserviceUrl = "/umbraco/webservices/api/repository.asmx"; + public string RepositoryUrl { get; private set; } + + public string WebserviceUrl { get; private set; } - private static XmlNode m_repositories = UmbracoSettings.Repositories; + public RepositoryWebservice Webservice + { + get + { - public string Guid { - get { return m_guid; } - } - - public string Name { - get { return m_name; } - } - - public string RepositoryUrl { - get { return m_repositoryUrl; } - } - - public string WebserviceUrl { - get { return m_webserviceUrl; } - set { m_webserviceUrl = value; } - } - - - public RepositoryWebservice Webservice { - get { - - if (!m_webserviceUrl.Contains("://")) { - m_webserviceUrl = m_repositoryUrl.Trim('/') + "/" + m_webserviceUrl.Trim('/'); + if (!WebserviceUrl.Contains("://")) + { + WebserviceUrl = RepositoryUrl.Trim('/') + "/" + WebserviceUrl.Trim('/'); } - RepositoryWebservice repo = new RepositoryWebservice(m_webserviceUrl); + var repo = new RepositoryWebservice(WebserviceUrl); return repo; } } - public SubmitStatus SubmitPackage(string authorGuid, PackageInstance package, byte[] doc) { + public SubmitStatus SubmitPackage(string authorGuid, PackageInstance package, byte[] doc) + { string packageName = package.Name; string packageGuid = package.PackageGuid; @@ -61,50 +48,54 @@ namespace umbraco.cms.businesslogic.packager.repositories { System.IO.FileStream fs1 = null; - try { + try + { byte[] pack = new byte[0]; fs1 = System.IO.File.Open(IOHelper.MapPath(packageFile), FileMode.Open, FileAccess.Read); pack = new byte[fs1.Length]; - fs1.Read(pack, 0, (int)fs1.Length); + fs1.Read(pack, 0, (int) fs1.Length); fs1.Close(); fs1 = null; byte[] thumb = new byte[0]; //todo upload thumbnail... - return Webservice.SubmitPackage(m_guid, authorGuid, packageGuid, pack, doc, thumb, packageName, "", "", description); - } - catch (Exception ex) - { - LogHelper.Error("An error occurred in SubmitPackage", ex); + return Webservice.SubmitPackage(Guid, authorGuid, packageGuid, pack, doc, thumb, packageName, "", "", description); + } + catch (Exception ex) + { + LogHelper.Error("An error occurred in SubmitPackage", ex); return SubmitStatus.Error; } } - public static List getAll() { + public static List getAll() + { - List repositories = new List(); + var repositories = new List(); - XmlNodeList repositoriesXml = m_repositories.SelectNodes("./repository"); + foreach (var r in UmbracoConfiguration.Current.UmbracoSettings.PackageRepositories.Repositories) + { + var repository = new Repository + { + Guid = r.Id.ToString(), + Name = r.Name + }; - foreach (XmlNode repositoryXml in repositoriesXml) { - Repository repository = new Repository(); - repository.m_guid = repositoryXml.Attributes["guid"].Value; - repository.m_name = repositoryXml.Attributes["name"].Value; + repository.RepositoryUrl = r.RepositoryUrl; + repository.WebserviceUrl = repository.RepositoryUrl.Trim('/') + "/" + repository.WebserviceUrl.Trim('/'); + if (r.HasCustomWebServiceUrl) + { + string wsUrl = r.WebServiceUrl; - if (repositoryXml.Attributes["repositoryurl"] != null) { - repository.m_repositoryUrl = repositoryXml.Attributes["repositoryurl"].Value; - repository.m_webserviceUrl = repository.m_repositoryUrl.Trim('/') + "/" + repository.m_webserviceUrl.Trim('/'); - } - - if (repositoryXml.Attributes["webserviceurl"] != null) { - string wsUrl = repositoryXml.Attributes["webserviceurl"].Value; - - if (wsUrl.Contains("://")) { - repository.m_webserviceUrl = repositoryXml.Attributes["webserviceurl"].Value; - } else { - repository.m_webserviceUrl = repository.m_repositoryUrl.Trim('/') + "/" + wsUrl.Trim('/'); + if (wsUrl.Contains("://")) + { + repository.WebserviceUrl = r.WebServiceUrl; + } + else + { + repository.WebserviceUrl = repository.RepositoryUrl.Trim('/') + "/" + wsUrl.Trim('/'); } } @@ -114,27 +105,40 @@ namespace umbraco.cms.businesslogic.packager.repositories { return repositories; } - public static Repository getByGuid(string repositoryGuid) { - Repository repository = new Repository(); + public static Repository getByGuid(string repositoryGuid) + { + Guid id; + if (System.Guid.TryParse(repositoryGuid, out id) == false) + { + throw new FormatException("The repositoryGuid is not a valid GUID"); + } - XmlNode repositoryXml = m_repositories.SelectSingleNode("./repository [@guid = '" + repositoryGuid + "']"); - if (repositoryXml != null) { - repository.m_guid = repositoryXml.Attributes["guid"].Value; - repository.m_name = repositoryXml.Attributes["name"].Value; + var found = UmbracoConfiguration.Current.UmbracoSettings.PackageRepositories.Repositories.FirstOrDefault(x => x.Id == id); + if (found == null) + { + return null; + } + + var repository = new Repository + { + Guid = found.Id.ToString(), + Name = found.Name + }; - if (repositoryXml.Attributes["repositoryurl"] != null) { - repository.m_repositoryUrl = repositoryXml.Attributes["repositoryurl"].Value; - repository.m_webserviceUrl = repository.m_repositoryUrl.Trim('/') + "/" + repository.m_webserviceUrl.Trim('/'); + repository.RepositoryUrl = found.RepositoryUrl; + repository.WebserviceUrl = repository.RepositoryUrl.Trim('/') + "/" + repository.WebserviceUrl.Trim('/'); + + if (found.HasCustomWebServiceUrl) + { + string wsUrl = found.WebServiceUrl; + + if (wsUrl.Contains("://")) + { + repository.WebserviceUrl = found.WebServiceUrl; } - - if (repositoryXml.Attributes["webserviceurl"] != null) { - string wsUrl = repositoryXml.Attributes["webserviceurl"].Value; - - if (wsUrl.Contains("://")) { - repository.m_webserviceUrl = repositoryXml.Attributes["webserviceurl"].Value; - } else { - repository.m_webserviceUrl = repository.m_repositoryUrl.Trim('/') + "/" + wsUrl.Trim('/'); - } + else + { + repository.WebserviceUrl = repository.RepositoryUrl.Trim('/') + "/" + wsUrl.Trim('/'); } } @@ -142,29 +146,35 @@ namespace umbraco.cms.businesslogic.packager.repositories { } //shortcut method to download pack from repo and place it on the server... - public string fetch(string packageGuid) { + public string fetch(string packageGuid) + { return fetch(packageGuid, string.Empty); } - public bool HasConnection() { - + public bool HasConnection() + { + string strServer = this.RepositoryUrl; - try { + try + { - HttpWebRequest reqFP = (HttpWebRequest)HttpWebRequest.Create(strServer); - HttpWebResponse rspFP = (HttpWebResponse)reqFP.GetResponse(); + HttpWebRequest reqFP = (HttpWebRequest) HttpWebRequest.Create(strServer); + HttpWebResponse rspFP = (HttpWebResponse) reqFP.GetResponse(); - if (HttpStatusCode.OK == rspFP.StatusCode) { + if (HttpStatusCode.OK == rspFP.StatusCode) + { // HTTP = 200 - Internet connection available, server online rspFP.Close(); return true; - } else { + } + else + { // Other status - Server or connection not available @@ -174,7 +184,9 @@ namespace umbraco.cms.businesslogic.packager.repositories { } - } catch (WebException) { + } + catch (WebException) + { // Exception - connection not available @@ -182,22 +194,27 @@ namespace umbraco.cms.businesslogic.packager.repositories { } } - - public string fetch(string packageGuid, string key) { + + public string fetch(string packageGuid, string key) + { byte[] fileByteArray = new byte[0]; - if (key == string.Empty) { + if (key == string.Empty) + { if (UmbracoConfiguration.Current.UmbracoSettings.Content.UseLegacyXmlSchema) fileByteArray = this.Webservice.fetchPackage(packageGuid); else fileByteArray = this.Webservice.fetchPackageByVersion(packageGuid, Version.Version41); - } else { + } + else + { fileByteArray = this.Webservice.fetchProtectedPackage(packageGuid, key); } //successfull - if (fileByteArray.Length > 0) { + if (fileByteArray.Length > 0) + { // Check for package directory if (!System.IO.Directory.Exists(IOHelper.MapPath(packager.Settings.PackagerRoot))) @@ -212,13 +229,13 @@ namespace umbraco.cms.businesslogic.packager.repositories { return "packages\\" + packageGuid + ".umb"; - } else { + } + else + { return ""; } } - - - + } } diff --git a/src/umbraco.cms/businesslogic/datatype/FileHandlerData.cs b/src/umbraco.cms/businesslogic/datatype/FileHandlerData.cs index be889d4104..429c263011 100644 --- a/src/umbraco.cms/businesslogic/datatype/FileHandlerData.cs +++ b/src/umbraco.cms/businesslogic/datatype/FileHandlerData.cs @@ -2,9 +2,11 @@ using System.Configuration; using System.Globalization; using System.IO; +using System.Linq; using System.Web; using System.Xml; using Umbraco.Core.Configuration; +using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.IO; using Umbraco.Core.Media; using umbraco.cms.businesslogic.Files; @@ -101,11 +103,10 @@ namespace umbraco.cms.businesslogic.datatype } // check for auto fill of other properties (width, height, extension and filesize) - if (UmbracoSettings.ImageAutoFillImageProperties != null) + if (UmbracoConfiguration.Current.UmbracoSettings.Content.Imaging.ImageAutoFillProperties.Any()) { var uploadFieldConfigNode = - UmbracoSettings.ImageAutoFillImageProperties.SelectSingleNode( - string.Format("uploadField [@alias = \"{0}\"]", PropertyTypeAlias)); + UmbracoConfiguration.Current.UmbracoSettings.Content.Imaging.ImageAutoFillProperties.FirstOrDefault(x => x.Alias == PropertyTypeAlias); if (uploadFieldConfigNode != null) { @@ -138,47 +139,53 @@ namespace umbraco.cms.businesslogic.datatype if (PropertyId == default(int)) return; - if (UmbracoSettings.ImageAutoFillImageProperties != null) + if (UmbracoConfiguration.Current.UmbracoSettings.Content.Imaging.ImageAutoFillProperties.Any()) { - XmlNode uploadFieldConfigNode = - UmbracoSettings.ImageAutoFillImageProperties.SelectSingleNode( - string.Format("uploadField [@alias = \"{0}\"]", PropertyTypeAlias)); + var uploadFieldConfigNode = + UmbracoConfiguration.Current.UmbracoSettings.Content.Imaging.ImageAutoFillProperties.FirstOrDefault(x => x.Alias == PropertyTypeAlias); if (uploadFieldConfigNode != null) { // get the current document //Content legacy = Content.GetContentFromVersion(Version); EnsureLoadedContentItem(Version); - // only add dimensions to web images - UpdateContentProperty(uploadFieldConfigNode, LoadedContentItem, "widthFieldAlias", String.Empty); - UpdateContentProperty(uploadFieldConfigNode, LoadedContentItem, "heightFieldAlias", String.Empty); - UpdateContentProperty(uploadFieldConfigNode, LoadedContentItem, "lengthFieldAlias", String.Empty); - UpdateContentProperty(uploadFieldConfigNode, LoadedContentItem, "extensionFieldAlias", String.Empty); + + var prop = LoadedContentItem.getProperty(uploadFieldConfigNode.WidthFieldAlias); + if (prop != null) + prop.Value = String.Empty; + + prop = LoadedContentItem.getProperty(uploadFieldConfigNode.HeightFieldAlias); + if (prop != null) + prop.Value = String.Empty; + + prop = LoadedContentItem.getProperty(uploadFieldConfigNode.LengthFieldAlias); + if (prop != null) + prop.Value = String.Empty; + + prop = LoadedContentItem.getProperty(uploadFieldConfigNode.ExtensionFieldAlias); + if (prop != null) + prop.Value = String.Empty; } } } - private void FillProperties(XmlNode uploadFieldConfigNode, Content content, UmbracoFile um) + private void FillProperties(IContentImagingAutoFillUploadField uploadFieldConfigNode, Content content, UmbracoFile um) { - // only add dimensions to web images - UpdateContentProperty(uploadFieldConfigNode, content, "widthFieldAlias", um.SupportsResizing ? um.GetDimensions().Item1.ToString() : string.Empty); - UpdateContentProperty(uploadFieldConfigNode, content, "heightFieldAlias", um.SupportsResizing ? um.GetDimensions().Item2.ToString() : string.Empty); + var prop = content.getProperty(uploadFieldConfigNode.WidthFieldAlias); + if (prop != null) + prop.Value = um.SupportsResizing ? um.GetDimensions().Item1.ToString() : string.Empty; - UpdateContentProperty(uploadFieldConfigNode, content, "lengthFieldAlias", um.Length); - UpdateContentProperty(uploadFieldConfigNode, content, "extensionFieldAlias", um.Extension); + prop = content.getProperty(uploadFieldConfigNode.HeightFieldAlias); + if (prop != null) + prop.Value = um.SupportsResizing ? um.GetDimensions().Item2.ToString() : string.Empty; + + prop = content.getProperty(uploadFieldConfigNode.LengthFieldAlias); + if (prop != null) + prop.Value = um.Length; + + prop = content.getProperty(uploadFieldConfigNode.ExtensionFieldAlias); + if (prop != null) + prop.Value = um.Extension; } - private static void UpdateContentProperty(XmlNode uploadFieldConfigNode, Content content, string propertyAlias, - object propertyValue) - { - XmlNode propertyNode = uploadFieldConfigNode.SelectSingleNode(propertyAlias); - if (propertyNode != null && !string.IsNullOrEmpty(propertyNode.FirstChild.Value)) - { - var prop = content.getProperty(propertyNode.FirstChild.Value); - if (prop != null) - { - prop.Value = propertyValue; - } - } - } } } \ No newline at end of file diff --git a/src/umbraco.cms/businesslogic/skinning/Skinning.cs b/src/umbraco.cms/businesslogic/skinning/Skinning.cs index 62558b9f8f..5d4cfd9f31 100644 --- a/src/umbraco.cms/businesslogic/skinning/Skinning.cs +++ b/src/umbraco.cms/businesslogic/skinning/Skinning.cs @@ -314,7 +314,11 @@ namespace umbraco.cms.businesslogic.skinning } - packager.repositories.Repository repo = packager.repositories.Repository.getByGuid(skinRepoGuid); + var repo = packager.repositories.Repository.getByGuid(skinRepoGuid); + if (repo == null) + { + return false; + } r = repo.Webservice.Skins(g.ToString()).Length > 0; }