Files
yavsc/web/Scripts/yavsc.js
Paul Schneider a14e63d26f recupération de mot de passe + prise de commande
* ResetPassword.txt: Un message pour le mot de passe oublié

* style.css: fixe un 404

* UpdatePassword.aspx: Implémente le formulaire de mise à jour du mot
  de passe,
accessible depuis l'e-mail.

* Contact.aspx: implémente la page de contact préstataire

* UpdatePassword.cs: modèle de la modification de mot de passe au
jeton de securité (qui est encore un fake en l'état)

* CommandRegistration.cs: un enregistrement de commande

* NominativeCommandRegistration.cs: un enregistrement de commande
  nominative

* .gitignore: ignore ma config LuaDebug

* NpgsqlMembershipProvider.cs: ne pas crasher à la lecture en base de
  la question de
recupération du mot de passe quand elle est nulle.

* BasketController.cs: renvoie l'objet décrivant la prise de commande

* Global.asax.cs: ignorer les routes vers App_Data et App_Code

* instdbws.sql: passage du type json à jsonb pour les paramètres de la
  commande

* RegistrationMail.txt: un piti message à l'enregistrement

* AccountController.cs: Envoi du message du mot de passe oublié,
methode de changemnet du mot de passe.

* AdminController.cs: xmldoc + refabrication helper Notify

* HomeController.cs:
* BlogsController.cs:
* GoogleController.cs: refabrication helper Notify

* FrontOfficeController.cs: Refabrication: Utilisation du nouvel
  enregistrement de commande.
+ refabrication helper Notify

* YavscHelpers.cs: implémente la methode d'envoi du message de mot de
  passe oublié
+ refabrication helper Notify

* App.master: Corrige la notification Html

* AppAdmin.master: Le lien vers la page de contact était associé
à tort à la classe css "thanks"

* yavsc.js: message plus parlant en cas de requête Ajax mal formée.

* Login.aspx: Implémente le lien vers le formulaire de recupération du
  mot de passe

* UserPost.aspx: .

* Booking.aspx: format du code

* Performer.ascx: l'e-mail préstataire ne sera jamais fourni par
  l'application,
aussi, on parlera de "prendre contact", d'échanger ... mais pas de
  donner l'adresse e-mail.
L'information "son email" n'est donc pas disponible meme à
  l'utilisateur autorisé.
La prise de contact, ou autre fux de comunication le sont.

* Performers.aspx: affiche la notification à l'envoi de la demande de
  devis

* Product.aspx:
* Service.aspx: les periodes du catalogue et du calendrier sont
  fondue.

* Contact.aspx: traduction en français

* Web.config:
  * la procédure de recupération du mot de passe est
    activée
  * l'e-message envoyé est construit à partir d'un modèle, un fichier
    texte trouvé dans /App_Data, et indiqué à l'application
    par le paramêtre applicatif "LostPasswordMessage"

* Yavsc.csproj: reference les nouveaux fichiers

* Product.cs: utilise la période du calendrier

* Commande.cs: renvoie un objet à la prise de commande, indiquant
  l'identifiant de commande, et les messages envoyés
  en cas de commande nominative.

* GoogleHelpers.cs: icone à la notification mobile

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

* UserNameBase.cs: fixe la dé-sérialisation

* WorkFlowManager.cs: refabrication de la prise de commande

* YavscModel.csproj: nouveaux objets du modèle

* OtherWebException.aspx: page obsolete

* Period.cs: fondre la période: celle du catalogue disparait, au
  profit de celle du calendrier.
2015-12-30 14:43:39 +01:00

126 lines
3.3 KiB
JavaScript

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;}
self.logObj = function(obj) {
console.log('obj:'+obj);
console.log(self.dumpprops(obj));
};
self.showHide = function () {
var id = $(this).attr('did');
var target = $('#'+id);
if (target.hasClass('hidden')) {
target.removeClass('hidden');
if (typeof this.oldhtml == "undefined")
this.oldhtml = $(this).html();
$(this).html('['+this.oldhtml+']');
}
else {
target.addClass('hidden');
$(this).html(this.oldhtml);
}
};
self.dimiss = function () {
$(this).parent().remove();
};
self.ajax = function (method,data,callback,badInputCallback,errorCallBack) {
if (!badInputCallback) badInputCallback=Yavsc.onAjaxBadInput;
if (!errorCallBack) errorCallBack=Yavsc.onAjaxError;
$.ajax({
url: self.apiBaseUrl+'/'+method,
type: "POST",
data: data,
success: function (response) {
if (callback) callback(response);
},
statusCode: {
400: Yavsc.onAjaxBadInput
},
error: Yavsc.onAjaxError});
};
self.onScroll = function() {
var $notifications = $('#notifications');
if ($notifications.has('*').length>0) {
if ($(window).scrollTop()>0) {
$notifications.addClass("dispmodal");
}
else {
$notifications.removeClass("dispmodal");
}}
};
self.notice = function (msg, callback, msgok) {
if (!msgok) msgok='Ok';
var note = $('<div class="notification">'+msg+'<br></div>');
var btn = $('<a class="actionlink"><i class="fa fa-check">'+msgok+'</i></a>');
if (callback) btn.click(callback);
btn.click(self.dimiss).appendTo(note);
note.appendTo("#notifications");
self.onScroll();
};
self.onAjaxBadInput = function (data)
{
if (!data) { Yavsc.notice('Bad input, no data'); return; }
if (!data.responseJSON) { Yavsc.notice('Bad input, no json data response'); return; }
if (!Array.isArray(data.responseJSON)) { Yavsc.notice('Bad Input: '+data.responseJSON); return; }
$.each(data.responseJSON, function (key, value) {
var errspanid = "Err_" + value.key;
var errspan = document.getElementById(errspanid);
if (errspan==null)
Yavsc.notice('ENOTANODE: '+errspanid);
else
errspan.innerHTML=value.errors.join("<br/>");
});
};
self.onAjaxError = function (xhr, ajaxOptions, thrownError) {
if (xhr.status!=400)
Yavsc.notice(xhr.status+" : "+xhr.responseText);
};
$(document).ready(function(){
$('.maskable').each( function() {
var $mobj = $(this);
var $btnshow = $('#'+$mobj.data('btn-show'));
var $btnhide = $('#'+$mobj.data('btn-hide'));
var onClickHide = function(){
$mobj.addClass('hidden');
$btnshow.removeClass('hidden');
$btnhide.addClass('hidden');
};
$btnhide.click(onClickHide);
onClickHide();
$btnshow.click(function(){
$mobj.removeClass('hidden');
$btnshow.addClass('hidden');
$btnhide.removeClass('hidden');
});
});
});
$(document).ready(function(){
$body = $("body");
$(document).on({
ajaxStart: function() { $body.addClass("loading"); },
ajaxStop: function() { $body.removeClass("loading"); }
});
$(window).scroll(self.onScroll);
});
return self;
})();