Thème clair opé, WIP circles

* animate.css: animations css

* links.css: liens avec le fond blanc qui se déroule

* links.css: WIP liens thème sombre

* GitHub.ico: un petit merci à GitHub

* live-concert-fg.png: image de plan rapproché : les fans

* live-concert-scene.jpg: Image de fond : la scene

* splash-image-2.jpg: image de fond : photo colorée, public de
  concert, vient de totemproduction.fr

* links.css: ficher de définitions globales du style des bouttons
  (encore inutilisé)

* yavsc.user.js: WIP implémente le widget "utilisateur", permettant
l'affichage des liens rapides pour tout nom d'ulitisateur, le cas
  échéant, vers l'ajout à un cercle,
vers son blog, vers des methodes choisies d'administateur, vers ses
  réseaux sociaux, voir plus.

* About.aspx: Implémente une page "à propos"

* Test.aspx: Page de test: désolé pour le bruit, elle n'est compilée
  qu'en mode `Debug` (elle n'est pas accessible en production)

* NpgsqlBlogProvider.cs: Corrige la méthode pour enlever un tag à un
  article ...

* NpgsqlBlogProvider.csproj: .

* NpgsqlCircleProvider.cs: liste les cercles auquels appartient un
  utilisateur.

* BasketController.cs:
* NpgsqlContentProvider.cs: Les commandes sont fortement typée.

* README.md: mise à jour des priorités

* style.css: réécriture du thème clair

* style.css: * implémente un classe css `clickme` pour attirer l'oeil
sur le boutton de validation après la modification d'un champ de
  formulaire.
* enlève tous les coins arrondis
* modifie la chasse de caractères (une seule utilisée pour le moment)
*

* style.css: * integre la référence à la feuille de style des
  [animations](https://daneden.github.io/animate.css/)
* corrige des marges, alignements
* supprime ce qui reste de coin arrondi
* néttoye les définitions obsolètes
* définit la classe `username`
* corrige le survol à la suppression de tag

* FrontOfficeController.cs: renomme des methodes, refabriqué pour
  s'adapter aux changements de l'API du workflow,
WIP propose les cercles utilisateurs pour l'ajout des profiles
  préstataires aux cercles.

* HomeController.cs: implémente une page "à propos"

* T.cs: re-autorise le titre vide de page, au cas où ... car ce n'est
  pas un véritable
défaut fonctionnel.

* YavscHelpers.cs: Implemente un outil de presentation des liens
  action traduits. Tous les liens action utilisent maintenant cette
  nouvelle methode,
au profile de celle du framework `HtmlHelpers.ActionLink`

* App.master: corrige l'usage du contrôle utilisateur des cotes dans
  le cadre des cotes de billet.

* AppAdmin.master:
* Index.aspx:
* Service.aspx:
* ProductCategory.aspx: traduction des liens action

* NoLogin.master: * traduction des liens action
* suppression des liens de remerciement dans le bas de page, cette
  information a été déplacée dans la page `/Home/Credits`

* to-markdown.js: transforme maintenant les noeuds Html `div` en
  paragraphes Markdown.

* yavsc.hidefieldset.js: Le script règle la forme de la souris au
  survol du bouton,
le cas échéant.

* yavsc.js: nouvelle fonction javascript pour logger un objet
  arbitraire.

* yavsc.rate.js: Fixe la possibilité de mettre des cotes très basses
  ou très hautes (reste encore un mieux à faire),
Affiche au survol des descriptions optionnelles de la cote.

* Title.aspx:
* UserPost.aspx:
* Edit.aspx:
* Index.aspx:
* Brand.aspx:
* Index.aspx:
* PostActions.ascx:
* TitleNotFound.aspx:
* Booking.aspx:
* Command.aspx:
* ChangePasswordSuccess.aspx: Traduction des liens action

* Login.aspx: * Traduction des liens actionTraduction des liens action

* Profile.aspx: * Traduction des liens actionTraduction des liens
  action
* utilisation de la classe css `mayhide` qui autorise maintenant un
  champ d'entrées de formulaire à être plié/déplié au click sur sa
  légende.

* Admin.aspx: Traduction des liens actionTraduction des liens
  actionTraduction des liens actionTraduction des liens
  actionTraduction des liens actionTraduction des liens action

* Backups.aspx:
* RoleList.aspx:
* UserList.aspx:
* Index.aspx: Traduction des liens actionTraduction des liens action

* Edit.aspx: * refabrication de la structure Html
* Traduction des liens actionTraduction des liens action

* Index.aspx: Simlpification des apperçus de blog

* TagControl.ascx: refabrication pour simplifier l'implémentation du
  contrôle utilisateur des tags

* UserPosts.aspx: Traduction des liens action, et simplification du
  listing de blog

* Basket.aspx: Affiche les articles du panier de commandes avec leur
  vue
dédiée à leur type (les commande sont maintenant fortement typées)

* Catalog.aspx: Traduction des liens action, correctin du lien vers le
  produit
(cassé depuis une vielle refabrication des routes)

* DoAnEstimate.aspx: refabrication de la vue de création du devis:
  renommée depuis `Estimate`

* Performer.ascx: * un message supplementaire à l'absence de
  compétence affichée par un préstataire
* des guillemets autour du commentaire du préstataire sur sa
  compétence
* ajout du préstataire au cercles

* Performers.aspx: Décrit en détail les informations sur la
  disponibilité d'un préstataire,
à la date demandée.

* YourEstimates.aspx: renomage de cette page, pour préciser sa
  fonction : Vos devis.

* Contact.aspx: structure Html de la page de contact

* Credits.aspx: Ajoute les remerciements aux communauté du libre

* Index.aspx: ne fait rien

* Web.config: * import de `System.Transactions`
* mise à jour des credits libres

* WebDeploy.targets: utilise les séparateurs de chemin vers ficher à
  la POSIX, ne change rien pour ma config ... (TODO tester sous
  WoinDose)

* Yavsc.csproj: déploie des pages des scripts Javascript et des images
  et feuilles de style en plus.

* CircleManager.cs: implémente les methodes utilisées à la
  construction du contrôle utilisateur.

* CircleProvider.cs: * doc xml
* extension de interface

* Commande.cs: l'objet `Command` devient abstrait, pour exister (être
  instanciée), une commande doit maintenant hériter de cet objet
  abstrait.

