* YavscModel.csproj:

* NewProjectModel.cs:
* ITContentProvider.csproj: refactoring

* WebApiConfig.cs: Web Api Config

* IModule.cs:
* RssFeeds.cs:
* IRenderer.cs:
* Blog.cs:
* ITagHandler.cs:
* ViewRenderer.cs:
* Comment.cs:
* IViewRenderer.cs:
* People.cs:
* SignIn.cs:
* BlogEntry.cs:
* AuthToken.cs:
* BlogHelper.cs:
* DataAccess.cs:
* Estimate.cs:
* BlogManager.cs:
* Writting.cs:
* AskForADate.cs:
* RestoreQuery.cs:
* Basket.cs:
* BlogProvider.cs:
* CalendarList.cs:
* Commande.cs:
* StatusChange.cs:
* WebFileInfo.cs:
* WorkFlowManager.cs:
* Euro.cs:
* Unit.cs:
* Text.cs:
* Profile.cs:
* Note.cs:
* Link.cs:
* BlogEditEntryModel.cs:
* FindBlogEntryFlags.cs:
* NewProjectModel.cs:
* CalendarListEntry.cs:
* CalendarEntryList.cs:
* IContentProvider.cs:
* CommandStatus.cs:
* Label.cs:
* Price.cs:
* BlogEntryCollection.cs:
* Period.cs:
* Scalar.cs:
* BlogEditCommentModel.cs:
* Option.cs:
* NpgsqlContentProvider.cs:
* Product.cs:
* LoginModel.cs:
* Service.cs:
* Catalog.cs:
* Currency.cs:
* NewEstimateEvenArgs.cs:
* CheckBox.cs:
* SaleForm.cs:
* FileSystemManager.cs:
* FormInput.cs:
* TextInput.cs:
* NewRoleModel.cs:
* FileInfoCollection.cs:
* FilesInput.cs:
* NewAdminModel.cs:
* SelectItem.cs:
* SelectInput.cs:
* RadioButton.cs:
* StockStatus.cs:
* Provider.cs:
* DirNotFoundException.cs:
* FormElement.cs:
* ProductImage.cs:
* WebFileInfoCollection.cs:
* CatalogHelper.cs:
* CatalogManager.cs:
* RegisterViewModel.cs:
* InvalidDirNameException.cs:
* PhysicalProduct.cs:
* CatalogProvider.cs:
* ProductCategory.cs:
* OrderStatusChangedEventArgs.cs:
* ProviderCollection.cs:
* WorkflowConfiguration.cs:
* BlogProviderConfigurationElement.cs:
* BlogProvidersConfigurationSection.cs:
* BlogProvidersConfigurationCollection.cs:
* CatalogProviderConfigurationElement.cs:
* CatalogProvidersConfigurationSection.cs:
* CatalogProvidersConfigurationCollection.cs: 
xml doc

* SalesCatalog.csproj:
* XmlCatalogProvider.cs: Maps the catalog using System.Web

* BasketController.cs:
* FrontOfficeController.cs: a Basket controller

* Global.asax.cs: Session in Web Api

* App.master: WebApi bas url as Javascript var 'apiBaseUrl'

* Index.aspx: !!not sure of this change.

* Web.csproj: compiles now includes WebApiConfig.cs

* style.css: link background color

* FileSystemController.cs: a file system controller
This commit is contained in:
Paul Schneider 2015-02-17 13:57:39 +01:00
commit b505ad90e7
100 changed files with 2520 additions and 212 deletions

View file

@ -7,6 +7,7 @@ using System.Web.Http;
using Yavsc.Model.WorkFlow;
using System.Collections.Specialized;
using Yavsc.Model.FrontOffice;
using System.Web.SessionState;
namespace Yavsc.ApiControllers
{
@ -32,23 +33,40 @@ namespace Yavsc.ApiControllers
wfmgr = new WorkFlowManager ();
}
/// <summary>
/// Gets the current basket, creates a new one, if it doesn't exist.
/// </summary>
/// <value>The current basket.</value>
protected Basket CurrentBasket {
get {
HttpSessionState session = HttpContext.Current.Session;
Basket b = (Basket) session ["Basket"];
if (b == null)
session ["Basket"] = b = new Basket ();
return b;
}
}
/// <summary>
/// Create the specified basket item using specified command parameters.
/// </summary>
/// <param name="cmdParams">Command parameters.</param>
[AcceptVerbs("CREATE")]
[Authorize]
public long Create(NameValueCollection cmdParams)
{
throw new NotImplementedException ();
// HttpContext.Current.Request.Files
Commande cmd = new Commande(cmdParams, HttpContext.Current.Request.Files);
CurrentBasket.Add (cmd);
return cmd.Id;
}
/// <summary>
/// Read the specified basket item.
/// </summary>
/// <param name="itemid">Itemid.</param>
[AcceptVerbs("READ")]
[Authorize]
Commande Read(long itemid){
throw new NotImplementedException ();
return CurrentBasket[itemid];
}
/// <summary>
@ -57,29 +75,21 @@ namespace Yavsc.ApiControllers
/// <param name="itemid">Item identifier.</param>
/// <param name="param">Parameter name.</param>
/// <param name="value">Value.</param>
[AcceptVerbs("UPDATE")]
public void Update(long itemid, string param, string value)
[Authorize]
public void UpdateParam(long itemid, string param, string value)
{
throw new NotImplementedException ();
CurrentBasket [itemid].Parameters [param] = value;
}
/// <summary>
/// Delete the specified item.
/// </summary>
/// <param name="itemid">Item identifier.</param>
[Authorize]
public void Delete(long itemid)
{
throw new NotImplementedException ();
CurrentBasket.Remove (itemid);
}
/// <summary>
/// Post a file, as attached document to the specified
/// Item
/// </summary>
[AcceptVerbs("POST")]
public void Post(long itemId)
{
throw new NotImplementedException ();
}
}
}

View file

