Les activités

* BackOfficeController.cs: Impléménte un accès à l'API back office
  pour l'envoi d'une notification aux mobiles des cercles séléctionné
  de l'utilisateur

* NotifyEvent.aspx: Implemente un formulaire d'envoi d'une
  notification mobile

* NotifyEventResponse.aspx: initie une page de resultat à la
  notification mobile

* NpgsqlContentProvider.cs: reccupère la photo activité en base de
  données

* BlogsController.cs: En attendant mieux, les billets de blog sont
  noté par leur auteur, ou un admin.

* CalendarController.cs: Les fontions de notification GCM et de
  declaration d'enregistrement GCM
partent dans le controlleur back office.

* activity.sql: ajoute la photo activité dans la definition du modèle
  de données Npgsql

* style.css: La fonte de caractère "Open Sans" (Google fonts) pour le
  thème "clear"

* style.css: La fonte de caractère "Open Sans" (Google fonts) pour le
  thème "dark" aussi

* style.css: pas de fonte de caractère dans la feuille de style
  basique.

* BackOfficeController.cs: Impléménte un accès web back office pour
  l'envoi d'une notification aux mobiles des cercles séléctionné de
  l'utilisateur

* BlogsController.cs: Fixe la page de garde du blogspot en cas
  d'absence
de billet à publier publiquement.

* FrontOfficeController.cs: la fontion booking est maintenant censée
  conerner uniquement une activité,
dont le code APE est donné en dernière partie de la route de l'Url, ou
  en argument `id`.

* HomeController.cs: La page d'accueil présente maintenant les
  activités mises en oeuvre par au moins un utilisateur enregistré,
  validé et non vérouillé.
Le titre de l'activité est un lien vers la methode de reservation
  simple.

* GoogleHelpers.cs: recoit l'implementation de la methode de
  notification mobile

* SimpleJsonPostMethod.cs: Fixe l'envoi en UTF-8

* App.master: fonte de caractère pour le lien vers "Vos billets"

* parallax.js: fixe la différence de traitement entre l'horizontale et
  la verticale

* Profile.aspx: ajoute le sommaire de la validation

* Index.aspx: initie un index pour le back office

* Activities.aspx: nettoye la console de log javascript

* Booking.aspx: ajoute le champ caché au formulaire de resa

* Index.aspx: affiche les services fournis sur le site, par des
  utilisateur enregistrés validés non bloqué.

* Web.config: rends l'id Google d'enregistrement GCM accessible au
  utilisateurs anonymes,
qui voudraient commander ou interagir avec l'application, sans avoir à
  créer de compte sur le site.

* Web.csproj: ajoute le contrôleur du back office, et le formulaire de
  notification mobile

* EventPub.cs:
* BaseEvent.cs: internationalise l'évennement (la base d'une
  notification)

* YaEvent.cs: les champs fournisseur d'une notification ne sont pas
  requis. On peut en avoir de la part du site lui même, qui ne soient
  pas à l'origine d'un evennement tiers du workflow. Dans tous les
  autres cas, ils devraient être renseignés ... à suivre.

* Circle.cs:
* CircleBase.cs: ajoute une methode de construition des destinataires
  à partir d'un tableau d'identifiants de cercles.

* Activity.cs: implémente la photo activité dans le modèle

* SimpleBookingQuery.cs: refabriqué

* MessageWithPayLoad.cs: accuse aussi le champ `to` en cas d'absence
  de destinataire.

* LocalizedText.resx:
* LocalizedText.fr.resx:
* LocalizedText.Designer.cs:
* LocalizedText.fr.Designer.cs: internationalisation
This commit is contained in:
Paul Schneider 2015-11-26 11:52:06 +01:00
commit 948fc64ce1
40 changed files with 504 additions and 129 deletions

View file