* LocalizedText.resx:
* LocalizedText.fr.resx:
* LocalizedText.Designer.cs:
* LocalizedText.fr.Designer.cs: traductions

* IContentProvider.cs: doc xml

* SiteSkills.aspx: renomage de cette page, pour préciser sa fonction :
  les compétences sur ce site.
This commit is contained in:
Paul Schneider 2015-12-09 13:26:02 +01:00
commit d999ae5a8e
82 changed files with 4856 additions and 594 deletions

View file

@ -10,27 +10,19 @@
<% if (Model.Count>0) { %>
<ul>
<% foreach (Command cmd in Model.Values) { %>
<li>
<%= cmd.Id %>
<%= cmd.CreationDate %>
<%= cmd.Status %>
<%= cmd.ProductRef %>
<ul>
<% if (cmd.Parameters!=null)
foreach (string key in cmd.Parameters.Keys) { %>
<li><%=key%>: <%=cmd.Parameters[key]%></li>
<% } %>
</ul>
<li><div>
<%= cmd.Id %>/<%= cmd.CreationDate %>/<%= cmd.Status %>
<%= cmd.ProductRef %></div>
<div>
<%= Html.Partial(cmd.GetType().Name,cmd) %>
</div>
</li>
<% } %>
</ul>
<% } %>
<ul><li>
<%= Html.ActionLink("Catalog","Catalog" ) %>
<%= Html.TranslatedActionLink("Catalog","Catalog" ) %>
</li><li>
<%= Html.ActionLink("Estimates","Estimates" ) %>
<%= Html.TranslatedActionLink("Estimates","Estimates" ) %>
</li></ul>
</asp:Content>

View file

