oops undeletes a couple files that are still needed for the custom package ascx page
This commit is contained in:
@@ -568,6 +568,7 @@
|
||||
<Content Include="Umbraco\Config\Lang\cs.xml" />
|
||||
<Content Include="Umbraco\ClientRedirect.aspx" />
|
||||
<Content Include="Umbraco\create.aspx" />
|
||||
<Content Include="Umbraco\Developer\Packages\installer.aspx" />
|
||||
<Content Include="Umbraco\Logout.aspx" />
|
||||
<Content Include="Umbraco\umbraco.aspx" />
|
||||
<Content Include="Umbraco_Client\Application\JQuery\jquery.unobtrusive-ajax.min.js" />
|
||||
|
||||
346
src/Umbraco.Web.UI/umbraco/developer/Packages/installer.aspx
Normal file
346
src/Umbraco.Web.UI/umbraco/developer/Packages/installer.aspx
Normal file
@@ -0,0 +1,346 @@
|
||||
<%@ Page Language="c#" MasterPageFile="../../masterpages/umbracoPage.Master"
|
||||
AutoEventWireup="True" Inherits="umbraco.presentation.developer.packages.Installer"
|
||||
Trace="false" ValidateRequest="false" %>
|
||||
<%@ Import Namespace="umbraco" %>
|
||||
<%@ Register TagPrefix="cc1" Namespace="umbraco.uicontrols" Assembly="controls" %>
|
||||
|
||||
<asp:Content ContentPlaceHolderID="head" runat="server">
|
||||
|
||||
<script type="text/javascript">
|
||||
function enableButton() {
|
||||
|
||||
var f = jQuery("#<%= file1.ClientID %>");
|
||||
var b = jQuery("#<%= ButtonLoadPackage.ClientID %>");
|
||||
var cb = jQuery("#cb");
|
||||
|
||||
|
||||
if (f.val() != "" && cb.attr("checked"))
|
||||
b.attr("disabled", false);
|
||||
else
|
||||
b.attr("disabled", true);
|
||||
}
|
||||
|
||||
$(document).ready(function () {
|
||||
$('.toggle-report').click(function () {
|
||||
$(this).next().toggle();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</asp:Content>
|
||||
|
||||
<asp:Content ContentPlaceHolderID="body" runat="server">
|
||||
<cc1:UmbracoPanel ID="Panel1" Text="Install package" runat="server" Width="496px"
|
||||
Height="584px">
|
||||
|
||||
|
||||
<cc1:Feedback ID="fb" Style="margin-top: 7px;" runat="server" />
|
||||
<cc1:Pane ID="pane_upload" runat="server" Text="Install from local package file">
|
||||
|
||||
<cc1:PropertyPanel runat="server" Text="">
|
||||
<div class="alert alert-warning">
|
||||
<h4>
|
||||
Only install packages from sources you know and trust!</h4>
|
||||
<p>
|
||||
When installing an Umbraco package you should use the same caution as when you install
|
||||
an application on your computer.</p>
|
||||
<p>
|
||||
A malicious package could damage your Umbraco installation just like a malicious
|
||||
application can damage your computer.
|
||||
</p>
|
||||
<p>
|
||||
It is <strong>recommended</strong> to install from the official Umbraco package
|
||||
repository or a custom repository whenever it's possible.
|
||||
</p>
|
||||
<p>
|
||||
<input type="checkbox" id="cb" onchange="enableButton();" />
|
||||
<label for="cb" style="font-weight: bold">
|
||||
I understand the security risks associated with installing a local package</label>
|
||||
</p>
|
||||
</div>
|
||||
</cc1:PropertyPanel>
|
||||
|
||||
<cc1:PropertyPanel ID="PropertyPanel9" Text="Choose a file" runat="server">
|
||||
<p>
|
||||
<input id="file1" type="file" class="btn" name="file1" onchange="enableButton();"
|
||||
runat="server" />
|
||||
<br />
|
||||
|
||||
<small>
|
||||
<%= umbraco.ui.Text("packager", "chooseLocalPackageText") %>
|
||||
</small>
|
||||
</p>
|
||||
</cc1:PropertyPanel>
|
||||
<cc1:PropertyPanel runat="server" Text=" ">
|
||||
<asp:Button ID="ButtonLoadPackage" runat="server" Enabled="false" Text="Load Package"
|
||||
OnClick="uploadFile"></asp:Button>
|
||||
<div id="loadingbar" style="display: none;">
|
||||
<div class="umb-loader-wrapper">
|
||||
<cc1:ProgressBar ID="progbar1" runat="server" Title="Please wait..." />
|
||||
</div>
|
||||
</div>
|
||||
</cc1:PropertyPanel>
|
||||
</cc1:Pane>
|
||||
<cc1:Pane ID="pane_authenticate" runat="server" Visible="false" Text="Repository authentication">
|
||||
<cc1:PropertyPanel runat="server">
|
||||
<div class="alert alert-warning">
|
||||
<p>
|
||||
This repository requires authentication before you can download any packages from
|
||||
it.<br />
|
||||
Please enter email and password to login.
|
||||
</p>
|
||||
</div>
|
||||
</cc1:PropertyPanel>
|
||||
<cc1:PropertyPanel runat="server" Text="Email">
|
||||
<asp:TextBox ID="tb_email" runat="server" /></cc1:PropertyPanel>
|
||||
<cc1:PropertyPanel ID="PropertyPanel1" runat="server" Text="Password">
|
||||
<asp:TextBox ID="tb_password" TextMode="Password" runat="server" /></cc1:PropertyPanel>
|
||||
<cc1:PropertyPanel ID="PropertyPanel2" runat="server">
|
||||
<asp:Button ID="Button1" OnClick="fetchProtectedPackage" Text="Login" runat="server" /></cc1:PropertyPanel>
|
||||
</cc1:Pane>
|
||||
|
||||
<asp:Panel ID="pane_acceptLicense" runat="server" Visible="false">
|
||||
|
||||
<cc1:Pane ID="pane_acceptLicenseInner" runat="server">
|
||||
|
||||
<div class="alert alert-warning">
|
||||
<p>
|
||||
<strong>Please note:</strong> Installing a package containing several items and
|
||||
files can take some time. Do not refresh the page or navigate away before, the installer
|
||||
notifies you once the install is completed.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<cc1:PropertyPanel ID="PropertyPanel3" runat="server" Text="Name">
|
||||
<asp:Label ID="LabelName" runat="server" /></cc1:PropertyPanel>
|
||||
<cc1:PropertyPanel ID="PropertyPanel5" runat="server" Text="Author">
|
||||
<asp:Label ID="LabelAuthor" runat="server" /></cc1:PropertyPanel>
|
||||
<cc1:PropertyPanel ID="PropertyPanel4" runat="server" Text="More info">
|
||||
<asp:Label ID="LabelMore" runat="server" /></cc1:PropertyPanel>
|
||||
<cc1:PropertyPanel ID="PropertyPanel6" runat="server" Text="License">
|
||||
<asp:Label ID="LabelLicense" runat="server" /></cc1:PropertyPanel>
|
||||
<cc1:PropertyPanel ID="PropertyPanel7" runat="server" Text="Accept license">
|
||||
<asp:CheckBox Text="Accept license" runat="server" ID="acceptCheckbox" /></cc1:PropertyPanel>
|
||||
<cc1:PropertyPanel ID="PropertyPanel8" runat="server" Text="Read me">
|
||||
<asp:Literal ID="readme" runat="server"></asp:Literal>
|
||||
</cc1:PropertyPanel>
|
||||
|
||||
<cc1:PropertyPanel ID="pp_unsecureFiles" runat="server" Visible="false" Text=" ">
|
||||
|
||||
<div class="alert alert-error" style="width: 370px;">
|
||||
<h4>Binary files in the package!</h4>
|
||||
|
||||
<a class="toggle-report" href="#">Read more...</a>
|
||||
<div style="display:none;">
|
||||
<p>
|
||||
This package contains .NET code. This is <strong>not unusual</strong> as .NET code
|
||||
is used for any advanced functionality on an Umbraco powered website.</p>
|
||||
<p>
|
||||
However, if you <strong>don't know the author</strong> of the package or are unsure why this package
|
||||
contains these files, it is adviced <strong>not to continue the installation</strong>.
|
||||
</p>
|
||||
<p>
|
||||
<strong>The Files in question:</strong><br />
|
||||
<ul>
|
||||
<asp:Literal ID="lt_files" runat="server" />
|
||||
</ul>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</cc1:PropertyPanel>
|
||||
|
||||
<cc1:PropertyPanel ID="LegacyPropertyEditorPanel" runat="server" Visible="false" Text=" ">
|
||||
<div class="alert alert-error" style="width: 370px;">
|
||||
<h4>
|
||||
Legacy Property editors detected</h4>
|
||||
<a class="toggle-report" href="#">Read more...</a>
|
||||
<div style="display:none;">
|
||||
<p>
|
||||
This package contains legacy property editors which are not compatible with Umbraco 7</p>
|
||||
<p>
|
||||
This package may not function correctly if the package developer has not indicated that
|
||||
it is compatible with version 7. Any DataTypes this package creates that do not have
|
||||
a Version 7 compatible property editor will be converted to use a Label/NoEdit property editor.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</cc1:PropertyPanel>
|
||||
|
||||
<cc1:PropertyPanel ID="BinaryFileErrorsPanel" runat="server" Visible="false" Text=" ">
|
||||
<div class="alert alert-error" style="width: 370px;">
|
||||
<h4>
|
||||
Binary file errors detected</h4>
|
||||
<a class="toggle-report" href="#">Read more...</a>
|
||||
<div style="display:none;">
|
||||
<p>
|
||||
This package contains .NET binary files that might not be compatible with this version of Umbraco.
|
||||
If you aren't sure what these errors mean or why they are listed please contact the package creator.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Error report</strong><br />
|
||||
<ul>
|
||||
<asp:Literal ID="BinaryFileErrorReport" runat="server" />
|
||||
</ul>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</cc1:PropertyPanel>
|
||||
<cc1:PropertyPanel ID="pp_macroConflicts" runat="server" Visible="false" Text=" ">
|
||||
<div class="alert alert-error" style="width: 370px;">
|
||||
<h4>
|
||||
Macro Conflicts in the package!</h4>
|
||||
<a class="toggle-report" href="#">Read more...</a>
|
||||
<div style="display:none">
|
||||
<p>
|
||||
This package contains one or more macros which have the same alias as an existing one on your site, based on the Macro Alias.
|
||||
</p>
|
||||
<p>
|
||||
If you choose to continue your existing macros will be replaced with the ones from this package. If you do not want to overwrite your existing macros you will need to change their alias.
|
||||
</p>
|
||||
<p>
|
||||
<strong>The Macros in question:</strong><br />
|
||||
<ul>
|
||||
<asp:Literal ID="ltrMacroAlias" runat="server" />
|
||||
</ul>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</cc1:PropertyPanel>
|
||||
|
||||
<cc1:PropertyPanel ID="pp_templateConflicts" runat="server" Visible="false" Text=" ">
|
||||
<div class="alert alert-error" style="width: 370px;">
|
||||
<h4>
|
||||
Template Conflicts in the package!</h4>
|
||||
<a class="toggle-report" href="#">Read more...</a>
|
||||
<div style="display:none">
|
||||
<p>
|
||||
This package contains one or more templates which have the same alias as an existing one on your site, based on the Template Alias.
|
||||
</p>
|
||||
<p>
|
||||
If you choose to continue your existing template will be replaced with the ones from this package. If you do not want to overwrite your existing templates you will need to change their alias.
|
||||
</p>
|
||||
<p>
|
||||
<strong>The Templates in question:</strong><br />
|
||||
<ul>
|
||||
<asp:Literal ID="ltrTemplateAlias" runat="server" />
|
||||
</ul>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</cc1:PropertyPanel>
|
||||
|
||||
<cc1:PropertyPanel ID="pp_stylesheetConflicts" runat="server" Visible="false" Text=" ">
|
||||
<div class="alert alert-error" style="width: 370px;">
|
||||
<h4>
|
||||
Stylesheet Conflicts in the package!</h4>
|
||||
<a class="toggle-report" href="#">Read more...</a>
|
||||
<div style="display:none">
|
||||
<p>
|
||||
This package contains one or more stylesheets which have the same alias as an existing one on your site, based on the Stylesheet Name.
|
||||
</p>
|
||||
<p>
|
||||
If you choose to continue your existing stylesheets will be replaced with the ones from this package. If you do not want to overwrite your existing stylesheets you will need to change their name.
|
||||
</p>
|
||||
<p>
|
||||
<strong>The Stylesheets in question:</strong><br />
|
||||
<ul>
|
||||
<asp:Literal ID="ltrStylesheetNames" runat="server" />
|
||||
</ul>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</cc1:PropertyPanel>
|
||||
|
||||
<cc1:PropertyPanel runat="server" Text=" ">
|
||||
<br />
|
||||
<div id="installingMessage" style="display: none;">
|
||||
<div class="umb-loader-wrapper">
|
||||
<cc1:ProgressBar runat="server" ID="_progbar1" />
|
||||
</div>
|
||||
<br />
|
||||
<em>Installing package, please wait...</em><br /><br />
|
||||
</div>
|
||||
<asp:Button ID="ButtonInstall" runat="server" Text="Install Package" CssClass="btn btn-primary" Enabled="False"
|
||||
OnClick="startInstall"></asp:Button>
|
||||
</cc1:PropertyPanel>
|
||||
</cc1:Pane>
|
||||
|
||||
</asp:Panel>
|
||||
<cc1:Pane ID="pane_installing" runat="server" Visible="false" Text="Installing package">
|
||||
<cc1:PropertyPanel runat="server">
|
||||
<cc1:ProgressBar runat="server" ID="progBar2" />
|
||||
<asp:Literal ID="lit_installStatus" runat="server" />
|
||||
</cc1:PropertyPanel>
|
||||
</cc1:Pane>
|
||||
|
||||
<cc1:Pane ID="pane_optional" runat="server" Visible="false" />
|
||||
|
||||
<cc1:Pane ID="pane_success" runat="server" Text="Package is installed" Visible="false">
|
||||
<cc1:PropertyPanel runat="server">
|
||||
|
||||
<p>
|
||||
All items in the package have been installed</p>
|
||||
<p>
|
||||
Overview of what was installed can be found under "installed package" in the developer
|
||||
section.</p>
|
||||
<p>
|
||||
Uninstall is available at the same location.</p>
|
||||
<p>
|
||||
<asp:Button Text="View installed package" ID="bt_viewInstalledPackage" runat="server" />
|
||||
<asp:Literal ID="lit_authorUrl" runat="server" />
|
||||
</p>
|
||||
|
||||
</cc1:PropertyPanel>
|
||||
</cc1:Pane>
|
||||
|
||||
<cc1:Pane ID="pane_uninstalled" runat="server" Text="Package has been uninstalled" Visible="false">
|
||||
<cc1:PropertyPanel runat="server">
|
||||
|
||||
<p><%= umbraco.ui.Text("packager", "packageUninstalledText") %></p>
|
||||
|
||||
</cc1:PropertyPanel>
|
||||
</cc1:Pane>
|
||||
|
||||
<cc1:Pane ID="pane_refresh" runat="server" Text="Browser is reloading" Visible="false">
|
||||
<cc1:PropertyPanel runat="server">
|
||||
|
||||
<div class="alert alert-block">
|
||||
Please wait while the browser is reloaded...
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
//This is all a bit zany with double encoding because we have a URL in a hash (#) url part
|
||||
// but it works and maintains query strings
|
||||
|
||||
var refreshQuery = decodeURIComponent("<%=RefreshQueryString%>");
|
||||
var umbPath = "<%=GlobalSettings.Path%>";
|
||||
setTimeout(function () {
|
||||
|
||||
|
||||
|
||||
var mainWindow = UmbClientMgr.mainWindow();
|
||||
|
||||
//kill the tree and template cache
|
||||
if (mainWindow.UmbClientMgr) {
|
||||
mainWindow.UmbClientMgr._packageInstalled();
|
||||
}
|
||||
|
||||
var baseUrl = mainWindow.location.href.substr(0, mainWindow.location.href.indexOf("#/developer/framed/"));
|
||||
var framedUrl = baseUrl + "#/developer/framed/";
|
||||
var refreshUrl = framedUrl + encodeURIComponent(encodeURIComponent(umbPath + "/developer/packages/installer.aspx?" + refreshQuery));
|
||||
|
||||
var redirectUrl = umbPath + "/ClientRedirect.aspx?redirectUrl=" + refreshUrl;
|
||||
|
||||
mainWindow.location.href = redirectUrl;
|
||||
|
||||
}, 2000);
|
||||
</script>
|
||||
|
||||
</cc1:PropertyPanel>
|
||||
</cc1:Pane>
|
||||
<input id="tempFile" type="hidden" name="tempFile" runat="server" /><input id="processState"
|
||||
type="hidden" name="processState" runat="server" />
|
||||
</cc1:UmbracoPanel>
|
||||
</asp:Content>
|
||||
@@ -442,6 +442,7 @@
|
||||
<Compile Include="Security\WebAuthExtensions.cs" />
|
||||
<Compile Include="umbraco.presentation\SafeXmlReaderWriter.cs" />
|
||||
<Compile Include="Trees\ScriptTreeController.cs" />
|
||||
<Compile Include="umbraco.presentation\umbraco\developer\Packages\installer.aspx.cs" />
|
||||
<Compile Include="UmbracoDefaultOwinStartup.cs" />
|
||||
<Compile Include="IUmbracoContextAccessor.cs" />
|
||||
<Compile Include="Models\ContentEditing\Relation.cs" />
|
||||
|
||||
@@ -0,0 +1,835 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Globalization;
|
||||
using System.Threading;
|
||||
using System.Web;
|
||||
using System.Web.SessionState;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using System.Web.UI.HtmlControls;
|
||||
using System.Xml;
|
||||
using System.Xml.XPath;
|
||||
using Umbraco.Core.IO;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Web;
|
||||
using umbraco.BasePages;
|
||||
using umbraco.BusinessLogic;
|
||||
using umbraco.cms.presentation.Trees;
|
||||
using Umbraco.Core;
|
||||
using BizLogicAction = umbraco.BusinessLogic.Actions.Action;
|
||||
|
||||
namespace umbraco.presentation.developer.packages
|
||||
{
|
||||
/// <summary>
|
||||
/// Summary description for packager.
|
||||
/// </summary>
|
||||
[Obsolete("This should not be used and will be removed in v8, this is kept here only for backwards compat reasons, this page should never be rendered/used")]
|
||||
public class Installer : UmbracoEnsuredPage
|
||||
{
|
||||
public Installer()
|
||||
{
|
||||
CurrentApp = DefaultApps.developer.ToString();
|
||||
_installer = new cms.businesslogic.packager.Installer(UmbracoUser.Id);
|
||||
}
|
||||
|
||||
private Control _configControl;
|
||||
private cms.businesslogic.packager.repositories.Repository _repo;
|
||||
private readonly cms.businesslogic.packager.Installer _installer = null;
|
||||
private string _tempFileName = "";
|
||||
|
||||
protected string RefreshQueryString { get; set; }
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
var ex = new Exception();
|
||||
if (!cms.businesslogic.packager.Settings.HasFileAccess(ref ex))
|
||||
{
|
||||
fb.Style.Add("margin-top", "7px");
|
||||
fb.type = uicontrols.Feedback.feedbacktype.error;
|
||||
fb.Text = "<strong>" + ui.Text("errors", "filePermissionsError") + ":</strong><br/>" + ex.Message;
|
||||
}
|
||||
|
||||
if (!IsPostBack)
|
||||
{
|
||||
ButtonInstall.Attributes.Add("onClick", "jQuery(this).hide(); jQuery('#installingMessage').show();; return true;");
|
||||
ButtonLoadPackage.Attributes.Add("onClick", "jQuery(this).hide(); jQuery('#loadingbar').show();; return true;");
|
||||
}
|
||||
|
||||
//if we are actually in the middle of installing something... meaning we keep redirecting back to this page with
|
||||
// custom query strings
|
||||
// TODO: SD: This process needs to be fixed/changed/etc... to use the InstallPackageController
|
||||
// http://issues.umbraco.org/issue/U4-1047
|
||||
if (!string.IsNullOrEmpty(Request.GetItemAsString("installing")))
|
||||
{
|
||||
HideAllPanes();
|
||||
pane_installing.Visible = true;
|
||||
ProcessInstall(Request.GetItemAsString("installing")); //process the current step
|
||||
|
||||
}
|
||||
else if (tempFile.Value.IsNullOrWhiteSpace() //if we haven't downloaded the .umb temp file yet
|
||||
&& (!Request.GetItemAsString("guid").IsNullOrWhiteSpace() && !Request.GetItemAsString("repoGuid").IsNullOrWhiteSpace()))
|
||||
{
|
||||
//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 != 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"));
|
||||
|
||||
//if the package is protected we will ask for the users credentials. (this happens every time they try to fetch anything)
|
||||
if (!pack.Protected)
|
||||
{
|
||||
//if it isn't then go straigt to the accept licens screen
|
||||
tempFile.Value = _installer.Import(_repo.fetch(Request.GetItemAsString("guid"), UmbracoUser.Id));
|
||||
UpdateSettings();
|
||||
|
||||
}
|
||||
else if (!IsPostBack)
|
||||
{
|
||||
|
||||
//Authenticate against the repo
|
||||
HideAllPanes();
|
||||
pane_authenticate.Visible = true;
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fb.Style.Add("margin-top", "7px");
|
||||
fb.type = uicontrols.Feedback.feedbacktype.error;
|
||||
fb.Text = "<strong>No connection to repository.</strong> Runway could not be installed as there was no connection to: '" + _repo.RepositoryUrl + "'";
|
||||
pane_upload.Visible = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnPreRender(EventArgs e)
|
||||
{
|
||||
base.OnPreRender(e);
|
||||
acceptCheckbox.Attributes.Add("onmouseup", "document.getElementById('" + ButtonInstall.ClientID + "').disabled = false;");
|
||||
}
|
||||
|
||||
protected void uploadFile(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
_tempFileName = Guid.NewGuid().ToString() + ".umb";
|
||||
string fileName = SystemDirectories.Data + System.IO.Path.DirectorySeparatorChar + _tempFileName;
|
||||
file1.PostedFile.SaveAs(IOHelper.MapPath(fileName));
|
||||
tempFile.Value = _installer.Import(_tempFileName);
|
||||
UpdateSettings();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
fb.type = global::umbraco.uicontrols.Feedback.feedbacktype.error;
|
||||
fb.Text = "<strong>Could not upload file</strong><br/>" + ex.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
//this fetches the protected package from the repo.
|
||||
protected void fetchProtectedPackage(object sender, EventArgs e)
|
||||
{
|
||||
//we auth against the webservice. This key will be used to fetch the protected package.
|
||||
string memberGuid = _repo.Webservice.authenticate(tb_email.Text, library.md5(tb_password.Text));
|
||||
|
||||
//if we auth correctly and get a valid key back, we will fetch the file from the repo webservice.
|
||||
if (string.IsNullOrEmpty(memberGuid) == false)
|
||||
{
|
||||
tempFile.Value = _installer.Import(_repo.fetch(helper.Request("guid"), memberGuid));
|
||||
UpdateSettings();
|
||||
}
|
||||
}
|
||||
|
||||
//this loads the accept license screen
|
||||
private void UpdateSettings()
|
||||
{
|
||||
HideAllPanes();
|
||||
|
||||
pane_acceptLicense.Visible = true;
|
||||
pane_acceptLicenseInner.Text = "Installing the package: " + _installer.Name;
|
||||
Panel1.Text = "Installing the package: " + _installer.Name;
|
||||
|
||||
|
||||
if (_installer.ContainsUnsecureFiles)
|
||||
{
|
||||
pp_unsecureFiles.Visible = true;
|
||||
foreach (string str in _installer.UnsecureFiles)
|
||||
{
|
||||
lt_files.Text += "<li>" + str + "</li>";
|
||||
}
|
||||
}
|
||||
|
||||
if (_installer.ContainsLegacyPropertyEditors)
|
||||
{
|
||||
LegacyPropertyEditorPanel.Visible = true;
|
||||
}
|
||||
|
||||
if (_installer.ContainsBinaryFileErrors)
|
||||
{
|
||||
BinaryFileErrorsPanel.Visible = true;
|
||||
foreach (var str in _installer.BinaryFileErrors)
|
||||
{
|
||||
BinaryFileErrorReport.Text += "<li>" + str + "</li>";
|
||||
}
|
||||
}
|
||||
|
||||
if (_installer.ContainsMacroConflict)
|
||||
{
|
||||
pp_macroConflicts.Visible = true;
|
||||
foreach (var item in _installer.ConflictingMacroAliases)
|
||||
{
|
||||
ltrMacroAlias.Text += "<li>" + item.Key + " (Alias: " + item.Value + ")</li>";
|
||||
}
|
||||
}
|
||||
|
||||
if (_installer.ContainsTemplateConflicts)
|
||||
{
|
||||
pp_templateConflicts.Visible = true;
|
||||
foreach (var item in _installer.ConflictingTemplateAliases)
|
||||
{
|
||||
ltrTemplateAlias.Text += "<li>" + item.Key + " (Alias: " + item.Value + ")</li>";
|
||||
}
|
||||
}
|
||||
|
||||
if (_installer.ContainsStyleSheeConflicts)
|
||||
{
|
||||
pp_stylesheetConflicts.Visible = true;
|
||||
foreach (var item in _installer.ConflictingStyleSheetNames)
|
||||
{
|
||||
ltrStylesheetNames.Text += "<li>" + item.Key + " (Alias: " + item.Value + ")</li>";
|
||||
}
|
||||
}
|
||||
|
||||
LabelName.Text = _installer.Name + " Version: " + _installer.Version;
|
||||
LabelMore.Text = "<a href=\"" + _installer.Url + "\" target=\"_blank\">" + _installer.Url + "</a>";
|
||||
LabelAuthor.Text = "<a href=\"" + _installer.AuthorUrl + "\" target=\"_blank\">" + _installer.Author + "</a>";
|
||||
LabelLicense.Text = "<a href=\"" + _installer.LicenseUrl + "\" target=\"_blank\">" + _installer.License + "</a>";
|
||||
|
||||
if (_installer.ReadMe != "")
|
||||
readme.Text = "<div style=\"border: 1px solid #999; padding: 5px; overflow: auto; width: 370px; height: 160px;\">" + library.ReplaceLineBreaks(library.StripHtml(_installer.ReadMe)) + "</div>";
|
||||
else
|
||||
readme.Text = "<span style=\"color: #999\">No information</span><br/>";
|
||||
}
|
||||
|
||||
|
||||
private void ProcessInstall(string currentStep)
|
||||
{
|
||||
var dir = Request.GetItemAsString("dir");
|
||||
var packageId = 0;
|
||||
int.TryParse(Request.GetItemAsString("pId"), out packageId);
|
||||
|
||||
switch (currentStep.ToLowerInvariant())
|
||||
{
|
||||
case "businesslogic":
|
||||
//first load in the config from the temporary directory
|
||||
//this will ensure that the installer have access to all the new files and the package manifest
|
||||
_installer.LoadConfig(dir);
|
||||
_installer.InstallBusinessLogic(packageId, dir);
|
||||
|
||||
|
||||
//making sure that publishing actions performed from the cms layer gets pushed to the presentation
|
||||
library.RefreshContent();
|
||||
|
||||
if (string.IsNullOrEmpty(_installer.Control) == false)
|
||||
{
|
||||
Response.Redirect("installer.aspx?installing=refresh&dir=" + dir + "&pId=" + packageId.ToString() + "&customControl=" + Server.UrlEncode(_installer.Control) + "&customUrl=" + Server.UrlEncode(_installer.Url));
|
||||
}
|
||||
else
|
||||
{
|
||||
Response.Redirect("installer.aspx?installing=refresh&dir=" + dir + "&pId=" + packageId.ToString() + "&customUrl=" + Server.UrlEncode(_installer.Url));
|
||||
}
|
||||
break;
|
||||
case "custominstaller":
|
||||
var customControl = Request.GetItemAsString("customControl");
|
||||
|
||||
if (customControl.IsNullOrWhiteSpace() == false)
|
||||
{
|
||||
HideAllPanes();
|
||||
|
||||
_configControl = LoadControl(SystemDirectories.Root + customControl);
|
||||
_configControl.ID = "packagerConfigControl";
|
||||
|
||||
pane_optional.Controls.Add(_configControl);
|
||||
pane_optional.Visible = true;
|
||||
|
||||
if (!IsPostBack)
|
||||
{
|
||||
//We still need to clean everything up which is normally done in the Finished Action
|
||||
PerformPostInstallCleanup(packageId, dir);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
//if the custom installer control is empty here (though it should never be because we've already checked for it previously)
|
||||
//then we should run the normal FinishedAction
|
||||
PerformFinishedAction(packageId, dir, Request.GetItemAsString("customUrl"));
|
||||
}
|
||||
break;
|
||||
case "refresh":
|
||||
PerformRefreshAction(packageId, dir, Request.GetItemAsString("customUrl"), Request.GetItemAsString("customControl"));
|
||||
break;
|
||||
case "finished":
|
||||
PerformFinishedAction(packageId, dir, Request.GetItemAsString("customUrl"));
|
||||
break;
|
||||
case "uninstalled":
|
||||
PerformUninstalledAction();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Perform the 'Finished' action of the installer
|
||||
/// </summary>
|
||||
/// <param name="packageId"></param>
|
||||
/// <param name="dir"></param>
|
||||
/// <param name="url"></param>
|
||||
private void PerformFinishedAction(int packageId, string dir, string url)
|
||||
{
|
||||
HideAllPanes();
|
||||
//string url = _installer.Url;
|
||||
string packageViewUrl = "installedPackage.aspx?id=" + packageId.ToString(CultureInfo.InvariantCulture);
|
||||
|
||||
bt_viewInstalledPackage.OnClientClick = "document.location = '" + packageViewUrl + "'; return false;";
|
||||
|
||||
if (!string.IsNullOrEmpty(url))
|
||||
lit_authorUrl.Text = " <em>" + ui.Text("or") + "</em> <a href='" + url + "' target=\"_blank\">" + ui.Text("viewPackageWebsite") + "</a>";
|
||||
|
||||
|
||||
pane_success.Visible = true;
|
||||
|
||||
PerformPostInstallCleanup(packageId, dir);
|
||||
}
|
||||
|
||||
private void PerformUninstalledAction()
|
||||
{
|
||||
HideAllPanes();
|
||||
Panel1.Text = "Package has been uninstalled";
|
||||
pane_uninstalled.Visible = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Perform the 'Refresh' action of the installer
|
||||
/// </summary>
|
||||
/// <param name="packageId"></param>
|
||||
/// <param name="dir"></param>
|
||||
/// <param name="url"></param>
|
||||
/// <param name="customControl"></param>
|
||||
private void PerformRefreshAction(int packageId, string dir, string url, string customControl)
|
||||
{
|
||||
HideAllPanes();
|
||||
|
||||
//create the URL to refresh to
|
||||
// /umbraco/developer/packages/installer.aspx?installing=finished
|
||||
// &dir=X:\Projects\Umbraco\Umbraco_7.0\src\Umbraco.Web.UI\App_Data\aef8c41f-63a0-494b-a1e2-10d761647033
|
||||
// &pId=3
|
||||
// &customUrl=http:%2f%2four.umbraco.org%2fprojects%2fwebsite-utilities%2fmerchello
|
||||
|
||||
if (customControl.IsNullOrWhiteSpace())
|
||||
{
|
||||
RefreshQueryString = Server.UrlEncode(string.Format(
|
||||
"installing=finished&dir={0}&pId={1}&customUrl={2}",
|
||||
dir, packageId, url));
|
||||
}
|
||||
else
|
||||
{
|
||||
RefreshQueryString = Server.UrlEncode(string.Format(
|
||||
"installing=customInstaller&dir={0}&pId={1}&customUrl={2}&customControl={3}",
|
||||
dir, packageId, url, customControl));
|
||||
}
|
||||
|
||||
pane_refresh.Visible = true;
|
||||
|
||||
PerformPostInstallCleanup(packageId, dir);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Runs Post refresh actions such reloading the correct tree nodes, etc...
|
||||
/// </summary>
|
||||
private void PerformPostRefreshAction()
|
||||
{
|
||||
BasePage.Current.ClientTools.ReloadActionNode(true, true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Runs Post install actions such as clearning any necessary cache, reloading the correct tree nodes, etc...
|
||||
/// </summary>
|
||||
/// <param name="packageId"></param>
|
||||
/// <param name="dir"></param>
|
||||
private void PerformPostInstallCleanup(int packageId, string dir)
|
||||
{
|
||||
_installer.InstallCleanUp(packageId, dir);
|
||||
|
||||
// Update ClientDependency version
|
||||
var clientDependencyConfig = new Umbraco.Core.Configuration.ClientDependencyConfiguration(LoggerResolver.Current.Logger);
|
||||
var clientDependencyUpdated = clientDependencyConfig.IncreaseVersionNumber();
|
||||
|
||||
//clear the tree cache - we'll do this here even though the browser will reload, but just in case it doesn't can't hurt.
|
||||
ClientTools.ClearClientTreeCache().RefreshTree("packager");
|
||||
TreeDefinitionCollection.Instance.ReRegisterTrees();
|
||||
BizLogicAction.ReRegisterActionsAndHandlers();
|
||||
}
|
||||
|
||||
//this accepts the package, creates the manifest and then installs the files.
|
||||
protected void startInstall(object sender, System.EventArgs e)
|
||||
{
|
||||
//we will now create the installer manifest, which means that umbraco can register everything that gets added to the system
|
||||
//this returns an id of the manifest.
|
||||
|
||||
_installer.LoadConfig(tempFile.Value);
|
||||
|
||||
int pId = _installer.CreateManifest(tempFile.Value, helper.Request("guid"), helper.Request("repoGuid"));
|
||||
|
||||
//and then copy over the files. This will take some time if it contains .dlls that will reboot the system..
|
||||
_installer.InstallFiles(pId, tempFile.Value);
|
||||
|
||||
//TODO: This is a total hack, we need to refactor the installer to be just like the package installer during the
|
||||
// install process and use AJAX to ensure that app pool restarts and restarts PROPERLY before installing the business
|
||||
// logic. Until then, we are going to put a thread sleep here for 2 seconds in hopes that we always fluke out and the app
|
||||
// pool will be restarted after redirect.
|
||||
Thread.Sleep(2000);
|
||||
|
||||
Response.Redirect("installer.aspx?installing=businesslogic&dir=" + tempFile.Value + "&pId=" + pId.ToString());
|
||||
}
|
||||
|
||||
private void HideAllPanes()
|
||||
{
|
||||
pane_authenticate.Visible = false;
|
||||
pane_acceptLicense.Visible = false;
|
||||
pane_installing.Visible = false;
|
||||
pane_optional.Visible = false;
|
||||
pane_success.Visible = false;
|
||||
pane_refresh.Visible = false;
|
||||
pane_upload.Visible = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Panel1 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.UmbracoPanel Panel1;
|
||||
|
||||
/// <summary>
|
||||
/// fb control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.Feedback fb;
|
||||
|
||||
/// <summary>
|
||||
/// pane_upload control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.Pane pane_upload;
|
||||
|
||||
/// <summary>
|
||||
/// PropertyPanel9 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.PropertyPanel PropertyPanel9;
|
||||
|
||||
/// <summary>
|
||||
/// file1 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.HtmlControls.HtmlInputFile file1;
|
||||
|
||||
/// <summary>
|
||||
/// ButtonLoadPackage control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Button ButtonLoadPackage;
|
||||
|
||||
/// <summary>
|
||||
/// progbar1 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.ProgressBar progbar1;
|
||||
|
||||
/// <summary>
|
||||
/// pane_authenticate control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.Pane pane_authenticate;
|
||||
|
||||
/// <summary>
|
||||
/// tb_email control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.TextBox tb_email;
|
||||
|
||||
/// <summary>
|
||||
/// PropertyPanel1 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.PropertyPanel PropertyPanel1;
|
||||
|
||||
/// <summary>
|
||||
/// tb_password control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.TextBox tb_password;
|
||||
|
||||
/// <summary>
|
||||
/// PropertyPanel2 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.PropertyPanel PropertyPanel2;
|
||||
|
||||
/// <summary>
|
||||
/// Button1 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Button Button1;
|
||||
|
||||
/// <summary>
|
||||
/// pane_acceptLicense control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Panel pane_acceptLicense;
|
||||
|
||||
/// <summary>
|
||||
/// pane_acceptLicenseInner control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.Pane pane_acceptLicenseInner;
|
||||
|
||||
/// <summary>
|
||||
/// PropertyPanel3 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.PropertyPanel PropertyPanel3;
|
||||
|
||||
/// <summary>
|
||||
/// LabelName control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Label LabelName;
|
||||
|
||||
/// <summary>
|
||||
/// PropertyPanel5 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.PropertyPanel PropertyPanel5;
|
||||
|
||||
/// <summary>
|
||||
/// LabelAuthor control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Label LabelAuthor;
|
||||
|
||||
/// <summary>
|
||||
/// PropertyPanel4 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.PropertyPanel PropertyPanel4;
|
||||
|
||||
/// <summary>
|
||||
/// LabelMore control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Label LabelMore;
|
||||
|
||||
/// <summary>
|
||||
/// PropertyPanel6 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.PropertyPanel PropertyPanel6;
|
||||
|
||||
/// <summary>
|
||||
/// LabelLicense control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Label LabelLicense;
|
||||
|
||||
/// <summary>
|
||||
/// PropertyPanel7 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.PropertyPanel PropertyPanel7;
|
||||
|
||||
/// <summary>
|
||||
/// acceptCheckbox control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.CheckBox acceptCheckbox;
|
||||
|
||||
/// <summary>
|
||||
/// PropertyPanel8 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.PropertyPanel PropertyPanel8;
|
||||
|
||||
/// <summary>
|
||||
/// readme control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Literal readme;
|
||||
|
||||
/// <summary>
|
||||
/// pp_unsecureFiles control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.PropertyPanel pp_unsecureFiles;
|
||||
|
||||
/// <summary>
|
||||
/// lt_files control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Literal lt_files;
|
||||
|
||||
/// <summary>
|
||||
/// pp_macroConflicts control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.PropertyPanel pp_macroConflicts;
|
||||
|
||||
/// <summary>
|
||||
/// ltrMacroAlias control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Literal ltrMacroAlias;
|
||||
|
||||
/// <summary>
|
||||
/// pp_templateConflicts control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.PropertyPanel pp_templateConflicts;
|
||||
|
||||
protected global::umbraco.uicontrols.PropertyPanel BinaryFileErrorsPanel;
|
||||
protected global::umbraco.uicontrols.PropertyPanel LegacyPropertyEditorPanel;
|
||||
protected global::System.Web.UI.WebControls.Literal BinaryFileErrorReport;
|
||||
|
||||
/// <summary>
|
||||
/// ltrTemplateAlias control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Literal ltrTemplateAlias;
|
||||
|
||||
/// <summary>
|
||||
/// pp_stylesheetConflicts control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.PropertyPanel pp_stylesheetConflicts;
|
||||
|
||||
/// <summary>
|
||||
/// ltrStylesheetNames control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Literal ltrStylesheetNames;
|
||||
|
||||
/// <summary>
|
||||
/// _progbar1 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.ProgressBar _progbar1;
|
||||
|
||||
/// <summary>
|
||||
/// ButtonInstall control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Button ButtonInstall;
|
||||
|
||||
/// <summary>
|
||||
/// pane_installing control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.Pane pane_installing;
|
||||
|
||||
protected global::umbraco.uicontrols.Pane pane_uninstalled;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// progBar2 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.ProgressBar progBar2;
|
||||
|
||||
/// <summary>
|
||||
/// lit_installStatus control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Literal lit_installStatus;
|
||||
|
||||
/// <summary>
|
||||
/// pane_optional control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.Pane pane_optional;
|
||||
|
||||
/// <summary>
|
||||
/// pane_success control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::umbraco.uicontrols.Pane pane_success;
|
||||
|
||||
protected global::umbraco.uicontrols.Pane pane_refresh;
|
||||
|
||||
/// <summary>
|
||||
/// bt_viewInstalledPackage control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Button bt_viewInstalledPackage;
|
||||
|
||||
/// <summary>
|
||||
/// lit_authorUrl control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Literal lit_authorUrl;
|
||||
|
||||
/// <summary>
|
||||
/// tempFile control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.HtmlControls.HtmlInputHidden tempFile;
|
||||
|
||||
/// <summary>
|
||||
/// processState control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.HtmlControls.HtmlInputHidden processState;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user