Adds internal event for when a package is installed which gives access to the InstalledPackage instance which contains a PackageInstance reference that contains all of the files installed in the package

This commit is contained in:
Shannon
2014-11-17 18:00:51 +11:00
parent 403f64eeed
commit d61d6008da

View File

@@ -76,7 +76,7 @@ namespace umbraco.cms.businesslogic.packager
/// Indicates that the package contains legacy property editors
/// </summary>
public bool ContainsLegacyPropertyEditors { get; private set; }
public bool ContainsStyleSheeConflicts { get; private set; }
public IDictionary<string, string> ConflictingStyleSheetNames { get { return _conflictingStyleSheetNames; } }
@@ -138,7 +138,7 @@ namespace umbraco.cms.businesslogic.packager
}
#region Public Methods
/// <summary>
/// Imports the specified package
/// </summary>
@@ -175,7 +175,7 @@ namespace umbraco.cms.businesslogic.packager
return tempDir;
}
}
public int CreateManifest(string tempDir, string guid, string repoGuid)
{
//This is the new improved install rutine, which chops up the process into 3 steps, creating the manifest, moving files, and finally handling umb objects
@@ -256,14 +256,16 @@ namespace umbraco.cms.businesslogic.packager
}
catch (Exception ex)
{
LogHelper.Error<Installer>("Package install error", ex);
LogHelper.Error<Installer>("Package install error", ex);
}
}
insPack.Save();
}
}
public void InstallBusinessLogic(int packageId, string tempDir)
{
using (DisposableTimer.DebugDuration<Installer>(
@@ -292,7 +294,7 @@ namespace umbraco.cms.businesslogic.packager
#region DataTypes
var dataTypeElement = rootElement.Descendants("DataTypes").FirstOrDefault();
if(dataTypeElement != null)
if (dataTypeElement != null)
{
var dataTypeDefinitions = packagingService.ImportDataTypeDefinitions(dataTypeElement, currentUser.Id);
foreach (var dataTypeDefinition in dataTypeDefinitions)
@@ -309,7 +311,7 @@ namespace umbraco.cms.businesslogic.packager
var insertedLanguages = packagingService.ImportLanguages(languageItemsElement);
insPack.Data.Languages.AddRange(insertedLanguages.Select(l => l.Id.ToString()));
}
#endregion
#region Dictionary items
@@ -335,7 +337,7 @@ namespace umbraco.cms.businesslogic.packager
//if (saveNeeded) { insPack.Save(); saveNeeded = false; }
#endregion
#region Templates
var templateElement = rootElement.Descendants("Templates").FirstOrDefault();
if (templateElement != null)
@@ -404,7 +406,7 @@ namespace umbraco.cms.businesslogic.packager
if (alias.IsNullOrWhiteSpace() == false)
{
PackageAction.RunPackageAction(insPack.Data.Name, alias, n);
PackageAction.RunPackageAction(insPack.Data.Name, alias, n);
}
}
}
@@ -416,22 +418,24 @@ namespace umbraco.cms.businesslogic.packager
new ApplicationTreeRegistrar();
insPack.Save();
OnPackageBusinessLogicInstalled(insPack);
}
}
/// <summary>
/// Remove the temp installation folder
/// </summary>
/// <param name="packageId"></param>
/// <param name="tempDir"></param>
/// <summary>
/// Remove the temp installation folder
/// </summary>
/// <param name="packageId"></param>
/// <param name="tempDir"></param>
public void InstallCleanUp(int packageId, string tempDir)
{
if (Directory.Exists(tempDir))
{
Directory.Delete(tempDir, true);
}
if (Directory.Exists(tempDir))
{
Directory.Delete(tempDir, true);
}
}
/// <summary>
/// Reads the configuration of the package from the configuration xmldocument
/// </summary>
@@ -466,10 +470,10 @@ namespace umbraco.cms.businesslogic.packager
{
badFile = true;
}
if (destPath.ToLower().Contains(IOHelper.DirSepChar + "bin"))
{
badFile = true;
badFile = true;
}
if (destFile.ToLower().EndsWith(".dll"))
@@ -514,9 +518,9 @@ namespace umbraco.cms.businesslogic.packager
ContainsMacroConflict = true;
if (_conflictingMacroAliases.ContainsKey(m.Name) == false)
{
_conflictingMacroAliases.Add(m.Name, alias);
_conflictingMacroAliases.Add(m.Name, alias);
}
}
}
}
}
@@ -548,8 +552,8 @@ namespace umbraco.cms.businesslogic.packager
ContainsStyleSheeConflicts = true;
if (_conflictingStyleSheetNames.ContainsKey(s.Text) == false)
{
_conflictingStyleSheetNames.Add(s.Text, alias);
}
_conflictingStyleSheetNames.Add(s.Text, alias);
}
}
}
}
@@ -566,7 +570,7 @@ namespace umbraco.cms.businesslogic.packager
}
catch { }
}
/// <summary>
/// This uses the old method of fetching and only supports the packages.umbraco.org repository.
/// </summary>
@@ -586,9 +590,9 @@ namespace umbraco.cms.businesslogic.packager
return "packages\\" + Package + ".umb";
}
#endregion
#region Private Methods
/// <summary>
@@ -655,7 +659,7 @@ namespace umbraco.cms.businesslogic.packager
string tempDir = IOHelper.MapPath(SystemDirectories.Data) + Path.DirectorySeparatorChar + packageId.ToString();
//clear the directory if it exists
if (Directory.Exists(tempDir)) Directory.Delete(tempDir, true);
Directory.CreateDirectory(tempDir);
Directory.CreateDirectory(tempDir);
var s = new ZipInputStream(File.OpenRead(zipName));
@@ -697,5 +701,13 @@ namespace umbraco.cms.businesslogic.packager
}
#endregion
internal static event EventHandler<InstalledPackage> PackageBusinessLogicInstalled;
private static void OnPackageBusinessLogicInstalled(InstalledPackage e)
{
EventHandler<InstalledPackage> handler = PackageBusinessLogicInstalled;
if (handler != null) handler(null, e);
}
}
}