@ -1,16 +1,11 @@
<%@ Page Title="Booking" Language="C#" MasterPageFile="~/Models/App.master" Inherits="System.Web.Mvc.ViewPage<SimpleBookingQuery>" %>
<asp:Content ContentPlaceHolderID="init" ID="init1" runat="server">
<% Title = Html.Translate("BookingTitle"+Model.MEACode) + " - " + YavscHelpers.SiteName; %>
<% Title = Html.Encode(ViewBag.Activity.Title) + " - " + YavscHelpers.SiteName; %>
</asp:Content>
<asp:Content ContentPlaceHolderID="overHeaderOne" ID="header1" runat="server">
<h1>
<a href="<%=Url.RouteUrl("FrontOffice",new {action="Booking", MEACode=Model.MEACode })%>">
<img href="<%= ViewData["Photo"] %>" alt="">
<%=Html.Translate("BookingTitle"+Model.MEACode)%>
</a>
- <a href="<%= Url.RouteUrl("Default",new {controller="Home" }) %>"><%= YavscHelpers.SiteName %></a>
<h1><%=Html.Encode(ViewBag.Activity.Title) %> - <a href="<%= Url.RouteUrl("Default",new {controller="Home" }) %>"><%= YavscHelpers.SiteName %></a>
</h1>
</asp:Content>
@ -30,6 +25,8 @@
<%= Html.Hidden("MEACode") %>
<fieldset>
<legend><%= Html.Translate("YourNeed") %></legend>
<%= Html.Translate("Si vous le voulez, vous pouvez détailler ici votre demande, en matière de compétences attendues:") %>
<div>
<input type="hidden" name="Need" id="Need" value="">
<ul >
<% if (ViewData ["Needs"]!=null)
@ -38,12 +35,15 @@
<% } %>
</ul>
<%= Html.ValidationMessageFor(model=>model.Need) %>
</div>
</fieldset>
<fieldset>
<legend><%= Html.Translate("PerformanceDate") %></legend>
Intervention souhaitée le
<input type="text" id="PreferedDate" name="PreferedDate" class="start date" value="<%=Model.PreferedDate.ToString("yyyy/MM/dd")%>">
<%= Html.Translate("Indiquez ici la date souhaitée pour la prestation.") %>
<div>
Intervention souhaitée le : <input type="text" id="PreferedDate" name="PreferedDate" class="start date" style="z-index: 99 !important;" value="<%=Model.PreferedDate.ToString("yyyy/MM/dd")%>">
<%= Html.ValidationMessageFor( model=>model.PreferedDate ) %>
</div>
</fieldset>
<script>
$(document).ready(function(){
@ -70,12 +70,12 @@ Intervention souhaitée le
'autoclose': true } ;
// $('#PreferedHour').timepicker(tpconfig);
$('#PreferedDate').datepicker(dpconfig);
$('#PreferedDate').datepicker(dpconfig).zIndex(4);
});
</script>
<input type="submit">
<input type="submit" value="<%=Html.Translate("Search")%>" class="fullwidth actionlink">
<% } %>
</asp:Content>

View file

