a layout
parent
a2009e41aa
commit
2cc196225a
@ -1,31 +0,0 @@
|
||||
using System.Diagnostics;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Yavsc.Models;
|
||||
|
||||
namespace Yavsc.Controllers;
|
||||
|
||||
public class HomeController : Controller
|
||||
{
|
||||
private readonly ILogger<HomeController> _logger;
|
||||
|
||||
public HomeController(ILogger<HomeController> logger)
|
||||
{
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public IActionResult Index()
|
||||
{
|
||||
return View();
|
||||
}
|
||||
|
||||
public IActionResult Privacy()
|
||||
{
|
||||
return View();
|
||||
}
|
||||
|
||||
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
|
||||
public IActionResult Error()
|
||||
{
|
||||
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
|
||||
}
|
||||
}
|
@ -1,135 +0,0 @@
|
||||
using Microsoft.AspNet.Mvc.Localization;
|
||||
using Microsoft.AspNet.Mvc;
|
||||
using Microsoft.AspNet.Http.Features;
|
||||
using Microsoft.AspNet.Diagnostics;
|
||||
using Microsoft.AspNet.Authorization;
|
||||
using Microsoft.AspNet.Hosting;
|
||||
using Microsoft.AspNet.Identity;
|
||||
using System.Linq;
|
||||
using System.Security.Claims;
|
||||
using Microsoft.Data.Entity;
|
||||
using Microsoft.AspNet.Http;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Yavsc.Controllers
|
||||
{
|
||||
using System.IO;
|
||||
using Models;
|
||||
using Yavsc;
|
||||
using Yavsc.Helpers;
|
||||
|
||||
[AllowAnonymous]
|
||||
public class HomeController : Controller
|
||||
{
|
||||
readonly ApplicationDbContext _dbContext;
|
||||
|
||||
readonly IHtmlLocalizer _localizer;
|
||||
public HomeController(IHtmlLocalizer<Startup> localizer,
|
||||
ApplicationDbContext context)
|
||||
{
|
||||
_localizer = localizer;
|
||||
_dbContext = context;
|
||||
}
|
||||
|
||||
public async Task<IActionResult> Index(string id)
|
||||
{
|
||||
ViewBag.IsFromSecureProx = Request.Headers.ContainsKey(Constants.SshHeaderKey) && Request.Headers[Constants.SshHeaderKey] == "on";
|
||||
ViewBag.SecureHomeUrl = "https://" + Request.Headers["X-Forwarded-Host"];
|
||||
ViewBag.SshHeaderKey = Request.Headers[Constants.SshHeaderKey];
|
||||
var uid = User.GetUserId();
|
||||
long[] clicked = null;
|
||||
if (uid == null)
|
||||
{
|
||||
await HttpContext.Session.LoadAsync();
|
||||
var strclicked = HttpContext.Session.GetString("clicked");
|
||||
if (strclicked != null) clicked = strclicked.Split(':').Select(c => long.Parse(c)).ToArray();
|
||||
if (clicked == null) clicked = new long[0];
|
||||
}
|
||||
else clicked = _dbContext.DimissClicked.Where(d => d.UserId == uid).Select(d => d.NotificationId).ToArray();
|
||||
var notes = _dbContext.Notification.Where(
|
||||
n => !clicked.Contains(n.Id)
|
||||
);
|
||||
this.Notify(notes);
|
||||
|
||||
ViewData["HaircutCommandCount"] = _dbContext.HairCutQueries.Where(
|
||||
q => q.ClientId == uid && q.Status < QueryStatus.Failed
|
||||
).Count();
|
||||
var toShow = _dbContext.Activities
|
||||
.Include(a => a.Forms)
|
||||
.Include(a => a.Parent)
|
||||
.Include(a => a.Children)
|
||||
.Where(a => !a.Hidden)
|
||||
.Where(a => a.ParentCode == id)
|
||||
.OrderByDescending(a => a.Rate).ToList();
|
||||
|
||||
foreach (var a in toShow)
|
||||
{
|
||||
a.Children = a.Children.Where(c => !c.Hidden).ToList();
|
||||
}
|
||||
return View(toShow);
|
||||
}
|
||||
public async Task<IActionResult> About()
|
||||
{
|
||||
FileInfo fi = new FileInfo("wwwroot/version");
|
||||
return View("About", fi.Exists ? _localizer["Version logicielle: "] + await fi.OpenText().ReadToEndAsync() : _localizer["Aucune information sur la version logicielle n'est publiée."]);
|
||||
}
|
||||
public IActionResult Privacy()
|
||||
{
|
||||
return View();
|
||||
}
|
||||
public IActionResult AboutMarkdown()
|
||||
{
|
||||
return View();
|
||||
}
|
||||
|
||||
public IActionResult Contact()
|
||||
{
|
||||
return View();
|
||||
}
|
||||
public IActionResult Dash()
|
||||
{
|
||||
return View();
|
||||
}
|
||||
public ActionResult Chat()
|
||||
{
|
||||
if (User.Identity.IsAuthenticated)
|
||||
{
|
||||
ViewBag.IsAuthenticated = true;
|
||||
string uid = User.GetUserId();
|
||||
ViewBag.Contacts = _dbContext.Contact.Where(c => c.OwnerId == uid)
|
||||
;
|
||||
}
|
||||
else ViewBag.IsAuthenticated = false;
|
||||
return View();
|
||||
}
|
||||
|
||||
public IActionResult Error()
|
||||
{
|
||||
var feature = this.HttpContext.Features.Get<IExceptionHandlerFeature>();
|
||||
|
||||
return View("~/Views/Shared/Error.cshtml", feature?.Error);
|
||||
}
|
||||
public IActionResult Status(int id)
|
||||
{
|
||||
ViewBag.StatusCode = id;
|
||||
return View("~/Views/Shared/Status.cshtml");
|
||||
}
|
||||
public IActionResult Todo()
|
||||
{
|
||||
User.GetUserId();
|
||||
|
||||
return View();
|
||||
}
|
||||
|
||||
public IActionResult VideoChat()
|
||||
{
|
||||
return View();
|
||||
}
|
||||
|
||||
public IActionResult Audio()
|
||||
{
|
||||
return View();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,159 +0,0 @@
|
||||
@{
|
||||
ViewData["Title"] = "About ";
|
||||
}
|
||||
<h1>@ViewData["Title"]</h1>
|
||||
<environment names="Development">
|
||||
**Version de Development**
|
||||
<markdown>
|
||||
|
||||
## L'objectif
|
||||
|
||||
Cette application est construite pour mettre en relation des artistes
|
||||
du domaine musical avec leur public.
|
||||
|
||||
## Le fonctionnement
|
||||
|
||||
Les utilisateurs du site sont soit artiste, soit client, soit administrateur. ils ont tous droit à leur blog.
|
||||
Pour les artistes, c'est un moyen de promouvoir leur activité.
|
||||
Ils peuvent y publier des articles, truffés de vidéos et photos.
|
||||
Pour les clients, c'est un moyen de casser la glace avec leurs idoles,
|
||||
par la description détaillées de leur centres d'intérêts.
|
||||
|
||||
L'application propulse aussi une messagerie instantanée, disponible depuis
|
||||
un navigateur Web ou depuis l'appplication mobile,
|
||||
pouvant garantir la preservation du secret sur toute information personnelle,
|
||||
du client comme du prestataire.
|
||||
|
||||
Puis viennent (ou pas) une prise commande, un payement du client,
|
||||
la prestation, une collecte du retour du client, et un paiement du prestataire de services.
|
||||
|
||||
Ni le client ni le prestataire ne sont anonymes pour l'applications,
|
||||
il sont même formellement authentifies par l'acquitement d'une première
|
||||
facturation en ligne, ou à l'occasion de la saisie de leur profil proféssionnel.
|
||||
|
||||
Durant la phase de construction d'un contrat de prestation,
|
||||
le client et l'artiste peuvent profiter d'un canal de communication privé et anonyme,
|
||||
qui est fermé à la validation définitive du dit contrat.
|
||||
|
||||
Valider un contrat, c'est:
|
||||
|
||||
* Choisir le type de contrat
|
||||
* Se mettre d'accord sur les paramètres du contrat
|
||||
* Le faire signer des deux parties
|
||||
* Mettre en œuvre d'éventuels paiement d'arrhes
|
||||
|
||||
Une fois validé, le contrat est publié à destination des deux parties. la facture est publiée à destination du client,
|
||||
qui peut l'honorer auprès du système, auquel cas ce client est marqué solvable, et le contrat est marqué approvisionné.
|
||||
|
||||
En cas de défaut d'approvisionnement, le système prendra soin de marquer le contrat comme provisoire, et de prévenir l'artiste
|
||||
d'effectuer toute prestation en relation tant le paiement associé laisse à douter.
|
||||
|
||||
Une fois sa prestation associée exécutée, les paiements relatifs sont effectués auprès de l'artiste.
|
||||
|
||||
Pour un contrat exécuté et non honoré par le client, le processus de poursuite en recouvrement est engagé, sinon, le contrat est archivé,
|
||||
des attestations de paiement sont disponibles pour l'artiste et la facture est marquée payée, puis repostée au client.
|
||||
|
||||
### Pour l'artiste
|
||||
|
||||
L'artiste choisit plusieurs paramètres qui vont faire son profil :
|
||||
|
||||
* Le type d'activités qu'il veut promouvoir, le type de prestations qu'il fournit (est-ce un DJ,
|
||||
un chanteur solo, un musicien solo, un ensemble musical classique, un groupe)
|
||||
* La tarification de sa mise en contact avec un nouveau client
|
||||
(combien je reçois par demande client traitée sans lourdeur de plus d'une journée)
|
||||
* Le lieu où il exerce et, le cas échéant, sur combien de distance il pourrait se déplacer.
|
||||
* un agenda Google optionnel, à consulter pour établir sa disponibilité
|
||||
* Des paramètres supplémentaires en fonctions de son type d'activité par exemple, pour
|
||||
les ensembles, leur taille, le cas échéant, leur répertoire ou des indications sur le style de leur musique)
|
||||
|
||||
### Pour le client
|
||||
|
||||
Il choisit un lieu et une date pour déclarer un événement avenir
|
||||
(il peut bien-sûr en programmer autant qu'il le veut).
|
||||
|
||||
Il peut, parcourir les publications des artistes, et entamer,
|
||||
sur la base d'un de ses projets événementiel, la négociation d'un contrat de prestation.
|
||||
|
||||
Il a accès à la connaissance des journées connues comme libres des artistes par le système.
|
||||
|
||||
## La confidentialité
|
||||
|
||||
À aucun moment, aucune adresse postale, aucune adresse e-mail ni aucun numéro de téléphone
|
||||
ne sont transmis ni aux clients, ni aux artistes. Seul le système a accès à ces informations.
|
||||
|
||||
De plus, le droit de retrait est permanent et sa mise en oeuvre immédiate.
|
||||
Les artistes comme les clients peuvent demander leur désinscription,
|
||||
qui désactive immédiatement les publications associées à leurs informations,
|
||||
et programme la suppression complète de ces dites informations dans les quinze jours
|
||||
à compter de la demande, sauf demande contradictoire.
|
||||
L'opération est annulable, jusqu'à deux semaines après sa programmation.
|
||||
|
||||
</markdown>
|
||||
</environment>
|
||||
|
||||
<environment names="Lua,Development">
|
||||
<markdown>
|
||||
C'est mon site pérso, une configuration de _Yavsc_ (encore une autre très petite entreprise).
|
||||
|
||||
* [README](https://github.com/pazof/yavsc/blob/vnext/README.md)
|
||||
* [license: GNU GPL v3](https://github.com/pazof/yavsc/blob/vnext/LICENSE)
|
||||
|
||||
</markdown>
|
||||
</environment>
|
||||
|
||||
<environment names="Yavsc,Development">
|
||||
<markdown>
|
||||
Yet Another Very Small Company ...
|
||||
|
||||
* [README](https://github.com/pazof/yavsc/blob/vnext/README.md)
|
||||
* [license: GNU FPL v3](https://github.com/pazof/yavsc/blob/vnext/LICENSE)
|
||||
|
||||
</markdown>
|
||||
</environment>
|
||||
|
||||
<environment names="YavscPre,Development">
|
||||
<markdown>
|
||||
## Yet Another Very Small Company :
|
||||
* [README](https://github.com/pazof/yavsc/blob/vnext/README.md)
|
||||
* [license: GNU FPL v3](https://github.com/pazof/yavsc/blob/vnext/LICENSE)
|
||||
|
||||
En production:
|
||||
|
||||
* [Lua](http://pschneider.fr:85)
|
||||
* [Yavsc](http://pschneider.fr:84)
|
||||
|
||||
</markdown>
|
||||
</environment>
|
||||
|
||||
|
||||
<environment names="coiffure,Development">
|
||||
<markdown>
|
||||
Vous êtes sur le site de commande en coiffure à domicile de Soraya Boudjouraf,
|
||||
un as de la coiffure, qui oeuvre en région parisienne.
|
||||
|
||||
En validant un formulaire de commande ici, c'est à elle que vous notifiez votre demande.
|
||||
|
||||
Vous pouvez ![lui laisser votre numéro de téléphone](/HairCutCommand/HairCut?activityCode=Brush&performerId=1bd841ab-c305-4971-940d-7ddca818310c)
|
||||
et/ou des détails sur votre demande,
|
||||
elle vous rappelera.</markdown>
|
||||
</environment>
|
||||
|
||||
<environment names="Development">
|
||||
<markdown>
|
||||
## Ceci est un site de développement.
|
||||
|
||||
Cette présente ressource ne concerne que le développement du logiciel qui la met en oeuvre.
|
||||
Elle est éphémère, et pratiquement en permanence force de codes 500.
|
||||
|
||||
Veuillez excuser l'équipe de développement pour vous avoir fait part de cette adresse et pour la gêne occasionnnée.
|
||||
|
||||
La "pré-production" affiche les sites suivants:
|
||||
|
||||
* [Lua](https://pschneider.fr:85)
|
||||
* [Yavsc](https://pschneider.fr:84)
|
||||
|
||||
</markdown>
|
||||
</environment>
|
||||
<p>
|
||||
@Model
|
||||
</p>
|
@ -1,163 +0,0 @@
|
||||
@{
|
||||
ViewData["Title"] = "About";
|
||||
}
|
||||
<h1>@ViewData["Title"]</h1>
|
||||
<environment names="freefield,Development">
|
||||
|
||||
<markdown>
|
||||
## O objetivo
|
||||
|
||||
Esta aplicação é construída para conectar artistas
|
||||
do campo musical com seu público.
|
||||
|
||||
## Operation
|
||||
|
||||
Os usuários do site são artista, cliente ou administrador. Todos eles têm direito ao seu blog.
|
||||
Para artistas, é uma maneira de promover seus negócios.
|
||||
Eles podem publicar artigos, cheios de vídeos e fotos.
|
||||
Para os clientes, é uma maneira de quebrar o gelo com seus ídolos,
|
||||
pela descrição detalhada de seus centros de interesse.
|
||||
|
||||
O aplicativo também alimenta um mensageiro instantâneo, disponível desde
|
||||
um navegador da web ou de um aplicativo para dispositivos móveis
|
||||
pode garantir a preservação do sigilo sobre qualquer informação pessoal,
|
||||
cliente e provedor.
|
||||
|
||||
Então venha (ou não) um pedido, um pagamento do cliente,
|
||||
a entrega, uma coleta do retorno do cliente e um pagamento do provedor de serviços.
|
||||
|
||||
Nem o cliente nem o provedor são anônimos para os aplicativos,
|
||||
eles são até formalmente autenticados pela aquisição de um primeiro
|
||||
faturamento on-line ou ao entrar em seu perfil profissional.
|
||||
|
||||
Durante a fase de construção de um contrato de serviço,
|
||||
o cliente e o artista podem se beneficiar de um canal de comunicação privado e anônimo,
|
||||
que está fechado para a validação final do referido contrato.
|
||||
|
||||
Valide um contrato é:
|
||||
|
||||
* Escolha o tipo de contrato
|
||||
* Concordo com os parâmetros do contrato
|
||||
* Faça ambas as partes assinarem
|
||||
* Implementar qualquer adiantamento
|
||||
|
||||
Uma vez validado, o contrato é publicado para ambas as partes. a fatura é publicada para o cliente,
|
||||
quem pode homenageá-lo ao sistema, caso em que esse cliente recebe uma pontuação de solvente e o contrato é marcado como provisionado.
|
||||
|
||||
Em caso de falta de fornecimento, o sistema terá o cuidado de marcar o contrato como provisório, e avisar o artista
|
||||
para executar qualquer serviço relacionado, pois o pagamento associado deixa dúvidas.
|
||||
|
||||
Depois que o serviço associado tiver sido executado, os pagamentos relativos serão feitos ao artista.
|
||||
|
||||
Para um contrato executado e não honrado pelo cliente, o processo de processo de recuperação é contratado, caso contrário, o contrato é arquivado,
|
||||
Os certificados de pagamento estão disponíveis para o artista e a fatura é marcada como paga e depois repassada ao cliente.
|
||||
|
||||
### Para o artista
|
||||
|
||||
O artista escolhe vários parâmetros que farão o seu perfil:
|
||||
|
||||
* O tipo de atividades que ele quer promover, o tipo de serviços que ele oferece (é um DJ,
|
||||
um cantor solo, um músico solo, um conjunto musical clássico, uma banda)
|
||||
* O preço de seu contato com um novo cliente
|
||||
(quanto recebo por solicitação de cliente processada sem peso de mais de um dia)
|
||||
* O lugar onde ele pratica e, se sim, até onde ele pode se mover.
|
||||
* um calendário opcional do Google, para consultar para estabelecer sua disponibilidade
|
||||
* Parâmetros adicionais dependendo do tipo de atividade, por exemplo, para
|
||||
conjuntos, seu tamanho, se houver, seu repertório ou indicações do estilo de sua música)
|
||||
|
||||
### Para o cliente
|
||||
|
||||
Ele escolhe um lugar e uma data para declarar um evento futuro
|
||||
(Ele pode programar o quanto quiser).
|
||||
|
||||
Ele pode, navegar pelas publicações dos artistas e começar,
|
||||
com base em um de seus projetos de eventos, a negociação de um contrato de serviço.
|
||||
|
||||
Ele tem acesso ao conhecimento de dias conhecidos como artistas livres pelo sistema.
|
||||
|
||||
## Confidencialidade
|
||||
|
||||
Em nenhum momento, nenhum endereço de correspondência, nenhum endereço de e-mail e nenhum número de telefone
|
||||
não são transmitidos para clientes ou artistas. Apenas o sistema tem acesso a essas informações.
|
||||
|
||||
Além disso, o direito de retirada é permanente e sua implementação imediata.
|
||||
Artistas e clientes podem solicitar sua desinscrição,
|
||||
que imediatamente desativa as publicações associadas às suas informações,
|
||||
e planeia a eliminação completa desta informação no prazo de quinze dias
|
||||
do aplicativo, a menos que seja um pedido contraditório.
|
||||
A operação é anulável até duas semanas após a sua programação.
|
||||
</markdown>
|
||||
</environment>
|
||||
|
||||
<environment names="Lua,Development">
|
||||
<markdown>Este é o meu site perso, uma configuração de _Yavsc_ (outro negócio muito pequeno).
|
||||
|
||||
* [README](https://github.com/pazof/yavsc/blob/vnext/README.md)
|
||||
* [licença: GNU GPL v3](https://github.com/pazof/yavsc/blob/vnext/LICENSE)
|
||||
|
||||
Outras instalações:
|
||||
</markdown>
|
||||
<markdown>
|
||||
* [Coiffure](http://coiffure.pschneider.fr)
|
||||
* [ZicMoove](http://linkmuse.pschneider.fr)
|
||||
* [Yavsc](http://yavsc.pschneider.fr)
|
||||
</markdown>
|
||||
</environment>
|
||||
|
||||
<environment names="Yavsc">
|
||||
<markdown>
|
||||
Yet Another Very Small Company ...
|
||||
|
||||
* [README](https://github.com/pazof/yavsc/blob/vnext/README.md)
|
||||
* [license: GNU FPL v3](https://github.com/pazof/yavsc/blob/vnext/LICENSE)
|
||||
|
||||
</markdown>
|
||||
</environment>
|
||||
|
||||
<environment names="YavscPre">
|
||||
<markdown>
|
||||
## Yet Another Very Small Company :
|
||||
* [README](https://github.com/pazof/yavsc/blob/vnext/README.md)
|
||||
* [license: GNU FPL v3](https://github.com/pazof/yavsc/blob/vnext/LICENSE)
|
||||
|
||||
En production:
|
||||
|
||||
* [Lua](http://pschneider.fr:85)
|
||||
* [Yavsc](http://pschneider.fr:84)
|
||||
|
||||
</markdown>
|
||||
</environment>
|
||||
|
||||
|
||||
<environment names="coiffure">
|
||||
<markdown>
|
||||
Você está no site da ordem em cabeleireiro em casa de Soraya Boudjouraf,
|
||||
um ás de cabeleireiro, que trabalha na região de Paris.
|
||||
|
||||
Ao validar um formulário de pedido aqui, é para ela que você notifica sua solicitação.
|
||||
|
||||
Você pode [Deixe-lhe o seu número de telefone] (/ HairCutCommand / HairCut? ActivityCode = Brush & performerId = 1bd841ab-c305-4971-940d-7ddca818310c)
|
||||
e / ou detalhes sobre o seu pedido,
|
||||
ela vai ligar de volta.</markdown>
|
||||
</environment>
|
||||
|
||||
<environment names="Development">
|
||||
<markdown>
|
||||
## Este é um site de desenvolvimento.
|
||||
|
||||
Este recurso só diz respeito ao desenvolvimento do software que o implementa.
|
||||
É efêmero e praticamente constantemente força 500 códigos.
|
||||
|
||||
Por favor, desculpe a equipe de desenvolvimento para informá-lo sobre este endereço e pelo inconveniente.
|
||||
|
||||
A "pré-produção" exibe os seguintes sites:
|
||||
|
||||
* [Yavsc](https://yavsc.pschneider.fr)
|
||||
* [Lua](https://lua.pschneider.fr)
|
||||
|
||||
</markdown>
|
||||
</environment>
|
||||
|
||||
<p>
|
||||
@Model
|
||||
</p>
|
@ -1,38 +0,0 @@
|
||||
@{
|
||||
ViewData["Title"] = "À propos des restrictions d'accès";
|
||||
}
|
||||
<h1>@ViewData["Title"]</h1>
|
||||
|
||||
<markdown>
|
||||
|
||||
# Blog et fichiers utilisateurs
|
||||
|
||||
Par défaut, un envoi à destination du serveur est privé, visible seulement pour son possesseur (et l'administration).
|
||||
|
||||
L'utilisateur peu publier chacun de ces derniers à l'adresse :
|
||||
|
||||
* de tout le monde,
|
||||
* ou d'une liste de cercles d'utilisateurs,
|
||||
* ou de personne
|
||||
|
||||
Quand il s'agit d'un fichier, son adresse permanente relative à la racine du serveur web est: `/UserFiles/(Nom Utilisateur)/(cheminVersLeFichier)`
|
||||
|
||||
Les restrictions d'accès à ce fichier sont celles associées à tous les fichiers du même dossier.
|
||||
Il n'y a pas de regle assiciée à chaque fichier individuellement,
|
||||
elles appartiennent au dossier qui les contient.
|
||||
|
||||
Les billet de blog sont regroupés par utilisateur, à l'Url
|
||||
|
||||
/Blog/(Nom d'Utilisateur)
|
||||
|
||||
Ils sont aussi regroupés par titre :
|
||||
|
||||
/Title/(Titre de post)
|
||||
|
||||
Et ils possèdent une addresse permanente de la forme :
|
||||
|
||||
/Blogspot/Details/(Id Numerique De Post)
|
||||
|
||||
|
||||
|
||||
</markdown>
|
@ -1,19 +0,0 @@
|
||||
@{
|
||||
ViewData["Title"] = "À propos de Markdown";
|
||||
}
|
||||
<h1>@ViewData["Title"]</h1>
|
||||
|
||||
<markdown>
|
||||
Quelques extensions à un Markdown de base :
|
||||
|
||||
* les video et audio: `![video: Ep. 28 - La France en commun - Une invitation à écrire un nouveau projet d'émancipation humaine](/images/testVideo.mp4)`
|
||||
|
||||
![video: Ep. 28 - La France en commun - Une invitation à écrire un nouveau projet d'émancipation humaine](/images/testVideo.mp4)
|
||||
|
||||
à faire:
|
||||
|
||||
* le tag "Numéro de ticket": "Ticket#6854"
|
||||
* le tag "Titre d'article": "#1_great_title"
|
||||
* le tag "User" = "@@(John Doe)" ou "@@jdoe"
|
||||
|
||||
</markdown>
|
@ -1,9 +0,0 @@
|
||||
@{
|
||||
ViewData["Title"] = "Page d'accueil";
|
||||
}
|
||||
@section scripts {
|
||||
|
||||
<script src="~/js/str.js">
|
||||
</script>
|
||||
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
@Model BasketView
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<a asp-controller="HaircutCommand" asp-action="Index">
|
||||
@Model.HairCutActiveQueryCount </a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
@ -1,13 +0,0 @@
|
||||
@{
|
||||
ViewData["Title"] = "Conditions Générales de Vente";
|
||||
}
|
||||
<h2>@ViewData["Title"]</h2>
|
||||
<markdown>
|
||||
|
||||
Le paiement intervient à la commande, quelque soit la date d'intervention.
|
||||
Vous pouvez annuler votre commande depuis la [liste de vos commande en cours](/HairCutCommand/),
|
||||
|
||||
Vous pouvez demander le remboursement d'un paiement, dans le cadre d'une réclamation sur l'execution
|
||||
de votre commande, en nous contactant via courrier éléctronique ou postal, [que vour retrouverez sur la page de contact](/Home/Contact), votre demande sera rapidement traitée.
|
||||
|
||||
</markdown>
|
@ -1,22 +0,0 @@
|
||||
@{ ViewBag.Title = "Chat"; }
|
||||
<h2>@ViewBag.Title</h2>
|
||||
|
||||
<label><input type="checkbox" id="mute" />Muet</label>
|
||||
|
||||
<div class="container disabled panel" id="chatview" data="fullchatview"
|
||||
data-chans="yavsc" data-mutectl="mute" ></div>
|
||||
|
||||
@section scripts {
|
||||
<!--Reference the autogenerated SignalR hub script. -->
|
||||
<script src="~/api/signalr/hubs"></script>
|
||||
<!-- SignalR script to update the chat page and send messages.-->
|
||||
|
||||
@if (!ViewBag.IsAuthenticated) { // Get the user name and store it to prepend to messages.
|
||||
<script>
|
||||
// var uname = prompt('Entrez votre nom:', '');
|
||||
|
||||
</script>
|
||||
}
|
||||
<script src="~/js/chat.js"></script>
|
||||
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
@{
|
||||
ViewData["Title"] = "Contact";
|
||||
}
|
||||
<h2>@ViewData["Title"].</h2>
|
||||
<h3>@ViewData["Message"]</h3>
|
||||
|
||||
<address>
|
||||
Paul Schneider<br>
|
||||
2 Boulevard Aristide Briand -
|
||||
92150 Suresnes (France)
|
||||
<abbr title="Phone">P:</abbr> +33 6 51 14 15 64
|
||||
</address>
|
||||
|
||||
<address>
|
||||
<strong>Support:</strong> <a href="mailto:contact@pschneider.fr">contact@pschneider.fr</a><br />
|
||||
<strong>Marketing:</strong> <a href="mailto:paul@pschneider.fr">paul@pschneider.fr</a>
|
||||
</address>
|
@ -1,19 +0,0 @@
|
||||
@{
|
||||
ViewData["Title"] = "Dash";
|
||||
}
|
||||
|
||||
<div>
|
||||
<video id="videoPlayer" controls></video>
|
||||
</div>
|
||||
|
||||
@section scripts {
|
||||
<script src="~/js/dash.all.min.js"></script>
|
||||
<script>
|
||||
(function(){
|
||||
var url = "https://dash.akamaized.net/envivio/EnvivioDash3/manifest.mpd";
|
||||
var player = dashjs.MediaPlayer().create();
|
||||
player.initialize(document.querySelector("#videoPlayer"), url, true);
|
||||
})();
|
||||
</script>
|
||||
}
|
||||
|
@ -1,8 +0,0 @@
|
||||
@{
|
||||
ViewData["Title"] = "Home Page";
|
||||
}
|
||||
|
||||
<div class="text-center">
|
||||
<h1 class="display-4">Welcome</h1>
|
||||
<p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
|
||||
</div>
|
@ -1,6 +0,0 @@
|
||||
@{
|
||||
ViewData["Title"] = "Privacy Policy";
|
||||
}
|
||||
<h1>@ViewData["Title"]</h1>
|
||||
|
||||
<p>Use this page to detail your site's privacy policy.</p>
|
@ -1,14 +0,0 @@
|
||||
@{
|
||||
ViewData["Title"] = @SR["Confidentialité"]+" "+@SiteSettings.Value.Title;
|
||||
}
|
||||
<h1>@ViewData["Title"]</h1>
|
||||
|
||||
<markdown>
|
||||
## La confidentialité
|
||||
|
||||
À aucun moment, aucune adresse postale, aucune adresse e-mail ni aucun numéro de téléphone
|
||||
ne sont transmis à personne. Seul le système et son [possesseur](/Home/Contact) a accès à ces informations.
|
||||
|
||||
De plus, le droit de retrait est permanent et sa mise en oeuvre [immédiate](/Account/Delete).
|
||||
|
||||
</markdown>
|
@ -1,17 +0,0 @@
|
||||
@{
|
||||
ViewData["Title"] = "Todo (first)";
|
||||
}
|
||||
<h1>@ViewData["Title"]</h1>
|
||||
<em>Linkmuse(trox)</em>
|
||||
|
||||
<markdown>
|
||||
Les tags.
|
||||
La librairie, les lives.
|
||||
</markdown>
|
||||
@{
|
||||
ViewData["Title"] = "TODO";
|
||||
}
|
||||
<h1>@ViewData["Title"]</h1>
|
||||
<em>Faster, stronger, shorter</em>
|
||||
<markdown>
|
||||
</markdown>
|
@ -1,76 +0,0 @@
|
||||
@{ ViewBag.Title = "video Chat"; }
|
||||
|
||||
|
||||
|
||||
<input type="file" accept="video/*;capture=camcorder" id="cam">
|
||||
<!-- <input type="file" accept="image/*;capture=camera" >
|
||||
<input type="file" accept="audio/*;capture=microphone"> -->
|
||||
<video autoplay id="localvideo">
|
||||
</video>
|
||||
@section scripts
|
||||
{
|
||||
<script>
|
||||
|
||||
function readURL(input) {
|
||||
if (input.files && input.files[0]) {
|
||||
var reader = new FileReader();
|
||||
|
||||
reader.onload = function (e) {
|
||||
$('#localvideo').attr('src', e.target.result);
|
||||
}
|
||||
|
||||
reader.readAsDataURL(input.files[0]);
|
||||
}
|
||||
}
|
||||
|
||||
$("#cam").change(function(){
|
||||
readURL(this);
|
||||
});
|
||||
|
||||
var errorCallback = function(e) {
|
||||
console.log('Reeeejected!', e);
|
||||
};
|
||||
|
||||
navigator.getUserMedia = navigator.getUserMedia ||
|
||||
navigator.webkitGetUserMedia ||
|
||||
navigator.mediaDevices.getUserMedia ||
|
||||
navigator.mozGetUserMedia ||
|
||||
navigator.msGetUserMedia;
|
||||
|
||||
// Not showing vendor prefixes.
|
||||
navigator.mediaDevices.getUserMedia({video: true, audio: true},
|
||||
function(localMediaStream) {
|
||||
var video = document.querySelector('video');
|
||||
video.src = window.URL.createObjectURL(localMediaStream);
|
||||
|
||||
// Note: onloadedmetadata doesn't fire in Chrome when using it with getUserMedia.
|
||||
// See crbug.com/110938.
|
||||
video.onloadedmetadata = function(e) {
|
||||
// Ready to go. Do some stuff.
|
||||
};
|
||||
}, errorCallback);
|
||||
|
||||
|
||||
if (navigator.mediaDevices.getUserMedia) {
|
||||
navigator.mediaDevices.getUserMedia({audio: true, video: false}, function(stream) {
|
||||
if ("srcObject" in video) {
|
||||
video.srcObject = "stream";
|
||||
} else {
|
||||
// Avoid using this in new browsers, as it is going away.
|
||||
video.src = window.URL.createObjectURL(stream);
|
||||
}
|
||||
}, errorCallback);
|
||||
} else {
|
||||
video.src = $("#cam").attr('src'); // fallback.
|
||||
}
|
||||
|
||||
$(document).ready(
|
||||
function () {
|
||||
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
}
|
@ -1,109 +0,0 @@
|
||||
<!doctype html>
|
||||
<html lang="@System.Globalization.CultureInfo.CurrentUICulture.Name">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no" />
|
||||
<link rel="icon" href="@SiteSettings.Value.FavIcon" asp-append-version="true" />
|
||||
<title>@ViewData["Title"] - @SiteSettings.Value.Title</title>
|
||||
<script src="~/js/jquery-2.2.4.js" ></script>
|
||||
<link rel="stylesheet" href="~/css/main/bootstrap.css" />
|
||||
<script src="~/js/bootstrap.js"></script>
|
||||
<link rel="stylesheet" href="~/css/main/site.css" asp-append-version="true"/>
|
||||
<link rel="stylesheet" href="~/css/main/jquery-ui.css" asp-append-version="true"/>
|
||||
<link rel="stylesheet" title="Dark" href="~/css/dark/site.css" asp-append-version="true" />
|
||||
<link rel="alternate stylesheet" title="Clear" href="~/css/clear/site.css" asp-append-version="true" />
|
||||
<script src="~/js/jquery-ui.js" asp-append-version="true"></script>
|
||||
<script src="~/js/jquery.signalR-2.2.1.js" asp-append-version="true"></script>
|
||||
<script src="~/js/site.js" asp-append-version="true"></script>
|
||||
<link rel="stylesheet" href="@Startup.SiteSetup.StyleSheet" asp-append-version="true"/>
|
||||
|
||||
@RenderSection("header", required: false)
|
||||
</head>
|
||||
<body>
|
||||
<nav class="navbar navbar-inverse navbar-static-top" role="navigation">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<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" asp-route-id="" class="navbar-brand">
|
||||
<img src="@SiteSettings.Value.Logo" alt="@SiteSettings.Value.Title" asp-append-version="true"/></a>
|
||||
</div>
|
||||
<div class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
@RenderSection("ctxmenu", required: false)
|
||||
<li><a asp-controller="Blogspot" asp-action="Index" class="navbar-link">@SR["Blogs"]</a></li>
|
||||
<li><a asp-controller="Home" asp-action="Chat" class="navbar-link">@SR["Chat"]</a></li>
|
||||
<li><a asp-controller="Home" asp-action="Contact" class="navbar-link">@SR["Contact"]</a></li>
|
||||
<li><a asp-controller="Home" asp-action="About" class="navbar-link">@SR["About"] @SiteSettings.Value.Title</a> </li>
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle navbar-link" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
|
||||
<span> @System.Globalization.CultureInfo.CurrentUICulture.DisplayName </span>
|
||||
<span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a onclick="setUiCult('fr')" style="cursor:pointer" >@SR["Français"]</a></li>
|
||||
<li><a onclick="setUiCult('en')" style="cursor:pointer">@SR["Anglais"]</a></li>
|
||||
<li><a onclick="setUiCult('pt')" style="cursor:pointer">@SR["Portugais"]</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@await Html.PartialAsync("_LoginPartial")
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
@if (ViewData ["Notify"] != null) {
|
||||
foreach (Notification n in ViewData ["Notify"] as IEnumerable<Notification>) {
|
||||
<div class="alert alert-info alert-dismissable">
|
||||
<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)?SR["Fermer"]:SR[n.click_action])</a>
|
||||
<markdown>@n.body</markdown>
|
||||
</div>}
|
||||
}
|
||||
@RenderSection("subbanner", required: false)
|
||||
<main class="container body-content" role="main">
|
||||
@RenderBody()
|
||||
</main>
|
||||
<hr />
|
||||
<footer>
|
||||
<environment names="Development">
|
||||
<p><em>Site de développement</em></p>
|
||||
</environment>
|
||||
<i>@SiteSettings.Value.Slogan</i>
|
||||
<environment names="yavsc,zicmoove,lua,coiffure,freefield">
|
||||
<script>
|
||||
window.fbAsyncInit = function() {
|
||||
FB.init({
|
||||
appId : '552433071604577',
|
||||
xfbml : true,
|
||||
version : 'v2.5'
|
||||
});
|
||||
};
|
||||
|
||||
(function(d, s, id){
|
||||
var js, fjs = d.getElementsByTagName(s)[0];
|
||||
if (d.getElementById(id)) {return;}
|
||||
js = d.createElement(s); js.id = id;
|
||||
js.src = "//connect.facebook.net/fr_FR/sdk.js";
|
||||
fjs.parentNode.insertBefore(js, fjs);
|
||||
}(document, 'script', 'facebook-jssdk'));
|
||||
</script>
|
||||
<div style="float:right;"
|
||||
data-ref="ZicMoove"
|
||||
class="fb-like"
|
||||
data-share="true"
|
||||
data-width="300"
|
||||
data-show-faces="true"
|
||||
data-colorscheme="dark">
|
||||
</div>
|
||||
</environment>
|
||||
|
||||
<p class="small">Yavsc - Copyright © 2015 - 2019 Paul Schneider</p>
|
||||
</footer>
|
||||
@RenderSection("scripts", required: false)
|
||||
</body>
|
||||
</html>
|
@ -1,75 +0,0 @@
|
||||
{
|
||||
"Logging": {
|
||||
"IncludeScopes": false,
|
||||
"LogLevel": {
|
||||
"Default": "Debug",
|
||||
"System": "Information",
|
||||
"Microsoft": "Information"
|
||||
}
|
||||
},
|
||||
"ConnectionStrings": {
|
||||
"Default": "Server=[YOURSERVERNAME];Port=5432;Database=[YOURDBNAME];Username=[YOURDBUSERNAME];Password=[YOURDBPASSW];"
|
||||
},
|
||||
"Site": {
|
||||
"Title": "Yavsc",
|
||||
"Slogan": "Yavsc!",
|
||||
"StyleSheet": "/css/default.css",
|
||||
"Authority": "http://127.0.0.1:5000/",
|
||||
"Owner": {
|
||||
"Name": "[Site owner's name]",
|
||||
"EMail": "[Site owner's e-mail address]"
|
||||
},
|
||||
"Admin": {
|
||||
"Name": "[a name for a site admin]",
|
||||
"EMail": "[an e-mail for a site admin]"
|
||||
},
|
||||
"Avatars": "Avatars",
|
||||
"Quota": 200000000,
|
||||
"Bills": "Bills",
|
||||
"Blog": "Blog",
|
||||
"TempDir": "Temp"
|
||||
},
|
||||
"Smtp": {
|
||||
"Host": "[YOURSMTPHOST]",
|
||||
"Port": 25,
|
||||
"EnableSSL": false
|
||||
},
|
||||
"DataProtection": {
|
||||
"Keys": {
|
||||
"Dir": "DataProtection-Keys"
|
||||
},
|
||||
"RSAParamFile": "RSA-Params.json",
|
||||
"ExpiresInHours": 168
|
||||
},
|
||||
"Authentication": {
|
||||
"PayPal": {
|
||||
"Mode": "[sandbox|production]",
|
||||
"ClientId": "[Your PayPal REST API ClientId]",
|
||||
"Secret": "[Your PayPal REST API Secret]"
|
||||
},
|
||||
"Google": {
|
||||
"ApiKey": "[Your ApiKey]",
|
||||
"ClientId": "[Your ClientId]",
|
||||
"ClientSecret": "[Your ClientSecret]",
|
||||
"ServiceAccount": {
|
||||
"project_id": "[Yours]",
|
||||
"private_key_id": "[Yours]",
|
||||
"private_key": "-----[Yours]---\n",
|
||||
"client_email": "[Yours]@appspot.gserviceaccount.com",
|
||||
"client_id": "[Yours]",
|
||||
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
||||
"token_uri": "https://accounts.google.com/o/oauth2/token",
|
||||
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
|
||||
"client_x509_cert_url": "https://www41.googleapis.com/robot/v1/[Yours].com"
|
||||
}
|
||||
},
|
||||
"Facebook": {
|
||||
"ClientId": "[Your ClientId]",
|
||||
"ClientSecret": "[Your ClientSecret]"
|
||||
},
|
||||
"Twitter": {
|
||||
"ClientId": "[Your ClientId]",
|
||||
"ClientSecret": "[Your ClientSecret]"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
var notifClick =
|
||||
function(nid) {
|
||||
if (nid > 0) {
|
||||
$.get('/api/dimiss/click/' + nid);
|
||||
}
|
||||
};
|
||||
|
||||
var setUiCult = function(lngspec) {
|
||||
document.cookie = 'ASPNET_CULTURE=c=' + lngspec + '|uic=' + lngspec;
|
||||
location.reload();
|
||||
};
|
Loading…
Reference in New Issue