@ -34,26 +34,24 @@ namespace Yavsc.Model.Calendar
/// <summary>
/// The title.
/// </summary>
[Required(ErrorMessage="Please, choose a .")]
[Required(ErrorMessageResourceName="ChooseATitle",ErrorMessageResourceType=typeof(LocalizedText))]
[Display(ResourceType=typeof(LocalizedText),Name="Title")]
public string Title { get; set; }
/// <summary>
/// The description.
/// </summary>
[Required(ErrorMessage="Please, choose a Description.")]
[Required(ErrorMessageResourceName="ChooseADescription",ErrorMessageResourceType=typeof(LocalizedText))]
[Display(ResourceType=typeof(LocalizedText),Name="Description")]
public string Description { get; set; }
/// <summary>
/// The location.
/// </summary>
[Required(ErrorMessage="Please, choose a Location.")]
[Display(ResourceType=typeof(LocalizedText),Name="Location")]
public Position Location { get; set; }
/// <summary>
/// The start date.
/// </summary>
[Required(ErrorMessage="Please, choose a Start Date.")]
[Display(ResourceType=typeof(LocalizedText),Name="StartDate")]
public DateTime StartDate { get; set; }
@ -61,7 +59,6 @@ namespace Yavsc.Model.Calendar
/// Gets or sets the end date.
/// </summary>
/// <value>The end date.</value>
[Required(ErrorMessage="Please, choose an End Date.")]
[Display(ResourceType=typeof(LocalizedText),Name="EndDate")]
public DateTime EndDate { get; set; }

View file

@ -36,8 +36,10 @@ namespace Yavsc.Model.Calendar
/// Gets or sets the circles.
/// </summary>
/// <value>The circles.</value>
[Display(ResourceType=typeof(LocalizedText),Name="Circles")]
public Circle[] Circles { get; set; }
[Required(ErrorMessageResourceName="DoSpecifyCircles",ErrorMessageResourceType=typeof(LocalizedText)),
Display(ResourceType=typeof(LocalizedText),Name="Circles")]
public long [] CircleIds { get; set; }
}
}

View file

@ -34,13 +34,11 @@ namespace Yavsc.Model.Calendar
/// <summary>
/// The name of the NF provider.
/// </summary>
[Required(ErrorMessage="Please, choose a Provider Name.")]
[Display(ResourceType=typeof(LocalizedText),Name="ProviderName")]
public string ProviderName { get; set; }
/// <summary>
/// The NF provider identifier.
/// </summary>
[Required(ErrorMessage="Please, choose a Provider Identifier.")]
[Display(ResourceType=typeof(LocalizedText),Name="ProviderId")]
public string ProviderId { get; set; }
/// <summary>

View file

@ -1,3 +1,31 @@
2015-11-26 Paul Schneider <paul@pschneider.fr>
* EventPub.cs:
* BaseEvent.cs: internationalise l'évennement (la base d'une
notification)
* YaEvent.cs: les champs fournisseur d'une notification ne
sont pas requis. On peut en avoir de la part du site lui même,
qui ne soient pas à l'origine d'un evennement tiers du
workflow. Dans tous les autres cas, ils devraient être
renseignés ... à suivre.
* Circle.cs:
* CircleBase.cs: ajoute une methode de construition des
destinataires à partir d'un tableau d'identifiants de cercles.
* Activity.cs: implémente la photo activité dans le modèle
* SimpleBookingQuery.cs: refabriqué
* MessageWithPayLoad.cs: accuse aussi le champ `to` en cas
d'absence de destinataire.
* LocalizedText.resx:
* LocalizedText.fr.resx:
* LocalizedText.Designer.cs:
* LocalizedText.fr.Designer.cs: internationalisation
2015-11-25 Paul Schneider <paul@pschneider.fr>
* BlogManager.cs: refactorisation

View file

@ -52,6 +52,20 @@ namespace Yavsc.Model.Circles
}
return content.ToArray ();
}
/// <summary>
/// Union the specified thoseIds.
/// </summary>
/// <param name="thoseIds">Those identifiers.</param>
public static string [] Union (long [] thoseIds)
{
List<string> content = new List<string>();
foreach (long cid in thoseIds)
foreach (string user_name in
CircleManager.DefaultProvider.GetMembers(cid).Members)
if (!content.Contains (user_name))
content.Add (user_name);
return content.ToArray ();
}
}
}

View file

@ -51,7 +51,18 @@ namespace Yavsc.Model.Circles
/// </summary>
/// <value>The title.</value>
public string Title { get; set; }
/// <summary>
/// Determines whether the specified <see cref="System.Object"/> is equal to the current <see cref="Yavsc.Model.Circles.CircleBase"/>.
/// </summary>
/// <param name="obj">The <see cref="System.Object"/> to compare with the current <see cref="Yavsc.Model.Circles.CircleBase"/>.</param>
/// <returns><c>true</c> if the specified <see cref="System.Object"/> is equal to the current
/// <see cref="Yavsc.Model.Circles.CircleBase"/>; otherwise, <c>false</c>.</returns>
public override bool Equals (object obj)
{
if (base.Equals (obj))
return true;
return Id == ((CircleBase)obj).Id;
}
}
}

View file

@ -66,6 +66,9 @@ namespace Yavsc.Model.FrontOffice
get;
set;
}
public string Photo { get; set; }
/// <summary>
/// The activity object has a static value during the
/// most of the application life,

View file

@ -38,8 +38,17 @@ namespace Yavsc.Model.FrontOffice
[Display(ResourceType=typeof(LocalizedText),Name="PreferedDate")]
public DateTime PreferedDate { get; set; }
public string Activity { get; set; }
/// <summary>
/// Gets or sets the MAE code.
/// </summary>
/// <value>The MAE code.</value>
public string MAECode { get; set; }
/// <summary>
/// Gets or sets the needs.
/// </summary>
/// <value>The needs.</value>
[Display(ResourceType=typeof(LocalizedText),Name="Needs")]
public SkillEntity[] Needs { get; set; }
}

View file