@ -10,12 +10,12 @@
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
<% foreach (ProductCategory pc in Model.Categories ) { %>
<div>
<h2><%= Html.ActionLink( pc.Name, "ProductCategory", new { id = Model.Name, pc = pc.Reference }, new { @class="actionlink" } ) %></h2>
<h2><%= Html.TranslatedActionLink( pc.Name, "ProductCategory", new { id = Model.Name, pc = pc.Reference }, new { @class="actionlink" } ) %></h2>
</div>
<% foreach (Product p in pc.Products ) { %>
<div>
<h3><%= Html.ActionLink( p.Name, "Product", new { id = Model.Name, pc = pc.Reference , pref = p.Reference }, new { @class="actionlink" } ) %></h3>
<h3><%= Html.TranslatedActionLink( p.Name, "Product", new { id = Model.Name, pc = pc.Reference , pref = p.Reference }, new { @class="actionlink" } ) %></h3>
<p>
<%= p.Description %>
<% if (p.Images !=null)

View file

@ -2,16 +2,18 @@
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
<% foreach (Brand b in Model.Brands ) { %><div>
<h1> <%= Html.ActionLink( b.Name, "Brand", new { id = b.Name }, new { @class="actionlink" } ) %> </h1>
<h1> <%= Html.TranslatedActionLink( b.Name, "Brand", new { id = b.Name }, new { @class="actionlink" } ) %> </h1>
<p><i><%= Html.Encode( b.Slogan ) %></i></p>
<% foreach (ProductCategory pc in b.Categories ) { %>
<div>
<h2><%= Html.ActionLink( pc.Name, "ProductCategory", new { brandid= b.Name, pcid = pc.Reference }, new { @class="actionlink" } ) %></h2>
<h2><%= Html.TranslatedActionLink( pc.Name, "ProductCategory", new { brandid= b.Name, pcid = pc.Reference }, new { @class="actionlink" } ) %></h2>
</div>
<% foreach (Product p in pc.Products ) { %>
<div>
<h3><%= Html.ActionLink( p.Name, "Product", new { id = b.Name, pc = pc.Reference , pref = p.Reference }, new { @class="actionlink" } ) %></h3>
<h3><%= Html.TranslatedActionLink( p.Name, "Product",
new { id = b.Name, pc = pc.Reference , pref = p.Reference },
new { @class="actionlink" } ) %></h3>
<p>
<%= p.Description %>
<% if (p.Images !=null)

View file

@ -1,12 +1,14 @@
<%@ Page Title="Commande" Language="C#" MasterPageFile="~/Models/App.master" Inherits="System.Web.Mvc.ViewPage<FormCollection>" %>
<%@ Page Title="Commande" Language="C#" MasterPageFile="~/Models/App.master" Inherits="System.Web.Mvc.ViewPage<Command>" %>
<asp:Content ID="MainContentContent" ContentPlaceHolderID="MainContent" runat="server">
<%= Html.ActionLink("Votre panier","Basket","FrontOffice" ) %>
(pas implémenté)
<%= Html.TranslatedActionLink("Votre panier","Basket","FrontOffice" ) %>
<ul><li>
<%= Html.ActionLink("Catalog","Catalog" ) %>
<%= Html.TranslatedActionLink("Catalog","Catalog" ) %>
</li><li>
<%= Html.ActionLink("Estimates","Estimates" ) %>
<%= Html.TranslatedActionLink("Estimates","Estimates" ) %>
</li></ul>
</asp:Content>

View file

@ -1,4 +1,4 @@
<%@ Page Title="Devis" Language="C#" Inherits="System.Web.Mvc.ViewPage<Estimate>" MasterPageFile="~/Models/App.master" %>
<%@ Page Title="DoAnEstimate" Language="C#" Inherits="System.Web.Mvc.ViewPage<Estimate>" MasterPageFile="~/Models/App.master" %>
<%@ Register Assembly="Yavsc.WebControls" TagPrefix="yavsc" Namespace="Yavsc.WebControls" %>
<asp:Content ContentPlaceHolderID="head" ID="head1" runat="server" >
<script type="text/javascript" src="<%=Url.Content("~/Scripts/stupidtable.js")%>"></script>

View file

@ -2,20 +2,20 @@
<asp:Content ID="MainContentContent" ContentPlaceHolderID="MainContent" runat="server">
<ul>
<li><%= Html.ActionLink("Catalog","Catalog" ) %></li>
<li><%= Html.ActionLink("Basket","Basket" ) %> </li>
<li><%= Html.ActionLink("Estimates","Estimates" ) %></li>
<li><%= Html.ActionLink("Estimate","Estimate" ) %></li>
<li><%= Html.TranslatedActionLink("Catalog") %></li>
<li><%= Html.TranslatedActionLink("Basket" ) %> </li>
<li><%= Html.TranslatedActionLink("YourEstimates") %></li>
<li><%= Html.TranslatedActionLink("DoAnEstimate") %></li>
<% if (User.Identity.IsAuthenticated) { %>
<li><%= Html.ActionLink("Activities","Activities" ) %></li>
<li><%= Html.ActionLink("ManagedSiteSkills", "Skills" ) %></li>
<li><%= Html.ActionLink("UserSkills","UserSkills" ) %></li>
<li><%= Html.TranslatedActionLink("Activities" ) %></li>
<li><%= Html.TranslatedActionLink("SiteSkills") %></li>
<li><%= Html.TranslatedActionLink("UserSkills") %></li>
<% } else { %>
<li><%= Html.Translate("Activities") %>,
<%= Html.Translate("ManagedSiteSkills") %>,
<%= Html.Translate("UserSkills") %>:
<i><%= Html.Translate("AuthenticatedOnly") %></i></li>
<% }%>
<li> <i><%= Html.Translate("AuthenticatedOnly") %>:
<%= Html.Translate("Activities") %>,
<%= Html.Translate("SiteSkills") %>,
<%= Html.Translate("UserSkills") %></i>
</li> <% }%>
</ul>
</asp:Content>

View file

@ -1,29 +1,41 @@
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<PerformerProfile>" %>
<% ViewBag.BlogCounter = BlogManager.GetPostCounter(Model.UserName); %>
<% ViewBag.WithinCircles = CircleManager.Circles(Model.UserName); %>
<div class="performer">
<h2>
<img src="<%= Model.Avatar %>" alt="" class="bigavatar">
<%=Html.Encode(Model.UserName)%>
<span class="username" data-type="user" data-roles="" data-blog-counter="<%=ViewBag.BlogCounter%>" data-circles="" ><%=Html.Encode(Model.UserName)%></span>
<%=Html.Partial("RateUserSkillControl", Model) %>
</h2>
<p>
<i class="fa fa-envelope">
<address>
<% if (Membership.GetUser()!=null) { %>
<a href="mailto:<%=Model.EMail%>">
<i class="fa fa-envelope"></i>
&lt;<%=Html.Encode(Model.EMail)%>&gt;
<% } else { %><%=Html.LabelFor(m => m.EMail)%>:
<i><%= Html.Translate("AuthenticatedOnly") %></i>
</a>
<% } else { %>
<i class="fa fa-envelope"></i>
<%=Html.LabelFor(m => m.EMail)%>:
<%= Html.Translate("AuthenticatedOnly") %>
<% }%>
</i>
</p>
</address>
<% if (Model.Skills==null) { %>
<%= Html.Translate("") %>
<% } else
foreach (var userskill in Model.Skills) { %>
Cet utilisateur n'a pas saisi de compétence particulière ...
<% } else if (Model.Skills.Count()>0) { %>
<ul style="padding:0; margin:0;"> <% foreach (var userskill in Model.Skills) { %>
<li class="skillname" data-sid="<%= userskill.Id %>">
<%= userskill.SkillName %>
<div data-type="comment">&quot;<%= userskill.Comment %>&quot;</div>
<% if (!string.IsNullOrWhiteSpace(userskill.Comment)) { %>
<div data-type="comment">
&quot;<%= userskill.Comment %>&quot;
</div><% } %>
<%=Html.Partial("RateUserSkillControl", userskill) %>
</li>
</li>
<% } %>
</ul>
<% } %>
<% if (Model.HasCalendar()) { %>
<i class="fa fa-calendar-check" ><%= Html.Translate("Google_calendar") %> : <%= Html.Translate("available") %>.</i><br>
@ -31,5 +43,9 @@ foreach (var userskill in Model.Skills) { %>
<% if (BlogManager.GetPostCounter(Model.UserName)>0) { %>
<a href="<%=Url.RouteUrl("Blogs",new { user = Model.UserName } )%>">
<i class="fa fa-folder"><%=Model.BlogTitle %></i>
</a></div>
<% } %>
</a>
<% } %>
</div>

View file

@ -1,23 +1,29 @@
<%@ Page Language="C#" Title="Performers" MasterPageFile="~/Models/App.master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<PerformerAvailability>>" %>
<asp:Content ContentPlaceHolderID="head" ID="headContent" runat="server">
<script type="text/javascript" src="/Scripts/yavsc.user.js"></script>
</asp:Content>
<asp:Content ID="MainContentContent" ContentPlaceHolderID="MainContent" runat="server">
<% foreach (var available in Model) { %>
<div class="usercard">
<%= Html.Partial("Performer", available.Profile ) %><br>
<% if (available.DateAvailable) {
%>
<%= Html.Translate("ThisPerformerGivesAccessToHisCalendarAndSeemsToBeAvailable") %>
<%
}
else if (available.Profile.HasCalendar()) {
%>
<%= Html.Translate("ThisPerformerGivesAccessToHisCalendarAndItAppearsHeShouldNotBeAvailable") %>
<%
} else {
%>
<div class="panel">
<%= Html.Partial("Performer", available.Profile ) %>
<div class="availability">
<% if (available.DateAvailable) { %>
<%= Html.Translate("ThisPerformerGivesAccessToHisCalendarAndSeemsToBeAvailableThis") %>
<%= available.PerformanceDate.ToString("D") %>
<% } else if (available.Profile.HasCalendar()) { %>
<%= Html.Translate("ThisPerformerGivesAccessToHisCalendarAndItAppearsHeShouldNotBeAvailableThis") %>
<%= available.PerformanceDate.ToString("D") %>
<% } else {%>
<%= Html.Translate("ThisPerformerDoesntGiveAccessToHisCalendar") %>
<%
} %></div><% } %>
<% } %>
</div>
</div>
<% } %>
<script>
$(document).ready(function(){
$("[data-type='user']").user({circles:<%=Ajax.JSonString(ViewData["Circles"])%>});
});
</script>
</asp:Content>

View file

@ -3,7 +3,7 @@
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
<% foreach (Product p in Model.Products ) { %>
<h3><%= Html.ActionLink( p.Name, "Product", new { id = ViewData["BrandId"], pc = Model.Reference , pref = p.Reference }, new { @class="actionlink" } ) %></h3>
<h3><%= Html.TranslatedActionLink( p.Name, "Product", new { id = ViewData["BrandId"], pc = Model.Reference , pref = p.Reference }, new { @class="actionlink" } ) %></h3>
<p>
<%= p.Description %>

View file

@ -3,7 +3,7 @@
<% Title = ViewData ["BrandName"] + " " + Model.Name; %>
</asp:Content>
<asp:Content ContentPlaceHolderID="header" ID="headerContent" runat="server">
<h2> <%=ViewData ["ProdCatName"]%> - <%= Html.ActionLink( Model.Name, "Product", new { id = ViewData ["BrandName"], pc = ViewData ["ProdCatRef"] , pref = Model.Reference } ) %></h2>
<h2> <%=ViewData ["ProdCatName"]%> - <%= Html.TranslatedActionLink( Model.Name, "Product", new { id = ViewData ["BrandName"], pc = ViewData ["ProdCatRef"] , pref = Model.Reference } ) %></h2>
</asp:Content>
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">

View file

@ -1,4 +1,4 @@
<%@ Page Title="My estimates" Language="C#" MasterPageFile="~/Models/App.master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<Estimate>>" %>
<%@ Page Title="YourEstimates" Language="C#" MasterPageFile="~/Models/App.master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<Estimate>>" %>
<asp:Content ID="MainContentContent" ContentPlaceHolderID="MainContent" runat="server">
<% if (((int)ViewData["ResponsibleCount"])>0) { %>
<div>
@ -7,7 +7,7 @@ Les estimations que vous avez faites (<%=ViewData["ResponsibleCount"]%>):<br>
foreach (Estimate estim in Model) {
if (string.Compare(estim.Responsible,(string) ViewData["UserName"])==0) { %>
<%= Html.ActionLink("Titre:"+estim.Title+" Client:"+estim.Client,"Estimate",new{id=estim.Id}) %>
<%= Html.TranslatedActionLink("Titre:"+estim.Title+" Client:"+estim.Client,"Estimate",new{id=estim.Id}) %>
<br>
<% }}%>
</div>
@ -17,7 +17,7 @@ foreach (Estimate estim in Model) {
Vos estimations en tant que client
(<%=ViewData["ClientCount"]%>):<br>
<% foreach (Estimate estim in Model) { %>
<%= Html.ActionLink("Titre:"+estim.Title+" Responsable:"+estim.Responsible,"Estimate",new{id=estim.Id}) %>
<%= Html.TranslatedActionLink("Titre:"+estim.Title+" Responsable:"+estim.Responsible,"Estimate",new{id=estim.Id}) %>
<br><% } %>
</div>
<% } %>