reorg
This commit is contained in:
parent
d000f77098
commit
40e8e08690
3487 changed files with 39 additions and 21 deletions
33
src/Yavsc.Org/Views/Shared/BillingLine.cshtml
Normal file
33
src/Yavsc.Org/Views/Shared/BillingLine.cshtml
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
@model CommandLine
|
||||
|
||||
|
||||
<dl class="dl-horizontal">
|
||||
<dt>
|
||||
@Html.DisplayNameFor(model => model.Id)
|
||||
</dt>
|
||||
<dd>
|
||||
@Html.DisplayFor(model => model.Id)
|
||||
</dd>
|
||||
|
||||
<dt>
|
||||
@Html.DisplayNameFor(model => model.Description)
|
||||
</dt>
|
||||
<dd>
|
||||
@Html.DisplayFor(model => model.Description)
|
||||
</dd>
|
||||
|
||||
<dt>
|
||||
@Html.DisplayNameFor(model => model.Count)
|
||||
</dt>
|
||||
<dd>
|
||||
@Html.DisplayFor(model => model.Count)
|
||||
</dd>
|
||||
|
||||
<dt>
|
||||
@Html.DisplayNameFor(model => model.UnitaryCost)
|
||||
</dt>
|
||||
<dd>
|
||||
@Html.DisplayFor(model => model.UnitaryCost)
|
||||
</dd>
|
||||
|
||||
</dl>
|
||||
64
src/Yavsc.Org/Views/Shared/ColorEditor.cshtml
Normal file
64
src/Yavsc.Org/Views/Shared/ColorEditor.cshtml
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
@model Color
|
||||
<div>
|
||||
|
||||
<div id="clrprv" style="border:solid grey 1px; width:1em; height:1em; display: inline-block; height:3em; width:5em;"></div>
|
||||
|
||||
<div style="display: inline-block; width:15em; margin:.3em;">
|
||||
<div id="sred" class="slider" style="background-color:red;"></div>
|
||||
<div id="sgreen" class="slider" style="background-color:green;"></div>
|
||||
<div id="sblue" class="slider" style="background-color:blue;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" id="Red" name="Red" />
|
||||
<input type="hidden" id="Green" name="Green" />
|
||||
<input type="hidden" id="Blue" name="Blue" />
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
var red = @Model.Red;
|
||||
var green = @Model.Green;
|
||||
var blue = @Model.Blue;
|
||||
|
||||
$("#sred").slider(
|
||||
{
|
||||
value: red,
|
||||
min: 0,
|
||||
max: 255,
|
||||
animate: "fast"
|
||||
});
|
||||
$("#sgreen").slider(
|
||||
{
|
||||
value: green,
|
||||
min: 0,
|
||||
max: 255,
|
||||
animate: "fast"
|
||||
});
|
||||
$("#sblue").slider(
|
||||
{
|
||||
value: blue,
|
||||
min: 0,
|
||||
max: 255,
|
||||
animate: "fast"
|
||||
});
|
||||
var updateColor = function() {
|
||||
$("#clrprv").css("background-color","rgb("+red+","+green+","+blue+")");
|
||||
$("#Red").val(red);
|
||||
$("#Green").val(green);
|
||||
$("#Blue").val(blue);
|
||||
console.log($("#Blue").val());
|
||||
};
|
||||
$("#sred").on("slide",function(event, ui){
|
||||
red=ui.value;
|
||||
updateColor();
|
||||
});
|
||||
$("#sgreen").on("slide",function(event, ui){
|
||||
green=ui.value;
|
||||
updateColor();
|
||||
});
|
||||
$("#sblue").on("slide",function(event, ui){
|
||||
blue=ui.value;
|
||||
updateColor();
|
||||
});
|
||||
updateColor();
|
||||
});
|
||||
|
||||
</script>
|
||||
21
src/Yavsc.Org/Views/Shared/Components/Bill/Bill_pdf.cshtml
Normal file
21
src/Yavsc.Org/Views/Shared/Components/Bill/Bill_pdf.cshtml
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
@using System.Reflection
|
||||
@using System.IO
|
||||
@using Microsoft.Extensions.WebEncoders
|
||||
@using System.Diagnostics
|
||||
@using System.Text
|
||||
@using Yavsc.Helpers
|
||||
@model Yavsc.ViewModels.Gen.PdfGenerationViewModel
|
||||
|
||||
@{
|
||||
Model.GenerateEstimatePdf();
|
||||
}
|
||||
@if (Model.Generated) {
|
||||
<div>
|
||||
@(Model.BaseFileName).pdf was generated
|
||||
</div>
|
||||
} else {
|
||||
<div class="error">
|
||||
@Model.GenerationErrorMessage
|
||||
<p>Something went wrong ...</p>
|
||||
</div>
|
||||
}
|
||||
228
src/Yavsc.Org/Views/Shared/Components/Bill/Bill_tex.cshtml
Normal file
228
src/Yavsc.Org/Views/Shared/Components/Bill/Bill_tex.cshtml
Normal file
|
|
@ -0,0 +1,228 @@
|
|||
@using Yavsc.Helpers
|
||||
@using System.IO
|
||||
@using System.Globalization
|
||||
@model IBillable
|
||||
@{
|
||||
Layout = "null";
|
||||
var pro = ViewBag.PerformerProfile;
|
||||
var from = ViewBag.Performer;
|
||||
var to = ViewBag.Client;
|
||||
var PostalAddress = ViewBag.ClientAddress;
|
||||
var proaddr = ViewBag.PerformerOrganizationAddress;
|
||||
var isestimate = !ViewBag.AsBill;
|
||||
var prosign = new FileInfo($"{ViewBag.BillsDir}/sign-{ViewBag.BillingCode}-{Model.Id}.png");
|
||||
var clisign = new FileInfo($"{ViewBag.BillsDir}/sign-{ViewBag.BillingCode}-{Model.Id}.png");
|
||||
var activity = ViewBag.ActivityLabel;
|
||||
var bill = Model.GetBillItems();
|
||||
string validationDate = null ;
|
||||
if (Model.ValidationDate.HasValue) {
|
||||
validationDate = Model.ValidationDate.Value.ToString("dddd dd MMMM yyyy", CultureInfo.CreateSpecificCulture("fr-FR"));
|
||||
}
|
||||
}
|
||||
\documentclass[french,11pt]{article}
|
||||
\usepackage{eurosym}
|
||||
\usepackage{textcomp}
|
||||
\usepackage{babel}
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage[a4paper]{geometry}
|
||||
\usepackage{units}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{fancyhdr}
|
||||
\usepackage{fp}
|
||||
\usepackage[space]{grffile}
|
||||
\def\TVA{20} % Taux de la TVA
|
||||
|
||||
\def\TotalHT{0}
|
||||
\def\TotalTVA{0}
|
||||
|
||||
\newcommand{\AjouterService}[3]{% Arguments : Désignation, quantité, prix
|
||||
\FPround{\prix}{#3}{2}
|
||||
\FPeval{\montant}{#2 * #3}
|
||||
\FPround{\montant}{\montant}{2}
|
||||
\FPadd{\TotalHT}{\TotalHT}{\montant}
|
||||
\eaddto\ListeProduits{#1 & \prix & #2 & \montant \cr}
|
||||
}
|
||||
|
||||
\newcommand{\AfficheResultat}{%
|
||||
\ListeProduits
|
||||
\FPeval{\TotalTVA}{\TotalHT * \TVA / 100}
|
||||
\FPadd{\TotalTTC}{\TotalHT}{\TotalTVA}
|
||||
\FPround{\TotalHT}{\TotalHT}{2}
|
||||
\FPround{\TotalTVA}{\TotalTVA}{2}
|
||||
\FPround{\TotalTTC}{\TotalTTC}{2}
|
||||
\global\let\TotalHT\TotalHT
|
||||
\global\let\TotalTVA\TotalTVA
|
||||
\global\let\TotalTTC\TotalTTC
|
||||
\cr
|
||||
\hline
|
||||
\textbf{Total} & & & \TotalHT
|
||||
}
|
||||
|
||||
\newcommand*\eaddto[2]{% version développée de \addto
|
||||
\edef\tmp{#2}%
|
||||
\expandafter\addto
|
||||
\expandafter#1%
|
||||
\expandafter{\tmp}%
|
||||
}
|
||||
|
||||
\newcommand{\ListeProduits}{}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%% A MODIFIER DANS LA FACTURE %%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
\def\FactureNum {@Model.Id.ToString()} % Numéro de facture
|
||||
\def\FactureAcquittee {@(ViewBag.Acquitted?"oui":"non")} % Facture acquittée : oui/non
|
||||
\def\FactureLieu {@proaddr} % Lieu de l'édition de la facture
|
||||
\def\FactureObjet {@(new HtmlString(isestimate?"Devis":"Facture")) en @TeXHelpers.ToTeX(activity)} % Objet du document
|
||||
% Description de la facture
|
||||
\def\FactureDescr {
|
||||
@TeXHelpers.ToTeX(Model.Description)
|
||||
}
|
||||
|
||||
% Infos Client
|
||||
\def\ClientNom{@TeXHelpers.ToTeX(to.UserName)} % Nom du client
|
||||
|
||||
\def\ClientAdresse{
|
||||
% Adresse du client
|
||||
@PostalAddress @if (!string.IsNullOrWhiteSpace(to.PhoneNumber)) {<text>\\
|
||||
@TeXHelpers.ToTeX(to.PhoneNumber)
|
||||
</text>}\\
|
||||
E-mail: @TeXHelpers.ToTeX(to.Email)
|
||||
}
|
||||
|
||||
% Liste des produits facturés : Désignation, prix
|
||||
@foreach (var line in bill) {
|
||||
<text>\AjouterService{@TeXHelpers.ToTeXCell(line.Description)}{@line.Count}{@line.UnitaryCost.ToString("F2",CultureInfo.InvariantCulture)}
|
||||
</text>}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
|
||||
\geometry{verbose,tmargin=4em,bmargin=8em,lmargin=6em,rmargin=6em}
|
||||
\setlength{\parindent}{0pt}
|
||||
\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex}
|
||||
|
||||
\thispagestyle{fancy}
|
||||
\pagestyle{fancy}
|
||||
\setlength{\parindent}{0pt}
|
||||
|
||||
\renewcommand{\headrulewidth}{0pt}
|
||||
\cfoot{ @TeXHelpers.ToTeX(from.UserName) - @ViewBag.FooterPerformerOrganizationAddress \\
|
||||
\small{ E-mail: @TeXHelpers.ToTeX(from.Email) @if (!string.IsNullOrWhiteSpace(from.PhoneNumber)) { <text> - Téléphone : @TeXHelpers.ToTeX(from.PhoneNumber) </text> }
|
||||
}
|
||||
}
|
||||
|
||||
\begin{document}
|
||||
|
||||
% Logo de la société
|
||||
@if (from.Avatar != null) {
|
||||
<text>\includegraphics[height=60pt]{@(ViewBag.AvatarsDir)/@(from.UserName).png}
|
||||
</text>
|
||||
} else {
|
||||
<text>%\includegraphics{logo.png}
|
||||
</text>
|
||||
}
|
||||
% Nom et adresse de la société
|
||||
@TeXHelpers.ToTeX(from.UserName) \\
|
||||
@proaddr
|
||||
|
||||
@(isestimate?"Devis":"Facture") n\textdegree\FactureNum
|
||||
|
||||
|
||||
{\addtolength{\leftskip}{10.5cm} %in ERT
|
||||
\textbf{\ClientNom} \\
|
||||
\ClientAdresse \\
|
||||
|
||||
} %in ERT
|
||||
|
||||
|
||||
\hspace*{10.5cm}
|
||||
\FactureLieu, le \today
|
||||
|
||||
~\\~\\
|
||||
|
||||
\textbf{Objet : \FactureObjet \\}
|
||||
|
||||
\textnormal{\FactureDescr}
|
||||
|
||||
~\\
|
||||
|
||||
\begin{center}
|
||||
\begin{tabular}{lrrr}
|
||||
\textbf{Désignation ~~~~~~} & \textbf{Prix unitaire} & \textbf{Quantité} & \textbf{Montant (\euro)} \\
|
||||
\hline
|
||||
\AfficheResultat{}
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
|
||||
\begin{flushright}
|
||||
\textit{Auto entreprise en franchise de TVA}\\
|
||||
|
||||
\end{flushright}
|
||||
~\\
|
||||
@if (ViewBag.AsBill) {
|
||||
if (ViewBag.Acquitted) {
|
||||
<text>
|
||||
\ifthenelse{\equal{\FactureAcquittee}{oui}}{
|
||||
Facture acquittée.
|
||||
}
|
||||
</text>
|
||||
} else {
|
||||
var bi = from.BankInfo;
|
||||
if (bi==null){
|
||||
<text>À régler sur site, en utilisant le paiment PayPal:\\
|
||||
Le relevé d'identité bancaire de ce prestaire n'est pas renseigné.
|
||||
</text>
|
||||
} else {
|
||||
<text>À régler par chèque ou par virement bancaire :
|
||||
|
||||
\begin{center}
|
||||
\begin{tabular}{|c c c c|}
|
||||
@if (!string.IsNullOrWhiteSpace(bi.BankCode) && !string.IsNullOrWhiteSpace(bi.WicketCode)
|
||||
&& !string.IsNullOrWhiteSpace(bi.AccountNumber) ) {
|
||||
<text>\hline \textbf{Code banque} & \textbf{Code guichet} & \textbf{N\textdegree de Compte} & \textbf{Clé RIB} \\
|
||||
@bi.BankCode & @bi.WicketCode & @bi.AccountNumber & @bi.BankedKey \\
|
||||
</text>
|
||||
}
|
||||
@if (!string.IsNullOrWhiteSpace(@bi.IBAN) && !string.IsNullOrWhiteSpace(@bi.BIC)) {
|
||||
<text>
|
||||
\hline \textbf{IBAN N\textdegree} & \multicolumn{3}{|l|}{ @bi.IBAN } \\
|
||||
\hline \textbf{Code BIC} & \multicolumn{3}{|l|}{ @bi.BIC }
|
||||
</text>
|
||||
} \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{center}</text>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@if (validationDate!=null) {
|
||||
<text>
|
||||
\begin{flushright}
|
||||
@(new TeXString(isestimate?"Devis demandé le ":"Facture suite à la demande du ")+
|
||||
TeXHelpers.ToTeX(validationDate))
|
||||
\end{flushright}
|
||||
@if (prosign.Exists) {
|
||||
<text>
|
||||
\begin{center}
|
||||
\hspace{263pt}
|
||||
\includegraphics[height=60pt]{@(ViewBag.BillsDir)/{ViewBag.BillingCode}-prosign-@(Model.Id).png}
|
||||
\end{center}
|
||||
</text>
|
||||
}
|
||||
|
||||
@if (clisign.Exists) {
|
||||
<text>
|
||||
\begin{center}
|
||||
\hspace{263pt}
|
||||
\includegraphics[height=60pt]{@(ViewBag.BillsDir)/{ViewBag.BillingCode}-clisign-@(Model.Id).png}
|
||||
\end{center}
|
||||
</text>
|
||||
}
|
||||
|
||||
</text>
|
||||
}
|
||||
\end{document}
|
||||
33
src/Yavsc.Org/Views/Shared/Components/Bill/Default.cshtml
Normal file
33
src/Yavsc.Org/Views/Shared/Components/Bill/Default.cshtml
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
|
||||
@model IBillable
|
||||
<div class="bill">
|
||||
@if (ViewBag.BillFileInfo.Exists) {
|
||||
<a class="btn btn-link" href="~/api/bill/facture-@(ViewBag.BillingCode)-@(Model.Id).pdf" >La facture au format Pdf</a>
|
||||
} else {
|
||||
<script>
|
||||
var onGenerate = function () {
|
||||
var _btn = "this";
|
||||
$.post('/api/bill/genpdf/@ViewBag.BillingCode/@Model.Id')
|
||||
.done(function(data){
|
||||
var res = JSON.parse(data);
|
||||
window.location.href = '/api/bill/' + res.Generated;
|
||||
_btn.disabled = "true";
|
||||
})
|
||||
.fail(function( jqXHR, textStatus, errorThrown ) {
|
||||
$('#billgenerr').html('<em>La génération a échoué</em><p>'+textStatus+'</p>')
|
||||
})
|
||||
};
|
||||
|
||||
$(document).ready(function(){$('#btnGen').on('click',onGenerate)})
|
||||
|
||||
</script>
|
||||
<div id="billgen">
|
||||
<form action= method="POST">
|
||||
<input id="btnGen" class="btn btn-primary" type="button" onclick="onGenerate" value="Générer la facture au format Pdf" />
|
||||
|
||||
<div id="billgenerr" class="error">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
@model DateTimeChooserViewModel
|
||||
@{
|
||||
var dtpid = $"dtpckr{Model.InputId}";
|
||||
var currentUICulture = System.Globalization.CultureInfo.CurrentUICulture;
|
||||
}
|
||||
|
||||
<div class='input-group date' data-provide="datepicker-inline" id="@dtpid">
|
||||
<input class="form-control " name="@Model.InputId" id="@Model.InputId" />
|
||||
<span class="input-group-addon">
|
||||
<span class="glyphicon glyphicon-calendar"></span>
|
||||
</span>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
$(@Html.Raw("'#"+dtpid+"'")).datetimepicker({
|
||||
locale: '@currentUICulture.Name',
|
||||
disabledDates: @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model.BusyDates)),
|
||||
maxDate: '@Model.MaxDate.ToString("MM/dd/yyyy",currentUICulture)',
|
||||
minDate: '@Model.MinDate.ToString("MM/dd/yyyy",currentUICulture)',
|
||||
format: 'MM/DD/YYYY HH:mm'
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
@model CirclesViewModel
|
||||
@if (ViewBag.Access!=null)
|
||||
foreach (var cb in ViewBag.Access) {
|
||||
<label><input type="checkbox" class="@(Model.TargetTypeName)cirle" checked="@cb.Checked" value="@cb.Text"
|
||||
data-target-id="@Model.Target.Id" data-circle-id="@cb.Value" data-targe-type="">
|
||||
@cb.Text </label>
|
||||
}
|
||||
16
src/Yavsc.Org/Views/Shared/Components/Comment/Default.cshtml
Normal file
16
src/Yavsc.Org/Views/Shared/Components/Comment/Default.cshtml
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
@model Comment
|
||||
|
||||
<div data-type="blogcomment" data-id="@Model.Id" data-receiver-id="@Model.ReceiverId" data-allow-edit="@(User.GetUserId()==Model.AuthorId?"true":"false")"
|
||||
data-allow-moderate="@ViewData["moderatoFlag"]" data-date="@Model.DateCreated.ToString("yyyy-MM-dd hh:mm:ss")" data-username="@Model.Author.UserName" >
|
||||
<asciidoc>@Model.Article</asciidoc>
|
||||
|
||||
@if (Model.Children!=null) {
|
||||
<div class="subcomments">
|
||||
@foreach (var comment in Model.Children)
|
||||
{
|
||||
@await this.Component.InvokeAsync("Comment", new { id = comment.Id});
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
@using Yavsc.ViewModels.UserFiles
|
||||
@model UserDirectoryInfo
|
||||
|
||||
<style>
|
||||
tr.fileheaders th {
|
||||
border-bottom: 1px solid #ddd;
|
||||
font-style: italic;
|
||||
}
|
||||
tr.fileinfo td {
|
||||
padding: .5em;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
tr.fileinfo:nth-child(even) {background-color: #f2f2f2}
|
||||
tr.fileinfo:hover {background-color: #f5f5f5}
|
||||
.curdir button { font-weigth: bold; }
|
||||
.subdirs button { font-weigth: bold; color: #385) }
|
||||
</style>
|
||||
<div class="dirinfo" data-owner="@Model.UserName" data-path="@Model.SubPath">
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
|
||||
@model Estimate
|
||||
<div class="estimate">
|
||||
|
||||
<a href="~/api/pdfbill/estimate-@(Model.Id).tex" >Export au format LaTeX</a>
|
||||
|
||||
|
||||
<form action="~/api/pdfbill/gen/@Model.Id" method="POST">
|
||||
<input type="submit" value="Générer le Pdf"/>
|
||||
</form>
|
||||
|
||||
<a href="~/api/pdfbill/get/@(Model.Id)" >Télécharger le document généré</a>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
@using System.Reflection
|
||||
@using System.IO
|
||||
@using Microsoft.Extensions.WebEncoders
|
||||
@using System.Diagnostics
|
||||
@using System.Text
|
||||
@using Yavsc.Helpers
|
||||
@model Yavsc.ViewModels.Gen.PdfGenerationViewModel
|
||||
|
||||
@{
|
||||
Model.GenerateEstimatePdf();
|
||||
}
|
||||
@if (Model.Generated) {
|
||||
<div>
|
||||
@(Model.BaseFileName).pdf was generated
|
||||
</div>
|
||||
} else {
|
||||
<div class="error">
|
||||
@Model.GenerationErrorMessage
|
||||
<p>Something went wrong ...</p>
|
||||
</div>
|
||||
}
|
||||
|
|
@ -0,0 +1,206 @@
|
|||
@using Yavsc.Helpers
|
||||
@using System.IO
|
||||
@using System.Globalization
|
||||
@model Estimate
|
||||
@{
|
||||
Layout = "null";
|
||||
var pro = Model.Query.PerformerProfile;
|
||||
var from = Model.Query.PerformerProfile.Performer;
|
||||
var to = Model.Query.Client;
|
||||
var PostalAddress = to.PostalAddress?.Address.SplitAddressToTeX();
|
||||
var proaddr = Model.Query.PerformerProfile.OrganizationAddress.Address.SplitAddressToTeX();
|
||||
var proaddrm = new HtmlString(Model.Query.PerformerProfile.OrganizationAddress.Address);
|
||||
var isestimate = !ViewBag.AsBill;
|
||||
var prosign = new FileInfo($"{ViewBag.BillsDir}/estimate-prosign-{Model.Id}.png");
|
||||
|
||||
}
|
||||
\documentclass[french,11pt]{article}
|
||||
\usepackage{eurosym}
|
||||
\usepackage{babel}
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage[a4paper]{geometry}
|
||||
\usepackage{units}
|
||||
\usepackage{bera}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{fancyhdr}
|
||||
\usepackage{fp}
|
||||
|
||||
\def\TVA{20} % Taux de la TVA
|
||||
|
||||
\def\TotalHT{0}
|
||||
\def\TotalTVA{0}
|
||||
|
||||
\newcommand{\AjouterService}[3]{% Arguments : Désignation, quantité, prix
|
||||
\FPround{\prix}{#3}{2}
|
||||
\FPeval{\montant}{#2 * #3}
|
||||
\FPround{\montant}{\montant}{2}
|
||||
\FPadd{\TotalHT}{\TotalHT}{\montant}
|
||||
\eaddto\ListeProduits{#1 & \prix & #2 & \montant \cr}
|
||||
}
|
||||
|
||||
\newcommand{\AfficheResultat}{%
|
||||
\ListeProduits
|
||||
\FPeval{\TotalTVA}{\TotalHT * \TVA / 100}
|
||||
\FPadd{\TotalTTC}{\TotalHT}{\TotalTVA}
|
||||
\FPround{\TotalHT}{\TotalHT}{2}
|
||||
\FPround{\TotalTVA}{\TotalTVA}{2}
|
||||
\FPround{\TotalTTC}{\TotalTTC}{2}
|
||||
\global\let\TotalHT\TotalHT
|
||||
\global\let\TotalTVA\TotalTVA
|
||||
\global\let\TotalTTC\TotalTTC
|
||||
\cr
|
||||
\hline
|
||||
\textbf{Total} & & & \TotalHT
|
||||
}
|
||||
|
||||
\newcommand*\eaddto[2]{% version développée de \addto
|
||||
\edef\tmp{#2}%
|
||||
\expandafter\addto
|
||||
\expandafter#1%
|
||||
\expandafter{\tmp}%
|
||||
}
|
||||
|
||||
\newcommand{\ListeProduits}{}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%% A MODIFIER DANS LA FACTURE %%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
\def\FactureNum {@Model.Id.ToString()} % Numéro de facture
|
||||
\def\FactureAcquittee {@ViewBag.Acquitted?"oui":"non"} % Facture acquittée : oui/non
|
||||
\def\FactureLieu {@proaddrm} % Lieu de l'édition de la facture
|
||||
\def\FactureObjet {@(new HtmlString(isestimate?"Devis":"Facture")) : @TeXHelpers.ToTeX(Model.Title)} % Objet du document
|
||||
% Description de la facture
|
||||
\def\FactureDescr {
|
||||
@TeXHelpers.ToTeX(Model.Description)
|
||||
}
|
||||
|
||||
% Infos Client
|
||||
\def\ClientNom{@TeXHelpers.ToTeX(to.UserName)} % Nom du client
|
||||
|
||||
\def\ClientAdresse{
|
||||
% Adresse du client
|
||||
@PostalAddress
|
||||
@if (PostalAddress!=null) {<text>@PostalAddress</text>}
|
||||
@if (!string.IsNullOrWhiteSpace(to.PhoneNumber)) {<text>@TeXHelpers.ToTeX(to.PhoneNumber)<text>\\</text>
|
||||
</text>}
|
||||
E-mail: @TeXHelpers.ToTeX(to.Email)
|
||||
}
|
||||
|
||||
% Liste des produits facturés : Désignation, prix
|
||||
@if (Model.Bill!=null) { foreach (CommandLine line in Model.Bill) {
|
||||
<text>\AjouterService{@TeXHelpers.ToTeX(line.Description)}{@line.Count}{@line.UnitaryCost.ToString("F2",CultureInfo.InvariantCulture)}
|
||||
</text>} }
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
|
||||
\geometry{verbose,tmargin=4em,bmargin=8em,lmargin=6em,rmargin=6em}
|
||||
\setlength{\parindent}{0pt}
|
||||
\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex}
|
||||
|
||||
\thispagestyle{fancy}
|
||||
\pagestyle{fancy}
|
||||
\setlength{\parindent}{0pt}
|
||||
|
||||
\renewcommand{\headrulewidth}{0pt}
|
||||
\cfoot{ @TeXHelpers.ToTeX(from.UserName) @if (proaddrm!=null) { <text> - @proaddrm </text> } \newline
|
||||
\small{ E-mail: @TeXHelpers.ToTeX(from.Email) @if (!string.IsNullOrWhiteSpace(from.PhoneNumber)) { <text> - Téléphone fixe: @TeXHelpers.ToTeX(from.PhoneNumber) </text> }
|
||||
}
|
||||
}
|
||||
|
||||
\begin{document}
|
||||
|
||||
% Logo de la société
|
||||
@if (from.Avatar != null) {
|
||||
<text>\includegraphics[height=60pt]{@(ViewBag.AvatarsDir)/@(from.UserName).png}
|
||||
</text>
|
||||
} else {
|
||||
<text>%\includegraphics{logo.png}
|
||||
</text>
|
||||
}
|
||||
% Nom et adresse de la société
|
||||
@TeXHelpers.ToTeX(from.UserName) \\
|
||||
@proaddr
|
||||
|
||||
@(isestimate?"Devis":"Facture") n°\FactureNum
|
||||
|
||||
|
||||
{\addtolength{\leftskip}{10.5cm} %in ERT
|
||||
\textbf{\ClientNom} \\
|
||||
\ClientAdresse \\
|
||||
|
||||
} %in ERT
|
||||
|
||||
|
||||
\hspace*{10.5cm}
|
||||
\FactureLieu, le \today
|
||||
|
||||
~\\~\\
|
||||
|
||||
\textbf{Objet : \FactureObjet \\}
|
||||
|
||||
\textnormal{\FactureDescr}
|
||||
|
||||
~\\
|
||||
|
||||
\begin{center}
|
||||
\begin{tabular}{lrrr}
|
||||
\textbf{Désignation ~~~~~~} & \textbf{Prix unitaire} & \textbf{Quantité} & \textbf{Montant (\euro)} \\
|
||||
\hline
|
||||
\AfficheResultat{}
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
|
||||
\begin{flushright}
|
||||
\textit{Auto entreprise en franchise de TVA}\\
|
||||
|
||||
\end{flushright}
|
||||
~\\
|
||||
@if (!isestimate) {
|
||||
<text>
|
||||
\ifthenelse{\equal{\FactureAcquittee}{oui}}{
|
||||
Facture acquittée.
|
||||
}{ </text>
|
||||
|
||||
if (from.BankInfo!=null) foreach (var bi in from.BankInfo){
|
||||
<text>À régler par chèque ou par virement bancaire :
|
||||
|
||||
|
||||
\begin{center}
|
||||
\begin{tabular}{|c c c c|}
|
||||
@if (!string.IsNullOrWhiteSpace(bi.BankCode) && !string.IsNullOrWhiteSpace(bi.WicketCode)
|
||||
&& !string.IsNullOrWhiteSpace(bi.AccountNumber) ) {
|
||||
<text>\hline \textbf{Code banque} & \textbf{Code guichet} & \textbf{N° de Compte} & \textbf{Clé RIB} \\
|
||||
@bi.BankCode & @bi.WicketCode & @bi.AccountNumber & @bi.BankedKey \\
|
||||
</text>
|
||||
}
|
||||
@if (!string.IsNullOrWhiteSpace(@bi.IBAN) && !string.IsNullOrWhiteSpace(@bi.BIC)) {
|
||||
<text>
|
||||
\hline \textbf{IBAN N°} & \multicolumn{3}{|l|}{ @bi.IBAN } \\
|
||||
\hline \textbf{Code BIC} & \multicolumn{3}{|l|}{ @bi.BIC }
|
||||
</text>
|
||||
} \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{center}</text>
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@if (!(Model.ProviderValidationDate==null)) {
|
||||
<text>
|
||||
\begin{flushright}
|
||||
@(new HtmlString(isestimate?"Devis validé":"Facture validée")) le @TeXHelpers.ToTeX(Model.ProviderValidationDate.ToString("dddd dd MMMM yyyy"))
|
||||
\end{flushright}
|
||||
@if (prosign.Exists) {
|
||||
<text>
|
||||
\begin{center}
|
||||
\hspace{263pt}
|
||||
\includegraphics[height=60pt]{@(ViewBag.BillsDir)/estimate-prosign-@(Model.Id).png}
|
||||
\end{center}
|
||||
</text>
|
||||
}
|
||||
</text>
|
||||
}
|
||||
\end{document}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
@model NominativeServiceCommand
|
||||
|
||||
@if (Model!=null && Model.PaymentId!=null) {
|
||||
|
||||
@if (Model.Regularisation.Executor.Id == User.GetUserId()) {
|
||||
<text>
|
||||
Votre paiment
|
||||
</text>
|
||||
} else {
|
||||
<text>
|
||||
Le paiment de @Html.DisplayFor(m=>m.Regularisation.Executor.UserName)
|
||||
</text>
|
||||
}
|
||||
<text> :
|
||||
|
||||
</text>
|
||||
<label>@Model.GetIsAcquitted()
|
||||
<input type="checkbox" checked="@Model.GetIsAcquitted()" disabled/>
|
||||
<a asp-controller="Manage" asp-action="PaymentInfo" asp-route-id="@Model.Regularisation.CreationToken">@Model.Regularisation.CreationToken</a>
|
||||
</label>
|
||||
|
||||
}
|
||||
|
||||
@if (!Model.GetIsAcquitted()) {
|
||||
<div id="paypalzone"></div>
|
||||
<script>
|
||||
var CREATE_PAYMENT_URL = '@ViewBag.CreatePaymentUrl';
|
||||
var EXECUTE_PAYMENT_URL = '@ViewBag.ExecutePaymentUrl';
|
||||
var PAYPAL_ENV = '@ViewBag.PayPalSettings.Mode';
|
||||
var MERCH_ID = '@ViewBag.PayPalSettings.MERCH_ID';
|
||||
|
||||
|
||||
paypal.checkout.setup(MERCH_ID, {
|
||||
environment: PAYPAL_ENV,
|
||||
container: '#paypalzone',
|
||||
click: function () {
|
||||
paypal.checkout.initXO();
|
||||
var action = $.post(CREATE_PAYMENT_URL)
|
||||
.done(function (data) {
|
||||
paypal.checkout.startFlow(data.token)
|
||||
})
|
||||
.fail(function () {
|
||||
paypal.checkout.closeFlow()
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
}
|
||||
17
src/Yavsc.Org/Views/Shared/Components/Tagger/Default.cshtml
Normal file
17
src/Yavsc.Org/Views/Shared/Components/Tagger/Default.cshtml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
@using Yavsc.Interfaces;
|
||||
@using System;
|
||||
@model ITaggable<long>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<ul>
|
||||
@foreach (string tag in (string[]) ViewData["Tags"]) {
|
||||
<li>@tag</li>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
@model Activity
|
||||
<div class="activity">
|
||||
<b title="@Model.Description" style="cursor:alias;">@Html.DisplayFor(m=>m.Name)</b>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
@using Yavsc.Abstract.Identity
|
||||
@model ApplicationUser
|
||||
@{
|
||||
var avuri = "/Avatars/" + Model.UserName + ".s.png";
|
||||
}
|
||||
<div class="userinfo">
|
||||
<a title="Posts" asp-controller="Blogspot" asp-action="Index" asp-route-id="@Model.UserName" class="btn btn-primary">
|
||||
<img src="@avuri" asp-append-version="true" class="smalltofhol" alt="@Model.UserName" title="@Model.UserName" />
|
||||
</a>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
@model ApplicationUser
|
||||
|
||||
@if (Model!=null) {
|
||||
<img src="/Avatars/@(Model.UserName+".xs").png" asp-append-version="true" class="smalltofhol" />
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
@model Yavsc.Server.Models.Calendar.Availability
|
||||
|
||||
@if (Model==null || Model.Count <1) {
|
||||
<text>Pas de disponibilité renseignée</text>
|
||||
} else {
|
||||
<table>
|
||||
<th><td>@Html.DisplayNameFor(m=>m[0].Start)</td>
|
||||
<td>@Html.DisplayNameFor(m=>m[0].End)</td></th>
|
||||
@foreach (var dispo in Model)
|
||||
{
|
||||
<tr><td>@Html.DisplayFor(m=>dispo.Start)</td>
|
||||
<td>@Html.DisplayFor(m=>dispo.End)</td></tr>
|
||||
}
|
||||
</table>
|
||||
}
|
||||
40
src/Yavsc.Org/Views/Shared/DisplayTemplates/BookQuery.cshtml
Normal file
40
src/Yavsc.Org/Views/Shared/DisplayTemplates/BookQuery.cshtml
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
@model RdvQuery
|
||||
|
||||
<dl class="dl-horizontal">
|
||||
|
||||
<dt>
|
||||
EventDate
|
||||
</dt>
|
||||
<dd>
|
||||
@Html.DisplayFor(model => model.EventDate)
|
||||
</dd>
|
||||
|
||||
<dt>
|
||||
Client
|
||||
</dt>
|
||||
<dd>
|
||||
@Html.DisplayFor(model => model.Client.UserName)
|
||||
</dd>
|
||||
|
||||
<dt>
|
||||
Address
|
||||
</dt>
|
||||
<dd>
|
||||
@Html.DisplayFor(model => model.Location.Address)
|
||||
</dd>
|
||||
|
||||
<dt>
|
||||
Provider
|
||||
</dt>
|
||||
<dd>
|
||||
@Html.DisplayFor(model => model.PerformerProfile.Performer.UserName)
|
||||
</dd>
|
||||
|
||||
<dt>
|
||||
ValidationDate
|
||||
</dt>
|
||||
<dd>
|
||||
@((Model.ValidationDate==null)?"Non Validated":Html.DisplayFor(model => model.ValidationDate))
|
||||
</dd>
|
||||
|
||||
</dl>
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
@model Circle
|
||||
|
||||
<span class="circle"> @Model.Name </span>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
@model CircleAuthorizationToBlogPost
|
||||
|
||||
|
||||
<dl class="dl-horizontal">
|
||||
|
||||
<dt>
|
||||
@Html.DisplayNameFor(model => model.Target)
|
||||
</dt>
|
||||
<dd>
|
||||
@Html.DisplayFor(model => model.Allowed)
|
||||
</dd>
|
||||
</dl>
|
||||
3
src/Yavsc.Org/Views/Shared/DisplayTemplates/Color.cshtml
Normal file
3
src/Yavsc.Org/Views/Shared/DisplayTemplates/Color.cshtml
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
@model Color
|
||||
<div style="background-color:@Model.Color(); border:solid grey 1px; width:1em; height:1em; display: inline-block;"></div>
|
||||
@Model.Name
|
||||
31
src/Yavsc.Org/Views/Shared/DisplayTemplates/Estimate.cshtml
Normal file
31
src/Yavsc.Org/Views/Shared/DisplayTemplates/Estimate.cshtml
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
@model Estimate
|
||||
|
||||
<dl class="dl-horizontal">
|
||||
<dt>
|
||||
@Html.DisplayNameFor(model => model.Title)
|
||||
</dt>
|
||||
<dd>
|
||||
@Html.DisplayFor(model => model.Title)
|
||||
</dd>
|
||||
|
||||
<dt>
|
||||
@Html.DisplayNameFor(model => model.Description)
|
||||
</dt>
|
||||
<dd>
|
||||
@Html.DisplayFor(model => model.Description)
|
||||
</dd>
|
||||
|
||||
<dt>
|
||||
@Html.DisplayNameFor(model => model.Bill)
|
||||
</dt>
|
||||
<dd>
|
||||
@foreach (var cl in Model.Bill) {
|
||||
@await Html.PartialAsync("BillingLine", cl);
|
||||
}
|
||||
</dd>
|
||||
</dl>
|
||||
<label>Signature fournisseur :
|
||||
<img src="/api/pdfbill/prosign/@Model.Id" alt="" style="height:100px; background-color: white;">
|
||||
</label>
|
||||
|
||||
@await Component.InvokeAsync("Estimate",Model.Id)
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
@model GetExpressCheckoutDetailsResponseDetailsType
|
||||
|
||||
@Html.DisplayFor(m=>m.PayerInfo)
|
||||
@Html.DisplayFor(m=>m.InvoiceID)
|
||||
@Html.DisplayFor(m=>m.BillingAgreementAcceptedStatus)
|
||||
@Html.DisplayFor(m=>m.BillingAddress)
|
||||
@Html.DisplayFor(m=>m.ContactPhone)
|
||||
@Html.DisplayFor(m=>m.Note)
|
||||
@Html.DisplayFor(m=>m.CheckoutStatus)
|
||||
@Html.DisplayFor(m=>m.PayPalAdjustment)
|
||||
@Html.DisplayFor(m=>m.PaymentDetails)
|
||||
@Html.DisplayFor(m=>m.UserSelectedOptions)
|
||||
@Html.DisplayFor(m=>m.IncentiveDetails)
|
||||
@Html.DisplayFor(m=>m.GiftReceiptEnable)
|
||||
@Html.DisplayFor(m=>m.GiftMessage)
|
||||
@Html.DisplayFor(m=>m.GiftWrapName)
|
||||
@Html.DisplayFor(m=>m.GiftWrapAmount)
|
||||
@Html.DisplayFor(m=>m.BuyerMarketingEmail)
|
||||
@Html.DisplayFor(m=>m.SurveyQuestion)
|
||||
@Html.DisplayFor(m=>m.SurveyChoiceSelected)
|
||||
@Html.DisplayFor(m=>m.CartChangeTolerance)
|
||||
@Html.DisplayFor(m=>m.InstrumentDetails)
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
@model HairCutQuery
|
||||
<dl class="dl-horizontal">
|
||||
<dt>@Html.DisplayNameFor(m=>m.Prestation)
|
||||
</dt>
|
||||
<dd>@Html.DisplayFor(m=>m.Prestation)
|
||||
</dd>
|
||||
<dt>@Html.DisplayNameFor(m=>m.PerformerProfile)
|
||||
</dt>
|
||||
<dd>@Html.DisplayFor(m=>m.PerformerProfile)
|
||||
</dd>
|
||||
<dt>@Html.DisplayNameFor(m=>m.EventDate)
|
||||
</dt>
|
||||
<dd>@Html.DisplayFor(m=>m.EventDate)
|
||||
</dd>
|
||||
<dt>@Html.DisplayNameFor(m=>m.Location)
|
||||
</dt>
|
||||
<dd>@Html.DisplayFor(m=>m.Location)
|
||||
</dd>
|
||||
<dt>@Html.DisplayNameFor(m=>m.AdditionalInfo)
|
||||
</dt>
|
||||
<dd>@Html.DisplayFor(m=>m.AdditionalInfo)
|
||||
</dd>
|
||||
<dt>La facture
|
||||
</dt>
|
||||
<dd>@await Component.InvokeAsync("Bill", Model)
|
||||
</dd>
|
||||
<dt>@Html.DisplayNameFor(m=>m.Regularisation)</dt>
|
||||
<dd>
|
||||
@await Component.InvokeAsync("PayPalButton", Model)
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
@model HairPrestation
|
||||
@{
|
||||
string[] HairLen = new string[] {"HalfLong","Long","Short"};
|
||||
}
|
||||
<div class="prestation">
|
||||
<dl class="dl-horizontal">
|
||||
<dd>
|
||||
</dd>
|
||||
<dt>
|
||||
@Html.DisplayNameFor(model => model.Gender)
|
||||
</dt>
|
||||
<dd>@Model.Gender.ToString()</dd>
|
||||
@if ((int)Model.Gender<1) {
|
||||
<dt>
|
||||
@Html.DisplayNameFor(model => model.Length)
|
||||
</dt>
|
||||
<dd>
|
||||
@HairLen[(int)Model.Length]
|
||||
</dd>}
|
||||
<dt>
|
||||
@Html.DisplayNameFor(model => model.Shampoo)
|
||||
</dt>
|
||||
<dd>
|
||||
@Html.DisplayFor(model => model.Shampoo)
|
||||
</dd>
|
||||
<dt>
|
||||
@Html.DisplayNameFor(model => model.Cut)
|
||||
</dt>
|
||||
<dd>
|
||||
@Html.DisplayFor(model => model.Cut)
|
||||
</dd>
|
||||
<dt>
|
||||
@Html.DisplayNameFor(model => model.Tech)
|
||||
</dt>
|
||||
<dd>
|
||||
@Model.Tech.ToString()
|
||||
</dd>
|
||||
<dt>
|
||||
@Html.DisplayNameFor(model => model.Dressing)
|
||||
</dt>
|
||||
<dd>
|
||||
@Html.DisplayFor(model => model.Dressing)
|
||||
</dd>
|
||||
<dt>
|
||||
@Html.DisplayNameFor(model => model.Cares)
|
||||
</dt>
|
||||
<dd>
|
||||
@Html.DisplayFor(model => model.Cares)
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
@using Yavsc.Abstract.Identity
|
||||
@model IApplicationUser
|
||||
@{
|
||||
|
||||
if (Model ==null || Model.UserName==null)
|
||||
{
|
||||
if (Model !=null)
|
||||
{
|
||||
<span class="error">[E No user name]</span>
|
||||
}
|
||||
}
|
||||
else {
|
||||
string avuri = "/Avatars/" + Model.UserName + ".s.png";
|
||||
|
||||
<div class="userinfo">
|
||||
<a title="Posts" asp-controller="Blogspot" asp-action="Index" asp-route-id="@Model.UserName" class="btn btn-primary">
|
||||
<img src="@avuri" asp-append-version="true" class="smalltofhol" alt="@Model.UserName" title="@Model.UserName" />
|
||||
</a>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
@model PerformerProfile
|
||||
|
||||
<div class="performer @(Model.Active?"active":"inactive")">
|
||||
@if (Model.Performer!=null) { Html.DisplayFor(m=>m.Performer); }
|
||||
@if (Model.WebSite!=null) {
|
||||
<a target="yaext" href="@Model.WebSite" class="btn btn-info">WebSite: @Model.WebSite</a>
|
||||
}
|
||||
|
||||
</div>
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
@model Yavsc.ViewModels.FrontOffice.PerformerProfileViewModel
|
||||
|
||||
<div class="performer @(Model.Active?"active":"inactive")">
|
||||
@Html.DisplayFor(m=>m.UserName)
|
||||
@if (!string.IsNullOrWhiteSpace(Model.SettingsClassName))
|
||||
{ await Html.RenderPartialAsync(Model.SettingsClassName, Model.Settings); }
|
||||
|
||||
@if (Model.WebSite!=null) {
|
||||
<a target="yaext" href="@Model.WebSite" class="btn btn-info">WebSite: @Model.WebSite</a>
|
||||
}
|
||||
</div>
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
@model PostalAddress
|
||||
|
||||
<address>
|
||||
@Model.Street1<br />
|
||||
@Model.Street2<br />
|
||||
@Model.PostalCode, @Model.City<br />
|
||||
@Model.Province @Model.State @Model.Country
|
||||
</address>
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
<a href="https://twitter.com/intent/tweet?screen_name=TwitterDev"
|
||||
class="twitter-mention-button" data-show-count="false">Tweet to &TwitterDev</a>
|
||||
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
@model Yavsc.Server.Models.Calendar.Availability
|
||||
|
||||
14
src/Yavsc.Org/Views/Shared/Error.cshtml
Normal file
14
src/Yavsc.Org/Views/Shared/Error.cshtml
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
@model ErrorViewModel
|
||||
@{
|
||||
ViewData["Title"] = "Error";
|
||||
}
|
||||
|
||||
<h1 class="text-danger">Error.</h1>
|
||||
<h2 class="text-danger">An error occurred while processing your request.</h2>
|
||||
|
||||
@if (Model!=null) if (Model.ShowRequestId)
|
||||
{
|
||||
<p>
|
||||
<strong>Request ID:</strong> <code>@Model.RequestId</code>
|
||||
</p>
|
||||
}
|
||||
6
src/Yavsc.Org/Views/Shared/Forbidden.cshtml
Normal file
6
src/Yavsc.Org/Views/Shared/Forbidden.cshtml
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
@model string
|
||||
|
||||
<p>
|
||||
|
||||
Accès interdit : @Model
|
||||
</p>
|
||||
2
src/Yavsc.Org/Views/Shared/HairTaint.cshtml
Normal file
2
src/Yavsc.Org/Views/Shared/HairTaint.cshtml
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
@model HairTaint
|
||||
@Html.DisplayFor(m=>m.Color) (@Model.Brand)
|
||||
2
src/Yavsc.Org/Views/Shared/HourFromMinutes.cshtml
Normal file
2
src/Yavsc.Org/Views/Shared/HourFromMinutes.cshtml
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
@model int
|
||||
@((Model/60).ToString("00")):@((Model%60).ToString("00"))
|
||||
19
src/Yavsc.Org/Views/Shared/Logout.cshtml
Normal file
19
src/Yavsc.Org/Views/Shared/Logout.cshtml
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
<div class="jumbotron">
|
||||
<h1>Log out</h1>
|
||||
<p class="lead text-left">Are you sure you want to sign out?</p>
|
||||
|
||||
@if (Model.Item2 != null && Model.Item2.Identity != null) {
|
||||
<p class="lead text-left">Connected user: @Model.Item2.Identity.Name</p>
|
||||
}
|
||||
|
||||
<form action="/connect/logout" enctype="application/x-www-form-urlencoded" method="post">
|
||||
@Html.AntiForgeryToken()
|
||||
|
||||
@* Flow the logout request *@
|
||||
@foreach (var parameter in Model.Item1.Parameters) {
|
||||
<input type="hidden" name="@parameter.Key" value="@parameter.Value" />
|
||||
}
|
||||
|
||||
<input class="btn btn-light btn-success" name="Authorize" type="submit" value="Yeah, sure" />
|
||||
</form>
|
||||
</div>
|
||||
12
src/Yavsc.Org/Views/Shared/OidcError.cshtml
Normal file
12
src/Yavsc.Org/Views/Shared/OidcError.cshtml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
@using Microsoft.IdentityModel.Protocols.OpenIdConnect
|
||||
@model OpenIdConnectMessage
|
||||
|
||||
<div class="jumbotron">
|
||||
<h1>An OpenID Connect error has occurred</h1>
|
||||
<p class="lead text-left">
|
||||
<strong>@Model.Error</strong>
|
||||
@if (!string.IsNullOrEmpty(Model.ErrorDescription)) {
|
||||
<small>@Model.ErrorDescription</small>
|
||||
}
|
||||
</p>
|
||||
</div>
|
||||
19
src/Yavsc.Org/Views/Shared/Profiles.cshtml
Normal file
19
src/Yavsc.Org/Views/Shared/Profiles.cshtml
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
@model IEnumerable<PerformerProfile>
|
||||
|
||||
@{
|
||||
ViewData["Title"] = "Les profiles - " + (ViewBag.Activity?.Name ?? "Any");
|
||||
}
|
||||
|
||||
<h1>@ViewData["Title"]</h1>
|
||||
<em>@ViewBag.Activity.Description</em>
|
||||
|
||||
@foreach (var profile in Model) {
|
||||
<hr/>
|
||||
@Html.DisplayFor(m=>m)
|
||||
<form action="~/Command/Create" >
|
||||
<input type="hidden" name="id" value="@profile.PerformerId" />
|
||||
<input type="hidden" name="activityCode" value="@ViewBag.Activity.Code" />
|
||||
<input type="submit" value="Proposer un rendez-vous à @profile.Performer.UserName">
|
||||
</form>
|
||||
}
|
||||
|
||||
11
src/Yavsc.Org/Views/Shared/Status.cshtml
Normal file
11
src/Yavsc.Org/Views/Shared/Status.cshtml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
@{
|
||||
ViewBag.Title = "Oops!";
|
||||
}
|
||||
<h1>@ViewBag.Title</h1>
|
||||
<h2 class="text-danger">Your request cannot be served</h2>
|
||||
|
||||
<code>
|
||||
@ViewBag.StatusCode
|
||||
</code>
|
||||
|
||||
85
src/Yavsc.Org/Views/Shared/_DropFiles.cshtml
Normal file
85
src/Yavsc.Org/Views/Shared/_DropFiles.cshtml
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
@section header{
|
||||
<style>
|
||||
.box__dragndrop,
|
||||
.box__uploading,
|
||||
.box__success,
|
||||
.box__error {
|
||||
display: none;
|
||||
}
|
||||
.box.has-advanced-upload {
|
||||
background-color: white;
|
||||
outline: 2px dashed black;
|
||||
outline-offset: -10px;
|
||||
}
|
||||
.box.has-advanced-upload .box__dragndrop {
|
||||
display: inline;
|
||||
}
|
||||
.box.is-dragover {
|
||||
background-color: grey;
|
||||
}
|
||||
</style>
|
||||
<link rel="stylesheet" href="~/lib/dropzone/basic.min.css" />
|
||||
<link rel="stylesheet" href="~/lib/dropzone/dropzone.min.css" />
|
||||
<script src="~/lib/dropzone/dropzone.min.js"> </script>
|
||||
<script src="~/lib/dropzone/dropzone-amd-module.min.js"> </script>
|
||||
}
|
||||
|
||||
@section scripts{
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
|
||||
var isAdvancedUpload = function() {
|
||||
var div = document.createElement('div');
|
||||
return (('draggable' in div) || ('ondragstart' in div && 'ondrop' in div)) && 'FormData' in window && 'FileReader' in window;
|
||||
}();
|
||||
|
||||
var $form = $('.box');
|
||||
|
||||
if (isAdvancedUpload) {
|
||||
$form.addClass('has-advanced-upload');
|
||||
}
|
||||
if (isAdvancedUpload) {
|
||||
|
||||
var droppedFiles = "false";
|
||||
|
||||
$form.on('drag dragstart dragend dragover dragenter dragleave drop', function(e) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
})
|
||||
.on('dragover dragenter', function() {
|
||||
$form.addClass('is-dragover');
|
||||
})
|
||||
.on('dragleave dragend drop', function() {
|
||||
$form.removeClass('is-dragover');
|
||||
})
|
||||
.on('drop', function(e) {
|
||||
droppedFiles = e.originalEvent.dataTransfer.files;
|
||||
});
|
||||
|
||||
}
|
||||
$form.on('submit', function(e) {
|
||||
if ($form.hasClass('is-uploading')) return false;
|
||||
|
||||
$form.addClass('is-uploading').removeClass('is-error');
|
||||
|
||||
if (isAdvancedUpload) {
|
||||
// ajax for modern browsers
|
||||
} else {
|
||||
// ajax for legacy browsers
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
}
|
||||
|
||||
<form class="box" method="post" action="~/UserFiles/Create" enctype="multipart/form-data">
|
||||
<div class="box__input">
|
||||
<input class="box__file" type="file" name="files[]" id="file" data-multiple-caption="{count} files selected" multiple />
|
||||
<label for="file"><strong>Choose a file</strong><span class="box__dragndrop"> or drag it here</span>.</label>
|
||||
<button class="box__button" type="submit">Upload</button>
|
||||
</div>
|
||||
<div class="box__uploading">Uploading…</div>
|
||||
<div class="box__success">Done!</div>
|
||||
<div class="box__error">Error! <span></span>.</div>
|
||||
</form>
|
||||
24
src/Yavsc.Org/Views/Shared/_FSScriptsPartial.cshtml
Normal file
24
src/Yavsc.Org/Views/Shared/_FSScriptsPartial.cshtml
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<script src="/js/yavsc-remote-fs.js" asp-append-version="true"></script>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
$('.dirinfo').yarfs();
|
||||
});
|
||||
|
||||
Dropzone.options.postfiles = {
|
||||
maxFilesize: 20, // MB TODO: let sell it.
|
||||
autoProcessQueue: true,
|
||||
accept: function(file, done) {
|
||||
if (file.name == 'justinbieber.jpg') {
|
||||
done('Naha, you don\'t.');
|
||||
} else { done(); }
|
||||
},
|
||||
success: function (file, response) {
|
||||
for (var i = 0; i < response.length; i++) {
|
||||
var filer = response[i];
|
||||
$('<p><a href="/files/@User.GetUserName()/' + filer.FileName + '">' + filer.FileName + '</a></p>').appendTo('#ql-editor-2');
|
||||
updateMD('Article', $('#contentview').html());
|
||||
}
|
||||
},
|
||||
url: '/api/fs'
|
||||
};
|
||||
</script>
|
||||
51
src/Yavsc.Org/Views/Shared/_Layout.cshtml
Normal file
51
src/Yavsc.Org/Views/Shared/_Layout.cshtml
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
@using Yavsc.Models.Messaging;
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no" />
|
||||
<link rel="icon" type="image/x-icon" href="~/favicon.ico" asp-append-version="true"/>
|
||||
<link rel="shortcut icon" type="image/x-icon" href="~/favicon.ico" asp-append-version="true"/>
|
||||
<link rel="stylesheet" href="~/lib/jquery-ui/jquery-ui.min.css">
|
||||
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" asp-append-version="true"/>
|
||||
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true"/>
|
||||
<script src="~/lib/jquery-ui/external/jquery/jquery.js"></script>
|
||||
<script src="~/lib/jquery-ui/jquery-ui.js"></script>
|
||||
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="~/js/site.js" asp-append-version="true"></script>
|
||||
@await RenderSectionAsync("header", false)
|
||||
</head>
|
||||
<body style="background-image: url('@Config.SiteSetup.Banner');
|
||||
background-position: 0%;
|
||||
background-attachment: fixed;
|
||||
">
|
||||
<partial name="_Nav" />
|
||||
@RenderSection("ctxmenu", required: false)
|
||||
@if (ViewData["Notify"] != null)
|
||||
{
|
||||
foreach (Notification n in ViewData["Notify"] as IEnumerable<Notification>)
|
||||
{
|
||||
<div class="alert alert-info alert-dismissable" data-nid="@n.Id">
|
||||
<img src="~/images/Notifications/@(n.icon).png" style="max-height:3em; float: left; margin:1em;" />
|
||||
<h2 markdown="@n.title"></h2>
|
||||
<a class="close" data-dismiss="alert" aria-label="close"
|
||||
onclick="notifClick(@n.Id)">@((n.click_action == null) ? Localizer["Fermer"] : Localizer[n.click_action])</a>
|
||||
<asciidoc>@n.body</asciidoc>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
@await RenderSectionAsync("subbanner", false)
|
||||
<div class="container body-container">
|
||||
@RenderBody()
|
||||
</div>
|
||||
<footer class="border-top footer text-muted">
|
||||
<div class="container">
|
||||
© WTFPL 2025 - <a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
@await RenderSectionAsync("scripts", false)
|
||||
|
||||
</body>
|
||||
</html>
|
||||
48
src/Yavsc.Org/Views/Shared/_Layout.cshtml.css
Normal file
48
src/Yavsc.Org/Views/Shared/_Layout.cshtml.css
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
/* Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
|
||||
for details on configuring this project to bundle and minify static web assets. */
|
||||
|
||||
a.navbar-brand {
|
||||
white-space: normal;
|
||||
text-align: center;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #0077cc;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
color: #fff;
|
||||
background-color: #1b6ec2;
|
||||
border-color: #1861ac;
|
||||
}
|
||||
|
||||
.nav-pills .nav-link.active, .nav-pills .show > .nav-link {
|
||||
color: #fff;
|
||||
background-color: #1b6ec2;
|
||||
border-color: #1861ac;
|
||||
}
|
||||
|
||||
.border-top {
|
||||
border-top: 1px solid #e5e5e5;
|
||||
}
|
||||
.border-bottom {
|
||||
border-bottom: 1px solid #e5e5e5;
|
||||
}
|
||||
|
||||
.box-shadow {
|
||||
box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05);
|
||||
}
|
||||
|
||||
button.accept-policy {
|
||||
font-size: 1rem;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
.footer {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
line-height: 60px;
|
||||
}
|
||||
58
src/Yavsc.Org/Views/Shared/_LoginPartial.cshtml
Normal file
58
src/Yavsc.Org/Views/Shared/_LoginPartial.cshtml
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
@using System.Security.Claims
|
||||
@inject SignInManager<ApplicationUser> SignInManager
|
||||
@inject UserManager<ApplicationUser> UserManager
|
||||
|
||||
@if (Context.User?.Identity?.IsAuthenticated ?? false)
|
||||
{
|
||||
string userName = User.GetUserName();
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="dropdown04" data-bs-toggle="dropdown" aria-expanded="false">Plateforme</a>
|
||||
<ul class="dropdown-menu" aria-labelledby="dropdown04">
|
||||
<li><a class="dropdown-item" asp-controller="Bug" asp-action="Index">Bugs</a></li>
|
||||
<li><a class="dropdown-item" asp-controller="HyperLink" asp-action="Index">HyperLink</a></li>
|
||||
<li><a class="dropdown-item" asp-controller="Feature" asp-action="Index">Features</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
@if (User.IsInMsRole(Constants.AdminGroupName)) {
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="dropdown05" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
Administration
|
||||
</a>
|
||||
<ul class="dropdown-menu" aria-labelledby="dropdown05">
|
||||
<li><a class="dropdown-item" asp-controller="Administration" asp-action="Index">Index</a></li>
|
||||
<li><a class="dropdown-item" asp-controller="Announces" asp-action="Index">Announces</a></li>
|
||||
<li><a class="dropdown-item" asp-controller="Activity" asp-action="Index">Activités</a></li>
|
||||
<li><a class="dropdown-item" asp-controller="CommandForms" asp-action="Index">Formulaires</a></li>
|
||||
<li><a class="dropdown-item" asp-controller="Notifications" asp-action="Index">Notifications</a></li>
|
||||
<li><a class="dropdown-item" asp-controller="SIRENExceptions" asp-action="Index">Excéptions au numéro de SIREN</a></li>
|
||||
<li><a class="dropdown-item" asp-controller="Client" asp-action="Index">Accès API</a></li>
|
||||
<li><a class="dropdown-item" asp-controller="MailingTemplate" asp-action="Index">Emailing</a></li>
|
||||
</ul>
|
||||
</li>}
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="dropdown04" data-bs-toggle="dropdown" aria-expanded="false">Hello @userName!</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li>
|
||||
<a class="dropdown-item" asp-controller="Manage" asp-action="Index" title="Manage">
|
||||
<img src="/avatars/@(User.GetUserName()).xs.png" asp-append-version="true" class="smalltofhol" />
|
||||
Manage your account
|
||||
</a>
|
||||
</li>
|
||||
<li><a class="dropdown-item" asp-controller="Grants" asp-action="Index">Grants</a></li>
|
||||
<li><a class="dropdown-item" asp-controller="Device" asp-action="Index">Device</a></li>
|
||||
<li><a class="dropdown-item" asp-controller="Diagnostics" asp-action="Index">Diagnostics</a></li>
|
||||
<li><a class="dropdown-item" asp-controller="Account" asp-action="Logout">Logout</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
}
|
||||
else
|
||||
{
|
||||
<li class="dropdown-item">
|
||||
<a class="nav-link" asp-controller="Account" asp-action="Register" >Register</a>
|
||||
</li>
|
||||
<li class="dropdown-item">
|
||||
<a class="nav-link" asp-controller="Account" asp-action="Signin" asp-route-ReturnUrl="~/" asp-route-AllowRememberLogin="true" >Signin</a>
|
||||
</li>
|
||||
}
|
||||
|
||||
2
src/Yavsc.Org/Views/Shared/_MapScriptsPartial.cshtml
Normal file
2
src/Yavsc.Org/Views/Shared/_MapScriptsPartial.cshtml
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<script src="https://maps.googleapis.com/maps/api/js?key=@Config.GoogleSettings.BrowserApiKey"></script>
|
||||
<script src="~/js/google-geoloc.js" asp-append-version="true"></script>
|
||||
18
src/Yavsc.Org/Views/Shared/_Nav.cshtml
Normal file
18
src/Yavsc.Org/Views/Shared/_Nav.cshtml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
<nav class="navbar navbar-expand-sm navbar-dark bg-dark" aria-label="Yavsc">
|
||||
<a class="navbar-brand" href="#">@Config.SiteSetup.Title</a>
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
|
||||
data-bs-target="#navbar" aria-controls="navbar"
|
||||
aria-expanded="true" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbar" style="background-image: @Config.SiteSetup.Banner;">
|
||||
<ul class="navbar-nav me-auto" >
|
||||
<li class="nav-item"><a class="nav-link active" aria-current="page" href="/">Home</a></li>
|
||||
<li class="nav-item"><a asp-controller="Blogspot" asp-action="Index" class="nav-link">@Localizer["Blogs"]</a></li>
|
||||
<li class="nav-item"><a asp-controller="Home" asp-action="Contact" class="nav-link">@Localizer["Contact"]</a></li>
|
||||
<li class="nav-item"><a asp-controller="Home" asp-action="About" class="nav-link">@Localizer["About"]</a></li>
|
||||
<partial name="_LoginPartial" />
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
6
src/Yavsc.Org/Views/Shared/_PostFilesPartial.cshtml
Normal file
6
src/Yavsc.Org/Views/Shared/_PostFilesPartial.cshtml
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
<form id="postfiles" class="dropzone" method="post" enctype="multipart/form-data">
|
||||
<div class="fallback">
|
||||
<input name="File[]" type="file" id="filesinput"/>
|
||||
</div>
|
||||
@Html.AntiForgeryToken()
|
||||
</form>
|
||||
34
src/Yavsc.Org/Views/Shared/_ScopeListItem.cshtml
Normal file
34
src/Yavsc.Org/Views/Shared/_ScopeListItem.cshtml
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
@model ScopeViewModel
|
||||
|
||||
<li class="list-group-item">
|
||||
<label>
|
||||
<input class="consent-scopecheck"
|
||||
type="checkbox"
|
||||
name="ScopesConsented"
|
||||
id="scopes_@Model.Value"
|
||||
value="@Model.Value"
|
||||
checked="@Model.Checked"
|
||||
disabled="@Model.Required" />
|
||||
@if (Model.Required)
|
||||
{
|
||||
<input type="hidden"
|
||||
name="ScopesConsented"
|
||||
value="@Model.Value" />
|
||||
}
|
||||
<strong>@Model.DisplayName</strong>
|
||||
@if (Model.Emphasize)
|
||||
{
|
||||
<span class="glyphicon glyphicon-exclamation-sign"></span>
|
||||
}
|
||||
</label>
|
||||
@if (Model.Required)
|
||||
{
|
||||
<span><em>(required)</em></span>
|
||||
}
|
||||
@if (Model.Description != null)
|
||||
{
|
||||
<div class="consent-description">
|
||||
<label for="scopes_@Model.Value">@Model.Description</label>
|
||||
</div>
|
||||
}
|
||||
</li>
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
|
||||
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
<environment names="Development">
|
||||
<script src="~/lib/jquery-validation/jquery.validate.js"></script>
|
||||
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
|
||||
</environment>
|
||||
<environment names="yavsc,yavscpre,zicmoove,lua,coiffure">
|
||||
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/jquery.validate.min.js"
|
||||
asp-fallback-src="~/lib/jquery-validation/jquery.validate.min.js"
|
||||
asp-fallback-test="window.jQuery && window.jQuery.validator">
|
||||
</script>
|
||||
<script src="https://ajax.aspnetcdn.com/ajax/mvc/5.2.3/jquery.validate.unobtrusive.min.js"
|
||||
asp-fallback-src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
|
||||
asp-fallback-test="window.jQuery && window.jQuery.validator && window.jQuery.validator.unobtrusive">
|
||||
</script>
|
||||
</environment>
|
||||
<script src="~/lib/jquery-validation/additional-methods.js" charset="UTF-8"></script>
|
||||
<script src="~/js/input-lib.js"></script>
|
||||
7
src/Yavsc.Org/Views/Shared/_ValidationSummary.cshtml
Normal file
7
src/Yavsc.Org/Views/Shared/_ValidationSummary.cshtml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
@if (ViewContext.ModelState.IsValid == false)
|
||||
{
|
||||
<div class="alert alert-danger">
|
||||
<strong>Error</strong>
|
||||
<div asp-validation-summary="All" class="danger"></div>
|
||||
</div>
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue