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.
vnext
Paul Schneider 9 years ago
parent c23b737144
commit d999ae5a8e
82 changed files with 4856 additions and 594 deletions

@ -1,3 +1,7 @@
2015-12-09 Paul Schneider <paul@pschneider.fr>
* README.md: mise à jour des priorités
2015-12-01 Paul Schneider <paul@pschneider.fr> 2015-12-01 Paul Schneider <paul@pschneider.fr>
* README.md: mise à jour priorités * README.md: mise à jour priorités

@ -1,3 +1,10 @@
2015-12-09 Paul Schneider <paul@pschneider.fr>
* NpgsqlBlogProvider.cs: Corrige la méthode pour enlever un
tag à un article ...
* NpgsqlBlogProvider.csproj: .
2015-11-30 Paul Schneider <paul@pschneider.fr> 2015-11-30 Paul Schneider <paul@pschneider.fr>
* NpgsqlBlogProvider.cs: implémente le compteur de billet en * NpgsqlBlogProvider.cs: implémente le compteur de billet en

@ -20,7 +20,11 @@ namespace Npgsql.Web.Blog
string connectionString; string connectionString;
#region implemented abstract members of BlogProvider #region implemented abstract members of BlogProvider
/// <summary>
/// Gets the public post count.
/// </summary>
/// <returns>The public post count.</returns>
/// <param name="bloggerName">Blogger name.</param>
public override long GetPublicPostCount (string bloggerName) public override long GetPublicPostCount (string bloggerName)
{ {
long result = -1; long result = -1;
@ -100,7 +104,14 @@ AND b.applicationname = :app
/// <param name="name">Name.</param> /// <param name="name">Name.</param>
override public void Untag (long postid, string name) override public void Untag (long postid, string name)
{ {
Untag (postid, GetTagId (name)); using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
cmd.CommandText = "DELETE FROM tagged WHERE tagged.postid = :pid AND tagged.tagid = (select tag._id FROM tag WHERE tag.name = :tnm)";
cmd.Parameters.AddWithValue ("pid", postid);
cmd.Parameters.AddWithValue ("tnm", name);
cnx.Open ();
cmd.ExecuteNonQuery ();
}
} }
/// <summary> /// <summary>
@ -472,15 +483,19 @@ AND b.applicationname = :app
private long GetTagId (string tagname) private long GetTagId (string tagname)
{ {
// FIXME null pointer at cmd.ExecuteScalar!
if (tagname == null) if (tagname == null)
throw new NullReferenceException ("This tag name is null"); throw new NullReferenceException ("This tag name is null");
long id = 0; long id = 0;
using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
cmd.CommandText = "SELECT tag._id FROM public.tag WHERE name = :name";
cmd.Parameters.AddWithValue ("name", tagname);
cnx.Open (); cnx.Open ();
id = (long)cmd.ExecuteScalar (); using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
cmd.CommandText = "SELECT _id FROM tag WHERE name LIKE :tn";
cmd.Parameters.AddWithValue ("tn",NpgsqlDbType.Varchar, tagname);
id = (long) cmd.ExecuteScalar ();
}
cnx.Close ();
} }
return id; return id;
} }

@ -9,7 +9,7 @@
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<RootNamespace>Npgsql.Web.Blog</RootNamespace> <RootNamespace>Npgsql.Web.Blog</RootNamespace>
<AssemblyName>NpgsqlBlogProvider</AssemblyName> <AssemblyName>NpgsqlBlogProvider</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>

@ -1,3 +1,11 @@
2015-12-09 Paul Schneider <paul@pschneider.fr>
* NpgsqlCircleProvider.cs: liste les cercles auquels
appartient un utilisateur.
* NpgsqlContentProvider.cs: Les commandes sont fortement
typée.
2015-11-30 Paul Schneider <paul@pschneider.fr> 2015-11-30 Paul Schneider <paul@pschneider.fr>
* NpgsqlContentProvider.csproj: ... * NpgsqlContentProvider.csproj: ...

@ -37,6 +37,38 @@ namespace WorkFlowProvider
public class NpgsqlCircleProvider : CircleProvider public class NpgsqlCircleProvider : CircleProvider
{ {
#region implemented abstract members of CircleProvider #region implemented abstract members of CircleProvider
/// <summary>
/// Circles the specified ownername and username.
/// </summary>
/// <param name="ownername">Ownername.</param>
/// <param name="username">Username.</param>
public override string[] Circles (string ownername, string username)
{
List<string> circles = new List<string> ();
using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
cmd.CommandText = @"select c.title from circle c, circle_members m
where c.owner = :wnr
and c._id = m.circle_id
and m.member = :user
and m.applicationname = :app
";
cmd.Parameters.AddWithValue ("wnr",ownername);
cmd.Parameters.AddWithValue ("user",username);
cmd.Parameters.AddWithValue ("app",applicationName);
cnx.Open ();
using (NpgsqlDataReader rdr = cmd.ExecuteReader ()) {
if (rdr.HasRows) while (rdr.Read ())
circles.Add (rdr.GetString (0));
rdr.Close ();
}
}
cnx.Close ();
}
return circles.ToArray();
}
/// <summary> /// <summary>
/// Updates the circle. /// Updates the circle.
/// </summary> /// </summary>

@ -210,13 +210,14 @@ namespace Yavsc
using (NpgsqlConnection cnx = CreateConnection ()) { using (NpgsqlConnection cnx = CreateConnection ()) {
using (NpgsqlCommand cmd = cnx.CreateCommand ()) { using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
cmd.CommandText = cmd.CommandText =
"select id,creation,prdref,params from commandes where @user = clientname and applicationname = @app"; "select id,creation,prdref,params,class from commandes where @user = clientname and applicationname = @app";
cmd.Parameters.AddWithValue ("@user", username); cmd.Parameters.AddWithValue ("@user", username);
cmd.Parameters.AddWithValue ("@app", this.ApplicationName); cmd.Parameters.AddWithValue ("@app", this.ApplicationName);
cnx.Open (); cnx.Open ();
using (NpgsqlDataReader rdr = cmd.ExecuteReader ()) { using (NpgsqlDataReader rdr = cmd.ExecuteReader ()) {
while (rdr.Read ()) { while (rdr.Read ()) {
Command ycmd = new Command (); string cls = rdr.GetString (4);
Command ycmd = Command.CreateCommand(cls);
ycmd.Id = rdr.GetInt64 (0); ycmd.Id = rdr.GetInt64 (0);
ycmd.CreationDate = rdr.GetDateTime (1); ycmd.CreationDate = rdr.GetDateTime (1);
ycmd.ProductRef = rdr.GetString (2); ycmd.ProductRef = rdr.GetString (2);

@ -18,9 +18,12 @@ yavsc
* Si c'est un préstataire, et si on est pas déjà dans un formulaire de reservation, * Si c'est un préstataire, et si on est pas déjà dans un formulaire de reservation,
un lien vers la reservation de ses services un lien vers la reservation de ses services
Et Donner des descriptions textuelles au cotes (ex: dans le cadre d'un prestataire, ses 5 cotes seraient
1.1) Donner des descriptions textuelles au cotes (ex: dans le cadre d'un prestataire, ses 5 cotes seraient
par exemple "Nouvelle star" "Artiste local" "Artiste régional" "Star nationale" "Star internationale" par exemple "Nouvelle star" "Artiste local" "Artiste régional" "Star nationale" "Star internationale"
1.2) Concevoir un objet Contact listant les point d'accès par protocol (email, http, sip, irc, téléphone, adresse postale ...)
2) Refabrication de l'Api : 2) Refabrication de l'Api :
concernant la mise à jour la creation et l'edition d'un post, on concernant la mise à jour la creation et l'edition d'un post, on

@ -39,7 +39,7 @@ namespace Yavsc.ApiControllers
public long Create(NameValueCollection cmdParams) public long Create(NameValueCollection cmdParams)
{ {
// HttpContext.Current.Request.Files // HttpContext.Current.Request.Files
Command cmd = new Command(cmdParams, HttpContext.Current.Request.Files); Command cmd = Command.CreateCommand(cmdParams, HttpContext.Current.Request.Files);
CurrentBasket.Add (cmd); CurrentBasket.Add (cmd);
return cmd.Id; return cmd.Id;
} }

File diff suppressed because it is too large Load Diff

@ -0,0 +1,51 @@

a, .actionlink {
z-index: 1;
color: white;
display:inline-block;
border-style: solid;
border-width:1px;
padding: 1em;
position: relative;
transition: color 1s;
}
a:visited { color: white; }
a:hover, a:visited:hover, .actionlink:hover {
color:black;
}
@media print {
.actionlink, .menuitem { display:none;}
}
div.bback {
position: absolute;
top: 0;
left:0;
width:100%;
height:100%;
z-index: -2;
background-color: rgba(32,32,32,.2);
}
div.aback {
transform: scaleX(0);
transform-origin: 0px 50% 0px;
transition: transform 1s;
position: absolute;
top: 0;
left:0;
width:100%;
height:100%;
z-index: -1;
background-color:white;
}
a:hover > div.aback {
transform: scaleX(1);
}

@ -1,11 +1,14 @@
@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,600,700); @import url(http://fonts.googleapis.com/css?family=Josefin+Sans&subset=latin,latin-ext);
@import url(/App_Themes/clear/links.css);
body { body {
background-color: grey; background-color: white;
color: #303030; color: black;
font-family: 'Open Sans', sans-serif; font-family: 'Josefin Sans', sans-serif;
background: url("/App_Themes/images/splash-image-2.jpg") 0 0 repeat fixed ;
} }
.tagname { color: #D0FFD0; } .tagname { }
.tagname:hover { background-color: red; } .tagname:hover { background-color: red; }
/* Start by setting display:none to make this hidden. /* Start by setting display:none to make this hidden.
@ -21,68 +24,79 @@ body {
} }
input, textarea, checkbox { input, textarea, checkbox {
color: #FFA0A0; color: black;
background-color: black; background-color: white;
font-size: larger;
border: solid 1px rgb(128,128,128);
animation-name: flash;
animation-duration: 1s;
animation-iteration-count: 1;
} }
header { header { float: left; }
background: url("/App_Themes/images/live-concert-388160_1280.jpg") 50% 0 repeat fixed;
}
#logo {
background: url("/App_Themes/images/logo.s.png") 1em 1em no-repeat fixed;
}
h1, h2, h3 { background-color: rgba(256,256,256,.5); } h1 { display: inline-block; }
nav { nav {
background: url("/App_Themes/images/live-concert-388160_1280.jpg") 50% 10em repeat fixed ;
} }
nav li { display: inline-block; } nav li { display: inline-block; }
main { main {
background: url("/App_Themes/images/musician-923526_1.nbbi.jpg") 50% 20em repeat fixed ; clear:both;
background-color: rgba(256,256,256,.5);
} }
footer { footer {
background: url("/App_Themes/images/live-concert-388160_1280.jpg") 50% 30em repeat fixed ; background: url("/App_Themes/images/splash-image-2.jpg") 0 0 repeat fixed ;
} }
legend { legend, .skillname {
background-color: rgba(240,240,240,.5); background-color: rgba(240,240,240,.8);
} }
#copyr { background-color: rgba(250,250,250,.8); } #copyr { }
#gspacer { #gspacer {
background-color: rgba(209,209,209,.8); } background-color: rgba(209,209,209,.8); }
form { fieldset, .performer {
background-color: rgba(150,150,256,0.8); background-color: rgba(216,216,216,0.8);
}
fieldset {
background-color: rgba(216,216,256,0.8);
} }
h1 {
background-color: rgba(256,256,256,.2);
padding: 1em;
color:white;
transition: color 1s;
}
.postpreview { .postpreview {
background-color: rgba(233,233,233,0.8); background-color: rgba(233,233,233,0.8);
animation-name: slideInDown;
animation-duration: 1s;
animation-iteration-count: 1;
} }
.postpreview > div {
max-height: 0;
overflow: hidden;
transition: max-height 2s;
}
.postpreview:hover > div {
overflow: auto;
max-height: 15em;
background-color: rgba(233,233,233,0.8);
}
.post { .post {
background-color: rgba(256,256,256,0.8); background-color: rgba(256,256,256,0.8);
} }
.hiddenpost { background-color: rgba(160,160,160,0.5); } .hiddenpost { background-color: rgba(160,160,160,0.5); }
a { color: rgb(0,56,0); }
a:hover { background-color: rgba(160,160,160,.7); }
footer a { .panel,.bigpanel, aside {
color: black;
background-color: rgba(220,220,220,.8);
}
.panel,.bshpanel, aside {
background-color: rgba(200,200,200,.8); background-color: rgba(200,200,200,.8);
} }
@ -91,6 +105,7 @@ footer a {
} }
.editable { .editable {
border: dashed rgb(200,200,256) 2px; border: dashed rgb(200,200,256) 2px;
background-color: rgba(256,256,256,.8);
} }
.notification { .notification {
@ -102,7 +117,7 @@ footer a {
} }
.error, #error { .error, #error {
color: #f88; color: #f88;
background-color: rgba(256,.5); background-color: rgba(256,0,0,.5);
} }
.validation-summary-errors{ .validation-summary-errors{
color: #f88; color: #f88;
@ -118,79 +133,87 @@ ul.preview li:nth-child(n) {
color: #f88; color: #f88;
} }
a.menuitem {
color: black;
border: solid black 1px;
background-color: rgba(220,220,220,.8);
}
.actionlink {
color: black;
border: solid black 1px;
background-color: rgba(220,220,220,.8);
}
input, select, textarea {
color: black;
background-color:rgba(256,256,256,0.8);
border: solid 1px rgb(128,128,128);
}
a:active { a:active {
background-color:rgba(184,180,132,0.9); background-color:rgba(184,180,132,0.9);
} }
input:hover, textarea:hover { input:hover, textarea:hover {
color: white; color: black;
background-color:rgba(164,164,164,0.8); background-color: rgba(256,256,256,.8);
} }
.code { .code {
background-color: rgba(230,230,230,0.5); background-color: rgba(230,230,230,0.5);
} }
.ohafter:hover + .onhover, .ohinside:hover > .onhover {
background-color: rgba(240,240,250,.8);
}
.input-validation-error { border: solid 1px red; } .input-validation-error { border: solid 1px red; }
.field-validation-error { color: red; } .field-validation-error { color: red; }
@media all and (max-width: 640px) { @media all and (max-width: 640px) {
#logo { #logo {
background: url("/App_Themes/images/logo.xs.png") 0 0 no-repeat fixed;
} }
header { header {
background: url("/App_Themes/images/live-concert-388160_1280.s.jpg") 50% 0 repeat fixed;
} }
nav { nav {
background: url("/App_Themes/images/live-concert-388160_1280.s.jpg") 50% 10% repeat fixed ;
} }
main { main {
background: url("/App_Themes/images/musician-923526_1.nbbi.xs.jpg") 50% 20em repeat fixed ;
} }
footer { footer {
background: url("/App_Themes/images/live-concert-388160_1280.s.jpg") 50% 90% repeat fixed ;
} }
} }
@media all and (max-width: 350px) { @media all and (max-width: 350px) {
#logo { #logo {
background: url("/App_Themes/images/logo.xxs.png") 0 0 no-repeat fixed;
} }
header { header {
background: url("/App_Themes/images/live-concert-388160_1280.xxs.jpg") -1em -1em repeat fixed;
} }
nav { nav {
background: url("/App_Themes/images/live-concert-388160_1280.xxs.jpg") 50% 10% repeat fixed ;
} }
main { main {
background: url("/App_Themes/images/musician-923526_1.nbbi.xxs.jpg") 50% 20em repeat fixed ;
} }
footer { footer {
background: url("/App_Themes/images/live-concert-388160_1280.xxs.jpg") 50% 90% repeat fixed ;
} }
} }
.input-validation-error { border: solid 1px red; background-color: rgba(128,0,0,0.5);
animation-name: hotzone;
animation-duration: 4s;
animation-iteration-count: infinite;
}
.field-validation-error { color: rgb(256,200,200); background-color: rgba(128,0,0,0.5);
animation-name: hotzone;
animation-duration: 4s;
animation-iteration-count: infinite;
}
input[type='submit'].clickme {
animation-name: hotzone;
animation-duration: 4s;
animation-iteration-count: infinite;
}
@keyframes hotzone {
from {
background-color: rgba(230,230,230,.8);
color: black;
}
50% {background-color: rgba(256,150,150,.5);}
to {
background-color: rgba(230,230,230,.8);
color: black;
}
}

@ -0,0 +1,27 @@

.actionlink, .menuitem, a, input[type='submit'] {
display:inline-block;
border-radius:1em;
border-style: solid;
border-width:1px;
cursor: pointer;
padding: 1em;
animation-name: fadeIn;
animation-duration: 1s;
animation-iteration-count: 1;
}
.menuitem {}
a:hover, .actionlink:hover, input[type='submit']:hover {
animation-name: fadeIn;
animation-duration: 1s;
animation-iteration-count: 1;
}
@media print {
.actionlink, .menuitem { display:none;}
}

@ -1,4 +1,21 @@
@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,600,700);
@import url(/App_Themes/dark/links.css);
.panel {
display:inline-block;
width: calc(33% - 10px);
}
@media all and (max-width: 1200px) {
.panel {
width: calc(50% - 5px);
}
}
@media all and (max-width: 720px) {
.panel {
width: 100%;
}
}
.skillname { .skillname {
background-color: rgba(16,16,64,0.8); background-color: rgba(16,16,64,0.8);
@ -21,13 +38,8 @@ body {
.rate:hover { border-color: green; .rate:hover { border-color: green;
background-color:rgba(30,0,124,0.9); } background-color:rgba(30,0,124,0.9); }
input, textarea, checkbox {
color: #FFFFA0;
background-color: black;
}
header { header {
background: url("http://s448140597.onlinehome.us/wp-content/uploads/2014/12/project-management1.jpg") -20em -20em repeat fixed;
} }
header h1, header a { header h1, header a {
@ -60,7 +72,16 @@ legend {
#gspacer { #gspacer {
background-color: rgba(20,20,20,.8); background-color: rgba(20,20,20,.8);
} }
.thanks {
background-color: rgba(50,50,50,.8);
color: rgb(230,230,230);
font-size: x-small;
font-weight: bold;
}
.thanks:hover {
background-color: rgba(80,80,80,.8);
color: white;
}
.postpreview { .postpreview {
background-color: rgba(0,0,32,0.8); background-color: rgba(0,0,32,0.8);
} }
@ -70,12 +91,12 @@ legend {
} }
.hiddenpost { background-color: rgba(16,16,16,0.5); } .hiddenpost { background-color: rgba(16,16,16,0.5); }
aside {
.panel, .spanel, .bshpanel, .xspanel, .xxspanel, aside {
background-color: rgba(20,20,20,.6); background-color: rgba(20,20,20,.6);
border-color: rgb(128,128,128); border-color: rgb(128,128,128);
border-style: solid; border-style: solid;
border-width: 1px; border-width: 1px;
padding: 1em;
} }
.usertitleref { .usertitleref {
@ -90,15 +111,19 @@ legend {
border-color: green ; border-color: green ;
} }
.dirty { .dirty {
background-color: rgba(128,128,0,0.5); background-color: rgba(128,0,0,0.5);
} }
.error, #error { .error, #error {
color: #f88; color: #f88;
background-color: rgba(256,0,0,0.5); background-color: rgba(128,0,0,0.5);
} }
.validation-summary-errors{ .validation-summary-errors{
color: #f88; color: #f88;
background-color: rgba(256,0,0,0.5); background-color: rgba(128,0,0,0.5);
} }
.validation-summary-errors{ .validation-summary-errors{
@ -107,9 +132,18 @@ legend {
a { a {
text-decoration: none; text-decoration: none;
background-color: rgba(30,30,30,.8);
color: yellow;
}
a:hover {
background-color:rgba(50,50,50,.8);
color: white;
}
a:active {
background-color:rgba(124,0,32,0.9);
} }
.actionlink, .menuitem, a { .actionlink, .menuitem, input[type='submit'] {
border-color: rgb(128,128,0); border-color: rgb(128,128,0);
background-color: rgba(20,20,20,.8); background-color: rgba(20,20,20,.8);
color: yellow; color: yellow;
@ -117,26 +151,21 @@ a {
input, select, textarea { input, select, textarea {
color: white; color: white;
background-color:rgba(0,0,64,0.8); background-color:rgba(32,32,32,0.8);
border-color: rgb(128,128,128); border-color: rgb(128,128,128);
} }
a:hover {
background-color:rgba(30,0,124,0.9);
border-color: green ;
}
a:active {
background-color:rgba(124,0,32,0.9);
}
input:hover, textarea:hover { input:hover, textarea:hover {
color: white; color: white;
background-color:rgba(64,64,64,0.8); background-color:rgb(0,0,0);
} }
.code { .code {
background-color: rgba(0,0,256,0.1); background-color: rgba(0,0,256,0.1);
} }
.clickme {
transition: background-color 2s;
}
@media all and (max-width: 640px) { @media all and (max-width: 640px) {
header { header {
@ -223,3 +252,31 @@ header h1, header a { padding:.2em;}
.c2 { display:none; } .c2 { display:none; }
.c2-alt { display:initial; } .c2-alt { display:initial; }
} }
.input-validation-error { border: solid 1px red; background-color: rgba(128,0,0,0.5);
animation-name: hotzone;
animation-duration: 4s;
animation-iteration-count: infinite;
}
.field-validation-error { color: rgb(256,200,200); background-color: rgba(128,0,0,0.5);
animation-name: hotzone;
animation-duration: 4s;
animation-iteration-count: infinite;
}
input[type='submit'].clickme {
animation-name: hotzone;
animation-duration: 4s;
animation-iteration-count: infinite;
}
@keyframes hotzone {
from {
background-color: rgba(30,30,30,.8);}
50% {background-color: rgba(90,50,50,.8);}
to {background-color: rgba(30,30,30,.8);}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

@ -0,0 +1,26 @@

.actionlink, .menuitem, a, input[type='submit'] {
display:inline-block;
border-radius:1em;
border-style: solid;
border-width:1px;
cursor: pointer;
padding: 1em;
animation-name: fadeIn;
animation-duration: 1s;
animation-iteration-count: 1;
}
.menuitem {}
a:hover, .actionlink:hover, input[type='submit']:hover {
animation-name: fadeIn;
animation-duration: 1s;
animation-iteration-count: 1;
}
@media print {
.actionlink, .menuitem { display:none;}
}

@ -1,4 +1,4 @@
@import url(/App_Themes/animate.css);
body { body {
padding: 0; padding: 0;
margin: 0; margin: 0;
@ -11,42 +11,38 @@ body.loading .modal {
display: block; display: block;
} }
.rate { .rate {
border-radius:1em;
border-style: solid; border-style: solid;
border-width: 1px; border-width: 1px;
padding:.2em; margin:.1em;
padding:.1em;
display: inline-block; display: inline-block;
width:5em;
text-align:center;
} }
header { header {
transition: margin 2s, padding 2s; transition: margin 2s, padding 2s;
padding: 0; padding: 2em;
margin: 0; margin: 0;
padding-top: 2em;
padding-bottom:2em;
display: block;
} }
header h1, header a { header h1 {
transition:padding 2s; transition: padding 2s;
margin:0; padding:1em;
} }
nav { nav {
transition: margin 2s, padding 2s; transition: margin 2s, size 2s;
margin: 2em;
padding: 2em; padding: 2em;
display: block;
border-radius:1em;
justify-content: space-around; justify-content: space-around;
} }
div {
vertical-align: text-top;
transition: margin 2s, padding 2s, height 2s; }
main { main {
transition: margin 2s, padding 2s; transition: margin 2s, padding 2s;
margin: 2em; margin: 2em;
padding: 2em; padding: 2em;
display: block; display: block;
border-radius:1em;
} }
main video, main img { main video, main img {
max-width:100%; max-width:100%;
@ -56,7 +52,6 @@ main video, main img {
footer { footer {
transition: margin 2s, padding 2s; transition: margin 2s, padding 2s;
margin: 2em;
padding: 2em; padding: 2em;
display: block; display: block;
clear: both; clear: both;
@ -71,7 +66,7 @@ footer img { max-height: 3em; vertical-align: middle; }
a img, h1 img, .menuitem img { vertical-align: middle; } a img, h1 img, .menuitem img { vertical-align: middle; }
fieldset { fieldset {
border-radius:5px; border-style: solid; border-style: solid;
border-width: 1px; border-width: 1px;
} }
aside { aside {
@ -101,6 +96,8 @@ ul.preview li:nth-child(n) {
overflow: auto; overflow: auto;
} }
.switch { cursor: pointer; }
.dispmodal { .dispmodal {
position: fixed; position: fixed;
z-index: 1000; z-index: 1000;
@ -113,20 +110,13 @@ ul.preview li:nth-child(n) {
overflow-x: hidden; overflow-x: hidden;
} }
.postpreview {
display: inline-block;
max-width: 40em;
padding: 1em;
border-radius:1em;
}
.postpreview video, .postpreview img { .postpreview video, .postpreview img {
max-width: 100%; max-height: 3em;
padding: 1em; padding: .3em;
} }
.post { .post {
display:block; display:block;
padding: 1em; padding: 1em;
border-radius:1em;
} }
.fullwidth { width: 100%; } .fullwidth { width: 100%; }
@ -139,35 +129,22 @@ textarea.fullwidth { min-height:10em; }
display:inline; display:inline;
bottom:0; bottom:0;
} }
.panel {
display:inline-block;
}
.panel,.bshpanel, aside {
border-radius: 1em;
padding: 1em;
}
.spanel { .spanel {
max-width: 18em; max-width: 18em;
display: inline-block; display: inline-block;
border-radius: 1.5em;
padding: .3em;
} }
fieldset { fieldset {
display: inline-block; display: inline-block;
border-radius: 1.5em;
padding: .3em; padding: .3em;
} }
.xspanel { .xspanel {
max-width:13em; max-width:13em;
display: inline-block; display: inline-block;
padding:.2em;
border-radius: 1em;
} }
.xxspanel { .xxspanel {
max-width:7em; max-width:7em;
display: inline-block; display: inline-block;
padding:.1em;
border-radius: .5em;
} }
.hint { .hint {
@ -175,21 +152,22 @@ display:inline-block;
font-style: italic; font-style: italic;
font-size: smaller; font-size: smaller;
} }
.hint::before { .hint::before {
content: "("; content: "(";
} }
.hint::after { .hint::after {
content: ")"; content: ")";
} }
.usertitleref { .usertitleref {
border-radius: 1em;
padding: 1em; padding: 1em;
} }
.editable { .editable {
margin: .5em; margin: .5em;
min-height:1em; min-height:1em;
border-radius: 1em;
border-style: dashed; border-style: dashed;
border-width: 2px; border-width: 2px;
} }
@ -199,16 +177,15 @@ content: ")";
border-style: solid; border-style: solid;
border-width: 1px; border-width: 1px;
padding: 1em; padding: 1em;
border-radius:1em;
margin:1em; margin:1em;
padding:1em; padding:1em;
} }
.error, #error { .error, #error {
font-size: large; font-size: large;
} }
.hidden { display:none; }
.hidden { display:none; }
.iconsmall { max-height: 1.3em; max-width: 1.3em; } .iconsmall { max-height: 1.3em; max-width: 1.3em; }
@ -219,7 +196,6 @@ content: ")";
nav li { display: inline-block; } nav li { display: inline-block; }
footer a { footer a {
border-radius:1em;
padding:1em; padding:1em;
} }
@ -230,35 +206,23 @@ a img, h1 img, .menuitem img { vertical-align: middle; }
legend { legend {
border-radius:5px;
padding:.5em; padding:.5em;
} }
#copyr { text-align: center; display: block; } #copyr { text-align: center; display: block; }
#gspacer { #gspacer {
border-radius:1em;
margin:1em; padding:1em; margin:1em; padding:1em;
display: inline-block } display: inline-block }
.actionlink, .menuitem, a {
display:inline-block;
border-radius:1em;
border-style: solid;
border-width:1px;
cursor: pointer;
padding: 1em;
}
input, select, textarea { input, select, textarea {
border-radius:1em;
border-style: solid; border-style: solid;
border-width:1px; border-width:1px;
} }
.code { .code {
font-family: "monospace"; font-family: "monospace";
border-radius:25px;
white-space: pre-wrap; white-space: pre-wrap;
} }
.bigavatar{ .bigavatar{
@ -271,44 +235,38 @@ input, select, textarea {
} }
.comment { .comment {
border-radius:25px;
font-size: smaller; font-size: smaller;
} }
.onhover { .username {
display:none; border-style: solid;
position: absolute; border-width: 1px;
font-size: large;
font-weight: bold;
display: inline-block;
animation-name: wobble;
animation-duration: 4s;
animation-iteration-count: 1;
padding:1em;
} }
.ohafter:hover + .onhover, .ohinside:hover > .onhover { .skillname, .pagelink {
display:block;
z-index:2;
padding:5px; margin:5px;
background-color: rgba(0,0,40,.8);
}
.skillname, .performer, .usercard, .pagelink {
padding:.5em; padding:.5em;
margin:.25em; margin:.25em;
max-width: 24em; max-width: 24em;
text-align: center; text-align: center;
display: inline-block; display: inline-block;
border-radius:1em;
border-style: solid; border-style: solid;
border-width: 1px; border-width: 1px;
font-size: large; font-size: large;
} }
.performer , .availability { text-align: center; padding: 1em; }
.input-validation-error { border: solid 1px red; background-color: rgba(180,256,256,.5); }
.field-validation-error { color: red; background-color: rgba(180,256,256,.5); }
.c2 { font-size: small; font-style: italic; } .c2 { font-size: small; font-style: italic; }
.c3 { font-size: x-small; font-style: italic; } .c3 { font-size: x-small; font-style: italic; }
.rate {
display:inline-bloc; width:5em; cursor: pointer; text-align:center;
}
h2 select { font-size: large; } h2 select { font-size: large; }
ul.editablelist { ul.editablelist {
@ -319,45 +277,47 @@ ul.editablelist>li {
margin:.5em; margin:.5em;
padding:.2em; padding:.2em;
border: solid grey 1px; border: solid grey 1px;
border-radius: 1em; cursor:pointer;
} }
ul.editablelist>li:before { ul.editablelist>li:after {
font-family: 'FontAwesome'; font-family: 'FontAwesome';
content: "\f007"; content: " ";
} }
ul.editablelist>li:hover { ul.editablelist>li:hover {
background-color: rgba(128,0,0,0.5); background-color: rgba(128,0,0,0.5);
cursor:pointer;
} }
ul.editablelist>li:hover:before { ul.editablelist>li:hover:after {
font-family: 'FontAwesome'; font-family: 'FontAwesome';
content: "\f00d"; content: "\f00d";
} }
.bsh { display: none; }
.c3 { display:initial; }
.c3-alt { display:none; }
@media all and (min-width: 640px) {
div.panel {
display:inline-block;
}
}
.high-z-index { z-index: 99; }
@media print { @media print {
body {background-color:white;color:black;} body {background-color:white;color:black;}
.control, .actionlink, .menuitem, nav { display:none;} .control, nav { display:none;}
} }
.bshpanel { display: inline-block; }
.bsh { display: none; }
.c3 { display:initial; }
.c3-alt { display:none; }
@media all and (max-width: 640px) { @media all and (max-width: 640px) {
header {
padding-top:1em;
padding-bottom:1em;
}
#avatar { #avatar {
margin:.5em; margin:.5em;
} }
header h1, header a , .actionlink, .menuitem, a { padding:.5em;}
nav { nav {
margin: 1em; margin: 1em;
@ -372,22 +332,19 @@ header h1, header a , .actionlink, .menuitem, a { padding:.5em;}
padding: 1em; padding: 1em;
} }
footer a { footer a {
border-radius:.5em;
margin:.5em; margin:.5em;
padding:.5em; padding:.5em;
} }
.notification { .notification {
padding: .5em; padding: .5em;
border-radius:.5em;
margin:.5em; margin:.5em;
padding:.5em; padding:.5em;
max-height: 100%; max-height: 100%;
overflow-y: auto; overflow-y: auto;
} }
.menuitem { .menuitem { display: block; }
display: block;
}
.post { .post {
margin:.3em; margin:.3em;
padding:.3em; padding:.3em;
@ -404,10 +361,7 @@ header h1, header a , .actionlink, .menuitem, a { padding:.5em;}
} }
@media all and (max-width: 380px) { @media all and (max-width: 380px) {
header {
padding-top:.5em;
padding-bottom:.5em;
}
header h1, header a { padding:.2em;} header h1, header a { padding:.2em;}
@ -415,6 +369,7 @@ header h1, header a { padding:.2em;}
margin: .5em; margin: .5em;
padding: .5em; padding: .5em;
} }
main { main {
margin: .5em; margin: .5em;
padding: .5em; padding: .5em;
@ -424,7 +379,6 @@ header h1, header a { padding:.2em;}
padding: .5em; padding: .5em;
} }
footer a { footer a {
border-radius:.2em;
margin:.2em; margin:.2em;
padding:.2em; padding:.2em;
} }
@ -433,4 +387,3 @@ header h1, header a { padding:.2em;}
} }

@ -1,3 +1,192 @@
2015-12-09 Paul Schneider <paul@pschneider.fr>
* 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)
* BasketController.cs: Les commandes sont fortement typée.
* 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.
* SiteSkills.aspx: renomage de cette page, pour préciser sa
fonction : les compétences sur ce site.
2015-12-03 Paul Schneider <paul@pschneider.fr> 2015-12-03 Paul Schneider <paul@pschneider.fr>
* AccountController.cs: doc xml * AccountController.cs: doc xml

@ -22,6 +22,7 @@ using Yavsc.Model.Google.Api;
using System.Net; using System.Net;
using System.Linq; using System.Linq;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Yavsc.Model.Circles;
namespace Yavsc.Controllers namespace Yavsc.Controllers
{ {
@ -53,7 +54,7 @@ namespace Yavsc.Controllers
/// Estimates released to this client /// Estimates released to this client
/// </summary> /// </summary>
[Authorize] [Authorize]
public ActionResult Estimates (string client) public ActionResult YourEstimates (string client)
{ {
var u = Membership.GetUser (); var u = Membership.GetUser ();
if (u == null) // There was no redirection to any login page if (u == null) // There was no redirection to any login page
@ -94,7 +95,7 @@ namespace Yavsc.Controllers
/// <param name="model">Model.</param> /// <param name="model">Model.</param>
/// <param name="submit">Submit.</param> /// <param name="submit">Submit.</param>
[Authorize] [Authorize]
public ActionResult Estimate (Estimate model, string submit) public ActionResult DoAnEstimate (Estimate model, string submit)
{ {
string username = Membership.GetUser ().UserName; string username = Membership.GetUser ().UserName;
// Obsolete, set in master page // Obsolete, set in master page
@ -238,14 +239,23 @@ namespace Yavsc.Controllers
/// <param name="collection">Collection.</param> /// <param name="collection">Collection.</param>
[HttpPost] [HttpPost]
[Authorize] [Authorize]
public ActionResult Command (FormCollection collection) public ActionResult DoCommand (FormCollection collection)
{ {
try { try {
// Add specified product command to the basket, // Add specified product command to the basket,
// saves it in db // saves it in db
new Command (collection, HttpContext.Request.Files); //
YavscHelpers.Notify (ViewData, LocalizedText.Item_added_to_basket); // * check the validity of this request
return View (collection); // by finding the "type" parameter between
// the allowed command types
// * instanciate the given command type, passing it the form data
// * Make the workflow register this command
// * Render the resulting basket
var cmd = Command.CreateCommand (collection, HttpContext.Request.Files);
ViewData["Commanded"] = cmd;
YavscHelpers.Notify (ViewData,
LocalizedText.Item_added_to_basket);
return View ("Basket",WorkFlowManager.GetCommands (User.Identity.Name));
} catch (Exception e) { } catch (Exception e) {
YavscHelpers.Notify (ViewData, "Exception:" + e.Message); YavscHelpers.Notify (ViewData, "Exception:" + e.Message);
return View (collection); return View (collection);
@ -276,7 +286,7 @@ namespace Yavsc.Controllers
/// Skills the specified model. /// Skills the specified model.
/// </summary> /// </summary>
[Authorize (Roles = "Admin")] [Authorize (Roles = "Admin")]
public ActionResult ActivitySkills (string MEACode) public ActionResult SiteSkills (string MEACode)
{ {
SetMEACodeViewData (MEACode); SetMEACodeViewData (MEACode);
var skills = SkillManager.FindSkill ("%",MEACode); var skills = SkillManager.FindSkill ("%",MEACode);
@ -404,6 +414,7 @@ namespace Yavsc.Controllers
{ {
// assert (model.MEACode!=null), since it's the required part of the route data // assert (model.MEACode!=null), since it's the required part of the route data
var needs = SkillManager.FindSkill ("%", model.MEACode); var needs = SkillManager.FindSkill ("%", model.MEACode);
ViewBag.Activity = WorkFlowManager.GetActivity (model.MEACode);
var specification = new List<SkillRating> (); var specification = new List<SkillRating> ();
ViewData ["Needs"] = needs; ViewData ["Needs"] = needs;
if (model.Need != null) { if (model.Need != null) {
@ -438,6 +449,7 @@ namespace Yavsc.Controllers
} }
} else } else
result.Add (profile.CreateAvailability (model.PreferedDate, false)); result.Add (profile.CreateAvailability (model.PreferedDate, false));
ViewData["Circles"] = CircleManager.ListAvailableCircles();
return View ("Performers", result.ToArray ()); return View ("Performers", result.ToArray ());
} }
if (model.Need==null) { if (model.Need==null) {

@ -109,7 +109,19 @@ namespace Yavsc.Controllers
{ {
return View (); return View ();
} }
/// <summary>
/// About this instance.
/// </summary>
public ActionResult About ()
{
return View ();
}
#if DEBUG
public ActionResult Test ()
{
return View ();
}
#endif
/// <summary> /// <summary>
/// Contact the specified email, reason and body. /// Contact the specified email, reason and body.
/// </summary> /// </summary>

@ -35,8 +35,9 @@ namespace Yavsc.Helpers
/// <param name="text">Text.</param> /// <param name="text">Text.</param>
public static IHtmlString Translate(this HtmlHelper helper, object text) public static IHtmlString Translate(this HtmlHelper helper, object text)
{ {
// TODO notify admin from a null text here
if (string.IsNullOrWhiteSpace ((string)text)) if (string.IsNullOrWhiteSpace ((string)text))
throw new InvalidOperationException ("Empty text to translate"); return null;
// Just call the other one, to avoid having two copies (we don't use the HtmlHelper). // Just call the other one, to avoid having two copies (we don't use the HtmlHelper).
return new MvcHtmlString(helper.Encode(GetString((string)text))); return new MvcHtmlString(helper.Encode(GetString((string)text)));
} }

@ -17,6 +17,8 @@ using System.Web.Mvc;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using Yavsc.Model.Messaging; using Yavsc.Model.Messaging;
using System.Linq; using System.Linq;
using System.Reflection;
using System.Web.Routing;
namespace Yavsc.Helpers namespace Yavsc.Helpers
{ {
@ -377,7 +379,6 @@ namespace Yavsc.Helpers
HtmlTextWriter writer = new HtmlTextWriter(strwr); HtmlTextWriter writer = new HtmlTextWriter(strwr);
// refer to the global style // refer to the global style
writer.AddAttribute ("rel", "stylesheet"); writer.AddAttribute ("rel", "stylesheet");
writer.AddAttribute ("title", theme);
writer.AddAttribute ("href", writer.AddAttribute ("href",
string.Format( string.Format(
"/App_Themes/{1}.css", "/App_Themes/{1}.css",
@ -407,6 +408,100 @@ namespace Yavsc.Helpers
} }
return new MvcHtmlString(strwr.ToString()); return new MvcHtmlString(strwr.ToString());
} }
private static object defaultHtmlAttributes =
new { @class="actionlink" };
/// <summary>
/// Translateds the action link.
/// </summary>
/// <returns>The action link.</returns>
/// <param name="helper">Helper.</param>
/// <param name="actionName">Action name.</param>
/// <param name="htmlAttributes">Html attributes.</param>
public static IHtmlString TranslatedActionLink (this HtmlHelper helper,
string actionLabel, object htmlAttributes = null) {
return TranslatedActionLink (helper, actionLabel, actionLabel, htmlAttributes);
}
/// <summary>
/// Translateds the action link.
/// </summary>
/// <returns>The action link.</returns>
/// <param name="helper">Helper.</param>
/// <param name="actionName">Action name.</param>
/// <param name="method">Method.</param>
/// <param name="htmlAttributes">Html attributes.</param>
public static IHtmlString TranslatedActionLink (this HtmlHelper helper,
string actionLabel, string method, object htmlAttributes = null) {
return TranslatedActionLink (helper,
actionLabel, method, null, htmlAttributes = null);
}
/// <summary>
/// Translateds the action link.
/// </summary>
/// <returns>The action link.</returns>
/// <param name="helper">Helper.</param>
/// <param name="actionName">Action name.</param>
/// <param name="method">Method.</param>
/// <param name="controller">Controller.</param>
/// <param name="htmlAttributes">Html attributes.</param>
public static IHtmlString TranslatedActionLink (this HtmlHelper helper,
string actionLabel, string method, string controller, object htmlAttributes = null) {
return TranslatedActionLink (helper, actionLabel, method, controller,
new { controller = controller, action = actionLabel }, htmlAttributes);
}
/// <summary>
/// Translateds the action link.
/// </summary>
/// <returns>The action link.</returns>
/// <param name="helper">Helper.</param>
/// <param name="actionName">Action name.</param>
/// <param name="method">Method.</param>
/// <param name="controller">Controller.</param>
/// <param name="routes">Routes.</param>
/// <param name="htmlAttributes">Html attributes.</param>
public static IHtmlString TranslatedActionLink (this HtmlHelper helper,
string actionLabel, string actionName, string controller, object routes, object htmlAttributes = null) {
if (htmlAttributes == null)
htmlAttributes = defaultHtmlAttributes;
IHtmlString text = T.Translate (helper, actionLabel);
StringWriter strwr = new StringWriter ();
HtmlTextWriter writer = new HtmlTextWriter(strwr);
foreach (var ppt in htmlAttributes.GetType().GetProperties(BindingFlags.GetProperty|
BindingFlags.Public)) {
writer.AddAttribute(ppt.Name, ppt.GetValue(htmlAttributes).ToString())
;
}
writer.AddAttribute ("href",
UrlHelper.GenerateUrl (
"Default", actionName, controller,
( routes == null ) ? null : new RouteValueDictionary ( routes ) ,
helper.RouteCollection,
helper.ViewContext.RequestContext,
false));
writer.RenderBeginTag ("a");
writer.Write (text);
writer.RenderEndTag ();
return new MvcHtmlString(strwr.ToString());
}
public static IHtmlString TranslatedActionLink (this HtmlHelper helper,
string actionName, string method, object routes, object htmlAttributes = null) {
string controllerName = helper.ViewContext.Controller.GetType ().Name;
if (controllerName.EndsWith ("Controller"))
controllerName = controllerName.Substring (0,controllerName.Length - 10);
return TranslatedActionLink (helper, actionName, method,
controllerName, routes, htmlAttributes);
}
} }
} }

@ -24,7 +24,7 @@ Page.StyleSheetTheme = (string) Profile.UITheme; %>
<script type="text/javascript"> <script type="text/javascript">
var apiBaseUrl = '<%=Url.Content(Yavsc.WebApiConfig.UrlPrefixRelative)%>'; var apiBaseUrl = '<%=Url.Content(Yavsc.WebApiConfig.UrlPrefixRelative)%>';
$(document).ready(function(){ $(document).ready(function(){
$('[data-type="rate-bill"]').rate({target: 'Blogs/Rate'}); $('[data-type="rate-bill"]').rate({webTarget: 'Blogs/Rate'});
}); });
</script> </script>
<%=Ajax.YaGlobalizationScript()%> <%=Ajax.YaGlobalizationScript()%>
@ -36,10 +36,11 @@ var apiBaseUrl = '<%=Url.Content(Yavsc.WebApiConfig.UrlPrefixRelative)%>';
</asp:ContentPlaceHolder> </asp:ContentPlaceHolder>
</head> </head>
<body> <body>
<header data-type="background" data-speed="8" >
<header >
<asp:ContentPlaceHolder ID="overHeaderOne" runat="server"> <asp:ContentPlaceHolder ID="overHeaderOne" runat="server">
<h1><a href="<%= Url.RouteUrl("Default") %>"> <h1>
<%=ViewState["orgtitle"]%></a> <%=ViewState["orgtitle"]%>
- <a href="<%= Url.RouteUrl("Default", new {controller = "Home" , action = "Index" }) %>"><%= YavscHelpers.SiteName %></a> - <a href="<%= Url.RouteUrl("Default", new {controller = "Home" , action = "Index" }) %>"><%= YavscHelpers.SiteName %></a>
</h1> </h1>
</asp:ContentPlaceHolder> </asp:ContentPlaceHolder>
@ -56,36 +57,39 @@ else {%> Yavsc.notice(<%=note.body%>, <%=note.click_action%>, <%=note.click_acti
</script> </script>
<% } %> <% } %>
</header> </header>
<nav data-type="background" data-speed="5"> <nav >
<% if (Membership.GetUser()==null) { %> <% if (Membership.GetUser()==null) { %>
<a href="<%= Url.RouteUrl("Default", new { controller = "Account", action = "Login", returnUrl=Request.Url.PathAndQuery}) %>" class="menuitem" accesskey = "C"> <a href="<%= Url.RouteUrl("Default", new { controller = "Account", action = "Login", returnUrl=Request.Url.PathAndQuery}) %>" class="link" accesskey = "C">
<i class="fa fa-sign-in">Connexion</i> <i class="fa fa-sign-in"></i> Connexion
</a> </a>
<% } else { %> <% } else { %>
<a href="<%=Url.RouteUrl("Blogs", new { user = HttpContext.Current.User.Identity.Name } )%>" accesskey = "B" class="menuitem fa" > <a href="<%=Url.RouteUrl("Blogs", new { user = HttpContext.Current.User.Identity.Name } )%>" accesskey = "B" class="link" >
<img src="<%=Url.AvatarUrl(HttpContext.Current.User.Identity.Name)%>" alt="" class="iconsmall" /> <img src="<%=Url.AvatarUrl(HttpContext.Current.User.Identity.Name)%>" alt="" class="iconsmall" />
Vos billets Vos billets
</a> </a>
<a href="<%= Url.RouteUrl("Default", new { controller = "Account", action = "Profile", id = HttpContext.Current.User.Identity.Name} ) %>" accesskey="P" class="menuitem fa fa-user"> <a href="<%= Url.RouteUrl("Default", new { controller = "Account", action = "Profile", id = HttpContext.Current.User.Identity.Name} ) %>" accesskey="P" class="link ">
<i class="fa fa-user"></i>
<%= HttpContext.Current.User.Identity.Name %> <%= HttpContext.Current.User.Identity.Name %>
<span class="hint"> &Eacute;dition de votre profile </span> <span class="hint"> &Eacute;dition de votre profile </span>
</a> </a>
<a href="/Blogs/Post" accesskey="P" class="menuitem fa fa-pencil"> <a href="/Blogs/Post" accesskey="P" class="link">
<i class="fa fa-pencil"></i>
<u>P</u>oster <u>P</u>oster
<span class="hint">&Eacute;dition d'un nouveau billet </span> <span class="hint">&Eacute;dition d'un nouveau billet </span>
</a> </a>
<a href="<%= Url.RouteUrl("Default", new { controller = "Account", action = "Logout", returnUrl=Request.Url.PathAndQuery}) %>" accesskey = "C" class="menuitem fa fa-sign-out"> <a href="<%= Url.RouteUrl("Default", new { controller = "Account", action = "Logout", returnUrl=Request.Url.PathAndQuery}) %>" accesskey = "C" class="link">
<i class="fa fa-sign-out"></i>
<%=Html.Translate("Logout")%></a> <%=Html.Translate("Logout")%></a>
<% } %> <% } %>
</nav> </nav>
<main data-type="background" data-speed="10" data-emheight="10" data-posx="0" data-posy="22" > <main>
<asp:ContentPlaceHolder ID="MainContent" runat="server"> <asp:ContentPlaceHolder ID="MainContent" runat="server">
</asp:ContentPlaceHolder> </asp:ContentPlaceHolder>
</main> </main>
<footer data-type="background" data-speed="5" > <footer>
<%= Html.ActionLink("Formulaire de contact","Contact","Home",null, new { @class="thanks" }) %> <%= Html.TranslatedActionLink("Formulaire de contact","Contact","Home",null, new { @class="thanks" }) %>
<div id="copyr"> <div id="copyr">
<a href="http://yavsc.pschneider.fr/Blogs/UserPost/paul/License"> <a href="http://yavsc.pschneider.fr/Blogs/UserPost/paul/License">
@ -93,5 +97,11 @@ Vos billets
</div> </div>
</footer><div class="modal"></div> </footer><div class="modal"></div>
<script>
$(document).ready(function() {
$('fieldset.mayhide').hidefieldset();
$( "a" ).append("<div class='aback'></div>").append("<div class='bback'></div>");
});
</script>
</body> </body>
</html> </html>

@ -58,14 +58,14 @@ else {%> Yavsc.notice(<%=note.body%>, <%=note.click_action%>, <%=note.click_acti
</a> </a>
<% } else { %> <% } else { %>
<ul> <ul>
<li><%= Html.ActionLink("Backups","Backups") %></li> <li><%= Html.TranslatedActionLink("Backups","Backups") %></li>
<li><%= Html.ActionLink("Restaurations", "Restore") %></li> <li><%= Html.TranslatedActionLink("Restaurations", "Restore") %></li>
<li><%= Html.ActionLink("Create backup","CreateBackup") %></li> <li><%= Html.TranslatedActionLink("Create backup","CreateBackup") %></li>
<li><%= Html.ActionLink("Remove user", "RemoveUser") %></li> <li><%= Html.TranslatedActionLink("Remove user", "RemoveUser") %></li>
<li><%= Html.ActionLink("Add a Role ", "AddRole") %></li> <li><%= Html.TranslatedActionLink("Add a Role ", "AddRole") %></li>
<li><%= Html.ActionLink("Remove role", "RemoveRoleQuery") %></li> <li><%= Html.TranslatedActionLink("Remove role", "RemoveRoleQuery") %></li>
<li><%= Html.ActionLink("User list", "UserList") %></li> <li><%= Html.TranslatedActionLink("User list", "UserList") %></li>
<li><%= Html.ActionLink("Role list", "RoleList") %></li> <li><%= Html.TranslatedActionLink("Role list", "RoleList") %></li>
</ul> </ul>
<a href="<%=Url.RouteUrl("Blogs", new { user = HttpContext.Current.User.Identity.Name } )%>" accesskey = "B" class="menuitem" > <a href="<%=Url.RouteUrl("Blogs", new { user = HttpContext.Current.User.Identity.Name } )%>" accesskey = "B" class="menuitem" >
@ -93,7 +93,7 @@ else {%> Yavsc.notice(<%=note.body%>, <%=note.click_action%>, <%=note.click_acti
<div id="copyr"> <div id="copyr">
<a href="http://yavsc.pschneider.fr/Blogs/UserPost/paul/License">© 2015 GNU GENERAL PUBLIC LICENSE <i>Version 3, 29 June 2007</i></a> <a href="http://yavsc.pschneider.fr/Blogs/UserPost/paul/License">© 2015 GNU GENERAL PUBLIC LICENSE <i>Version 3, 29 June 2007</i></a>
</div> </div>
<%= Html.ActionLink("Formulaire de contact","Contact","Home",null, new { @class="thanks" }) %> <%= Html.TranslatedActionLink("Formulaire de contact","Contact","Home",null, new { @class="thanks" }) %>
<% foreach ( Link link in Html.Thanks()) { %> <% foreach ( Link link in Html.Thanks()) { %>
<a class="thanks" href="<%=link.Url%>"><% if (link.Image !=null) { <a class="thanks" href="<%=link.Url%>"><% if (link.Image !=null) {
%><img src="<%= link.Image %>" alt="<%= link.Text %>"/></a> %><img src="<%= link.Image %>" alt="<%= link.Text %>"/></a>

@ -63,13 +63,8 @@ else {%> Yavsc.notice(<%=note.body%>, <%=note.click_action%>, <%=note.click_acti
<div id="copyr"> <div id="copyr">
<a href="http://yavsc.pschneider.fr/Blogs/UserPost/paul/License">© 2015 GNU GENERAL PUBLIC LICENSE <i>Version 3, 29 June 2007</i></a> <a href="http://yavsc.pschneider.fr/Blogs/UserPost/paul/License">© 2015 GNU GENERAL PUBLIC LICENSE <i>Version 3, 29 June 2007</i></a>
</div> </div>
<%= Html.ActionLink("Formulaire de contact","Contact","Home",null, new { @class="thanks" }) %> <%= Html.TranslatedActionLink("Formulaire de contact","Contact","Home",null, new { @class="thanks" }) %>
<% foreach ( Link link in Html.Thanks()) { %>
<a class="thanks" href="<%=link.Url%>"><% if (link.Image !=null) {
%><img src="<%= link.Image %>" alt="<%= link.Text %>"/></a>
<% } else { %>
<a class="thanks" href="<%=link.Url%>"><%= link.Text %></a>
<% }} %>
</footer><div class="modal"></div> </footer><div class="modal"></div>
</body> </body>
</html> </html>

@ -404,7 +404,12 @@ module.exports = [
return '\n\n' + content + '\n\n'; return '\n\n' + content + '\n\n';
} }
}, },
{
filter: 'div',
replacement: function (content) {
return '\n\n' + content + '\n\n';
}
},
{ {
filter: 'br', filter: 'br',
replacement: function () { replacement: function () {
@ -457,7 +462,6 @@ module.exports = [
return '`' + content + '`'; return '`' + content + '`';
} }
}, },
{ {
filter: function (node) { filter: function (node) {
return node.nodeName === 'A' && node.getAttribute('href'); return node.nodeName === 'A' && node.getAttribute('href');

@ -3,34 +3,38 @@
return jQuery.widget('Yavsc.hidefieldset', { return jQuery.widget('Yavsc.hidefieldset', {
options: { options: {
jsCallBack: null, jsCallBack: null,
disabled: false disabled: false,
classOpen: 'fa-minus',
classClosed: 'fa-plus',
}, },
button: null, button: null,
_create: function() { _create: function() {
var $ctl = $(this.element); var $ctl = $(this.element);
var _this = this; var _this = this;
var _btn = $ctl.children('legend'); var _btn = $ctl.children('legend');
if (!this.options.disabled && _btn) { if (!_this.options.disabled && _btn) {
_btn.addClass('actionlink'); _btn.css('cursor','pointer');
_btn.addClass('fa'); _btn.addClass('fa');
_btn.addClass('fa-eye'); _btn.addClass(_this.options.classClosed);
this.button = _btn; _this.button = _btn;
$ctl.children(':not(legend)').hide(); $ctl.children(':not(legend)').hide();
this.button.click( function (e) { var onactivate = function (e) {
if ( _btn.hasClass('fa-eye') ) { if ( _btn.hasClass(_this.options.classClosed) ) {
_btn.removeClass('fa-eye'); _btn.removeClass(_this.options.classClosed);
_btn.addClass('fa-eye-slash'); _btn.addClass(_this.options.classOpen);
$ctl.children(':not(legend)').show();
$ctl.children(':not(legend)').show();
} }
else { else {
_btn.addClass('fa-eye'); _btn.addClass(_this.options.classClosed);
_btn.removeClass('fa-eye-slash'); _btn.removeClass(_this.options.classOpen);
$ctl.children(':not(legend)').hide();
$ctl.children(':not(legend)').hide();
} }
}); };
_this.button.click(onactivate);
//_this.button.hover(onactivate,onactivate);
//_this.click(onactivate);
//_this.hover(onactivate,onactivate);
} }
}, },
})})(jQuery); })})(jQuery);

@ -2,14 +2,19 @@
var Yavsc = (function(apiBaseUrl){ var Yavsc = (function(apiBaseUrl){
var self = {}; var self = {};
self.apiBaseUrl = (apiBaseUrl || '/api');
self.dumpprops = function (obj) { self.dumpprops = function (obj) {
var str = ""; var str = "";
for(var k in obj) for(var k in obj)
if (obj.hasOwnProperty(k)) if (obj.hasOwnProperty(k))
str += k + " = " + obj[k] + "\n"; str += " "+k + " = " + obj[k] + "\n";
return (str); } return (str); };
self.apiBaseUrl = (apiBaseUrl || '/api'); self.logObj = function(obj) {
console.log('obj:'+obj);
console.log('-props:'+self.dumpprops(obj));
};
self.showHide = function () { self.showHide = function () {
var id = $(this).attr('did'); var id = $(this).attr('did');

@ -23,11 +23,12 @@
}; };
var id = $ratectl.data('id'); var id = $ratectl.data('id');
$ratectl.addClass('rate'); $ratectl.addClass('rate');
$ratectl.css('cursor','pointer');
$ratectl.click(function (e) { $ratectl.click(function (e) {
var oset = $ratectl.offset(); var oset = $ratectl.offset();
var x = ((e.pageX - oset.left) * 100 ) / $ratectl.width(); var x = ((e.pageX - oset.left) * 100 ) / ($ratectl.innerWidth());
// here, x may be greater than 100, or lower than 0 here, // here, x may be greater than 100, (or lower than 0, i saw it),
// depending on padding & mergin on the $ratectl node, // depending on padding & margin on the $ratectl node,
// when it's a span, and there is a line return within, // when it's a span, and there is a line return within,
// the values on second star line are false. // the values on second star line are false.
// Time to sanitize: // Time to sanitize:
@ -40,21 +41,21 @@
}); });
}, },
updateRate: function (ctl,rate) { updateRate: function (ctl,rate) {
// Using 10 half stars, it makes 11 choices (from 0 to 10) var _this = this;
var rounded = Math.round(rate / 11); var rounded = Math.round(rate / 10);
var HasHalf = (rounded % 2 == 1); var HasHalf = (rounded % 2 == 1);
var NbFilled = Math.floor(rounded / 2); var NbFilled = Math.floor(rounded / 2);
var NbEmpty = (5 - NbFilled) - ((HasHalf)?1:0) ; var NbEmpty = (5 - NbFilled) - ((HasHalf)?1:0) ;
ctl.empty(); ctl.empty();
var i=0; var i=0;
for (i=0; i<NbFilled; i++) for (i=0; i<NbFilled; i++)
ctl.append('<i class="fa fa-star"></i>'); ctl.append('<i class="fa fa-star" title="'+_this.options.labels[i]+'"></i>');
if (HasHalf) if (HasHalf) { i++;
ctl.append('<i class="fa fa-star-half-o"></i>'); ctl.append('<i class="fa fa-star-half-o" title="'+_this.options.labels[i]+'"></i>');
}
for (var j=0; j<NbEmpty; j++, i++ ) for (var j=0; j<NbEmpty; j++, i++ )
ctl.append('<i class="fa fa-star-o"></i>'); ctl.append('<i class="fa fa-star-o" title="'+_this.options.labels[i]+'"></i>');
ctl.append
}, },
})})(jQuery); })})(jQuery);
}).call(this); }).call(this);

@ -0,0 +1,48 @@
(function() {
(function(jQuery) {
return jQuery.widget('Yavsc.user', {
options: {
disabled: false,
circles: [],
},
buttonCircles: null,
buttonBlog: null,
buttonInstMsg: null,
buttonMailling: null,
buttonAdmin: null,
circles: [],
_create: function() {
var _this = this;
var $this = $(this);
var $ctl = $(this.element);
if (!_this.options.disabled) {
var roles = $this.data('roles');
var bcounter = $this.data('blog-counter');
var circlesspec = $this.data('circles');
console.log('here');
if (bcounter)
if (bcounter>0) {
_this.buttonBlog = $('<a><i class="fa fa-folder"></i></a>');
$ctl.append(_this.buttonBlog);
}
if (circlesspec)
{
_this.circles = circlesspec.split(' ');
}
var text = '<form><fieldset class="mayhide"><i class="fa fa-users"></i></fieldset>\n';
for (i = 0; i < _this.options.circles.length; i++) {
var checked = _this.circles.indexOf(_this.options.circles[i])>-1;
if (checked) checked = " checked";
text += "<input type='checkbox'"+checked+">"+ _this.options.circles[i] + "</option>\n";
}
text += "</form>";
_this.buttonCircles = $(text);
$ctl.append(_this.buttonCircles);
return $ctl;
}
},
})})(jQuery);
}).call(this);

@ -1,6 +1,6 @@
<%@ Page Title="Successfully changed your password" Language="C#" Inherits="System.Web.Mvc.ViewPage" MasterPageFile="~/Models/App.master" %> <%@ Page Title="Successfully changed your password" Language="C#" Inherits="System.Web.Mvc.ViewPage" MasterPageFile="~/Models/App.master" %>
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server"> <asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
<div> <div>
<%= Html.ActionLink("Register","Register")%></div> <%= Html.TranslatedActionLink("Register","Register")%></div>
<div><%= Html.ActionLink("ChangePassword","ChangePassword")%></div> <div><%= Html.TranslatedActionLink("ChangePassword","ChangePassword")%></div>
</asp:Content> </asp:Content>

@ -21,7 +21,7 @@
<input type="submit"/> <input type="submit"/>
<% } %></div> <% } %></div>
<div class="panel"> <div class="panel">
<%= Html.ActionLink("S'enregistrer","GetRegister",new {returnUrl=ViewData["returnUrl"]}, new { @class="actionlink" }) %> <%= Html.TranslatedActionLink("S'enregistrer","GetRegister",new {returnUrl=ViewData["returnUrl"]}, new { @class="actionlink" }) %>
</div> </div>
<div class="panel"> <div class="panel">
<a href="<%= Url.RouteUrl ("Default", new { controller = "Google", action= "Login", returnUrl=ViewData["returnUrl"] }) %>" class="actionlink"> <a href="<%= Url.RouteUrl ("Default", new { controller = "Google", action= "Login", returnUrl=ViewData["returnUrl"] }) %>" class="actionlink">

@ -10,8 +10,8 @@
%><aside>This user is Admin.</aside> %><aside>This user is Admin.</aside>
<% } %> <% } %>
<aside> <aside>
<%= Html.ActionLink("Changer de mot de passe","ChangePassword", "Account",null, new { @class="actionlink" })%> <%= Html.TranslatedActionLink("Changer de mot de passe","ChangePassword", "Account",null, new { @class="actionlink" })%>
<%= Html.ActionLink("Désincription", "Unregister", "Account", new { id = ViewData["UserName"] } , new { @class="actionlink" })%> <%= Html.TranslatedActionLink("Désincription", "Unregister", "Account", new { id = ViewData["UserName"] } , new { @class="actionlink" })%>
</aside> </aside>
<aside> <aside>
<code>Compte bancaire:<%= Model.HasBankAccount %></code> <code>Compte bancaire:<%= Model.HasBankAccount %></code>
@ -29,7 +29,7 @@
<%= Html.ValidationSummary() %> <%= Html.ValidationSummary() %>
<%= Html.Hidden("UserName",ViewData["ProfileUserName"]) %> <%= Html.Hidden("UserName",ViewData["ProfileUserName"]) %>
<fieldset><legend>Informations publiques <fieldset class="mayhide"><legend>Informations publiques
<i> <i>
<img src="<%=Url.AvatarUrl(HttpContext.Current.User.Identity.Name)%>" alt="avatar" class="avatar" /> <img src="<%=Url.AvatarUrl(HttpContext.Current.User.Identity.Name)%>" alt="avatar" class="avatar" />
<%=Html.Encode(Model.UserName)%> APE:<%=Model.MEACode%> <%=Model.WebSite%> </i></legend> <%=Html.Encode(Model.UserName)%> APE:<%=Model.MEACode%> <%=Model.WebSite%> </i></legend>
@ -56,7 +56,7 @@ Avatar :
</span> </span>
</fieldset> </fieldset>
<fieldset><legend>Informations administratives <fieldset class="mayhide"><legend>Informations administratives
<i><%= string.IsNullOrWhiteSpace(Model.Name)?"KO":Html.Encode(Model.Name) %> <i><%= string.IsNullOrWhiteSpace(Model.Name)?"KO":Html.Encode(Model.Name) %>
</i> </i>
</legend> </legend>
@ -66,7 +66,7 @@ Avatar :
<%= Html.ValidationMessage("Name", "*") %></span> <%= Html.ValidationMessage("Name", "*") %></span>
</fieldset> </fieldset>
<fieldset><legend>Blog <i><%=Html.Encode(Model.BlogTitle)%> <fieldset class="mayhide"><legend>Blog <i><%=Html.Encode(Model.BlogTitle)%>
<%= Model.BlogVisible?null:Html.Translate("hidden") %> <%= Model.BlogVisible?null:Html.Translate("hidden") %>
</i></legend> </i></legend>
<div class="spanel"> <div class="spanel">
@ -81,7 +81,7 @@ Avatar :
</div> </div>
</fieldset> </fieldset>
<fieldset><legend>Contact <fieldset class="mayhide"><legend>Contact
<i><%=Html.Encode(Model.Phone)%> <%=Html.Encode(Model.Mobile)%> <i><%=Html.Encode(Model.Phone)%> <%=Html.Encode(Model.Mobile)%>
<%=Html.Encode(Model.HasPostalAddress?"adresse OK":"adresse KO")%></i> <%=Html.Encode(Model.HasPostalAddress?"adresse OK":"adresse KO")%></i>
</legend> </legend>
@ -111,30 +111,35 @@ Avatar :
<%= Html.ValidationMessage("Country", "*") %> <%= Html.ValidationMessage("Country", "*") %>
</div> </div>
</fieldset> </fieldset>
<fieldset><legend>Disponibilité <fieldset class="mayhide"><legend>Profile préstataire</legend>
<fieldset class="mayhide"><legend>Disponibilité
<i><%=Html.Encode( <i><%=Html.Encode(
string.IsNullOrWhiteSpace(Model.GoogleCalendar)?"KO":"OK")%></i></legend> string.IsNullOrWhiteSpace(Model.GoogleCalendar)?"KO":"OK")%></i></legend>
<div class="spanel"> <div class="spanel">
<%= Html.LabelFor(model => model.GoogleCalendar) %> : <%= Html.LabelFor(model => model.GoogleCalendar) %> :
<%= Html.Encode(Model.GoogleCalendar) %> <%= Html.Encode(Model.GoogleCalendar) %>
<%= Html.ActionLink("Choisir l'agenda","ChooseCalendar","Google",new { returnUrl= Request.Url.AbsolutePath }, new { @class="actionlink" }) %> <%= Html.TranslatedActionLink("Choisir l'agenda","ChooseCalendar","Google",new { returnUrl= Request.Url.AbsolutePath }, new { @class="actionlink" }) %>
</div></fieldset> </div></fieldset>
<fieldset><legend>Informations de facturation <fieldset class="mayhide"><legend>Informations de facturation
<i> <%=Html.Encode(Model.HasBankAccount?"OK":"KO")%> </i> <i> <%=Html.Encode(Model.HasBankAccount?"OK":"KO")%> </i>
</legend> </legend>
<p>Saisissez ici vos informations de facturation.</p>
<fieldset class="mayhide">
<legend>Par le numéro de compte</legend>
<div class="spanel"> <div class="spanel">
<%= Html.LabelFor(model => model.BankCode) %> : <%= Html.LabelFor(model => model.BankCode) %> :
<%= Html.TextBox("BankCode") %> <%= Html.TextBox("BankCode") %>
<%= Html.ValidationMessage("BankCode", "*") %> <%= Html.ValidationMessage("BankCode", "*") %>
</div><div class="spanel"> </div>
<div class="spanel">
<%= Html.LabelFor(model => model.WicketCode) %> : <%= Html.LabelFor(model => model.WicketCode) %> :
<%= Html.TextBox("WicketCode") %> <%= Html.TextBox("WicketCode") %>
<%= Html.ValidationMessage("WicketCode", "*") %> <%= Html.ValidationMessage("WicketCode", "*") %>
</div><div class="spanel"> </div><div class="spanel">
<%= Html.LabelFor(model => model.AccountNumber) %> : <%= Html.LabelFor(model => model.AccountNumber) %> :
<%= Html.TextBox("AccountNumber") %> <%= Html.TextBox("AccountNumber") %>
<%= Html.ValidationMessage("AccountNumber", "*") %> <%= Html.ValidationMessage("AccountNumber", "*") %>
@ -142,7 +147,11 @@ Avatar :
<%= Html.LabelFor(model => model.BankedKey) %> : <%= Html.LabelFor(model => model.BankedKey) %> :
<%= Html.TextBox("BankedKey") %> <%= Html.TextBox("BankedKey") %>
<%= Html.ValidationMessage("BankedKey", "*") %> <%= Html.ValidationMessage("BankedKey", "*") %>
</div><div class="spanel"> </div>
</fieldset>
<fieldset class="mayhide">
<legend>Par codes BIC et IBAN</legend>
<div class="spanel">
<%= Html.LabelFor(model => model.BIC) %> : <%= Html.LabelFor(model => model.BIC) %> :
<%= Html.TextBox("BIC") %> <%= Html.TextBox("BIC") %>
<%= Html.ValidationMessage("BIC", "*") %> <%= Html.ValidationMessage("BIC", "*") %>
@ -152,7 +161,11 @@ Avatar :
<%= Html.ValidationMessage("IBAN", "*") %> <%= Html.ValidationMessage("IBAN", "*") %>
</div> </div>
</fieldset> </fieldset>
<fieldset><legend>Interface utilisateur </fieldset>
</fieldset>
<fieldset class="mayhide"><legend>Interface utilisateur
<i> <%=Html.Encode(Model.UITheme)%> </i> <i> <%=Html.Encode(Model.UITheme)%> </i>
</legend> </legend>
<span> <span>
@ -161,11 +174,11 @@ Avatar :
<%= Html.ValidationMessage("UITheme", "*") %></span> <%= Html.ValidationMessage("UITheme", "*") %></span>
</fieldset> </fieldset>
<input type="submit"/> <input type="submit" id="submit" value="<%=Html.Translate("SubmitChanges")%>" />
<% } %> <% } %>
<script> <script>
$(document).ready(function(){ $(document).ready(function(){
$('fieldset').hidefieldset(); $('input').on('change',function(){$(this).addClass('dirty'); $('#submit').addClass('clickme');});
}); });
</script> </script>
</asp:Content> </asp:Content>

@ -7,7 +7,7 @@
<% foreach (string u in (string[])ViewData["admins"]) { %> <% foreach (string u in (string[])ViewData["admins"]) { %>
<tr><td> <tr><td>
<%= u %> </td><td> <%= u %> </td><td>
<%= Html.ActionLink("Remove","RemoveFromRole", <%= Html.TranslatedActionLink("Remove","RemoveFromRole",
new { username = u, rolename="Admin", returnUrl = Request.Url.PathAndQuery })%> new { username = u, rolename="Admin", returnUrl = Request.Url.PathAndQuery })%>
</td></tr> </td></tr>

@ -1,6 +1,6 @@
<%@ Page Language="C#" MasterPageFile="~/Models/AppAdmin.master" Inherits="System.Web.Mvc.ViewPage<DataAccess>" %> <%@ Page Language="C#" MasterPageFile="~/Models/AppAdmin.master" Inherits="System.Web.Mvc.ViewPage<DataAccess>" %>
<asp:Content ID="MainContentContent" ContentPlaceHolderID="MainContent" runat="server"> <asp:Content ID="MainContentContent" ContentPlaceHolderID="MainContent" runat="server">
<%=Html.ActionLink("Create a database backup", "CreateBackup")%><br/> <%=Html.TranslatedActionLink("Create a database backup", "CreateBackup")%><br/>
<%=Html.ActionLink("Restaurations", "Restore")%><br/> <%=Html.TranslatedActionLink("Restaurations", "Restore")%><br/>
</asp:Content> </asp:Content>

@ -6,14 +6,14 @@ Roles:
<ul> <ul>
<%foreach (string rolename in (string[]) Model){ %> <%foreach (string rolename in (string[]) Model){ %>
<li><%=Html.ActionLink(rolename,"UsersInRole", new { rolename = rolename }, new { @class="actionlink" } )%> <% if (Roles.IsUserInRole("Admin")) { %> <li><%=Html.TranslatedActionLink(rolename,"UsersInRole", new { rolename = rolename }, new { @class="actionlink" } )%> <% if (Roles.IsUserInRole("Admin")) { %>
<%= Html.ActionLink("Supprimer","RemoveRole", new { rolename = rolename }, new { @class="actionlink" } ) %> <%= Html.TranslatedActionLink("Supprimer","RemoveRole", new { rolename = rolename }, new { @class="actionlink" } ) %>
<% } %></li> <% } %></li>
<% } %> <% } %>
</ul> </ul>
<% if (Roles.IsUserInRole("Admin")) { %> <% if (Roles.IsUserInRole("Admin")) { %>
<%= Html.ActionLink("Ajouter un rôle","AddRole", null, new { @class="actionlink" } ) %> <%= Html.TranslatedActionLink("Ajouter un rôle","AddRole", null, new { @class="actionlink" } ) %>
<% } %> <% } %>
</asp:Content> </asp:Content>

@ -16,8 +16,8 @@
<% if (Roles.IsUserInRole("Admin")) { %> <% if (Roles.IsUserInRole("Admin")) { %>
<%= Html.ActionLink(LocalizedText.Remove,"RemoveUser", new { username = user.UserName, returnUrl = Request.Url.PathAndQuery }, new { @class="actionlink" } ) %> <%= Html.TranslatedActionLink(LocalizedText.Remove,"RemoveUser", new { username = user.UserName, returnUrl = Request.Url.PathAndQuery }, new { @class="actionlink" } ) %>
<%= Html.ActionLink("Blogger","AddUserToRole", new { username = user.UserName, rolename="Blogger", returnUrl = Request.Url.PathAndQuery }, new { @class="actionlink" } ) %> <%= Html.TranslatedActionLink("Blogger","AddUserToRole", new { username = user.UserName, rolename="Blogger", returnUrl = Request.Url.PathAndQuery }, new { @class="actionlink" } ) %>
<% } %> <% } %>
</li><% }%> </li><% }%>
</ul> </ul>

@ -2,6 +2,6 @@
<asp:Content ID="MainContentContent" ContentPlaceHolderID="MainContent" runat="server"> <asp:Content ID="MainContentContent" ContentPlaceHolderID="MainContent" runat="server">
<ul> <ul>
<li><%= Html.ActionLink("Notifier des cercles d'un évennement","NotifyEvent","BackOffice" ) %></li> <li><%= Html.TranslatedActionLink("Notifier des cercles d'un évennement","NotifyEvent","BackOffice" ) %></li>
</ul> </ul>
</asp:Content> </asp:Content>

@ -13,28 +13,37 @@
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server"> <asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
<aside> <aside>
Id:<%= Html.ActionLink( Model.Id.ToString() , "UserPost", new { user= Model.Author, title=Model.Title, id = Model.Id }, new { @class = "usertitleref actionlink" }) %> Id:<%= Html.TranslatedActionLink( Model.Id.ToString() , "UserPost", new { user= Model.Author, title=Model.Title, id = Model.Id }, new { @class = "usertitleref actionlink" }) %>
, Posted: <%= Model.Posted.ToString("yyyy/MM/dd") %> - Modified: <%= Model.Modified.ToString("yyyy/MM/dd") %> , Posted: <%= Model.Posted.ToString("yyyy/MM/dd") %> - Modified: <%= Model.Modified.ToString("yyyy/MM/dd") %>
Visible: <%= Model.Visible? "oui":"non" %> <%= Html.ActionLink("Supprimer","RemovePost", new { user=Model.Author, title = Model.Title, id = Model.Id }, new { @class="actionlink" } ) %> Visible: <%= Model.Visible? "oui":"non" %> <%= Html.TranslatedActionLink("Supprimer","RemovePost", new { user=Model.Author, title = Model.Title, postid = Model.Id }, new { @class="actionlink" } ) %>
</aside> </aside>
<aside>
<% using(Html.BeginForm("Edit","Blogs")) { %> <% using(Html.BeginForm("Edit","Blogs")) { %>
<fieldset>
<legend>Contrôle d'accès au Billet</legend> <fieldset class="mayhide">
<%= Html.LabelFor(model => model.Visible) %> : <%= Html.CheckBox( "Visible" ) %> <legend>Attacher des fichiers</legend>
<i id="note_visible">Note: Si un ou plusieurs cercles sont séléctionnés ici, <input type="file" name="attached" id="postedfile" multiple>
le billet ne sera visible qu'aux membres de ces cercles.</i> <input type="button" value="attacher les ficher" onclick="submitFile()">
<%= Html.ValidationMessage("Visible", "*") %> <input type="button" value="importer les documents" onclick="submitImport()">
<%= Html.LabelFor(model => model.AllowedCircles) %> </fieldset>
<fieldset class="mayhide">
<legend><i class="fa fa-lock"></i> <%= Html.Translate("BillAccessControl") %></legend>
<label for="Visible"><i class="fa fa-eye"></i></label> : <%= Html.CheckBox( "Visible" ) %>
<%= Html.ValidationMessage("Visible", "*") %> <br>
<label for="AllowedCircles"> <i class="fa fa-users"></i> <%= Html.Translate("AllowedCircles") %>
</label>
<i class="hint">Note: Si un ou plusieurs cercles sont séléctionnés ici,
le billet ne sera visible qu'aux membres de ces cercles.</i><br>
<%= Html.ListBox("AllowedCircles") %> <%= Html.ListBox("AllowedCircles") %>
<%= Html.ValidationMessage("AllowedCircles", "*") %> <%= Html.ValidationMessage("AllowedCircles", "*") %>
</fieldset> </fieldset>
<span id="viewsource"> <fieldset class="mayhide">
<i class="fa fa-code menuitem"><%=Html.Translate("View_source")%></i></span> <legend><i class="fa fa-code"></i><%=Html.Translate("BillSourceCode")%></legend>
<span id="hidesource" class="hidden">
<i class="fa fa-code menuitem"><%=Html.Translate("Hide_source")%></i>
</span>
<fieldset id="source" class="hidden">
<%=Html.Hidden("Author")%> <%=Html.Hidden("Author")%>
<%=Html.Hidden("Id")%> <%=Html.Hidden("Id")%>
<%= Html.LabelFor(model => model.Photo) %> <%= Html.LabelFor(model => model.Photo) %>
@ -46,17 +55,11 @@ Visible: <%= Model.Visible? "oui":"non" %> <%= Html.ActionLink("Supprimer","Remo
<%=Html.TextArea("Content")%> <%=Html.TextArea("Content")%>
<%=Html.ValidationMessage("Content")%> <%=Html.ValidationMessage("Content")%>
</fieldset> </fieldset>
<input type="submit" id="validate" value="Valider" class="fa fa-check menuitem"> <input type="submit" id="validate" class="actionlink">
<% } %> <% } %>
<form id="frmajax"> </aside>
<fieldset>
<legend>Attacher des fichiers</legend>
<input type="file" name="attached" id="postedfile" multiple>
<input type="button" value="attacher les ficher" onclick="submitFile()">
<input type="button" value="importer les documents" onclick="submitImport()">
</fieldset>
</form>
<span class="placard editable" for="Photo"> <span class="placard editable" for="Photo">
<img src="<%=Model.Photo%>" alt="photo" id="vphoto" > <img src="<%=Model.Photo%>" alt="photo" id="vphoto" >
@ -75,17 +78,6 @@ Visible: <%= Model.Visible? "oui":"non" %> <%= Html.ActionLink("Supprimer","Remo
$(document).ready(function(){ $(document).ready(function(){
$('#hidesource').click(function(){
$('#source').addClass('hidden');
$('#viewsource').removeClass('hidden');
$('#hidesource').addClass('hidden');
});
$('#viewsource').click(function(){
$('#source').removeClass('hidden');
$('#viewsource').addClass('hidden');
$('#hidesource').removeClass('hidden');
});
jQuery('.placard').hallo({plugins: {'hallo-image-insert-edit': { lang: 'fr' } } }); jQuery('.placard').hallo({plugins: {'hallo-image-insert-edit': { lang: 'fr' } } });
jQuery('#vtitle').hallo({ jQuery('#vtitle').hallo({
@ -125,7 +117,7 @@ jQuery('#vcontent').hallo({
'tr', 'tr',
'td', 'td',
'th', 'th',
'style' 'style',
] ]
}, },
'halloblacklist': {tags: ['style']}, 'halloblacklist': {tags: ['style']},
@ -238,6 +230,12 @@ var data = new FormData($('#frmajax').get()[0]);
</script> </script>
<script>
$(document).ready(function(){
$('input').on('change',function(){$(this).addClass('dirty'); $('#validate').addClass('clickme');});
});
</script>
</asp:Content> </asp:Content>

@ -1,19 +1,21 @@
<%@ Page Title="Articles" Language="C#" Inherits="System.Web.Mvc.ViewPage<BlogEntryCollection>" MasterPageFile="~/Models/App.master" EnableTheming="True" StylesheetTheme="dark" %> <%@ Page Title="Blogs" Language="C#" Inherits="System.Web.Mvc.ViewPage<BlogEntryCollection>" MasterPageFile="~/Models/App.master" EnableTheming="True" StylesheetTheme="dark" %>
<%@ Register Assembly="Yavsc.WebControls" TagPrefix="yavsc" Namespace="Yavsc.WebControls" %> <%@ Register Assembly="Yavsc.WebControls" TagPrefix="yavsc" Namespace="Yavsc.WebControls" %>
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server"> <asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
<div> <div>
<% foreach (var g in Model.GroupByTitle()) { %> <% foreach (var g in Model.GroupByTitle()) { %>
<div class="panel"> <div class="postpreview panel">
<h2><a href="<%= Url.RouteUrl("Titles", new { title = g.Key }) %>" class="usertitleref"><%=Html.Encode(g.Key)%></a></h2> <h2><a href="<%= Url.RouteUrl("Titles", new { title = g.Key }) %>" class="usertitleref"><%=Html.Encode(g.Key)%></a></h2>
<% foreach (var p in g) { %> <% foreach (var p in g) { %>
<div class="postpreview"> <div>
<% if (p.Photo != null ) { %> <% if (p.Photo != null ) { %>
<img src="<%=p.Photo%>" alt="<%=p.Photo%>" class="photo"> <img src="<%=p.Photo%>" alt="<%=p.Photo%>" class="photo">
<% } %> <% } else {} %>
<p><%= Html.Markdown(p.Intro,"/bfiles/"+p.Id+"/") %></p> <%= Html.Markdown(p.Intro,"/bfiles/"+p.Id+"/") %>
<%= Html.Partial("PostActions",p)%> <%= Html.Partial("PostActions",p) %>
</div> <% } %> </div><% // we only show the first. It's a preview
break;
} %>
</div> </div>
<% } %> <% } %>
</div> </div>

@ -1,23 +1,23 @@
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<BasePost>" %> <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<BasePost>" %>
<% if (Membership.GetUser()!=null) { %> <% if (Membership.GetUser()!=null) { %>
<aside> <aside>
(<%= Model.Posted.ToString("D") %> (<%= Html.Translate("Posted") %> <%= Model.Posted.ToString("D") %>
- <%= Model.Modified.ToString("D") %> <%= Model.Visible? "":", Invisible!" %>) - <%= Html.Translate("Edited") %> <%= Model.Modified.ToString("D") %> <%= Model.Visible? "":", Invisible!" %>)
<%= Html.Partial("RateControl",Model)%> <%= Html.Partial("RateControl",Model)%>
<% <%
if (Membership.GetUser().UserName==Model.Author || Roles.IsUserInRole("Admin")) if (Membership.GetUser().UserName==Model.Author || Roles.IsUserInRole("Admin"))
{ %> { %>
<%= Html.Partial("TagControl",Model)%> <%= Html.Partial("TagControl",Model)%>
<% if (Model is BlogEntry) { %> <% if (Model is BlogEntry) { %>
<i class="fa fa-pencil"><%=Html.Translate("DoComment")%></i>
<% using (Html.BeginForm("Comment","Blogs")) { %> <% using (Html.BeginForm("Comment","Blogs")) { %>
<filedset> <fieldset>
<%=Html.Hidden("Author")%> <legend><i class="fa fa-pencil"></i><%=Html.Translate("DoComment")%></legend>
<div> <%=Html.Hidden("Author")%>
<%=Html.Hidden("Title")%> <%=Html.Hidden("Title")%>
<%=Html.TextArea("CommentText","")%> <%=Html.TextArea("CommentText","")%>
<%=Html.Hidden("PostId",Model.Id)%> <%=Html.Hidden("PostId",Model.Id)%>
<input type="submit" value="Poster un commentaire"/> <input type="submit" value="Poster un commentaire"/></div>
</filedset> <% } %> </fieldset> <% } %>
<% } %> <% } %>
<a href="<%= Url.RouteUrl("Default", new { action = "EditId", postid = Model.Id })%>" class="actionlink"> <a href="<%= Url.RouteUrl("Default", new { action = "EditId", postid = Model.Id })%>" class="actionlink">
<i class="fa fa-pencil"><%=Html.Translate("Edit")%></i> <i class="fa fa-pencil"><%=Html.Translate("Edit")%></i>

@ -2,28 +2,23 @@
<ul id="tags<%=Model.Id%>" data-postid="<%=Model.Id%>" class="editablelist "> <ul id="tags<%=Model.Id%>" data-postid="<%=Model.Id%>" class="editablelist ">
<% if (Model.Tags != null) { <% if (Model.Tags != null) {
foreach ( var tagname in Model.Tags) { %> foreach ( var tagname in Model.Tags) { %>
<li class="tagname fa fa-tag"><%=tagname%></li> <% <li><i class="fa fa-tag"></i><%=tagname%></li><%
%><% } } %> %><% } } %>
</ul> </ul>
<% if (Membership.GetUser()!=null) { %> <% if (Membership.GetUser()!=null) { %>
<% if (Membership.GetUser().UserName==Model.Author || Roles.IsUserInRole("Admin")) <% if (Membership.GetUser().UserName==Model.Author || Roles.IsUserInRole("Admin"))
{ // grant all permissions: to choose a given set of tags, also create some new tags %> { // grant all permissions: to choose a given set of tags, also create some new tags %>
<span id="viewtagger<%=Model.Id%>"> <form id="tagger<%=Model.Id%>">
<i class="fa fa-tag menuitem" id="viewtaggerbtn<%=Model.Id%>"><%=Html.Translate("DoTag")%></i></span>
<span id="hidetagger<%=Model.Id%>" class="hidden">
<i class="fa fa-tag menuitem" id="hidetaggerbtn<%=Model.Id%>" ><%=Html.Translate("Tags")%> - <%=Html.Translate("Hide")%></i>
Note: Ils sont utilisé pour classifier le document. Par exemple, le tag <code>Accueil</code> rend le document
éligible à une place en page d'Accueil.
</span>
<form id="tagger<%=Model.Id%>" class="maskable" data-btn-show="viewtagger<%=Model.Id%>" data-btn-hide="hidetagger<%=Model.Id%>" >
<fieldset> <fieldset>
<legend>Associer des tags au billet</legend> <legend><i class="fa fa-tags"></i> <%=Html.Translate("DoTag")%></legend>
<div>
<label for="newtag"><%= Html.Translate("Tag_name")%>: </label> <label for="newtag"><%= Html.Translate("Tag_name")%>: </label>
<span id="Err_tag<%=Model.Id%>" class="error"></span> <span id="Err_tag<%=Model.Id%>" class="error"></span>
<input type="text" id="newtag<%=Model.Id%>" class="taginput"> <input type="text" id="newtag<%=Model.Id%>" class="taginput">
<span id="Err_model<%=Model.Id%>" class="error"></span> <span id="Err_model<%=Model.Id%>" class="error"></span>
<input id="sendnewtag<%=Model.Id%>" type="submit" class="submittag fa fa-tag" value="<%=Html.Translate("Submit")%>"> <input id="sendnewtag<%=Model.Id%>" type="submit" class="link fa fa-tag" value="<%=Html.Translate("Submit")%>">
</div>
</fieldset> </fieldset>
</form> </form>
<script> <script>

@ -6,7 +6,7 @@
<asp:Content ContentPlaceHolderID="overHeaderOne" ID="header1" runat="server"> <asp:Content ContentPlaceHolderID="overHeaderOne" ID="header1" runat="server">
<h1> <h1>
<%=Html.ActionLink(Model.Title, "Title", new{title=Model.Title}, null)%> <%=Html.TranslatedActionLink(Model.Title, "Title", new{title=Model.Title}, null)%>
- <a href="<%= Url.RouteUrl("Default",new {controller="Home" }) %>"><%= YavscHelpers.SiteName %></a> - <a href="<%= Url.RouteUrl("Default",new {controller="Home" }) %>"><%= YavscHelpers.SiteName %></a>
</h1> </h1>
</asp:Content> </asp:Content>

@ -1,5 +1,5 @@
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<BlogEntryCollection>" MasterPageFile="~/Models/App.master"%> <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<BlogEntryCollection>" MasterPageFile="~/Models/App.master"%>
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server"> <asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
Pas d'article trouvé ici: &lt;<%= Html.Encode(ViewData["BlogUser"]) %>/<%= Html.Encode(ViewData["PostTitle"]) %>&gt; Pas d'article trouvé ici: &lt;<%= Html.Encode(ViewData["BlogUser"]) %>/<%= Html.Encode(ViewData["PostTitle"]) %>&gt;
<br/> <%= Html.ActionLink("Poster?","Post/", new { user = ViewData["BlogUser"], title = ViewData["PostTitle"]}, new { @class="actionlink" }) %> <br/> <%= Html.TranslatedActionLink("Poster?","Post/", new { user = ViewData["BlogUser"], title = ViewData["PostTitle"]}, new { @class="actionlink" }) %>
</asp:Content> </asp:Content>

@ -13,7 +13,7 @@
<a href="<%= Url.RouteUrl("BlogByTitle", new{ user=Model.Author, title = Model.Title}) %>"> <a href="<%= Url.RouteUrl("BlogByTitle", new{ user=Model.Author, title = Model.Title}) %>">
<%=Model.Title%> <%=Model.Title%>
</a> </a>
- <%= Html.ActionLink((string)ViewData ["BlogTitle"] ,"UserPosts",new{user=Model.Author}, null) %> - <%= Html.TranslatedActionLink((string)ViewData ["BlogTitle"] ,"UserPosts",new{user=Model.Author}, null) %>
- -
<a href="<%=Url.Content("~/")%>"><%= YavscHelpers.SiteName %></a> <a href="<%=Url.Content("~/")%>"><%= YavscHelpers.SiteName %></a>
</h1> </h1>
@ -34,7 +34,7 @@
<img class="avatar" src="<%= Url.RouteUrl("Default", new { action="Avatar", controller="Account", user = c.From } ) %>" alt="<%=c.From%>"/> <img class="avatar" src="<%= Url.RouteUrl("Default", new { action="Avatar", controller="Account", user = c.From } ) %>" alt="<%=c.From%>"/>
<%= Html.Markdown(c.CommentText) %> <%= Html.Markdown(c.CommentText) %>
<% if (Model.Author == username || c.From == username ) { %> <% if (Model.Author == username || c.From == username ) { %>
<%= Html.ActionLink("Supprimer","RemoveComment", new { cmtid = c.Id } , new { @class="actionlink" })%> <%= Html.TranslatedActionLink("Supprimer","RemoveComment", new { cmtid = c.Id } , new { @class="actionlink" })%>
<% } %> <% } %>
</div><% } %> </div><% } %>
</div><% } %> </div><% } %>

@ -22,15 +22,18 @@
<% foreach (var g in Model.GroupByTitle()) { %> <% foreach (var g in Model.GroupByTitle()) { %>
<div class="panel"> <div class="panel">
<h2><a href="<%= Url.RouteUrl("Titles", new { title = g.Key }) %>" class="usertitleref"><%=Html.Encode(g.Key)%></a></h2> <% foreach (var p in g) { %>
<% foreach (var p in g) { %>
<div class="postpreview"> <div class="postpreview">
<a href="<%= Url.RouteUrl("Titles", new { title = g.Key}) %>" >
<% if (p.Photo!=null) { %> <% if (p.Photo!=null) { %>
<img src="<%=p.Photo%>" alt="photo" class="photo"><% } %> <img src="<%=p.Photo%>" alt="<%=g.Key%>" >
<%= Html.Markdown(p.Intro,"/bfiles/"+p.Id+"/") %> <% } else { %>
<%= Html.Partial("PostActions",p)%> <%} %><%=Html.Encode(g.Key)%></a>
</div> <% } %> <div>
<%= Html.Markdown(p.Intro,"/bfiles/"+p.Id+"/") %>
<%= Html.Partial("PostActions",p)%></div>
</div> <% break; } %>
</div> </div>
<% } %> <% } %>
<%= Html.RenderPageLinks((int)ViewData["PageIndex"],(int)ViewData["PageSize"],(int)ViewData["ResultCount"])%> <%= Html.RenderPageLinks((int) ViewData["PageIndex"],(int)ViewData["PageSize"],(int)ViewData["ResultCount"])%>
</asp:Content> </asp:Content>

@ -1,5 +1,5 @@
<%@ Page Language="C#" MasterPageFile="~/Models/App.master" Inherits="System.Web.Mvc.ViewPage" %> <%@ Page Language="C#" MasterPageFile="~/Models/App.master" Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ID="MainContentContent" ContentPlaceHolderID="MainContent" runat="server"> <asp:Content ID="MainContentContent" ContentPlaceHolderID="MainContent" runat="server">
<%= Html.ActionLink("Delete","FileSystem") %> <%= Html.TranslatedActionLink("Delete","FileSystem") %>
<%= Html.ActionLink("Rename","FileSystem") %> <%= Html.TranslatedActionLink("Rename","FileSystem") %>
</asp:Content> </asp:Content>

@ -4,9 +4,9 @@
</h1> </h1>
<ul> <ul>
<% foreach (System.IO.FileInfo fi in Model) { %> <% foreach (System.IO.FileInfo fi in Model) { %>
<li> <%= Html.ActionLink(fi.Name,"Details",new {id = fi.Name}) %> </li> <li> <%= Html.TranslatedActionLink(fi.Name,"Details",new {id = fi.Name}) %> </li>
<% } %> <% } %>
</ul> </ul>
<%= Html.ActionLink("Ajouter des fichiers","Create") %> <%= Html.TranslatedActionLink("Ajouter des fichiers","Create") %>
</asp:Content> </asp:Content>

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

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

@ -10,12 +10,12 @@
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server"> <asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
<% foreach (ProductCategory pc in Model.Categories ) { %> <% foreach (ProductCategory pc in Model.Categories ) { %>
<div> <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> </div>
<% foreach (Product p in pc.Products ) { %> <% foreach (Product p in pc.Products ) { %>
<div> <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>
<%= p.Description %> <%= p.Description %>
<% if (p.Images !=null) <% if (p.Images !=null)

@ -2,16 +2,18 @@
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server"> <asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
<% foreach (Brand b in Model.Brands ) { %><div> <% 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> <p><i><%= Html.Encode( b.Slogan ) %></i></p>
<% foreach (ProductCategory pc in b.Categories ) { %> <% foreach (ProductCategory pc in b.Categories ) { %>
<div> <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> </div>
<% foreach (Product p in pc.Products ) { %> <% foreach (Product p in pc.Products ) { %>
<div> <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>
<%= p.Description %> <%= p.Description %>
<% if (p.Images !=null) <% if (p.Images !=null)

@ -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"> <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> <ul><li>
<%= Html.ActionLink("Catalog","Catalog" ) %> <%= Html.TranslatedActionLink("Catalog","Catalog" ) %>
</li><li> </li><li>
<%= Html.ActionLink("Estimates","Estimates" ) %> <%= Html.TranslatedActionLink("Estimates","Estimates" ) %>
</li></ul> </li></ul>
</asp:Content> </asp:Content>

@ -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" %> <%@ Register Assembly="Yavsc.WebControls" TagPrefix="yavsc" Namespace="Yavsc.WebControls" %>
<asp:Content ContentPlaceHolderID="head" ID="head1" runat="server" > <asp:Content ContentPlaceHolderID="head" ID="head1" runat="server" >
<script type="text/javascript" src="<%=Url.Content("~/Scripts/stupidtable.js")%>"></script> <script type="text/javascript" src="<%=Url.Content("~/Scripts/stupidtable.js")%>"></script>

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

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

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

@ -3,7 +3,7 @@
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server"> <asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
<% foreach (Product p in Model.Products ) { %> <% 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>
<%= p.Description %> <%= p.Description %>

@ -3,7 +3,7 @@
<% Title = ViewData ["BrandName"] + " " + Model.Name; %> <% Title = ViewData ["BrandName"] + " " + Model.Name; %>
</asp:Content> </asp:Content>
<asp:Content ContentPlaceHolderID="header" ID="headerContent" runat="server"> <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>
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server"> <asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">

@ -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"> <asp:Content ID="MainContentContent" ContentPlaceHolderID="MainContent" runat="server">
<% if (((int)ViewData["ResponsibleCount"])>0) { %> <% if (((int)ViewData["ResponsibleCount"])>0) { %>
<div> <div>
@ -7,7 +7,7 @@ Les estimations que vous avez faites (<%=ViewData["ResponsibleCount"]%>):<br>
foreach (Estimate estim in Model) { foreach (Estimate estim in Model) {
if (string.Compare(estim.Responsible,(string) ViewData["UserName"])==0) { %> 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> <br>
<% }}%> <% }}%>
</div> </div>
@ -17,7 +17,7 @@ foreach (Estimate estim in Model) {
Vos estimations en tant que client Vos estimations en tant que client
(<%=ViewData["ClientCount"]%>):<br> (<%=ViewData["ClientCount"]%>):<br>
<% foreach (Estimate estim in Model) { %> <% 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><% } %> <br><% } %>
</div> </div>
<% } %> <% } %>

@ -0,0 +1,7 @@
<%@ Page Title="About" Language="C#" MasterPageFile="~/Models/App.master" Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ID="MainContentContent" ContentPlaceHolderID="MainContent" runat="server">
<p><%= Html.Translate("AboutContent") %></p>
</asp:Content>

@ -1,7 +1,7 @@
<%@ Page Title="Contact" Language="C#" MasterPageFile="~/Models/App.master" Inherits="System.Web.Mvc.ViewPage" %> <%@ Page Title="Contact" Language="C#" MasterPageFile="~/Models/App.master" Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server"> <asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
<div class="panel"> <div class="bigpanel">
<p> <p>
Directeur : Paul Schneider<br> Directeur : Paul Schneider<br>
Adresse postale : 2 Boulevard Aristide Briand<br> Adresse postale : 2 Boulevard Aristide Briand<br>
@ -12,7 +12,7 @@ SIRET : 803 851 674 00017<br>
Activité Principalement Exercée (APE) : 5829C Édition de logiciels applicatifs<br> Activité Principalement Exercée (APE) : 5829C Édition de logiciels applicatifs<br>
</p> </p>
<% using (Html.BeginForm("Contact", "Home")) { %> <% using (Html.BeginForm("Contact", "Home")) { %>
<fieldset> <fieldset style="width:100%">
<legend>Message</legend> <legend>Message</legend>
<p> <p>
<%= Html.Label("email") %>: <%= Html.Label("email") %>:
@ -27,7 +27,7 @@ Activité Principalement Exercée (APE) : 5829C Édition de logiciels applicatif
<p> <p>
<%= Html.Label("body") %>: <%= Html.Label("body") %>:
<%= Html.ValidationMessage("body") %><br/> <%= Html.ValidationMessage("body") %><br/>
<%= Html.TextArea("body") %> <%= Html.TextArea("body",new {@rows="25"}) %>
</p> </p>
</fieldset> </fieldset>
<input type="submit" value="<%=Html.Translate("Submit")%>"> <input type="submit" value="<%=Html.Translate("Submit")%>">

@ -1,5 +1,22 @@
<%@ Page Title="Credits" Language="C#" MasterPageFile="~/Models/App.master" Inherits="System.Web.Mvc.ViewPage" %> <%@ Page Title="Credits" Language="C#" MasterPageFile="~/Models/App.master" Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ID="MainContentContent" ContentPlaceHolderID="MainContent" runat="server"> <asp:Content ID="MainContentContent" ContentPlaceHolderID="MainContent" runat="server">
<div>Icons made by <a href="http://www.flaticon.com/authors/vectorgraphit" title="Vectorgraphit">Vectorgraphit</a> from <a href="http://www.flaticon.com" title="Flaticon">www.flaticon.com</a> is licensed by <a href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0">CC BY 3.0</a></div>
<div>
<%=Html.Translate("Icons_made_by")%> <a href="http://www.flaticon.com/authors/vectorgraphit" title="Vectorgraphit">Vectorgraphit</a>
<%=Html.Translate("from")%> <a href="http://www.flaticon.com" title="Flaticon">www.flaticon.com</a>
<%=Html.Translate("is_licensed_by")%> <a href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0">CC BY 3.0</a>
</div>
<% foreach ( Yavsc.Helpers.Link link in Html.Thanks()) { %>
<a href="<%=link.Url%>"><% if (link.Image !=null) {
%><img src="<%= link.Image %>" alt="<%= link.Text %>"/></a>
<% } else { %>
<a href="<%=link.Url%>"><%= link.Text %></a>
<% }} %>
</asp:Content> </asp:Content>

@ -13,5 +13,6 @@
<%= Html.Partial("Activity",a) %> <%= Html.Partial("Activity",a) %>
<% } %> <% } %>
</div> </div>
</asp:Content> </asp:Content>

@ -0,0 +1,39 @@
<%@ Page Language="C#" MasterPageFile="~/Models/App.master" Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ID="initContent" ContentPlaceHolderID="init" runat="server">
</asp:Content>
<asp:Content ID="headContent" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="overHeaderOneContent" ContentPlaceHolderID="overHeaderOne" runat="server">
</asp:Content>
<asp:Content ID="headerContent" ContentPlaceHolderID="header" runat="server">
</asp:Content>
<asp:Content ID="MainContentContent" ContentPlaceHolderID="MainContent" runat="server">
<div class="test1">
<div class="panel">
A single panel
</div>
</div>
<div class="test2">
<div class="panel">
Premier panneau
</div>
<div class="panel">
Deuxième et dernier panneau
</div>
</div>
<div class="test3">
<div class="panel">
Premier panneau
</div>
<div class="panel">
Deuxième panneau
</div>
<div class="panel">
Troisème et dernier panneau
</div>
</div>
</asp:Content>

@ -2,7 +2,7 @@
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server"> <asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
<div> <div>
<%= Html.ActionLink("blogs","Index","WorkFlow") %> <%= Html.TranslatedActionLink("blogs","Index","WorkFlow") %>
</div> </div>
</asp:Content> </asp:Content>

@ -53,6 +53,7 @@ http://msdn2.microsoft.com/en-us/library/b5ysx397.aspx
<add assembly="System.IdentityModel.Selectors, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <add assembly="System.IdentityModel.Selectors, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add assembly="System.Web.WebPages.Deployment, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> <add assembly="System.Web.WebPages.Deployment, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add assembly="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> <add assembly="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add assembly="System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</assemblies> </assemblies>
</compilation> </compilation>
<customErrors mode="Off"> <customErrors mode="Off">
@ -166,6 +167,8 @@ http://msdn2.microsoft.com/en-us/library/b5ysx397.aspx
<add name="MarkdownDeep" url="http://www.toptensoftware.com/markdowndeep/" /> <add name="MarkdownDeep" url="http://www.toptensoftware.com/markdowndeep/" />
<add name="MarkdownHelper" url="http://www.nuget.org/packages/MarkdownHelper" /> <add name="MarkdownHelper" url="http://www.nuget.org/packages/MarkdownHelper" />
<add name="Postgresql" url="http://www.postgresql.org" image="/App_Themes/images/pgsql.png" /> <add name="Postgresql" url="http://www.postgresql.org" image="/App_Themes/images/pgsql.png" />
<add name="Animate.css, Another thing from Daniel Eden." url="https://daneden.github.io/animate.css/" />
<add name="GitHub" url="https://github.com/" image="/App_Themes/images/GitHub.ico" />
</to> </to>
</thanks> </thanks>
<circleProviders defaultProvider="NpgsqlCircleProvider"> <circleProviders defaultProvider="NpgsqlCircleProvider">

@ -4,7 +4,8 @@
<Target Name="Deploy" Condition="'$(DeployDir)' != '' And !$(SkipCopyUnchangedFiles)" DependsOnTargets="Build"> <Target Name="Deploy" Condition="'$(DeployDir)' != '' And !$(SkipCopyUnchangedFiles)" DependsOnTargets="Build">
<Copy SourceFiles="@(FileWrites)" DestinationFolder="$(DeployDir)/%(RelativeDir)" /> <Copy SourceFiles="@(FileWrites)" DestinationFolder="$(DeployDir)/%(RelativeDir)" />
<Copy SourceFiles="@(Content)" DestinationFolder="$(DeployDir)/%(RelativeDir)" /> <Copy SourceFiles="@(Content)" DestinationFolder="$(DeployDir)/%(RelativeDir)" />
<TransformXml Source="Web.config" Transform="Web.$(Configuration).config" Destination="$(DeployDir)\Web.config" Condition="Exists('Web.$(Configuration).config')"/> <TransformXml Source="Web.config" Transform="Web.$(Configuration).config" Destination="$(DeployDir)/Web.config" Condition="Exists('Web.$(Configuration).config')"/>
</Target> </Target>
</Project> </Project>

@ -137,6 +137,7 @@
<Reference Include="System.Data.Linq" /> <Reference Include="System.Data.Linq" />
<Reference Include="System.ServiceModel" /> <Reference Include="System.ServiceModel" />
<Reference Include="System.ServiceModel.Web" /> <Reference Include="System.ServiceModel.Web" />
<Reference Include="Microsoft.CSharp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="Admin\" /> <Folder Include="Admin\" />
@ -276,7 +277,6 @@
<Content Include="Views\Admin\Backups.aspx" /> <Content Include="Views\Admin\Backups.aspx" />
<Content Include="Views\Admin\Restore.aspx" /> <Content Include="Views\Admin\Restore.aspx" />
<Content Include="Views\Admin\Restored.aspx" /> <Content Include="Views\Admin\Restored.aspx" />
<Content Include="Views\FrontOffice\Estimates.aspx" />
<Content Include="Catalog.xml" /> <Content Include="Catalog.xml" />
<Content Include="RegistrationMail.txt" /> <Content Include="RegistrationMail.txt" />
<Content Include="Views\FrontOffice\Writting.ascx" /> <Content Include="Views\FrontOffice\Writting.ascx" />
@ -302,7 +302,6 @@
<Content Include="Views\Account\Profile.aspx" /> <Content Include="Views\Account\Profile.aspx" />
<Content Include="robots.txt" /> <Content Include="robots.txt" />
<Content Include="Scripts\form-new-user.js" /> <Content Include="Scripts\form-new-user.js" />
<Content Include="Views\FrontOffice\Estimate.aspx" />
<Content Include="Views\FrontOffice\EventPub.aspx" /> <Content Include="Views\FrontOffice\EventPub.aspx" />
<Content Include="Views\Account\Circles.aspx" /> <Content Include="Views\Account\Circles.aspx" />
<Content Include="Views\Account\Register.ascx" /> <Content Include="Views\Account\Register.ascx" />
@ -754,7 +753,19 @@
<Content Include="Content\images\icons-svg\video-white.svg" /> <Content Include="Content\images\icons-svg\video-white.svg" />
<Content Include="Scripts\jquery.mobile-1.4.5.js" /> <Content Include="Scripts\jquery.mobile-1.4.5.js" />
<Content Include="Scripts\jquery.mobile-1.4.5.min.js" /> <Content Include="Scripts\jquery.mobile-1.4.5.min.js" />
<Content Include="Views\FrontOffice\ActivitySkills.aspx" /> <Content Include="Views\Home\About.aspx" />
<Content Include="Scripts\yavsc.user.js" />
<Content Include="Views\FrontOffice\SiteSkills.aspx" />
<Content Include="Views\FrontOffice\YourEstimates.aspx" />
<Content Include="Views\FrontOffice\DoAnEstimate.aspx" />
<Content Include="App_Themes\animate.css" />
<Content Include="App_Themes\images\live-concert-fg.png" />
<Content Include="App_Themes\images\live-concert-scene.jpg" />
<Content Include="App_Themes\links.css" />
<Content Include="App_Themes\dark\links.css" />
<Content Include="App_Themes\clear\links.css" />
<Content Include="App_Themes\images\splash-image-2.jpg" />
<Content Include="Views\Home\Test.aspx" />
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" /> <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
@ -795,6 +806,7 @@
<None Include="Web.TotemPre.config" /> <None Include="Web.TotemPre.config" />
<None Include="Web.TotemProd.config" /> <None Include="Web.TotemProd.config" />
<None Include="Scripts\jquery.mobile-1.4.5.min.map" /> <None Include="Scripts\jquery.mobile-1.4.5.min.map" />
<None Include="App_Themes\images\GitHub.ico" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\NpgsqlMRPProviders\NpgsqlMRPProviders.csproj"> <ProjectReference Include="..\NpgsqlMRPProviders\NpgsqlMRPProviders.csproj">

@ -1,3 +1,22 @@
2015-12-09 Paul Schneider <paul@pschneider.fr>
* 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
2015-12-03 Paul Schneider <paul@pschneider.fr> 2015-12-03 Paul Schneider <paul@pschneider.fr>
* LocalizedText.resx: * LocalizedText.resx:

@ -24,6 +24,9 @@ using System.Configuration;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.Collections; using System.Collections;
using System.Reflection; using System.Reflection;
using System.Collections.Generic;
using System.Web;
using System.Linq;
namespace Yavsc.Model.Circles namespace Yavsc.Model.Circles
{ {
@ -75,6 +78,38 @@ namespace Yavsc.Model.Circles
} }
} }
/// <summary>
/// List the specified user.
/// </summary>
/// <param name="user">User.</param>
public static IEnumerable<CircleBase> List(string user)
{
if (user == null)
user = HttpContext.Current.User.Identity.Name;
return DefaultProvider.List (user);
}
/// <summary>
/// Circles the specified user and relation.
/// </summary>
/// <param name="user">User.</param>
/// <param name="relation">Relation.</param>
public static string[] Circles(string relation, string user = null )
{
if (user == null)
user = HttpContext.Current.User.Identity.Name;
return DefaultProvider.Circles (user, relation);
}
/// <summary>
/// Lists the available circles.
/// </summary>
/// <returns>The available circles.</returns>
/// <param name="user">User.</param>
public static string[] ListAvailableCircles (string user = null )
{
if (user == null)
user = HttpContext.Current.User.Identity.Name;
return DefaultProvider.List (user).Select (x => x.Title).ToArray();
}
} }
} }

@ -66,10 +66,15 @@ namespace Yavsc.Model.Circles
/// </summary> /// </summary>
/// <param name="id">Identifier.</param> /// <param name="id">Identifier.</param>
public abstract CircleBase Get (long id); public abstract CircleBase Get (long id);
/// <summary>
/// Gets the identifier.
/// </summary>
/// <returns>The identifier.</returns>
/// <param name="circle">Circle.</param>
/// <param name="username">Username.</param>
public abstract long GetId (string circle, string username); public abstract long GetId (string circle, string username);
/// <summary> /// <summary>
/// List circle's user. /// List user's circles.
/// </summary> /// </summary>
public abstract IEnumerable<CircleBase> List(string user); public abstract IEnumerable<CircleBase> List(string user);
@ -81,6 +86,8 @@ namespace Yavsc.Model.Circles
/// <param name="member">Username to look for in the circles</param> /// <param name="member">Username to look for in the circles</param>
public abstract bool Matches(long [] circle_ids, string member); public abstract bool Matches(long [] circle_ids, string member);
public abstract string [] Circles(string ownername, string username);
/// <summary> /// <summary>
/// Removes the membership. /// Removes the membership.
/// </summary> /// </summary>

@ -6,6 +6,7 @@ using Yavsc.Model.FileSystem;
using System.Web; using System.Web;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Reflection;
namespace Yavsc.Model.FrontOffice namespace Yavsc.Model.FrontOffice
@ -13,7 +14,7 @@ namespace Yavsc.Model.FrontOffice
/// <summary> /// <summary>
/// Commande. /// Commande.
/// </summary> /// </summary>
public class Command public abstract class Command
{ {
/// <summary> /// <summary>
/// Gets or sets the creation date. /// Gets or sets the creation date.
@ -55,12 +56,13 @@ namespace Yavsc.Model.FrontOffice
public Command() public Command()
{ {
} }
/// <summary> /// <summary>
/// Froms the post. /// Froms the post.
/// </summary> /// </summary>
/// <param name="collection">Collection.</param> /// <param name="collection">Collection.</param>
/// <param name="files">Files.</param> /// <param name="files">Files.</param>
public void FromPost(NameValueCollection collection, NameObjectCollectionBase files) private void FromPost(NameValueCollection collection, NameObjectCollectionBase files)
{ {
// string catref=collection["catref"]; // Catalog Url from which formdata has been built // string catref=collection["catref"]; // Catalog Url from which formdata has been built
ProductRef=collection["ref"]; // Required product reference ProductRef=collection["ref"]; // Required product reference
@ -83,11 +85,25 @@ namespace Yavsc.Model.FrontOffice
/// </summary> /// </summary>
/// <param name="collection">Collection.</param> /// <param name="collection">Collection.</param>
/// <param name="files">Files.</param> /// <param name="files">Files.</param>
public Command (NameValueCollection collection, NameObjectCollectionBase files) public static Command CreateCommand (NameValueCollection collection, NameObjectCollectionBase files)
{ {
FromPost (collection, files); var cmd = CreateCommand (collection ["type"]);
cmd.FromPost (collection, files);
return cmd;
} }
/// <summary>
/// Creates the command.
/// </summary>
/// <returns>The command.</returns>
/// <param name="className">Class name.</param>
public static Command CreateCommand (string className)
{
var type = Type.GetType (className);
ConstructorInfo ci = type.GetConstructor(new Type[]{});
var cmd = ci.Invoke (new object[]{}) as Command;
return cmd;
}
} }
} }

@ -76,6 +76,12 @@ namespace Yavsc.Model {
} }
} }
public static string BillSourceCode {
get {
return ResourceManager.GetString("BillSourceCode", resourceCulture);
}
}
public static string access_denied { public static string access_denied {
get { get {
return ResourceManager.GetString("access_denied", resourceCulture); return ResourceManager.GetString("access_denied", resourceCulture);
@ -88,9 +94,15 @@ namespace Yavsc.Model {
} }
} }
public static string DuplicateEmail { public static string MEACode {
get { get {
return ResourceManager.GetString("DuplicateEmail", resourceCulture); return ResourceManager.GetString("MEACode", resourceCulture);
}
}
public static string from {
get {
return ResourceManager.GetString("from", resourceCulture);
} }
} }
@ -136,9 +148,9 @@ namespace Yavsc.Model {
} }
} }
public static string DoSpecifyCircles { public static string DoAnEstimate {
get { get {
return ResourceManager.GetString("DoSpecifyCircles", resourceCulture); return ResourceManager.GetString("DoAnEstimate", resourceCulture);
} }
} }
@ -148,6 +160,12 @@ namespace Yavsc.Model {
} }
} }
public static string NoSkillforthisactivity {
get {
return ResourceManager.GetString("NoSkillforthisactivity", resourceCulture);
}
}
public static string was_added_to_the_empty_role { public static string was_added_to_the_empty_role {
get { get {
return ResourceManager.GetString("was_added_to_the_empty_role", resourceCulture); return ResourceManager.GetString("was_added_to_the_empty_role", resourceCulture);
@ -268,6 +286,30 @@ namespace Yavsc.Model {
} }
} }
public static string Catalog {
get {
return ResourceManager.GetString("Catalog", resourceCulture);
}
}
public static string SubmitChanges {
get {
return ResourceManager.GetString("SubmitChanges", resourceCulture);
}
}
public static string ThisPerformerGivesAccessToHisCalendarAndSeemsToBeAvailableThis {
get {
return ResourceManager.GetString("ThisPerformerGivesAccessToHisCalendarAndSeemsToBeAvailableThis", resourceCulture);
}
}
public static string ThisPerformerGivesAccessToHisCalendarAndItAppearsHeShouldNotBeAvailableThis {
get {
return ResourceManager.GetString("ThisPerformerGivesAccessToHisCalendarAndItAppearsHeShouldNotBeAvailableThis", resourceCulture);
}
}
public static string none { public static string none {
get { get {
return ResourceManager.GetString("none", resourceCulture); return ResourceManager.GetString("none", resourceCulture);
@ -304,9 +346,9 @@ namespace Yavsc.Model {
} }
} }
public static string Google_error { public static string Home {
get { get {
return ResourceManager.GetString("Google_error", resourceCulture); return ResourceManager.GetString("Home", resourceCulture);
} }
} }
@ -322,9 +364,9 @@ namespace Yavsc.Model {
} }
} }
public static string Skills { public static string Posted {
get { get {
return ResourceManager.GetString("Skills", resourceCulture); return ResourceManager.GetString("Posted", resourceCulture);
} }
} }
@ -376,9 +418,9 @@ namespace Yavsc.Model {
} }
} }
public static string hidden { public static string Icons_made_by {
get { get {
return ResourceManager.GetString("hidden", resourceCulture); return ResourceManager.GetString("Icons_made_by", resourceCulture);
} }
} }
@ -412,6 +454,12 @@ namespace Yavsc.Model {
} }
} }
public static string AboutContent {
get {
return ResourceManager.GetString("AboutContent", resourceCulture);
}
}
public static string YourNeed { public static string YourNeed {
get { get {
return ResourceManager.GetString("YourNeed", resourceCulture); return ResourceManager.GetString("YourNeed", resourceCulture);
@ -460,9 +508,9 @@ namespace Yavsc.Model {
} }
} }
public static string MEACode { public static string Google_error {
get { get {
return ResourceManager.GetString("MEACode", resourceCulture); return ResourceManager.GetString("Google_error", resourceCulture);
} }
} }
@ -478,9 +526,9 @@ namespace Yavsc.Model {
} }
} }
public static string Logout { public static string About {
get { get {
return ResourceManager.GetString("Logout", resourceCulture); return ResourceManager.GetString("About", resourceCulture);
} }
} }
@ -496,12 +544,6 @@ namespace Yavsc.Model {
} }
} }
public static string ThisPerformerGivesAccessToHisCalendarAndSeemsToBeAvailable {
get {
return ResourceManager.GetString("ThisPerformerGivesAccessToHisCalendarAndSeemsToBeAvailable", resourceCulture);
}
}
public static string Offline { public static string Offline {
get { get {
return ResourceManager.GetString("Offline", resourceCulture); return ResourceManager.GetString("Offline", resourceCulture);
@ -526,6 +568,18 @@ namespace Yavsc.Model {
} }
} }
public static string YourEstimates {
get {
return ResourceManager.GetString("YourEstimates", resourceCulture);
}
}
public static string Name {
get {
return ResourceManager.GetString("Name", resourceCulture);
}
}
public static string Non_existent_user { public static string Non_existent_user {
get { get {
return ResourceManager.GetString("Non_existent_user", resourceCulture); return ResourceManager.GetString("Non_existent_user", resourceCulture);
@ -586,9 +640,15 @@ namespace Yavsc.Model {
} }
} }
public static string UsersInRole { public static string User_List {
get { get {
return ResourceManager.GetString("UsersInRole", resourceCulture); return ResourceManager.GetString("User_List", resourceCulture);
}
}
public static string SiteSkills {
get {
return ResourceManager.GetString("SiteSkills", resourceCulture);
} }
} }
@ -610,9 +670,15 @@ namespace Yavsc.Model {
} }
} }
public static string Name { public static string EndDate {
get { get {
return ResourceManager.GetString("Name", resourceCulture); return ResourceManager.GetString("EndDate", resourceCulture);
}
}
public static string Logout {
get {
return ResourceManager.GetString("Logout", resourceCulture);
} }
} }
@ -622,15 +688,15 @@ namespace Yavsc.Model {
} }
} }
public static string ThisPerformerGivesAccessToHisCalendarAndItAppearsHeShouldNotBeAvailable { public static string is_licensed_by {
get { get {
return ResourceManager.GetString("ThisPerformerGivesAccessToHisCalendarAndItAppearsHeShouldNotBeAvailable", resourceCulture); return ResourceManager.GetString("is_licensed_by", resourceCulture);
} }
} }
public static string User_List { public static string Edited {
get { get {
return ResourceManager.GetString("User_List", resourceCulture); return ResourceManager.GetString("Edited", resourceCulture);
} }
} }
@ -640,9 +706,15 @@ namespace Yavsc.Model {
} }
} }
public static string Home { public static string hidden {
get { get {
return ResourceManager.GetString("Home", resourceCulture); return ResourceManager.GetString("hidden", resourceCulture);
}
}
public static string Skills {
get {
return ResourceManager.GetString("Skills", resourceCulture);
} }
} }
@ -652,15 +724,21 @@ namespace Yavsc.Model {
} }
} }
public static string DuplicateEmail {
get {
return ResourceManager.GetString("DuplicateEmail", resourceCulture);
}
}
public static string BillUpdated { public static string BillUpdated {
get { get {
return ResourceManager.GetString("BillUpdated", resourceCulture); return ResourceManager.GetString("BillUpdated", resourceCulture);
} }
} }
public static string NoSkillforthisactivity { public static string BillAccessControl {
get { get {
return ResourceManager.GetString("NoSkillforthisactivity", resourceCulture); return ResourceManager.GetString("BillAccessControl", resourceCulture);
} }
} }
@ -754,9 +832,21 @@ namespace Yavsc.Model {
} }
} }
public static string EndDate { public static string DoSpecifyCircles {
get { get {
return ResourceManager.GetString("EndDate", resourceCulture); return ResourceManager.GetString("DoSpecifyCircles", resourceCulture);
}
}
public static string Search {
get {
return ResourceManager.GetString("Search", resourceCulture);
}
}
public static string UsersInRole {
get {
return ResourceManager.GetString("UsersInRole", resourceCulture);
} }
} }

@ -70,9 +70,15 @@ namespace Yavsc.Model {
} }
} }
public static string BookingTitleArtiste { public static string Basket {
get { get {
return ResourceManager.GetString("BookingTitleArtiste", resourceCulture); return ResourceManager.GetString("Basket", resourceCulture);
}
}
public static string BillSourceCode {
get {
return ResourceManager.GetString("BillSourceCode", resourceCulture);
} }
} }
@ -88,9 +94,15 @@ namespace Yavsc.Model {
} }
} }
public static string PreferedDate { public static string MEACode {
get { get {
return ResourceManager.GetString("PreferedDate", resourceCulture); return ResourceManager.GetString("MEACode", resourceCulture);
}
}
public static string from {
get {
return ResourceManager.GetString("from", resourceCulture);
} }
} }
@ -118,9 +130,9 @@ namespace Yavsc.Model {
} }
} }
public static string Product_reference { public static string Remove {
get { get {
return ResourceManager.GetString("Product_reference", resourceCulture); return ResourceManager.GetString("Remove", resourceCulture);
} }
} }
@ -136,9 +148,9 @@ namespace Yavsc.Model {
} }
} }
public static string DoSpecifyCircles { public static string DoAnEstimate {
get { get {
return ResourceManager.GetString("DoSpecifyCircles", resourceCulture); return ResourceManager.GetString("DoAnEstimate", resourceCulture);
} }
} }
@ -148,6 +160,18 @@ namespace Yavsc.Model {
} }
} }
public static string NoSkillforthisactivity {
get {
return ResourceManager.GetString("NoSkillforthisactivity", resourceCulture);
}
}
public static string was_added_to_the_empty_role {
get {
return ResourceManager.GetString("was_added_to_the_empty_role", resourceCulture);
}
}
public static string UserNotInThisRole { public static string UserNotInThisRole {
get { get {
return ResourceManager.GetString("UserNotInThisRole", resourceCulture); return ResourceManager.GetString("UserNotInThisRole", resourceCulture);
@ -220,15 +244,15 @@ namespace Yavsc.Model {
} }
} }
public static string was_added_to_the_empty_role { public static string Title {
get { get {
return ResourceManager.GetString("was_added_to_the_empty_role", resourceCulture); return ResourceManager.GetString("Title", resourceCulture);
} }
} }
public static string ImportException { public static string Product_reference {
get { get {
return ResourceManager.GetString("ImportException", resourceCulture); return ResourceManager.GetString("Product_reference", resourceCulture);
} }
} }
@ -268,6 +292,30 @@ namespace Yavsc.Model {
} }
} }
public static string Catalog {
get {
return ResourceManager.GetString("Catalog", resourceCulture);
}
}
public static string SubmitChanges {
get {
return ResourceManager.GetString("SubmitChanges", resourceCulture);
}
}
public static string ThisPerformerGivesAccessToHisCalendarAndSeemsToBeAvailableThis {
get {
return ResourceManager.GetString("ThisPerformerGivesAccessToHisCalendarAndSeemsToBeAvailableThis", resourceCulture);
}
}
public static string BookingTitleArtiste {
get {
return ResourceManager.GetString("BookingTitleArtiste", resourceCulture);
}
}
public static string none { public static string none {
get { get {
return ResourceManager.GetString("none", resourceCulture); return ResourceManager.GetString("none", resourceCulture);
@ -298,9 +346,9 @@ namespace Yavsc.Model {
} }
} }
public static string Google_error { public static string Home {
get { get {
return ResourceManager.GetString("Google_error", resourceCulture); return ResourceManager.GetString("Home", resourceCulture);
} }
} }
@ -316,9 +364,9 @@ namespace Yavsc.Model {
} }
} }
public static string Skills { public static string Posted {
get { get {
return ResourceManager.GetString("Skills", resourceCulture); return ResourceManager.GetString("Posted", resourceCulture);
} }
} }
@ -328,9 +376,9 @@ namespace Yavsc.Model {
} }
} }
public static string Title { public static string ThisPerformerGivesAccessToHisCalendarAndItAppearsHeShouldNotBeAvailableThis {
get { get {
return ResourceManager.GetString("Title", resourceCulture); return ResourceManager.GetString("ThisPerformerGivesAccessToHisCalendarAndItAppearsHeShouldNotBeAvailableThis", resourceCulture);
} }
} }
@ -352,9 +400,9 @@ namespace Yavsc.Model {
} }
} }
public static string Modify { public static string ImportException {
get { get {
return ResourceManager.GetString("Modify", resourceCulture); return ResourceManager.GetString("ImportException", resourceCulture);
} }
} }
@ -370,9 +418,9 @@ namespace Yavsc.Model {
} }
} }
public static string hidden { public static string Icons_made_by {
get { get {
return ResourceManager.GetString("hidden", resourceCulture); return ResourceManager.GetString("Icons_made_by", resourceCulture);
} }
} }
@ -406,6 +454,12 @@ namespace Yavsc.Model {
} }
} }
public static string AboutContent {
get {
return ResourceManager.GetString("AboutContent", resourceCulture);
}
}
public static string YourNeed { public static string YourNeed {
get { get {
return ResourceManager.GetString("YourNeed", resourceCulture); return ResourceManager.GetString("YourNeed", resourceCulture);
@ -442,15 +496,21 @@ namespace Yavsc.Model {
} }
} }
public static string Modify {
get {
return ResourceManager.GetString("Modify", resourceCulture);
}
}
public static string Xshouldbeavailable { public static string Xshouldbeavailable {
get { get {
return ResourceManager.GetString("Xshouldbeavailable", resourceCulture); return ResourceManager.GetString("Xshouldbeavailable", resourceCulture);
} }
} }
public static string MEACode { public static string Google_error {
get { get {
return ResourceManager.GetString("MEACode", resourceCulture); return ResourceManager.GetString("Google_error", resourceCulture);
} }
} }
@ -484,12 +544,6 @@ namespace Yavsc.Model {
} }
} }
public static string ThisPerformerGivesAccessToHisCalendarAndSeemsToBeAvailable {
get {
return ResourceManager.GetString("ThisPerformerGivesAccessToHisCalendarAndSeemsToBeAvailable", resourceCulture);
}
}
public static string Offline { public static string Offline {
get { get {
return ResourceManager.GetString("Offline", resourceCulture); return ResourceManager.GetString("Offline", resourceCulture);
@ -514,6 +568,12 @@ namespace Yavsc.Model {
} }
} }
public static string Name {
get {
return ResourceManager.GetString("Name", resourceCulture);
}
}
public static string Non_existent_user { public static string Non_existent_user {
get { get {
return ResourceManager.GetString("Non_existent_user", resourceCulture); return ResourceManager.GetString("Non_existent_user", resourceCulture);
@ -526,6 +586,12 @@ namespace Yavsc.Model {
} }
} }
public static string PreferedDate {
get {
return ResourceManager.GetString("PreferedDate", resourceCulture);
}
}
public static string Edit { public static string Edit {
get { get {
return ResourceManager.GetString("Edit", resourceCulture); return ResourceManager.GetString("Edit", resourceCulture);
@ -568,9 +634,15 @@ namespace Yavsc.Model {
} }
} }
public static string UsersInRole { public static string User_List {
get { get {
return ResourceManager.GetString("UsersInRole", resourceCulture); return ResourceManager.GetString("User_List", resourceCulture);
}
}
public static string SiteSkills {
get {
return ResourceManager.GetString("SiteSkills", resourceCulture);
} }
} }
@ -592,9 +664,15 @@ namespace Yavsc.Model {
} }
} }
public static string Name { public static string EndDate {
get { get {
return ResourceManager.GetString("Name", resourceCulture); return ResourceManager.GetString("EndDate", resourceCulture);
}
}
public static string YourEstimates {
get {
return ResourceManager.GetString("YourEstimates", resourceCulture);
} }
} }
@ -604,15 +682,15 @@ namespace Yavsc.Model {
} }
} }
public static string ThisPerformerGivesAccessToHisCalendarAndItAppearsHeShouldNotBeAvailable { public static string is_licensed_by {
get { get {
return ResourceManager.GetString("ThisPerformerGivesAccessToHisCalendarAndItAppearsHeShouldNotBeAvailable", resourceCulture); return ResourceManager.GetString("is_licensed_by", resourceCulture);
} }
} }
public static string User_List { public static string Edited {
get { get {
return ResourceManager.GetString("User_List", resourceCulture); return ResourceManager.GetString("Edited", resourceCulture);
} }
} }
@ -622,9 +700,15 @@ namespace Yavsc.Model {
} }
} }
public static string Home { public static string hidden {
get { get {
return ResourceManager.GetString("Home", resourceCulture); return ResourceManager.GetString("hidden", resourceCulture);
}
}
public static string Skills {
get {
return ResourceManager.GetString("Skills", resourceCulture);
} }
} }
@ -640,9 +724,9 @@ namespace Yavsc.Model {
} }
} }
public static string NoSkillforthisactivity { public static string BillAccessControl {
get { get {
return ResourceManager.GetString("NoSkillforthisactivity", resourceCulture); return ResourceManager.GetString("BillAccessControl", resourceCulture);
} }
} }
@ -652,6 +736,12 @@ namespace Yavsc.Model {
} }
} }
public static string yourquerytransmitted {
get {
return ResourceManager.GetString("yourquerytransmitted", resourceCulture);
}
}
public static string Hide_source { public static string Hide_source {
get { get {
return ResourceManager.GetString("Hide_source", resourceCulture); return ResourceManager.GetString("Hide_source", resourceCulture);
@ -670,9 +760,9 @@ namespace Yavsc.Model {
} }
} }
public static string yourquerytransmitted { public static string About {
get { get {
return ResourceManager.GetString("yourquerytransmitted", resourceCulture); return ResourceManager.GetString("About", resourceCulture);
} }
} }
@ -736,21 +826,27 @@ namespace Yavsc.Model {
} }
} }
public static string EndDate { public static string DoSpecifyCircles {
get { get {
return ResourceManager.GetString("EndDate", resourceCulture); return ResourceManager.GetString("DoSpecifyCircles", resourceCulture);
} }
} }
public static string DB { public static string Search {
get { get {
return ResourceManager.GetString("DB", resourceCulture); return ResourceManager.GetString("Search", resourceCulture);
} }
} }
public static string Remove { public static string UsersInRole {
get { get {
return ResourceManager.GetString("Remove", resourceCulture); return ResourceManager.GetString("UsersInRole", resourceCulture);
}
}
public static string DB {
get {
return ResourceManager.GetString("DB", resourceCulture);
} }
} }

@ -13,46 +13,57 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="About"><value>À propos</value></data>
<data name="AboutContent"><value>Je suis développeur indépendant à Suresnes depuis quelque mois.
Je démarre une activité dans le domaine de l'edition logicielle,
et je délivre principalement des applications pour mobiles.</value></data>
<data name="additionally"><value>de plus</value></data> <data name="additionally"><value>de plus</value></data>
<data name="access_denied"><value>Accès refusé</value></data> <data name="access_denied"><value>Accès refusé</value></data>
<data name="Activities"><value>Activités</value></data> <data name="Activities"><value>Activités</value></data>
<data name="AnIMessageHasbeenSent"><value>Un message instantané a été envoyé à {0}, <data name="AnIMessageHasbeenSent"><value>Un message instantané a été envoyé à {0},
lui présentant votre demande. Vous devriez être contacté très rapidement.</value></data> lui présentant votre demande. Vous devriez être contacté très rapidement.</value></data>
<data name="available"><value>disponible</value></data> <data name="available"><value>disponible</value></data>
<data name="AuthenticatedOnly"><value>Seules les utilisateurs authentifies peuvent accèder à cette information</value></data> <data name="AuthenticatedOnly"><value>Seuls les utilisateurs authentifiés peuvent accèder à cette information.</value></data>
<data name="Basket"><value>Panier</value></data>
<data name="Bill_edition"><value>Édition d'un billet</value></data> <data name="Bill_edition"><value>Édition d'un billet</value></data>
<data name="Bill_removal"><value>Suppression d'un billet</value></data> <data name="Bill_removal"><value>Suppression d'un billet</value></data>
<data name="BillAccessControl"><value>Contrôle d'accès au Billet</value></data>
<data name="BillCreated"><value>Billet créé</value></data> <data name="BillCreated"><value>Billet créé</value></data>
<data name="BillSourceCode"><value>Code source du billet</value></data>
<data name="BillUpdated"><value>Billet mis à jour</value></data> <data name="BillUpdated"><value>Billet mis à jour</value></data>
<data name="BookingTitleArtiste"><value>Reserver les services d'un artiste</value></data> <data name="BookingTitleArtiste"><value>Reserver les services d'un artiste</value></data>
<data name="BookingTitle6829C"><value>Reserver les services d'un éditeur de logiciel</value></data> <data name="BookingTitle6829C"><value>Reserver les services d'un éditeur de logiciel</value></data>
<data name="Consultant"><value>Consultant</value></data> <data name="Catalog"><value>Catalogue</value></data>
<data name="Count"><value>Nombre</value></data>
<data name="ChooseADescription"><value>S'il vous plait, choisissez une description.</value></data> <data name="ChooseADescription"><value>S'il vous plait, choisissez une description.</value></data>
<data name="ChooseATitle"><value>S'il vous plait, choisissez un titre.</value></data> <data name="ChooseATitle"><value>S'il vous plait, choisissez un titre.</value></data>
<data name="ChooseADateInTheFutur"><value>S'il vous plait, choisissez une date dans le futur</value></data> <data name="ChooseADateInTheFutur"><value>S'il vous plait, choisissez une date dans le futur</value></data>
<data name="Ciffer"><value>Chiffre</value></data> <data name="Ciffer"><value>Chiffre</value></data>
<data name="Circles"><value>Cercles</value></data> <data name="Circles"><value>Cercles</value></data>
<data name="Consultant"><value>Consultant</value></data>
<data name="Comment"><value>Commentaire</value></data> <data name="Comment"><value>Commentaire</value></data>
<data name="Count"><value>Nombre</value></data>
<data name="Create"><value>Créer</value></data>
<data name="Date_search"><value>Demande de rendez-vous</value></data>
<data name="DB"><value>Base de données</value></data> <data name="DB"><value>Base de données</value></data>
<data name="DoAnEstimate"><value>Faire un devis</value></data>
<data name="DoComment"><value>Commenter</value></data> <data name="DoComment"><value>Commenter</value></data>
<data name="DoNotPublishMyActivity"><value>Ne pas publier mon activité</value></data> <data name="DoNotPublishMyActivity"><value>Ne pas publier mon activité</value></data>
<data name="DoSpecifyCircles"><value>S'il vous plait, spécifiez ceux de vos cercles à qui est destiné ce contenu</value></data> <data name="DoSpecifyCircles"><value>S'il vous plait, spécifiez ceux de vos cercles à qui est destiné ce contenu</value></data>
<data name="Create"><value>Créer</value></data>
<data name="Date_search"><value>Demande de rendez-vous</value></data>
<data name="DocTemplateException"><value>Une erreur est survenue à la génération de votre document</value></data> <data name="DocTemplateException"><value>Une erreur est survenue à la génération de votre document</value></data>
<data name="Description"><value>Description</value></data> <data name="Description"><value>Description</value></data>
<data name="DisplayName"><value>Nom affiché</value></data> <data name="DisplayName"><value>Nom affiché</value></data>
<data name="DoTag"><value>Tagger</value></data> <data name="DoTag"><value>Tagger</value></data>
<data name="entries"><value>entrées</value></data>
<data name="Edit"><value>Éditer</value></data> <data name="Edit"><value>Éditer</value></data>
<data name="Edited"><value>Edité</value></data>
<data name="EditRelatedSkills"><value>Editer les compétences associées</value></data> <data name="EditRelatedSkills"><value>Editer les compétences associées</value></data>
<data name="EndDate"><value>Date de fin</value></data> <data name="EndDate"><value>Date de fin</value></data>
<data name="EndHour"><value>Heure de fin</value></data> <data name="EndHour"><value>Heure de fin</value></data>
<data name="entries"><value>entrées</value></data>
<data name="Estimate_not_found"><value>Devis non trouvé</value></data> <data name="Estimate_not_found"><value>Devis non trouvé</value></data>
<data name="EventWebPage"><value>Page web de l'événement</value></data> <data name="EventWebPage"><value>Page web de l'événement</value></data>
<data name="ExistantDB"><value>Base de données éxistante</value></data> <data name="ExistantDB"><value>Base de données éxistante</value></data>
<data name="FillInAFutureDate"><value>Veuilliez, s'il vous plait, utiliser une date future.</value></data> <data name="FillInAFutureDate"><value>Veuillez, s'il vous plait, utiliser une date future.</value></data>
<data name="from"><value>provenant de</value></data>
<data name="Google_calendar"><value>Agenda Google</value></data> <data name="Google_calendar"><value>Agenda Google</value></data>
<data name="Google_error"><value>Erreur Google : {0}</value></data> <data name="Google_error"><value>Erreur Google : {0}</value></data>
<data name="Google_registration_id"><value>Identifiant d'enregistrement Google</value></data> <data name="Google_registration_id"><value>Identifiant d'enregistrement Google</value></data>
@ -61,10 +72,12 @@
<data name="Hide"><value>Cacher</value></data> <data name="Hide"><value>Cacher</value></data>
<data name="hidden"><value>caché</value></data> <data name="hidden"><value>caché</value></data>
<data name="I_understood"><value>J'ai compris</value></data> <data name="I_understood"><value>J'ai compris</value></data>
<data name="Icons_made_by"><value>Les icônes fabriqués par</value></data>
<data name="ImgLocator"><value>URI de l'image</value></data> <data name="ImgLocator"><value>URI de l'image</value></data>
<data name="ImportException"><value>Exception à l'import</value></data> <data name="ImportException"><value>Exception à l'import</value></data>
<data name="InternalServerError"><value>Erreur serveur interne</value></data> <data name="InternalServerError"><value>Erreur serveur interne</value></data>
<data name="Item_added_to_basket"><value>Article ajouté au panier</value></data> <data name="is_licensed_by"><value>sont sous licence</value></data>
<data name="Item_added_to_basket"><value>Article ajouté au panier.</value></data>
<data name="Location"><value>Lieu</value></data> <data name="Location"><value>Lieu</value></data>
<data name="Logout"><value>Déconnection</value></data> <data name="Logout"><value>Déconnection</value></data>
<data name="ManagedSiteSkills"><value>Compétences gérée sur ce site</value></data> <data name="ManagedSiteSkills"><value>Compétences gérée sur ce site</value></data>
@ -93,6 +106,7 @@
<data name="Person"><value>Personne</value></data> <data name="Person"><value>Personne</value></data>
<data name="Photo"><value>Photo</value></data> <data name="Photo"><value>Photo</value></data>
<data name="PhotoUpdated"><value>Photo mise à jour</value></data> <data name="PhotoUpdated"><value>Photo mise à jour</value></data>
<data name="Posted"><value>Posté</value></data>
<data name="PreferedDate"><value>Date souhaitée</value></data> <data name="PreferedDate"><value>Date souhaitée</value></data>
<data name="Preview"><value>Prévisualiser</value><comment>Prévisualiser le document</comment></data> <data name="Preview"><value>Prévisualiser</value><comment>Prévisualiser le document</comment></data>
<data name="Profile_edition"><value>Édition du profile</value></data> <data name="Profile_edition"><value>Édition du profile</value></data>
@ -105,17 +119,20 @@
<data name="Remember_me"><value>Se souvenir du mot de passe</value></data> <data name="Remember_me"><value>Se souvenir du mot de passe</value></data>
<data name="Remove"><value>Supprimer</value></data> <data name="Remove"><value>Supprimer</value></data>
<data name="role_created"><value>Rôle créé</value></data> <data name="role_created"><value>Rôle créé</value></data>
<data name="Search"><value>Chercher</value></data>
<data name="SiteSkills"><value>Talents/Compétences/Spécialités gérés sur ce site</value></data>
<data name="Skill"><value>Compétence</value></data> <data name="Skill"><value>Compétence</value></data>
<data name="Skills"><value>Talents/Compétences/Spécialités</value></data> <data name="Skills"><value>Talents/Compétences/Spécialités</value></data>
<data name="StartDate"><value>Date de début</value></data> <data name="StartDate"><value>Date de début</value></data>
<data name="StartDateAfterEndDate"><value>La date de fin doit être postérieure à la date de début.</value></data> <data name="StartDateAfterEndDate"><value>La date de fin doit être postérieure à la date de début.</value></data>
<data name="StartHour"><value>Heure de début</value></data> <data name="StartHour"><value>Heure de début</value></data>
<data name="Submit"><value>Soumettre</value></data> <data name="Submit"><value>Soumettre</value></data>
<data name="SubmitChanges"><value>Envoyer les modifications</value></data>
<data name="Tag_name"><value>Nom du tag</value></data> <data name="Tag_name"><value>Nom du tag</value></data>
<data name="Tex_version"><value>Version LaTeX</value></data> <data name="Tex_version"><value>Version LaTeX</value></data>
<data name="ThisSiteUsesCookies"><value>Ce site utilise les cookies</value></data> <data name="ThisSiteUsesCookies"><value>Ce site utilise les cookies</value></data>
<data name="ThisPerformerGivesAccessToHisCalendarAndSeemsToBeAvailable"><value>Selon son calendier Google, ce perstataire est disponbile.</value></data> <data name="ThisPerformerGivesAccessToHisCalendarAndSeemsToBeAvailableThis"><value>Selon son calendier Google, ce perstataire est disponbile ce</value></data>
<data name="ThisPerformerGivesAccessToHisCalendarAndItAppearsHeShouldNotBeAvailable"><value>Selon son calendier Google, ce perstataire pourrait ne pas être disponible.</value></data> <data name="ThisPerformerGivesAccessToHisCalendarAndItAppearsHeShouldNotBeAvailableThis"><value>Selon son calendier Google, ce perstataire pourrait ne pas être disponible ce</value></data>
<data name="ThisPerformerDoesntGiveAccessToHisCalendar"><value>Ce prestataire n'a pas mis de calendrier à disposition.</value></data> <data name="ThisPerformerDoesntGiveAccessToHisCalendar"><value>Ce prestataire n'a pas mis de calendrier à disposition.</value></data>
<data name="Title"><value>Titre</value></data> <data name="Title"><value>Titre</value></data>
<data name="Unitary_cost"><value>Coût unitaire</value></data> <data name="Unitary_cost"><value>Coût unitaire</value></data>
@ -132,8 +149,9 @@
<data name="Xshouldbeavailable"><value>Au vu de son calendrier, <data name="Xshouldbeavailable"><value>Au vu de son calendrier,
{0} devrait être disponible pour ce rendez-vous</value></data> {0} devrait être disponible pour ce rendez-vous</value></data>
<data name="younotadmin"><value>Vous n'êtes pas administrateur</value></data> <data name="younotadmin"><value>Vous n'êtes pas administrateur</value></data>
<data name="YourEstimates"><value>Vos Devis</value></data>
<data name="YourMEACode"><value>Votre activité</value></data> <data name="YourMEACode"><value>Votre activité</value></data>
<data name="YourNeed"><value>Votre besoin</value></data> <data name="YourNeed"><value>Votre besoin</value></data>
<data name="yourquerytransmitted"><value>Votre demande a été transmise</value></data> <data name="yourquerytransmitted"><value>Votre demande a été transmise</value></data>
<data name="YourSkills"><value>Your skills, your special fields, the scope of your activities</value></data> <data name="YourSkills"><value>Vos talents, vos spécialités, le domaine de vos activités</value></data>
</root> </root>

@ -13,6 +13,9 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="About"><value>About</value></data>
<data name="AboutContent"><value>I'm a french developer base in Suresnes, near Paris,
I mainly release some mobile applications for mobiles.</value></data>
<data name="additionally"><value>additionally</value></data> <data name="additionally"><value>additionally</value></data>
<data name="access_denied"><value>Access denied</value></data> <data name="access_denied"><value>Access denied</value></data>
<data name="Activities"><value>Activities</value></data> <data name="Activities"><value>Activities</value></data>
@ -22,25 +25,28 @@
<data name="AuthenticatedOnly"><value>You must be authenticated in order to access this information</value></data> <data name="AuthenticatedOnly"><value>You must be authenticated in order to access this information</value></data>
<data name="Bill_edition"><value>Bill edition</value></data> <data name="Bill_edition"><value>Bill edition</value></data>
<data name="Bill_removal"><value>Bill removal</value></data> <data name="Bill_removal"><value>Bill removal</value></data>
<data name="BillAccessControl"><value>Bill access control</value></data>
<data name="BillCreated"><value>Bill created</value></data> <data name="BillCreated"><value>Bill created</value></data>
<data name="BillSourceCode"><value>Bill source code</value></data>
<data name="BillUpdated"><value>Bill updated</value></data> <data name="BillUpdated"><value>Bill updated</value></data>
<data name="BookingTitleArtiste"><value>Book an artiste</value></data> <data name="BookingTitleArtiste"><value>Book an artiste</value></data>
<data name="BookingTitle6829C"><value>Book a software editor</value></data> <data name="BookingTitle6829C"><value>Book a software editor</value></data>
<data name="Catalog"><value>Catalog</value></data>
<data name="Create"><value>Create</value></data> <data name="Create"><value>Create</value></data>
<data name="Count"><value>Count</value></data> <data name="Count"><value>Count</value></data>
<data name="ChooseADescription"><value>Please, choose a description</value></data> <data name="ChooseADescription"><value>Please, choose a description</value></data>
<data name="ChooseATitle"><value>Please, choose a title</value></data> <data name="ChooseATitle"><value>Please, choose a title</value></data>
<data name="ChooseADateInTheFutur"><value>Please, Choose A Date In The Futur</value></data> <data name="ChooseADateInTheFutur"><value>Please, Choose A Date In The Futur</value></data>
<data name="Ciffer"><value>Ciffer</value></data> <data name="Ciffer"><value>Ciffer</value></data>
<data name="Circles"><value>Circles</value></data> <data name="Circles"><value>Circles</value></data>
<data name="Consultant"><value>Consultant</value></data>
<data name="Comment"><value>Comment</value></data> <data name="Comment"><value>Comment</value></data>
<data name="Consultant"><value>Consultant</value></data>
<data name="Count"><value>Count</value></data> <data name="Count"><value>Count</value></data>
<data name="Date_search"><value>Date search</value></data>
<data name="DB"><value>Data base</value></data> <data name="DB"><value>Data base</value></data>
<data name="Date_search"><value>Rendez-vous query</value></data>
<data name="Description"><value>Description</value></data> <data name="Description"><value>Description</value></data>
<data name="DisplayName"><value>Display Name</value></data> <data name="DisplayName"><value>Display Name</value></data>
<data name="DoAnEstimate"><value>Do an estimate</value></data>
<data name="DocTemplateException"><value>Exception occured when rendering your document</value></data> <data name="DocTemplateException"><value>Exception occured when rendering your document</value></data>
<data name="DoNotPublishMyActivity"><value>Do Not Publish My Activity</value></data> <data name="DoNotPublishMyActivity"><value>Do Not Publish My Activity</value></data>
<data name="DoSpecifyCircles"><value>Please, specify circles for audiance</value></data> <data name="DoSpecifyCircles"><value>Please, specify circles for audiance</value></data>
@ -48,26 +54,30 @@
<data name="DuplicateEmail"><value>This email adress is already used ({0}).</value></data> <data name="DuplicateEmail"><value>This email adress is already used ({0}).</value></data>
<data name="DuplicateUserName"><value>This user name is already used ({0}).</value></data> <data name="DuplicateUserName"><value>This user name is already used ({0}).</value></data>
<data name="Edit"><value>Edit</value></data> <data name="Edit"><value>Edit</value></data>
<data name="Edited"><value>Edited</value></data>
<data name="EditRelatedSkills"><value>Edit related skills</value></data> <data name="EditRelatedSkills"><value>Edit related skills</value></data>
<data name="EndHour"><value>End hour</value></data> <data name="EndHour"><value>End hour</value></data>
<data name="EndDate"><value>End date</value></data> <data name="EndDate"><value>End date</value></data>
<data name="entries"><value>entries</value></data>
<data name="Estimate_not_found"><value>Estimate not found</value></data> <data name="Estimate_not_found"><value>Estimate not found</value></data>
<data name="EventWebPage"><value>Event Web page</value></data> <data name="EventWebPage"><value>Event Web page</value></data>
<data name="ExistantDB"><value>Existant data base</value></data> <data name="ExistantDB"><value>Existant data base</value></data>
<data name="FillInAFutureDate"><value>Please, use a date in the future as starting date.</value></data> <data name="FillInAFutureDate"><value>Please, use a date in the future as starting date.</value></data>
<data name="from"><value>from</value></data>
<data name="Home"><value>Home</value></data> <data name="Home"><value>Home</value></data>
<data name="Hide"><value>Hide</value></data> <data name="Hide"><value>Hide</value></data>
<data name="hidden"><value>hidden</value></data> <data name="hidden"><value>hidden</value></data>
<data name="Hide_source"><value>Hide the bill source text</value></data> <data name="Hide_source"><value>Hide the bill source text</value></data>
<data name="entries"><value>entries</value></data>
<data name="Google_calendar"><value>Google calendar</value></data> <data name="Google_calendar"><value>Google calendar</value></data>
<data name="Google_calendar_"><value>Google calendar</value></data> <data name="Google_calendar_"><value>Google calendar</value></data>
<data name="Google_error"><value>Google error : {0}</value></data> <data name="Google_error"><value>Google error : {0}</value></data>
<data name="Google_registration_id"><value>Google registration id</value></data> <data name="Google_registration_id"><value>Google registration id</value></data>
<data name="I_understood"><value>I understood</value></data> <data name="I_understood"><value>I understood</value></data>
<data name="Icons_made_by"><value>Icons made by</value></data>
<data name="InternalServerError"><value>Internal Server Error</value></data> <data name="InternalServerError"><value>Internal Server Error</value></data>
<data name="ImgLocator"><value>Image URI</value></data> <data name="ImgLocator"><value>Image URI</value></data>
<data name="ImportException"><value>Exception at importing</value></data> <data name="ImportException"><value>Exception at importing</value></data>
<data name="is_licensed_by"><value>is licensed by</value></data>
<data name="Item_added_to_basket"><value>Item added to basket</value></data> <data name="Item_added_to_basket"><value>Item added to basket</value></data>
<data name="Location"><value>Location</value></data> <data name="Location"><value>Location</value></data>
<data name="Logout"><value>Logout</value></data> <data name="Logout"><value>Logout</value></data>
@ -97,6 +107,7 @@
<data name="Person"><value>Person</value></data> <data name="Person"><value>Person</value></data>
<data name="Photo"><value>Photo</value></data> <data name="Photo"><value>Photo</value></data>
<data name="PhotoUpdated"><value>Photo updated</value></data> <data name="PhotoUpdated"><value>Photo updated</value></data>
<data name="Posted"><value>Posted</value></data>
<data name="PreferedDate"><value>Prefered date</value></data> <data name="PreferedDate"><value>Prefered date</value></data>
<data name="Preview"><value>Preview</value><comment>comment on preview</comment></data> <data name="Preview"><value>Preview</value><comment>comment on preview</comment></data>
<data name="Private_circle"><value>Private circle</value></data> <data name="Private_circle"><value>Private circle</value></data>
@ -110,18 +121,21 @@
<data name="Remove"><value>Remove</value></data> <data name="Remove"><value>Remove</value></data>
<data name="Role"><value>Role</value></data> <data name="Role"><value>Role</value></data>
<data name="role_created"><value>role created</value></data> <data name="role_created"><value>role created</value></data>
<data name="Search"><value>Search</value></data>
<data name="SiteSkills"><value>Talents/Compétences/Spécialités gérés sur ce site</value></data>
<data name="Skill"><value>Skill</value></data> <data name="Skill"><value>Skill</value></data>
<data name="Skills"><value>Skills</value></data> <data name="Skills"><value>Skills</value></data>
<data name="StartDate"><value>Start date</value></data> <data name="StartDate"><value>Start date</value></data>
<data name="Submit"><value>Submit</value></data> <data name="Submit"><value>Submit</value></data>
<data name="SubmitChanges"><value>Submit changes</value></data>
<data name="StartHour"><value>Start hour</value></data> <data name="StartHour"><value>Start hour</value></data>
<data name="StartDate"><value>Start date</value></data> <data name="StartDate"><value>Start date</value></data>
<data name="StartDateAfterEndDate"><value>The ending date must be later than the starting one.</value></data> <data name="StartDateAfterEndDate"><value>The ending date must be later than the starting one.</value></data>
<data name="Tag_name"><value>Tag name</value></data> <data name="Tag_name"><value>Tag name</value></data>
<data name="Tex_version"><value>LaTeX version</value></data> <data name="Tex_version"><value>LaTeX version</value></data>
<data name="ThisSiteUsesCookies"><value>This site uses cookies</value></data> <data name="ThisSiteUsesCookies"><value>This site uses cookies</value></data>
<data name="ThisPerformerGivesAccessToHisCalendarAndSeemsToBeAvailable"><value>ThisPerformerGivesAccessToHisCalendarAndSeemsToBeAvailable</value></data> <data name="ThisPerformerGivesAccessToHisCalendarAndSeemsToBeAvailableThis"><value>ThisPerformer Gives access to his calendar and seems to be available this</value></data>
<data name="ThisPerformerGivesAccessToHisCalendarAndItAppearsHeShouldNotBeAvailable"><value>ThisPerformerGivesAccessToHisCalendarAndItAppearsHeShouldNotBeAvailable</value></data> <data name="ThisPerformerGivesAccessToHisCalendarAndItAppearsHeShouldNotBeAvailableThis"><value>This performer gives access to his calendar and it appears he should not be available this</value></data>
<data name="ThisPerformerDoesntGiveAccessToHisCalendar"><value>ThisPerformerDoesntGiveAccessToHisCalendar</value></data> <data name="ThisPerformerDoesntGiveAccessToHisCalendar"><value>ThisPerformerDoesntGiveAccessToHisCalendar</value></data>
<data name="Title"><value>Title</value></data> <data name="Title"><value>Title</value></data>
<data name="Unitary_cost"><value>Unitary_cost</value></data> <data name="Unitary_cost"><value>Unitary_cost</value></data>
@ -138,9 +152,10 @@
<data name="Xshouldbeavailable"><value>regarding his calendar, <data name="Xshouldbeavailable"><value>regarding his calendar,
{0} should be available for this booking</value></data> {0} should be available for this booking</value></data>
<data name="younotadmin"><value>You're not administrator</value></data> <data name="younotadmin"><value>You're not administrator</value></data>
<data name="YourEstimates"><value>Your estimates</value></data>
<data name="YourMEACode"><value>Your activity</value></data> <data name="YourMEACode"><value>Your activity</value></data>
<data name="YourNeed"><value>Your need</value></data> <data name="YourNeed"><value>Your need</value></data>
<data name="YourSkills"><value>Vos talents, vos spécialités, le domaine de vos activités</value></data>
<data name="yourquerytransmitted"><value>your query has been transmitted</value></data> <data name="yourquerytransmitted"><value>your query has been transmitted</value></data>
<data name="YourSkills"><value>Your skills, your special fields, the scope of your activities</value></data>
</root> </root>

@ -87,7 +87,7 @@ namespace Yavsc.Model.WorkFlow
/// </summary> /// </summary>
/// <returns>The estimate statuses.</returns> /// <returns>The estimate statuses.</returns>
/// <param name="estid">Estid.</param> /// <param name="estid">Estid.</param>
StatusChange[] GetEstimateStatuses (long estid); /// <summary> StatusChange[] GetEstimateStatuses (long estid);
/// <summary> /// <summary>
/// Gets the estimates. /// Gets the estimates.
@ -99,8 +99,9 @@ namespace Yavsc.Model.WorkFlow
/// <summary> /// <summary>
/// Registers the activity. /// Registers the activity.
/// </summary> /// </summary>
/// <param name="activity">Activity.</param> /// <param name="activityName">Activity name.</param>
/// <param name="code">Code.</param> /// <param name="meacode">Meacode.</param>
/// <param name="comment">Comment.</param>
void RegisterActivity (string activityName, string meacode, string comment); void RegisterActivity (string activityName, string meacode, string comment);
/// <summary> /// <summary>

Loading…