* New features:
- New Client at estimation, ala ajax - Admins can now edit user's profiles
This commit is contained in:
parent
d9728c5998
commit
0755dd62b3
33 changed files with 634 additions and 234 deletions
|
|
@ -6,13 +6,14 @@
|
|||
|
||||
<asp:Content ID="MainContentContent" ContentPlaceHolderID="MainContent" runat="server">
|
||||
<style>
|
||||
fieldset { float:left; }
|
||||
table.layout { border-width: 0; }
|
||||
table.layout TR TD { max-width:40%; }
|
||||
</style>
|
||||
<%= Html.ValidationSummary() %>
|
||||
<% using(Html.BeginForm("Profile", "Account", FormMethod.Post, new { enctype = "multipart/form-data" })) %>
|
||||
<% { %>
|
||||
|
||||
<input type="hidden" name="username" value="<%=ViewData["ProfileUserName"]%>">
|
||||
<fieldset><legend>Informations publiques</legend>
|
||||
|
||||
<table class="layout">
|
||||
|
|
@ -165,7 +166,13 @@ Avatar </td><td> <img class="avatar" src="<%=Model.avatar%>" alt=""/>
|
|||
<% if (Roles.IsUserInRole((string)ViewData ["UserName"],"Admin")) { %>
|
||||
This user is Admin.
|
||||
<% } %>
|
||||
HasBankAccount:<%= Model.HasBankAccount %>, IsBillable:<%=Model.IsBillable%>
|
||||
HasBankAccount:<%= Model.HasBankAccount %>
|
||||
<% if (!Model.HasBankAccount) { %>
|
||||
(IBAN+BIC ou Codes banque, guichet, compte et clé RIB)
|
||||
<% } %>, IsBillable:<%=Model.IsBillable%>
|
||||
<% if (!Model.IsBillable) { %>
|
||||
(un nom et au choix, une adresse postale valide,
|
||||
ou un téléphone, ou un email, ou un Mobile) <% } %>
|
||||
</aside>
|
||||
|
||||
</asp:Content>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<%@ Page Title="Register" Language="C#" Inherits="Yavsc.RegisterPage" MasterPageFile="~/Models/App.master" %>
|
||||
<%@ Page Title="Register" Language="C#" Inherits="System.Web.Mvc.ViewPages<RegisterViewModel>" MasterPageFile="~/Models/App.master" %>
|
||||
|
||||
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
|
||||
<%= Html.ValidationSummary() %>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<%@ Page Title="User removal" Language="C#" Inherits="System.Web.Mvc.ViewPage" MasterPageFile="~/Models/App.master" %>
|
||||
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
|
||||
<div>
|
||||
|
||||
<%= Html.ValidationSummary() %>
|
||||
<% using ( Html.BeginForm("RemoveUser","Admin") ) { %>
|
||||
Supprimer l'utilisateur
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<%foreach (MembershipUser user in Model){ %>
|
||||
<li><%=user.UserName%> <%=user.Email%> <%=(user.IsApproved)?"":"("+LocalizedText.Not_Approuved+")"%> <%=user.IsOnline?LocalizedText.Online:LocalizedText.Offline%>
|
||||
<% if (Roles.IsUserInRole("Admin")) { %>
|
||||
<%= Html.ActionLink(LocalizedText.Remove,"RemoveUserQuery", new { username = user.UserName }, new { @class="actionlink" } ) %>
|
||||
<%= Html.ActionLink(LocalizedText.Remove,"RemoveUser", new { username = user.UserName }, new { @class="actionlink" } ) %>
|
||||
<% } %>
|
||||
</li><% }%>
|
||||
</ul>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
<%@ Page Title="Devis" Language="C#" Inherits="System.Web.Mvc.ViewPage<Estimate>" MasterPageFile="~/Models/App.master" %>
|
||||
<%@ Register Assembly="Yavsc.WebControls" TagPrefix="yavsc" Namespace="Yavsc.WebControls" %>
|
||||
|
||||
<asp:Content ContentPlaceHolderID="head" ID="head1" runat="server" >
|
||||
<script type="text/javascript" src="<%=Url.Content("~/Scripts/stupidtable.js")%>"></script>
|
||||
<script>
|
||||
|
|
@ -8,11 +7,10 @@ $(function(){
|
|||
$("#tbwrts").stupidtable();
|
||||
});
|
||||
</script>
|
||||
<script type="text/javascript" src="<%=Url.Content("~/Scripts/jquery.validate.js")%>"></script>
|
||||
<link rel="stylesheet" href="<%=Url.Content("~/Theme/dark/style.css")%>" type="text/css" media="print, projection, screen" />
|
||||
</asp:Content>
|
||||
|
||||
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
|
||||
|
||||
<%= Html.ValidationSummary("Devis") %>
|
||||
<% using (Html.BeginForm("Estimate","FrontOffice")) { %>
|
||||
<%= Html.LabelFor(model => model.Title) %>:<%= Html.TextBox( "Title" ) %>
|
||||
|
|
@ -21,11 +19,25 @@ $("#tbwrts").stupidtable();
|
|||
<%= Html.Hidden ("Responsible") %>
|
||||
|
||||
<%= Html.LabelFor(model => model.Client) %>:
|
||||
|
||||
<% Client.Value = Model.Client ; %>
|
||||
<yavsc:InputUserName id="Client" name="Client" runat="server">
|
||||
<yavsc:InputUserName
|
||||
id="Client"
|
||||
name="Client"
|
||||
emptyvalue="*nouvel utilisateur*"
|
||||
onchange="onClientChange(this.value);"
|
||||
runat="server" >
|
||||
</yavsc:InputUserName>
|
||||
|
||||
<%= Html.ValidationMessage("Client", "*") %>
|
||||
<script>
|
||||
function onClientChange(newval)
|
||||
{
|
||||
if (newval=='')
|
||||
$("#dfnuser").removeClass("hidden");
|
||||
else
|
||||
$("#dfnuser").addClass("hidden");
|
||||
}
|
||||
</script>
|
||||
<%= Html.ValidationMessage("Client", "*") %>
|
||||
<br/>
|
||||
<%= Html.LabelFor(model => model.Description) %>:<%=Html.TextArea( "Description") %>
|
||||
<%= Html.ValidationMessage("Description", "*") %>
|
||||
|
|
@ -38,7 +50,6 @@ $("#tbwrts").stupidtable();
|
|||
<input type="submit" name="submit" value="Update"/>
|
||||
<% } %>
|
||||
|
||||
|
||||
<% if (Model.Id>0) { %>
|
||||
<table id="tbwrts">
|
||||
<thead>
|
||||
|
|
@ -68,13 +79,26 @@ $("#tbwrts").stupidtable();
|
|||
</table>
|
||||
<% } %>
|
||||
<% } %>
|
||||
|
||||
</asp:Content>
|
||||
|
||||
|
||||
|
||||
<asp:Content ContentPlaceHolderID="MASContent" ID="MASContent1" runat="server">
|
||||
<% ViewData["EstimateId"]=Model.Id; %>
|
||||
<aside>
|
||||
<div id="dfnuser" class="hidden">
|
||||
<%= Html.Partial("Register",new RegisterClientModel(),new ViewDataDictionary(ViewData)
|
||||
{
|
||||
TemplateInfo = new System.Web.Mvc.TemplateInfo
|
||||
{
|
||||
HtmlFieldPrefix = ViewData.TemplateInfo.HtmlFieldPrefix==""?"ur":ViewData.TemplateInfo.HtmlFieldPrefix+"_ur"
|
||||
}
|
||||
}) %>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
<aside>
|
||||
|
||||
<% ViewData["EstimateId"]=Model.Id; %>
|
||||
<%= Html.Partial("Writting",new Writting(),new ViewDataDictionary(ViewData)
|
||||
{
|
||||
TemplateInfo = new System.Web.Mvc.TemplateInfo
|
||||
|
|
@ -82,7 +106,6 @@ $("#tbwrts").stupidtable();
|
|||
HtmlFieldPrefix = ViewData.TemplateInfo.HtmlFieldPrefix==""?"wr":ViewData.TemplateInfo.HtmlFieldPrefix+"_wr"
|
||||
}
|
||||
}) %>
|
||||
|
||||
|
||||
<form>
|
||||
<div>
|
||||
|
|
@ -139,6 +162,7 @@ $("#tbwrts").stupidtable();
|
|||
}
|
||||
|
||||
function delRow(e) {
|
||||
clearWrittingValidation();
|
||||
e.stopPropagation(); // do not edit this row on this click
|
||||
// from <row id= ...><tr><td><input type="button" >
|
||||
var hid=e.delegateTarget.parentNode.parentNode.id;
|
||||
|
|
@ -157,13 +181,17 @@ $("#tbwrts").stupidtable();
|
|||
// $("#tbwrts").tablesorter( {sortList: [[0,0], [1,0]]} ); // .update();
|
||||
},
|
||||
error: function (xhr, ajaxOptions, thrownError) {
|
||||
message(xhr.status+" : "+xhr.responseText);}
|
||||
if (xhr.status!=400)
|
||||
message(xhr.status+" : "+xhr.responseText);
|
||||
else message(false);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function setRow() {
|
||||
var wrt = GetWritting();
|
||||
clearWrittingValidation();
|
||||
$.ajax({
|
||||
url: "<%=Url.Content("~/api/WorkFlow/UpdateWritting")%>",
|
||||
type: 'POST',
|
||||
|
|
@ -176,25 +204,94 @@ $("#tbwrts").stupidtable();
|
|||
cells[3].innerHTML=wrt.UnitaryCost;
|
||||
message(false);
|
||||
},
|
||||
error: function (xhr, ajaxOptions, thrownError) {
|
||||
message (xhr.status+" : "+xhr.responseText+" / "+thrownError);}
|
||||
statusCode: {
|
||||
400: function(data) {
|
||||
$.each(data.responseJSON, function (key, value) {
|
||||
var errspanid = "Err_" + value.key.replace(".","_");
|
||||
var errspan = document.getElementById(errspanid);
|
||||
if (errspan==null)
|
||||
alert('enoent '+errspanid);
|
||||
else
|
||||
errspan.innerHTML=value.errors.join("<br/>");
|
||||
});
|
||||
}
|
||||
},
|
||||
error: function (xhr, ajaxOptions, thrownError) {
|
||||
if (xhr.status!=400)
|
||||
message(xhr.status+" : "+xhr.responseText);
|
||||
else message(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function addUser()
|
||||
{
|
||||
var user={
|
||||
UserName: $("#ur_UserName").val(),
|
||||
Name: $("#ur_Name").val(),
|
||||
Password: $("#ur_Password").val(),
|
||||
Email: $("#ur_Email").val(),
|
||||
Address: $("#ur_Address").val(),
|
||||
CityAndState: $("#ur_CityAndState").val(),
|
||||
ZipCode: $("#ur_ZipCode").val(),
|
||||
Phone: $("#ur_Phone").val(),
|
||||
Mobile: $("#ur_Mobile").val(),
|
||||
IsApprouved: true
|
||||
};
|
||||
clearRegistrationValidation();
|
||||
$.ajax({
|
||||
url: "<%=Url.Content("~/api/FrontOffice/Register")%>",
|
||||
type: "POST",
|
||||
data: user,
|
||||
success: function (data) {
|
||||
$("#Client option:last").after($('<option>'+user.UserName+'</option>'));
|
||||
Client.value = user.UserName;
|
||||
onClientChange(Client.value);
|
||||
},
|
||||
statusCode: {
|
||||
400: function(data) {
|
||||
$.each(data.responseJSON, function (key, value) {
|
||||
var errspanid = "Err_ur_" + value.key.replace("model.","");
|
||||
var errspan = document.getElementById(errspanid);
|
||||
if (errspan==null)
|
||||
alert('enoent '+errspanid);
|
||||
else
|
||||
errspan.innerHTML=value.errors.join("<br/>");
|
||||
});
|
||||
}
|
||||
},
|
||||
error: function (xhr, ajaxOptions, thrownError) {
|
||||
if (xhr.status!=400)
|
||||
message(xhr.status+" : "+xhr.responseText);
|
||||
else message(false);
|
||||
}});
|
||||
}
|
||||
function clearWrittingValidation() {
|
||||
$("#Err_wr_Description").text("");
|
||||
$("#Err_wr_ProductReference").text("");
|
||||
$("#Err_wr_UnitaryCost").text("");
|
||||
$("#Err_wr_Count").text("");
|
||||
}
|
||||
function clearRegistrationValidation(){
|
||||
$("#Err_ur_Name").text("");
|
||||
$("#Err_ur_UserName").text("");
|
||||
$("#Err_ur_Mobile").text("");
|
||||
$("#Err_ur_Phone").text("");
|
||||
$("#Err_ur_Email").text("");
|
||||
$("#Err_ur_Address").text("");
|
||||
$("#Err_ur_ZipCode").text("");
|
||||
$("#Err_ur_CityAndState").text("");
|
||||
}
|
||||
|
||||
function addRow(){
|
||||
var wrt = GetWritting(); // gets a writting object from input controls
|
||||
var estid = parseInt($("#Id").val());
|
||||
|
||||
$("#Err_wr_Description").text("");
|
||||
$("#Err_wr_ProductReference").text("");
|
||||
$("#Err_wr_UnitaryCost").text("");
|
||||
$("#Err_wr_Count").text("");
|
||||
clearWrittingValidation();
|
||||
|
||||
$.ajax({
|
||||
url: "<%=Url.Content("~/api/WorkFlow/Write?estid=")%>"+estid,
|
||||
type: "POST",
|
||||
data: wrt,
|
||||
dataType: "json",
|
||||
success: function (data) {
|
||||
wrt.Id = Number(data);
|
||||
wredit(wrt.Id);
|
||||
|
|
@ -211,22 +308,21 @@ function addRow(){
|
|||
$("<td></td>").append(btrm).appendTo("#"+wridval);
|
||||
btrm.click(function (e) {delRow(e);});
|
||||
$("#"+wridval).click(function(ev){onEditRow(ev);});
|
||||
// $("#tbwrts").tablesorter( {sortList: [[0,0], [1,0]]} ); // .update();
|
||||
|
||||
message(false);
|
||||
|
||||
},
|
||||
dataType: "json",
|
||||
statusCode: {
|
||||
400: function(data) {
|
||||
$.each(data.responseJSON, function (key, value) {
|
||||
document.getElementById("Err_" + value.key.replace(".","_")).innerHTML=value.errors.join("<br/>");
|
||||
document.getElementById("Err_wr_" + value.key).innerHTML=value.errors.join("<br/>");
|
||||
});
|
||||
}
|
||||
},
|
||||
error: function (xhr, ajaxOptions, thrownError) {
|
||||
if (xhr.status != 400)
|
||||
message(xhr.status+" : "+xhr.responseText+" / "+thrownError);}});
|
||||
error: function (xhr, ajaxOptions, thrownError) {
|
||||
if (xhr.status!=400)
|
||||
message(xhr.status+" : "+xhr.responseText);
|
||||
else message(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function onEditRow(e) {
|
||||
|
|
@ -243,6 +339,7 @@ function addRow(){
|
|||
}
|
||||
|
||||
$(document).ready(function () {
|
||||
$("#btnnewuser").click(addUser);
|
||||
$("#btncreate").click(addRow);
|
||||
$("#btnmodify").click(setRow);
|
||||
$(".row").click(function (e) {onEditRow(e);});
|
||||
|
|
@ -261,9 +358,4 @@ function addRow(){
|
|||
<a class="actionlink" href="<%=Url.Content(Yavsc.WebApiConfig.UrlPrefixRelative)%>/FrontOffice/EstimateToTex?estimid=<%=Model.Id%>"><%= LocalizedText.Tex_version %></a>
|
||||
<a class="actionlink" href="<%=Url.Content(Yavsc.WebApiConfig.UrlPrefixRelative)%>/FrontOffice/EstimateToPdf?estimid=<%=Model.Id%>"><%= LocalizedText.Pdf_version %></a>
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
</asp:Content>
|
||||
|
||||
|
||||
</asp:Content>
|
||||
|
|
@ -1,8 +1,25 @@
|
|||
<%@ Page Title="My estimates" Language="C#" MasterPageFile="~/Models/App.master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<Estimate>>" %>
|
||||
<asp:Content ID="MainContentContent" ContentPlaceHolderID="MainContent" runat="server">
|
||||
<% foreach (Estimate estim in Model) { %>
|
||||
<%= Html.ActionLink(estim.Id.ToString(),"Estimate",new {Id=estim.Id}) %>
|
||||
<% if (((int)ViewData["ResponsibleCount"])>0) { %>
|
||||
<div>
|
||||
Les estimations que vous avez faites (<%=ViewData["ResponsibleCount"]%>):<br>
|
||||
<%
|
||||
foreach (Estimate estim in Model) {
|
||||
if (string.Compare(estim.Responsible,(string) ViewData["UserName"])==0) { %>
|
||||
|
||||
<%= Html.ActionLink("Titre:"+estim.Title+" Client:"+estim.Client+" Id:"+estim.Id.ToString(),"Estimate",new {Id=estim.Id}) %>
|
||||
<br>
|
||||
<% }}%>
|
||||
</div>
|
||||
<% } %>
|
||||
</asp:Content>
|
||||
<asp:Content ID="MASContentContent" ContentPlaceHolderID="MASContent" runat="server">
|
||||
<div>
|
||||
Vos estimations <% if (((int)ViewData["ResponsibleCount"])>0) { %>
|
||||
en tant que client
|
||||
<% } %> (<%=ViewData["ClientCount"]%>):<br>
|
||||
<% foreach (Estimate estim in Model) {
|
||||
if (string.Compare(estim.Client,(string)ViewData["UserName"])==0) { %>
|
||||
<%= Html.ActionLink("Titre:"+estim.Title+" Responsable:"+estim.Responsible+" Id:"+estim.Id.ToString(),"Estimate",new {Id=estim.Id}) %>
|
||||
<br>
|
||||
<% }} %>
|
||||
</div>
|
||||
</asp:Content>
|
||||
|
|
|
|||
72
web/Views/FrontOffice/Register.ascx
Normal file
72
web/Views/FrontOffice/Register.ascx
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<RegisterClientModel>" %>
|
||||
<%= Html.ValidationSummary() %>
|
||||
<% using(Html.BeginForm("Register")) %>
|
||||
<% { %>
|
||||
<h1>Nouvel utilisateur</h1>
|
||||
<table class="layout">
|
||||
|
||||
<tr><td align="right">
|
||||
<%= Html.LabelFor(model => model.Name) %>
|
||||
</td><td>
|
||||
<%= Html.TextBox( "Name" ) %>
|
||||
<%= Html.ValidationMessage("Name", "*", new { @id="Err_ur_Name", @class="error" }) %></td></tr>
|
||||
|
||||
<tr><td align="right">
|
||||
<%= Html.LabelFor(model => model.UserName) %>
|
||||
</td><td>
|
||||
<%= Html.TextBox( "UserName" ) %>
|
||||
<%= Html.ValidationMessage("UserName", "*", new { @id="Err_ur_UserName", @class="error" }) %></td></tr>
|
||||
<tr><td align="right">
|
||||
<%= Html.LabelFor(model => model.Password) %>
|
||||
</td><td>
|
||||
<%= Html.Password( "Password" ) %>
|
||||
<%= Html.ValidationMessage("Password", "*", new { @id="Err_ur_Password", @class="error" }) %>
|
||||
</td></tr>
|
||||
<tr><td align="right">
|
||||
<%= Html.LabelFor(model => model.Email) %>
|
||||
</td><td>
|
||||
<%= Html.TextBox( "Email" ) %>
|
||||
<%= Html.ValidationMessage("Email", "*", new { @id="Err_ur_Email", @class="error" }) %>
|
||||
</td></tr>
|
||||
|
||||
<tr><td align="right">
|
||||
<%= Html.LabelFor(model => model.Address) %>
|
||||
</td><td>
|
||||
<%= Html.TextBox( "Address" ) %>
|
||||
<%= Html.ValidationMessage("Address", "*", new { @id="Err_ur_Address", @class="error" }) %></td></tr>
|
||||
|
||||
<tr><td align="right">
|
||||
<%= Html.LabelFor(model => model.CityAndState) %>
|
||||
</td><td>
|
||||
<%= Html.TextBox( "CityAndState" ) %>
|
||||
<%= Html.ValidationMessage("CityAndState", "*", new { @id="Err_ur_CityAndState", @class="error" }) %>
|
||||
|
||||
|
||||
</td></tr>
|
||||
|
||||
<tr><td align="right">
|
||||
<%= Html.LabelFor(model => model.ZipCode) %>
|
||||
</td><td>
|
||||
<%= Html.TextBox( "ZipCode" ) %>
|
||||
<%= Html.ValidationMessage("ZipCode", "*", new { @id="Err_ur_ZipCode", @class="error" }) %></td></tr>
|
||||
|
||||
|
||||
<tr><td align="right">
|
||||
<%= Html.LabelFor(model => model.Phone) %>
|
||||
</td><td>
|
||||
<%= Html.TextBox( "Phone" ) %>
|
||||
<%= Html.ValidationMessage("Phone", "*", new { @id="Err_ur_Phone", @class="error" }) %></td></tr>
|
||||
|
||||
<tr><td align="right">
|
||||
<%= Html.LabelFor(model => model.Mobile) %>
|
||||
</td><td>
|
||||
<%= Html.TextBox( "Mobile" ) %>
|
||||
<%= Html.ValidationMessage("Mobile", "*", new { @id="Err_ur_Mobile", @class="error" }) %></td></tr>
|
||||
|
||||
</table>
|
||||
<input type="button" id="btnnewuser" class="actionlink" value="Enregistrer">
|
||||
<% } %>
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
using System;
|
||||
using System.Web.UI.WebControls;
|
||||
using Yavsc.Model.RolesAndMembers;
|
||||
|
||||
|
||||
namespace Yavsc
|
||||
{
|
||||
/// <summary>
|
||||
/// Register page.
|
||||
/// </summary>
|
||||
public class RegisterPage : System.Web.Mvc.ViewPage<RegisterViewModel>
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="Yavsc.RegisterPage"/> class.
|
||||
/// </summary>
|
||||
public RegisterPage ()
|
||||
{
|
||||
}
|
||||
/// <summary>
|
||||
/// The createuserwizard1.
|
||||
/// </summary>
|
||||
public CreateUserWizard Createuserwizard1;
|
||||
/// <summary>
|
||||
/// Raises the register send mail event.
|
||||
/// </summary>
|
||||
/// <param name="sender">Sender.</param>
|
||||
/// <param name="e">E.</param>
|
||||
public void OnRegisterSendMail(object sender, MailMessageEventArgs e)
|
||||
{
|
||||
// Set MailMessage fields.
|
||||
e.Message.IsBodyHtml = false;
|
||||
e.Message.Subject = "New user on Web site.";
|
||||
// Replace placeholder text in message body with information
|
||||
// provided by the user.
|
||||
e.Message.Body = e.Message.Body.Replace("<%PasswordQuestion%>", Createuserwizard1.Question);
|
||||
e.Message.Body = e.Message.Body.Replace("<%PasswordAnswer%>", Createuserwizard1.Answer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue