Leaf Input functional
This commit is contained in:
@@ -0,0 +1,31 @@
|
|||||||
|
using System;
|
||||||
|
using System.Diagnostics.Contracts;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Web.Mvc;
|
||||||
|
|
||||||
|
namespace LeafWeb.Web.Attributes
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Add to actions to use multiple submit buttons (back or save, for example)
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// http://blog.ashmind.com/2010/03/15/multiple-submit-buttons-with-asp-net-mvc-final-solution/
|
||||||
|
/// https://github.com/ashmind/lightwiki/blob/master/$libraries/AshMind.Web.Mvc/HttpParamActionAttribute.cs
|
||||||
|
/// </remarks>
|
||||||
|
public class HttpParamActionAttribute : ActionNameSelectorAttribute
|
||||||
|
{
|
||||||
|
[Pure]
|
||||||
|
[ContractVerification(false)]
|
||||||
|
public override bool IsValidName(ControllerContext controllerContext, string actionName, MethodInfo methodInfo)
|
||||||
|
{
|
||||||
|
if (actionName.Equals(methodInfo.Name, StringComparison.InvariantCultureIgnoreCase))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (!actionName.Equals("Action", StringComparison.InvariantCultureIgnoreCase))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
var request = controllerContext.RequestContext.HttpContext.Request;
|
||||||
|
return request[methodInfo.Name] != null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,5 +17,32 @@ namespace LeafWeb.Web.Controllers
|
|||||||
DataService.Dispose();
|
DataService.Dispose();
|
||||||
base.Dispose(disposing);
|
base.Dispose(disposing);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected bool IsHttpParamActionMatch()
|
||||||
|
{
|
||||||
|
return ControllerContext.RouteData.Values["action"].ToString()
|
||||||
|
.Equals("Action", StringComparison.InvariantCultureIgnoreCase);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected enum StatusType
|
||||||
|
{
|
||||||
|
Info,
|
||||||
|
Success,
|
||||||
|
Error
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void SetStatusMessage(string msg, StatusType statusType = StatusType.Info)
|
||||||
|
{
|
||||||
|
TempData["StatusMessage"] = msg;
|
||||||
|
switch (statusType)
|
||||||
|
{
|
||||||
|
case StatusType.Success:
|
||||||
|
TempData["StatusMessage-Type"] = "alert-success";
|
||||||
|
break;
|
||||||
|
case StatusType.Error:
|
||||||
|
TempData["StatusMessage-Type"] = "alert-error";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,27 +1,71 @@
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Web;
|
||||||
using System.Web.Mvc;
|
using System.Web.Mvc;
|
||||||
using LeafWeb.Core.DAL;
|
using LeafWeb.Core.Models;
|
||||||
|
using LeafWeb.Web.Attributes;
|
||||||
using LeafWeb.Web.ViewModels.LeafInput;
|
using LeafWeb.Web.ViewModels.LeafInput;
|
||||||
|
|
||||||
namespace LeafWeb.Web.Controllers
|
namespace LeafWeb.Web.Controllers
|
||||||
{
|
{
|
||||||
public class LeafInputController : Controller
|
public class LeafInputController : ControllerBase
|
||||||
{
|
{
|
||||||
public ActionResult Index()
|
public ActionResult Index()
|
||||||
{
|
{
|
||||||
// initialize the session storage to retain SessionID between requests
|
// initialize the session storage to retain SessionID between requests
|
||||||
Session["placeholder"] = 0;
|
Session["placeholder"] = 0;
|
||||||
return View();
|
return View();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private FileInfo[] GetBackloadDirectoryFiles(string directoryName)
|
||||||
|
{
|
||||||
|
var path = Path.Combine(Server.MapPath("~/Files/"), directoryName + "\\");
|
||||||
|
var directory = new DirectoryInfo(path);
|
||||||
|
if (!directory.Exists)
|
||||||
|
{
|
||||||
|
return new FileInfo[] {};
|
||||||
|
}
|
||||||
|
|
||||||
|
return directory.GetFiles();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DeleteBackloadDirectory(string directoryName)
|
||||||
|
{
|
||||||
|
var path = Path.Combine(Server.MapPath("~/Files/"), directoryName + "\\");
|
||||||
|
var directory = new DirectoryInfo(path);
|
||||||
|
if (directory.Exists)
|
||||||
|
{
|
||||||
|
directory.Delete(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpParamAction]
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public ActionResult Index(CreateViewModel viewModel)
|
public ActionResult Index(CreateViewModel viewModel)
|
||||||
{
|
{
|
||||||
// directory name is the sessionID
|
// directory name is the sessionID
|
||||||
var directory = Session.SessionID;
|
var files = GetBackloadDirectoryFiles(Session.SessionID);
|
||||||
var path = Path.Combine(Server.MapPath("~/Files/"), directory + "\\");
|
|
||||||
var files = Directory.GetFiles(path);
|
if (!files.Any())
|
||||||
|
{
|
||||||
|
ModelState.AddModelError("", "Must select at least one file");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ModelState.IsValid && !IsHttpParamActionMatch())
|
||||||
|
{
|
||||||
|
// Go to confirmation
|
||||||
|
var confirmViewModel = new ConfirmViewModel(viewModel, files.Select(f => f.Name).ToArray());
|
||||||
|
return View("Confirm", confirmViewModel);
|
||||||
|
}
|
||||||
|
return View("Index");
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpParamAction]
|
||||||
|
[HttpPost]
|
||||||
|
public ActionResult Confirm(CreateViewModel viewModel)
|
||||||
|
{
|
||||||
|
// directory name is the sessionID
|
||||||
|
var files = GetBackloadDirectoryFiles(Session.SessionID);
|
||||||
|
|
||||||
if (!files.Any())
|
if (!files.Any())
|
||||||
{
|
{
|
||||||
@@ -31,12 +75,25 @@ namespace LeafWeb.Web.Controllers
|
|||||||
if (ModelState.IsValid)
|
if (ModelState.IsValid)
|
||||||
{
|
{
|
||||||
// convert viewModel into Model
|
// convert viewModel into Model
|
||||||
|
var model = viewModel.GetFileInput();
|
||||||
// load files into LeafInputFile
|
// load files into LeafInputFile
|
||||||
|
var leafInputFiles =
|
||||||
|
from f in files
|
||||||
|
let bytes = System.IO.File.ReadAllBytes(f.FullName)
|
||||||
|
select new LeafInputFile {Filename = f.Name, Contents = bytes};
|
||||||
|
|
||||||
//
|
// TODO: Save to db
|
||||||
|
|
||||||
|
DeleteBackloadDirectory(Session.SessionID);
|
||||||
|
|
||||||
|
SetStatusMessage(
|
||||||
|
HttpUtility.HtmlEncode(
|
||||||
|
$"A data set has submitted for '{viewModel.Identifier}' from '{viewModel.SiteId}'. "
|
||||||
|
+ $"When complete, an email will be delivered to {viewModel.Name} <{viewModel.Email}> with results."),
|
||||||
|
StatusType.Success);
|
||||||
|
return RedirectToAction("Index");
|
||||||
}
|
}
|
||||||
return View();
|
return View("Index", viewModel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -10,12 +10,13 @@
|
|||||||
$("#fileupload").fileupload({
|
$("#fileupload").fileupload({
|
||||||
url: url,
|
url: url,
|
||||||
autoUpload: true,
|
autoUpload: true,
|
||||||
|
maxFileSize: 5000000,
|
||||||
maxChunkSize: 10000000, // Optional: file chunking with 10MB chunks
|
maxChunkSize: 10000000, // Optional: file chunking with 10MB chunks
|
||||||
acceptFileTypes: /(bat)|(.*)$/i // Allowed file types
|
acceptFileTypes: /(csv)$/i // Allowed file types
|
||||||
})
|
})
|
||||||
.bind("fileuploadsubmit", function (e, data) {
|
.bind("fileuploadsubmit", function (e, data) {
|
||||||
// Optional: We add a random uuid form parameter. On chunk uploads the uuid is used to store the chunks.
|
// Optional: We add a random uuid form parameter. On chunk uploads the uuid is used to store the chunks.
|
||||||
data.formData = { uuid: Math.random().toString(36).substr(2, 8) };
|
//data.formData = { uuid: Math.random().toString(36).substr(2, 8) };
|
||||||
});
|
});
|
||||||
|
|
||||||
// Load existing files:
|
// Load existing files:
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using AutoMapper;
|
||||||
|
|
||||||
|
namespace LeafWeb.Web.ViewModels.LeafInput
|
||||||
|
{
|
||||||
|
public class ConfirmViewModel
|
||||||
|
{
|
||||||
|
private static readonly IMapper Mapper;
|
||||||
|
|
||||||
|
public string Name { get; set; }
|
||||||
|
public string Email { get; set; }
|
||||||
|
public string Identifier { get; set; }
|
||||||
|
public string SiteId { get; set; }
|
||||||
|
public string[] Files { get; set; }
|
||||||
|
|
||||||
|
static ConfirmViewModel()
|
||||||
|
{
|
||||||
|
var config =
|
||||||
|
new MapperConfiguration(cfg =>
|
||||||
|
{
|
||||||
|
cfg.CreateMap<CreateViewModel, ConfirmViewModel>();
|
||||||
|
});
|
||||||
|
Mapper = config.CreateMapper();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConfirmViewModel(CreateViewModel createViewModel, string[] files)
|
||||||
|
{
|
||||||
|
Mapper.Map(createViewModel, this);
|
||||||
|
Files = files;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,10 +1,12 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Web;
|
using AutoMapper;
|
||||||
|
|
||||||
namespace LeafWeb.Web.ViewModels.LeafInput
|
namespace LeafWeb.Web.ViewModels.LeafInput
|
||||||
{
|
{
|
||||||
public class CreateViewModel
|
public class CreateViewModel
|
||||||
{
|
{
|
||||||
|
private static readonly IMapper Mapper;
|
||||||
|
|
||||||
[Display(Name = "Your name")]
|
[Display(Name = "Your name")]
|
||||||
[Required(ErrorMessage = "Name required")]
|
[Required(ErrorMessage = "Name required")]
|
||||||
[RegularExpression(@"[A-Za-z().]+(\s+[A-Za-z().]+)+", ErrorMessage = "Please provide your full name")]
|
[RegularExpression(@"[A-Za-z().]+(\s+[A-Za-z().]+)+", ErrorMessage = "Please provide your full name")]
|
||||||
@@ -28,5 +30,23 @@ namespace LeafWeb.Web.ViewModels.LeafInput
|
|||||||
[Display(Name = "The site's name/Fluxnet ID, if known")]
|
[Display(Name = "The site's name/Fluxnet ID, if known")]
|
||||||
[Required(ErrorMessage = "The site's name is required")]
|
[Required(ErrorMessage = "The site's name is required")]
|
||||||
public string SiteId { get; set; }
|
public string SiteId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
static CreateViewModel()
|
||||||
|
{
|
||||||
|
var config =
|
||||||
|
new MapperConfiguration(cfg =>
|
||||||
|
{
|
||||||
|
cfg.CreateMap<CreateViewModel, Core.Models.LeafInput>();
|
||||||
|
});
|
||||||
|
Mapper = config.CreateMapper();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Core.Models.LeafInput GetFileInput()
|
||||||
|
{
|
||||||
|
var leafInput = new Core.Models.LeafInput();
|
||||||
|
Mapper.Map(this, leafInput);
|
||||||
|
return leafInput;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
@model LeafWeb.Web.ViewModels.LeafInput.ConfirmViewModel
|
||||||
|
|
||||||
|
<p class="alert center-content">Please <strong>confirm</strong> - entry not submitted until <strong>confirm</strong> clicked</p>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6 well">
|
||||||
|
@using (Html.BeginForm("Action", "LeafInput", FormMethod.Post))
|
||||||
|
{
|
||||||
|
<dl class="dl-horizontal name">
|
||||||
|
<dt>
|
||||||
|
@Html.DisplayNameFor(m => m.Name)
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
@Html.DisplayTextFor(m => m.Name)
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
@Html.HiddenFor(m => m.Name)
|
||||||
|
<dl class="dl-horizontal email">
|
||||||
|
<dt>
|
||||||
|
@Html.DisplayNameFor(m => m.Email)
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
@Html.DisplayTextFor(m => m.Email)
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
@Html.HiddenFor(m => m.Email)
|
||||||
|
<input type="hidden" name="EmailConfirm" value="@Model.Email"/>
|
||||||
|
<dl class="dl-horizontal siteId">
|
||||||
|
<dt>
|
||||||
|
@Html.DisplayNameFor(m => m.SiteId)
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
@Html.DisplayTextFor(m => m.SiteId)
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
@Html.HiddenFor(m => m.SiteId)
|
||||||
|
<dl class="dl-horizontal identifier">
|
||||||
|
<dt>
|
||||||
|
@Html.DisplayNameFor(m => m.Identifier)
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
@Html.DisplayTextFor(m => m.Identifier)
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
@Html.HiddenFor(m => m.Identifier)
|
||||||
|
|
||||||
|
<div class="form-actions">
|
||||||
|
<input type="submit" name="Confirm" value="Confirm" class="btn btn-primary"/>
|
||||||
|
<input type="submit" name="Index" value="Back" class="btn"/>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -1,25 +1,27 @@
|
|||||||
@model LeafWeb.Web.ViewModels.LeafInput.CreateViewModel
|
@model LeafWeb.Web.ViewModels.LeafInput.CreateViewModel
|
||||||
|
|
||||||
<h1>Submitting Data and Retrieving EDO Results</h1>
|
|
||||||
<p>
|
|
||||||
There is no limit on the number of files you may submit for analysis. Keep selecting files and hitting the Add button until all of the files you need to upload are shown in the list. Then enter an identifier for this set of data and click the Upload button.
|
|
||||||
</p>
|
|
||||||
@section Styles
|
@section Styles
|
||||||
{
|
{
|
||||||
@Styles.Render("~/backload/blueimp/bootstrap/BasicPlusUI/css")
|
@Styles.Render("~/backload/blueimp/bootstrap/BasicPlusUI/css")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
<h1>Submitting Data and Retrieving EDO Results</h1>
|
||||||
|
<p>
|
||||||
|
There is no limit on the number of files you may submit for analysis. Keep selecting files and hitting the Add button until all of the files you need to upload are shown in the list. Then enter an identifier for this set of data and click the Upload button.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
@Html.Partial("_StatusMessage")
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6 well">
|
<div class="col-md-6 well">
|
||||||
@using (Html.BeginForm("Index", "LeafInput", FormMethod.Post, new { enctype = "multipart/form-data" }))
|
@using (Html.BeginForm("Index", "LeafInput", FormMethod.Post))
|
||||||
{
|
{
|
||||||
@Html.Partial("_ValidationSummary")
|
@Html.Partial("_ValidationSummary")
|
||||||
@Html.EditorFor(m => m.Name)
|
@Html.EditorFor(m => m.Name)
|
||||||
@Html.EditorFor(m => m.Email)
|
@Html.EditorFor(m => m.Email)
|
||||||
@Html.EditorFor(m => m.EmailConfirm)
|
@Html.EditorFor(m => m.EmailConfirm)
|
||||||
@Html.EditorFor(m => m.Identifier)
|
@Html.EditorFor(m => m.Identifier)
|
||||||
@Html.EditorFor(m => m.SiteId)
|
@Html.EditorFor(m => m.SiteId)
|
||||||
<input type="submit" id="submit-form" class="hidden" />
|
<input type="submit" id="submit-form" class="hidden" />
|
||||||
}
|
}
|
||||||
<!-- The file upload form used as target for the file upload widget -->
|
<!-- The file upload form used as target for the file upload widget -->
|
||||||
<form id="fileupload" action="/Backload/FileHandler" method="POST" enctype="multipart/form-data">
|
<form id="fileupload" action="/Backload/FileHandler" method="POST" enctype="multipart/form-data">
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
@if (TempData.ContainsKey("StatusMessage"))
|
||||||
|
{
|
||||||
|
<p class="center-content alert @Html.Raw(TempData["StatusMessage-Type"])">
|
||||||
|
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||||
|
@Html.Raw(TempData["StatusMessage"])
|
||||||
|
</p>
|
||||||
|
}
|
||||||
|
else if (ViewBag.StatusMessage != null)
|
||||||
|
{
|
||||||
|
<p class="center-content alert">
|
||||||
|
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||||
|
@ViewBag.StatusMessage
|
||||||
|
</p>
|
||||||
|
}
|
||||||
+27
-11
@@ -20,6 +20,8 @@
|
|||||||
<IISExpressWindowsAuthentication />
|
<IISExpressWindowsAuthentication />
|
||||||
<IISExpressUseClassicPipelineMode />
|
<IISExpressUseClassicPipelineMode />
|
||||||
<UseGlobalApplicationHostFile />
|
<UseGlobalApplicationHostFile />
|
||||||
|
<NuGetPackageImportStamp>
|
||||||
|
</NuGetPackageImportStamp>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
@@ -43,6 +45,10 @@
|
|||||||
<HintPath>..\packages\Antlr.3.4.1.9004\lib\Antlr3.Runtime.dll</HintPath>
|
<HintPath>..\packages\Antlr.3.4.1.9004\lib\Antlr3.Runtime.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="AutoMapper, Version=4.2.0.0, Culture=neutral, PublicKeyToken=be96cd2c38ef1005, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\AutoMapper.4.2.0\lib\net45\AutoMapper.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
<Reference Include="Backload, Version=2.1.5.4, Culture=neutral, PublicKeyToken=02eaf42ab375d363, processorArchitecture=MSIL">
|
<Reference Include="Backload, Version=2.1.5.4, Culture=neutral, PublicKeyToken=02eaf42ab375d363, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Backload.Core.2.1.5.4\lib\net45\Backload.dll</HintPath>
|
<HintPath>..\packages\Backload.Core.2.1.5.4\lib\net45\Backload.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
@@ -65,11 +71,15 @@
|
|||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.CSharp" />
|
<Reference Include="Microsoft.CSharp" />
|
||||||
<Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.16\lib\net45\Microsoft.Threading.Tasks.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.16\lib\net45\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop, Version=1.0.168.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
<Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
@@ -403,6 +413,11 @@
|
|||||||
<Content Include="Content\bootstrap.css.map" />
|
<Content Include="Content\bootstrap.css.map" />
|
||||||
<Content Include="Content\bootstrap-theme.min.css.map" />
|
<Content Include="Content\bootstrap-theme.min.css.map" />
|
||||||
<Content Include="Content\bootstrap-theme.css.map" />
|
<Content Include="Content\bootstrap-theme.css.map" />
|
||||||
|
<Content Include="Backload\Logs\log.folder" />
|
||||||
|
<None Include="Backload\Config\Web.Backload.xsd">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</None>
|
||||||
|
<None Include="Backload\Web.Backload.config" />
|
||||||
<Content Include="Content\fonts\glyphicons-halflings-regular.woff2" />
|
<Content Include="Content\fonts\glyphicons-halflings-regular.woff2" />
|
||||||
<Content Include="Content\fonts\glyphicons-halflings-regular.woff" />
|
<Content Include="Content\fonts\glyphicons-halflings-regular.woff" />
|
||||||
<Content Include="Content\fonts\glyphicons-halflings-regular.ttf" />
|
<Content Include="Content\fonts\glyphicons-halflings-regular.ttf" />
|
||||||
@@ -478,11 +493,6 @@
|
|||||||
<Content Include="Content\bootstrap\bootstrap.less" />
|
<Content Include="Content\bootstrap\bootstrap.less" />
|
||||||
<Content Include="Content\bootstrap\badges.less" />
|
<Content Include="Content\bootstrap\badges.less" />
|
||||||
<Content Include="Content\bootstrap\alerts.less" />
|
<Content Include="Content\bootstrap\alerts.less" />
|
||||||
<Content Include="Backload\Logs\log.folder" />
|
|
||||||
<None Include="Backload\Config\Web.Backload.xsd">
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</None>
|
|
||||||
<None Include="Backload\Web.Backload.config" />
|
|
||||||
<None Include="Properties\PublishProfiles\LeafWeb - Web Deploy.pubxml" />
|
<None Include="Properties\PublishProfiles\LeafWeb - Web Deploy.pubxml" />
|
||||||
<None Include="Scripts\jquery-1.9.1.intellisense.js" />
|
<None Include="Scripts\jquery-1.9.1.intellisense.js" />
|
||||||
<Content Include="Scripts\angular-mocks.js" />
|
<Content Include="Scripts\angular-mocks.js" />
|
||||||
@@ -889,9 +899,11 @@
|
|||||||
<Compile Include="Global.asax.cs">
|
<Compile Include="Global.asax.cs">
|
||||||
<DependentUpon>Global.asax</DependentUpon>
|
<DependentUpon>Global.asax</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Attributes\HttpParamActionAttribute.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Utility\MarkdownHelper.cs" />
|
<Compile Include="Utility\MarkdownHelper.cs" />
|
||||||
<Compile Include="Utility\Validation.cs" />
|
<Compile Include="Utility\Validation.cs" />
|
||||||
|
<Compile Include="ViewModels\LeafInput\ConfirmViewModel.cs" />
|
||||||
<Compile Include="ViewModels\LeafInput\CreateViewModel.cs" />
|
<Compile Include="ViewModels\LeafInput\CreateViewModel.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -925,6 +937,8 @@
|
|||||||
<Content Include="Views\Shared\EditorTemplates\DateTime.cshtml" />
|
<Content Include="Views\Shared\EditorTemplates\DateTime.cshtml" />
|
||||||
<Content Include="Views\Shared\EditorTemplates\Boolean.cshtml" />
|
<Content Include="Views\Shared\EditorTemplates\Boolean.cshtml" />
|
||||||
<Content Include="Scripts\jquery.validate.unobtrusive.bootstrap.min.js.map" />
|
<Content Include="Scripts\jquery.validate.unobtrusive.bootstrap.min.js.map" />
|
||||||
|
<Content Include="Views\LeafInput\Confirm.cshtml" />
|
||||||
|
<Content Include="Views\Shared\_StatusMessage.cshtml" />
|
||||||
<None Include="Web.Debug.config">
|
<None Include="Web.Debug.config">
|
||||||
<DependentUpon>Web.config</DependentUpon>
|
<DependentUpon>Web.config</DependentUpon>
|
||||||
</None>
|
</None>
|
||||||
@@ -967,10 +981,12 @@
|
|||||||
</FlavorProperties>
|
</FlavorProperties>
|
||||||
</VisualStudio>
|
</VisualStudio>
|
||||||
</ProjectExtensions>
|
</ProjectExtensions>
|
||||||
<Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />
|
<Import Project="..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" />
|
||||||
<Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
<Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=317567." HelpKeyword="BCLBUILD2001" />
|
<PropertyGroup>
|
||||||
<Error Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" />
|
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets'))" />
|
||||||
</Target>
|
</Target>
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
|||||||
+2
-1
@@ -2,6 +2,7 @@
|
|||||||
<packages>
|
<packages>
|
||||||
<package id="AngularJS.Core" version="1.4.7" targetFramework="net45" />
|
<package id="AngularJS.Core" version="1.4.7" targetFramework="net45" />
|
||||||
<package id="Antlr" version="3.4.1.9004" targetFramework="net45" />
|
<package id="Antlr" version="3.4.1.9004" targetFramework="net45" />
|
||||||
|
<package id="AutoMapper" version="4.2.0" targetFramework="net45" />
|
||||||
<package id="Backload" version="2.1.0.0" targetFramework="net45" />
|
<package id="Backload" version="2.1.0.0" targetFramework="net45" />
|
||||||
<package id="Backload.Core" version="2.1.5.4" targetFramework="net45" />
|
<package id="Backload.Core" version="2.1.5.4" targetFramework="net45" />
|
||||||
<package id="bootstrap" version="3.3.6" targetFramework="net45" />
|
<package id="bootstrap" version="3.3.6" targetFramework="net45" />
|
||||||
@@ -19,7 +20,7 @@
|
|||||||
<package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net45" />
|
<package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net45" />
|
||||||
<package id="Microsoft.Bcl" version="1.1.10" targetFramework="net45" />
|
<package id="Microsoft.Bcl" version="1.1.10" targetFramework="net45" />
|
||||||
<package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="net45" />
|
<package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="net45" />
|
||||||
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" />
|
<package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="net45" />
|
||||||
<package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.3" targetFramework="net45" />
|
<package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.3" targetFramework="net45" />
|
||||||
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
|
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
|
||||||
<package id="Newtonsoft.Json" version="8.0.2" targetFramework="net45" />
|
<package id="Newtonsoft.Json" version="8.0.2" targetFramework="net45" />
|
||||||
|
|||||||
Reference in New Issue
Block a user