Merge branch 'vnext' of https://github.com/pazof/yavsc into vnext

* 'vnext' of https://github.com/pazof/yavsc: (38 commits)
fixe le premier démarrage
Corrige le mot de passe perdu d'un utilisateur au nom contenant des
espaces
traductions
fixe la reccupération du mot de passe
refabrique:
MEP index blogs
Specialized the book query notification
Updated the Licence validity
cleaned up log warnings
label event date
cleans the code
Adds support for SIREN exceptions to validation from the external
provider
layout
trads
refactoring
refactoring
Google maps: a map
image
implements an AccessDenied page
A better layout
...

# Conflicts:
#	Yavsc.Api/project.lock.json
#	Yavsc.Client/Yavsc.Client.csproj
#	Yavsc.Client/packages.config
#	sendmsg/Program.cs
This commit is contained in:
Paul Schneider 2016-07-30 22:51:19 +02:00
commit e3a73e8146
190 changed files with 6664 additions and 763 deletions

View file

@ -0,0 +1,17 @@
@{
ViewData["Title"] = SR["Forbidden"];
}
L'accès à cette ressource est protégé.
@if (ViewBag.UserIsSignedIn) {
@:Vous ne possédez pas les droits suffisants pour y acceder.
<a class="btn btn-lg btn-success" asp-controller="Account" asp-action="SignIn" asp-route-returnurl="@Model" >@SR["Login"] avec un autre compte</a>
}
else {
<a class="btn btn-lg btn-success" class="success" asp-controller="Account" asp-action="SignIn" asp-route-returnurl="@Model" >@SR["Login"]</a>
}

View file

@ -1,6 +0,0 @@
@{
ViewData["Title"] = SR["Forbidden"];
}
<a href="Login">@SR["Login"]</a>

View file

@ -1,12 +1,12 @@
@model ForgotPasswordViewModel
@{
ViewData["Title"] = "Forgot your password?";
ViewData["Title"] = SR["Forgot your password?"];
}
<h2>@ViewData["Title"].</h2>
<h2>@ViewData["Title"]</h2>
<form asp-controller="Account" asp-action="ForgotPassword" method="post" class="form-horizontal" role="form">
<h4>Enter your email.</h4>
<h4>@SR["Enter your email."]</h4>
<hr />
<div asp-validation-summary="ValidationSummary.All" class="text-danger"></div>
<div class="form-group">
@ -18,7 +18,7 @@
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<button type="submit" class="btn btn-default">Submit</button>
<button type="submit" class="btn btn-default">@SR["Submit"]</button>
</div>
</div>
</form>

View file

@ -1,8 +1,8 @@
@{
ViewData["Title"] = "Forgot Password Confirmation";
ViewData["Title"] = @SR["Forgot Password Confirmation."];
}
<h2>@ViewData["Title"].</h2>
<p>
Please check your email to reset your password.
@SR["PleaseCheckYourEmail"]
</p>

View file

@ -1,8 +1,8 @@
@{
ViewData["Title"] = "Reset password confirmation";
ViewData["Title"] = SR["Reset password confirmation"];
}
<h1>@ViewData["Title"].</h1>
<p>
Your password has been reset. Please <a asp-controller="Account" asp-action="Login">Click here to log in</a>.
@SR["Your password has been reset."] @SR["Please"] <a href="~/signin">@SR["Click here to log in"]</a>.
</p>

View file

@ -9,13 +9,13 @@
<hr />
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.title)
@SR[Html.DisplayNameFor(model => model.title)]
</dt>
<dd>
@Html.DisplayFor(model => model.title)
</dd>
<dt>
@Html.DisplayNameFor(model => model.photo)
@SR[Html.DisplayNameFor(model => model.photo)]
</dt>
<dd>
@Html.DisplayFor(model => model.photo)
@ -27,34 +27,34 @@
@Model.Author.UserName
</dd>
<dt>
Contenu
@SR["Content"]
</dt>
<dd>
<div markdown="@Model.bcontent" base="~/@Model.Id"
site="SiteSettings.Value"></div>
</dd>
<dt>
@Html.DisplayNameFor(model => model.modified)
@SR[Html.DisplayNameFor(model => model.modified)]
</dt>
<dd>
@Html.DisplayFor(model => model.modified)
</dd>
<dt>
@Html.DisplayNameFor(model => model.posted)
@SR[Html.DisplayNameFor(model => model.posted)]
</dt>
<dd>
@Html.DisplayFor(model => model.posted)
</dd>
<dt>
@Html.DisplayNameFor(model => model.rate)
@SR[Html.DisplayNameFor(model => model.rate)]
</dt>
<dd>
@Html.DisplayFor(model => model.rate)
</dd>
<dt>
@Html.DisplayNameFor(model => model.visible)
@SR[Html.DisplayNameFor(model => model.visible)]
</dt>
<dd>
@Html.DisplayFor(model => model.visible)
@ -64,10 +64,10 @@
<ul>
@if (await AuthorizationService.AuthorizeAsync(User, Model, new EditRequirement())) {
<li>
<a asp-action="Edit" asp-route-id="@Model.Id">Edit</a>
<a asp-action="Edit" asp-route-id="@Model.Id">@SR["Edit"]</a>
</li>
}
<li>
<a asp-action="Index">Back to List</a>
<a asp-action="Index">@SR["Back to List"]</a>
</li>
</ul>

View file

@ -7,30 +7,18 @@
<h2>Index</h2>
<p class="text-success">@ViewData["StatusMessage"]</p>
<p>
<a asp-action="Create">Create New</a>
<a asp-action="Create">@SR["Create a new article"]</a>
</p>
<table class="table">
<tr>
<th>
@SR[Html.DisplayNameFor(model => model.title)]
</th>
<th>
@SR["Author"]
</th>
<th>
@Html.DisplayNameFor(model => model.title)
</th>
<th>
@Html.DisplayNameFor(model => model.modified)
</th>
<th>
@Html.DisplayNameFor(model => model.photo)
</th>
<th>
@Html.DisplayNameFor(model => model.posted)
</th>
<th>
@Html.DisplayNameFor(model => model.rate)
</th>
<th>
@Html.DisplayNameFor(model => model.visible)
@SR["Date"]
</th>
<th></th>
</tr>
@ -38,34 +26,29 @@
@foreach (var item in Model) {
<tr>
<td>
@item.Author?.UserName
</td>
<td>
@Html.DisplayFor(modelItem => item.photo)
<markdown>@item.title</markdown>
</td>
<td>
@Html.DisplayFor(modelItem => item.modified)
@item.Author.UserName
</td>
<td>
@Html.DisplayFor(modelItem => item.photo)
<span style="font-size:x-small;">
posté le @item.posted.ToString("dddd d MMM yyyy à H:mm")
@if ((item.modified - item.posted).Minutes > 10)
{ 
@:- Modifié le @item.modified.ToString("dddd d MMM yyyy à H:mm")
}
</span>
</td>
<td>
@Html.DisplayFor(modelItem => item.posted)
</td>
<td>
@Html.DisplayFor(modelItem => item.rate)
</td>
<td>
@Html.DisplayFor(modelItem => item.visible)
</td>
<td>
<td>
<ul class="actiongroup">
<li><a asp-action="Details" asp-route-id="@item.Id">Details</a>
</li>
@if (await AuthorizationService.AuthorizeAsync(User, item, new EditRequirement())) {
<li><a asp-action="Edit" asp-route-id="@item.Id">Edit</a>
<li><a asp-action="Edit" asp-route-id="@item.Id">@SR["Edit"]</a>
</li>
<li><a asp-action="Delete" asp-route-id="@item.Id">Delete</a>
<li><a asp-action="Delete" asp-route-id="@item.Id">@SR["Delete"]</a>
</li>
}
</ul>

View file

@ -0,0 +1,30 @@
@model BookQuery
@using Yavsc.Models.Google.Messaging
@{
ViewData["Title"] = SR["Command confirmation"]+" "+SR[Model.PerformerProfile.ActivityCode];
}
<h2>@ViewData["Title"]</h2>
<div class="form-horizontal">
<h4>@SR["Your book query"]</h4>
<hr />
<label for="EventDate">@SR["Event date"]</label>: @Html.DisplayFor(m => m.EventDate)
<br/>
<label for="Location">@SR["Location"]</label>: @Html.DisplayFor(m => m.Location)
<br/>
@if (ViewBag.GooglePayload !=null)
{
@if (ViewBag.GooglePayload.success>0) {
<h4>@SR["GCM Notifications sent"]</h4>
}
else {
if (ViewBag.GooglePayload.failure>0)
{
<h4>@SR["GCM Notification sending failed"]</h4>
}
}
}
</div>

View file

@ -1,4 +1,4 @@
@model Yavsc.Models.Estimate
@model Estimate
@{
ViewData["Title"] = SR["Estimate"];

View file

@ -1,4 +1,4 @@
@model Yavsc.Models.Estimate
@model Estimate
@{
ViewData["Title"] = "Delete";

View file

@ -1,4 +1,4 @@
@model Yavsc.Models.Estimate
@model Estimate
@{
ViewData["Title"] = "Details";

View file

@ -1,4 +1,4 @@
@model Yavsc.Models.Estimate
@model Estimate
@{
ViewData["Title"] = "Edit";

View file

@ -1,4 +1,4 @@
@model IEnumerable<Yavsc.Models.Estimate>
@model IEnumerable<Estimate>
@{
ViewData["Title"] = SR["My estimates"];

View file

@ -8,7 +8,7 @@
@foreach (var profile in Model) {
await Html.RenderPartialAsync("_PerformerPartial", profile) ;
<form action="~/Command/Create" >
<input type="hidden" name="id" value="@profile.PerfomerId" />
<input type="hidden" name="id" value="@profile.PerformerId" />
<input type="submit" value="@SR["Book this performer"]"/>
</form>
}

View file

@ -11,7 +11,7 @@
</ol>
<div class="carousel-inner" role="listbox">
<div class="item active">
<img src="~/images/booking/groupe_s.jpg" alt="ASP.NET" class="img-responsive" />
<img src="~/images/booking/groupe_b2.jpg" alt="ASP.NET" class="img-responsive" />
<div class="carousel-caption">
<p>
Invitez un groupe musical à animer votre événement </p>
@ -23,7 +23,7 @@
</div>
</div>
<div class="item">
<img src="~/images/booking/concert_s.jpg" alt="Visual Studio" class="img-responsive" />
<img src="~/images/booking/concert_b2.jpg" alt="Visual Studio" class="img-responsive" />
<div class="carousel-caption">
<p>
Organisez un concert. </p>
@ -35,7 +35,7 @@
</div>
</div>
<div class="item">
<img src="~/images/booking/dj_s.jpg" alt="Package Management" class="img-responsive" />
<img src="~/images/booking/dj_b2.jpg" alt="Package Management" class="img-responsive" />
<div class="carousel-caption">
<p> Offrez-vous un anniversaire, un mariage Hip Hop </p>
<p>
@ -48,7 +48,7 @@
</div>
</div>
<div class="item">
<img src="~/images/booking/mike_s.jpg" alt="Microsoft Azure" class="img-responsive" />
<img src="~/images/booking/mike_b2.jpg" alt="Microsoft Azure" class="img-responsive" />
<div class="carousel-caption">
<p>
Invitez votre chanteur à la fête </p>

View file

@ -23,10 +23,41 @@
<script>
$(document).ready(function(){
var gmap = new google.maps.Map(document.getElementById('map'), {
zoom: 16,
center: { lat: 48.862854, lng: 2.2056466 }
});
var marker;
function chooseLoc(loc) {
$('#Location_Address').val(loc.formatted_address);
var pos = loc.geometry.location;
var lat = new Number(pos.lat);
var lng = new Number(pos.lng);
$('#OrganizationAddress_Latitude').val(lat.toLocaleString());
$('#OrganizationAddress_Longitude').val(lng.toLocaleString());
gmap.setCenter(pos);
if (marker) {
marker.setMap(null);
}
marker = new google.maps.Marker({
map: gmap,
draggable: true,
animation: google.maps.Animation.DROP,
position: pos
});
google.maps.event.addListener(marker, 'dragend', function() {
// TODO reverse geo code
var pos = marker.getPosition();
$('#OrganizationAddress_Latitude').val(pos.lat);
$('#OrganizationAddress_Longitude').val(pos.lng);
});
$('#Location_Address').valid();
return true;
};
$('#Location_Address').geocode( { submit: 'btngeocode' ,
inputLatitude: 'Location_Longitude',
inputLongitude: 'Location_Latitude',
inputLatitude: 'OrganizationAddress_Longitude',
inputLongitude: 'OrganizationAddress_Latitude',
combo: 'dropdownItems1',
onValidated: function (e) {
if (e.success) {
@ -44,15 +75,35 @@
} } );
$.validator.addMethod("geocode", function(value, element) {
console.log("here"); return $(element).geocodeAddress();});
$("#FrmSetAct").validator({options: {
errors: {
match: 'Non conforme.',
minlength: 'Pas assez long.',
geocode: 'Adresse non reconnue par Google.'
}
}})
$('#OrganizationAddress').rules("add",
{
remote: {
url: 'http://maps.googleapis.com/maps/api/geocode/json',
type: 'get',
data: {
sensor: false,
address: function () { return $('#Location_Address').val() }
},
dataType: 'json',
dataFilter: function(datastr,type) {
$('#Location_combo').html("");
var data = JSON.parse(datastr);
data.results.forEach(function(element) {
if (element.formatted_address !== $('#Location_Address').val()) {
$('<li>'+element.formatted_address+'</li>')
.data("geoloc",element)
.click(function() { chooseLoc($(this).data("geoloc")) })
.appendTo($('#Location_combo'));}});
return (data.status === 'OK') && (data.results.length == 1);
},
error: function(xhr, textStatus, errorThrown)
{
console.log('ajax loading error ... '+textStatus+' ... '+ errorThrown);
return false;
}
}
});
});
</script>
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); }
@ -63,7 +114,7 @@
@{ await Html.RenderPartialAsync("_PerformerPartial", Model) ; }
<form id="FrmSetAct" asp-controller="Manage" asp-action="SetActivity" method="post" class="form-horizontal" role="form">
<h4>Choose below your main activity:</h4>
<h4>@SR["Choose below your main activity"]:</h4>
<hr />
<div asp-validation-summary="ValidationSummary.All" class="text-danger"></div>
<div class="form-group">
@ -92,11 +143,11 @@
</div>
<div class="form-group">
<label asp-for="AcceptGeoLocalisation" class="col-md-2 control-label"></label>
<label asp-for="AcceptGeoLocalization" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="AcceptGeoLocalisation" class="form-control" />
<input asp-for="AcceptGeoLocalization" class="form-control" />
<span asp-validation-for="AcceptGeoLocalisation" class="text-danger"></span>
<span asp-validation-for="AcceptGeoLocalization" class="text-danger"></span>
</div>
</div>
<div class="form-group">
@ -146,17 +197,17 @@
</div>
<div class="form-group">
<label asp-for="OrganisationAddress.Address" class="col-md-2 control-label"></label>
<label asp-for="OrganizationAddress.Address" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="OrganisationAddress.Address" asp-items=@ViewBag.Activities class="form-control" type="text" />
<input asp-for="OrganizationAddress.Address" class="form-control" type="text" />
<span asp-validation-for="OrganisationAddress.Address" class="text-danger"></span>
<span id="AddressError" asp-validation-for="OrganizationAddress.Address" class="text-danger"></span>
<div id="map"></div>
</div>
</div>
@Html.Hidden("OrganisationAddress.Latitude")
@Html.Hidden("OrganisationAddress.Longitude")
@Html.Hidden("PerfomerId")
@Html.Hidden("OrganizationAddress.Latitude")
@Html.Hidden("OrganizationAddress.Longitude")
@Html.Hidden("PerformerId")
<button type="submit" class="btn btn-default">Save these settings</button>
</form>

View file

@ -0,0 +1,22 @@
@model Yavsc.Models.Billing.ExceptionSIREN
<form asp-action="Create">
<div class="form-horizontal">
<h4>Exception SIREN</h4>
<hr />
<div asp-validation-summary="ValidationSummary.ModelOnly" class="text-danger"></div>
<div class="form-group">
@Html.TextBox("SIREN")
<div class="col-md-offset-1 col-md-10">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
</div>
</form>
<div>
<a asp-action="Index">Back to List</a>
</div>

View file

@ -0,0 +1,31 @@
@model Yavsc.Models.Billing.ExceptionSIREN
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Delete</title>
</head>
<body>
<h3>Are you sure you want to delete this?</h3>
<div>
<h4>ExceptionSIREN</h4>
<hr />
<dl class="dl-horizontal">
</dl>
<form asp-action="Delete">
<div class="form-actions no-color">
<input type="submit" value="Delete" class="btn btn-default" /> |
<a asp-action="Index">Back to List</a>
</div>
</form>
</div>
</body>
</html>

View file

@ -0,0 +1,27 @@
@model Yavsc.Models.Billing.ExceptionSIREN
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Details</title>
</head>
<body>
<div>
<h4>ExceptionSIREN</h4>
<hr />
<dl class="dl-horizontal">
</dl>
</div>
<p>
<a asp-action="Edit" asp-route-id="@Model.SIREN">Edit</a> |
<a asp-action="Index">Back to List</a>
</p>
</body>
</html>

View file

@ -0,0 +1,39 @@
@model Yavsc.Models.Billing.ExceptionSIREN
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Edit</title>
</head>
<body>
<form asp-action="Edit">
<div class="form-horizontal">
<h4>ExceptionSIREN</h4>
<hr />
<div asp-validation-summary="ValidationSummary.ModelOnly" class="text-danger"></div>
@Html.DisplayFor(model => model.SIREN) :
<div class="form-group">
<div class="col-md-offset-1 col-md-10">
@Html.InputFor(model => model.SIREN)
</div>
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</div>
</div>
</form>
<div>
<a asp-action="Index">Back to List</a>
</div>
</body>
</html>

View file

@ -0,0 +1,21 @@
@model IEnumerable<Yavsc.Models.Billing.ExceptionSIREN>
<p>
<a asp-action="Create">Create New</a>
</p>
<table class="table">
<tr>
<th>Exceptions à la validation des code SIREN</th>
</tr>
@foreach (var item in Model) {
<tr>
<td>@item.SIREN</td>
<td>
<a asp-action="Edit" asp-route-id="@item.SIREN">Edit</a> |
<a asp-action="Details" asp-route-id="@item.SIREN">Details</a> |
<a asp-action="Delete" asp-route-id="@item.SIREN">Delete</a>
</td>
</tr>
}
</table>

View file

@ -45,7 +45,7 @@
<a asp-action="Register" asp-controller="Account">@SR["Register as a new user"]?</a>
</p>
<p>
<a asp-action="ForgotPassword" asp-controller="Account">@SR["Forgot your password"]?</a>
<a asp-action="ForgotPassword" asp-controller="Account">@SR["Forgot your password?"]</a>
</p>
<input type="hidden" name="Provider" value="LOCAL" />
<input type="hidden" name="ReturnUrl" value="@Model.ReturnUrl" />

View file

@ -39,12 +39,14 @@
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a asp-controller="Home" asp-action="Index" class="navbar-brand">@SiteSettings.Value.Title</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a asp-controller="Home" asp-action="Index" class="navbar-link">@SR["Home"]</a></li>
<li><a asp-controller="Blogspot" asp-action="Index" class="navbar-link">@SR["Blogs"]</a></li>
<li><a asp-controller="Home" asp-action="About" class="navbar-link">@SR["About"] @SiteSettings.Value.Title</a> </li>
<li><a asp-controller="Home" asp-action="Contact" class="navbar-link">@SR["Contact"]</a></li>
</ul>

View file

@ -1,8 +1,10 @@
@model PerformerProfile
<div class="performer @(Model.Active?"active":"inactive")">
@Model.Performer?.UserName (rating: @Model.Rate%)
@if (Model.Performer != null) {
<ul>
<li>@Model.Performer.UserName (rating: @Model.Rate%)</li>
@if (Model.MinDailyCost != null) {
<li>@SR["MinDailyCost"]: @Model.MinDailyCost&euro;</li>
}
@ -29,4 +31,5 @@
</li>
}
</ul>
}
</div>