@ -6,6 +6,7 @@ using System.Web.Mvc;
using System.IO;
using System.Web.Security;
using System.Text.RegularExpressions;
using Yavsc.Model.FileSystem;
namespace Yavsc.Controllers
{
@ -14,34 +15,37 @@ namespace Yavsc.Controllers
/// </summary>
public class FileSystemController : Controller
{
private static string usersDir = "~/users";
private string usersDir = "~/users";
/// <summary>
/// Gets the users dir.
/// Gets the users base directory.
/// </summary>
/// <value>The users dir.</value>
public static string UsersDir {
public string UsersDir {
get {
return usersDir;
}
}
FileSystemManager mgr = null ;
/// <summary>
/// Initialize the specified requestContext.
/// </summary>
/// <param name="requestContext">Request context.</param>
protected override void Initialize (System.Web.Routing.RequestContext requestContext)
{
base.Initialize (requestContext);
mgr = new FileSystemManager (UsersDir);
}
/// <summary>
/// Index this instance.
/// </summary>
[Authorize]
public ActionResult Index ()
public ActionResult Index (string id)
{
string user = Membership.GetUser ().UserName;
ViewData ["UserName"] = user;
DirectoryInfo di = new DirectoryInfo (
Path.Combine (
Server.MapPath (UsersDir),
user));
if (!di.Exists)
di.Create ();
return View (new FileInfoCollection (di.GetFiles ()));
return View (mgr.GetFiles (Membership.GetUser().UserName+"/"+id));
}
/// <summary>
@ -59,7 +63,7 @@ namespace Yavsc.Controllers
return RedirectToAction ("Index");
}
}
string fpath = Path.Combine (BaseDir, id);
string fpath = Path.Combine (UserBaseDir, id);
ViewData ["Content"] = Url.Content (fpath);
FileInfo fi = new FileInfo (fpath);
@ -67,54 +71,23 @@ namespace Yavsc.Controllers
}
/// <summary>
/// Create this instance.
/// Create the specified id.
/// </summary>
public ActionResult Create ()
{
return View ();
}
/// <summary>
/// Create the specified collection.
/// </summary>
/// <param name="collection">Collection.</param>
/// <param name="id">Identifier.</param>
[HttpPost]
[Authorize]
public ActionResult Create (FormCollection collection)
public ActionResult Create (string id)
{
try {
string fnre = "[A-Za-z0-9~\\-.]+";
HttpFileCollectionBase hfc = Request.Files;
for (int i = 0; i < hfc.Count; i++) {
if (!Regex.Match (hfc [i].FileName, fnre).Success) {
ViewData ["Message"] += string.Format ("<p>File name '{0}' refused</p>", hfc [i].FileName);
ModelState.AddModelError (
"AFile",
string.Format (
"The file name {0} dosn't match an acceptable file name {1}",
hfc [i].FileName, fnre));
return View ();
}
}
for (int i = 0; i < hfc.Count; i++) {
// TODO Limit with hfc[h].ContentLength
string filename = Path.Combine (Server.MapPath (BaseDir), hfc [i].FileName);
hfc [i].SaveAs (filename);
ViewData ["Message"] += string.Format ("<p>File name '{0}' saved</p>", hfc [i].FileName);
}
return RedirectToAction ("Index", "FileSystem");
} catch (Exception e) {
ViewData ["Message"] = "Exception:" + e.Message;
return View ();
}
string path=Membership.GetUser().UserName+"/"+id;
mgr.Put ( path, Request.Files);
return View ("Index",mgr.GetFiles(path));
}
/// <summary>
/// Gets the base dir.
/// Gets the user's base dir.
/// </summary>
/// <value>The base dir.</value>
public static string BaseDir { get { return Path.Combine (UsersDir, Membership.GetUser ().UserName); } }
public string UserBaseDir { get { return Path.Combine (UsersDir, Membership.GetUser ().UserName); } }
/// <summary>
/// Edit the specified id.
@ -122,7 +95,7 @@ namespace Yavsc.Controllers
/// <param name="id">Identifier.</param>
public ActionResult Edit (int id)
{
return View ();
throw new NotImplementedException ();
}
/// <summary>
@ -133,11 +106,7 @@ namespace Yavsc.Controllers
[HttpPost]
public ActionResult Edit (int id, FormCollection collection)
{
try {
return RedirectToAction ("Index");
} catch {
return View ();
}
throw new NotImplementedException ();
}
/// <summary>
@ -146,7 +115,7 @@ namespace Yavsc.Controllers
/// <param name="id">Identifier.</param>
public ActionResult Delete (int id)
{
return View ();
throw new NotImplementedException ();
}
/// <summary>
@ -157,11 +126,7 @@ namespace Yavsc.Controllers
[HttpPost]
public ActionResult Delete (int id, FormCollection collection)
{
try {
return RedirectToAction ("Index");
} catch {
return View ();
}
throw new NotImplementedException ();
}
}
}

View file

@ -12,6 +12,7 @@ using WorkFlowProvider;
using System.Web.Security;
using System.Threading;
using Yavsc.Model.FrontOffice;
using Yavsc.Model.FileSystem;
namespace Yavsc.Controllers
{
@ -218,12 +219,14 @@ namespace Yavsc.Controllers
return View (collection);
}
}
string usersdir = Server.MapPath("~/users");
FileSystemManager fsmgr = new FileSystemManager(usersdir);
foreach (String h in hfc.AllKeys) {
// TODO Limit with hfc[h].ContentLength
hfc [h].SaveAs (Path.Combine (FileSystemController.BaseDir, hfc [h].FileName));
hfc [h].SaveAs (Path.Combine (usersdir, hfc [h].FileName));
}
// Add specified product command to the basket,
GetBasket().Add (Commande.Create (collection));
GetBasket().Add (new Commande(collection,HttpContext.Request.Files));
ViewData ["Message"] = LocalizedText.Item_added_to_basket;
return View (collection);
} catch (Exception e) {