@ -80,6 +80,7 @@ namespace Yavsc.Model.Google
if (to==null && registration_ids == null) {
modelState.AddModelError ("to", "One of \"to\" or \"registration_ids\" parameters must be specified");
modelState.AddModelError ("registration_ids", "*");
modelState.AddModelError ("to", "*");
}
if (notification == null && data == null) {
modelState.AddModelError ("notification", "At least one of \"notification\" or \"data\" parameters must be specified");

View file

@ -76,18 +76,36 @@ namespace Yavsc.Model {
}
}
public static string Message_sent {
get {
return ResourceManager.GetString("Message_sent", resourceCulture);
}
}
public static string DuplicateEmail {
get {
return ResourceManager.GetString("DuplicateEmail", resourceCulture);
}
}
public static string Photo {
get {
return ResourceManager.GetString("Photo", resourceCulture);
}
}
public static string Preview {
get {
return ResourceManager.GetString("Preview", resourceCulture);
}
}
public static string Remove {
get {
return ResourceManager.GetString("Remove", resourceCulture);
}
}
public static string DisplayName {
get {
return ResourceManager.GetString("DisplayName", resourceCulture);
@ -100,6 +118,12 @@ namespace Yavsc.Model {
}
}
public static string DoSpecifyCircles {
get {
return ResourceManager.GetString("DoSpecifyCircles", resourceCulture);
}
}
public static string My_Estimates {
get {
return ResourceManager.GetString("My_Estimates", resourceCulture);
@ -256,9 +280,9 @@ namespace Yavsc.Model {
}
}
public static string Remove {
public static string ChooseATitle {
get {
return ResourceManager.GetString("Remove", resourceCulture);
return ResourceManager.GetString("ChooseATitle", resourceCulture);
}
}
@ -382,9 +406,9 @@ namespace Yavsc.Model {
}
}
public static string Message_sent {
public static string ChooseADescription {
get {
return ResourceManager.GetString("Message_sent", resourceCulture);
return ResourceManager.GetString("ChooseADescription", resourceCulture);
}
}
@ -454,6 +478,12 @@ namespace Yavsc.Model {
}
}
public static string Needs {
get {
return ResourceManager.GetString("Needs", resourceCulture);
}
}
public static string Role {
get {
return ResourceManager.GetString("Role", resourceCulture);

View file

@ -70,9 +70,21 @@ namespace Yavsc.Model {
}
}
public static string Circles {
public static string access_denied {
get {
return ResourceManager.GetString("Circles", resourceCulture);
return ResourceManager.GetString("access_denied", resourceCulture);
}
}
public static string Message_sent {
get {
return ResourceManager.GetString("Message_sent", resourceCulture);
}
}
public static string Photo {
get {
return ResourceManager.GetString("Photo", resourceCulture);
}
}
@ -82,15 +94,27 @@ namespace Yavsc.Model {
}
}
public static string Remove {
get {
return ResourceManager.GetString("Remove", resourceCulture);
}
}
public static string DisplayName {
get {
return ResourceManager.GetString("DisplayName", resourceCulture);
}
}
public static string none {
public static string Circles {
get {
return ResourceManager.GetString("none", resourceCulture);
return ResourceManager.GetString("Circles", resourceCulture);
}
}
public static string DoSpecifyCircles {
get {
return ResourceManager.GetString("DoSpecifyCircles", resourceCulture);
}
}
@ -178,12 +202,6 @@ namespace Yavsc.Model {
}
}
public static string access_denied {
get {
return ResourceManager.GetString("access_denied", resourceCulture);
}
}
public static string Ciffer {
get {
return ResourceManager.GetString("Ciffer", resourceCulture);
@ -208,6 +226,12 @@ namespace Yavsc.Model {
}
}
public static string none {
get {
return ResourceManager.GetString("none", resourceCulture);
}
}
public static string entries {
get {
return ResourceManager.GetString("entries", resourceCulture);
@ -250,9 +274,9 @@ namespace Yavsc.Model {
}
}
public static string Remove {
public static string ChooseATitle {
get {
return ResourceManager.GetString("Remove", resourceCulture);
return ResourceManager.GetString("ChooseATitle", resourceCulture);
}
}
@ -304,6 +328,12 @@ namespace Yavsc.Model {
}
}
public static string PhotoUpdated {
get {
return ResourceManager.GetString("PhotoUpdated", resourceCulture);
}
}
public static string PreferedDate {
get {
return ResourceManager.GetString("PreferedDate", resourceCulture);
@ -346,9 +376,9 @@ namespace Yavsc.Model {
}
}
public static string AnIMessageHasbeenSent {
public static string DoTag {
get {
return ResourceManager.GetString("AnIMessageHasbeenSent", resourceCulture);
return ResourceManager.GetString("DoTag", resourceCulture);
}
}
@ -364,9 +394,9 @@ namespace Yavsc.Model {
}
}
public static string Message_sent {
public static string ChooseADescription {
get {
return ResourceManager.GetString("Message_sent", resourceCulture);
return ResourceManager.GetString("ChooseADescription", resourceCulture);
}
}
@ -436,6 +466,12 @@ namespace Yavsc.Model {
}
}
public static string Needs {
get {
return ResourceManager.GetString("Needs", resourceCulture);
}
}
public static string Role {
get {
return ResourceManager.GetString("Role", resourceCulture);
@ -502,9 +538,9 @@ namespace Yavsc.Model {
}
}
public static string DoTag {
public static string Hide_source {
get {
return ResourceManager.GetString("DoTag", resourceCulture);
return ResourceManager.GetString("Hide_source", resourceCulture);
}
}
@ -568,12 +604,6 @@ namespace Yavsc.Model {
}
}
public static string Hide_source {
get {
return ResourceManager.GetString("Hide_source", resourceCulture);
}
}
public static string UsersInRole {
get {
return ResourceManager.GetString("UsersInRole", resourceCulture);
@ -586,6 +616,12 @@ namespace Yavsc.Model {
}
}
public static string AnIMessageHasbeenSent {
get {
return ResourceManager.GetString("AnIMessageHasbeenSent", resourceCulture);
}
}
public static string Profile_edition {
get {
return ResourceManager.GetString("Profile_edition", resourceCulture);

View file

@ -23,12 +23,15 @@
<data name="BillUpdated"><value>Billet mis à jour</value></data>
<data name="Consultant"><value>Consultant</value></data>
<data name="Count"><value>Nombre</value></data>
<data name="ChooseADescription"><value>S'il vous plait, choisissez une description.</value></data>
<data name="ChooseATitle"><value>S'il vous plait, choisissez un titre.</value></data>
<data name="Ciffer"><value>Chiffre</value></data>
<data name="Circles"><value>Cercles</value></data>
<data name="Comment"><value>Commentaire</value></data>
<data name="DB"><value>Base de données</value></data>
<data name="DoComment"><value>Commenter</value></data>
<data name="DoNotPublishMyActivity"><value>Ne pas publier mon activité</value></data>
<data name="DoSpecifyCircles"><value>S'il vous plait, spécifiez ceux de vos cercles à qui est destiné ce contenu</value></data>
<data name="Create"><value>Créer</value></data>
<data name="Date_search"><value>Demande de rendez-vous</value></data>
<data name="DocTemplateException"><value>Une erreur est survenue à la génération de votre document</value></data>
@ -62,6 +65,7 @@
<data name="MinDate"><value>Date minimale du rendez-vous</value></data>
<data name="Modify"><value>Modifier</value></data>
<data name="My_Estimates"><value>Mes estimations</value></data>
<data name="Needs"><value>Besoin</value></data>
<data name="New_Tag"><value>Nouveau Tag</value></data>
<data name="no_content"><value>pas de contenu</value></data>
<data name="none"><value>aucun(e)</value></data>
@ -72,6 +76,8 @@
<data name="Online"><value>En ligne</value></data>
<data name="Pdf_version"><value>Version Pdf</value></data>
<data name="Person"><value>Personne</value></data>
<data name="Photo"><value>Photo</value></data>
<data name="PhotoUpdated"><value>Photo mise à jour</value></data>
<data name="PreferedDate"><value>Date souhaitée</value></data>
<data name="Preview"><value>Prévisualiser</value><comment>Prévisualiser le document</comment></data>
<data name="Profile_edition"><value>Édition du profile</value></data>

View file

@ -21,9 +21,10 @@
<data name="Bill_removal"><value>Bill removal</value></data>
<data name="BillCreated"><value>Bill created</value></data>
<data name="BillUpdated"><value>Bill updated</value></data>
<data name="PhotoUpdated"><value>Photo updated</value></data>
<data name="Create"><value>Create</value></data>
<data name="Count"><value>Count</value></data>
<data name="ChooseADescription"><value>Please, choose a description</value></data>
<data name="ChooseATitle"><value>Please, choose a title</value></data>
<data name="Ciffer"><value>Ciffer</value></data>
<data name="Circles"><value>Circles</value></data>
<data name="Consultant"><value>Consultant</value></data>
@ -35,6 +36,7 @@
<data name="DisplayName"><value>Display Name</value></data>
<data name="DocTemplateException"><value>Exception occured when rendering your document</value></data>
<data name="DoNotPublishMyActivity"><value>Do Not Publish My Activity</value></data>
<data name="DoSpecifyCircles"><value>Please, specify circles for audiance</value></data>
<data name="DoTag"><value>Tag</value></data>
<data name="DuplicateEmail"><value>This email adress is already used ({0}).</value></data>
<data name="DuplicateUserName"><value>This user name is already used ({0}).</value></data>
@ -65,6 +67,7 @@
<data name="MinDate"><value>Minimal date for the rendez-vous</value></data>
<data name="Modify"><value>Modify</value></data>
<data name="My_Estimates"><value>My estimates</value></data>
<data name="Needs"><value>Needs</value></data>
<data name="New_Tag"><value>New Tag</value></data>
<data name="no_content"><value>no content</value></data>
<data name="none"><value>none</value></data>
@ -75,6 +78,8 @@
<data name="Offline"><value>Offline</value></data>
<data name="Pdf_version"><value>Pdf version</value></data>
<data name="Person"><value>Person</value></data>
<data name="Photo"><value>Photo</value></data>
<data name="PhotoUpdated"><value>Photo updated</value></data>
<data name="PreferedDate"><value>Prefered date</value></data>
<data name="Preview"><value>Preview</value><comment>comment on preview</comment></data>
<data name="Private_circle"><value>Private circle</value></data>