Thème clair opé, WIP circles

* animate.css: animations css

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

* links.css: WIP liens thème sombre

* GitHub.ico: un petit merci à GitHub

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

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

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

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

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

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

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

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

* NpgsqlBlogProvider.csproj: .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* Index.aspx: ne fait rien

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

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

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

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

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

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

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

* IContentProvider.cs: doc xml

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

View file

@ -39,7 +39,7 @@ namespace Yavsc.ApiControllers
public long Create(NameValueCollection cmdParams)
{
// 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);
return cmd.Id;
}

3273
web/App_Themes/animate.css vendored Normal file

File diff suppressed because it is too large Load diff

View file

@ -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);
}

View file

@ -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 {
background-color: grey;
color: #303030;
font-family: 'Open Sans', sans-serif;
background-color: white;
color: black;
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; }
/* Start by setting display:none to make this hidden.
@ -21,68 +24,79 @@ body {
}
input, textarea, checkbox {
color: #FFA0A0;
background-color: black;
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 {
background: url("/App_Themes/images/live-concert-388160_1280.jpg") 50% 0 repeat fixed;
}
header { float: left; }
#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 {
background: url("/App_Themes/images/live-concert-388160_1280.jpg") 50% 10em repeat fixed ;
}
nav li { display: inline-block; }
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 {
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 {
background-color: rgba(240,240,240,.5);
legend, .skillname {
background-color: rgba(240,240,240,.8);
}
#copyr { background-color: rgba(250,250,250,.8); }
#copyr { }
#gspacer {
background-color: rgba(209,209,209,.8); }
form {
background-color: rgba(150,150,256,0.8);
}
fieldset {
background-color: rgba(216,216,256,0.8);
fieldset, .performer {
background-color: rgba(216,216,216,0.8);
}
h1 {
background-color: rgba(256,256,256,.2);
padding: 1em;
color:white;
transition: color 1s;
}
.postpreview {
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 {
background-color: rgba(256,256,256,0.8);
}
.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 {
color: black;
background-color: rgba(220,220,220,.8);
}
.panel,.bshpanel, aside {
.panel,.bigpanel, aside {
background-color: rgba(200,200,200,.8);
}
@ -91,6 +105,7 @@ footer a {
}
.editable {
border: dashed rgb(200,200,256) 2px;
background-color: rgba(256,256,256,.8);
}
.notification {
@ -102,7 +117,7 @@ footer a {
}
.error, #error {
color: #f88;
background-color: rgba(256,.5);
background-color: rgba(256,0,0,.5);
}
.validation-summary-errors{
color: #f88;
@ -118,79 +133,87 @@ ul.preview li:nth-child(n) {
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 {
background-color:rgba(184,180,132,0.9);
}
input:hover, textarea:hover {
color: white;
background-color:rgba(164,164,164,0.8);
input:hover, textarea:hover {
color: black;
background-color: rgba(256,256,256,.8);
}
.code {
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; }
.field-validation-error { color: red; }
@media all and (max-width: 640px) {
#logo {
background: url("/App_Themes/images/logo.xs.png") 0 0 no-repeat fixed;
}
header {
background: url("/App_Themes/images/live-concert-388160_1280.s.jpg") 50% 0 repeat fixed;
}
nav {
background: url("/App_Themes/images/live-concert-388160_1280.s.jpg") 50% 10% repeat fixed ;
}
main {
background: url("/App_Themes/images/musician-923526_1.nbbi.xs.jpg") 50% 20em repeat fixed ;
}
footer {
background: url("/App_Themes/images/live-concert-388160_1280.s.jpg") 50% 90% repeat fixed ;
}
}
@media all and (max-width: 350px) {
#logo {
background: url("/App_Themes/images/logo.xxs.png") 0 0 no-repeat fixed;
}
header {
background: url("/App_Themes/images/live-concert-388160_1280.xxs.jpg") -1em -1em repeat fixed;
}
nav {
background: url("/App_Themes/images/live-concert-388160_1280.xxs.jpg") 50% 10% repeat fixed ;
}
main {
background: url("/App_Themes/images/musician-923526_1.nbbi.xxs.jpg") 50% 20em repeat fixed ;
}
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;
}
}

View file

@ -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;}
}

View file

@ -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 {
background-color: rgba(16,16,64,0.8);
@ -21,13 +38,8 @@ body {
.rate:hover { border-color: green;
background-color:rgba(30,0,124,0.9); }
input, textarea, checkbox {
color: #FFFFA0;
background-color: black;
}
header {
background: url("http://s448140597.onlinehome.us/wp-content/uploads/2014/12/project-management1.jpg") -20em -20em repeat fixed;
}
header h1, header a {
@ -60,7 +72,16 @@ legend {
#gspacer {
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 {
background-color: rgba(0,0,32,0.8);
}
@ -70,12 +91,12 @@ legend {
}
.hiddenpost { background-color: rgba(16,16,16,0.5); }
.panel, .spanel, .bshpanel, .xspanel, .xxspanel, aside {
aside {
background-color: rgba(20,20,20,.6);
border-color: rgb(128,128,128);
border-style: solid;
border-width: 1px;
padding: 1em;
}
.usertitleref {
@ -90,15 +111,19 @@ legend {
border-color: green ;
}
.dirty {
background-color: rgba(128,128,0,0.5);
background-color: rgba(128,0,0,0.5);
}
.error, #error {
color: #f88;
background-color: rgba(256,0,0,0.5);
background-color: rgba(128,0,0,0.5);
}
.validation-summary-errors{
color: #f88;
background-color: rgba(256,0,0,0.5);
background-color: rgba(128,0,0,0.5);
}
.validation-summary-errors{
@ -107,9 +132,18 @@ legend {
a {
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);
background-color: rgba(20,20,20,.8);
color: yellow;
@ -117,26 +151,21 @@ a {
input, select, textarea {
color: white;
background-color:rgba(0,0,64,0.8);
background-color:rgba(32,32,32,0.8);
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 {
color: white;
background-color:rgba(64,64,64,0.8);
background-color:rgb(0,0,0);
}
.code {
background-color: rgba(0,0,256,0.1);
}
.clickme {
transition: background-color 2s;
}
@media all and (max-width: 640px) {
header {
@ -223,3 +252,31 @@ header h1, header a { padding:.2em;}
.c2 { display:none; }
.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

26
web/App_Themes/links.css Normal file
View file

@ -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;}
}

View file

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

View file

@ -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>
* AccountController.cs: doc xml

View file

@ -22,6 +22,7 @@ using Yavsc.Model.Google.Api;
using System.Net;
using System.Linq;
using System.ComponentModel.DataAnnotations;
using Yavsc.Model.Circles;
namespace Yavsc.Controllers
{
@ -53,7 +54,7 @@ namespace Yavsc.Controllers
/// Estimates released to this client
/// </summary>
[Authorize]
public ActionResult Estimates (string client)
public ActionResult YourEstimates (string client)
{
var u = Membership.GetUser ();
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="submit">Submit.</param>
[Authorize]
public ActionResult Estimate (Estimate model, string submit)
public ActionResult DoAnEstimate (Estimate model, string submit)
{
string username = Membership.GetUser ().UserName;
// Obsolete, set in master page
@ -238,14 +239,23 @@ namespace Yavsc.Controllers
/// <param name="collection">Collection.</param>
[HttpPost]
[Authorize]
public ActionResult Command (FormCollection collection)
public ActionResult DoCommand (FormCollection collection)
{
try {
// Add specified product command to the basket,
// saves it in db
new Command (collection, HttpContext.Request.Files);
YavscHelpers.Notify (ViewData, LocalizedText.Item_added_to_basket);
return View (collection);
//
// * check the validity of this request
// 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) {
YavscHelpers.Notify (ViewData, "Exception:" + e.Message);
return View (collection);
@ -276,7 +286,7 @@ namespace Yavsc.Controllers
/// Skills the specified model.
/// </summary>
[Authorize (Roles = "Admin")]
public ActionResult ActivitySkills (string MEACode)
public ActionResult SiteSkills (string MEACode)
{
SetMEACodeViewData (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
var needs = SkillManager.FindSkill ("%", model.MEACode);
ViewBag.Activity = WorkFlowManager.GetActivity (model.MEACode);
var specification = new List<SkillRating> ();
ViewData ["Needs"] = needs;
if (model.Need != null) {
@ -438,6 +449,7 @@ namespace Yavsc.Controllers
}
} else
result.Add (profile.CreateAvailability (model.PreferedDate, false));
ViewData["Circles"] = CircleManager.ListAvailableCircles();
return View ("Performers", result.ToArray ());
}
if (model.Need==null) {

View file

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

View file

@ -35,8 +35,9 @@ namespace Yavsc.Helpers
/// <param name="text">Text.</param>
public static IHtmlString Translate(this HtmlHelper helper, object text)
{
// TODO notify admin from a null text here
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).
return new MvcHtmlString(helper.Encode(GetString((string)text)));
}

View file

@ -17,6 +17,8 @@ using System.Web.Mvc;
using System.Text.RegularExpressions;
using Yavsc.Model.Messaging;
using System.Linq;
using System.Reflection;
using System.Web.Routing;
namespace Yavsc.Helpers
{
@ -377,7 +379,6 @@ namespace Yavsc.Helpers
HtmlTextWriter writer = new HtmlTextWriter(strwr);
// refer to the global style
writer.AddAttribute ("rel", "stylesheet");
writer.AddAttribute ("title", theme);
writer.AddAttribute ("href",
string.Format(
"/App_Themes/{1}.css",
@ -407,6 +408,100 @@ namespace Yavsc.Helpers
}
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);
}
}
}

View file

@ -24,7 +24,7 @@ Page.StyleSheetTheme = (string) Profile.UITheme; %>
<script type="text/javascript">
var apiBaseUrl = '<%=Url.Content(Yavsc.WebApiConfig.UrlPrefixRelative)%>';
$(document).ready(function(){
$('[data-type="rate-bill"]').rate({target: 'Blogs/Rate'});
$('[data-type="rate-bill"]').rate({webTarget: 'Blogs/Rate'});
});
</script>
<%=Ajax.YaGlobalizationScript()%>
@ -36,10 +36,11 @@ var apiBaseUrl = '<%=Url.Content(Yavsc.WebApiConfig.UrlPrefixRelative)%>';
</asp:ContentPlaceHolder>
</head>
<body>
<header data-type="background" data-speed="8" >
<header >
<asp:ContentPlaceHolder ID="overHeaderOne" runat="server">
<h1><a href="<%= Url.RouteUrl("Default") %>">
<%=ViewState["orgtitle"]%></a>
<h1>
<%=ViewState["orgtitle"]%>
- <a href="<%= Url.RouteUrl("Default", new {controller = "Home" , action = "Index" }) %>"><%= YavscHelpers.SiteName %></a>
</h1>
</asp:ContentPlaceHolder>
@ -56,36 +57,39 @@ else {%> Yavsc.notice(<%=note.body%>, <%=note.click_action%>, <%=note.click_acti
</script>
<% } %>
</header>
<nav data-type="background" data-speed="5">
<nav >
<% if (Membership.GetUser()==null) { %>
<a href="<%= Url.RouteUrl("Default", new { controller = "Account", action = "Login", returnUrl=Request.Url.PathAndQuery}) %>" class="menuitem" accesskey = "C">
<i class="fa fa-sign-in">Connexion</i>
<a href="<%= Url.RouteUrl("Default", new { controller = "Account", action = "Login", returnUrl=Request.Url.PathAndQuery}) %>" class="link" accesskey = "C">
<i class="fa fa-sign-in"></i> Connexion
</a>
<% } 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" />
Vos billets
</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 %>
<span class="hint"> &Eacute;dition de votre profile </span>
</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
<span class="hint">&Eacute;dition d'un nouveau billet </span>
</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>
<% } %>
</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>
</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">
<a href="http://yavsc.pschneider.fr/Blogs/UserPost/paul/License">
@ -93,5 +97,11 @@ Vos billets
</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>
</html>

View file

@ -58,14 +58,14 @@ else {%> Yavsc.notice(<%=note.body%>, <%=note.click_action%>, <%=note.click_acti
</a>
<% } else { %>
<ul>
<li><%= Html.ActionLink("Backups","Backups") %></li>
<li><%= Html.ActionLink("Restaurations", "Restore") %></li>
<li><%= Html.ActionLink("Create backup","CreateBackup") %></li>
<li><%= Html.ActionLink("Remove user", "RemoveUser") %></li>
<li><%= Html.ActionLink("Add a Role ", "AddRole") %></li>
<li><%= Html.ActionLink("Remove role", "RemoveRoleQuery") %></li>
<li><%= Html.ActionLink("User list", "UserList") %></li>
<li><%= Html.ActionLink("Role list", "RoleList") %></li>
<li><%= Html.TranslatedActionLink("Backups","Backups") %></li>
<li><%= Html.TranslatedActionLink("Restaurations", "Restore") %></li>
<li><%= Html.TranslatedActionLink("Create backup","CreateBackup") %></li>
<li><%= Html.TranslatedActionLink("Remove user", "RemoveUser") %></li>
<li><%= Html.TranslatedActionLink("Add a Role ", "AddRole") %></li>
<li><%= Html.TranslatedActionLink("Remove role", "RemoveRoleQuery") %></li>
<li><%= Html.TranslatedActionLink("User list", "UserList") %></li>
<li><%= Html.TranslatedActionLink("Role list", "RoleList") %></li>
</ul>
<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">
<a href="http://yavsc.pschneider.fr/Blogs/UserPost/paul/License">© 2015 GNU GENERAL PUBLIC LICENSE <i>Version 3, 29 June 2007</i></a>
</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>

View file

@ -63,13 +63,8 @@ else {%> Yavsc.notice(<%=note.body%>, <%=note.click_action%>, <%=note.click_acti
<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>
</div>
<%= Html.ActionLink("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>
<% }} %>
<%= Html.TranslatedActionLink("Formulaire de contact","Contact","Home",null, new { @class="thanks" }) %>
</footer><div class="modal"></div>
</body>
</html>

View file

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

View file

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

View file

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

View file

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

48
web/Scripts/yavsc.user.js Normal file
View file

@ -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);

View file

@ -1,6 +1,6 @@
<%@ 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">
<div>
<%= Html.ActionLink("Register","Register")%></div>
<div><%= Html.ActionLink("ChangePassword","ChangePassword")%></div>
<%= Html.TranslatedActionLink("Register","Register")%></div>
<div><%= Html.TranslatedActionLink("ChangePassword","ChangePassword")%></div>
</asp:Content>

View file

@ -21,7 +21,7 @@
<input type="submit"/>
<% } %></div>
<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 class="panel">
<a href="<%= Url.RouteUrl ("Default", new { controller = "Google", action= "Login", returnUrl=ViewData["returnUrl"] }) %>" class="actionlink">

View file

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

View file

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

View file

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

View file

@ -6,14 +6,14 @@ Roles:
<ul>
<%foreach (string rolename in (string[]) Model){ %>
<li><%=Html.ActionLink(rolename,"UsersInRole", new { rolename = rolename }, new { @class="actionlink" } )%> <% if (Roles.IsUserInRole("Admin")) { %>
<%= Html.ActionLink("Supprimer","RemoveRole", new { rolename = rolename }, new { @class="actionlink" } ) %>
<li><%=Html.TranslatedActionLink(rolename,"UsersInRole", new { rolename = rolename }, new { @class="actionlink" } )%> <% if (Roles.IsUserInRole("Admin")) { %>
<%= Html.TranslatedActionLink("Supprimer","RemoveRole", new { rolename = rolename }, new { @class="actionlink" } ) %>
<% } %></li>
<% } %>
</ul>
<% 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>

View file

@ -16,8 +16,8 @@
<% if (Roles.IsUserInRole("Admin")) { %>
<%= Html.ActionLink(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(LocalizedText.Remove,"RemoveUser", new { username = user.UserName, 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><% }%>
</ul>

View file

@ -2,6 +2,6 @@
<asp:Content ID="MainContentContent" ContentPlaceHolderID="MainContent" runat="server">
<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>
</asp:Content>

View file

@ -13,28 +13,37 @@
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
<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") %>
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>
<% using(Html.BeginForm("Edit","Blogs")) { %>
<fieldset>
<legend>Contrôle d'accès au Billet</legend>
<%= Html.LabelFor(model => model.Visible) %> : <%= Html.CheckBox( "Visible" ) %>
<i id="note_visible">Note: Si un ou plusieurs cercles sont séléctionnés ici,
le billet ne sera visible qu'aux membres de ces cercles.</i>
<%= Html.ValidationMessage("Visible", "*") %>
<%= Html.LabelFor(model => model.AllowedCircles) %>
<fieldset class="mayhide">
<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>
<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.ValidationMessage("AllowedCircles", "*") %>
</fieldset>
<span id="viewsource">
<i class="fa fa-code menuitem"><%=Html.Translate("View_source")%></i></span>
<span id="hidesource" class="hidden">
<i class="fa fa-code menuitem"><%=Html.Translate("Hide_source")%></i>
</span>
<fieldset id="source" class="hidden">
<fieldset class="mayhide">
<legend><i class="fa fa-code"></i><%=Html.Translate("BillSourceCode")%></legend>
<%=Html.Hidden("Author")%>
<%=Html.Hidden("Id")%>
<%= Html.LabelFor(model => model.Photo) %>
@ -46,17 +55,11 @@ Visible: <%= Model.Visible? "oui":"non" %> <%= Html.ActionLink("Supprimer","Remo
<%=Html.TextArea("Content")%>
<%=Html.ValidationMessage("Content")%>
</fieldset>
<input type="submit" id="validate" value="Valider" class="fa fa-check menuitem">
<input type="submit" id="validate" class="actionlink">
<% } %>
<form id="frmajax">
<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>
</aside>
<span class="placard editable" for="Photo">
<img src="<%=Model.Photo%>" alt="photo" id="vphoto" >
@ -75,17 +78,6 @@ Visible: <%= Model.Visible? "oui":"non" %> <%= Html.ActionLink("Supprimer","Remo
$(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('#vtitle').hallo({
@ -125,7 +117,7 @@ jQuery('#vcontent').hallo({
'tr',
'td',
'th',
'style'
'style',
]
},
'halloblacklist': {tags: ['style']},
@ -238,6 +230,12 @@ var data = new FormData($('#frmajax').get()[0]);
</script>
<script>
$(document).ready(function(){
$('input').on('change',function(){$(this).addClass('dirty'); $('#validate').addClass('clickme');});
});
</script>
</asp:Content>

View file

@ -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" %>
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
<div>
<% 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>
<% foreach (var p in g) { %>
<div class="postpreview">
<div>
<% if (p.Photo != null ) { %>
<img src="<%=p.Photo%>" alt="<%=p.Photo%>" class="photo">
<% } %>
<p><%= Html.Markdown(p.Intro,"/bfiles/"+p.Id+"/") %></p>
<%= Html.Partial("PostActions",p)%>
</div> <% } %>
<% } else {} %>
<%= Html.Markdown(p.Intro,"/bfiles/"+p.Id+"/") %>
<%= Html.Partial("PostActions",p) %>
</div><% // we only show the first. It's a preview
break;
} %>
</div>
<% } %>
</div>

View file

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

View file

@ -2,28 +2,23 @@
<ul id="tags<%=Model.Id%>" data-postid="<%=Model.Id%>" class="editablelist ">
<% if (Model.Tags != null) {
foreach ( var tagname in Model.Tags) { %>
<li class="tagname fa fa-tag"><%=tagname%></li> <%
<li><i class="fa fa-tag"></i><%=tagname%></li><%
%><% } } %>
</ul>
<% if (Membership.GetUser()!=null) { %>
<% if (Membership.GetUser().UserName==Model.Author || Roles.IsUserInRole("Admin"))
{ // grant all permissions: to choose a given set of tags, also create some new tags %>
<span id="viewtagger<%=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%>" >
<form id="tagger<%=Model.Id%>">
<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>
<span id="Err_tag<%=Model.Id%>" class="error"></span>
<input type="text" id="newtag<%=Model.Id%>" class="taginput">
<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>
</form>
<script>

View file

@ -6,7 +6,7 @@
<asp:Content ContentPlaceHolderID="overHeaderOne" ID="header1" runat="server">
<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>
</h1>
</asp:Content>

View file

@ -1,5 +1,5 @@
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<BlogEntryCollection>" MasterPageFile="~/Models/App.master"%>
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
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>

View file

@ -13,7 +13,7 @@
<a href="<%= Url.RouteUrl("BlogByTitle", new{ user=Model.Author, title = Model.Title}) %>">
<%=Model.Title%>
</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>
</h1>
@ -34,7 +34,7 @@
<img class="avatar" src="<%= Url.RouteUrl("Default", new { action="Avatar", controller="Account", user = c.From } ) %>" alt="<%=c.From%>"/>
<%= Html.Markdown(c.CommentText) %>
<% 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><% } %>

View file

@ -22,15 +22,18 @@
<% foreach (var g in Model.GroupByTitle()) { %>
<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">
<a href="<%= Url.RouteUrl("Titles", new { title = g.Key}) %>" >
<% if (p.Photo!=null) { %>
<img src="<%=p.Photo%>" alt="photo" class="photo"><% } %>
<%= Html.Markdown(p.Intro,"/bfiles/"+p.Id+"/") %>
<%= Html.Partial("PostActions",p)%>
</div> <% } %>
<img src="<%=p.Photo%>" alt="<%=g.Key%>" >
<% } else { %>
<%} %><%=Html.Encode(g.Key)%></a>
<div>
<%= Html.Markdown(p.Intro,"/bfiles/"+p.Id+"/") %>
<%= Html.Partial("PostActions",p)%></div>
</div> <% break; } %>
</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>

View file

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

View file

@ -4,9 +4,9 @@
</h1>
<ul>
<% 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>
<%= Html.ActionLink("Ajouter des fichiers","Create") %>
<%= Html.TranslatedActionLink("Ajouter des fichiers","Create") %>
</asp:Content>

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -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>

View file

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

View file

@ -1,5 +1,22 @@
<%@ Page Title="Credits" Language="C#" MasterPageFile="~/Models/App.master" Inherits="System.Web.Mvc.ViewPage" %>
<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>

View file

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

39
web/Views/Home/Test.aspx Normal file
View file

@ -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>

View file

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

View file

@ -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.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="System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</assemblies>
</compilation>
<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="MarkdownHelper" url="http://www.nuget.org/packages/MarkdownHelper" />
<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>
</thanks>
<circleProviders defaultProvider="NpgsqlCircleProvider">

View file

@ -4,7 +4,8 @@
<Target Name="Deploy" Condition="'$(DeployDir)' != '' And !$(SkipCopyUnchangedFiles)" DependsOnTargets="Build">
<Copy SourceFiles="@(FileWrites)" 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>
</Project>

View file

@ -137,6 +137,7 @@
<Reference Include="System.Data.Linq" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.ServiceModel.Web" />
<Reference Include="Microsoft.CSharp" />
</ItemGroup>
<ItemGroup>
<Folder Include="Admin\" />
@ -276,7 +277,6 @@
<Content Include="Views\Admin\Backups.aspx" />
<Content Include="Views\Admin\Restore.aspx" />
<Content Include="Views\Admin\Restored.aspx" />
<Content Include="Views\FrontOffice\Estimates.aspx" />
<Content Include="Catalog.xml" />
<Content Include="RegistrationMail.txt" />
<Content Include="Views\FrontOffice\Writting.ascx" />
@ -302,7 +302,6 @@
<Content Include="Views\Account\Profile.aspx" />
<Content Include="robots.txt" />
<Content Include="Scripts\form-new-user.js" />
<Content Include="Views\FrontOffice\Estimate.aspx" />
<Content Include="Views\FrontOffice\EventPub.aspx" />
<Content Include="Views\Account\Circles.aspx" />
<Content Include="Views\Account\Register.ascx" />
@ -754,7 +753,19 @@
<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.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>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
@ -795,6 +806,7 @@
<None Include="Web.TotemPre.config" />
<None Include="Web.TotemProd.config" />
<None Include="Scripts\jquery.mobile-1.4.5.min.map" />
<None Include="App_Themes\images\GitHub.ico" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\NpgsqlMRPProviders\NpgsqlMRPProviders.csproj">